這是linux下的ip協議中的icmp的協議,這里面主要的是前兩項參數,其中type是icmp協議的類型,而code 則是對type類型的再分析。如:type 0x03 是表示unsearchable,這時code的不同表示了不同的unsearchable :0x00表示網絡不可尋,0x01表示主機不可尋,0x02表示協議不可尋,0x03表示端口不可尋,0x05表示源路由失敗,0x06網絡不可知,0x07主機不可知。
Igmphdr 這是ip協議的igmp協議報頭
struct igmphdr
{
_u8 type;
_u8 code;
_u16 csum;
_u32 group;
};
這是Linux下的ip協議中的igmp協議,協議中主要是前面兩個屬性,Type表示igmp 協議的信息類型,code表示routing code. 然后,將截取的數據幀的地址賦值給定義的結構.由此可根據不同的結構分析數據,得到我們需要的信息.
檢測網絡監聽的方法
網絡監聽在上述中已經說明了。它是為了系統管理員管理網絡,監視網絡狀態和數據流動而設計的。但是由于它有著截獲網絡數據的功能所以也是黑客所慣用的伎倆之一。
檢測規則的定義
監聽是為了得到我們需要的網絡信息,然而網絡中的信息流量可能很大,例如一個擁有百臺計算機的網絡其一般監聽日志是每分鐘以MB計算的,從如此大量的數據中找出我們需要的信息是很不容易的,于是我再程序中添加了檢測規則的定義,如此用戶就可以自己定義檢測的規則從大量的數據中找到需要的數據并對其進行操作。關于定義的包括了我們感興趣的大部分數據包屬性:包括了源地址,目的地址,源ip地址,目的ip地址,源端口,目的端口,協議類型,連接標志,數據包數量,時間限制等。
如我們可定義將源物理地址為172.16.11.148且源端口為25,協議為tcp連接標志為syn的數據存入相關日志文件中,并且在檢測中采取鏈式規則,就是我們可以定義很多的規則而數據將像過流水線一樣通過各個規則的檢測處理,該功能和現在大多數的入侵檢測系統的規則定義相似,有了這種功能使網絡監聽更具針對性,可以滿足不同用戶的需要。
一般檢測網絡監聽的方法通過以下來進行:
網絡監聽實際上是很難被發現的。因為運行監聽程序的主機在進監聽的過程中只是被動的接收在以太網中傳輸的信息,它不會跟其它的主機交換信息的,也不能修改在網絡中傳輸的信息包。這就說明了網絡監聽的檢測是比較麻煩的事情。
一般情況下可以通過ps -ef或者ps -aux來檢測。但大多實施監聽程序的人都會通過修改ps的命令來防止被ps -ef的。
上邊提到過。當運行監聽程序的時候主機響應一般會受到影響變的會慢,所以也就有人提出來通過響應的速率來判斷是否受到監聽。如果說當你懷疑網內某太機器正在實施監聽程序的話,可以用正確的IP地址和錯誤的物理地址去ping它,這樣正在運行的監聽程序就會做出響應的。這是因為正常的機器一般不接收錯誤的物理地址的ping信息的。但正在進監聽的機器就可以接收,要是它的IP stack不再次反向檢查的話就會響應的。不過這種方法對很多系統是沒效果的,因為它依賴于系統的IP stack。
另一種就是向網上發大量不存在的物理地址的包,而監聽程序往往就會將這些包進行處理,這樣就會導致機器性能下降,你可以用icmp echo delay來判斷和比較它。還可以通過搜索網內所有主機上運行的程序,但這樣做其的難度可想而知,因為這樣不但是大的工作量,而且還不能完全同時檢查所有主機上的進程。可是如果管理員這樣做也會有很大的必要性,那就是可以確定是否有一個進程是從管理員機器上啟動的。
在Unix中可以通過ps –aun或ps –augx命令產生一個包括所有進程的清單:進程的屬主和這些進程占用的處理器時間和內存等。這些以標準表的形式輸出在STDOUT上。如果某一個進程正在運行,那么它將會列在這張清單之中。但很多黑客在運行監聽程序的時候會毫不客氣的把ps或其它運行中的程序修改成Trojan Horse程序,因為他完全可以做到這一點的。如果真是這樣那么上述辦法就不會有結果的。但這樣做在一定程度上還是有所作為的。在Unix和Windows NT上很容易就能得到當前進程的清單了。
還有一種方式,這種方式要靠足夠的運氣。因為往往黑客所用的監聽程序大都是免費在網上得到的,他并非專業監聽。所以做為管理員用來搜索監聽程序也可以檢測。使用Unix可以寫這么一個搜索的小工具了。有個叫Ifstatus的運行在Unix下的工具,它可以識別出網絡接口是否正處于調試狀態下或者是在進聽裝下。要是網絡接口運行這樣的模式之下,那么很有可能正在受到監聽程序的攻擊。Ifstatus一般情況下不會產生任何輸出的,當它檢測到網絡的接口處于監聽模式下的時候才回輸出。管理員可以將系統的cron參數設置成定期運行Ifstatus,如果有好的cron進程的話可以將它產生的輸出用mail發送給正在執行cron任務的人,要實現可以在crontab目錄下加****/usr/local/etc/ifstatus一行參數。這樣不行的話還可以用一個腳本程序在crontab下00****/usr/local/etc/run-ifstatus。
一般情況下監聽只是對用戶口令信息比較敏感一點(沒有無聊的黑客去監聽兩臺機器間的聊天信息的那是個浪費時間的事情)。所以對用戶信息和口令信息進行加密是完全有必要的。防止以明文傳輸而被監聽到。現代網絡中,SSH通信協議一直都被沿用,SSH所使用的端口是22,它排除了在不安全信道上通信的信息,被監聽的可能性使用到了RAS算法,在授權過程結束后,所有的傳輸都用IDEA技術加密。但SSH并不就是完全安全的。因此,總的說來,監聽的檢測屬于安全防范的內容,需要非常綜合的知識和技能進行分析設計。
安全方面的考慮
DOS 攻擊的檢測與預防
我國還在網絡的發展階段,自然有網絡“hacker”、“crack”出現,也正是由于是發展階段,這些人的攻擊手段一般靠一些工具,這些工具一般分為破解性和破壞性,破解性耗時長成功率低,而破壞性的工具較符合這些人的性格故受歡迎,而DOS攻擊工具攻擊方便,成功率高,一般是“hacker”的首選。
所謂的DOS攻擊是一種拒絕服務攻擊,它并不是入侵系統,而只是讓系統崩潰,或處于拒絕連接狀態,DOS攻擊的方法主要是發送大量假的syn包使服務器忙于應答和等待假syn的請求無法對正常的連接作出反應,或發送大量的廣播包利用某系系統對一些廣播包會產生回應得bug來形成廣播風暴阻塞網絡,消耗服務器資源達到進攻目的。現在還出現了分布式的DOS攻擊工具,它通過控制多臺分機同時發送到攻擊包,威力巨大,同時,DOS攻擊還可能是另一種供給的前奏,這就是IP欺騙攻擊(該攻擊可以獲得ROOT權限,危險系數最高),如果出現了DOS攻擊但又不阻塞網絡,且攻擊目標不起眼,那么這很可能就是一個IP欺或TCP截取的開始,所以DOS攻擊是一種破壞力大,效果明顯,且暗藏殺機的攻擊。
熱而DOS攻擊是較容易檢測的,其攻擊現象明顯,攻擊特征突出,通過對網絡的監聽不難發現,如上所述我們已經可以從網絡上監聽數據幀并能分析他們,于是編寫一個程序使用戶可以通過定義自己的規范與數據幀比較然后對符合規范的數據作出相應的反應,對于DOS攻擊我們可以通過定義一個帶有時間限制的規范來檢測,如我們可以定義在1秒如出現100個以上的syn數據包為DOS攻擊,然后定義處理方法,如MAIL,LOG,SHUTDOWN或與_blank">防火墻聯動等。
IP冒用的檢測與攻擊
網絡的飛速發展導致了原有的32位地址協議不能滿足飛速擴充的龐大計算機群,。利益不能均分,導致了IP冒用的出現,使網絡秩序產生混亂。
在這里先解釋一下ARP協議的應用。ARP協議是將IP地址轉換成MAC地址的協議,是局域網數據交流的基礎,一臺計算機是如何將自己和某一IP地址綁定?首先,一臺計算機啟動,他將向局域網發送其IP的ARP詢問包,這是為了防止IP沖突,如無人回答,其將發送其IP的ARP應答包,向局域網申明綁定其物理地址和ip地址,如果沒有在服務器上使用固定的ip/mac表那么沒有ip使用權的計算機也可以乘機綁定ip,這就是ip冒用。
對網絡監測的利用可以達到檢測ip冒用的出現并對之進行攻擊的目的。具體方法是將檢測到的arp數據幀中的ip 和 eth 地址取出來與我們建立的對應表比較,如發現ip冒用的情況,則向其發送反向arp包使其網絡中斷實現攻擊,該做法適用于那些無法控制路由器配置,又不想修改網關配置的網絡管理。在程序中我采用的是被動式的arp查詢,也就是不發arp查詢包,可以說出了發攻擊包外對網絡沒有增加另外的負擔。