snort
這是一個很好的開源的入侵檢測軟體,基于libpcap,可以步在路由器,可以步在交換機鏡像旁路,也可以步在自己的linux機器上,配制簡單,政策豐富,在非加密鍊路上,甚至可以實作七層内容監控。最簡單的學習方式就是閱讀它自帶的rule,比如最簡單的/etc/snort/rules/icmp.rules,它的第一政策行是:
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"...
之後我相信你肯定會找HOME_NET以及EXTERNAL_NET這兩個環境變量是怎麼回事...或者,對于實用主義者來講,直接在最上面加一行:
alert ip any any -> any any (msg:"ICMP ISS Pinger";) (vi中yy一行然後p上即可,修改掉所有環境變量,改成any,把icmp改成ip)
然後啟動snort,一會就會發現/var/log/snort/alert檔案爆滿了...當你删除了爆滿檔案之後,你肯定就要想辦法不讓它爆滿了,如何做呢?學習規則的格式以及寫法,監控你真正需要的,過濾掉不需要的,當你完成這些,那你就是snort高手了。
scapy
對于想自己構造資料包并且僅僅抱着玩的态度的人來說,scapy是比hping更好的選擇,它基于python,這就是說它的文法和python一緻,可以自己寫python函數來定義包,但是這也決定了它很慢,隻能玩,或者作一些一次性的事,比如arp-mac欺騙。以下的指令行發送了一個自己定義的udp包:
sr(IP(src="11.22.33.44", dst="192.168.188.248", flags=0, frag=0, proto=17)/UDP(sport=1111, dport=2222, len=123))
sr是什麼?src,frag,dport等字段為何是這種名字而不是别的呢?首先shell下敲入scapy:
Welcome to Scapy (0.9.17.1beta)
>>>
接着,很顯然,敲入help(),沒有得到什麼資訊,通過man之後,敲入ls(),ls(IP),ls(UDP)...lsc(),lsc(sr)...一切都是python的東西。接下來scapy就沒有什麼難了解的了,隻剩下樂趣了。也許你可以在區域網路發一個:
sendp(Ether(dst=tmac)/ARP(op="who-has", psrc=你想截獲的IP, pdst=target))
好玩嗎?需要注意的事,mac欺騙并不是那麼好做的,你可以試圖将目的位址為其它主機的包騙到你的機器,但是正常的協定棧還是會丢棄或者轉發的,資料包根本就到不了使用者态,怎麼辦呢?還是靠抓包,比如依靠tcpdump或者ethereal等工具,或者,真正的猛士可以自己修改協定棧,将自己的協定棧也欺騙掉。
hping
...
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1271740