網絡嗅探與協議分析
0.總體結構
本次作業屬於哪個課程 | 網絡攻防實踐 |
---|---|
這個作業要求在哪里 | 網絡嗅探與協議分析 |
我在這個課程的目標是 | 學習網絡攻防相關技術和原理 |
這個作業在哪個具體方面幫助我實現目標 | 網絡嗅探和解析網絡協議來分析截獲到的信息 |
1.實踐內容
第四章的內容分為兩個部分,分別是網絡嗅探和網絡協議分析。具體分為以下幾個部分進行回顧。二者通常結合使用來分析截獲到的數據。
- 網絡嗅探:網絡嗅探基本介紹
- 網絡嗅探:原理及實現(以太網)
- 網絡嗅探:嗅探器軟件
- 網絡協議分析技術
網絡嗅探:網絡嗅探基本介紹
網絡嗅探利用計算機的網絡接口截獲目的地址為其他計算機的數據報文,以監聽數據流中所包含的私密信息。實現網絡嗅探技術的工具稱為網絡嗅探器。截獲到的是經過封包的二進制數據,通常會結合網絡協議分析技術來解析嗅探到的網絡數據。網絡嗅探是攻擊者經常使用的內網滲透技術,通常在攻擊者獲得內部網絡中的一台主機的訪問權后實施。可以靜默地、被動地嗅探網絡上傳輸的數據。所以針對網絡嗅探的檢測與防范還是比較困難的。下面介紹一些基本的檢測防范方法。
- 網絡嗅探的檢測:如檢查網卡是否運行在混雜模式下。也可以通過操作系統和協議棧對混雜模式的香型不同來判斷。
- 網絡嗅探的防范:采用安全的網絡拓撲(交換式網絡),用靜態ARP代替動態,避免明文傳輸,重視網絡集中節點的保護(路由器,交換機等)。
以太網和WiFi是有線局域網和無線局域網最流行的鏈路層協議,也是網絡嗅探的主要監聽對象。
- tcpdump支持對以太網的嗅探
- kismet支持WiFi網絡的監聽
- 以上兩種針對不同局域網的嗅探器在對數據包實際進行破解和分析的時候完全沒有區別。唯一的區別是無線嗅探器可以讀取和分析符合無線傳輸協議的數據包。
網絡嗅探器按照實現形式可以分為軟件嗅探器和硬件嗅探器:
- 硬件嗅探器通過專用網絡對網絡數據進行捕獲和分析,也稱為協議分析儀。
- 軟件嗅探器一般實現位不同操作系統類型上的應用軟件,通過對網卡進行編程實現。
網絡嗅探:原理及實現(以太網)
這一小節從以太網的工作原理到共享式網絡和交換式網絡的嗅探,最后介紹了類Unix平台和Windows平台的網絡嗅探技術的實現。
-
以太網的工作原理:以太網是共享通信信道數據以幀為單位傳輸,以太網幀頭中包括發送源的MAC地址與目標MAC地址。當站點需要發送數據時,通過協議棧進行TCP/IP封包,在數據鏈路層“裝配”幀頭與幀尾,發送至共享通信介質上。網卡驅動程序在正常模式下,只會接受目標MAC地址與自身MAC地址相匹配的數據幀。但是網卡的混雜模式將會接收一切通過它連接共享通信媒介的數據幀。
-
共享式網絡嗅探:使用集線器連接,集線器上任意一台主機都能夠嗅探整個集線器上的全部網絡流量。
-
交互式網絡嗅探:通過MAC地址映射表來發送數據。通常有以下三種方式實現嗅探
- MAC地址泛洪攻擊:向交換機發送大量含有虛構MAC地址和IP地址的數據包,使映射表溢出無法處理,交換機進入類似集線器的工作方式。
- MAC欺騙:通常用於突破基於MAC地址的局域網訪問控制。這里書上講的比較模糊,參考MAC地址欺騙
- ARP欺騙:利用IP地址與MAC地址之間進行轉換時的協議漏洞,達到MAC欺騙,這里推薦詳細參考ARP欺騙竊聽秘密及實現。
-
類Unix網絡嗅探技術實現:通過內核態的BPF和用戶態的libpcap抓包工具庫實現。BPF是數據鏈路層上的原始接口,提供原始鏈路層封包的收發功能。如果網卡處於混雜模式,將會收到網絡上所有包。libpcap與內核態BPF包嗅探與過濾機制想配合,為類Unix平台上的應用程序提供標准的網絡嗅探接口,網絡數據包的標准格式為pcap。
-
Windows網絡嗅探技術實現:Windows操作系統內核不提供標准的網絡嗅探與抓包接口。NPF是一個內核態虛擬設備驅動程序,功能是過濾數據包,將數據包原封不動傳給用戶模塊。WinPcap包括packet.dll和wpcap.dll兩層模塊的標准抓包接口。
網絡嗅探:嗅探器軟件
通常使用的網絡嗅探器軟件一般基於標准接口BPF和libpcap,最常用包括libcap抓包開發庫、tcpdump以及wireshark嗅探器軟件(類Unix平台和Windows平台)。
- libpcap抓包開發庫:libpcap開發的基本步驟是打開網絡設備、設置過濾規則、捕獲數據、關閉網絡設備。詳細內容可以參考libpcap詳解。(雖然現在已經好多一體化的敲兩個命令就完成的軟件,但是通過抓包庫開發一個自己用的仍然意義重大。)
- tcpdump:tcpdump是通用的命令行網絡嗅探器與數據包分析協議。通過
src 192.168.199.200 and tcp dst port 80
可以查看源主機向外連接的HTTP網絡流量的情況。通過tcpdump
將監視第一個網絡接口上所有流過的數據包。 - Wireshark嗅探器軟件:是一款開源數據包分析工具,主要作用是捕獲網絡數據包,對於數據包進行協議分析以盡可能顯示詳細的情況,並以更容易理解的格式呈現給用戶。
網絡協議分析技術
網絡嗅探截獲的是通過封包過程組裝的二進制格式原始報文內容,為了獲取其包含信息,要根據TCP/IP協議棧的協議規范重新還原數據包在各個協議層上的協議格式及內容。目前主要的網絡協議分析工具是wireshark。網絡協議分析的典型過程包括以下幾個步驟(找了一張高清圖):
-
網絡嗅探得到的原始數據是在鏈路層傳輸的二進制數據包。
-
對幀結構進行分析,得到幀頭各字段結構,根據幀頭字段確定網絡層的協議類型,並提取包含網絡層數據的內容。
-
進一步對IP數據包進行分析,確定傳輸層協議類型,提取傳輸層數據內容。
-
根據TCP或UDP目標端口確定確定具體的應用層協議,得到應用層特定協議的應用交互內容。
-
依據相應應用層協議對數據進行整合恢復,得到實際傳輸數據。
2.實踐過程
tcpdump
任務:利用tcpdump對在本機上訪問www.tianya.cn網站過程進行嗅探。在訪問網站首頁時,瀏覽器將訪問多少個web服務器,IP地址是什么?
Solution
訪問天涯主頁,使用命令
tcpdump -nn '(tcp[tcpflags] & tcp-syn !=0 and tcp[tcpflags] & tcp-ack!=0) and (host 192.168.3.7
解釋一下這個命令,指定IP192.168.3.7
,搜索條件是:tcp-syn !=0
和tcp-ack!=0
,即抓取syn不等於0並且ack不等於0的包。關於tcpdump還有許多指令,例如,tcpdump host tianya.cn
,tcpdump src 192.168.3.7 and tcp dst port 80
等等。可以通過tcpdump抓包實例學習更多的tcpdump指令。
通過觀察上圖,發現主要經過的Web服務器如下:
221.182.218.238
221.182.218.244
221.182.218.151
39.156.66.179
124.225.214.214
52.94.234.174
54.240.131.213
動手實踐Wireshark
任務:使用wireshark對在本機上以telnet方式登錄BBS進行嗅探與協議分析。
- BBS服務器的IP地址與端口?
- telnet協議是如何向服務器傳送你輸入的用戶名及登錄口令?
- 如何利用wireshark分析嗅探的數據包,並從中獲取用戶名及登錄口令?
Solution
首先說明一下自己遇到的坑:我的kali攻擊機對中文是亂碼的,所以我參照Kali中文亂碼安裝了中文字體等等操作,我的終端也是可以顯示中文字體的,甚至我把系統改成中文,然而進BBS還是下圖這個鬼樣子。后來經過不懈尋找,終於我發現了原來一條指令解決問題luit -encoding gbk telnet bbs.fudan.edu.cn
(指定編碼格式)。
下面開始正文:
后面的以復旦大學bbs為例。首先打開Wireshark,然后在終端輸入luit -encoding gbk telnet bbs.fudan.edu.cn
進入復旦大學bbs論壇。通過Wireshark的捕獲,我們發現其IP地址為202.120.225.9
,其端口為23
。
Telnet協議在傳輸用戶名和密碼時采用的時明文傳輸,我們通過追蹤TCP流可以看到我們的用戶名guest
。選擇下方的對話是從你的主機到復旦大學bbs,可以發現用戶名為guest
,密碼為空。
取證分析實踐
任務人為構造的到一台蜜罐主機的5次不同類型的端口掃描。
- 攻擊主機的IP地址是什么
- 網絡掃描的目標IP地址是什么
- 本次案例中是使用了哪個掃描工具發起這些端口掃描?你是如何確定的
- 你所分析的日志文件中,攻擊者使用了那種掃描方法,掃描的目標端口是什么,並描述其工作原理
- 蜜罐主機上哪些端口被發現是開放的
- 攻擊主機的操作系統是什么
Solution
攻擊主機的IP地址是什么?網絡掃描的目標IP地址是什么?本次案例中是使用了哪個掃描工具發起這些端口掃描?
- 我們可以使用snort對二進制記錄文件進行入侵檢測。首先通過
sudo apt-get install snort
安裝snort,並給予snort.conf
可讀可寫可執行權限sudo chmod 777 /etc/snort/snort.conf
,運行指令sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/listen.pcap
查詢結果如下(詳細的snort指令介紹,本文用到的-A
是開啟報警模式,-q
為不顯示狀態報告,-r
為從pcap格式的文件中讀取數據包)。 - 同時,我們也可以采用Wireshark進行分析(導入文件后打開統計中的conversations觀察)。
- 通過上面兩個軟件的分析,我們可以得到攻擊主機的IP為
172.31.4.178
,網絡掃描的目標IP是172.31.4.188
。通過snort可以看出是采用namp發起的掃描。
攻擊者的掃描方法,並描述其工作原理。
-
首先我們在Wireshark中篩選ARP,因為nmap每次探測主機活躍是在廣播域內廣播
arp request
報文,而nmap每次掃描之前都會進行主機活躍探測。我們發現第一個和第二次之間並沒有數據包,可以確定第一次是采用namp -sP
進行主機活躍探測。 -
通過觀察第二次掃描的末尾數據包,發現攻擊機針對 ssh、 TCP 和 UDP 的1端口,並使用了大量構造的標志位,以觸發不同的響應包,不難確認這些流量是由其
nmap -O
選項所觸發的。主要是進行遠程主機的操作系統探測,具體實現機制是通過構造一些特殊的數據包發送給目標主機,然后收集反饋包中存在的一些微妙"指紋"(不同操作系統網絡協議棧實現上的差異),並與一個已知操作系統"指紋"數據庫(nmap-os-fingerprints 文件)進行比較。 -
接下來觀察第三次掃描,第三次掃描的往返是13W數據包,估計掃描端口六萬多,所以應該是指定端口掃描,使用
namp -sS -p 1-65535
(猜測是全端口掃描),其中-p
指定掃描的端口數。 -
最后來觀察最后一次掃描,我們發現第四次掃描的時間都要高於之前掃描的時間,所以我們也可以猜測是
namp -sV
進行網絡服務的探測。具體來看下,我們找一個8180
端口(http)。我們發現普通的活躍性檢測就是半開掃描,SYN->SYN,ACK->RST
,但是我們觀察第四次掃描,建立了握手,並且建立了HTTP連接,說明這次掃描應該是namp -sV
無疑了。
操作系統和端口
-
首先確定端口,通過篩選
tcp.flags.syn == 1 and tcp.flags.ack == 1
,得到開放的端口有:21 22 23 25 53 80 139 445 3306 5432 8009 8180
-
確定操作系統,首先我使用
nmap -O -r listen.pcap
進行操作系統類型的探測,感覺結果不太對,所以又利用p0f -r listen.pcap
進行探測得到結果如下(首先用apt-get install p0f安裝),是Linux 2.6.X。
攻防對抗實踐
任務:攻擊方用nmap掃描,防守方用tcpdump嗅探,用wireshark分析,並分析出攻擊方的掃描目的以及每次使用的nmap命令。
說明:這里的重要的分析點已經在上述的實踐中完成, 這里僅展示一些攻擊。
- 攻擊方IP為
192.168.124.128
,用metasploitable作為嗅探IP為172.16.245.128
。 - 在metasploitable上利用指令
tcpdump -i eth0 -w dump.pcap
監聽並且保存文件為dump.pcap。 - 在kali主機上用nmap進行攻擊,包括
-sP,-sV,-sS,-O
攻擊。 - 利用
tcpdump -r dump.pcap
查看和分析,或者導出利用Wireshark進行分析查看。
2.學習中遇到的問題及解決
- 問題一:登陸bbs中文亂碼問題
- 問題一解決方案:首先從系統字體入手,發現只要更改登陸的編碼即可。
- 問題二:取證分析實踐,需要很多知識和工具,在這里浪費了很多時間
- 問題二解決方案:不斷查詢工具以及其原理
3.學習感悟、思考
- 本次作業已經對專業只是有一定的要求,自己的計算機網絡知識方面還比較薄弱,需要繼續學習。
- 一邊學習,一邊做題還是蠻痛苦的。