基本介紹
劃時代的軟體,編程工具的選擇,編程的方法,
劃時代的軟體
我那時在《電腦報》上看到一篇文章,大意是一個菜鳥被人用BO控制了,嚇得整天吃不下飯、睡不著覺、上不了網,到處求救!要知道,木馬(Trojan)的歷史是很悠久的:早在AT&TUnix和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中的鳥函式了。
黑客組織
2000年,一個自稱屬於“死牛崇拜”(The Cult of the Dead Cow)組織的一群黑客表示,他們即將把一種能突破網路封鎖的程式公布上網。
這個程式類似網路音樂共享程式Napster,不需透過網路伺服器主機即可與其他電腦連繫,如此一來,古巴、伊朗等國家所作的各種網路阻斷措施都將“破功”。
舊金山“電子疆界基金會”律師柯恩表示,這種程式可以突破一些國家政府所做的網路檢查過濾措施。