http://sqlmap.sourceforge.net/
sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of back-end database servers.
locally checks for signs of a rootkit
紀錄漏洞資訊。
Wepawet is a service for detecting and analyzing web-based malware. It currently handles Flash, JavaScript, and PDF files.
http://blog.xuite.net/sony.yap/hon8230/5988474
作者:彭文波 來源:賽迪網社區 發佈時間:2006.04.05 現在,大量的網路伺服器開始使用Linux作業系統,Linux伺服器的安全性也開始受到關注。對Linux伺服器攻擊的定義是:攻擊是一種旨在妨礙、損害、削弱、破壞Linux伺服器安全的未授權行為,攻擊的範圍可以從服務拒絕直至完全危害和破壞Linux伺服器。對Linux伺服器攻擊有許多種類,從攻擊深度的角度說明,我們可以把攻擊分為四級:服務拒絕攻擊(DoS)、本地用戶獲取了非授權的檔的讀寫許可權、遠程用戶獲得特權文件的讀寫許可權、遠程用戶獲得根許可權。下面,我們將選取一些有針對性的經典工具,一一加以說明。 1、溢出:從開源代碼開始 Linux 系統中最常見的缺陷就是緩衝區溢出,緩衝區以前可能被定義為“包含相同數據類型的實例的一個連續電腦記憶體塊”。極其常見的緩衝區種類是簡單的字元數組,溢出就是數據被添加到分配給該緩衝區的記憶體塊之外。由此,我們可以看到,作為開源系統,Linux系統中的代碼檢查就顯得十分重要。對於攻擊者和管理員來說,誰首先重視它,就在一定程度上取得了主動權。 (1)SPIKE SPIKE是immunitysec公司的Dave Aitel寫的一個黑盒進行安全測試的工具。SPIKE提供了各種各樣的構造函數。例如s_binary可以構造二進位數據,s_string可以構造字串,s_unistring可以構造UNICODE字串等。SPIKE的另一個優勢是Dave Aitel的Fuzz理論,它可以構造一些特殊的數字或者字串作為程式的輸入,檢查程式是否能夠處理這些異常數據。此外,SPIKE裏邊提供了常見的協議支援,例如SUN RPC和MS RPC。 (2)Lint Lint 能夠檢查的部分錯誤列表:可能的空指針;在釋放記憶體之後使用了該指針;賦值次序問題;拼寫錯誤等。通常,一個C/C++的編譯器假設程式是正確的,而 Lint恰恰相反,因此,它優於編譯器執行的一般性檢查。Lint還可以貫穿多個檔來執行它的錯誤檢查和代碼分析,這是編譯器做不到的。比較流行的 Lint 程式有:PC-lint是一個由Gimpel Software提供的支援C/C++的商用程式;Splint (原來的 LCLint) 是一個GNU免費授權的 Lint程式,但是只支援C不支援C++。 運行 Lint時,和正常的編譯器一樣,只要把直接加入的makefile 中就可以了。通過配置選項、代碼注釋等方法可以控制和校準Lint的輸出。例如,這裡有一個返回NULL指針的函數,Splint可以通過下面的註釋 /*@null@*/ 來識別: /*@null@*/ void *test(void) { // a function that returns NULL! return NULL; } 這樣做有兩個目的:防止Splint為這個返回Null指針的函數告警;保證Splint 檢查任何調用該函數的代碼中使用該函數的返回指針是有效的。 (3)Flawfinder Flawfinder 是一款用Python編寫的c、c++程式安全審核工具,可以檢查潛在的安全風險。它通過搜索檢測檔源代碼從而得到潛在的安全漏洞,支援檢測數據庫,以HTML格式生成報告。 2、嗅探器:Linux上的“狗鼻子” Sniffer 是一種常用的收集有用數據方法,它幾乎能得到任何乙太網上的傳送的數據包。這些數據可以是用戶的帳號和口令,可以是一些商用機密數據等等。這些嗅探器很容易被入侵者完成入侵以後種植在受害者伺服器當中,有的只是簡單的用來捕捉用戶名和口令,有的則非常強大可記錄所有的網路數據流。Linux作業系統下有很多這樣的優秀工具,下面,我們來具體看看。 (1)tcpdump 國國這是一個專業的網路管理工具,而且這個工具也留下了不少網路攻擊故事。它能把匹配規則的數據包的包頭顯示出來,使用TCPDump去搜尋網路問題或者去監視網路上的狀況.。tcpdump的安裝十分簡單,一般由兩種安裝方式。一種是以rpm包的形式來進行安裝。另外一種是以源程式的形式安裝。以rpm包的形式安裝是最簡單的安裝方法,通過rpm命令可以直接安裝。以超級用戶登錄後,使用命令:#rpm -ivh tcpdump.rpm,就可以順利安裝了。 Tcpdump採用命令行的方式使用,它的命令格式為: tcpdump [-adeflnNOpqStvx ] [ -c 數量 ] [ -F 檔案名 ] [ -i 網路介面 ] [ -r 檔案名] [ -s snaplen ] [ -T 類型 ] [ -w 檔案名 ] [運算式 ] 其中,“-a”表示將網路位址和廣播位址轉變成名字;“-d”表示將匹配資訊包的代碼以人們能夠理解的彙編格式給出;“-e”表示在輸出行列印出數據鏈路層的頭部資訊;“-c”表示在收到指定的包的數目後,tcpdump就會停止;“-F”表示從指定的檔中讀取運算式,忽略其他的運算式;“-i”表示指定監聽的網路介面;“-r”表示從指定的檔中讀取包(這些包一般通過-w選項產生);“-w”表示直接將包寫入檔中,並不分析和列印出來;“-T”表示將監聽到的包直接解釋為指定的類型的報文,常見的類型有遠程過程調用和snmp簡單網路管理協議。 tcpdump的運算式是一個正則運算式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足運算式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,網路上所有的資訊包將會被截獲。在運算式中一般如下幾種類型的關鍵字,一種是關於類型的關鍵字,主要包括host、net、port等。第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src等,這些關鍵字指明了傳輸的方向。第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway、broadcast、less、greater,還有三種邏輯運算“或、非、與”,這些關鍵字可以形成強大的組合條件來滿足人們的需要。例如,想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包: #tcpdump host 210.27.48.1 想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令: #tcpdump ip host 210.27.48.1 and ! 210.27.48.2 如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令: #tcpdump tcp port 23 host 210.27.48.1 下面我們介紹幾種典型的tcpdump命令的輸出資訊。比如,使用如下命令: #tcpdump --e host ice 其中,ice 是一台裝有linux的主機,她的MAC地址是2E:19:24:28:AF:1A。H219是一台裝有SOLARIC的SUN工作站,它的MAC位址是8:0:20:79:5B:46;上一條命令的輸出結果如下所示: 21:50:12.847509 eth0 < 8:0:20:79:5b:46 2E:19:24:28:AF:1A ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF) 分析:21:50:12是顯示的時間,847509是ID號,eth0 <表示從網路介面eth0 接受該數據包,eth0 >表示從網路介面設備發送數據包, 8:0:20:79:5b:46是主機H219的MAC地址,它表明是從源地址H219發來的數據包。2E:19:24:28:AF:1A是主機ICE的 MAC位址,表示該數據包的目的地址是ICE . ip 是表明該數據包是IP數據包,60 是數據包的長度, h219.33357 > ice.telnet 表明該數據包是從主機H219的33357埠發往主機ICE的TELNET(23)埠. ack 22535 表明對序列號是222535的包進行響應. win 8760表明發送窗口的大小是8760. 再比如,使用命令: #tcpdump arp 到的輸出結果是: 22:32:42.802509 eth0 > arp who-has route tell ice (2E:19:24:28:AF:1A) 22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (2E:19:24:28:AF:1A) 分析: 22:32:42是時間戳, 802509是ID號, eth0 >表明從主機發出該數據包, arp表明是ARP請求包, who-has route tell ice表明是主機ICE請求主機ROUTE的MAC地址。 2E:19:24:28:AF:1A是主機ICE的MAC地址。此外,這個軟體還可以分析UDP等數據包等,結合LINUX環境熟練使用後,我們就可以充分發揮它的威力。 (2)Hunt Hunt具有直觀的命令追蹤和會話錄製功能,它以tar.gz的格式發佈,檔下載後,首先需要解壓縮。運行Hunt後,將啟動一個很直觀的功能表,介面如下: --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------ l/w/r) list/watch/reset connections u) host up tests a) arp/simple hijack (avoids ack storm if arp used) s) simple hijack d) daemons rst/arp/sniff/mac o) options x) exit *> w 0) 192.168.0.1 [1049] --> 192.168.0.2 [23] choose conn> 0 dump [s]rc/[d]st/oth > b 注:上面的輸入(黑色字體部分)指示hunt來記錄0號連接,並輸出源和目的資訊,則hunt將活動資訊到終端螢幕上。可以看到,hunt的輸出非常直觀明瞭,易於閱讀。hunt還提供有以下工具:允許指定任意一個感興趣的連接,而不是記錄所有的東西;允許指定任意一個連接,而不僅僅是以SYN剛剛開始的連接;提供活動會話劫持。 (3)Linsniffer linsniffer是一個簡單實用的嗅探器。它主要的功能是捕捉用戶名和口令。 軟體下載後,使用下面的命令來編譯和運行linsniffer: $cc linsniffer.c -o linsniffer $linsniffer 啟動以後linsniffer將創建一個空文件:tcp.log來存儲嗅探結果。在測試中我創建一個名為cndes的用戶,口令為123456。然後使用該用戶來登錄Linux伺服器,並進行一些常見的用戶操作。這是一個典型的用戶操作過程。下面,我們看看linsniffer產生的嗅探結果: gnss => linux.test.net [21] USER cndes PASS 123456 SYST PORT 172,16,0,1,4,192 LIST -al PORT 172,16,0,1,4,193 LIST PORT 172,16,0,1,4,194 LIST -F CWD lg PORT 172,16,0,1,4,195 LIST -F 輸出內容十分直觀。我們可以分析如下:首先,它記錄到Linux主機的FTP連接:gnss => linux.test.net [21]。然後,linsniffer捕獲了用戶名和口令。最後,linsniffer記錄了cndes使用的每一個命令。輸出結果非常清楚,非常適合竊聽口令及記錄常見的活動。不過,這個軟體不太適合進行更加複雜的分析。 (4)Linux-sniff linux_sniffer提供相對更複雜的探測結果。首先,使用如下命令編譯linux_sniffer $cc linux_sniffer.c -o linuxsniff 下面是被linux_sniffer記錄的一次telnet會話過程: GNSS 2# telnet 192.168.0.1 Connected to 192.168.0.1. login: cndes password: [cndes@linux2 cndes]$ w 19:55:29 up 58 min, 4 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 7:44pm 27.00s 0.17s 0.06s -bash root tty2 7:46pm 1:56 0.24s 0.01s linuxsniff root tty3 7:44pm 10:43 0.17s 0.07s -bash cndes ttyp0 gnss 7:55pm 1.00s 0.26s 0.04s w [cndes@linux2 cndes]$ who root tty1 May 20 19:44 root tty2 May 20 19:46 root tty3 May 20 19:44 cndes ttyp0 May 20 19:55 (gnss) [cndes@linux2 cndes]$ finger -l Login: root Name: root Directory: /root Shell: /bin/bash On since Thu May 20 19:44 (PDT) on tty1 35 seconds idle On since Thu May 20 19:46 (PDT) on tty2 2 minutes 4 seconds idle On since Thu May 20 19:44 (PDT) on tty3 10 minutes 51 seconds idle No mail. No Plan. Login: cndes Name: Caldera OpenLinux User Directory: /home/cndes Shell: /bin/bash On since Thu May 20 19:55 (PDT) on ttyp0 from gnss No mail. No Plan. (5)Ettercap Ettercap 是一款局域網環境下的網路監視、攔截和記錄工具,支援多種主動或被動的協議分析,有數據插入、過濾、保持連接同步等功能,還有一個能支援多種嗅探模式套件,能夠檢查網路環境是否是交換局域網,並且能使用主動或被動的作業系統指紋識別技術,讓本地攻擊者充分瞭解當前局域網的情況。 (6)DSniff DSniff是由Dug Song開發的一個網路審計、測試和嗅探軟體套件,其中,dsniff、filesnarf、mailsnarf、msgsnarf、rlsnarf和webspy可以用於監視網路上我們感興趣的數據,如口令、e-mail、檔等。arpspoof、dnsspoof和macof則可以很容易地載取到攻擊者通常難以獲取的網路資訊,如二層交換數據。 (7)Ethereal Ethereal是一款免費的網路協議分析程式,支援Unix、Windows。借助這個程式,我們可以直接從網路上抓取數據進行分析,也可以對其他嗅探器抓取的數據進行分析,查看每一個數據包的摘要和詳細資訊。Ethereal有多種強大的特徵,如支援幾乎所有的協議、豐富的過濾語言、易於查看TCP會話經重構後的數據流等。 (8)sniffit sniffit是一個TCP/IP/ICMP協議數據報監聽器,它能給出這些協議數據報的詳細技術資訊及符合監聽條件的數據報的各種不同的格式。sniffit可以進行方便的配置實現對接入的數據報進行過濾。而配置檔允許非常確定地指定需要處理的數據報。缺省情況下,sniffit可以處理乙太和PPP設備,也可以用在其他的設備上。 由於Linux系統下嗅探器的優秀功能和強大的殺傷力,因此,新的軟體層出不窮,而各個優秀軟體的改進版本或增強版也不斷湧現,讀者朋友可以在實際使用中多多收集。 3、入侵檢測系統攻擊及口令破解 (1)Crack Crack 是破解軟體中的開山鼻祖,破解UNIX口令的著名工具,現在已經成為了檢查網路口令弱點的工業標準。它由Alec D.E.Muffett編寫,工作原理十分簡單。我們知道加密口令是不會被解開的,這是因為加密演算法是不可逆的。所以,一般的口令入侵是通過生成口令進行加密去匹配原口令口令,或直接從網上截獲明文口令。Crack 程式中包含了幾個很大的字典庫,進行解破時它會按照一定的規則將字詞進行組合,然後對之進行加密,再與要解破的加密口令匹配。在使用中,如果口令檔很小,時間和資源都不成問題,但是如果口令檔比較大,則要花費很長的時間和耗費相當的資源。 (2)Fragroute 這個軟體和DSniff出自一家,這個工具開發的本意是去測試入侵檢測系統、防火牆、基本的TCP/IP棧的行為,因此,它是一個能夠破壞入侵檢測系統的強大工具。此外,它還能夠截取、修改和重寫向外發送的報文,實現了大部分的IDS攻擊功能。Fragroute有一個簡單的規則設置語言,通過它,可以實現延遲、複製、丟棄、碎片、重疊、列印、重排、分割、源路由或其他一些向目標主機發送數據包的攻擊。 (3)John the Ripper John the Ripper是一個十分強大、靈活、快速的多平臺哈希口令破解器,它設計的主要目的是用於檢查Unix系統的弱口令,支援幾乎所有Unix平臺上經crypt函數加密後的口令哈希類型,也支援Kerberos AFS和Windows NT/2000/XP LM哈希等。