死牛崇拜

特洛依木馬這個名詞大家應該不陌生,自從98年“死牛崇拜”黑客小組公布Back Orifice以來,木馬猶如平地上的驚雷, 使在Dos——Windows時代中長大的中國網民從五彩繽紛的網路之夢中驚醒,終於認識到的網路也有它邪惡的一面,一時間人心惶惶。

引言

特洛依木馬這個名詞大家應該不陌生,自從98年“死牛崇拜”黑客小組公布Back Orifice以來,木馬猶如平地上的驚雷, 使在Dos——Windows時代中長大的中國網民從五彩繽紛的網路之夢中驚醒,終於認識到的網路也有它邪惡的一面,一時間人心惶惶。
我那時在《電腦報》上看到一篇文章,大意是一個菜鳥被人用BO控制了,嚇得整天吃不下飯、睡不著覺、上不了網,到處求救!要知道,木馬(Trojan)的歷史是很悠久的:早在AT&T Unix和BSD Unix十分盛行的年代,木馬是由一些玩程式(主要是C)水平很高的年輕人(主要是老美)用C或Shell語言編寫的,基本是用來竊取登入主機的口令,以取得更高的許可權。那時木馬的主要方法是誘騙——先修改你的.profile檔案,植入木馬;當你登入時將你敲入的口令字元存入一個檔案,用Email的形式發到攻擊者的信箱里。國內的年輕人大都是在盜版Dos的薰陶下長大的,對網路可以說很陌生。直到Win9x橫空出世,尤其是WinNt的普及,大大推動了網路事業的發展的時候,BO這個用三年後的眼光看起來有點簡單甚至可以說是簡陋的木馬(甚至在Win9x的“關閉程式”對話框可以看到進程)給了當時中國人極大的震撼,它在中國的網路安全方面可以說是一個劃時代的軟體。

程式編寫

自己編寫木馬,聽起來很Cool是不是?!木馬一定是由兩部分組成——伺服器程式Server)和客戶端程式Client),伺服器負責打開攻擊的道路,就像一個內奸特務;客戶端負責攻擊目標,兩者需要一定的網路協定來進行通訊(一般是TCP/IP協定)。為了讓大家更好的了解木馬攻擊技術,破除木馬的神秘感,我就來粗略講一講編寫木馬的技術並順便編寫一個例子木馬,使大家能更好地防範和查殺各種已知和未知的木馬。
首先是編程工具的選擇。目前流行的開發工具有C++Builder、VC、VB和Delphi,這裡我們選用C++Builder(以下簡稱BCB);VC雖然好,但GUI設計太複雜,為了更好地突出我的例子,集中注意力在木馬的基本原理上,我們選用可視化的BCB;Delphi也不錯,但缺陷是不能繼承已有的資源(如“死牛崇拜”黑客小組公布的BO2000原始碼,是VC編寫的,網上俯拾皆是);VB嘛,談都不談——難道你還給受害者傳一個1兆多的動態程式庫——msvbvm60.dll嗎?
啟動C++Builder 5.0企業版,新建一個工程,添加三個VCL控制項:一個是Internet頁中的Server Socket,另兩個是Fastnet頁中的NMFTP和NMSMTP。Server Socket的功能是用來使本程式變成一個伺服器程式,可以對外服務(對攻擊者敞開大門)。Socket最初是在Unix上出現的,後來微軟將它引入了Windows中(包括Win98和WinNt);後兩個控制項的作用是用來使程式具有FTP(File Transfer Protocol檔案傳輸協定)和SMTP(Simple Mail Transfer Protocol簡單郵件傳輸協定)功能,大家一看都知道是使軟體具有上傳下載功能和發郵件功能的控制項。
Form窗體是可視的,這當然是不可思議的。不光占去了大量的空間(光一個Form就有300K之大),而且使軟體可見,根本沒什麼作用。因此實際寫木馬時可以用一些技巧使程式不包含Form,就像Delphi用過程實現的小程式一般只有17K左右那樣。
我們首先應該讓我們的程式能夠隱身。雙擊Form,首先在FormCreate事件中添加可使木馬在Win9x的“關閉程式”對話框中隱藏的代碼。這看起來很神秘,其實說穿了不過是一種被稱之為Service的後台進程,它可以運行在較高的優先權下,可以說是非常靠近系統核心的設備驅動程式中的那一種。因此,只要將我們的程式在進程資料庫中用RegisterServiceProcess()函式註冊成服務進程(Service Process)就可以了。不過該函式的聲明在Borland預先打包的頭檔案中沒有,那么我們只好自己來聲明這個位於KERNEL32.DLL中的鳥函式了。

相關詞條

相關搜尋

熱門詞條

聯絡我們