前言:本站為你精心整理了木馬原理實現(xiàn)范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。
摘要:簡易介紹“木馬”的危害性及種類,了解其從病毒中單獨(dú)剝離出來的原因,并通過vb程序?qū)崿F(xiàn)來詳細(xì)闡述其工作原理。
關(guān)鍵詞:木馬;VB;注冊表;應(yīng)用程序
“木馬”原指古希臘士兵藏在木馬內(nèi)進(jìn)入敵方城市從而占領(lǐng)敵方城市的故事。許多計算機(jī)用戶特別是新手對安全問題了解不多,所以并不知道自己的計算機(jī)中了“木馬”之后應(yīng)該如何清除。關(guān)鍵是得知道“木馬”的工作原理,在了解其原理之后,查殺木馬也就變得簡單易行了。
1木馬分類
(1)遠(yuǎn)程控制木馬。
遠(yuǎn)程控制木馬是數(shù)量最多,危害最大,同時知名度也最高的一種木馬,它可以讓攻擊者完全控制被感染的計算機(jī),攻擊者可以利用它完成一些甚至連計算機(jī)主人本身都不能順利進(jìn)行的操作。
(2)密碼發(fā)送木馬。
密碼發(fā)送型的木馬是專門為了盜取被感染計算機(jī)上的密碼而編寫的,木馬一旦被執(zhí)行,就會自動搜索內(nèi)存,Cache,臨時文件夾以及各種敏感密碼文件,一旦搜索到有用的密碼,木馬就會利用免費(fèi)的電子郵件服務(wù)將密碼發(fā)送到指定的郵箱。
(3)鍵盤記錄木馬。
這種特洛伊木馬就是記錄受害者的鍵盤敲擊并且在LOG文件里查找密碼,隨著Windows的啟動而啟動。
(4)DoS攻擊木馬。
隨著DoS攻擊越來越廣泛的應(yīng)用,被用作DoS攻擊的木馬也越來越流行起來。當(dāng)你入侵了一臺機(jī)器,給他種上DoS攻擊木馬,那么日后這臺計算機(jī)就成為你DoS攻擊的最得力助手了。
(5)FTP木馬。
這種木馬可能是最簡單的木馬了,其歷史悠久,它的惟一功能就是打開21端口,等待用戶連接。現(xiàn)在新FTP木馬還加上了密碼功能,這樣,只有攻擊者本人才知道正確的密碼,從而進(jìn)人用戶計算機(jī)。
(6)反彈端口型木馬。
反彈端口型木馬的服務(wù)端(被控制端)使用主動端口,客戶端(控制端)使用被動端口。木馬定時監(jiān)測控制端的存在,發(fā)現(xiàn)控制端上線立即彈出端口主動連結(jié)控制端打開的主動端口。
2木馬的工作原理
(1)木馬的隱藏。
下面是一個用vb編輯的木馬程序,用于隱藏木馬。
程序的具體編制操作如下:
①新建一個工程名命名為Hidden,在工程hidden中添加模塊Modulel,應(yīng)用程序標(biāo)題也改為Hidden。
在模塊Module1中加入如下聲明:
PublicDeclareFunctionGetCurrentProcessIdLib“kernel32”()AsLong
''''獲得當(dāng)前進(jìn)程ID函數(shù)的聲明。
PublicDeclareFunctionRegisterServiceProcessLib“kernel32”(ByValProcessIdAsLong,ByValServiceFlagsAsLong)AsLong
''''在系統(tǒng)中注冊當(dāng)前進(jìn)程ID函數(shù)的聲明。
②在Project1中新建一個窗體Form1,設(shè)置Form1的屬性:
form1.Visible=False
form1.ShowInTaskBar=False
在代碼窗口添加如下代碼:
PrivateDeclareFunctionGetDriveTypeLib“kernel32”Alias“GetDriveTypeA”(ByValnDriveAsString)AsLong
''''獲得當(dāng)前驅(qū)動器類型函數(shù)的聲明。
PrivateDeclareFunctionGetVolumeInformationLib“kernel32”Alias“GetVolumeInformationA”(ByVallpRootPathNameAsString,ByVallpVolumeNameBufferAsString,ByValnVolumeNameSizeAsLong,lpVolumeSerialNumberAsLong,lpMaximumComponentLengthAsLong,lpFileSystemFlagsAsLong,ByVallpFileSystemNameBufferAsString,ByValnFileSystemNameSizeAsLong)AsLong''''獲得當(dāng)前驅(qū)動器信息函數(shù)的聲明:
PrivateSubForm_Load()
Dimdrive_noAsLong,drive_flagAsLong
Dimdrive_chrAsString,drive_diskAsString
Dimserial_noAsLong,kkkAsLong
Dimstemp3AsString,dflagAsBoolean
DimstrlabelAsString,strtypeAsString,strcAsLong
RegisterServiceProcessGetCurrentProcessId,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
Fordrive_no=0To25
drive_disk=Chr(drive_no+67)
drive_chr=drive_disk&“:/”
drive_flag=GetDriveType(drive_chr)
Ifdrive_flag=3Then
kkk=GetVolumeInformation(drive_chr,strlabel,Len(strlabel),serial_no,0,0,strtype,Len(strtype))''''通過GetVolumeInformation獲得磁盤序列號:
SelectCasedrive_no
Case0
strc=serial_no
EndSelect
Ifserial_no=stemp3Then
dflag=True
ExitFor
EndIf
EndIf
Nextdrive_no
Ifdrive_no=26Anddflag=FalseThen''''非法用戶
GoToerr:
EndIf
MsgBox(“HI,合法用戶!”)
ExitSub
err:
MsgBox(“錯誤!你的C:盤ID號是”&strc)
EndSub
PrivateSubForm_Unload(CancelAsInteger)
RegisterServiceProcessGetCurrentProcessId,0''''從系統(tǒng)中取消當(dāng)前程序的進(jìn)程:
EndSub
(2)木馬的啟動。
“木馬”的啟動方式有很多種,這里我們介紹幾種主要的:
①在Win.ini的[windows]字段中有啟動命令“l(fā)oad=”和“run=”,在一般情況下“=”后面是空白的,如果有后跟程序,比方說是這個樣子:
run=c:/windows/file.exeload=c:/windows/file.exe
②在system.ini文件中,在[BOOT]下面有個“shell=文件名”。正確的文件名應(yīng)該是“explorer.exe”,如果不是“explorer.exe”,而是“shell=explorer.exe程序名”。
③在注冊表中的情況最復(fù)雜,通過regedit命令打開注冊表編輯器,在點(diǎn)擊至:“HKEY-LOCAL-MACHINE/Software/Microsoft/Windows/CurrentVersion/Run”目錄下,查看鍵值中有沒有自己不熟悉的自動啟動文件,擴(kuò)展名為EXE。
參考文獻(xiàn)
[1]孫鋒.網(wǎng)絡(luò)安全與防黑技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004.
[2]齊鋒.VisualBasic6.0程序設(shè)計[M].北京:中國鐵道出版社,2003.