Linux網絡命令與腳本使用
作為系統管理員,經常需要診斷和解決網絡問題,而配置、監控與保護網絡有助於發現問題並在事情範圍擴大前得意解決,並且網絡的性能與安全也是管理與診斷網絡的重要部分。這裡總結一下常用與Linux網絡管理的命令,大概60個長期更新。
IP
iproute2
包含網絡、路由、ARP緩存等的管理與配置的ip
命令,用來取代傳統的 ifconfig
與 route
;ip
使用第二個參數,指定在對象執行的操作(例如,add
delete
show
)。
ip 命令是配置網絡接口的強大工具,任何 Linux 系統管理員都應該知道。它用於啟動或關閉接口、分配和刪除地址和路由、管理 ARP 緩存等等。
ip
常用的子命令有:
link
(l
) 網絡接口管理address
(a
) IP地址管理route
(r
) 路由表管理neigh
(n
) arp表管理
各系統下的包名與安裝
- Ubuntu/Debian:
iproute2
;apt install iproute2
- Centos/Fedora:
iproute2
;yum install -y iproute2
- Apline:
iproute2
;apk add iproute2
ip link
ip link
用於管理和顯示網絡接口
獲取網絡接口信息ip link show
查看特定設備信息
ip link show dev [device]
查看所有網絡接口的統計信息(如傳輸或丟棄的數據包,錯誤等等):
ip -s link
查看單個網絡接口的類似信息:
ip -s link ls [interface]
例如
[root@vm207694 ~]# ip -s link ls eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000
link/ether da:78:c8:7a:fb:26 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
38626072259 324723879 0 347316 0 0
TX: bytes packets errors dropped carrier collsns
13404948080 6829250 0 0 0 0
如果需要顯示更多的詳情,可以再添加一個 -s
ip -s -s link ls [interface]
僅查看啟動(運行)的接口列表
ip link ls up
修改網絡接口信息 ip link set
查看 ip link
的幫助
ip link help
啟動/關閉網絡接口
ip link set [interface] up/down
ip link
可以修改設備傳輸隊列的長度
ip link set txqueuelen [number] dev [interface]
設置 MTU (Maximum Transmission Unit) 來提高網絡性能
ip link set mtu [number] dev [interface]
查看與管理IP地址 ip addr
顯示所有設備
ip addr
列出網絡接口與IP地址
ip addr show
查看單個網絡設備的信息
ip addr show dev [interface]
列出 IPv4/IPv6 地址
ip -4 addr
ip -6 addr
在Linux中添加網絡地址
ip addr add [ip_address] dev [interface]
添加廣播地址
ip addr add brd [ip_address] dev [interface]
刪除接口上的網絡地址
ip addr del [ip_address] dev [interface]
管理路由表 ip route
顯示路由表 ip route list
ip route
ip route list
選擇範圍;上述命令列出內核內所有路由條目,如果想要縮小範圍可以使用選擇器 SELECTOR
語法:ip route list SELECTOR
SELECTOR:
-
root:[ local | main | default | all | NUMBER ]
-
match:
[ match PREFIX ]
ip route list match 10
-
exact: [ exact PREFIX ]
-
TABLE
[ table TABLE_ID ] [ local | main | default | all | NUMBER ]
ip route list table local broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 broadcast 195.133.10.0 dev eth0 proto kernel scope link src 195.133.11.43 local 195.133.11.43 dev eth0 proto kernel scope host src 195.133.11.43 broadcast 195.133.11.255 dev eth0 proto kernel scope link src 195.133.11.43
-
PROTO
[ proto RTPROTO ] [ kernel | boot | static | NUMBER ]
ip route list proto static
-
TYPE
[ type TYPE ] { unicast | local | broadcast | multicast | throw |unreachable | prohibit | blackhole | nat }
ip route list type multicast
-
SCOPE
[ scope SCOPE ] [ host | link | global | NUMBER ]
ip route list scope link 169.254.0.0/16 dev eth0 metric 1002 172.16.0.0/20 dev eth0 proto kernel src 172.16.0.2
修改路由表 ip route add/del
在指定設備上添加路由條目
ip route add [ip_address] dev [interface]
通過網關添加新路由
ip route add [ip_address] via [gatewayIP]
通過本地網關為所有地址添加默認路由
ip route add default [ip_address] dev [device]
ip route add default [network/mask] via [gatewayIP]
刪除已經存在的路由表
ip route del [ip_address]
ip route del default
ip route del [ip_address] dev [interface]
ARP地址表管理 ip neighbor
顯示arp 條目 ip neigh show
顯示系統中設備的MAC地址及其狀態。設備存在的狀態:
狀態 | 說明 |
---|---|
REACHABLE | 在超時過期之前有效且可訪問的條目 |
PERMANENT | 管理員才能刪除的永久條目 |
STALE | 有效但無法訪問的條目;為了檢查它的狀態,內核在第一次傳輸時檢查 |
例如
ip neigh show
192.168.10.1 dev eth0 lladdr 00:1f:ce:72:bd:8c REACHABLE
46.17.40.155 dev eth0 lladdr c4:71:fe:f1:9f:3f STALE
2a00:b700:3::1 dev eth0 lladdr 00:1f:ce:72:bd:8c router STALE
fe80::f0c5:a5ff:fee8:2aa4 dev eth0 lladdr f2:c5:a5:e8:2a:a4 router STALE
fe80::a48a:1eff:fe35:c2f7 dev eth0 lladdr a6:8a:1e:35:c2:f7 router STALE
fe80::4c4d:b3ff:fe44:fd58 dev eth0 lladdr 4e:4d:b3:44:fd:58 router STALE
fe80::4c33:dfff:fe92:9f2f dev eth0 lladdr 4e:33:df:92:9f:2f router STALE
fe80::21f:ceff:fe72:bd8c dev eth0 lladdr 00:1f:ce:72:bd:8c router STALE
修改arp條目 ip neigh add/del
ip neigh add [ip_address] dev [interface]
ip neigh del [ip_address] dev [interface]
traceroute
traceroute
可以追蹤數據傳輸是如何從本地傳輸到遠程的。一個典型的例子是網頁的訪問。在互聯網上加載一個網頁需要數據流經一個網絡和許多路由器。traceroute
可以顯示所採用的路由以及網絡上路由器的IP和主機名。它可以應用於排查網絡延遲或診斷網絡問題。
各系統下的包名與安裝
- Ubuntu/Debian:
traceroute
;apt install traceroute -y
- Centos/Fedora:
traceroute
;yum install -y traceroute
- Apline:
busybox
;apk add busybox
追蹤網絡主機的路由 traceroute host
traceroute baidu.com
traceroute to baidu.com (220.181.38.148), 30 hops max, 60 byte packets
1 * 9.31.61.129 (9.31.61.129) 1.795 ms *
2 9.31.123.98 (9.31.123.98) 0.907 ms 1.179 ms 1.416 ms
3 10.196.18.109 (10.196.18.109) 0.866 ms 10.196.18.125 (10.196.18.125) 1.085 ms *
4 10.162.33.5 (10.162.33.5) 1.297 ms 10.200.16.169 (10.200.16.169) 0.774 ms 10.196.92.109 (10.196.92.109) 1.218 ms
5 10.162.32.145 (10.162.32.145) 1.539 ms 1.431 ms 10.162.32.149 (10.162.32.149) 1.310 ms
6 * * *
7 58.63.249.45 (58.63.249.45) 7.320 ms * 121.14.50.25 (121.14.50.25) 7.859 ms
8 * * 113.96.4.121 (113.96.4.121) 4.887 ms
9 202.97.22.149 (202.97.22.149) 32.481 ms 202.97.22.153 (202.97.22.153) 32.676 ms
10 36.110.245.206 (36.110.245.206) 36.928 ms 36.110.247.54 (36.110.247.54) 37.593 ms 36.110.245.82 (36.110.245.82) 41.254 ms
11 36.110.245.161 (36.110.245.161) 33.749 ms * 37.905 ms
12 * * *
13 * * 220.181.182.170 (220.181.182.170) 42.998 ms
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
第一行顯示要訪問的主機名和ip、traceroute將嘗試到主機的最大躍點數以及要發送的位元組數據包的大小。
每行列出到達目的地的一個跳躍點。給出主機名與主機名的ip,然後是數據包到達主機並返回發起計算機所需的時間。默認情況下,traceroute
為每個主機發送三個數據包,因此列出了三個響應時間。
星號 *
表示丟失的數據包。這意味着網絡中斷、大量流量導致網絡擁塞或防火牆丟棄流量。
追蹤IPv6協議
traceroute -6 ipv6.google.com
忽略主機名與IP的映射
使用-n選項在traceroute中禁用IP地址映射。
traceroute -n qq.com
traceroute to qq.com (183.3.226.35), 30 hops max, 60 byte packets
1 9.31.61.129 0.908 ms 1.159 ms 1.537 ms
2 9.31.122.210 1.061 ms 0.837 ms 1.421 ms
設置相應等待時間
使用 -w
選項在traceroute
中配置響應等待時間,支持指定等待對探測的響應的時間(秒為單位)。
traceroute -w 1 -n qq.com
使用特定的網絡接口
使用-i選項設置traceroute應使用的網絡接口,如果未設置,則根據路由表選擇接口。
traceroute -w 1 -n -i eth0 qq.com
ping & hping
ping
Ping是一種簡單、廣泛使用的跨平台網絡工具,用於測試主機是否可以在Internet協議(IP)網絡上訪問。它的工作原理是向目標主機發送網絡控制消息協議Internet Control Message Protocol (ICMP) ECHO_REQUEST,目標節點等待並回復 ECHO_RESPONSE。
可以使用ping
測試兩節點間的網絡通信,可以做到:
- 目標主機是否可用,
- 測量數據包到達目標主機並返回計算機所需的時間(與目標主機通信的往返時間(rtt)),以及數據包丟失的百分比。
各系統下的安裝
- Ubuntu/Debian:
iputils-ping
;apt install iputils-ping
- Centos/Fedora:
iputils
;yum install -y iputils
- Apline:
iputils
;apk add iputils
使用參數
參數 | 說明 |
---|---|
-c | 指定發送ECHO_REQUEST的請求數 |
-i | 設置包與包之間的間隔 ping -i 3 -c 5 www.google.com |
-f | flood ping,檢測高負載下的響應,需要有root權限 |
-b | 允許ping一個廣播地址 |
-t | 限制ping遍歷的網絡跳躍數(TTL Time-to-live),收到數據包的每個路由器從計數中至少減去 1,如果大於 0,路由器會將數據包轉發到下一跳,否則它會丟棄它並將 ICMP 響應返回。 |
-s | 設置ping時的數據包大小(單位 bytes),這將導致提供的總數據包大小加上ICMP頭的8個額外位元組。 |
-l | 發送預加載數據包(先發不等待回復的數據包),大於3需要root權限 |
-W | 設置等待相應時間,單位秒 |
-w | 設置超時時間,超時退出,單位秒 |
-d | debug模式 |
-v | 顯示詳細輸出 |
-A | 更快的在兩節點間包往返的時間,非特權用戶最小為200ms |
hping
hping一個具有可嵌入tcl腳本功能的 TCP/IP
包偽造工具。,主要用於創建或生成網絡數據包以測試網絡、服務或系統性能。 hping 是由不同實體開發的舊工具,並以 hping2
或 hping3
等新版本命名。 在大多數情況下,您可以使用操作系統提供的命令,可以是 hping 或 hping2 或 hping3。 hping 名稱源自 ping 命令名稱。hping3
是另一種用於掃描網絡的工具。它在kali linux中默認是DOS攻擊軟件之一。
hping支持TCP、UDP、ICMP、raw-IP等協議用於不同的用例。通過使用hping,可以創建具有不同選項的不同協議包。hping主要可以用作。
- 創建原始IP數據包
- 生成指定數量的數據包
- 設置包發送間隔
- 指定傳輸網絡接口
- 創建和生成TCP數據包
- 創建和生成UDP數據包
- 創建和生成IP數據包
- 創建和生成ICMP數據包
- 設置MTU值
- 設置碎片並創建碎片或未碎片的數據包
- 設置數據包的有效負載或數據大小
hping的常用場景
- 模擬DOS和DDOS攻擊
- 測試防火牆和TCP、UDP、IP等協議的防火牆配置
- TCP和UDP端口掃描
- 測試網絡設備的配置,如碎片、MTU等。
- 用於列出中間主機的高級跟蹤路由
- 遠程操作系統指紋識別和檢測
- 遠程正常運行時間決策
- TCP/IP協議實現與棧測試審計
各系統下的安裝
- Ubuntu/Debian:
hping3
;apt install hping3
- Centos/Fedora:
hping3
;yum install epel-release && yum install -y hping3
- Apline:
hping3
;apk add hping3 --update-cache --repository //dl-cdn.alpinelinux.org/alpine/edge/testing
參數說明
基礎參數
參數選項 | 參數說明 |
---|---|
-c --count [count] |
發送數據包的次數 關於countreached_timeout 可以在hping2.h里編輯 |
-i --interval |
每個包發送間隔時間(單位是毫秒) 缺省時間是1秒,此功能在增加傳輸率上很重要。-i 1 為1s -i u1 為1us (微秒) 即每秒發送1000000包 |
--fast |
為 -i u10000 的別名,即1秒發送10個包 |
--faster |
為 -i u1 的別名,但實際上發送的包取決於計算機的速度 |
--flood |
儘可能快速的發送包,不關注收到的恢復,要比 -i u0 快 |
-I --interface [interface name] |
指定默認的路由接口,在linux中,hping3使用默認路由接口。 可以使用 -I 接網絡接口的完整名稱,如 eth0 |
-q -quiet |
安靜輸出。除了啟動時和完成時的摘要信息外,不輸出任何內容。 |
-n -nmeric |
數字化輸出主機地址 |
協議選項
默認情況下,hping使用的為tcp協議
選項 | 說明 |
---|---|
-0 --rawip |
原始IP模式,此模式下,hping3將發送IP頭。 |
-1 --icmp |
ICMP模式,默認情況下hping3將發送ICMP回顯請求。 |
-2 --udp |
UDP模式,默認情況下,hping3將向目標主機的0端口發送UDP |
-8 --scan |
端口掃描,在該模式下,需要提供一組端口,如 1,2,3 端口組以 , 分隔端口範圍: start-end 如 1000-2000 特殊字符: all 表示所有端口;know :包含 /etc/services 中的所有端口組合寫法: hping --scan 1-1000,8888,known -S www.baidu.com |
-9 --listen signature |
監聽模式,此模式下 hping3 等待包含簽名的數據包並從簽名端轉儲到數據包的結尾處。 |
IP相關選項
參數 | 說明 |
---|---|
-a --spoof hostname |
此選項可以偽造源IP地址,可確保目標不會獲得真實IP地址,必然性的響應將被發送到偽造的地址處。 |
--rand-source |
此選項開啟隨機源模式。hping將發送帶有隨機源地址的數據包。 |
--rand-dest |
此選項開啟隨機目標模式。hping將數據包發送到隨機目標地址 如,當使用隨機目標地址時,可以使用 x 作為範圍,所有出現的 x 都將唄替換為0-255之間的隨機數。如10.0.0.x 。可以使用--debug 選項查看生成的隨機地址。注意:使用此選項,hping無法檢測數據包的正確傳出接口,應使用 -I 選項指定網絡接口。 |
-t --ttl |
此選項可以設置傳出數據包的TTL(生存時間) |
-N id |
設置IP字段的隨機值 |
-H --ipproto |
在RAW IP模式中設置IP協議 |
-r --rel |
ip id等增量 |
-m –mtu |
設置虛擬最大傳輸單元 |
icmp選項
參數 | 說明 |
---|---|
-C --icmptype type |
設置icmp類型,默認為icmp echo reques。 |
--icmp-ipver |
設設置包含在ICMP數據中的IP頭的IP版本,默認值為4。 |
--icmp-ipproto |
設置包含在ICMP數據中的IP頭的IP協議,默認為TCP。 |
TCP/UDP選項
參數 | 說明 |
---|---|
-s --baseport [src port] |
隨機源端口 |
-p --destport [dest port] |
設置目標端口+ 目標端口將隨着收到的每個回復而增加++ 目標端口每發送數據包都會增加 |
–keep | 保持源端口不邊 |
-w –win | 設置tcp窗口大小,默認64 |
-F –fin | 設置 tcp fin標記 |
-S –syn | 設置 tcp SYN標記 |
-R –rst | 設置 tcp rst標記 |
-P –push | 設置 tcp PUSH標記 |
-A –ack | 設置 tcp ACK標記 |
-U –urg | 設置 tcp URG標記 |
-X –xmas | 設置 tcp Xmas標記 |
-Y –ymas | 設置 tcp Ymas標記 |
常用參數
參數 | 說明 |
---|---|
-d --data |
設置數據包主體大小。 使用 --data 40 hping將在 protocol_header 增加40 位元組。 |
-E --file [filename] |
使用文件名內容填充數據包的數據 |
-j --dump |
以16進制導出數據包 |
-J --print |
導出可打印的數據包 |
-u --end |
如果使用 “–file filename` 選項,何時為EOF。 |
-T --traceroute |
traceroute 模式。此選項將在接收ttl來嘗試追蹤。 |
--tr-keep-ttl |
保持ttl的固定,用於監視某一跳 |
–tr-stop |
traceroute 下收到第一個不是ICMP時退出 |
…. |
輸出格式
hping的一個標準的TCP/UDP格式如下,UDP字段含義與TCP的相同。
# tcp
len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms
# udp
len=46 ip=192.168.1.1 seq=0 ttl=64 id=0 rtt=6.0 ms
- len:len是從數據鏈路層捕獲的數據的大小(位元組),不包括數據鏈路頭大小。
- ip: ip 為請求的ip
- flags:flags為TCP的標記,如
- R RESET
- S SYN
- A ACK
- F FIN
- P PUSH
- U URGENT
- X 不標準的 0x40
- Y 不標準的 0x80
- seq:seq是數據包的序列號,使用TCP/UDP數據包的源端口獲得
- id 是IP ID字段。
- win TCP 窗口大小
- rtt 往返時間 (round trip time),單位毫秒
- 以下是使用-V參數後的字段
- tos 是IP標頭的服務類型字段。
- iplen ip的總長度
- seq 和 ack 是TCP標頭中的序列號和32位確認號
- 是TCP標頭校驗和值。
- urp TCP緊急指針值。
ICMP的輸出格式
ICMP Port Unreachable from ip=192.168.1.1 name=nano.marmoc.net
在此格式中,ip 為 ICMP 錯誤的 IP 地址,name為解析的名稱或者為UNKNOWN,而其他的參數含義與TCP/UDP大致相同。
端口掃描
hping可以自由地創建原始IP、TCP、UDP和ICMP數據包。可以利用此功能生成 TCP SYN
掃描。TCP-SYN
掃描是最簡單的將數據包發送到主機/IP端口的方法。這裡 掃描的為110.242.68.4:80
啟動經典的掃描的最簡單方法是將TCP-SYN數據包發送到主機/ip上的端口。下面的命令將掃描IP 192.168.8.223上的端口80。從輸出中,可以看到 flags=SA
SYN和ACK標記,代表一個開放端口。
hping3 -S 110.242.68.4 -p 80 -c 2
掃描一個範圍的端口可以使用 ++
hping3 -S 110.242.68.4 -p ++80
也可以使用如下方式
hping3 -8 80-86 -S 110.242.68.4
Scanning 110.242.68.4 (110.242.68.4), port 80-86
7 ports to scan, use -V to see all the replies
+----+-----------+---------+---+-----+-----+-----+
|port| serv name | flags |ttl| id | win | len |
+----+-----------+---------+---+-----+-----+-----+
80 http : .S..A... 128 60936 64240 46
All replies received. Done.
Not responding ports: (81 ) (82 xfer) (83 mit-ml-dev) (84 ctf) (85 ) (86 mfcobol)
通過Hping3跟蹤路由到指定端口:
hping3支持一個很實用功能,可以追蹤路由到一個指出的端口,查看你的數據包被阻塞的地方。
hping3 --traceroute -p 80 -V -1 www.google.com
using eth0, addr: 195.133.11.43, MTU: 1500
HPING www.google.com (eth0 142.250.150.104): icmp mode set, 28 headers + 0 data bytes
hop=1 TTL 0 during transit from ip=195.133.10.1 name=gateway
hop=1 hoprtt=3.1 ms
hop=2 TTL 0 during transit from ip=10.11.12.37 name=UNKNOWN
hop=2 hoprtt=10.0 ms
hop=3 TTL 0 during transit from ip=62.140.243.62 name=msk-m9-b1-ae30-vlan449.fiord.net
hop=3 hoprtt=1.9 ms
hop=4 TTL 0 during transit from ip=62.140.239.113 name=msk-m9-b6-ae1-vlan12.fiord.net
hop=4 hoprtt=9.8 ms
hop=5 TTL 0 during transit from ip=72.14.222.198 name=UNKNOWN
hop=5 hoprtt=4.2 ms
hop=6 TTL 0 during transit from ip=108.170.250.33 name=UNKNOWN
hop=6 hoprtt=3.8 ms
hop=7 TTL 0 during transit from ip=108.170.250.51 name=UNKNOWN
hop=7 hoprtt=2.5 ms
hop=8 TTL 0 during transit from ip=142.251.49.158 name=UNKNOWN
hop=8 hoprtt=34.7 ms
hop=9 TTL 0 during transit from ip=108.170.235.204 name=UNKNOWN
hop=9 hoprtt=18.2 ms
hop=10 TTL 0 during transit from ip=142.250.209.35 name=UNKNOWN
hop=10 hoprtt=17.1 ms
....
不同類型的ICMP
hping3 -c 5 -V -1 -C 17 110.242.68.4
using eth0, addr: 10.0.0.4, MTU: 1500
HPING 110.242.68.4 (eth0 110.242.68.4): icmp mode set, 28 headers + 0 data bytes
--- 110.242.68.4 hping statistic ---
5 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
通過hping3進行TCP FIN掃描
在TCP連接中,FIN標誌用於開始請求關閉連接。萬一沒有得到答覆,那說明端口是開放的。通常防火牆會再次發送Rst+ack數據包,以指示該端口已關閉。
通過hping3 進行ACK掃描
有些情況下,主機可能禁止PING ICMP,此時使用ACK掃描可以用於檢查主機是否處於活動狀態。如果主機活躍,會相應RST標記,在hping中是為 flags=R
。
hping3 -c 2 -V -p 80 -A 110.242.68.4
using eth0, addr: 10.0.0.4, MTU: 1500
HPING 110.242.68.4 (eth0 110.242.68.4): A set, 40 headers + 0 data bytes
len=46 ip=110.242.68.4 ttl=128 id=2391 tos=0 iplen=40
sport=80 flags=R seq=0 win=32767 rtt=0.6 ms
seq=1165126080 ack=0 sum=c0ba urp=0
UDP掃描
使用參數 -2
可以讓hping工作於UDP模式,可以進行UDP掃描
hping3 -2 8.8.4.4 -V -p 53 -c 10
操作系統識別
使用-Q或-seqnum可以讓hping
收集了ISN。
hping3 127.0.0.1 -Q -p 22 -V -S
using lo, addr: 127.0.0.1, MTU: 65536
HPING 127.0.0.1 (lo 127.0.0.1): S set, 40 headers + 0 data bytes
893247485 +893247485
2568100167 +1674852682
2600543427 +32443260
內容探測
可以使用hping的監聽模式,來抓取通過網絡接口的所有流量,以及捕獲對應的內容。例如抓取通過谷歌搜索的流量包
hping3 -9 "www.google.com" --beep -I eth0
hping2 listen mode
[main] memlockall(): Success
Warning: can't disable memory paging!
Accept: */*
.hk/url?sa=p&hl=zh-CN&pref=hkredirect&pval=yes&q=//www.google.com.hk/&ust=1624605433464983&usg=AOvVaw2THxd5w15lxgX3_KA19GWL
Cache-Control: private
Content-Type: text/html; charset=UTF-8
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Date: Fri, 25 Jun 2021 07:16:43 GMT
Server: gws
Content-Length: 370
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2021-06-25-07; expires=Sun, 25-Jul-2021 07:16:43 GMT; path=/; domain=.google.com; Secure
Set-Cookie: NID=217=PdQLBtU-tTavgvb4BW9ouB3nAr1OKNK6I_kn9u2Qa2eTgLA_qLyGv2G_2t2G_PRNVrKu2SOEm-e7ED17ljnx3uFBweBjQWOyRvHrJ6jhC5_J3yaBK0r8mikUrqHNjDez5F3rCleFQDurBEfnqECDFXNkvvO_-Wn4ahGJeid01TM; expires=Sat, 25-Dec-2021 07:16:43 GMT; path=/; domain=.google.com; HttpOnly
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="//www.google.com.hk/url?sa=p&hl=zh-CN&pref=hkredirect&pval=yes&q=//www.google.com.hk/&ust=1624605433464983&usg=AOvVaw2THxd5w15lxgX3_KA19GWL">here</A>.
</BODY></HTML>
.hk/&ust=1624605433464983&usg=AOvVaw2THxd5w15lxgX3_KA19GWL HTTP/1.1
User-Agent: curl/7.29.0
Host: www.google.com.hk
Accept: */*
.hk/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Date: Fri, 25 Jun 2021 07:16:43 GMT
Server: gws
Content-Length: 222
X-XSS-Protection: 0
Set-Cookie: 1P_JAR=2021-06-25-07; e
網絡後門
可以通過hping3的監聽模式,創建一個簡單的後門(backdoor),通過管道來執行腳本
hping3 -I eth1 -9 secret | /bin/sh
hping3 -R 192.168.1.100 -e secret -E commands_file -d 100 -c 1
dig & nslookup
nslookup(name server lookup)用於在Linux中執行DNS查找的工具。用於顯示DNS詳細信息,例如計算機的IP地址、域的MX記錄或域的NS服務器。
nslookup 可以在兩種模式下運行:交互式和非交互式。交互模式可以查詢名稱服務器以獲取有關各種主機和域的信息或打印域中的主機列表。非交互模式僅打印主機或域的名稱和請求的信息。
dig(Domain Information Groper) 執行DNS查找。默認情況下,dig查詢通過 resolver ( /etc/resolv.conf
) 中列出的DNS地址,除非指定特定的name server。
各系統下的安裝
- Ubuntu/Debian:
knot-dnsutils
;apt install knot-dnsutils
- Centos/Fedora:
bind-utils
|dnsutils
;yum install -y bind-utils
- Apline:
bind-tools
;apk add bind-tools
nslookup
簡單查詢
nslookup後跟域名將顯示域名的「A記錄」(IP地址),nslookup命令的默認輸出比dig命令的默認輸出相對整潔些。
nslookup redhat.com
執行反向DNS查找:
nslookup 208.117.229.88
查詢MX記錄
MX( Mail Exchange )記錄將域名映射到該域的郵件服務器列表。MX記錄表明發到 @qq.com
的所有郵件都應該路由到該域中的郵件服務器。
nslookup -query=mx qq.com
Server: 183.60.83.19
Address: 183.60.83.19#53
Non-authoritative answer:
qq.com mail exchanger = 20 mx2.qq.com.
qq.com mail exchanger = 30 mx1.qq.com.
qq.com mail exchanger = 10 mx3.qq.com.
Authoritative answers can be found from:
Authoritative Answer與Non-Authoritative Answer
可以注意到注意到上面輸出中的關鍵字 Authoritative
和 Non-Authoritative Answer
。任何來自DNS服務器的答覆都稱為Authoritative Answer
,該服務器具有域可用的完整區域文件信息。在許多情況下,DNS服務器將不具備給定域的完整區域文件信息。相反,它維護一個緩存文件,該文件包含過去執行的所有查詢的結果,並已獲得權威響應。當給出一個DNS查詢時,它搜索緩存文件,並以 Non-Authoritative Answer
的形式返回可用的信息。
查詢NS記錄
NS ( Name Server ) 記錄將域名映射到該域的授權DNS服務器列表。它將輸出與給定域關聯的名稱服務。
nslookup -type=ns qq.com
Server: 183.60.83.19
Address: 183.60.83.19#53
Non-authoritative answer:
qq.com nameserver = ns1.qq.com.
qq.com nameserver = ns2.qq.com.
qq.com nameserver = ns3.qq.com.
qq.com nameserver = ns4.qq.com.
Authoritative answers can be found from:
查詢SOA記錄
SOA ( start of authority )記錄\,提供關於域的權威信息、域管理員的電子郵件地址、域序列號等。
nslookup -type=soa qq.com
Server: 183.60.83.19
Address: 183.60.83.19#53
Non-authoritative answer:
qq.com
origin = ns1.qq.com
mail addr = webmaster.qq.com
serial = 1330914143
refresh = 3600
retry = 300
expire = 86400
minimum = 300
Authoritative answers can be found from:
- mail addr–指定域管理員的郵件地址
- serial 一種版本編號系統。標準慣例是使用
YYYYMMYNN
格式2012-07-16.01
如果在同一天進行了多個編輯,則將遞增) - refresh 指定從DNS服務何時輪詢主DNS以查看序列號是否已增加(以秒為單位)。如果增加,從DNS服務器將發出複製新區域文件的新請求。
- retry 指定與主DNS重新連接的間隔
- expire 指定輔助DNS保持緩存區域文件有效的時間
- minimum 指定從DNS應緩存區域文件的時間
查看可用的DNS記錄
nslookup -type=any qq.com
Server: 183.60.83.19
Address: 183.60.83.19#53
Non-authoritative answer:
Name: qq.com
Address: 61.129.7.47
Name: qq.com
Address: 183.3.226.35
Name: qq.com
Address: 203.205.254.157
Name: qq.com
Address: 123.151.137.18
qq.com mail exchanger = 10 mx3.qq.com.
qq.com mail exchanger = 20 mx2.qq.com.
qq.com mail exchanger = 30 mx1.qq.com.
Authoritative answers can be found from:
使用指定DNS查詢
可以指定特定的DNS來解析域名,而不是使用默認DNS進行查詢。
nslookup www.qq.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.qq.com canonical name = news.qq.com.edgekey.net.
news.qq.com.edgekey.net canonical name = e6156.dscf.akamaiedge.net.
Name: e6156.dscf.akamaiedge.net
Address: 23.219.132.75
Name: e6156.dscf.akamaiedge.net
Address: 2600:1417:76:494::180c
Name: e6156.dscf.akamaiedge.net
Address: 2600:1417:76:480::180c
使用特殊的dns端口
默認情況下,DNS使用端口號為53。可以使用-port選項指定端口號。
nslookup -port 56 qq.com
設置超時時間
可以使用 -timeout
選項來指定超時時間
nslookup -timeout=10 qq.com
啟用調試模式
-debug
選項打開/關閉調試
nslookup -debug qq.com
Server: 183.60.83.19
Address: 183.60.83.19#53
------------
QUESTIONS:
qq.com, type = A, class = IN
ANSWERS:
-> qq.com
internet address = 183.3.226.35
ttl = 92
-> qq.com
internet address = 203.205.254.157
ttl = 92
-> qq.com
internet address = 61.129.7.47
ttl = 92
-> qq.com
internet address = 123.151.137.18
ttl = 92
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name: qq.com
Address: 183.3.226.35
Name: qq.com
Address: 203.205.254.157
Name: qq.com
Address: 61.129.7.47
Name: qq.com
Address: 123.151.137.18
------------
QUESTIONS:
qq.com, type = AAAA, class = IN
ANSWERS:
AUTHORITY RECORDS:
-> qq.com
origin = ns1.qq.com
mail addr = webmaster.qq.com
serial = 1330914143
refresh = 3600
retry = 300
expire = 86400
minimum = 300
ttl = 296
ADDITIONAL RECORDS:
------------
dig
語法
dig @server name type
解析IP地址
dig
通常不帶參數地用於獲取提供的DNS名稱的IP地址。默認使用系統提供的DNS服務器用於DNS解析。
dig www.qq.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> www.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40004
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.qq.com. IN A
;; ANSWER SECTION:
www.qq.com. 132 IN CNAME ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net. 60 IN A 109.244.236.76
ins-r23tsuuf.ias.tencent-cloud.net. 60 IN A 109.244.236.65
;; Query time: 11 msec
;; SERVER: 183.60.83.19#53(183.60.83.19)
;; WHEN: Tue Jun 22 21:39:33 CST 2021
;; MSG SIZE rcvd: 108
dig命令輸出包括以下部分:
HEADER
:顯示dig命令的版本號、dig命令使用的全局選項,以及一些附加的Header信息。QUESTION SECTION
:顯示dig像DNSserver發出的請求。即你請求的域名。這裡使用dig命令獲取qq.com
使用的默認類型(A記錄)ANSWER SECTION
:顯示從DNS接收到的應答。將顯示qq.com
的A記錄ADDITIONAL SECTION
:顯示ADDITIONAL SECTION
中列出的DNS服務器的ip地址。- 底部的Stats部分顯示一些dig命令統計信息,包括執行此查詢所用的時間
僅顯示應答部分
在大多數情況下,我們只需要查看dig的 ANSWER SECTION
。可以僅打印該部分。
+nocomments
不顯示注釋行+noauthority
不顯示authority
部分+noadditional
不顯示additional
部分+nostats
不顯示統計信息stats
+noanswer
關掉ANSWER
部分,這裡一般為想要的結果
dig www.qq.com \
+nocomments \
+noquestion \
+noauthority \
+noadditional \
+nostats
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> www.qq.com +nocomments +noquestion +noauthority +noadditional +nostats
;; global options: +cmd
www.qq.com. 180 IN CNAME ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net. 31 IN A 109.244.236.65
ins-r23tsuuf.ias.tencent-cloud.net. 31 IN A 109.244.236.76
也可以使用 +noal
禁用所有不需要的部分,當然也會關掉 answer
,然後+answer
只顯示 answer
部分,這樣看起來簡潔些。
dig www.qq.com \
+noall \
+answer
查詢MX記錄
將MX作為參數,可以查詢mx記錄,可以使用 -t
增加類型
dig qq.com MX +noall +answer
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> qq.com MX +noall +answer
;; global options: +cmd
qq.com. 4969 IN MX 10 mx3.qq.com.
qq.com. 4969 IN MX 20 mx2.qq.com.
qq.com. 4969 IN MX 30 mx1.qq.com.
查詢NS記錄
dig qq.com NS +noall +answer
查詢所有記錄
查看所有記錄類型(A、MX、NS等),可以使用ANY作為類型。
dig qq.com ANY +noall +answer
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> qq.com ANY +noall +answer
;; global options: +cmd
qq.com. 83 IN A 183.3.226.35
qq.com. 83 IN A 203.205.254.157
qq.com. 83 IN A 123.151.137.18
qq.com. 83 IN A 61.129.7.47
僅查看記錄的IP
有些場景下,僅需要域名的ip地址(即a記錄),可以使用 +short
選項。
dig qq.com +short
123.151.137.18
203.205.254.157
183.3.226.35
61.129.7.47
+short
也可指定類型
dig qq.com a +short
111.30.144.71
112.53.26.232
dig qq.com mx +short
10 mx3.qq.com.
20 mx2.qq.com.
30 mx1.qq.com.
反向查找
可以使用dig-x
進行ip地址反向查找DNS,場景:如果只有一個外部ip地址,並且希望知道屬於它的網站時。當然過了CDN的域名,只會顯示對應CNAME
dig -x 203.205.254.157 +short
使用指定DNS來進行查詢
默認情況下,dig 使用 /etc/resolv.conf
文件中定義的DNS。如果要使用其他DNS執行查詢,使用 @dnsserver
。
dig @8.8.8.8 www.qq.com +short
ins-r23tsuuf.ias.tencent-cloud.net.
109.244.236.76
109.244.236.65
批量查詢
進行批量查詢時可以不用通過shell循環查詢了,dig提供了批量查詢的功能。使用dig -f
從文件內進行批量DNS查詢。
echo www.qq.com > dns.txt
echo www.baidu.com >> dns.txt
dig -f dns.txt +noall +answer
www.baidu.com. 678 IN CNAME www.a.shifen.com.
www.a.shifen.com. 106 IN A 14.215.177.39
www.a.shifen.com. 106 IN A 14.215.177.38
www.qq.com. 60 IN CNAME ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net. 60 IN A 109.244.236.65
ins-r23tsuuf.ias.tencent-cloud.net. 60 IN A 109.244.236.76
也可以在命令行直接根多個域名即可,這樣查詢結果相比於shell循環查詢會簡潔很多。
dig qq.com mx +noall +answer baidu.org ns +noall +answer
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> qq.com mx +noall +answer baidu.org ns +noall +answer
;; global options: +cmd
qq.com. 4223 IN MX 10 mx3.qq.com.
qq.com. 4223 IN MX 20 mx2.qq.com.
qq.com. 4223 IN MX 30 mx1.qq.com.
baidu.org. 300 IN NS ns4.brandshelter.net.
baidu.org. 300 IN NS ns3.brandshelter.info.
baidu.org. 300 IN NS ns2.brandshelter.de.
baidu.org. 300 IN NS ns5.brandshelter.us.
baidu.org. 300 IN NS ns1.brandshelter.com.
設置dig默認選項
如別名 alias
一樣,在查詢中不想輸入過多的 +noall +answer
之類,可以在 $HOME/.digrc
設置dig 的默認參數,這樣只需和平時一樣使用 dig domain
即可。
cat <<EOF >${HOME}/.digrc
+noall +answer
EOF
dig www.qq.com
www.qq.com. 247 IN CNAME ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net. 67 IN A 109.244.236.76
ins-r23tsuuf.ias.tencent-cloud.net. 67 IN A 109.244.236.6
wget & curl
wget
用於從web下載文件的命令行程序。wget,可以使用 HTTP
、HTTPS
和 FTP
協議下載文件。wget還允許下載多個文件、斷點續傳、限速、遞歸下載、後台下載、鏡像網站等等。
curl
是Linux命令行工具,可以使用任何可支持的協議(如HTTP、FTP、IMAP、POP3、SCP、SFTP、SMTP、TFTP、TELNET、LDAP或FILE)在服務器之間傳輸數據。
在Linux下,curl是由 libcurl
提供驅動封裝的cli客戶端,在 libcurl
驅動下,curl可以一次傳輸多個文件。而PHP中的cURL函數,也是基於libcurl驅動的。
各系統下的安裝
- Ubuntu/Debian:
curl
|wget
;apt install curl
|apt install wget
- Centos/Fedora:
curl
|wget
;yum install -y curl
|yum install -y wget
- Apline:
curl
|wget
;apk add --no-cache curl
|apk add --no-cache wget
curl
cURL常用參數
參數 | 說明 |
---|---|
-i | 默認隱藏響應頭,此選項打印響應頭與 |
-I/–head | 僅顯示響應頭 |
-o | 將相應內容保存指定路徑下 |
-O | 將相應內容保存在當前工作目錄下 |
-C | 斷點續傳,在 crtl + c終端後,可以從中斷後部分開始 |
-v | 顯示請求頭與響應頭 |
-x | 使用代理 |
-X | 指定請求方法,POST GET PUT DELETE等 |
-d | 如GET/POST/PUT/DELETE 需要傳的表單參數,如JSON格式 |
-u username:password | 當使用ftp有用戶名可以使用-u,ftp允許匿名用戶訪問可以忽略 |
–-limit-rate 2000B | 限速 |
-T/–upload-file <file> | 上傳一個文件 |
-c/–cookie-jar <file name> | 將cookie下載到文件內 |
-k/–insecure | 允許執行不安全的ssl連接,即調過SSL檢測 |
--header 'Host: targetapplication.com' |
使用請求頭 |
-L/–location | 接受服務端redirect的請求 |
-F | 上傳二進制文件 |
限制下載速率
curl --limit-rate 100K //yourdomain.com/yourfile.tar.gz -O
使用代理訪問
curl --proxy yourproxy:port //yoururl.com
限速訪問
curl www.baidu.com --limit-rate 1k
存儲cookie和使用cookie
[root@VM-0-2-centos ~]# curl --cookie-jar cnncookies.txt //www.baidu.com/index.html -O -s -v
* About to connect() to www.baidu.com port 443 (#0)
* Trying 14.215.177.39...
* Connected to www.baidu.com (14.215.177.39) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
* start date: Apr 02 07:04:58 2020 GMT
* expire date: Jul 26 05:31:02 2021 GMT
* common name: baidu.com
* issuer: CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
> GET /index.html HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Wed, 26 May 2021 12:14:41 GMT
< Etag: "58860402-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
* Added cookie BDORZ="27315" for domain baidu.com, path /, expire 1622117681
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
{ [data not shown]
* Connection #0 to host www.baidu.com left intact
# Netscape HTTP Cookie File
# //curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.baidu.com TRUE / FALSE 1622117681 BDORZ 27315
[root@VM-0-2-centos ~]# curl --cookie cnncookies.txt //www.baidu.com -s -v -o /dev/null
* About to connect() to www.baidu.com port 443 (#0)
* Trying 14.215.177.39...
* Connected to www.baidu.com (14.215.177.39) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
* start date: Apr 02 07:04:58 2020 GMT
* expire date: Jul 26 05:31:02 2021 GMT
* common name: baidu.com
* issuer: CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
> Cookie: BDORZ=27315
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Wed, 26 May 2021 12:23:27 GMT
< Etag: "58860402-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
* Replaced cookie BDORZ="27315" for domain baidu.com, path /, expire 1622118207
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/ # 這裡可以看到設置的cookie
<
{ [data not shown]
* Connection #0 to host www.baidu.com left intact
使用代理
curl -x socks5://127.0.0.1:10808 //www.google.com
使用application/x-www-form-urlencoded表單類型
這裡使用的為application/x-www-form-urlencoded
curl -d "option=value&something=anothervalue" -X POST //{hostname}/
使用json格式作為body
curl -H "Content-Type: application/json" -X POST //host.com/ \
-d '
{
"option": "value",
"something": "anothervalue"
}'
使用curl 上傳文件
curl {host}/api/v1/upimg -F "file=@/Users/fungleo/Downloads/401.png" \
-H "token: 222" \
-v
也可以指定MIME
類型。如:
curl -F '[email protected];type=image/png' //{host}/api/v1/upimg
curl輸出的格式變量
curl -w參數提供了一些格式變量,可以達到緊緊獲取某些數據
僅獲取http狀態碼
curl -w %{http_code} www.baidu.com -o /dev/null -s
獲取整個請求的時間
獲取整個請求的耗時,單位秒,顯示單位 毫秒
curl -w %{time_total} www.baidu.com -o /dev/null -s
獲取域名解析時間
curl -w %{time_namelookup} www.baidu.com -o /dev/null -s
獲取TCP連接耗時
curl -w %{time_connect} www.baidu.com -o /dev/null -s
獲取SSL/SSH握手到遠程主機耗時
curl -w %{time_appconnect} //www.baidu.com -o /dev/null -s -v
獲取所有重定向的耗時
這裡是從查找、連接、傳輸整個事務的完成到開始傳送數據之前的耗時
curl -w %{time_redirect} www.baidu.com -o /dev/null -s
獲得下載的總位元組數
這裡是http相應的body長度,而不是加上頭部的大小
curl -w %{size_download} www.baidu.com -o /dev/null -s
[root@VM-0-2-centos ~]# curl -w %{size_download} www.baidu.com -o /dev/null -s
2381
[root@VM-0-2-centos ~]# cwww.baidu.com -s|wc l -s
2 159 2381
獲得請求體送位元組數
curl -w %{size_request} www.baidu.com -o /dev/null -s
獲得傳輸中的連接數
curl -w %{num_connects} www.baidu.com -o /dev/null -s
獲得重定向次數
curl -w %{num_redirects} www.360buy.com -o /dev/null -s -L
獲得SSL驗證結果
0 表示是成功的
curl -w %{ssl_verify_result} //www.baidu.com -o /dev/null -s -L
獲得重定向的地址
當沒有指定-L
時,會返回被重定向後的地址
curl -w %{redirect_url} //www.360buy.com -o /dev/null -s
獲得上傳和下載速度
curl -w %{speed_download} //www.360buy.com -o /dev/null -s
curl -w %{speed_upload} //www.360buy.com -o /dev/null -s
根據自己需要拼接特定格式
curl -w "總共請求時長:%{time_total}\n總跳轉次數:%{num_redirects}\n" \
www.360buy.com \
-o /dev/null -s \
-L
總共請求時長:1.338
總跳轉次數:3
wget
簡單使用
使用wget最簡單的方法是為它提供通過HTTP下載的文件的位置。如,下載文件。
wget //website.com/files/file.zip
該操作會將文件下載到工作目錄中。
下載文件並保存為指定名稱
wget –O [file_name] [URL]
將文件下載到指定目錄
默認情況下,wget下載的文件保存在用戶所在工作目錄中。使用 –P
可以將文件保存到指定路徑。
wget –P [wanted_directory] [URL]
設置下載速度
在下載時可以設置下載時最大使用帶寬,這樣就不會使用主機全部的可用帶寬。下載速度以 k
和 m
定義單位。
wget --limit-rate [wanted_speed] [URL]
wget --limit-rate 1m //us.download.nvidia.com/tesla/396.37/nvidia-diag-driver-local-repo-ubuntu1710-396.37_1.0-1_amd64.deb
斷點續傳
如果在下載時取消,wget提供了可以在中斷前停止的地方繼續下載。當下載文件時連接丟失時,這個非常有用。
wget –c [URL]
下載多個文件
wget也提供了下載多個文件的方法:
方法1:將需要下載的文件地址保存在文件中 使用 -i
指定文件,每個URL 單獨佔一行
wget –i [file_name]
下載網頁(網站鏡像)
使用 –m
下載URL中包含的所有連接,結果會保存為一個文件夾
wget –m [URL]
FTP下載
wget也可以下載FTP文件,當需要認證時,可以指定FTP的用戶名和密碼,然後接FTP地址:
wget --ftp-user=[ftp_username] --ftp-password=[ftp_password] ftp://...
後台下載
當下載文件很大時,wget也支持後台下載文件,在網絡不穩定命令行斷開時很實用。
wget –b [URL]
可以使用命令 tail –f wget –log
來檢查下載狀態
中斷重試次數
當網絡中斷後,wget也支持設置在網絡中斷後嘗試下載文件的次數:
wget --tries=[number_of_tries] [URL]
忽略證書驗證
默認情況下,wget會驗證服務端SSL/TLS證書是否有效。如果識別到無效的證書,它將拒絕下載。當在訪問自簽名證書時,可以使用--no-check-certificate
忽略驗證
wget --no-check-certificate [URL]
自定義User-Agent
當服務端阻止了特定的 User-Agent
時,可以進行自定義 User-Agent
設置。
wget --user-agent=」User Agent Here」 「[URL]」
實用技巧-下載內容到標準輸出stdout
如在下載一個tar包時,一般都是wget 後 在tar 解壓到對應目錄,可以使用 -O -
將其下載到標準輸出,-q
靜默方式,通過管道直接解壓到對應的路徑下。
wget -q -O - "//wordpress.org/latest.tar.gz" | tar -xzf - -C /var/www
netstat & ss
netstat
(network statistics) 命令行工具,用於監視傳入和傳出的網絡連接,以及查看路由表、接口統計等。netstat在所有類似Unix的操作系統上都可用,在Windows操作系統上也可用,是最基本的網絡服務調試工具。
ss
(socket statistics) 命令行工具,用於在Linux系統上顯示與網絡套接字相關的信息。
不過,現在netstat
命令早已被棄用,取而代之的是 iproute
套件中的 ss
。ss比起 netstat
,ss
能夠顯示有關網絡連接的詳細信息,並且速度更快。netstat
從 /proc
文件收集信息,當有大量連接要打印時,netstat
效率很低。而ss
是直接從內核空間獲取信息。並且ss
命令在使用起來與netstat
非常相似,用戶幾乎可以無縫切換。
各系統下的安裝
ss
Ubuntu/Debian:
iproute2
;apt install iproute2
Centos/Fedora:
iproute
;yum install -y iproute
Apline:
iproute
;apk add --no-cache iproute
netstat
Ubuntu/Debian:
net-tools
;apt install net-tools
Centos/Fedora:
net-tools
;yum install -y net-tools
Apline:
net-tools
;apk add --no-cache net-tools
ss
查看所有連接
沒有任何選項的ss命令只列出所有連接。
查看Listening 與 Non-listening Ports
ss -a
查看監聽 套接字列表
這裡列出所有監聽套接字,不關其是服務監聽還是客戶端請求佔用
ss -l
查看所有TCP連接
這裡只所有的tcp連接, 包含客戶端與服務端
ss -t
查看所有監聽類型的tcp連接
ss -lt
查看所有udp連接
ss -ua
查看監聽類型的UDP連接
ss -lu
顯示socket的pid進程id
ss -p
顯示連接摘要信息
ss -s
顯示ipv6或ipv4 連接
ss -4
ss -6
篩選連接
語法
ss [ OPTIONS ] [ STATE-FILTER ] [ ADDRESS-FILTER ]
ss命令還提供了篩選方法,過濾套接字端口或地址。例如,要顯示具有ssh服務的源端口與目標端口(即監聽與客戶端連接)。
ss -at '( dport = :22 or sport = :22 )'
也可以通過服務名稱進行過濾
ss -at '( dport = :ssh or sport = :ssh )'
僅顯示所有處於 established
狀態的Ipv4 tcp套接字。
ss -t4 state established -n
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 172.16.0.2:22 61.50.248.5:22005
0 0 172.16.0.2:42930 169.254.0.55:5574
0 0 172.16.0.2:22 61.50.248.5:22008
0 0 172.16.0.2:22 61.50.248.5:22003
0 0 172.16.0.2:40652 94.130.12.30:443
0 36 172.16.0.2:22 61.50.248.5:22012
0 0 172.16.0.2:22 61.50.248.5:22004
列出狀態為time wait的套接字
ss -t4 state time-wait -n
這裡狀態可以為下面的任意一種
- established
- syn-sent
- syn-recv
- fin-wait-1
- fin-wait-2
- time-wait
- closed
- close-wait
- last-ack
- closing
- all 上面所有狀態
- connected 除listen和closed之外的所有狀態
- synchronized 除syn-sent之外的所有連接狀態
- 顯示狀態,這些被維護為mini sockets,即
time-wait
與syn-recv
- big 與bucket選項相反
過濾地址
ss -nt dst 74.125.236.178
還可以過濾網段
ss -nt dst 74.125.236.178/16
ip和端口的組合
ss -nt dst 74.125.236.178:80
源地址為127.0.0.1,且源端口大於5000
ss -nt src 127.0.0.1 sport gt :5000
源端口為25的smtp套接字
ss -ntlp sport eq :smtp
端口號大於25
ss -nt sport gt :1024
遠程端口小於100的套接字
ss -nt dport \< :100
連接到遠程80端口的
ss -nt state connected dport = :80
不解析主機名
可以通過 -n
選項阻止ss 將ip解析為主機名,來達到更快地獲得輸出,但這也無法進行到端口號的解析。
ss -at '( dport = :22 or sport = :22 )'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:*
ESTAB 0 0 172.16.0.2:ssh 111.206.214.55:49374
ESTAB 0 0 172.16.0.2:ssh 61.50.248.5:optohost005
ESTAB 0 36 172.16.0.2:ssh 61.50.248.5:22008
ESTAB 0 0 172.16.0.2:ssh 61.50.248.5:optohost003
ESTAB 0 0 172.16.0.2:ssh 61.50.248.5:optohost004
LISTEN 0 128 [::]:ssh [::]:*
ss -at '( dport = :22 or sport = :22 )' -n
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
ESTAB 0 0 172.16.0.2:22 111.206.214.55:49374
ESTAB 0 0 172.16.0.2:22 61.50.248.5:22005
ESTAB 0 36 172.16.0.2:22 61.50.248.5:22008
ESTAB 0 0 172.16.0.2:22 61.50.248.5:22003
ESTAB 0 0 172.16.0.2:22 61.50.248.5:22004
LISTEN 0 128 [::]:22 [::]:*
僅顯示監聽套接字
ss -ltn
要列出所有偵聽的udp連接,請將t替換為u
ss -lun
顯示時間信息
可以使用 -o
選項,來獲得每個連接的時間信息。通過timer得知
ss -tn -o
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 172.16.0.2:22 61.50.248.5:22005 timer:(keepalive,40min,0)
ESTAB 0 0 172.16.0.2:42930 169.254.0.55:5574
ESTAB 0 0 172.16.0.2:22 61.50.248.5:22008 timer:(keepalive,64min,0)
ESTAB 0 0 172.16.0.2:44900 169.254.0.55:80 timer:(keepalive,13sec,0)
ESTAB 0 0 172.16.0.2:22 61.50.248.5:22003 timer:(keepalive,40min,0)
ESTAB 0 36 172.16.0.2:22 61.50.248.5:22012 timer:(on,347ms,0)
ESTAB 0 0 172.16.0.2:39316 94.130.12.30:443 timer:(keepalive,50sec,0)
ESTAB 0 0 172.16.0.2:22 61.50.248.5:22004 timer:(keepalive,40min,0)
netstat
- 列出所有tcp與udp的連接的所有端口
netstat -a
- 僅列出tcp (Transmission Control Protocol) 端口的連接
netstat -at
- 僅列出udp (User Datagram Protocol ) 端口的連接
netstat -au
- 列出所有活動監聽端口連接
netstat -l
- 列出TCP監聽端口
netstat -lt
- 列出udp監聽端口
netstat -lu
- 列出unix socket 監聽端口
netstat -lx
- 顯示統計信息
netstat -s
- 顯示tcp的統計信息
netstat -st
- 顯示udp的統計信息
netstat -su
- 顯示服務名與PID號
netstat -tp
- 顯示混雜模式,類似
watch
每5s 刷新netstat -ac 5 | grep tcp
- 顯示內核路由表,類似
route -n
命令;netstat -r
- 顯示網絡接口數據包事務,包括傳輸和接收MTU大小的數據包。
netstat -i
- 顯示內核接口表,類似
ifconfig
命令。netstat -ie
- 顯示IPv4和IPv6的廣播信息。
netstat -g
- 混雜模式,間隔時間打印netstat命令的信息
netstat -c [second] -ltnp
- 顯示原始網絡信息統計
netstat --statistics --raw
lsof
lsof (LiSt Open Files),主要用來找出哪個進程打開了哪些文件。眾所周知,Linux是一個基於文件的操作系統(管道、套接字、目錄、設備等)。使用lsof也可以排查一些網絡問題。如未關閉的文件不能被移動或刪除,網絡端口使用的文件等,都可以通過lsof快速定位。
各系統下的安裝
- Ubuntu/Debian:
lsof
;apt install lsof
- Centos/Fedora:
lsof
;yum install -y lsof
- Apline:
lsof
;apk add lsof --no-cache
列出所有打開的文件
不帶任何參數的情況下運行lsof,可以列出所有打開的文件
lsof
列出用戶進程使用的文件
lsof 可以查看特定用戶進程使用的哪些文件,使用-u
lsof -u root
根據網絡地址查找文件
lsof -i 4
按照程序名稱列出所打卡的文件
這裡不必使用完整的程序名,會列出所有以 name開頭的進程應用使用的文件
lsof -u nginx
列出進程使用的文件
使用 -p [pid]
k可以顯示進程打開的文件,可以通過 ^
來排除特定的PID。
lsof -p [pid]
lsof -p [^pid]
找到使用文件的進程
使用 -t
餐食可以找到哪些進程使用了該文件
lsof -t [file_name]
列出目錄中所有打開的文件
+D
餐食可以對目錄的所有打開實例(包括它包含的所有文件和目錄)進行搜索。
lsof +D [dir]
列出網絡文件
-i
偵聽特定端口號的進程或應用程序,如檢查了哪個程序進程正在使用端口80。
lsof -i:80
還可以根據端口範圍進程查找
lsof -i:1-1024
根據網絡連接類型來查找文件
lsof還可以根據連接的類型列出文件。例如,TCP使用的文件
lsof -i tcp
拿到進程的父進程ID
lsof -R
可以拿到進程的父進程IP輸出中列出父進程標識(PPID Parent Process IDentification)。
lsof -p [] -R
查看用戶的網絡連接
結合使用 -i
和 -u
命令行選項,我們可以搜索Linux用戶的所有網絡連接。可以按照需要檢查一個被黑客攻擊的系統,如我們檢查用戶root的所有網絡活動:
lsof -a -i -u root
列出所有內存映射文件
lsof -d mem
route
在Linux中,route命令用於處理IP/內核路由表。主要用於通過網絡接口建立到主機/IP的靜態路由。它用於顯示或更新IP/內核路由表。
各系統下的安裝
- Ubuntu/Debian:
net-tools
;apt install net-tools
- Centos/Fedora:
net-tools
;yum install -y net-tools
- Apline:
net-tools
;apk add net-tools --no-cache
route命令不加任何參數,默認情況下將顯示內核路由表條目的詳細信息。當包在這個路由IP範圍內發送時,通過ARP協議找到目的地的MAC地址,包將被發送到MAC地址。
當在路由條目中找不到對應的路由信息,數據包將被轉發到默認網關,該網關決定該數據包的進一步路由。
route命令不加參數,會在輸出時顯示為主機名,這時解析會影響性能。可以使用 -n
選項請求不顯示主機名。
route -n
添加默認網關
可以使用 route add
命令添加一個默認網關。
route add default gw 10.0.0.1
添加一條路由
這裡添加一條,將通過10.0.0.0/24的流量由eth0設備通過 添加一條路由,如下所示。
route add -net 10.0.0.0 netmask 255.255.255.0 dev eth0
-net 目標網絡
dev 將規則和設備關聯在一起
添加一個目標主機
route add -host 12.123.0.10 gw 192.168.1.1 enp0s3
列出內核路由表信息
內核維護了路由緩存以更快地路由數據包。可以使用 -C
來打印內核的路由緩存信息。
route -Cn
Kernel IP routing cache
Source Destination Gateway Flags Metric Ref Use Iface
10.0.0.4 10.0.0.1 10.0.0.1 0 1 0 eth0
10.0.0.1 10.0.0.4 10.0.0.4 il 0 0 44 lo
10.0.0.1 10.0.0.255 10.0.0.255 ibl 0 0 7 lo
拒絕路由到特定的主機
有些場景下,可能需要拒絕數據包路由到特定的主機/網絡。
route add -host 192.168.1.51 reject
可以看到路由已經不會路由該流量了
ping 10.0.0.2
connect: No route to host
如果需要拒絕整個網絡可以這樣
route add -net 192.168.1.0 netmask 255.255.255.0 reject
刪除一條路由
# 刪除默認路由
route del default
# 刪除剛才添加的拒絕路由
route del -host 10.0.0.2 reject
ncat & netcat(nc) & nmap
netcat
netcat(簡稱nc)是一款功能強大的網絡命令行工具,用於在Linux中執行與TCP、UDP或UNIX域套接字相關的任何操作。netcat可以用於端口掃描、端口重定向,作為端口監聽器(用於傳入連接);它還可以用來打開遠程連接和其他許多事情。此外,還可以將其用作訪問目標服務器的後門。netcat還因此被稱為TCP/IP的「瑞士軍刀」。
各系統下的安裝
- Ubuntu/Debian:
netcat
;apt install netcat
- Centos/Fedora:
nc
;yum install -y nc
- Apline:
netcat-openbsd
;apk add --no-cache netcat-openbsd
端口掃描
netcat可以用於端口掃描:了解哪些端口是開放的,並且在目標機器上運行服務。它可以掃描單一或多個開防的端口。如示例,-z
選項將nc設置為只掃描監聽守護進程,而不實際向它們發送任何數據。-v
選項啟用詳細模式,-w
為無法建立連接時超時時間。
nc -v -w 10 -z 195.133.11.43 22
Ncat: Version 7.50 ( //nmap.org/ncat )
Ncat: Connected to 195.133.11.43:22.
Ncat: 0 bytes sent, 0 bytes received in 0.25 seconds.
也可以掃描一個範圍
nc -v -n -z -w 1 127.0.0.1 1-1000
在服務器間傳送文件
netcat可以在兩台服務器之間傳輸文件,這兩個系統都必須安裝nc。例如,要將ISO映像文件從一台計算機複製到另一台計算機並監視傳輸進度(使用pv),請在發送方/接收端上運行以下命令。
將以netcat
的監聽模式 -l
。
tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso | pv | nc -l -p 3000 -q 5
在接受端運行命令
nc 192.168.1.4 3000 | pv | tar -zxf -
使用netcat實現一個命令行聊天服務器
可以使 netcat
創建一個簡單的命令行消息服務器,前提條件是nc必須安裝在兩個系統上。在服務端,運行命令來創建監聽端口5555的聊天服務器。
nc -l -vv -p 5000
在客戶端上,運行命令連接到服務端進行聊天會話。
nc {ip} 5000
使用nc創建一個web服務器
使用nc -l
選項可以創建一個基礎的不安全的web服務器,需要一個靜態html文件。然後可以通過 while
保持netcat命令不退出。正常情況下,netcat在連接斷開時退出。
while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat 1.html; ) | nc -l -p 8080 ; done
[root@vm207694 ~]# while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat 1.html; ) | nc -l -p 8080 ; done
GET / HTTP/1.1
Host: ip:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6
網絡故障排查
netcat 主要常用的一個方面時排查網絡連接故障,可以使用 netcat
來驗證服務器正在發送哪些數據以響應客戶端發出的命令。
使用命令的可以輸出包括web服務器發送的標頭,這些標頭可用於故障排除。也可以使用 curl
等命令進行同樣的操作。
printf "GET / HTTP/1.0\r\n\r\n" | nc baidu.com 80
HTTP/1.1 200 OK
Date: Mon, 28 Jun 2021 12:16:55 GMT
Server: Apache
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-47cf7e6ee8400"
Accept-Ranges: bytes
Content-Length: 81
Cache-Control: max-age=86400
Expires: Tue, 29 Jun 2021 12:16:55 GMT
Connection: Close
Content-Type: text/html
<html>
<meta http-equiv="refresh" content="0;url=//www.baidu.com/">
</html>
查找端口上運行的服務
使用 netcat
可以獲取服務監聽端口的信息,單一般情況下,僅常見公共服務會這樣,一些服務並不會相應對應的應用名稱。。-n
標誌表示禁用DNS或服務查找。
nc -v -n 195.133.11.43 22
Ncat: Version 7.50 ( //nmap.org/ncat )
Ncat: Connected to 195.133.11.43:22.
SSH-2.0-OpenSSH_7.4
網絡後門
一般情況下,黑客將 netcat
當作網絡後門來運行,通過反彈式shell以獲取遠程命令。要充當後門。-e
在目標系統上運行的命令。
如監聽一個端口,並將所有傳入的輸入傳遞給bash命令,結果將傳送於客戶端。
# linux
nc -l -p -v 3001 -e /bin/bash
# windows
nc -l -p 3001 -e cmd.exe
檢查一個udp端口
-z
:無法進行I/O
,僅報告連接狀態
-u
:使用udp協議
nc -vz -u
tcpdump
tcpdump網絡嗅探器,將強大和簡單結合到一個單一的命令行界面中,能夠將網絡中的報文抓取,輸出到屏幕或者記錄到文件中。
各系統下的安裝
- Ubuntu/Debian:
tcpdump
;apt-get install -y tcpdump
- Centos/Fedora:
tcpdump
;yum install -y tcpdump
- Apline:
tcpdump
;apk add tcpdump --no-cache
查看指定接口上的所有通訊
語法
參數 | 說明 |
---|---|
-i [interface] | |
-w [flle] | 第一個n表示將地址解析為數字格式而不是主機名,第二個N表示將端口解析為數字格式而不是服務名 |
-nn | |
-X | hex and ASCII |
-A | ASCII |
-XX | |
-v | 詳細信息 |
-r | 讀取文件而不是實時抓包 |
關鍵字 | |
type | host、net、port、portrange |
direction | src、dst、src or dst 、src and ds |
protocol | ether、ip,arp、tcp、udp、wlan |
捕獲所有網絡接口
tcpdump -D
按IP查找流量
最常見的查詢之一 host
,可以看到來往於 1.1.1.1
的流量。
tcpdump host 1.1.1.1
按源/目的 地址過濾
如果只想查看來自/向某方向流量,可以使用 src
和 dst
。
tcpdump src|dst 1.1.1.1
通過網絡查找數據包
使用 net
選項,來要查找出/入某個網絡或子網的數據包。
tcpdump net 1.2.3.0/24
使用十六進制輸出數據包內容
hex
可以以16進制輸出包的內容
tcpdump -c 1 -X icmp
查看特定端口的流量
使用 port
選項來查找特定的端口流量。
tcpdump port 3389
tcpdump src port 1025
查找端口範圍的流量
tcpdump portrange 21-23
過濾包的大小
如果需要查找特定大小的數據包,可以使用以下選項。你可以使用 less
,greater
。
tcpdump less 32
tcpdump greater 64
tcpdump <= 128
捕獲流量輸出為文件
-w
可以將數據包捕獲保存到一個文件中以便將來進行分析。這些文件稱為PCAP
(PEE-cap)文件,它們可以由不同的工具處理,包括 Wireshark
。
tcpdump port 80 -w capture_file
組合條件
tcpdump也可以結合邏輯運算符進行組合條件查詢
-
AND
and
or&&
-
OR
or
or||
-
EXCEPT
not
or!
tcpdump -i eth0 -nn host 220.181.57.216 and 10.0.0.1 # 主機之間的通訊
tcpdump -i eth0 -nn host 220.181.57.216 or 10.0.0.1
# 獲取10.0.0.1與 10.0.0.9或 10.0.0.1 與10.0.0.3之間的通訊
tcpdump -i eth0 -nn host 10.0.0.1 and \(10.0.0.9 or 10.0.0.3\)
原始輸出
並顯示人類可讀的內容進行輸出包(不包含內容)。
tcpdump -ttnnvvS -i eth0
IP到端口
讓我們查找從某個IP到端口任何主機的某個端口所有流量。
tcpdump -nnvvS src 10.5.2.3 and dst port 3389
去除特定流量
可以將指定的流量排除,如這顯示所有到192.168.0.2的 非ICMP的流量。
tcpdump dst 192.168.0.2 and src net and not icmp
來自非指定端口的流量,如,顯示來自不是SSH流量的主機的所有流量。
tcpdump -vv src mars and not dst port 22
選項分組
在構建複雜查詢時,必須使用單引號 '
。單引號用於忽略特殊符號 ()
,以便於使用其他表達式(如host、port、net等)進行分組。
tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'
過濾TCP標記位
TCP RST
The filters below find these various packets because tcp[13] looks at offset 13 in the TCP header, the number represents the location within the byte, and the !=0 means that the flag in question is set to 1, i.e. it』s on.
tcpdump 'tcp[13] & 4!=0'
tcpdump 'tcp[tcpflags] == tcp-rst'
TCP SYN
tcpdump 'tcp[13] & 2!=0'
tcpdump 'tcp[tcpflags] == tcp-syn'
同時忽略SYN和ACK標誌的數據包
tcpdump 'tcp[13]=18'
TCP URG
tcpdump 'tcp[13] & 32!=0'
tcpdump 'tcp[tcpflags] == tcp-urg'
TCP ACK
tcpdump 'tcp[13] & 16!=0'
tcpdump 'tcp[tcpflags] == tcp-ack'
TCP PSH
tcpdump 'tcp[13] & 8!=0'
tcpdump 'tcp[tcpflags] == tcp-push'
TCP FIN
tcpdump 'tcp[13] & 1!=0'
tcpdump 'tcp[tcpflags] == tcp-fin'
查找http包
查找 user-agent
信息
tcpdump -vvAls0 | grep 'User-Agent:'
查找只是 GET
請求的流量
tcpdump -vvAls0 | grep 'GET'
查找http客戶端IP
tcpdump -vvAls0 | grep 'Host:'
查詢客戶端cookie
tcpdump -vvAls0 | grep 'Set-Cookie|Host:|Cookie:'
查找DNS流量
tcpdump -vvAs0 port 53
查找對應流量的明文密碼
tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -lA | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd= |password=|pass:|user:|username:|password:|login:|pass |user '
Reference://danielmiessler.com/study/tcpdump/#basic-communication