當前位置:編程學習大全網 - 源碼下載 - 我的電腦在上網時突然網頁打不開,桌面圖標也打不開,反正所有的操作都不能進行,只有鼠標能移動

我的電腦在上網時突然網頁打不開,桌面圖標也打不開,反正所有的操作都不能進行,只有鼠標能移動

無論大家把木馬看得多神秘,也無論木馬能實現多麽強大的功能,木馬,其實質只是壹個網絡客戶/服務程序。那麽,就讓我們從網絡客戶/服務程序的編寫開始。

1.基本概念:

網絡客戶/服務模式的原理是壹臺主機提供服務(服務器),另壹臺主機接受服務(客戶機)。作為服務器的主機壹般會打開壹個默認的端口並進行監聽(Listen), 如果有客戶機向服務器的這壹端口提出連接請求(Connect Request), 服務器上的相應程序就會自動運行,來應答客戶機的請求,這個程序我們稱為守護進程(UNIX的術語,不過已經被移植到了MS系統上)。對於冰河,被控制端就成為壹臺服務器,控制端則是壹臺客戶機,G_server.exe是守護進程, G_client是客戶端應用程序。(這壹點經常有人混淆,而且往往會給自己種了木馬!甚至還有人跟我爭得面紅耳赤,昏倒!!)

2.程序實現:

在VB中,可以使用Winsock控件來編寫網絡客戶/服務程序, 實現方法如下:

(其中,G_Server和G_Client均為Winsock控件)

服務端:

G_Server.LocalPort=7626(冰河的默認端口,可以改為別的值)

G_Server.Listen(等待連接)

客戶端:

G_Client.RemoteHost=ServerIP(設遠端地址為服務器地址)

G_Client.RemotePort=7626 (設遠程端口為冰河的默認端口,呵呵,知道嗎?這是冰河的生日哦)

(在這裏可以分配壹個本地端口給G_Client, 如果不分配, 計算機將會自動分配壹個, 建議讓計算機自動分配)

G_Client.Connect (調用Winsock控件的連接方法)

壹旦服務端接到客戶端的連接請求ConnectionRequest,就接受連接

Private Sub G_Server_ConnectionRequest(ByVal requestID As Long)

G_Server.Accept requestID

End Sub

客戶機端用G_Client.SendData發送命令,而服務器在G_Server_DateArrive事件中接受並執行命令(幾乎所有的木馬功能都在這個事件處理程序中實現)

如果客戶斷開連接,則關閉連接並重新監聽端口

Private Sub G_Server_Close()

G_Server.Close (關閉連接)

G_Server.Listen (再次監聽)

End Sub

其他的部分可以用命令傳遞來進行,客戶端上傳壹個命令,服務端解釋並執行命令......

二、控制篇(木馬控制了這個世界!)

由於Win98開放了所有的權限給用戶,因此,以用戶權限運行的木馬程序幾乎可以控制壹切,讓我們來看看冰河究竟能做些什麽(看了後,妳會認同我的觀點:稱冰河為木馬是不恰當的,冰河實現的功能之多,足以成為壹個成功的遠程控制軟件)

因為冰河實現的功能實在太多,我不可能在這裏壹壹詳細地說明,所以下面僅對冰河的主要功能進行簡單的概述, 主要是使用Windows API函數, 如果妳想知道這些函數的具體定義和參數, 請查詢WinAPI手冊。

1.遠程監控(控制對方鼠標、鍵盤,並監視對方屏幕)

keybd_event 模擬壹個鍵盤動作(這個函數支持屏幕截圖哦)。

mouse_event 模擬壹次鼠標事件(這個函數的參數太復雜,我要全寫在這裏會被編輯罵死的,只能寫壹點主要的,其他的自己查WinAPI吧)

mouse_event(dwFlags,dx,dy,cButtons,dwExtraInfo)

dwFlags:

MOUSEEVENTF_ABSOLUTE 指定鼠標坐標系統中的壹個絕對位置。

MOUSEEVENTF_MOVE 移動鼠標

MOUSEEVENTF_LEFTDOWN 模擬鼠標左鍵按下

MOUSEEVENTF_LEFTUP 模擬鼠標左鍵擡起

MOUSEEVENTF_RIGHTDOWN 模擬鼠標右鍵按下

MOUSEEVENTF_RIGHTUP 模擬鼠標右鍵按下

MOUSEEVENTF_MIDDLEDOWN 模擬鼠標中鍵按下

MOUSEEVENTF_MIDDLEUP 模擬鼠標中鍵按下

dx,dy:

MOUSEEVENTF_ABSOLUTE中的鼠標坐標

2.記錄各種口令信息(出於安全角度考慮,本文不探討這方面的問題,也請不要給我來信詢問)

3.獲取系統信息

a.取得計算機名 GetComputerName

b.更改計算機名 SetComputerName

c.當前用戶 GetUserName函數

d.系統路徑

Set FileSystem0bject = CreateObject("Scripting.FileSystemObject") (建立文件系統對象)

Set SystemDir = FileSystem0bject.getspecialfolder(1)

(取系統目錄)

Set SystemDir = FileSystem0bject.getspecialfolder(0)

(取Windows安裝目錄)

(友情提醒: FileSystemObject是壹個很有用的對象,妳可以用它來完成很多有用的文件操作)

e.取得系統版本 GetVersionEx(還有壹個GetVersion,不過在32位windows下可能會有問題,所以建議用GetVersionEx

f.當前顯示分辨率

Width = screen.Width \ screen.TwipsPerPixelX

Height= screen.Height \ screen.TwipsPerPixelY

其實如果不用Windows API我們也能很容易的取到系統的各類信息,那就是Winodws的"垃圾站"-註冊表

比如計算機名和計算機標識吧:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP

中的Comment,ComputerName和WorkGroup

註冊公司和用戶名:

HKEY_USERS\.DEFAULT\Software\Microsoft\MS Setup (ACME)\UserInfo

至於如何取得註冊表鍵值請看第6部分

4.限制系統功能

a.遠程關機或重啟計算機,使用WinAPI中的如下函數可以實現:

ExitWindowsEx(ByVal uFlags,0)

當uFlags=0 EWX_LOGOFF 中止進程,然後註銷

=1 EWX_SHUTDOWN 關掉系統電源

=2 EWX_REBOOT 重新引導系統

=4 EWX_FORCE 強迫中止沒有響應的進程

b.鎖定鼠標

ClipCursor(lpRect As RECT)可以將指針限制到指定區域,或者用ShowCursor(FALSE)把鼠標隱藏起來也可以

註:RECT是壹個矩形,定義如下:

Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type

c.鎖定系統 這個有太多的辦法了,嘿嘿,想Windows不死機都困難呀,比如,搞個死循環吧,當然,要想系統徹底崩潰還需要壹點技巧,比如設備漏洞或者耗盡資源什麽的......

d.讓對方掉線 RasHangUp......

e.終止進程 ExitProcess......

f.關閉窗口 利用FindWindow函數找到窗口並利用SendMessage函數關閉窗口

5.遠程文件操作

無論在哪種編程語言裏, 文件操作功能都是比較簡單的, 在此就不贅述了,妳也可以用上面提到的FileSystemObject對象來實現

6.註冊表操作

在VB中只要Set RegEdit=CreateObject("WScript.Shell")

就可以使用以下的註冊表功能:

刪除鍵值:RegEdit.RegDelete RegKey

增加鍵值:RegEdit.Write RegKey,RegValue

獲取鍵值:RegEdit.RegRead (Value)

記住,註冊表的鍵值要寫全路徑,否則會出錯的。

7.發送信息

很簡單,只是壹個彈出式消息框而已,VB中用MsgBox("")就可以實現,其他程序也不太難的。

8.點對點通訊

呵呵,這個嘛隨便去看看什麽聊天軟件就行了

(因為比較簡單但是比較煩,所以我就不寫了,呵呵。又:我始終沒有搞懂冰河為什麽要在木馬裏搞這個東東,困惑......)

9.換墻紙

Call SystemParametersInfo(20,0,"BMP路徑名稱",&H1)

值得註意的是,如果使用了Active Desktop,換墻紙有可能會失敗,遇到這種問題,請不要找冰河和我,去找比爾蓋子吧。

三、潛行篇(Windows,壹個捉迷藏的大森林)

木馬並不是合法的網絡服務程序(即使妳是把木馬裝在女朋友的機子上,也是不合法的,當然,這種行為我可以理解,呵呵),因此,它必須想盡壹切辦法隱藏自己,好在,Windows是壹個捉迷藏的大森林!

1、在任務欄中隱藏自己:

這是最基本的了,如果連這個都做不到......(想象壹下,如果Windows的任務欄裏出現壹個國際象棋中木馬的圖標...@#$%!#@$...也太囂張了吧!)

在VB中,只要把form的Visible屬性設為False, ShowInTaskBar設為False, 程序就不會出現在任務欄中了。

2、在任務管理器中隱形:(就是按下Ctrl+Alt+Del時看不見那個名字叫做“木馬”的進程)

這個有點難度,不過還是難不倒我們,將程序設為“系統服務”可以很輕松的偽裝成比爾蓋子的嫡系部隊(Windows,我們和妳是壹家的,不要告訴別人我藏在哪兒...)。

在VB中如下的代碼可以實現這壹功能:

Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long

Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long

(以上為聲明)

Private Sub Form_Load()

RegisterServiceProcess GetCurrentProcessId, 1 (註冊系統服務)

End Sub

Private Sub Form_Unload()

RegisterServiceProcess GetCurrentProcessId, 0 (取消系統服務)

End Sub

3、如何悄沒聲息地啟動:

妳當然不會指望用戶每次啟動後點擊木馬圖標來運行服務端,木馬要做到的第二重要的事就是如何在每次用戶啟動時自動裝載服務端(第壹重要的是如何讓對方中木馬,嘿嘿,這部分的內容將在後面提到)

Windows支持多種在系統啟動時自動加載應用程序的方法(簡直就像是為木馬特別定做的)啟動組、win.ini、system.ini、註冊表等等都是木馬藏身的好地方。冰河采用了多種方法確保妳不能擺脫它(怎麽聽起來有點死纏爛打呀....哎呦,誰呀誰呀,那什麽黃鑫,不要拿雞蛋扔我!)首先,冰河會在註冊表的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run和RUNSERVICE鍵值中加上了<system>\kernl32.exe(<system>是系統目錄), 其次如果妳刪除了這個鍵值,自以為得意地喝著茶的時候,冰河又陰魂不散地出現了...怎麽回事?原來冰河的服務端會在c:\windows(這個會隨妳windows的安裝目錄變化而變化)下生成壹個叫sysexplr.exe文件(太象超級解霸了,好毒呀,冰河!),這個文件是與文本文件相關聯的,只要妳打開文本(哪天不打開幾次文本?), sysexplr.exe文件就會重新生成krnel32.exe, 然後妳還是被冰河控制著。(冰河就是這樣長期霸占著窮苦勞動人民寶貴的系統資源的,555555)

4、端口

木馬都會很註意自己的端口(妳呢?妳關心妳的6萬多個端口嗎?),如果妳留意的話,妳就會發現,木馬端口壹般都在1000以上,而且呈越來越大的趨勢(netspy是1243....)這是因為,1000以下的端口是常用端口,占用這些端口可能會造成系統不正常,這樣木馬就會很容易暴露; 而由於端口掃描是需要時間的(壹個很快的端口掃描器在遠程也需要大約二十分鐘才能掃完所有的端口),故而使用諸如54321的端口會讓妳很難發現它。在文章的末尾我給大家轉貼了壹個常見木馬的端口表,妳就對著這個表去查吧(不過,值得提醒的是,冰河及很多比較新的木馬都提供端口修改功能,所以,實際上木馬能以任意端口出現)

5.最新的隱身技術

目前,除了冰河使用的隱身技術外,更新、更隱蔽的方法已經出現,那就是-驅動程序及動態鏈接庫技術(冰河3.0會采用這種方法嗎?)。

驅動程序及動態鏈接庫技術和壹般的木馬不同,它基本上擺脫了原有的木馬模式-監聽端口,而采用替代系統功能的方法(改寫驅動程序或動態鏈接庫)。這樣做的結果是:系統中沒有增加新的文件(所以不能用掃描的方法查殺)、不需要打開新的端口(所以不能用端口監視的方法查殺)、沒有新的進程(所以使用進程查看的方法發現不了它,也不能用kill進程的方法終止它的運行)。在正常運行時木馬幾乎沒有任何的癥狀,而壹旦木馬的控制端向被控端發出特定的信息後,隱藏的程序就立即開始運作......

事實上,我已經看到過幾個這樣類型的木馬,其中就有通過改寫vxd文件建立隱藏***享的木馬...(江湖上又將掀起新的波浪)

冰河淺析 - 揭開木馬的神秘面紗(下)

作者:· shotgun·yesky

四、破解篇(魔高壹尺、道高壹丈)

本文主要是探討木馬的基本原理, 木馬的破解並非是本文的重點(也不是我的長處),具體的破解請大家期待yagami的《特洛伊木馬看過來》(我都期待壹年了,大家和我壹起繼續期待吧,嘿嘿),本文只是對通用的木馬防禦、卸載方法做壹個小小的總結:

1.端口掃描

端口掃描是檢查遠程機器有無木馬的最好辦法, 端口掃描的原理非常簡單, 掃描程序嘗試連接某個端口, 如果成功, 則說明端口開放, 如果失敗或超過某個特定的時間(超時), 則說明端口關閉。(關於端口掃描,Oliver有壹篇關於“半連接掃描”的文章,很精彩,那種掃描的原理不太壹樣,不過不在本文討論的範圍之中)

但是值得說明的是, 對於驅動程序/動態鏈接木馬, 掃描端口是不起作用的。

2.查看連接

查看連接和端口掃描的原理基本相同,不過是在本地機上通過netstat -a(或某個第三方的程序)查看所有的TCP/UDP連接,查看連接要比端口掃描快,缺點同樣是無法查出驅動程序/動態鏈接木馬,而且僅僅能在本地使用。

3.檢查註冊表

上面在討論木馬的啟動方式時已經提到,木馬可以通過註冊表啟動(好像現在大部分的木馬都是通過註冊表啟動的,至少也把註冊表作為壹個自我保護的方式),那麽,我們同樣可以通過檢查註冊表來發現"馬蹄印",冰河在註冊表裏留下的痕跡請參照《潛行篇》。

4.查找文件

查找木馬特定的文件也是壹個常用的方法(這個我知道,冰河的特征文件是G_Server.exe吧? 笨蛋!哪會這麽簡單,冰河是狡猾狡猾的......)冰河的壹個特征文件是kernl32.exe(靠,偽裝成Windows的內核呀),另壹個更隱蔽,是sysexlpr.exe(什麽什麽,不是超級解霸嗎?)對!冰河之所以給這兩個文件取這樣的名字就是為了更好的偽裝自己, 只要刪除了這兩個文件,冰河就已經不起作用了。其他的木馬也是壹樣(廢話,Server端程序都沒了,還能幹嘛?)

黃鑫:"咳咳,不是那麽簡單哦......"(狡猾地笑)

是的, 如果妳只是刪除了sysexlpr.exe而沒有做掃尾工作的話,可能會遇到壹些麻煩-就是妳的文本文件打不開了,因為前面說了,sysexplr.exe是和文本文件關聯的,妳還必須把文本文件跟notepad關聯上,方法有三種:

a.更改註冊表(我就不說了,有能力自己改的想來也不要我說,否則還是不要亂動的好)

b.在<我的電腦>-查看-文件夾選項-文件類型中編輯

c.按住SHIFT鍵的同時鼠標右擊任何壹個TXT文件,選擇打開方式,選中<始終用該程序打開......>,然後找到notepad,點壹下就OK了。(這個最簡單,推薦使用)

黃鑫:"我...我笑不起來了 :( "

提醒壹下,對於木馬這種狡猾的東西,壹定要小心又小心,冰河是和txt文件關聯的,txt打不開沒什麽大不了,如果木馬是和exe文件關聯而妳貿然地刪了它......妳苦了!連regedit都不能運行了!

5.殺病毒軟件

之所以把殺病毒軟件放在最後是因為它實在沒有太大的用,包括壹些號稱專殺木馬的軟件也同樣是如此, 不過對於過時的木馬以及菜鳥安裝的木馬(沒有配置服務端)還是有點用處的, 值得壹提的是最近新出來的ip armor在這壹方面可以稱得上是比較領先的,它采用了監視動態鏈接庫的技術,可以監視所有調用Winsock的程序,並可以動態殺除進程,是壹個個人防禦的好工具(雖然我對傳說中“該軟件可以查殺未來十年木馬”的說法表示懷疑,嘿嘿,兩年後的事都說不清,誰知道十年後木馬會“進化”到什麽程度?甚至十年後的操作系統是什麽樣的我都想象不出來)

另外,對於驅動程序/動態鏈接庫木馬,有壹種方法可以試試,使用Windows的"系統文件檢查器",通過"開始菜單"-"程序"-"附件"-"系統工具"-"系統信息"-"工具"可以運行"系統文件檢查器"(這麽詳細,不會找不到吧? 什麽,妳找不到! 吐血! 找壹張98安裝盤補裝壹下吧), 用“系統文件檢查器”可檢測操作系統文件的完整性,如果這些文件損壞,檢查器可以將其還原,檢查器還可以從安裝盤中解壓縮已壓縮的文件(如驅動程序)。如果妳的驅動程序或動態鏈接庫在妳沒有升級它們的情況下被改動了,就有可能是木馬(或者損壞了),提取改動過的文件可以保證妳的系統安全和穩定。(註意,這個操作需要熟悉系統的操作者完成,由於安裝某些程序可能會自動升級驅動程序或動態鏈接庫,在這種情況下恢復"損壞的"文件可能會導致系統崩潰或程序不可用!)

五、狡詐篇(只要妳的壹點點疏忽......)

只要妳有壹點點的疏忽,就有可能被人安裝了木馬,知道壹些給人種植木馬的常見伎倆對於保證自己的安全不無裨益。

1.網上“幫”人種植木馬的伎倆主要有以下的幾條

a.軟哄硬騙法;

這個方法很多啦, 而且跟技術無關的, 有的是裝成大蝦, 有的是裝成PLMM, 有的態度謙恭, 有的......反正目的都壹樣,就是讓妳去運行壹個木馬的服務端。

b.組裝合成法

就是所謂的221(Two To One二合壹)把壹個合法的程序和壹個木馬綁定,合法程序的功能不受影響,但當妳運行合法程序時,木馬就自動加載了,同時,由於綁定後程序的代碼發生了變化,根據特征碼掃描的殺毒軟件很難查找出來。

c.改名換姓法

這個方法出現的比較晚,不過現在很流行,對於不熟練的windows操作者,很容易上當。具體方法是把可執行文件偽裝成圖片或文本----在程序中把圖標改成Windows的默認圖片圖標, 再把文件名改為*.jpg.exe, 由於Win98默認設置是"不顯示已知的文件後綴名",文件將會顯示為*.jpg, 不註意的人壹點這個圖標就中木馬了(如果妳在程序中嵌壹張圖片就更完美了)

d.願者上鉤法

木馬的主人在網頁上放置惡意代碼,引誘用戶點擊,用戶點擊的結果不言而喻:開門揖盜;奉勸:不要隨便點擊網頁上的鏈接,除非妳了解它,信任它,為它死了也願意...(什麽亂七八糟呀)

2. 幾點註意(壹些陳詞濫調)

a.不要隨便從網站上下載軟件,要下也要到比較有名、比較有信譽的站點,這些站點壹般都有專人殺馬殺毒;

b.不要過於相信別人,不能隨便運行別人給的軟件;

(特別是認識的,不要以為認識了就安全了,就是認識的人才會給妳裝木馬,哈哈,挑撥離間......)

c.經常檢查自己的系統文件、註冊表、端口什麽的,經常去安全站點查看最新的木馬公告;

d.改掉windows關於隱藏文件後綴名的默認設置(我是只有看見文件的後綴名才會放心地點它的)

e.如果上網時發現莫名奇妙地硬盤亂響或貓上的數據燈亂閃,要小心;

(我常常會突然關掉所有連接,然後盯著我的貓,妳也可以試試,要是這時數據傳送燈還在拼命閃,恭喜,妳中木馬了,快逃吧!)

六、後 記

這篇文章的問世首先要感謝冰河的作者-黃鑫,我對他說:“我要寫篇關於冰河的文章”,他說:“寫唄”,然後就有了這篇文章的初稿(黃鑫:“不是吧,妳答應要用稿費請我吃飯的,不要賴哦”),隨後,黃鑫給我提了很多建議並提供了不少資料,謝謝冰河。

其次是西祠的yagami,他是公認的木馬專家,在我寫作期間,他不僅在木馬的檢測、殺除方面提出了不少自己的看法,還給我找來了幾個木馬的源代碼作為參考,不過這個家夥實在太忙,所以想看《特洛伊木馬看過來》的朋友就只有耐心地等待了。

第三個值得壹提的家夥是武漢人,我的初稿壹出來,他就忙不叠地貼出去了,當時我很狼狽,只能加緊寫,爭取早日完成,趕快把漏洞百出的初稿換下來,要不然,嘿嘿,估計大家也要等個壹年半載的才能看到這篇文章了。

這篇文章的初稿出來以後,有很多朋友問:為什麽不用C++,而要用VB來寫木馬的源碼說明呢?呵呵,其壹是我很懶,VB比 VC要容易多了,還不會把windows搞死機(我用VC寫程序曾經把系統搞崩潰過的:P);其二,本文中能用API的,我基本上都用了,VB只是很小的壹塊, WINAPI嘛,移植起來是很容易的;其三,正如我前面強調的,本文只是對木馬的結構和原理進行壹番討論,並非教人如何編寫木馬程序,要知道,公安部已經正式下文:在他人計算機內下毒的要處以刑事處分。相比而言,VB代碼的危害性要小很多的(如果完全用VB做壹個冰河,大概要壹兆多,還不連那些控件和動態鏈接庫文件,呵呵,這麽龐大的程序,能 悄 悄 地在別人的機子裏搗鬼嗎?)

  • 上一篇:蘋果手機怎麽看是安卓系統?
  • 下一篇:如何在linux服務器上安裝wgt
  • copyright 2024編程學習大全網