


Linux下以太網(wǎng)網(wǎng)絡(luò)監(jiān)聽技術(shù)研究
Linux是用戶可以免費獲得的面向網(wǎng)絡(luò)的操作系統(tǒng)由于能夠自由傳播和源代碼開放,越來越多的程序員熱衷于Linux下的網(wǎng)絡(luò)應(yīng)用程序開發(fā)。目前,大多數(shù)內(nèi)部網(wǎng)絡(luò)都接入了Internet,對網(wǎng)絡(luò)的安全管理非常重要。網(wǎng)絡(luò)監(jiān)聽可以幫助網(wǎng)絡(luò)管理員檢查網(wǎng)絡(luò)流量、網(wǎng)絡(luò)協(xié)議分析和故障檢測,同時其他網(wǎng)絡(luò)用戶也可以利用網(wǎng)絡(luò)監(jiān)聽程序非法竊取重要數(shù)據(jù),截取用戶口令。有必要分析Linux下的數(shù)據(jù)監(jiān)聽技術(shù)。
1 網(wǎng)絡(luò)監(jiān)聽的原理
Ethernet協(xié)議的工炸仿式是將要發(fā)送的數(shù)據(jù)包發(fā)往連接在一起的所有主機。在包頭中包括有應(yīng)該接收數(shù)據(jù)包的主機的正確地址,只有與數(shù)據(jù)包中目標地址一致的那臺主機才能接收到信息包。但是當主機工作在監(jiān)聽模式下,不管數(shù)據(jù)包中的目標物理地址是什么,主機都將可以接收到。
當數(shù)字信號到達一臺主機的網(wǎng)絡(luò)接口時,正常狀態(tài)下網(wǎng)絡(luò)接口對讀人數(shù)據(jù)禎進行檢查。如果數(shù)據(jù)禎中攜帶的物理地址是自己的或者物理地址是廣播地址.那么就會將數(shù)據(jù)禎交給IP層軟件,對于每個到達網(wǎng)絡(luò)接口的數(shù)據(jù)禎都要進行這個過程的.但是當主機工作在監(jiān)聽模式下的話,所有的數(shù)據(jù)禎都將被交給上層協(xié)議軟件處理。
Linux下的網(wǎng)絡(luò)監(jiān)聽技術(shù)主要有兩要點:
(1)如何盡可能完整的截取網(wǎng)絡(luò)上的數(shù)據(jù)幀因為以太網(wǎng)上每時每刻都可能有信息傳遞,且據(jù)以太網(wǎng)的規(guī)模不同網(wǎng)絡(luò)上的信息量變化也很大,所以截取數(shù)據(jù)幀不僅要保證數(shù)據(jù)幀的完整,而且還要考慮到如何才能減少漏截取數(shù)據(jù)幀。
(2)對截取的數(shù)據(jù)幀的過濾分析
將截取的數(shù)據(jù)幀翻譯為我們能使用的數(shù)據(jù),監(jiān)聽才算成功。
2 以太網(wǎng)數(shù)據(jù)幀的監(jiān)聽和過濾分析的設(shè)計
以太網(wǎng)上的數(shù)據(jù)幀主要涉及TCP/IP協(xié)議,主要是針對以下幾個協(xié)議的分析IP,ARP,RARP,ICMP,IGMP,其中重點在于IP和ARP協(xié)議,這兩個協(xié)議是多數(shù)網(wǎng)絡(luò)協(xié)議的基礎(chǔ).由于各種協(xié)議的數(shù)據(jù)幀不扣同,所以涉及各協(xié)議數(shù)據(jù)幀頭格式分析,下文將一一描述。
在Linux下監(jiān)聽網(wǎng)絡(luò),應(yīng)先設(shè)置網(wǎng)卡狀態(tài),使其處于雜混模式以便監(jiān)聽網(wǎng)絡(luò)上的所有數(shù)據(jù)幀。然后選擇用Linuxsocket來截取數(shù)據(jù)幀,通過設(shè)置socket()函數(shù)參數(shù)值,可以使socket截取未處理的網(wǎng)絡(luò)數(shù)據(jù)禎.關(guān)鍵是函數(shù)的參數(shù)設(shè)里,有關(guān)的程序部分如下:
if((fd=socket (AF_INET. SOCK_ PACKET.htons

表示截取數(shù)據(jù)幀的層次在物理層,即不作處理;Htons(0x0003)表示截取的數(shù)據(jù)幀的類型為不確定,即接受所有的包。
總的設(shè)定就是網(wǎng)卡上截取所有的數(shù)據(jù)幀,這樣就可以截取底層數(shù)據(jù)幀,因為返回的將是一個指向數(shù)據(jù)的指針.為了分析方便,本文設(shè)置了一個基本的數(shù)據(jù)幀頭結(jié)構(gòu),程序如下:

其中,ar_hrd是硬件地址的格式:ar_pro是協(xié)議地址的格式;ar_hln是硬件地址的長度;ar_ln是協(xié)議地址的長度;ar_op是arp協(xié)議的分類:0x001是arp echo:Ox0002是arpreply。接下來的分別是源地址的物理地址、源IP地址、目標地址的物理地址、目標IP地址。
Igmphdr是IP協(xié)議的icmp協(xié)議的報頭,定義其結(jié)構(gòu)如下:


arphdr是arp協(xié)議的報頭,定義其結(jié)構(gòu)如下:

u_intl6_t_unused:
u_intI6_t mtu:
}frag:
)un:
};
Linux下的TP協(xié)議中的icmp的協(xié)議,這里主要是前兩項參數(shù),其中type是icmp協(xié)議的類型,而code則是對type類型的再分析.如:type 0x03是表示。nsearchable,這時code的不同表示了不同的unsearchable:Ox00表示網(wǎng)絡(luò)不可尋:0x01表示主機不可尋;0x02表示協(xié)議不可尋;0x03表示端口不可尋;0x05表示源路由失敗;0x06表示網(wǎng)絡(luò)不可知;0x07表示主機不可知。
Igmphdr是IP協(xié)議的igmp協(xié)議報頭,定義其結(jié)構(gòu)如下:
struct igmhdr
{
_
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解