0x01 協議分析基礎
網絡安全領域的“基本功”:一切高級攻擊(漏洞利用、DDoS、滲透等)都體現為網絡流量的異常。
核心價值:
- 故障排查 : 定位網絡延遲、丟包、無法連接等問題。
- 性能優化 : 分析應用性能瓶頸。
- 安全防御 : 檢測惡意軟件、入侵行為、數據泄露等。
- 逆向工程 : 分析未知協議或應用程序的通信機制。
回顧協議棧
相同點
- 兩者都是以協議棧的概念為基礎。
- 協議棧中的協議彼此相互獨立。
- 下層為上層提供服務。
不同點
- 層次數量不同。
- OSI是一個理論模型,TCP/IP則應用于實際當中。
- OSI定義每一層做什么,但對具體如何實現不做規定,TCP/IP不僅要定義每一層的功能,還必須考慮如何實現該功能。
數據封裝
(Data Encapsulation
),籠統地講,就是把業務數據映射到某個封裝協議的凈荷中,然后填充對應協議的包頭,形成封裝協議的數據包,并完成適配。
解封裝
,就是封裝的逆過程,拆解協議包,處理包頭中的信息,取出凈荷中的業務信息
數據封裝和解封裝是一對逆過程
。
0x02 協議分析工具
Wireshark
Tcpdump
Microsoft Network Monitor
Sniffer
- 科來網絡分析系統
通常使用Wireshark
軟件
wireshark
是非常流行的網絡封包分析軟件,功能十分強大。- 可以截取各種網絡封包,顯示網絡封包的詳細信息。
wireshark
是開源軟件,并且可以運行在Windows
、Linux
和Mac OS
上。wireshark
只能查看封包,而不能修改封包的內容,或者發送封包。
下載直接去官網下載安裝即可。https://www.wireshark.org/#download
安裝過程挺簡單的,只有這一步需要注意下,選擇是使用WinPcap
還是Npcap
作為底層的封包庫。
WinPcap
和Npcap
都是Windows
系統上的數據包捕獲庫,它們是Wireshark
等網絡分析工具能夠從網卡抓取原始數據的底層驅動和API
。你可以把它們理解為Wireshark
的“引擎”。
雖然Npcap
很好,但是我還是選擇使用WinPcap
其余的都默認安裝就可以了
0x03 Wireshark功能
常用基本功能的使用
這里用張老圖來進行標識 ,這么多版本下來UI
功能界面一直也沒什么太大變化,看看就能明白什么意思,這里就不詳細寫了,找個視頻看看會更加直觀和高效。
捕獲過濾器
- 捕獲過濾器配置于抓包之前:一經應用,
Wireshark
將只會抓取經過捕獲過濾器過濾的數據(包或數據幀),其余數據均不抓取。 - 顯示過濾器配置于抓包之后:
Wireshark
先抓所有數據,Wireshark
應用顯示過濾器后, 只顯示篩選的數據。 - 兩種過濾器的配置語法并不相同。
- 抓包過濾器的配置語法派生自
libpcap/WinPcap
庫中tcpdump
的語法 - 顯示過濾器的配置語法則在若干年后定義
- 抓包過濾器的配置語法派生自
捕獲過濾器表達式范例:
iax2 dst 61.154.152.13 4569 and src 192.168.2.111Protocol(協議):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp。如果沒有特別指明是什么協議,則默認使用所有支持的協議 Direction(方向):
可能的值: src, dst, src and dst, src or dst。如果沒有特別指明來源或目的地,則默認使用 “src or dst” 作為關鍵字。Host(s):
可能的值:net, port, host, portrange。如果沒有指定此值,則默認使用“host”關鍵字。Logical Operations(邏輯運算): 可能的值:not, and, or。否(“not”)具有最高優先級,或(“or”)和與(“and”)具有相同的優先級,運算時從左至右進行。- “not tcp port 3128 and tcp port 23”與”(not tcp port 3128) and tcp port 23”相同。- “not tcp port 3128 and tcp port 23”與”not (tcp port 3128 and tcp port 23)”不同。
比如這樣就只能抓取10.1.1.88
為源IP
地址的數據包了,這個通常用于工作環境下,流量非常大的時候進行篩選數據,學習的時候其實是用的比較少的,還是使用顯示過濾器會更加多一點。
顯示過濾器
顯示過濾器表達式寫法規則
常用顯示過濾器表達式寫法
沒啥說的,挺簡單,后面慢慢更新單個協議。