“木馬”原理及其VB簡單實(shí)現(xiàn)分析
摘 要:簡易介紹“木馬”的危害性及種類,了解其從病毒中單獨(dú)剝離出來的原因,并通過vb程序?qū)崿F(xiàn)來詳細(xì)闡述其工作原理。
本文引用地址:http://butianyuan.cn/article/202124.htm關(guān)鍵詞:木馬;VB;注冊表;應(yīng)用程序
“木馬”原指古希臘士兵藏在木馬內(nèi)進(jìn)入敵方城市從而占領(lǐng)敵方城市的故事。許多計(jì)算機(jī)用戶特別是新手對安全問題了解不多,所以并不知道自己的計(jì)算機(jī)中了“木馬”之后應(yīng)該如何清除。關(guān)鍵是得知道“木馬”的工作原理,在了解其原理之后,查殺木馬也就變得簡單易行了。
1 木馬分類
(1)遠(yuǎn)程控制木馬。
遠(yuǎn)程控制木馬是數(shù)量最多,危害最大,同時(shí)知名度也最高的一種木馬,它可以讓攻擊者完全控制被感染的計(jì)算機(jī),攻擊者可以利用它完成一些甚至連計(jì)算機(jī)主人本身都不能順利進(jìn)行的操作。
(2)密碼發(fā)送木馬。
密碼發(fā)送型的木馬是專門為了****被感染計(jì)算機(jī)上的密碼而編寫的,木馬一旦被執(zhí)行,就會(huì)自動(dòng)搜索內(nèi)存,Cache,臨時(shí)文件夾以及各種敏感密碼文件,一旦搜索到有用的密碼,木馬就會(huì)利用免費(fèi)的電子郵件服務(wù)將密碼發(fā)送到指定的郵箱。
(3)鍵盤記錄木馬。
這種特洛伊木馬就是記錄受害者的鍵盤敲擊并且在LOG文件里查找密碼,隨著Windows的啟動(dòng)而啟動(dòng)。
(4)DoS攻擊木馬。
隨著DoS攻擊越來越廣泛的應(yīng)用,被用作DoS攻擊的木馬也越來越流行起來。當(dāng)你入侵了一臺機(jī)器,給他種上DoS攻擊木馬,那么日后這臺計(jì)算機(jī)就成為你DoS攻擊的最得力助手了。
(5)FTP木馬。
這種木馬可能是最簡單的木馬了,其歷史悠久,它的惟一功能就是打開21端口,等待用戶連接?,F(xiàn)在新FTP木馬還加上了密碼功能,這樣,只有攻擊者本人才知道正確的密碼,從而進(jìn)人用戶計(jì)算機(jī)。
(6)反彈端口型木馬。
反彈端口型木馬的服務(wù)端 (被控制端)使用主動(dòng)端口,客戶端 (控制端)使用被動(dòng)端口。木馬定時(shí)監(jiān)測控制端的存在,發(fā)現(xiàn)控制端上線立即彈出端口主動(dòng)連結(jié)控制端打開的主動(dòng)端口。
2 木馬的工作原理
(1)木馬的隱藏。
下面是一個(gè)用vb編輯的木馬程序,用于隱藏木馬。
程序的具體編制操作
①新建一個(gè)工程名命名為Hidden, 在工程hidden中添加模塊Modulel,應(yīng)用程序標(biāo)題也改為Hidden。
在模塊Module1中加入如下聲明:
Public Declare Function GetCurrentProcessId Lib “kernel32”
‘獲得當(dāng)前進(jìn)程ID函數(shù)的聲明。
Public Declare Function RegisterServiceProcess Lib “kernel32”
‘在系統(tǒng)中注冊當(dāng)前進(jìn)程ID函數(shù)的聲明。
②在Project1中新建一個(gè)窗體Form1,設(shè)置Form1的屬性:
在代碼窗口添加如下代碼:
Private Declare Function GetDriveType Lib “kernel32” Alias “GetDriveTypeA”
獲得當(dāng)前驅(qū)動(dòng)器信息函數(shù)的聲明:
Private Sub Form_Load()
Dim drive_no As Long, drive_flag As Long
Dim drive_chr As String, drive_disk As String
Dim serial_no As Long, kkk As Long
Dim stemp3 As String, dflag As Boolean
Dim strlabel As String, strtype As String,strc As Long
RegisterServiceProcess GetCurrentProcessId, 1 ‘ 從系統(tǒng)中取消當(dāng)前進(jìn)程:
strlabel = String(255, Chr(0))
strtype = String(255, Chr(0))
stemp3 = “用戶c盤序列號” ‘用戶C盤的序列號(十進(jìn)制),讀者可根據(jù)自己情況給出。
dflag = False
For drive_no = 0 To 25
drive_disk = Chr(drive_no + 67)
drive_chr = drive_disk “:/”
drive_flag = GetDriveType(drive_chr)
If drive_flag = 3 Then
kkk = GetVolumeInformation(drive_chr, strlabel, Len(strlabel), serial_no, 0, 0, strtype,Len(strtype)) ‘通過GetVolumeInformation獲得磁盤序列號:
Select Case drive_no
Case 0
strc = serial_no
End Select
If serial_no = stemp3 Then
dflag = True
Exit For
End If
End If
Next drive_no
If drive_no = 26 And dflag = False Then ‘非法用戶
GoTo err:
End If
MsgBox (“HI,合法用戶!”)
Exit Sub
err:
MsgBox (“錯(cuò)誤!你的C:盤ID號是” strc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
RegisterServiceProcess GetCurrentProcessId, 0 ‘從系統(tǒng)中取消當(dāng)前程序的進(jìn)程:
End Sub
(2)木馬的啟動(dòng)。
“木馬”的啟動(dòng)方式有很多種,這里我們介紹幾種主要的:
①在Win.ini的[windows]字段中有啟動(dòng)命令“load=”和“run=”,在一般情況下 “=”后面是空白的,如果有后跟程序,比方說是這個(gè)樣子:
run=c:/windows/file.exeload=c:/windows/file.exe
②在system.ini文件中,在[BOOT]下面有個(gè)“shell=文件名”。正確的文件名應(yīng)該是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”。
③在注冊表中的情況最復(fù)雜,通過regedit命令打開注冊表編輯器,在點(diǎn)擊至:“HKEY-LOCAL-MACHINE/ Software/ Microsoft/ Windows/ CurrentVersion/ Run”目錄下,查看鍵值中有沒有自己不熟悉的自動(dòng)啟動(dòng)文件,擴(kuò)展名為EXE。
參考文獻(xiàn)
[1]@孫鋒. 網(wǎng)絡(luò)安全與防黑技術(shù)[M]. 北京:機(jī)械工業(yè)出版社,2004.
[2]齊鋒. Visual Basic 6.0程序設(shè)計(jì)[M]. 北京:中國鐵道出版社,2003.
評論