sx是按照 UNIX 理念设计的命令行网络扫描程序。这个项目的目标是用干净简单的代码创建最快的网络扫描仪。主要功能:
1、比 nmap快 30 倍
2、ARP 扫描:扫描您的本地网络以检测活动设备
3、ICMP 扫描:使用高级 ICMP 扫描技术来检测活动主机和防火墙规则
4、TCP SYN 扫描:传统的半开扫描以查找打开的 TCP 端口
5、TCP FIN / NULL / Xmas 扫描:绕过某些防火墙规则的扫描技术
6、带有任何 TCP 标志的自定义 TCP 扫描
7、UDP 扫描:扫描 UDP 端口并获取完整的 ICMP 回复以检测开放端口或防
火墙规则
8、应用程序扫描:SOCKS5 扫描,Docker 扫描,Elasticsearch scan
9、使用有限循环乘法组对 IP 地址进行随机迭代
10、JSON输出支持:sx专为方便的自动处理结果而设计
扫描您的本地网络并显示连接设备的 IP 地址、MAC 地址和相关硬件供应商:
sx arp 192.168.0.1/24
样本输出:
192.168.0.1 b0:be:76:40:05:8d TP-LINK TECHNOLOGIES CO.,LTD.
192.168.0.111 80:c5:f2:0b:02:e3 AzureWave Technology Inc.
192.168.0.171 88:53:95:2d:3c:af Apple, Inc.
使用 JSON 输出:
sx arp --json 192.168.0.1/24
样本输出:
{"ip":"192.168.0.1","mac":"b0:be:76:40:05:8d","vendor":"TP-LINK TECHNOLOGIES CO.,LTD."}
{"ip":"192.168.0.111","mac":"80:c5:f2:0b:02:e3","vendor":"AzureWave Technology Inc."}
{"ip":"192.168.0.171","mac":"88:53:95:2d:3c:af","vendor":"Apple, Inc."}
在退出接收延迟回复数据包之前等待 5 秒,默认sx
等待 300 毫秒:
sx arp --exit-delay 5s 192.168.0.1/24
每 10 秒重新扫描一次网络的实时扫描模式:
sx arp 192.168.0.1/24 --live 10s
与在实际扫描之前隐式执行 ARP 请求以将 IP 地址解析为 MAC 地址的 nmap 和其他扫描器不同,它sx
明确使用ARP 缓存概念。ARP 缓存文件是一个简单的文本文件,每行都包含 JSON 字符串(JSONL文件),它具有与上述 ARP 扫描 JSON 输出相同的 JSON 字段。TCP 和 UDP 等高级协议的扫描从标准输入读取 ARP 缓存文件,然后开始实际扫描。
这不仅简化了程序的设计,而且加快了扫描过程,因为不必每次都执行 ARP 扫描。
假设实际的 ARP 缓存在arp.cache
文件中。我们可以手动创建或使用 ARP 扫描,如下所示:
sx arp 192.168.0.1/24 --json | tee arp.cache
一旦我们有了 ARP 缓存文件,我们就可以运行更高级别的协议扫描,例如 TCP SYN 扫描:
cat arp.cache | sx tcp -p 1-65535 192.168.0.171
样本输出:
192.168.0.171 22
192.168.0.171 443
在这种情况下,我们发现端口 22 和 443 是开放的。欢迎关注微信公众号:web安全工具库
使用 JSON 输出扫描:
cat arp.cache | sx tcp --json -p 1-65535 192.168.0.171
样本输出:
{"scan":"tcpsyn","ip":"192.168.0.171","port":22}
{"scan":"tcpsyn","ip":"192.168.0.171","port":443}
扫描多个端口范围:
cat arp.cache | sx tcp -p 1-23,25-443 192.168.0.171
或个别端口:
cat arp.cache | sx tcp -p 22,443 192.168.0.171
或使用该--ports-file
选项指定一个文件,其中包含要扫描的端口或端口范围,每行一个。
从带有 JSON 输出的文件中扫描 ip/port 对:
cat arp.cache | sx tcp --json -f ip_ports_file.jsonl
输入文件的每一行都是一个 json 字符串,其中必须包含ip和port字段。
示例输入文件:
{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}
可以使用-a
or--arp-cache
选项指定 ARP 缓存文件:
sx tcp -a arp.cache -p 22,443 192.168.0.171
或标准输入重定向:
sx tcp -p 22,443 192.168.0.171 < arp.cache
您还可以使用tcp syn
子命令代替tcp
:
cat arp.cache | sx tcp syn -p 22 192.168.0.171
tcp
tcp syn
除非传递了选项,否则subcomand 只是 subcommand 的简写--flags
,见下文。
sx
可以检测实时 SOCKS5 代理。要进行扫描,您必须指定 IP 范围或带有 ip/端口对的 JSONL 文件。
例如,IP 范围扫描:
sx socks -p 1080 10.0.0.1/16
从带有 JSON 输出的文件中扫描 ip/port 对:
sx socks --json -f ip_ports_file.jsonl
输入文件的每一行都是一个 json 字符串,其中必须包含ip和port字段。
示例输入文件:
{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}
您还可以指定要扫描的端口范围:
sx socks -p 1080-4567 -f ips_file.jsonl
在这种情况下,只会从文件中获取 IP 地址,并且不再需要端口字段。
推荐阅读