在UNIX系統遭受入侵後,確定損失及入侵者的攻擊源地址相當重要。雖然在大多數入侵者懂得使用曾被攻陷的計算機作為跳板來攻擊你的服務器,但是他們發動正式攻擊前所做的目標信息收集工作(試探性掃描)常常是從他們的工作計算機開始的,下面介紹如何從遭受入侵的系統的日志中分析出入侵者的IP並加以確定的。
1. messages
/var/adm是UNIX的日志目錄(Linux下則是/var/log)。其中有相當多ASCII格式的日志文件,當然 ,讓我們把焦點首先集中在messages個文件上,這一般也是入侵者所關注的文件,它記錄了來自系統級別的信息。下面是顯示版權或者硬件信息的記錄信息:
Apr 29 19:06:47 www login[28845]: FAILED LOGIN 1 FROM xxx.xxx.xxx.xxx ,User not known to the underlying authentication module
這是登錄失敗的記錄信息: Apr 29 22:05:45 game PAM_pwdb[29509]: (login) session opened for user ncx by (uid=0)。
第一步應該是 Kill -HUP cat `/var/run/syslogd.pid`,當然,有可能入侵者已經做過了。
2. wtmp,utmp logs,FTP日志
你可以在/var/adm,/var/log,/etc目錄中找到名為wtmp,utmp的文件,這些文件記錄著用戶是何時、何地遠程登陸到主機上的,在黑客軟件中有一個最老也是最流行的zap2(編譯後的文件名一般叫做z2,或者叫wipe),也是用來“抹”掉在這兩個文件中用戶登錄的信息的,然而由於懶惰或者網絡速度過於緩慢,很多入侵者沒有上載或編譯這個文件。管理員可以使用lastlog這個命令來獲得入侵者上次連接的源地址(當然,這個地址有可能是他們的一個跳板)。FTP日志一般是/var/log/xferlog,該文件詳細的記錄了以FTP 方式上傳文件的時間、來源、文件名等等,不過由於該日志太明顯,所以稍微高明些的入侵者幾乎不會使用FTP來傳文件,他們一般使用的是RCP。
3. sh_history
獲得 root 權限後,入侵者就可以建立他們自己的入侵帳號,更高級的技巧是給類似 uucp,lp 等不常使用的系統用戶名加上密碼。在遭受入侵後,即使入侵者刪除了.sh_history 或者.bash_hi-story 這樣的文件,執行kill -HUP `cat /var/run/inetd.conf`即可將保留在內存頁中的bash命令記錄重新寫回到磁盤,然後可執行find / -name.sh_historyprint,仔細查看每個可疑的 shell 命令日志。你可在/usr/spool/lp(lp home dir),/usr/lib/uucp/等目錄下找到.sh_history 文件,還有可能在其中發現類似 FTP xxx.xxx.xxx.xxx 或者[email protected]:/tmp/backdoor /tmp/backdoor這樣能顯示出入侵者IP或域名的命令。
4. HTTP服務器日志
這是確定入侵者的真實攻擊發源地址的最有效方法了。以最流行的Apache服務器為例,在$/logs/目錄下你可以發現access.log這個文件,該文件記載了訪問者的IP,訪問的時間和請求訪問的內容。在遭受入侵後,我們應該可以在該文件中發現類似下面的信息: record:xxx.xxx.xxx.xxx[28/Apr/2000:00:29:05 -0800] "GET/cgi-bin/rguest.exe"404 -xxx.xxx.xxx.xxx[28/Apr/2000:00:28:57 -0800] "GET /msads/Samples/SELECTOR/showcode.asp" 404
這表明是來自 IP 為 xxx.xxx.xxx.xxx的入侵者在 2000 年 4 月 28 號的 0 點 28 分試圖訪問/msads/Samples/SELECTOR/showcode.asp文件,這是在使用web cgi掃描器後遺留下的日志。大部分的web掃描器的入侵者常選擇離自己最近的服務器。結合攻擊時間和IP,我們就可以知道入侵者的大量信息。
5. 核心dump
一個安全穩定的守護進程在正常運行的時候是不會“dump”出系統的核心的,當入侵者利用遠程漏洞攻擊時,許多服務正在執行一個getpeername的socket 函數調用,因此入侵者的IP也保存在內存中。
6. 代理服務器日志
代理服務器是大中型企業網常使用來做為內外信息交換的一個接口,它忠實地記錄著每一個用戶所訪問
的內容,當然也包括入侵者的訪問信息。以最常用的squid代理為例,通常你可以在/usr/local/squid/logs/下找到 access.log 這個龐大的日志文件。你可以在以下地址獲得 squid 的日志分析腳本:http://www.squid-cache.org/Doc/Users-Guide/added/st .html 通過對敏感文件訪問日志的分析,可以知道何人在何時訪問了這些本該保密的內容。
7. 路由器日志
默認方式下路由器不會記錄任何掃描和登錄,因此入侵者常用它做跳板來進行攻擊。如果你的企業網被劃分為軍事區和非軍事區的話,添加路由器的日志記錄將有助於日後追蹤入侵者。更重要的是,對於管理員
來說,這樣的設置能確定攻擊者到底是內賊還是外盜。當然,你需要額外的一台服務器來放置router.log文件。
注意!
對於入侵者來說,在實
施攻擊的整個過程中不與目標機試圖建立TCP連接是不太可能的,這裡有許多入侵者主觀和客觀原因,而且在實施攻擊中不留下日志也是相當困難的。
如果我們花上足夠的時間和精力,是可以從大量的日志中分析出入侵者的信息。就入侵者的行為心理而言, 們在目標機上取得的權限越大,他們就越傾向於使用保守的方式來建立與目標機的連接。仔細分析早期的日志,尤其是包含有掃描的部分,我們能有更大的收獲。
日志審計只是作為入侵後的被動防御手段,主動的是加強自身的學習,及時升級或更新系統,做到有備無患才是最有效的防止入侵的方法。