攻擊的實施階段1. 獲得權限 當收集到足夠的信息之後,攻擊者就要開始實施攻擊行動了。作為破壞性攻擊,只需利用工具發動攻擊即可。而作為入侵性攻擊,往往要利用收集到的信息,找到其系統漏洞,然後利用該漏洞獲取一定的權限。有時獲得了一般用戶的權限就足以達到修改主頁等目的了,但作為一次完整的攻擊是要獲得系統最高權限的,,這不僅是為了達到一定的目的,更重要的是證明攻擊者的能力,這也符合黑客的追求。 能夠被攻擊者所利用的漏洞不僅包括系統軟件設計上的安全漏洞,也包括由於管理配置不當而造成的漏洞。前不久,因特網上應用最普及的著名www服務器提供商Apache的主頁被黑客攻破,其主頁面上的 Powered by Apache圖樣(羽毛狀的圖畫)被改成了Powered by Microsoft Backoffice的圖樣,那個攻擊者就是利用了管理員對Webserver用數據庫的一些不當配置而成功取得最高權限的。 當然大多數攻擊成功的范例還是利用了系統軟件本身的漏洞。造成軟件漏洞的主要原因在於編制該軟件的程序員缺乏安全意識。當攻擊者對軟件進行非正常的調用請求時造成緩沖區溢出或者對文件的非法訪問。其中利用緩沖區溢出進行的攻擊最為普遍,據統計80%以上成功的攻擊都是利用了緩沖區溢出漏洞來獲得非法權限的。關於緩沖區溢出在後面用專門章節來作詳細解釋。 無論作為一個黑客還是一個網絡管理員,都需要掌握盡量多的系統漏洞。黑客需要用它來完成攻擊,而管理員需要根據不同的漏洞來進行不同的防御措施。了解最新最多的漏洞信息,可以到諸如Rootshell(.com)、Packetstorm(packetstorm.securify.com)、Securityfocus(.com)等網站去查找。2. 權限的擴大 系統漏洞分為遠程漏洞和本地漏洞兩種,遠程漏洞是指黑客可以在別的機器上直接利用該漏洞進行攻擊並獲取一定的權限。這種漏洞的威脅性相當大,黑客的攻擊一般都是從遠程漏洞開始的。但是利用遠程漏洞獲取的不一定是最高權限,而往往只是一個普通用戶的權限,這樣常常沒有辦法做黑客們想要做的事。這時就需要配合本地漏洞來把獲得的權限進行擴大,常常是擴大至系統的管理員權限。 只有獲得了最高的管理員權限之後,才可以做諸如網絡監聽、打掃痕跡之類的事情。要完成權限的擴大,不但可以利用已獲得的權限在系統上執行利用本地漏洞的程序,還可以放一些木馬之類的欺騙程序來套取管理員密碼,這種木馬是放在本地套取最高權限用的,而不能進行遠程控制。例如一個黑客已經在一台機器上獲得了一個普通用戶的賬號和登錄權限,那麼他就可以在這台機器上放置一個假的su程序。一旦黑客放置了假su程序,當真正的合法用戶登錄時,運行了su,並輸入了密碼,這時root密碼就會被記錄下來,下次黑客再登錄時就可以使用su變成root了。攻擊的善後工作1. 日志系統簡介 如果攻擊者完成攻擊後就立刻離開系統而不做任何善後工作,那麼他的行蹤將很快被系統管理員發現,因為所有的網絡操作系統一般都提供日志記錄功能,會把系統上發生的動作記錄下來。所以,為了自身的隱蔽性,黑客一般都會抹掉自己在日志中留下的痕跡。想要了解黑客抹掉痕跡的方法,首先要了解常見的操作系統的日志結構以及工作方式。Unix的日志文件通常放在下面這幾個位置,根據操作系統的不同略有變化 /usr/adm——早期版本的Unix。 /Var/adm新一點的版本使用這個位置。 /Varflort一些版本的Solaris、 Linux BSD、 Free BSD使用這個位置。 /etc,大多數Unix版本把Utmp放在此處,一些Unix版本也把Wtmp放在這裡,這也是Syslog.conf的位置。下面的文件可能會根據你所在的目錄不同而不同: acct或pacct-一記錄每個用戶使用的命令記錄。 accesslog主要用來服務器運行了NCSA HTTP服務器,這個記錄文件會記錄有什麼站點連接過你的服務器。 aculo保存撥出去的Modems記錄。 lastlog記錄了最近的Login記錄和每個用戶的最初目的地,有時是最後不成功Login的記錄。 loginlog一記錄一些不正常的L0gin記錄。 messages——記錄輸出到系統控制台的記錄,另外的信息由Syslog來生成 security記錄一些使用 UUCP系統企圖進入限制范圍的事例。 sulog記錄使用su命令的記錄。 utmp記錄當前登錄到系統中的所有用戶,這個文件伴隨著用戶進入和離開系統而不斷變化。 Utmpx,utmp的擴展。 wtmp記錄用戶登錄和退出事件。 Syslog最重要的日志文件,使用syslogd守護程序來獲得。2. 隱藏蹤跡 攻擊者在獲得系統最高管理員權限之後就可以隨意修改系統上的文件了(只對常規 Unix系統而言),包括日志文件,所以一般黑客想要隱藏自己的蹤跡的話,就會對日志進行修改。最簡單的方法當然就是刪除日志文件了,但這樣做雖然避免了系統管理員根據IP追蹤到自己,但也明確無誤地告訴了管理員,系統己經被人侵了。所以最常用的辦法是只對日志文件中有關自己的那一部分做修改。關於修改方法的具體細節根據不同的操作系統有所區別,網絡上有許多此類功能的程序,例如 zap、 wipe等,其主要做法就是清除 utmp、wtmp、Lastlog和 Pacct等日志文件中某一用戶的信息,使得當使用w、who、last等命令查看日志文件時,隱藏掉此用戶的信息。管理員想要避免日志系統被黑客修改,應該采取一定的措施,例如用打印機實時記錄網絡日志信息。但這樣做也有弊端,黑客一旦了解到你的做法就會不停地向日志裡寫入無用的信息,使得打印機不停地打印日志,直到所有的紙用光為止。所以比較好的避免日志被修改的辦法是把所有日志文件發送到一台比較安全的主機上,即使用loghost。即使是這樣也不能完全避免日志被修改的可能性,因為黑客既然能攻入這台主機,也很可能攻入loghost。只修改日志是不夠的,因為百密必有一漏,即使自認為修改了所有的日志,仍然會留下一些蛛絲馬跡的。例如安裝了某些後門程序,運行後也可能被管理員發現。所以,黑客高手可以通過替換一些系統程序的方法來進一步隱藏蹤跡。這種用來替換正常系統程序的黑客程序叫做rootkit,這類程序在一些黑客網站可以找到,比較常見的有LinuxRootKit,現在已經發展到了5.0版本了。它可以替換系統的ls、ps、netstat、inetd等等一系列重要的系統程序,當替換了ls後,就可以隱藏指定的文件,使得管理員在使用ls命令時無法看到這些文件,從而達到隱藏自己的目的。
3. 後門 一般黑客都會在攻入系統後不只一次地進入該系統。為了下次再進入系統時方便一點,黑客會留下一個後門,特洛伊木馬就是後門的最好范例。Unix中留後門的方法有很多種,下面介紹幾種常見的後門,供網絡管理員參考防范。 <1>密碼破解後門 這是入侵者使用的最早也是最老的方法, 它不僅可以獲得對Unix機器的訪問, 而且可 以通過破解密碼制造後門. 這就是破解口令薄弱的帳號. 以後即使管理員封了入侵者 的當前帳號,這些新的帳號仍然可能是重新侵入的後門. 多數情況下, 入侵者尋找口令 薄弱的未使用帳號,然後將口令改的難些. 當管理員尋找口令薄弱的帳號是, 也不會發 現這些密碼已修改的帳號.因而管理員很難確定查封哪個帳號. <2>Rhosts
後門 在連網的Unix機器中,象Rsh和Rlogin這樣的服務是基於rhosts文件裡的主機名使用簡 單的認證方法. 用戶可以輕易的改變設置而不需口令就能進入. 入侵者只要向可以訪 問的某用戶的rhosts文件中輸入" ", 就可以允許任何人從任何地方無須口令便能進 入這個帳號. 特別當home目錄通過NFS向外共享時, 入侵者更熱中於此. 這些帳號也成 了入侵者再次侵入的後門. 許多人更喜歡使用Rsh, 因為它通常缺少日志能力. 許多管 理員經常檢查 " ", 所以入侵者實際上多設置來自網上的另一個帳號的主機名和 用戶名,從而不易被發現. <3>校驗和及時間戳後門 早期,許多入侵者用自己的trojan程序替代二進制文件. 系統管理員便依靠時間戳和系 統校驗和的程序辨別一個二進制文件是否已被改變, 如Unix裡的sum程序. 入侵者又發 展了使trojan文件和原文件時間戳同步的新技術. 它是這樣實現的: 先將系統時鐘撥 回到原文件時間, 然後調整trojan文件的時間為系統時間. 一旦二進制trojan文件與 原來的精確同步, 就可以把系統時間設回當前時間. Sum程序是基於CRC校驗, 很容易 騙過.入侵者設計出了可以將trojan的校驗和調整到原文件的校驗和的程序. MD5是被 大多數人推薦的,MD5使用的算法目前還沒人能騙過. <4>Login後門 在Unix裡,login程序通常用來對telnet來的用戶進行口令驗證. 入侵者獲取login.c的 原代碼並修改,使它在比較輸入口令與存儲口令時先檢查後門口令. 如果用戶敲入後門 口令,它將忽視管理員設置的口令讓你長驅直入. 這將允許入侵者進入任何帳號,甚至 是root.由於後門口令是在用戶真實登錄並被日志記錄到utmp和wtmp前產生一個訪問 的, 所以入侵者可以登錄獲取shell卻不會暴露該帳號. 管理員注意到這種後門後, 便 用"strings"命令搜索login程序以尋找文本信息. 許多情況下後門口令會原形畢露. 入侵者就開始加密或者更好的隱藏口令, 使strings命令失效. 所以更多的管理員是 用MD5校驗和檢測這種後門的. <5>Telnetd後門 當用戶telnet到系統, 監聽端口的inetd服務接受連接隨後遞給in.telnetd,由它運行 login.一些入侵者知道管理員會檢查login是否被修改, 就著手修改in.telnetd. 在in.telnetd內部有一些對用戶信息的檢驗, 比如用戶使用了何種終端. 典型的終端 設置是Xterm或者VT100.入侵者可以做這樣的後門, 當終端設置為"letmein"時產生一 個不要任何驗證的shell. 入侵者已對某些服務作了後門, 對來自特定源端口的連接產 生一個shell . <6>服務後門 幾乎所有網絡服務曾被入侵者作過後門. Finger, rsh, rexec, rlogin, ftp, 甚至 inetd等等的作了的版本隨處多是. 有的只是連接到某個TCP端口的shell,通過後門口 令就能獲取訪問.這些程序有時用刺娲□?Ucp這樣不用的服務,或者被加入ine