1. 程式人生 > 其它 >tcpdump抓包與nmap掃描

tcpdump抓包與nmap掃描

tcpdump

過濾條件
型別:host、net、port、portange
方向:src、dst
協議:tcp、dup、ip、wlan、arp…
多條件組合:and、or、not…

tcpdump過濾語句介紹

可以給tcpdump傳送“過濾表示式”來起到網路包過濾的作用,而且可以支援傳入單個或多個過濾表示式。

可以通過命令 man pcap-filter 來參考過濾表示式的幫助文件過濾表示式大體可以分成三種過濾條件,“型別”、“方向”和“協議”,這三種條件的搭配組合就構成了我們的過濾表示式。

關於型別的關鍵字,主要包括host,net,port, 例如 host 210.45.114.211,指定主機 210.45.114.211,net 210.11.0.0 指明210.11.0.0是一個網路地址,port 21 指明埠號是21。如果沒有指定型別,預設的型別是host.

關於傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src ,

這些關鍵字指明瞭傳輸的方向。舉例說明,src 210.45.114.211 ,指明ip包中源地址是210.45.114.211, dst net 210.11.0.0 指明目的網路地址是210.11.0.0 。如果沒有指明方向關鍵字,則預設是srcor dst關鍵字。

關於協議的關鍵字,主要包括 ether,ip,ip6,arp,rarp,tcp,udp等型別。這幾個的包的協議內容。如果沒有指定任何協議,則tcpdump將會監聽所有協議的資訊包。

除了這三種類型的關鍵字之外,其他重要的關鍵字如下:

gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 ‘not ’ ‘! ‘, 與運算是’and’,’&&’;或運算是’or’ ,’||’;

可以利用這些關鍵字進行組合,從而組合為比較強大的過濾條件。

下面舉例說明

(1)只想查目標機器埠是21或80的網路包,其他埠的我不關注:

sudo tcpdump -i eth0 -c 10 ‘dst port 21 or dst port 80

(2) 想要截獲主機172.16.0.11 和主機210.45.123.249或 210.45.123.248的通訊,使用命令(注意括號的使用):

sudo tcpdump -i eth0 -c 3 ‘host 172.16.0.11 and (210.45.123.249 or210.45.123.248)’

(3)想獲取使用ftp埠和ftp資料埠的網路包

sudo
tcpdump ‘port ftp or ftp-data’

這裡 ftp、ftp-data到底對應哪個埠? linux系統下 /etc/services這個檔案裡面,就儲存著所有知名服務和傳輸層埠的對應關係。如果你直接把/etc/services裡的ftp對應的埠值從21改為了3333,那麼tcpdump就會去抓埠含有3333的網路包了。

(4) 如果想要獲取主機172.16.0.11除了和主機210.45.123.249之外所有主機通訊的ip包,使用命令:

sudo tcpdump ip ‘host 172.16.0.11 and ! 210.45.123.249

(5) 抓172.16.0.11的80埠和110和25以外的其他埠的包

sudo tcpdump -i eth0 ‘host 172.16.0.11 and! port 80 and ! port 25 and ! port 110
[root@www ~]# tcpdump -i eth0 #監視指定網路介面的資料包
[root@www ~]# tcpdump host webserver #列印所有進入或離開webserver的資料包.
[root@www ~]# tcpdump host 172.18.0.67 #也可以指定ip,截獲所有172.18.0.67 的主機收到的和發出的所有的資料包
[root@www ~]# tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 ) #截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通訊
[root@www ~]# tcpdump host 172.18.0.67 and ! 172.18.60.129 #獲取主機172.18.0.67除了和主機172.18.60.129之外所有主機通訊的ip包
[root@www ~]# tcpdump -i eth0 src(源) host webserver #截獲主機webserver傳送的所有資料
[root@www ~]# tcpdump -i eth0 dst(目標) host webserver #監視所有傳送到主機webserver的資料包
[root@www ~]# tcpdump tcp port 23 and host 210.27.48.1 #獲取主機210.27.48.1接收或發出的telnet包
[root@www ~]# tcpdump udp port 123 #對本機的udp 123 埠進行監視 123 為ntp的服務埠
[root@www ~]# tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

#(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個引數的位置,用來過濾資料報的型別

#(2)-i eth1 : 只抓經過介面eth1的包

#(3)-t : 不顯示時間戳

#(4)-s 0 : 抓取資料包時預設抓取長度為68位元組。加上-S 0 後可以抓到完整的資料包

#(5)-c 100 : 只抓取100個數據包

#(6)dst port ! 22 : 不抓取目標埠是22的資料包

#(7)src net 192.168.1.0/24 : 資料包的源網路地址為192.168.1.0/24

#(8)-w ./target.cap : 儲存成cap檔案,方便用ethereal(即wireshark)分析

nmap

nmap -sP 192.168.1.0/24 #進行ping掃描,打印出對掃描做出響應的主機,不做進一步測試(如埠掃描或者作業系統探測)

nmap -sL 192.168.1.0/24 #僅列出指定網路上的每臺主機,不傳送任何報文到目標主機

nmap -PS 192.168.1.234 #探測目標主機開放的埠,可以指定一個以逗號分隔的埠列表(如-PS22,232580)
nmap -PS -p 80,3306,22,23,21 172.18.0.69

nmap -sV 172.18.0.69 -p 22 -oN test6.txt //-oN 儲存為txt oX儲存為xml格式

nmap -PU 192.168.1.0/24 #使用UDP ping探測主機

nmap -sS 192.168.1.0/24 #使用頻率最高的掃描選項:SYN掃描,又稱為半開放掃描,它不開啟一個完全的TCP連線,執行得很快

nmap -sT 192.168.1.0/24 #當SYN掃描不能用時,TCP Connect()掃描就是預設的TCP掃描

nmap -sU 192.168.1.0/24 #UDP掃描用-sU選項,UDP掃描傳送空的(沒有資料)UDP報頭到每個目標埠

nmap -sO 192.168.1.19 #確定目標機支援哪些IP協議 (TCP,ICMP,IGMP等)
[root@ecs-62f4 ~]# nmap -sO 172.18.0.69

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-25 19:07 CST
Nmap scan report for 172.18.0.69
Host is up (0.00028s latency).
Not shown: 252 open|filtered protocols
PROTOCOL STATE SERVICE
1 open icmp
6 open tcp
58 closed ipv6-icmp
112 closed vrrp
MAC Address: FA:16:3E:99:A5:D4 (Unknown)
nmap -O 192.168.1.19 #探測目標主機的作業系統
nmap -A 192.168.1.19 #探測目標主機的作業系統

nmap -v scanme.nmap.org #這個選項掃描主機scanme.nmap.org中 所有的保留TCP埠。選項-v啟用細節模式。

nmap -sS -O scanme.nmap.org/24 #進行祕密SYN掃描,物件為主機Saznme所在的“C類”網段 的255臺主機。同時嘗試確定每臺工作主機的作業系統型別。因為進行SYN掃描 和作業系統檢測,這個掃描需要有根許可權。

nmap -sV -p 22531101434564 198.116.0-255.1-127 #進行主機列舉和TCP掃描,物件為B類188.116網段中255個8位子網。這 個測試用於確定系統是否運行了sshd、DNS、imapd或4564埠。如果這些埠 開啟,將使用版本檢測來確定哪種應用在執行。

nmap -v -iR 100000 -P0 -p 80 #隨機選擇100000臺主機掃描是否執行Web伺服器(80埠)。由起始階段 傳送探測報文來確定主機是否工作非常浪費時間,而且只需探測主機的一個埠,因 此使用-P0禁止對主機列表。

nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20 #掃描4096個IP地址,查詢Web伺服器(不ping),將結果以Grep和XML格式儲存。

host -l company.com | cut -d -f 4 | nmap -v -iL - #進行DNS區域傳輸,以發現company.com中的主機,然後將IP地址提供給 Nmap。上述命令用於GNU/Linux – 其它系統進行區域傳輸時有不同的命令