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