1.二層掃描(ARP)
優點:速度快
缺點:不可路由
nmap -sn <ip>/24 #不做 port scan
netdiscover -i eth0 -r <ip>/24 #主動掃描
netdiscover -p #被動掃描
2.三層掃描(IP、ICMP)
優點:可路由、速度快
缺點:速度比二層慢、經常被邊界防火牆過濾
tracerout <target>、ping -R <target> #找出到目標之間的所有路由資訊
3.四層掃描(TCP、UDP)
優點:可路由、結果可靠、不易被防火牆過濾、可發現所有 port 都過濾的主機
缺點:基於狀態過濾的防火牆可能過濾掃描、port 掃描速度慢
TCP掃瞄原理:檢查目標是否回 RST
UDP掃瞄原理:檢查目標是否回 ICMP 無法接收
nmap <ip> -PU/A/S/Y/E/P/O<port> -sn #發UDP/TCP ACK/TCP SYN/SCTP/ICMP echo/timestamp/請求目標ip的netmask/IP協議的ping
hping3 --udp <ip> -c 1 #只發一次UDP
hping3 <ip> -c 1 #只發一次TCP(把所有的TCP flag設為0)
4.端口掃描
查看本機開放端口:netstat -pantu | grep tcp/udp
(1)UDP
若目標回應 ICMP port-unreachable 則表示 port 為關閉;若目標不回應 ICMP port-unreachable 則可能產生誤判。準確度高、耗時高。
nmap -sU <ip> -p-
(2)TCP
基於三次握手的變化判斷目標 port 狀態。
- 全連接掃描
建立完整的連接。
nmap -sT -p- <ip>
nc -nv -w 1 -z <ip> 1-65535
- 隱蔽掃描
隱蔽掃描(只發syn,確認是否收到目標的ack):不建立完整連接、應用層日誌不紀錄掃描行為(網路層仍會紀錄)。
攻擊者向目標主機發 SYN,目標主機回傳 SYN/ACK,攻擊者再向目標主機發 RST 斷開連接。
nmap -sS -p- <ip>
hping3 <ip> --scan 0-65535 -S
- 殭屍掃描
殭屍掃描前置條件:殭屍機可偽造來源 IP、殭屍機須為閒置狀態(否則IPID會不斷增加)、IPID須為遞增(均為0或隨機產生則無法利用)
殭屍掃描流程:
port 為開放狀態
(1)攻擊者向殭屍機發 SYN/ACK,殭屍機回傳 RST(包含 IPID=x)
(2)攻擊者向目標主機發 SYN(偽造來源地址為殭屍機),目標主機向殭屍機回 SYN/ACK,殭屍機再回傳目標主機 RST(IPID=x+1)
(3)攻擊者向殭屍機發 SYN/ACK,殭屍機回傳 RST,若 IPID=x+2,則代表目標 port 為開放
port 為關閉狀態
(1)攻擊者向殭屍機發 SYN/ACK,殭屍機回傳 RST(包含 IPID=x)
(2)攻擊者向目標主機發 SYN(偽造來源地址為殭屍機),目標主機向殭屍機回傳 RST
(3)攻擊者向殭屍機發 SYN/ACK,殭屍機回傳 RST,若 IPID=x+1,則代表目標 port 為關閉
找出殭屍機:nmap -p <ip> --script=ipidseq.nse #確認ipidseq為Incremental才可作為殭屍機
殭屍掃描:nmap <殭屍機ip> -sl <ip> -Pn -p-
5.banner 掃描
nc -nv <ip> <port>
nmap -sT <ip> -p- --script=banner.nse #須建立完整連接,故只能用sT
amap -B <ip> 1-65535 | grep on
6.服務辨識
nmap -sV <ip> -p-
amap <ip> 1-65535 -qb
7.OS 辨識
TTL 起始值:
Windows:65 - 128
Linux / Unix:1 - 64、255
nmap -O <ip>
被動掃描:p0f
8.SNMP 掃描
snmpwalk <ip> -v 2c #掃描目標主機的snmp,版本分為1、v2c、3
snmpwalk <ip> -v 2c <oid> #針對oid做詳細掃描
snmpcheck -t <ip> -v 2 #1、2、3
onesixtyone -c /usr/share/doc/onesixtyone/dict.txt <ip> -w 100 #爆破community string for snmpv1、2
hydra -P <dictionary> <ip> snmp #爆破community string for snmpv1、2
nmap -sU -v --script snmp-brute --script-args passdb=passwords.lst <ip> #爆破community string for snmpv1、2
nmap -sU -v --script snmp-brute --script-args userdb=usernames.lst,passdb=passwords.lst <ip> #爆破username、pwd for snmpv3
9.SMB 掃描
SMBv1:Windows 2000 / Windows 2003 / XP
SMBv2:Windows Vista / Windows 2008
SMBv2.1:Windows 7 / Windows 2008 R2
SMBv3:Windows 8 / Windows 2012
nmap <ip> -p --script=smb-os-discovery.nse
nmap -v -p --script=smb-check-vulns --script-args=unsafe=1 <ip> #unsafe=1可能讓目標主機當機,保險起見可使用safe=1
https://github.com/jwilkins/nmap/blob/master/scripts/smb-check-vulns.nse
nbtscan -r <ip>/24 #可跨網段掃描
enum4linux -a <ip> #掃描資訊較其他工具詳細
10.SMTP 掃描
nmap <host> -p <port> --script=smtp-enum-users.nse --script-args=smtp-enum-users.methods={VRFY}
nmap <host> -p <port> --script=smtp-open-relay.nse
11.負載平衡辨識
lbd <host> or <ip
12.WAF 辨識
wafw00f <host>
nmap <host> --script=http-waf-detect.nse
13.nmap 特殊參數
--exclude <ip> 去除指定ip
--excludefile <file> 去除指定檔案的ip
-sV --version-all 顯示最詳細的版本資訊
--script-updatedb 更新腳本db
--script-help-<file.nse>
--min-hostgroup <size> 先將多個IP分組,再並行掃描多個群組。掃C段時建議設256,若掃較少的port,建議使用>=2048
--min-rate <num>
-D <ip1> <ip2> <ip3> <target_ip> 大量假ip的掩護
-S <fakeip> -e eth0 <target_ip> 使用假ip做掩護
-g<fakeport> <target_ip> 使用假port作做掩護
--spoof-mac <fakemac> 使用假mac做掩護
--badsum 發送錯誤的checksum bypass waf
補充資料:Freebuf - Nmap备忘单:从探索到漏洞利用
沒有留言:
張貼留言