安全扫描,端口扫描Nmap是大哥,扫得稳定又全面,而且历史也最悠久,就是速度慢了点。一些小弟也不错,比如Zmap只异步探测方式扫描,可以快速对大量主机的特定进行扫描(大IP端或者整个网络)Masscan即有速度也全面,也是一个综合性的选手。尽管如此,扫描器一直就是开发热点领域,不断有新的选手开发出来,向老大哥致敬(挑战)。本文就介绍一个新的扫描器RustScan,他速度超群,可以多端口扫描,扫描结果也稳定,最主要是用Rust语言开的。
概述
RustScan一款向老大哥致敬,但是不挑战老大哥的现代端口扫描器。他主要用于作为Nmap的增强,在老大哥上台之前,充当先锋打头阵,先把开发的端口扫描出来,然后让老大哥在进行进一步细致扫描,获取全面信息。
工作原理
RustScan使用自带的端口发现技术进行初步扫描:对目标创建套接字并等待其响应。
一旦完成第一个扫描阶段,它将使用Nmap作为带有特定标签再次扫描。默认会使用操作系统探测标签。
上面是默认策略,也可以在每次扫描时根据需要进行调整。第二阶段的Nmap可以设置不启用。
安装部署
由于Rust带来天然跨平台优势,RustScan支持跨平台,可以在大多数系统下运行。
比如在Centos下可以通过dnf在安装:
- Sudo dnf copr enable atim/rustscan -y
- sudo dnf install rustscan
当然最方便的方法是用docker方式安装。
- docker pull rustscan/rustscan:2.0.0
然后就可以使用
- docker run -it --rm --name rustscan rustscan/rustscan:2.0.0 <rustscan arguments here> <ip address to scan>
比如我们随便扫一下:
- docker run -it --rm --name rustscan rustscan/rustscan:2.0.0 -a 127.0.0.1 -t 500 -b 1500 -- -A
为了方便新增加一个别名
- alias rustscan='docker run -it --rm --name rustscan rustscan/rustscan:2.0.0'
然后,就可以用rustscan xxx来扫描了。
使用方法
可以使用 rustscan -help,查看其基本用法:
Rustscan的扫描既简单直白,只需-a添加要扫描的目标(IP段),-p指定要扫描的端口(端)即可。
目标支持逗号分开的多个IP地址,比如127.0.0.1,0.0.0.0。
也可以是ip段,比如192.168.0.0/30
也可以是个ip列表文件,比如:
- cat ip.txt
- 192.168.0.1
- 192.168.0.2
- 192.168.0.0/30
- 127.0.0.1
- rustscan -a ' ip.txt '
-p端口也是逗号分开的地址,也可是-r 后跟范围,比如 -p 1-65535。
查看第二步的扫描,rustscan扫描分两个阶段,第二阶段会启动nmap扫描,默认参数为 -A -VVV ,我们可以自主指定参数:
- rustscan -a 127.0.0.1 -- -A –sC
这相当于nmap的扫描:
- nmap -Pn -vvv -p $PORTS -A -sC 127.0.0.1
总结
本文我们介绍了一个Rust开发的,快速端口扫描器RustScan,该工具具有性能上的优势,可以在8秒中扫完一台主机的所有65535个端口。RustScan目的不是为挑战老大哥nmap,只是作为老大的先锋官,另外截止目前RustScan还不支持UDP协议,当然作为一个新生语言开发的新生工具其未来可期,我们可以尝试他的所有可能性,可以coding实现其所有的可能性(你所期待的样子)。