【PortScan】nmap
## 列出網段內機器的ip
# -Pn 掃描全網段,疼用主機發現
# -sn ping scan 不掃描 port
# -oG console ouput 配合 - 輸出
# 原輸出 Host: 192.168.202.255 () Status: Up => 使用awk 取出ip
# > ip.txt 輸出成文字檔
nmap -Pn -sn -n 192.168.202.0/24 -oG - | grep Up |awk '{prin $2}' > ips.txt
## 列出ips.txt 主機有開 tcp/25 的主機
# -p port
# sS 掃描
# -iL 從檔案讀取要掃描的主機
sudo nmap -p 25 -sS 192.168.202.255 -iL ips.txt -oG -
# result
Host: 192.168.202.23 () Status: Up
Host: 192.168.202.23 () Ports: 25/filtered/tcp//smtp///
## ip 清單
nmap 192.168.203.* -sn -oG - | grep Up | cut -d ‘ ’ -f2 > ip_list.txt (ip清單)
-sn 只掃ip 不掃port
-oG: output can grep
-: console out put
namp 預設 top 1000(/usr/share/nmap/nmap-servicese)
namp 192.168.203.151
等於
namp 192.168.203.151 —top 1000
sudo + nmap =>多 ICMP type:8, type:13
# 全掃
namp 192.168.203.151 -p 1-65535
等於 namp 192.168.203.151 -p -
等於 namp 192.168.203.151 -p 1-
1- : 1以後
等於 namp 192.168.203.151 -p -65535
-65535: 65535 以前
以下是Nmap 7.94的說明及參數翻譯:
Nmap 7.94(https://nmap.org)
用法:nmap [掃描類型] [選項] {目標指定}
目標指定:
可傳遞主機名、IP地址、網絡等等。
例如:scanme.nmap.org、microsoft.com/24、192.168.0.1; 10.0.0-255.1-254
-iL <輸入文件名>:從主機/網絡列表輸入
-iR <主機數量>:選擇隨機目標
--exclude <主機1[,主機2][,主機3],...>:排除主機/網絡
--excludefile <排除文件>:從文件排除列表
主機發現:
-sL:列表掃描 - 簡單列出要掃描的目標
-sn:Ping掃描 - 停用端口掃描
-Pn:將所有主機視為在線 - 跳過主機發現
-PS/PA/PU/PY<端口列表>:TCP SYN/ACK、UDP或SCTP發現到指定端口
-PE/PP/PM:ICMP echo、timestamp和netmask請求發現探針
-PO[協議列表]:IP協議Ping
-n/-R:永不執行DNS解析/總是解析 [默認:有時]
--dns-servers <伺服器1[,伺服器2],...>:指定自定義DNS伺服器
--system-dns:使用作業系統的DNS解析器
--traceroute:追蹤到每個主機的跳躍路徑
掃描技術:
-sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon掃描
-sU:UDP掃描
-sN/sF/sX:TCP Null、FIN和Xmas掃描
--scanflags <標誌>:自定義TCP掃描標誌
-sI <殭屍主機[:探針端口]>:閒置掃描
-sY/sZ:SCTP INIT/COOKIE-ECHO掃描
-sO:IP協議掃描
-b <FTP中繼主機>:FTP彈跳掃描
端口指定和掃描順序:
-p <端口範圍>:僅掃描指定的端口
例如:-p22;-p1-65535;-p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <端口範圍>:排除掃描指定的端口
-F:快速模式 - 掃描比默認更少的端口
-r:按順序掃描端口 - 不隨機化
--top-ports <數量>:掃描最常見的<數量>個端口
--port-ratio <比率>:掃描比<比率>常見的端口
服務/版本檢測:
-sV:探測打開的端口以確定服務/版本信息
--version-intensity <級別>:設置從0(輕)到9(嘗試所有探針)的級別
--version-light:限制最可能的探針(級別2)
--version-all:嘗試每個單獨的探針(級別9)
--version-trace:顯示詳細的版本掃描活動(用於調試)
腳本掃描:
-sC:等同於 --script=default
--script=<Lua腳本>: <Lua腳本> 是目錄、腳本文件或腳本類別的逗號分隔列表
--script-args=<n1=v1,[
n2=v2,...]>:提供給腳本的參數
--script-args-file=文件名:在文件中提供NSE腳本參數
--script-trace:顯示發送和接收的所有數據
--script-updatedb:更新腳本數據庫
--script-help=<Lua腳本>:顯示有關腳本的幫助
<Lua腳本> 是腳本文件或腳本類別的逗號分隔列表
OS檢測:
-O:啟用OS檢測
--osscan-limit:限制OS檢測對有希望的目標
--osscan-guess:更積極地猜測OS
時間和性能:
需要 <時間> 的選項以秒為單位,或在值后附加 'ms'(毫秒)、's'(秒)、'm'(分鐘)或'h'(小時)(例如 30m)。
-T<0-5>:設置時間模板(較高表示更快)
--min-hostgroup/max-hostgroup <大小>:平行主機掃描組大小
--min-parallelism/max-parallelism <探針數量>:探針並行
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <時間>:指定探針往返時間
--max-retries <嘗試次數>:限制端口掃描探針的重發次數
--host-timeout <時間>:在此時間后放棄對目標的掃描
--scan-delay/--max-scan-delay <時間>:調整探針之間的延遲
--min-rate <數量>:每秒發送的封包數不低於<數量>
--max-rate <數量>:每秒發送的封包數不高於<數量>
防火牆/入侵檢測和欺騙:
-f; --mtu <值>:分段封包(可選附帶MTU)
-D <欺騙主機1,欺騙主機2[,自己],...>:用欺騙主機偽裝掃描
-S <IP地址>:偽造源地址
-e <接口>:使用指定的接口
-g/--source-port <端口號>:使用指定的端口號
--proxies <URL1,[URL2],...>:通過HTTP/SOCKS4代理中繼連接
--data <十六進制字符串>:附加自定義有效載荷到發送的封包
--data-string <字符串>:附加自定義ASCII字符串到發送的封包
--data-length <數量>:附加隨機數據到發送的封包
--ip-options <選項>:發送指定IP選項的封包
--ttl <值>:設置IP生存時間字段
--spoof-mac <MAC地址/前綴/供應商名稱>:偽造MAC地址
--badsum:發送具有虛偽的TCP/UDP/SCTP校驗和的封包
輸出:
-oN/-oX/-oS/-oG <文件>:將掃描輸出到正常、XML、s|<rIpt kIddi3和Grepable格式,分別到指定的文件名
-oA <基本名>:一次以三種主要格式輸出
-v:增加詳細程度(使用 -vv 或更多以獲得更大效果)
-d:增加調試程度(使用 -dd 或更多以獲得更大效果)
--reason:顯示端口處於特定狀態的原因
--open:僅顯示打開(或可能打開)的端口
--packet-trace:顯示發送和接收的所有封包
--iflist:打印主機接口和路由(用於調試)
--append-output:附加到指定的輸出文件而不是覆蓋它
--resume <文件名>:恢復中斷的掃描
--noninteractive:禁用通過鍵盤的運行時交互
--stylesheet <路徑/URL>:XSL樣式表以將XML輸出轉換為HTML
--webxml:從Nmap.Org引用樣式表以實現更具可移植性的XML
--no-stylesheet:防止將XSL樣式表與XML輸出關聯
其他:
-6:啟用IPv6掃描
-A:啟用OS檢測、版本檢測、腳本掃描和路由跟蹤
--datadir <目錄名>:指定自定義Nmap數據文件位置
--send-eth/--send-ip:使用原始以太網幀或IP封包發送
--privileged:假定用戶具有完全特權
--unprivileged:假定用戶缺乏原始套接字特權
-V:打印版本號
-h:打印此幫助摘要頁。
範例:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
# 不帶參數掃描常用port
kali@kali:~$ nmap 192.168.50.149
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-09 05:12 EST
Nmap scan report for 192.168.50.149
Host is up (0.10s latency).
Not shown: 989 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
Nmap done: 1 IP address (1 host up) scanned in 10.95 seconds
SYN掃描是一種TCP埠口掃描方法,涉及向目標主機上的各個埠口發送SYN數據包,而不完成TCP握手。如果TCP埠口是開放的,目標主機應該發送一個SYN-ACK,通知我們該埠口是開放的。此時,埠口掃描器不會繼續發送最終的ACK來完成三向握手。
kali@kali:~$ sudo nmap -sS 192.168.50.149
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-09 06:31 EST
Nmap scan report for 192.168.50.149
Host is up (0.11s latency).
Not shown: 989 closed tcp ports (reset)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
...
因為三向握手從未完成,所以信息不會傳遞到應用層,因此不會出現在任何應用程序日誌中。SYN掃描也更快速和高效,因為發送和接收的數據包更少。
kali@kali:~$ nmap -sT 192.168.50.149
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-09 06:44 EST
Nmap scan report for 192.168.50.149
Host is up (0.11s latency).
Not shown: 989 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
...
SMB 掃描
NetBIOS服務聽取TCP端口139,以及多個UDP端口。需要注意的是,SMB(TCP端口445)和NetBIOS是兩個獨立的協議。NetBIOS是一個獨立的會話層協議和服務,允許本地網絡上的計算機彼此通信。雖然現代SMB的實現可以在沒有NetBIOS的情況下運行,但為了向後兼容性,通常一起啟用NetBIOS over TCP(NBT)。這也意味著這兩個服務的列舉通常是相互關聯的。可以使用類似以下語法的工具,如nmap,來掃描這些服務:
kali@kali:~$ nmap -v -p 139,445 -oG smb.txt 192.168.50.1-254
kali@kali:~$ cat smb.txt
# Nmap 7.92 scan initiated Thu Mar 17 06:03:12 2022 as: nmap -v -p 139,445 -oG smb.txt 192.168.50.1-254
# Ports scanned: TCP(2;139,445) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 192.168.50.1 () Status: Down
...
Host: 192.168.50.21 () Status: Up
Host: 192.168.50.21 () Ports: 139/closed/tcp//netbios-ssn///, 445/closed/tcp//microsoft-ds///
...
Host: 192.168.50.217 () Status: Up
Host: 192.168.50.217 () Ports: 139/closed/tcp//netbios-ssn///, 445/closed/tcp//microsoft-ds///
# Nmap done at Thu Mar 17 06:03:18 2022 -- 254 IP addresses (15 hosts up) scanned in 6.17 seconds
Nmap還提供了許多有用的NSE腳本,我們可以使用它們來發現和列舉SMB服務。這些腳本位於/usr/share/nmap/scripts目錄中。
kali@kali:~$ ls -1 /usr/share/nmap/scripts/smb*
/usr/share/nmap/scripts/smb2-capabilities.nse
/usr/share/nmap/scripts/smb2-security-mode.nse
/usr/share/nmap/scripts/smb2-time.nse
/usr/share/nmap/scripts/smb2-vuln-uptime.nse
/usr/share/nmap/scripts/smb-brute.nse
/usr/share/nmap/scripts/smb-double-pulsar-backdoor.nse
/usr/share/nmap/scripts/smb-enum-domains.nse
/usr/share/nmap/scripts/smb-enum-groups.nse
/usr/share/nmap/scripts/smb-enum-processes.nse
/usr/share/nmap/scripts/smb-enum-sessions.nse
/usr/share/nmap/scripts/smb-enum-shares.nse
/usr/share/nmap/scripts/smb-enum-users.nse
/usr/share/nmap/scripts/smb-os-discovery.nse
...
我們找到了一些有趣的Nmap SMB NSE腳本,可以通過SMB執行各種任務,如OS發現和枚舉。
SMB發現腳本僅在目標上啟用了SMBv1時才能工作,這在現代Windows版本中不是默認情況。然而,仍然有很多遺留系統運行著SMBv1,我們已經在Windows主機上啟用了這個特定版本,以模擬這種情況。
讓我們在Windows 11客戶端上嘗試smb-os-discovery模塊。
kali@kali:~$ nmap -v -p 139,445 --script smb-os-discovery 192.168.50.152
...
PORT STATE SERVICE REASON
139/tcp open netbios-ssn syn-ack
445/tcp open microsoft-ds syn-ack
Host script results:
| smb-os-discovery:
| OS: Windows 10 Pro 22000 (Windows 10 Pro 6.3)
| OS CPE: cpe:/o:microsoft:windows_10::-
| Computer name: client01
| NetBIOS computer name: CLIENT01\x00
| Domain name: megacorptwo.com
| Forest name: megacorptwo.com
| FQDN: client01.megacorptwo.com
|_ System time: 2022-03-17T11:54:20-07:00
...
SNMP 掃描
要掃描開放的SNMP端口,我們可以運行nmap,使用-sU選項進行UDP掃描,並使用--open選項限制輸出,僅顯示已打開的端口。這將幫助我們識別正在運行SNMP服務的設備。
kali@kali:~$ sudo nmap -sU --open -p 161 192.168.50.1-254 -oG open-snmp.txt
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-14 06:02 EDT
Nmap scan report for 192.168.50.151
Host is up (0.10s latency).
PORT STATE SERVICE
161/udp open snmp
Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds
...