當前位置:編程學習大全網 - 源碼下載 - 超級工廠的病毒分析

超級工廠的病毒分析

Worm.Win32.Stuxnet病毒分析 名稱: Worm.Win32.Stuxnet

病毒概述:

這是壹個可以通過微軟MS10-046漏洞(lnk文件漏洞),MS10-061(打印服務漏洞),MS08-067等多種漏洞傳播的惡性蠕蟲病毒。另外該病毒還可以專門針對西門子的SCADA軟件進行特定攻擊,以獲取其需要的信息。

技術細節:

傳播方式:

1. 通過MS10-046漏洞傳播

病毒運行後會拷貝自身到移動存儲上並命名為~WTR數字.Tmp(動態庫)和壹個註入下列文件名的lnk文件組成:

Copy of ShortCut to .lnk

Copy of Copy of ShortCut to .lnk

Copy of Copy of Copy of ShortCut to .lnk…

在存在MS10-046漏洞的機器上,只需瀏覽這些lnk,Explorer.exe就會將~WTR數字.Tmp加載起來。

2. 通過MS10-061漏洞傳播

該病毒還會利用打印機或打印機***享漏洞MS10-061漏洞傳播。病毒會將自身拷貝到存在該漏洞的遠程機器的%system%目錄下,並利用WMI將其執行起來。

3. 通過***享文件夾傳播

該病毒還會試圖將自身拷貝到局域網***享文件夾下,並命名為類似DEFRAG(隨機數字).tmp的名稱。

4. 通過MS08-067漏洞傳播

該病毒還會利用MS08-067漏洞傳播。

病毒的主要功能以及大致流程:

當用戶瀏覽可移動存儲上的Copy of ShortCut to .lnk文件後,Explorer.exe會加載~WTR數字.Tmp,然後病毒會加載自身的另壹個名為~WTR數字.Tmp的動態庫。在加載該惡意dll時,病毒並沒有通過普通的LoadLibrary函數加載,為了隱藏自身模塊,同時為了達到不釋放文件來加載病毒模塊的目的,它采取了壹個特殊方式。病毒會首先hook ntdll的壹些導出函數,然後,它會構造壹個特殊的並不存在的文件名如Kernel32.dll.aslr,然後以此為參數調用LoadLibrary,正常情況下,該調用會失敗因為該文件並不存在,但是因為病毒已經提前Hook了Ntdll,hook函數會監控對此類特殊文件名的打開操作。如果發現是自身構造的虛假文件名,則會重定向到其他位置,比如另壹個文件或者通常情況下是壹塊已經被病毒解密過的內存,這樣,外界看到的是壹個常見的模塊名比如Kernel32,而實際上是病毒模塊。這樣病毒就達到了隱藏自身的目的。

之後病毒會運行lsass.exe並修改程序的內存,然後釋放如下文件:

%System%\drivers\mrxcls.sys

%System%\drivers\mrxnet.sys

%Windir%\inf\oem6C.PNF

%Windir%\inf\oem7A.PNF

%Windir%\inf\mdmcpq3.PNF

%Windir%\inf\mdmeric3.PNF

並在可移動存儲上創建~WTR數字.Tmp和Copy of ShortCut to .lnk等文件。

Mrxcls.sys 和Mrxnet.sys具有合法的數字簽名。

由於調用了lsass.exe這個系統進程做壞事,因此在中毒機器內會看到至少3個lsass.exe進程。(有兩個是病毒啟動的)

然後病毒會將自身註入到services.exe,在services中,病毒會通過查找SOFTWARE\SIEMENS\STEP7,SOFTWARE\SIEMENS\WinCC\Setup等註冊表項檢測西門子軟件。病毒還能禁用Windows Defender等殺毒軟件的保護。

病毒具有後門功能: 病毒會通過80端口連接遠程服務器並發送請求http://[SERVER_ADDRESS]/index.php?data=[DATA]

其中服務器地址為:

www.****

www.*****

發送的數據包括:

1、Windows版本信息

2、計算機名

3、網絡組名稱

4、是否安裝了工控軟件

5、網卡的IP地址

發送完畢數據後,病毒會等待服務器響應,之後病毒可以根據服務器的要求執行以下功能:

1、讀文件

2、寫文件

3、刪除文件

4、創建進程

5、註入dll

6、加載dll並運行

7、更新配置信息

8、下載文件,解密並執行

Rootkit隱藏功能:

病毒具有良好的隱藏性。病毒會查找totalcmd.exe,wincmd.exe等進程,掛鉤kernel32.dll的FindFirstFileW,FindNextFileW,FindFirstFileExW,Ntdll的NtQueryDirectoryFile,ZwQueryDirectoryFile函數隱藏其釋放的.lnk或者~WTR(數字).tmp文件。使得通過此類文件查找工具也無法找到他們。

針對工控軟件(SCADA)的攻擊功能:

病毒會利用SieMens Simatic Wincc的默認密碼安全繞過漏洞利用默認的用戶名和密碼並利用已經編寫好的SQL語句讀取數據庫數據。漏洞詳情:****

嘗試從數據庫中讀取特定數據:

GracS\cc_tag.sav

GracS\cc_alg.sav

GracS\db_log.sav

GracS\cc_tlg7.sav

*.S7P

*.MCP

*.LDF

工控系統都包括壹個可編程控制器,該控制器實際相當於壹個小型的計算機系統,通過配置該系統,可以向控制器中寫入新的控制邏輯,從而完成不同的功能。該控制器可以通過專門的軟件連接到計算機,從計算機中可以編寫工控程序並下載到工控系統中運行。

工控軟件要進行控制和編程,需要通過西門子Step 7軟件來進行控制,該軟件要通過使用內部的s7otbxdx.dll同設備進行通信,病毒通過替換此dll來截獲所有與設備間的訪問。病毒自身導出了所有原始s7dotbxdx.dll的功能,然後病毒將原始的s7otbxdx.dll重命名為s7otbxsx.dll,然後將自身命名為s7otbxdx.dll,病毒內部再加載s7otbxsx.dll,這樣,如果是病毒感興趣的訪問,則病毒可以替換設備傳入或者傳出的結果,對於其他訪問,病毒直接重定向到原始的s7otbxdx.dll。

當向工控系統中寫入控制代碼時,病毒會修改寫入的控制代碼,從而感染工控系統。

實際上,在內部,病毒壹***hook了16個函數,分別是:

s7_event

s7ag_bub_cycl_read_create

s7ag_bub_read_var

s7ag_bub_write_var

s7ag_link_in

s7ag_read_szl

s7ag_test

s7blk_delete

s7blk_findfirst

s7blk_findnext

s7blk_read

s7blk_write

s7db_close

s7db_open

s7ag_bub_read_var_seg

s7ag_bub_write_var_seg

通過對這些函數的掛鉤從而可以任意修改從計算機中寫入到工控軟件中的代碼。當向工控軟件正常寫入程序時,病毒會感染寫入的代碼,將自身寫入工控軟件代碼塊的頭部並修改工控軟件的控制結構,使其入口點指向病毒代碼。

另外病毒會監控所有與工控軟件之間的讀寫通信,如果發現訪問到被感染的塊,則會修改返回結果隱藏塊中的病毒代碼,從而使用戶不會發現。

  • 上一篇:super 有哪些權限 mysql
  • 下一篇:好豆菜譜的版本更新
  • copyright 2024編程學習大全網