3.3 掃描路由器操作系統
與通用PC掃描方式類似,使用-O選項掃描路由器的操作系統。-F用于快速掃描最可能開放的100個端口,并根據端口掃描結果進一步做OS的指紋分析。
nmap -O -F -n 192.168.1.1 |
4 掃描互聯網
Nmap內部的設計非常強大靈活,既能掃描單個主機、小型的局域網,也可以掃描成千上萬臺主機從中發掘用戶關注的信息。掃描大量主機,需要對掃描時序等參數進行仔細的優化。
nmap -iR 100000 -sS -PS80 -p 80 -oG nmap.txt |
隨機地產生10萬個IP地址,對其80端口進行掃描。將掃描結果以greppable(可用grep命令提取)格式輸出到nmap.txt文件。
可以使用grep命令從輸出文件提取關心的細節信息。
4.2 統計互聯網主機基本數據
Nmap的創始人Fyodor在2008年的Black Hat大會發表一篇演講,講的是如何使用Nmap來掃描互聯網(Nmap: Scanning the Internet),資料地址:http://nmap.org/presentations/BHDC08/。
Fyodor進行互聯網掃描的初衷是統計出網絡經驗數據并用之優化Nmap的性能。例如,根據統計出每個端口開放的概率,優先掃描常見端口,以節省用戶的時間。
產生隨機IP地址
產生100萬個隨機的IP地址,并將之保存到文件中,方便后續掃描時作為參數輸入。
nmap -iR 1200000 -sL -n | grep "not scanned" | awk '{print $2}' | sort -n | uniq >! tp; head -25000000 tp >! tcp-allports-1M-IPs; rm tp |
上述命令含義:隨機生成1200000個IP地址(-iR 120000),并進行列表掃描(-sL,列舉出IP地址,不進行真正的掃描),不進行dns解析操作(-n),這樣將產生Nmap列表掃描的結果。在此結果中搜出未掃描的行(grep “not scanned”),打印出每一行的第二列內容(awk ‘{print $2}’,也就是IP地址),然后對獲取到的IP地址進行排序(sort -n),然后剔除重復IP地址,將結果保存到臨時文件tp,再取出前1000000個IP地址保存到tcp-allports-1M-IPs文件中,刪除臨時文件。
總之,此處產生了1000000個隨機IP地址存放在tcp-allports-1M-IPs文件中。
優化主機發現
nmap -sP -PE -PP -PS21,22,23,25,80,113,31339-PA80,113,443, 10042 --source-port 53 -T4 -iL tcp-allports-1M-IPs |
上述命令進行主機發現:使用產生的IP地址(-iL tcp-allports-1M-IPs),指定發送包的源端口為53(--source-port 53,該端口是DNS查詢端口,一般的防火墻都允許來自此端口的數據包),時序級別為4(-T4,探測速度比較快),以TCP SYN包方式探測目標機的21,22,23,25,80,113,31339端口,以TCP ACK包方式探測對方80,113,443,10042端口,另外也發送ICMP ECHO/ICMP TIMESTAMP包探測對方主機。只要上述的探測包中得到一個回復,就可以證明目標主機在線。
完整的掃描命令
在準備了必要的IP地址文件,并對主機發現參數優化后,我們就得到最終的掃描命令:
nmap -S [srcip] -d --max-scan-delay 10 -oAlogs/tcp-allports-%T-%D -iL tcp-allports-1M-IPs --max-retries 1--randomize-hosts -p- -PS21,22,23,25,53,80,443 -T4 --min-hostgroup 256 --min-rate175 –max-rate 300 |
上述命令用于掃描互聯網上100萬臺主機全部的TCP端口的開放情況。
使用包含100萬個IP地址的文件(-iL tcp-allports-1M-IPs),源端IP地址設置為srcip(指定一個IP地址,保證該IP地址位于統一局域網中,否則無法收到目標機的回復包),主機發現過程使用TCP SYN包探測目標機的21,22,23,25,53,80,443,掃描過程將隨機打亂主機順序(--randomize-hosts,因為文件中的IP已經排序,這里將之打亂,避免被防火墻檢查出),端口掃描過程檢查全部的TCP端口(-p-,端口1到65535),使用時序級別為4(-T4,速度比較快),將結果以XML/grepable/普通格式輸出到文件中(-oA logs/tcp-allports-%T-%D,其中%T表示掃描時間,%D表示掃描日期)。