在*NIX系統遭受入侵后,確定損失及入侵者的攻擊源地址相當重要。雖然在大多數入侵者懂得使用曾被他們攻陷的機器作為跳板來(lái)攻擊你的服務(wù)器可在他們發(fā)動(dòng)正式攻擊前所做的目標信息收集工作(試探性?huà)呙瑁┏3J菑乃麄兊墓ぷ鳈C開(kāi)始的,本篇介紹如何從遭受入侵的系統的日志中分析出入侵者的IP并加以確定的。
1.messages
/var/adm是UNIX的日志目錄(linux下則是/var/log)。有相當多的ASCII文本格式的日志保存之下,當然 ,讓我們把焦點(diǎn)首先集中在messages 這個(gè)文件,這也是入侵者所關(guān)心的文件,它記錄了來(lái)自系統級別的信息。在這里,大量的日志記錄對于我們是無(wú)用的。
比如:
Apr 25 21:49:30 2000 unix: Copyright (c) 1983-1997, Sun Microsystems, Inc.
Apr 25 21:49:30 2000 unix: mem = 262144K (0x10000000)
這樣顯示版權或者硬件信息的記錄而:
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`(當然,有可能入侵者已經(jīng)幫我們做過(guò)了,;-)那樣我們得不到任何有用信息)
在下面這個(gè)網(wǎng)址你可以找到大量的日志審計分析工具或者腳:
http://www.securityfocus.com/templates/tools_category.html?category=2&platform=&path=[%20auditing%20][%2-0log%20analysis%20]
2.wtmp,utmp logs,ftp日志
你能夠在/var/adm,/var/log,/etc目錄中找到名為wtmp,utmp的文件,這記錄著(zhù)用戶(hù)何時(shí),何地telnet上主機, 在黑客中最古老也是最流行的zap2(編譯后的文件名一般叫做z2,或者是叫wipe). 也是用來(lái)抹掉在這兩個(gè)文件中用戶(hù)登錄的信息的,然而由于懶惰或者糟糕的網(wǎng)絡(luò )速度(>3秒的echo就令人崩潰,而我經(jīng)常遇見(jiàn)10 倍于此的回顯時(shí)間 ),很多入侵者沒(méi)有上載或編譯這個(gè)文件,管理員所需要就是使用lastlog這個(gè)命令來(lái)獲得入侵者上次連接的源地址( 當然,這個(gè)地址有可能是他們的一個(gè)跳板)ftp日志一般是/var/log/xferlog,該文本形式的文件詳細的記錄了以FTP 方式上傳文件的時(shí)間,來(lái)源,文件名等等。不過(guò)由于該日志太明顯,所以稍微高明些的入侵者幾乎不會(huì )使用該方法來(lái)傳文件。而使用rcp的較普遍些.當然你可以# cat /var/log/xferlog | grep -v 202.106.147.來(lái)查看那些不應該出現的地址。
3.sh_history
在獲得root 權限后,入侵者建立了他們自己的入侵賬號,更高級的技巧是給類(lèi)似uucp,lp不常使用的系統用戶(hù)名加上密碼。在遭受入侵后,即使入侵者刪除了.sh_history或者.bash_hi-story 這樣的文件,執行kill -HUP `cat /var/run/inetd.conf`即可將保留在內存頁(yè)中的bash命令記錄重新寫(xiě)回到磁盤(pán),然后執行find / -name.sh_historyprint,仔細查看每個(gè)可疑的shell命令日志。尤其是當你在/usr/spool/lp(lp home dir),/usr/lib/uucp/(uucp home dir)這樣的目錄下找了.sh_history文件時(shí)。往往入侵者在需要目標機和工作機傳送文件時(shí)為了避免被syslog,可能使用從目標機ftp到工作機的方法,因此在sh_history中你有可能發(fā)現類(lèi)似ftp xxx.xxx.xxx.xxx或者rcpnobody@xxx.xxx.xxx.xxx:/tmp/backdoor /tmp/backdoor這樣顯示出入侵者IP或域名的命令。
5.http服務(wù)器日志
這很有可能是確定入侵者的真實(shí)攻擊發(fā)源地的最有效方法。以最流行的apache服務(wù)器為例,在${prefix}/logs/ 目錄下你可以發(fā)現access.log這個(gè)文件,該文件記載了訪(fǎng)問(wèn)者的IP,訪(fǎng)問(wèn)的時(shí)間和請求訪(fǎng)問(wèn)的內容。在遭受入侵后,我們應該可以在該文件中發(fā)現類(lèi)似下面的: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 -來(lái)自IP為xxx.xxx.xxx.xxx的某人在2000年4月28號的0點(diǎn)28分試圖訪(fǎng)問(wèn)/msads/Samples/SELECTOR/showcode.asp文件,這是在使用web cgi掃描器后遺留下的日志。大部分的web掃描器都是基于MS操作系統的,而為了更快的速度,使用基于*nix的掃描器的入侵者常選擇離自己最近的服務(wù)器。結合攻擊時(shí)間和IP,我們可以知道入侵者的大量信息。
6.核心dump
這是一種相對較復雜的方法,但是也有效 。一個(gè)安全穩定的守護進(jìn)程在正常運行的時(shí)候是不會(huì )dump出系統的核心,當入侵者利用遠程漏洞攻擊時(shí),許多服務(wù)正在執行一個(gè)getpeername的socket 函數調用(參見(jiàn)socket編程),因此入侵者的IP也保存在內存中,此時(shí)服務(wù)overflow ,系統p 內存頁(yè)文件被dump到core文件,這意味著(zhù)你可能在一大段雜亂無(wú)章的字符中(事實(shí)上是一個(gè)全局數據庫中的進(jìn)程變量)找到一個(gè)包含有執行此expoloit的IP。BTW: 這段是參考了http://members.tripod.com/mixtersecurity/paper.html后寫(xiě)出的,我做了一個(gè)cmsd的遠程攻擊測試,但只在中間找到了入侵者遠程overflow的部分命令,沒(méi)有找到IP。不過(guò)這仍有理由相信Mixter(paper.html的作者)的話(huà)。
7.代理服務(wù)器日志
代理是大中型企業(yè)網(wǎng)常使用來(lái)做為內外信息交換的一個(gè)接口,它忠實(shí)地記錄著(zhù)每一個(gè)用戶(hù)所訪(fǎng)問(wèn)的內容,當然,也包括入侵者的訪(fǎng)問(wèn)內容。以最常用的squid代理為例,通常你可以在/usr/local/squid/logs/下找到access.log 這個(gè)龐大的日志文件,當然,由于日志記錄添加得很快,在安全事故后應該及時(shí)備份它。你可以在以下地址獲得squid的日志分析腳本:http://www.squid-cache.org/Doc/Users-Guide/added/stats.html通過(guò)對敏感文件訪(fǎng)問(wèn)日志的分析,可以知道何人在何時(shí)訪(fǎng)問(wèn)了這些本該保密的內容。
8.路由器日志
默認方式下路由器不會(huì )記錄任何掃描和登錄,因此入侵者常用它做跳板來(lái)進(jìn)行攻擊。如果你的企業(yè)網(wǎng)被劃分為軍事區和非軍事區的話(huà),添加路由器的日志記錄將有助于日后追蹤入侵者。更重要的是,對于管理員來(lái)說(shuō),這樣的設置能確定攻擊者到底是內賊還是外盜。當然,你需要額外的一臺服務(wù)器來(lái)放置router.log文件。
在CISCO路由器上:
router(config)# logging faclity syslog
router(config)# logging trap informational
router(config)# logging [服務(wù)器名]
在log server上:
I.在/etc/syslog.conf中加入一行:
*.info /var/log/router.log
II.生成文件日志文件:
touch /var/log/router.log
III.重起syslogd進(jìn)程:
kill -HUP `cat /var/run/syslogd.pid`
對于入侵者來(lái)說(shuō),在實(shí)施攻擊的整個(gè)過(guò)程中不與目標機試圖建立tcp連接是不太可能的,這里有許多入侵者主觀(guān)和客觀(guān)的原因, 而且在實(shí)施攻擊中不留下日志也是相當困難的。如果我們花上足夠的時(shí)間和精力,是可以從大量的日志中分析出我們希望的信息。 就入侵者的行為心理而言,他們在目標機上取得的權限越大,他們就越傾向于保守的方式來(lái)建立與目標機的連接 。仔細分析早期的日志,尤其是包含有掃描的部分,我們能有更大的收獲。
日志審計只是作為入侵后的被動(dòng)防御手段。主動(dòng)的是加強自身的學(xué)習,及時(shí)升級或更新系統。做到有備無(wú)患才是最有效的防止入侵的方法。

