隱藏和盜竊(上)
若是你想攻入別人的網絡,聖誕節和新年之間的一週是最好的時間。我喜歡一年中的這個時候,四周沒有人,大多數地方最多隻是最少數量的職員。若是你很能幹且作得很好,那麼就不會被自動控制系統注意到。這是一年中能夠***這些傢伙們的電子商務站點的最美好的時光——我猜確定有大量的信用卡號碼。
經營這些站點的人欠個人賬。我從他們那兒買過一些計算機硬件,他們給送貨。而當這些貨送到時有損壞,我就給他們的服務電話打電話讓他們退貨或者給我換一個,但他們說那個卡不能換,由於這是清倉甩賣的。但是他們的站點並無說那種卡是甩賣的呀!我跟支持人員說,可是他們不聽。他們說,「規定就是規定,」「難道你沒有看看下面的小字嗎?」若是他們就是這種態度……等着瞧吧,總的來講他們還算是好人,只是要給他們一點教訓而已。
因此,想到這裏,聖誕節以後的一天我什麼也沒作。家庭聚會結束後,我決定去看看他們的站點怎麼樣。我只是在引擎架下瀏覽了一下。沒有什麼錯誤。我時常處處***一些Web站點——但不破壞,我只是四處看看。過去我***的大可能是些大學和國家政府站點。最近我***了一些更有趣的站點,並且這些站點的確是十分有趣。事實上,這讓一個無聊的下午充滿了挑戰。
如今個人一個原則是毫不經過開合橋在城堡咆哮。他們的電子商務(也許有數據庫)Web站點存放在某個數據中心。由於我沿路追溯過他們的Web站點因此知道這些,我得到了與我曾經追溯過的主要Web站點徹底不一樣的其餘主機的路線。因此看上去它彷佛把電子商務信息與公司網絡分開了,看來頗有道理。這使我很容易決定如何接近他們的網絡。我想看的是公司網絡,而不是他們的數據中心,由於我想也許數據中心有更嚴密的安全措施。
工具
首先,我顯然應該選擇Linux平臺。幾乎我用的全部工具都運行在Linux下。個人一套探索器在Linux下運行得真的很好。如今OpenBSD已經就緒了,我還算得上是個Solaris愛好者,只是在工做時,我不用Linux平臺。我並不關心它是Red Hat,Mandrake,仍是Debian。這並不重要。重要的是你能根據須要調整操做系統。這纔是關鍵。你要能確信底層操做系統是可靠的。根據有關筆記,個人自制工具是Bourne Shell,Expect和Python腳本的混合體,也有少許Perl,但大多數腳本都是用Python寫的。若是你想在這類遊戲中獲勝,代碼重用很重要。
我喜歡用nmap作網絡搜尋,這是一個很好的工具。我過去用strobe,而nmap提供了更多的功能——包括從常規鏈接搜尋到FIN搜尋,UDP搜尋,慢速搜尋,快速搜尋,控制端口等全部功能。它是我選擇的在網絡上肯定目標的搜尋器。我偶爾用它來肯定目標操做系統。然而,我已經發現,在某些狀況下,它破壞目標機器,那卻是有點無心中的大泄露。
爲了識別目標操做系統,我傾向於依靠獲取標識。雖然nmap的確爲遠程操做系統提供指紋,但它有時也會犯錯誤。我看到過nmap將Solaris7當成了OpenBSD系統。獲取標識仍然是遠程操做系統指紋的「金科玉律」。只是大多數系統管理員不知道。若是他們只要花時間減小系統識別的步驟,就會使個人工做困可貴多。不會花太多時間——只是很小一下子的努力就行。獲取標識有點危險,由於爲了獲取這個信息通常要創建一個徹底鏈接;然而用nmap的操做系統指紋功能把你的目標擊倒也不必定是個好主意。
那麼,識別操做系統選擇什麼端口好呢?兩個對抓取標識較有用的TCP端口是80端口(WWW)和25(SMTP)端口。21端口(FTP)和23(Telnet)端口實際上不是好的選擇。若是另外一端很靈活,就能經過路由器的訪問控制列表(ACL),防火牆或通過TCP打包器的訪問控制得到被鎖定的21端口和23端口。不管怎樣,它是至關安全的,那兩個端口都在某個地方記下日誌。是的,你也許一樣對WWW和SMT作了日誌。區別在於信息一般隱藏在某個管理員並不真要去看的日誌文件裏,由於他們天天都有成千上萬個鏈接。
如今,我讓應用系統依賴多種工具。選擇這些工具幾乎都是由於它們簡單並且可以根據個人需求而修改。對於Web服務器我傾向於RFP的Whisker程序。是的,我試過Nikto並且很喜歡它(我甚至用它來作Whisker的候補),可是我如今開始真正相信Whisker了。若是你打算用工具得到成功就得相信它們。你會問「可是SSL服務器怎麼樣?」很好,那些服務器有sslproxy。而它自己並非一個用來***的工具,你能用它來給在SSL服務器上運行的Whisker提供加密。很好,不是嗎?
對於微軟的SQL Server服務器,能夠用LinSQL。這是一個神奇的工具,實際上它是我根據本身的須要作了修改的linux的Microsoft客戶端。我一直很驚訝網絡管理員將Microsoft SQL Server放在他們能在Internet上訪問到的地方。另外令我吃驚的是,我遇到過多少次Microsoft SQL Server的sa帳號的密碼都是空的。有時,這已經足夠提供對網絡的直接訪問了。LinSQL依靠xp_cmdshell擴展存儲過程來執行你發送到操做系統的任何命令。一些足夠敏捷的管理員便能從SQL服務器中刪除這個過程。對於這些狀況,我使用SQLAT做爲SQL審計工具。
SQLAT是另一個能夠在Microsoft SQL服務器上使用的Linux/BSD工具包。SQLAT本質上是一套能作目錄***、上傳文件、讀系統註冊表及導出SAM的工具。也有一個工具可用HTML格式的輸出對SQL服務器進行最起碼的分析。爲了運行一些工具套件須要訪問sa帳號,但通常這不是問題。若是SQL管理員刪除了xp_cmdshell擴展過程,這個工具能臨時恢復xp_cmdshell。爲了完成這件事情,包含xp_cmdshell代碼的動態連接庫必定還要在系統上。SQLAT提供了有關SQL服務器的有價值的信息,並使他更容易攻破。一旦收集到了有關SQL服務器的必要的信息,我就能很快得到對系統的訪問。
個人工具箱內容豐富多樣,包含我多年來得到的一整套探索器。我將全部的東西放在被我叫作「***樹」的目錄結構中。基本上,我讓探索器在UNIX探索器和基於Windows的探索器之間進行***。我從這兒攻破了兩個目錄進入遠程和本地的子目錄。而後將遠程和本地目錄分紅針對不一樣服務的探索器。下一級是攻破他們影響操做系統的探索器。***樹的結構被鏡像到***樹目錄結構中,若是我須要Solaris8 snmpXdmid服務上的探索器,就要到名爲/exploits /unix /remote /snmp /solaris /8的目錄下查找探索器代碼或者已經被編譯的二進制文件,並準備運行。樹型結構以下圖所示:
探索器***樹型結構
這裏不能列舉出所有。我已經保存了Cisco路由器和交換機這樣的網絡設備探索器的探索結果和信息。我有一個對不一樣系統和帳號的默認密碼專用的目錄。總之,我有一個很大的***網絡的工具箱。
一旦進入系統,我通常試圖導出SAM或捕獲UNIX密碼和shell文件。若是能獲得這些信息,那麼我就能將他們下載到本地系統並經過John the Ripper運行。我我的認爲它是最好的開源密碼***程序。我已經用了很長時間了,還用它跟朋友交換john.pot文件。個人john.pot集如今已經超過10MB了,並且John使用的密碼列表有將近60MB了。在Windows系統中,若是可以訪問並得到SAM,就能保證得到密碼並用它來進一步探索此次訪問。
搜尋
若是打算搜尋目標,就須要選擇一個合適的日子來作這件事情。你必須認真地考慮被發現的可能性,尤爲是IDSs現已變得愈來愈好了。儘管晚上是搜尋的好時間,由於他們極可能正實行NOC我的輪班制,我以爲這一天應該是個較好的選擇。在那天,他們本身站點大量的進出流量會掩蓋個人巡視。
開始,沒有一個正在巡視的站點Ping了他們的主機。這使那類活動至關低級,從而觸發一些IDS。並且大部分網絡,若是是緊密的,就會過濾掉進入的ICMP迴應請求。因此,我從所謂的「盲查」開始。這種查詢基本上使用名爲TCP SYN查詢的方式來查詢一些普通端口。用這種類型的查詢,nmap完成了TCP用來創建鏈接的三程握手的三步中的兩步。若是我當心地慢慢搜尋,就能夠避免被IDSs發現。
我寧願用SYN搜尋而不是全鏈接搜尋。由於鏈接搜尋極可能在某個地方記下鏈接日誌,可能向網絡管理員告警有某個可疑的東西正在接近。因此,對於這些傢伙,我減慢巡視,而且只查找20,21,22,23,25,80,443端口(我但願能找到80和443端口,也想找到其它的端口)。
最初的掃描進行得很好。我肯定了6個有用的端口。怎麼來定義有用呢?問得好。有用意味着那臺主機上有多個端口開放,運行了能提供進入網絡通道的服務。其中某個主機運行着兩個服務,儘管兩個服務都被綁定到同一個應用系統——一個Web服務器。他們顯然都在提供過濾功能的路由器後面(好像我猜對了),他們的操做系統有很大不一樣。我作了一個本身發現的系統和服務列表(爲了代表個人「清白」,IP地址已經改了)。
查找到的主機和可用的服務
IP地址系統 |
開放的端口
|
運行
|
10.89.144.133
|
80(WWW)
|
Cisco device
|
10.89.144.140
|
80(WWW)
|
Cisco device
|
10.89.144.155
|
80(WWW),443(SSL)
|
Windows NT4.0
|
10.89.144.154
|
22(SSH)
|
未知
|
10.89.144.166
|
80(WWW),443(SSL)
|
Windows 2000
|
10.89.144.241
|
25(SMTP)
|
Sun
|
儘管有了這個列表,可是我如今還須要找到更多信息。那麼,這種Cisco設備——是什麼?是路由器仍是交換機?既然我已經訪問到了這些設備上的Web服務器,這就是我開始的地方。
愚蠢的Cisco騙局
Cisco交換機和路由器在其Web服務器上曾經有一個有趣的bug。這個bug容許你經過Web服務器認證,可以對設備上所選擇的命令進行訪問。真的很簡單,我很驚訝,在我以前沒有人發現它(可恨,我甚至想踢本身一腳爲何沒有早點琢磨這事)。不管怎樣,探索器是這樣運行的:只要向設備發送與如下相似的URL:
http://ip-address/ <xx>/exect/-/show/config,而<xx>是從19到99的數。若是Cisco設備有弱點,就能看到如下信息:
CiscoWeb認證旁路缺陷
很是聰明。但是,我還不知道除了用Web服務器外還打算怎麼訪問這些設備,後來我想出來了。由此,如今我看着屏幕,顯然是個路由器,並且就是Cisco路由器。
Cisco路由器顯示版本信息
如今我瞭解了更多關於這個特殊的路由器的信息。它是一個運行在Internetwork操做系統(IOS)12.0(7)T上的Cisco1720路由器,1720嗎?是的,我想不出來這兒爲何是這麼一個小的路由器。可是,嗨,我不是他們的網絡管理員。重要的是我如今有了一個可用的密碼了。
成功的網絡訪問(不被注意,也不被人抓住)須要時間和努力。就像好萊塢電影裏演的那樣,你會認爲你所要作的事情就是連到網絡,輸入幾個密碼,而後就進去了。多麼荒唐。要花時間的,尤爲是網絡管理員已作了不少努力使網絡安全。
無論怎樣,我還要檢查一下另一個Cisco設備。這個設備不容易受到同一個bug的感染。事實上它想要一個用戶名和密碼進入受權的EXEC模式。那麼,我如今有兩個密碼能夠試:從路由器(***)得到的VTY密碼和啓用密碼(Cisco),啓用密碼沒有什麼問題就讓我進入了。
訪問Cisco路由器
因此,我訪問了那臺路由器和交換機。這確定是個開始。問題是這並非我期待的真正的交互式命令行接口。哦,不要誤導我,我很高興訪問它,可是要真的到達任何地方,我還須要更多。因此,我須要把注意力轉到更潛在的東西。我決定稍後再回到路由器和交換機。如今,我想看看另外四個系統。
計算機就是計算機,McNealy先生
我選定的下一個目標是郵件服務器。識別這個系統真的很容易——真使人厭煩。基本上就是鏈接到SMTP端口,獲取標識。很是容易、簡單。
Sun Sendmail服務器
從這些信息中我能夠收集到幾件事情。他們有Solaries7系統(簡稱sparc7s,因此我能夠將處理器的範圍縮小到SPARC)。OS版本是經過sendmail版本8.9.3+Sun/8.9.1識別的。這是Solaris7 SendMail的默認版本。他們甚至根本沒有真正上鎖。我能夠用HELP,EXPN和VRFY。有許多信息泄露出來。因此,我可以訪問郵件端口,可是我真正想用的是Telnet訪問。我繼續進入到Web服務器。
(待續……)