http://nmap.org/docs.html
主機發現(Host Discovery)
用于發現目標主機是否處于活動狀態(Active)。
Nmap提供了多種檢測機制,可以更有效地辨識主機。例如可用來列舉目標網絡中哪些主機已經開啟,類似于Ping命令的功能。
端口掃描(Port Scanning)
用于掃描主機上的端口狀態。
Nmap可以將端口識別為開放(Open)、關閉(Closed)、過濾(Filtered)、未過濾(Unfiltered)、開放|過濾(Open|Filtered)、關閉|過濾(Closed|Filtered)。默認情況下,Nmap會掃描1000個常用的端口,可以覆蓋大多數基本應用情況。
版本偵測(Version Detection)
用于識別端口上運行的應用程序與程序版本。
Nmap目前可以識別數千種中應用的簽名(Signatures),檢測數百種應用協議。而對與不識別的應用,Nmap默認會將應用的指紋(Fingerprint)打印出來,如果用于確知該應用程序,那么用戶可以將信息提交到社區,為社區做貢獻。
操作系統偵測(OS detection)
用于識別目標機的操作系統類型、版本編號及設備類型。
Nmap目前提供了上千種操作系統或設備的指紋數據庫,可以識別通用PC系統、路由器、交換機等設備類型。
防火墻/IDS規避(Firewall/IDS evasion)
Nmap提供多種機制來規避防火墻、IDS的的屏蔽和檢查,便于秘密地探查目標機的狀況。
基本的規避方式包括:分片(Fragment)/IP誘騙(IP decoys)/IP偽裝(IP spoofing)/MAC地址偽裝(MAC spoofing)等等。
NSE腳本引擎(Nmap Scripting Engine)
NSE是Nmap最強大最靈活的特性之一,可以用于增強主機發現、端口掃描、版本偵測、操作系統偵測等功能,還可以用來擴展高級的功能如web掃描、漏洞發現、漏洞利用等等。Nmap使用Lua語言來作為NSE腳本語言,目前的Nmap腳本庫已經支持350多個腳本。
-sS TCP SYN 掃描 (又稱半開放,或隱身掃描)
-P0/-Pn 絕大多數主機都拒絕ICMP,不加這個參數無法掃描
-sV 打開系統版本檢測
-O 嘗試識別遠程操作系統
-sT (TCP connect()掃描)當SYN掃描不能用時
-p 指定端口(Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9)
-oG (Grep輸出)
-sP 該選項告訴nmap僅僅進行ping掃描(主機發現),然后打印出對掃描做出響應的那些主機。
-T 設置時間模版 如:-T4 針對TCP端口禁止動態掃描延遲超過10ms,-T5對應值為5ms。
-D 使用誘餌隱蔽掃描 為使誘餌掃描起作用,需要使遠程主機認為是誘餌在掃描目標網絡。
-sL 列表掃描是主機發現的退化形式,它僅僅列出指定網絡上的每臺主機,不發送任何報文到目標主機。
-R (為所有目標解析域名)告訴nmap永遠對目標ip地址作反向域名解析。一般只有當發現機器正在允許時才進行這項操作。
-F (快速(有限的端口)掃描)
-vv 讓你明白掃描的詳細過程,如果發現哪些過程是你不需要的,可以馬上調整
-n 在大范圍掃描地址時侯沒有用這個參數導致nmap異常慢,半天卡到那我卻不知道為什么,結果加-vv參數發現,原來是把每個ip都dns解析一遍,加-n就可以不解析dns了
--script=showSMTPVersion.nse nmap加入了腳本掃描引擎,可以掃描網站目錄還有遠程溢出和弱口令等
-iL c:\xx.txt 讀取c:\xx.txt的主機列表文件的ip
-oN c:\Vulnerable.txt 將探測結果保存在c:\Vulnerable.txt
-oX 以xml形式輸出
-A 同時打開操作系統指紋和版本檢測
-v 詳細輸出掃描情況.
--mtu
--send-eth
--data-length
--source-port
--randomize-host
-f
1) 獲取遠程主機的系統類型及開放端口
nmap -sS -P0 -sV -O <target>
這里的 < target > 可以是單一 IP, 或主機名,或域名,或子網
2) 列出開放了指定端口的主機列表
nmap -sT -p 80 -oG – 192.168.1.* | grep open
3) 在網絡尋找所有在線主機
nmap -sP 192.168.0.*
或者也可用以下命令:
nmap -sP 192.168.0.0/24
指定 subnet
4) Ping 指定范圍內的 IP 地址
nmap -sP 192.168.1.100-254
5) 在某段子網上查找未占用的 IP
nmap -T4 -sP 192.168.2.0/24 && egrep "00:00:00:00:00:00" /proc/net/arp
6) 在局域網上掃找 Conficker 蠕蟲病毒
nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 192.168.0.1-254
7) 掃描網絡上的惡意接入點 (rogue APs).
nmap -A -p1-85,113,443,8080-8100 -T4 --min-hostgroup 50 --max-rtt-timeout 2000 --initial-rtt-timeout 300 --max-retries 3 --host-timeout 20m --max-scan-delay 1000 -oA wapscan 10.0.0.0/8
8 ) 使用誘餌掃描方法來掃描主機端口
sudo nmap -sS 192.168.0.10 -D 192.168.0.2
9) 為一個子網列出反向 DNS 記錄
nmap -R -sL 209.85.229.99/27 | awk '{if($3=="not")print"("$2") no PTR";else print$3" is "$2}' | grep '('
10) 顯示網絡上共有多少臺 Linux 及 Win 設備?
sudo nmap -F -O 192.168.0.1-255 | grep "Running: " > /tmp/os; echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) device"
首先掃描存活的主機,然后使用cut命令只取ip到一個文件,在掃描該文件中的ip。
nmap -sP 192.168.8.1-254 -oN /root/Desktop/test.log
cat test.log | grep for | cut -d ' ' -f5 > test2.log
nmap -sS -iL test2.log
TCP空閑掃描
msf > use auxiliary/scanner/ip/ipidseq
msf > set RHOST 192.168.7.0/24
msf > set THREADS 80
msf > run
nmap -sS -sI 空閑IP 目標IP
############防火墻/IDS規避(Firewall/IDS evasion)
nmap -sS -v -f --mtu 32 --send-eth --data-length 50 --source-port 99 --randomize-host -T 5 192.168.1.1/24
############NSE腳本引擎(Nmap Scripting Engine)
nmap --script=smb-enum-users 192.168.80.129
nmap --script=smb-brute 192.168.80.129
nmap --script=smb-pwdump --script-args=smbuser=epp,smbpass=password 192.168.80.129
nmap --script=smb-brute --script-args=userdb=usernames.txt,passdb=password.txt 192.168.80.1/24
nmap --script=smb-enum-shares 192.168.80.129
nmap --script=smb-check-vulns 192.168.80.129
smb-pwdump.nse 使用(bt5):
root@bt:~# wget http://swamp.foofus.net/fizzgig/pwdump/pwdump6-1.7.2-exe-only.tar.bz2
root@bt:~# tar -jxvf pwdump6-1.7.2-exe-only.tar.bz2 -C /usr/local/share/nmap/nselib/data
root@bt:/usr/local/share/nmap/scripts# wget https://svn.nmap.org/nmap-exp/dev/nmap/scripts/smb-pwdump.nse
root@bt:~# nmap --script=smb-pwdump.nse --script-args=smbuser=test,smbpass=123456 192.168.1.108 -p 135,445,139
nmap -p445 --script=smb-pwdump --script-args=smbuser=ron,smbpass=iagotest2k3,rtable=/tmp/alpha/*.rt <host>
Perhaps
nmap --proxy ftp://anonymous@ftphost -PK -sK