歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> Unix 的入侵追蹤

Unix 的入侵追蹤

日期:2017/3/2 10:44:02   编辑:Linux維護

  在*NIX系統遭受入侵後,確定損失及入侵者的攻擊源地址相當重要。雖然在大多數入侵者懂得使用曾被他們攻陷的機器作為跳板來攻擊你的服務器可在他們發動正式攻擊前所做的目標信息收集工作(試探性掃描)常常是從他們的工作機開始的,本篇介紹如何從遭受入侵的系統的日志中分析出入侵者的IP並加以確定的。

  1.messages

  /var/adm是UNIX的日志目錄(linux下則是/var/log)。有相當多的ASCII文本格式的日志保存之下,當然 ,讓我們把焦點首先集中在messages 這個文件,這也是入侵者所關心的文件,它記錄了來自系統級別的信息。在這裡,大量的日志記錄對於我們是無用的。

  比如:

  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`(當然,有可能入侵者已經幫我們做過了,;-)那樣我們得不到任何有用信息)

  在下面這個網址你可以找到大量的日志審計分析工具或者腳:

  http://www.securityfocus.com/tem ... platform=&path=[%20auditing%20][%2-0log%20analysis%20]

  2.wtmp,utmp logs,ftp日志

  你能夠在/var/adm,/var/log,/etc目錄中找到名為wtmp,utmp的文件,這記錄著用戶何時,何地telnet上主機, 在黑客中最古老也是最流行的zap2(編譯後的文件名一般叫做z2,或者是叫wipe). 也是用來抹掉在這兩個文件中用戶登錄的信息的,然而由於懶惰或者糟糕的網絡速度(>3秒的echo就令人崩潰,而我經常遇見10 倍於此的回顯時間 ),很多入侵者沒有上載或編譯這個文件,管理員所需要就是使用lastlog這個命令來獲得入侵者上次連接的源地址( 當然,這個地址有可能是他們的一個跳板)ftp日志一般是/var/log/xferlog,該文本形式的文件詳細的記錄了以FTP 方式上傳文件的時間,來源,文件名等等。不過由於該日志太明顯,所以稍微高明些的入侵者幾乎不會使用該方法來傳文件。而使用rcp的較普遍些.當然你可以# cat /var/log/xferlog | grep -v 202.106.147.來查看那些不應該出現的地址。

  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/(uucp home dir)這樣的目錄下找了.sh_history文件時。往往入侵者在需要目標機和工作機傳送文件時為了避免被syslog,可能使用從目標機ftp到工作機的方法,因此在sh_history中你有可能發現類似ftp xxx.xxx.xxx.xxx或者[email protected]:/tmp/backdoor /tmp/backdoor這樣顯示出入侵者IP或域名的命令。

  5.http服務器日志

  這很有可能是確定入侵者的真實攻擊發源地的最有效方法。以最流行的apache服務器為例,在 ${prefix}/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掃描器都是基於MS操作系統的,而為了更快的速度,使用基於*nix的掃描器的入侵者常選擇離自己最近的服務器。結合攻擊時間和IP,我們可以知道入侵者的大量信息。

  6.核心dump

  這是一種相對較復雜的方法,但是也有效 。一個安全穩定的守護進程在正常運行的時候是不會dump出系統的核心,當入侵者利用遠程漏洞攻擊時,許多服務正在執行一個getpeername的socket 函數調用(參見socket編程),因此入侵者的IP也保存在內存中,此時服務overflow ,系統p 內存頁文件被dump到core文件,這意味著你可能在一大段雜亂無章的字符中(事實上是一個全局數據庫中的進程變量)找到一個包含有執行此expoloit的IP。BTW: 這段是參考了http://members.tripod.com/mixtersecurity/paper.html後寫出的,我做了一個cmsd的遠程攻擊測試,但只在中間找到了入侵者遠程overflow的部分命令,沒有找到IP。不過這仍有理由相信Mixter(paper.html的作者)的話。

  7.代理服務器日志

  代理是大中型企業網常使用來做為內外信息交換的一個接口,它忠實地記錄著每一個用戶所訪問的內容,當然,也包括入侵者的訪問內容。以最常用的squid代理為例,通常你可以在/usr/local/squid/logs/下找到access.log 這個龐大的日志文件,當然,由於日志記錄添加得很快,在安全事故後應該及時備份它。你可以在以下地址獲得squid的日志分析腳本:http://www.squid-cache.org/Doc/Users-Guide/added/stats.html通過對敏感文件訪問日志的分析,可以知道何人在何時訪問了這些本該保密的內容。

  8.路由器日志

  默認方式下路由器不會記錄任何掃描和登錄,因此入侵者常用它做跳板來進行攻擊。如果你的企業網被劃分為軍事區和非軍事區的話,添加路由器的日志記錄將有助於日後追蹤入侵者。更重要的是,對於管理員來說,這樣的設置能確定攻擊者到底是內賊還是外盜。當然,你需要額外的一台服務器來放置router.log文件。

  在CISCO路由器上:

  router(config)# logging faclity syslog

  router(config)# logging trap informational

  router(config)# logging [服務器名]

  在log server上:

  I.在/etc/syslog.conf中加入一行:

  *.info /var/log/router.log

  II.生成文件日志文件:

  touch /var/log/router.log

  III.重起syslogd進程:

  kill -HUP `cat /var/run/syslogd.pid`

  對於入侵者來說,在實施攻擊的整個過程中不與目標機試圖建立tcp連接是不太可能的,這裡有許多入侵者主觀和客觀的原因, 而且在實施攻擊中不留下日志也是相當困難的。如果我們花上足夠的時間和精力,是可以從大量的日志中分析出我們希望的信息。 就入侵者的行為心理而言,他們在目標機上取得的權限越大,他們就越傾向於保守的方式來建立與目標機的連接 。仔細分析早期的日志,尤其是包含有掃描的部分,我們能有更大的收獲。

  日志審計只是作為入侵後的被動防御手段。主動的是加強自身的學習,及時升級或更新系統。做到有備無患才是最有效的防止入侵的方法。

Copyright © Linux教程網 All Rights Reserved