"Code Red" 蠕蟲攻擊方式詳細分析和防範措施總結 (Other,其他)
涉及程式:
code red
描述:
"Code Red" 蠕蟲攻擊方式詳細分析和防範措施總結
詳細:
CODE RED 利用 IIS WEB 伺服器 .IDA 緩衝區溢出漏洞傳播。 如果它感染了一個主機,將會在受影響機器上作如下活動: 1、建立起初始蠕蟲環境
2、建立起100個蠕蟲線程
3、前99個線程會傳播感染其他主機
4、第100個線程會檢查自身是否運行于一個英文版本的 Windows NT/2000 如果是,它將會替換該主機頁面 Welcome to http://www.worm.com !, Hacked By Chinese! 該資訊會在10小時後自動消失,除非再次受到感染。 如果不是英文版本,它也會被用作感染其他主機。 5、每個線程會檢查當地時間
如果時間位於 20:00 UTC 和 23:59 UTC 間,該線程會往 www.whitehouse.gov 發送 100K 位元組資料。
如果小於 20:00 UTC,它會繼續傳播感染其他主機 在下面的詳細分析中,將要用到 IDA(Interactive Disassembler) ,它來自www.datarescue.com。
MS VC 調試環境 我將該蠕蟲分為三個部分以便研究:核心功能模組,hack web 頁面模組,攻擊 www.whitehouse.gov 模組。 一、核心功能模組 1、起始感染容器(已被感染並將傳播蠕蟲的主機) 當被感染時,系統記憶體將會呈現如下資訊:
4E 00 4E 00 4E 00 4E 00
4E 00 4E 00 4E 00 4E 00
4E 00 4E 00 4E 00 4E 00
92 90 58 68 4E 00 4E 00
4E 00 4E 00 4E 00 4E 00
FA 00 00 00 90 90 58 68
D3 CB 01 78 90 90 58 68
D3 CB 01 78 90 90 58 68
D3 CB 01 78 90 90 90 90
90 81 C3 00 03 00 00 8B
1B 53 FF 53 78 EIP 會被 0x7801CBD3 重寫。在 0x7801CBD3 處的代碼將會被分解成 call ebx ,當 EIP 被 call ebx 重寫時,它會導致程式流重定向回堆疊。堆疊上的代碼將會跳到蠕蟲代碼,該蠕蟲代碼在起始 HTTP 請求體中。 2、建立起始堆疊變數 CODEREF: seg000:000001D6 WORM 首先,蠕蟲建立一個充滿 CCh 的 218h 位元組堆疊,然後它將轉而啟動跳轉函數。
所有的變數會被引用為 EBP-X 值。 3、裝載函數(建立跳轉表"jump table")
CODEREF: seg000:00000203 DataSetup 首先,蠕蟲會引用 exploit 代碼在 EBP-198h 中的資料部分。然後,它需要創建自己內部函數跳轉表。
該蠕蟲用到了一項 RVA (Relative Virtual Addresses) 查詢技術,在一個 nutshell 中,RAV 被用來得到 GetProcAddress 的位址。GetProcAddress 然後被用來得到 LoadLibraryA 地址。它會用到這兩個函數裝載下面的函數: >From kernel32.dll:
GetSystemTime
CreateThread
CreateFileA
Sleep
GetSystemDefaultLangID
VirtualProtect >From infocomm.dll:
TcpSockSend >From WS2_32.dll:
socket
connect
send
recv
closesocket 最後,蠕蟲會存儲 w3svc.dll 的基底位址,該位址將被用來更改頁面。 4、檢查已經創建的線程:
CODEREF: seg000:00000512 FUNC_LOAD_DONE 它會運行 WriteClient (ISAPI Extension API 的一部分),發送"GET" 回進攻機。這應該是告訴告訴攻擊機它已成功感染該機。 然後,它會計算活動的蠕蟲線程
如果線程等於100,控制會轉向 hack web 頁面功能項。
如果線程小於100,它會創建新的線程。每一個新線程都是蠕蟲的簡單複製。 5、檢查已存在的 c:\notworm
它有一個"lysine deficiency" 功能,用來保持惡意代碼進一步傳播。
如果該文件存在,它不會作其他動作;如果不存在,它會進行下一步。 6、檢查受影響系統時間:
CODEREF: seg000:00000803 NOTWORM_NO
CODEREF: seg000:0000079D DO_THE_WORK 如果時間位於 20:00 UTC 和 23:59 UTC 間,該線程會往 www.whitehouse.gov 發送 100K 位元組資料。
如果小於 20:00 UTC,它會繼續傳播感染其他主機 7、感染一個新的主機
如果能建立一個80埠連接,它將會發送自己的一個複製到那個 IP,如果發送成功,它會關閉 socket 並轉到第5步,從而開始一個新的迴圈。 二、hack webpage 模組 如果100個線程產生,該模組會被調用 1、檢查系統語言是否為英文,然後轉到核心模組第5步
CODEREF: seg000:000005FE TOO_MANY_THREADS 2、休眠2小時
CODEREF: seg000:00000636 IS_AMERICAN
這應該是在更改頁面之前作盡可能的傳播。 3、試圖改變受影響系統的 WEB 頁面
CODEREF: seg000:0000064F HACK_PAGE 三、攻擊www.whitehouse.gov 模組 創建 socket 連接到 www.whitehouse.gov 80 埠發送 100K 位元組資料:
CODEREF: seg000:000008AD WHITEHOUSE_SOCKET_SETUP 首先,它會創建一個 socket 並連接到 198.137.240.91 (www.whitehouse.gov/www1.whitehouse.gov) 80 埠,
CODEREF: seg000:0000092F WHITEHOUSE_SOCKET_SEND 如果連接成功,它會創建一個迴圈:發送18000h 單字節send()'s 到該站點 CODEREF: seg000:00000972 WHITEHOUSE_SLEEP_LOOP 在 18000h send()'s 後,它會休眠4個半小時,然後重複此攻擊。 From: Marc Maiffret by ntbugtraq maillist
CNNS 編譯 解決方案:
1、如果系統已被感染,請到微軟處下載安裝補丁,並重啟機器,相關資訊參考
http://www.cnns.net/article/db/1720.htm 2、如果不能確定,可以通過在 MS-DOS 提示符中鍵入 netstat -an 查看,如果有過多的外部任意 IP 80