作者:Van Hauser/THC
翻譯:bkbll(bkbll@263.net)/cnhonker(www.cnhonker.com)
譯者的話:
這是我第一次嘗試翻譯此類文章,由本人經驗不足,可能有些專業詞匯等翻譯的很不恰當,還請各位大俠多多包涵原諒,並請指出.另外,原文提供的下載www-shell.pl地址不可用了.不知道哪裡還有下載的?還請指點一二.原文裡面有幾句我不知道該怎翻譯。所以也把原文給貼了上來。
介紹:
這篇文章是用來描述如何在不同的防火牆結構面設置可行的門.在其他的的環境下還可以理解成是一篇介紹黑客們(你?)如何掩飾他們侵入某個系統途徑的文章.
黑客們通常都想再一次進入他們曾經入侵的機器.即使將面對這些機器可能會安裝新的防火牆或者打上了補丁等的困難.要完成再一次入侵,他們必須安裝門(backdoor).他們的目的是:a)為了他們的工作 b)不易被發現. 而門的種類則取決該服務器所用到的防火牆結構.一個好的門應該能適用各種防火牆,並且具有很強的隱蔽性,這樣你才能分享再一次侵入的感覺.
防火牆的結構:
現在有兩種基本的防火牆結構,每一種都有其增強版本.
包過濾器:
在數據包通過交換介質傳遞時,有一台服務器或者路由器來檢查每一個包是否背離了路由規則表中的允許/拒絕規則. 還有一種簡單的防火牆僅僅只能依靠來源機器地址,目標機器地址和目標機器端口來進行過濾.比較好的一種還能依靠數據來源層,源端口,日期/時間和一些tcp,ip數據包標志來進行包過濾.
這些只能稱為單一的路由器比如一些Cisco,用ipfwadm設置防火牆的linux系統.
狀態過濾器:
這是一種比較高級的數據包過濾器.它同樣依據路由表總的規則檢查每一個數據包看是否背離了該規則,只有允許的才能通過.但同時它還跟蹤TCP順序數的狀態信息.同時需要注意有些需要欺騙的應用協議,比如在一個允許的ftp會話中指定的ftp數據通道.(這句話翻譯有點困難,現把原文摘錄如下: Some pay attention to application protocols which allows tricks such as only opening ports to the interiour network for ftp-data channels which were specified in a permitted ftp session.).這些過濾器還能通過防火牆安全的抓獲UDP數據包,如NS和RPC等,這是因為UDP 是一種無狀態的協議,在RPC服務中表現的尤其突出.
這種防火牆一般是存在某些大型的開啟了ip過濾軟件的OpenBSD機器,一台Cisco Pix,Watchguard或者是名的checkpoint FW-1中.
網關循環代理:
一台起代理作用的防火牆只是一台沒有活動路由並且僅僅只是裝了代理軟件.舉例來說,有些代理服務器可能是用來作www的squid代理,sendmail轉信或者僅僅是sockd代理.(譯者:sockd代理即是sock4或者sock5代理,只是不知道這個sendmail轉信是什東東,原文是: a sendmail relay configuration).
網關應用軟件:
這是一種比較高級的代理.當安裝了一種能作代理的軟件,每一個應用請求都應該通過該防火牆.這種網關能嚴格檢查每一個應答和請求,比如:一個只允許連出去的ftp請求就應該只能下載而不能上傳,並且在應答信號裡面不應該包括病毒,緩沖區溢出等數據.有人會爭論說squid代理也是一種應用網關,因為它有很多健全的數據檢查,並且允許你過濾數據.但是它不是說如果在一種安全的環境裡安裝就沒有任何安全漏洞.
大部分在市場上銷售的防火牆都是以上所介紹的防火牆的混和品.他們不僅僅只有一種軟件來提供代理.舉例來說,IBM的防火牆是一種簡單的、能對socks以及其他各種代理進行數據包過濾的防火牆.我不想討論哪一種防火牆產品是最好的,因為這篇文章不是用來教你怎購買防火牆.但是我想說:網關的配置是要遠遠超出防火牆本身所提供的安全性.即使你的防火牆花了很多錢,速度也很快,能提供多種協議,具有開放的網絡體系,傻瓜似的操作,並且是市場上大量宣傳,但是如果配置不當同樣會容易被攻擊.
進入:
在我們第一次突破防火牆時,討論對某種防火牆結構要撕開一道口子,什門是最好的之前,我們必須認識到突破一道防火牆並不是一個小孩子過家家的事情,我們必須謹慎的計劃行事。
有四種主要的可能性:
1. 內部
在你的公司裡面有人(你的男/女朋友,雇員)安裝了一個門,這是最容易的途徑。
2. 容易受攻擊的服務。
幾乎所有的網絡都提供一些服務,比如e-mail,WWW或者DNS等。這些都是本身就安裝在防火牆上面或者安裝在防火牆前面的一台機器上面(該機器未受防火牆保護),還可以是安裝在內部的一台機器上面.如果一個攻擊者能找到這些服務的漏洞,他就可以比較幸運的入侵了..如果你看見存在這多的防火牆提供轉發郵件服務,你肯定會開懷大笑的.
易受攻擊的外部機器
防火牆面的人們通常都在外部的機器上面工作.如果攻擊者能攻擊這些機器,而該機器倒霉的用戶又設置了x-windows數據回應(譯者:感謝大鷹解釋x-relay)以及sshd服務,那該攻擊者就可以利用這些來進行惡意攻擊,比如進行X-windows的攻擊.攻擊者還可以在客戶端軟件種發送一個偽裝的ftp應答信號給服務器以使其緩沖區溢出,侵入netscape的服務器並且運行一條命令以替換掉WEB服務器上面的gif圖片.(我從來沒有檢查這是不是真的,我沒有仔細檢查過是否真的存在這個可用的緩沖區溢出程序.).事實上是存在這個漏洞,但是攻擊它需要很高的計算機知識.然而,攻擊一台公司防火牆之外的WEB服務器通常是一個好的開始.有些防火牆的配置是允許某些機器能夠登陸進來,是別人可以監聽並且得到這些機器IP.這在美國某些學校以及工業/軍事的機器中尤為突出.
連接劫持:
某些公司認為如果他們只允許經過安全的身份驗証的機器才能登陸就安全了.其實任何人都可以在身份驗証劫持連接並侵入系統.另外一種方法是使用連接劫持來修改所執行的協議的回應數據,並使對方的緩沖區溢出(比如利用X-window的).
特洛伊木馬:
使用特洛伊木馬可以幹任何事情.這可能是一個gzip壓縮文件,運行它能使緩沖區溢出(同時需要安裝gzip軟件)或者是一個tar文件,它能修改logout來執行任何命令;它還可以是一個可執行文件或者一段源代碼,它被修改成允許黑客使用特定方法侵入.要使別人來執行木馬,通常使用郵件欺騙手段以及替換掉某些站點維護人員需要規律性的升級他們的軟件的原來軟件.(我們可以通過查詢ftp傳輸記錄文件以及WWW記錄來知道哪些文件被替換)
放置門:
一個聰明的黑客是不會把門安裝在防火牆管轄內的機器上面的,因為這些機器經常受到監視並且周期性的檢測.一般是安裝在互聯網上的機器上面.因為這些機器不會長期保護,並且沒有很多的管理員進行安全性的檢測.
我將和大家討論關如何安裝門的一些方法.請注意運行在一台狀態過濾器防火牆上面的程序同樣可以工作在一台普通的包過濾器防火牆上面,還有代理服務器.應用網關的門使指能工作在任何結構的防火牆上面.有些已經是激活的,有些則是的非活動的.已經激活的門允許黑客任何時候使用它.而非活動的門則需要時間或者某些事件來激活它,黑客需要等待它被激活.
包過濾器:
這種情況很難找到一種能侵入這種防火牆的門,在我看來有以下幾種辦法:
a)ack-telnet 它的工作狀況和普通的telnet/telnted一樣,只是和普通的tcp的三次握手協議不同的是它僅僅使用TCP ACK的數據包,因為他們看起來是屬已經建立(允許)的連接,它們被允許通過.使用Coder's Spoofit project (http://reptile.rug.ac.be/~coder)的spoofit.h很容易寫出這個代碼.
b)(譯者:這句話我不知道怎翻譯) Loki from Phrack 49/51可以被再一次用來建立一個icmp顯示以及響應的數據包通道.但是有些代碼需要重新編譯(譯者:原文是: But some coding would be needed to to be done,但使我覺得應該這樣翻譯比較合適一點).
c) daemonshell-udp是一種採用UDP協議的門(在http://r3wt.base.org/種搜索thc-uht1.tgz文件)
d)最一個但不是最不起眼的.大部分的防火牆系統僅僅只有一個路由或者防火牆允許任何從端口20一直到高端口(>!023)的TCP連接,所以使用允許的非被動的ftp協議來運行”netcat p 20 target port-of-bindshell”是一個最快的辦法.
狀態過濾器:
在這裡黑客要使用程序來開始啟動從安全網絡到他外部機器的連接.下面有一些使用的方法:
活動的(已經激活的)
(譯者:不明白這句話) tunnel from Phrack 52.
使用帶-R選項的ssh命令.(它比通道好,這是計算機上面比較正式的程序並且能夠加密數據流)
被動式(需要激活)netcat用帶可執行的選項編譯,用帶時間選項的參數運行連接上一個黑客站點。(ftp://ftp.avian.org/).在thc-hut1.tgz文件包裡面的reverse_shell同樣具有這種功能。
網關循環代理:
(譯者:不明白) If socks is used on the firewall, someone can use all those stuff for the stateful filter and "socksify" them.( http://www.thehackerschoice.com/papers/www.socks.net.com).你可以在有關應用網關的篇章上面找到更高級的工具軟件。
應用網關:
現在我們開始認真考慮我們最感興趣的部分.這些配置一般都是比較智能的,所以我們得多花點腦子才行.
活動的(已經激活的).
在公司的web服務器上放置或者修改一個CGI腳本,它能被遠端執行.但是這種做法不太可靠,因為當一台web服務器放到網上的時候,沒有監視/檢查/審核就允許互聯網直接訪問的實在是太少了.我希望沒有人在這方面需要一個例子.;-)
在防火牆上面放置或者修改一個服務/可執行文件.這樣做是比較危險的,因為防火牆經常被檢測並且不時有人在持久的監聽數據.
在防火牆的核心上加載一個可以被加載的模塊,它能隱藏自己的進程並且可以被自己的主人訪問.這是一種最好的活動門但是依然很危險.
隱藏的(需要激活):
E@email-一個email帳號/郵件發送服務程序/郵件閱讀程序都可以被配置成能直接解釋和執行隱藏在郵件中的命令.如果需要的話還返回輸出結果
WWW-這是一種比較牢固的服務;-) 它是一種在互聯網上提供http請求的一種進程.但是在一台欺詐性的www服務器上提供的http回應中,該請求卻是一個真正的應答命令.下面介紹的這種方法是最好以及最容易的一種.(門舉例: The Reverse www shell)
DNS-和以上所介紹的概念是一樣的,不同的是這個是論述DNS的請求和回應.不方便的 是它不能加載太多的數據(http://www.icon.co.za/~wosp/wosp.dns-tunnel.tar.gz,這個例子依然需要很多的編碼才能影響系統.)
門舉例:The Reverse WWW Shell
這個門必須要繞過防火牆.而該防火牆出公司利益考慮,採取一種比較安全的方針,允許用戶在www上暢遊.看看下面這張圖片你就會有比較好的認識了.在我們開始文本方式講述之前請記住這副圖.
+--------+ +------------+ +------------+
網 絡 -------------------- 防火牆 -------------- 黑客所擁
主 機 網絡連接 +------------+ 互聯網 有的主機
+--------+ +------------+
被設置門的機器(SLAVE) 黑客的跳板機(MASTER)
現在,在網絡主機(SLAVE)上面運行了一個程序,該程序每天在一個特定的時候產生一個子進程.對防火牆來說,該子進程就象一個普通用戶一樣,使用它的網景(netscape)瀏覽器在網上沖浪.事實上,這個子進程在本地創建了一個shell,通過看上去象一個合法的httpd請求並且發送一個已經準備好了的信號連接到黑客所控制的www服務器(MASTER)上面.而該www服務器(MASTER)返回的合法應答信號實際上是一個讓子進程在它本地機的shell上面執行的命令.所有的通信數據都被轉換成(我不想把它稱之為”加密”,我不是微軟)Base64結構,並且為了防止服務器有緩存還要給CGI字符串提供一個特殊值.
下面是一個連接的例子:
被侵入的機器(SLAVE)上面:
GET /cgi-bin/order?M5mAejTgZdgYOdgIO0BqFfVYTgjFLdgxEdb1He7krj HTTP/1.0
在黑客控制的服務器(MASTER)上面回應:
g5mAlfbknz
被入侵的機器提交的GET請求是一個shell的命令提示符,而www服務器的應答信號.一個經過轉換的”ls”命令.這是裡面的一些機關:
如果服務器(MASTER)需要,被設置門的機器(SLAVE)會在每天的一個特定的時間裡嘗試連接過去.派生子進程的原因是如果由某種原因導致shell被掛起,那可以在第二天發現並且可以修復它.如果某位管理員看見有一個連向黑客的服務器(MASTER)的連接並且自己本身還連接到自己,他僅僅只去查看已經中斷的web 服務器連接;在被轉化的CGI的GET請求代碼裡面有密碼標記的記錄;支持www的代理(比如squid代理),在進程列表裡面隱藏自己名字的程序等等.
這中間最關鍵的一點是:實現以上這種程序功能的是一個僅僅只有260行代碼的perl文件.它使用起來很簡單:編輯rwwwshell.pl文件為正確的格式,在被控制的機器上面執行:”rwwwshell.pl slave”,在web服務器僅僅只需要在對方連接過來的時間執行rwwwshell.pl.
可是為什要用perl語言來書寫代碼呢?a)用perl可以很快寫出該代碼.b)它用起來特別方便.c)我喜歡它.如果你想在沒有安裝perl的系統上面使用,那請在一個安裝了perl的機器上面,從perl CPAN資料中心下載a3編譯器並將起編譯為二進制文件.然切換到你的目標機器上面運行它.
這種既實用又簡單的軟件代碼的code我附在了這篇文檔的面.如果對它有什建議和意見或者批評請不要使用email來和我討論.如果你覺得這篇文章或者程序有什缺陷,請給root@localhost(譯者:?這個mail地址?????)來信.請到http://r3wt.base.org找到升級的版本.
請到這裡抓取:
http://www.thehackerschoice.com/papers/rwwwshell-1.6.perl
安全性:
如何讓程序捕被防火牆發現和拒絕服務在現在是一件很有趣的問題.你必須清楚的是你要使用一種嚴格的應用網關防火牆,它具有嚴格的控制規則.email必須放在中央郵件服務器上面處理,DNS解析只能對www/ftp代理開放,並且是先在www代理驗証通過的情況下才能解析.可是這些是遠遠不夠的.一個攻擊可以修改郵件頭的內容,並且從加密的X-header中釋放出來運行.他還可以利用reverse www-shell來輕易的實現身份認証.同時還可以使用比較好的工具定期檢查DNS和WWW的記錄/緩存,經常切換工作的外部主機或者使用別的方法,這樣也許能戰勝黑客.
有一種比較安全的方法就是在連接上internet的時候建立起第二道網絡,真實的網絡可以通外界分離-但是如果告訴你們的雇員這些……..一個好的防火牆是比較進步的,並且可以得到一個入侵檢測的幫助.但是這些是阻止不了一個執意要闖入的攻擊者.
最的話:
請享受hacking/securing系統的樂趣吧.
歡迎大家都能認識我;-)尤其是那些我得到啟發的朋友.你們知道我指的誰..
再見:
van Hauser / [THC] - The Hacker's Choice
如果想進一步和我討論這些感興趣的話題,可以使用下面的PGP keys給我e-mail::vh@reptile.rug.be
Type Bits/KeyID Date User ID
pub 2048/CDD6A571 1998/04/27 van Hauser / THC
-----公眾PGP密鑰開始-----
Version: 2.6.3i
mQENAzVE0A4AAAEIAOzKPhKBDFDyeTvMKQ1xx6781tEdIYgrkrsUEL6VoJ8H8CIU
SeXDuCVu3JlMKITD6nPMFJ/DT0iKHgnHUZGdCQEk/b1YHUYOcig1DPGsg3WeTX7L
XL1M4DwqDvPz5QUQ+U+VHuNOUzgxfcjhHsjJj2qorVZ/T5x4k3U960CMJ11eOVNC
meD/+c6a2FfLZJG0sJ/kIZ9HUkY/dvXDInOJaalQc1mYjkvfcPsSzas4ddiXiDyc
QcKX+HAXIdmT7bjq5+JS6yspnBvIZC55tB7ci2axTjwpkdzJBZIkCoBlWsDXNwyq
s70Lo3H9dcaNt4ubz5OMVIvJHFMCEtIGS83WpXEABRG0J3ZhbiBIYXVzZXIgLyBU
SEMgPHZoQHJlcHRpbGUucnVnLmFjLmJlPokAlQMFEDVE0D7Kb9wCOxiMfQEBvpAD
/3UCDgJs1CNg/zpLhRuUBlYsZ1kimb9cbB/ufL1I4lYM5WMyw+YfGN0p02oY4pVn
CQN6ca5OsqeXHWfn7LxBT3lXEPCckd+vb9LPPCzuDPS/zYNOkUXgUQdPo69B04dl
C9C1YXcZjplYso2q3NYnuc0lu7WVD0qT52snNUDkd19ciQEVAwUQNUTQDhLSBkvN
1qVxAQGRTwgA05OmurXHVByFcvDaBRMhX6pKbTiVKh8HdJa8IdvuqHOcYFZ2L+xZ
PAQy2WCqeakvss9Xn9I28/PQZ+6TmqWUmG0qgxe5MwkaXWxszKwRsQ8hH+bcppsZ
2/Q3BxSfPege4PPwFWsajnymsnmhdVvvrt69grzJDm+iMK0WR33+RvtgjUj+i22X
lpt5hLHufDatQzukMu4R84M1tbGnUCNF0wICrU4U503yCA4DT/1eMoDXI0BQXmM/
Ygk9bO2Icy+lw1WPodrWmg4TJhdIgxuYlNLIu6TyqDYxjA/c525cBbdqwoE+YvUI
o7CN/bJN0bKg1Y/BMTHEK3mpRLLWxVMRYw==
=MdzX
-----密鑰結束-----
(http://www.fanqiang.com)
進入【UNIX論壇】
|