RustScan——Rust開發(fā)的高速端口掃描器
安全掃描,端口掃描Nmap是大哥,掃得穩(wěn)定又全面,而且歷史也最悠久,就是速度慢了點。一些小弟也不錯,比如Zmap只異步探測方式掃描,可以快速對大量主機的特定進行掃描(大IP端或者整個網絡)Masscan即有速度也全面,也是一個綜合性的選手。盡管如此,掃描器一直就是開發(fā)熱點領域,不斷有新的選手開發(fā)出來,向老大哥致敬(挑戰(zhàn))。本文就介紹一個新的掃描器RustScan,他速度超群,可以多端口掃描,掃描結果也穩(wěn)定,最主要是用Rust語言開的。
概述
RustScan一款向老大哥致敬,但是不挑戰(zhàn)老大哥的現代端口掃描器。他主要用于作為Nmap的增強,在老大哥上臺之前,充當先鋒打頭陣,先把開發(fā)的端口掃描出來,然后讓老大哥在進行進一步細致掃描,獲取全面信息。
工作原理
RustScan使用自帶的端口發(fā)現技術進行初步掃描:對目標創(chuàng)建套接字并等待其響應。
一旦完成第一個掃描階段,它將使用Nmap作為帶有特定標簽再次掃描。默認會使用操作系統(tǒng)探測標簽。
上面是默認策略,也可以在每次掃描時根據需要進行調整。第二階段的Nmap可以設置不啟用。
安裝部署
由于Rust帶來天然跨平臺優(yōu)勢,RustScan支持跨平臺,可以在大多數系統(tǒng)下運行。
比如在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開發(fā)的,快速端口掃描器RustScan,該工具具有性能上的優(yōu)勢,可以在8秒中掃完一臺主機的所有65535個端口。RustScan目的不是為挑戰(zhàn)老大哥nmap,只是作為老大的先鋒官,另外截止目前RustScan還不支持UDP協(xié)議,當然作為一個新生語言開發(fā)的新生工具其未來可期,我們可以嘗試他的所有可能性,可以coding實現其所有的可能性(你所期待的樣子)。