首页
社区
课程
招聘
[讨论]SuspendThread在内核代码段
发表于: 2013-7-3 22:25 8254

[讨论]SuspendThread在内核代码段

2013-7-3 22:25
8254
有问题,给点指导:
一个线程A中调用TerminateProcess, 执行流程是现在用户态执行指令,随后进入内核态执行。
问题一:在内核中执行时是消耗的线程A的时间周期吗?
问题二:如果有线程B去SuspendThread线程A,线程A有可能在正好在内核态运行时被暂停吗?
我准备做个实验:
线程A的Priority设最低,线程B的Priority设最高,
while(1)
{
   SuspendThread(A)
   GetThreadContext(A)
   print 线程A的EIP
   ResumeThread(A)
}
最后查看EIP的地址是否有出现在内核空间。
这实验方法靠谱不?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
2
我是来膜拜楼主的技术的.
2013-7-3 22:39
0
雪    币: 334
活跃值: (78)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
1 进入内核也是消耗线程A的周期。
2 PsGetThreadContext 会根据调用在哪个层上, 返回那个层的Context, 所以,你在用户态, 无法看到线程在内核中的执行位置。
2013-7-3 22:56
0
雪    币: 324
活跃值: (113)
能力值: ( LV15,RANK:280 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上。
我在想一个问题:调用TerminateProcess,或者是修改注册表,杀软会在内核中hook住,截获我的调用。杀软在对参数进行过滤后,认为无害放行(T1时刻),然后再调用原始的系统函数(T2时刻)。如果能在T1到T2时刻之间supsend线程,然后修改参数(比如内存中的注册表项),这样就能绕过主动防御的检测了。
2013-7-3 23:10
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
是这样的,所以MS代码有时候会在判断后,会copy到另一块buffer,不过你能抓到这个条件竞争点的话。。
2013-7-3 23:32
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
基本不可能。因为微软的调用序列是优化过很多次的。尤其是层层调用的情况下。你调用函数去暂停。除非你比下一个函数掉用要早。
因为你暂停也需要时间。
2013-7-6 06:54
0
雪    币: 324
活跃值: (113)
能力值: ( LV15,RANK:280 )
在线值:
发帖
回帖
粉丝
7
谢谢关注,可以一起研究一下。这是国外已经安全技术公司的报告:
http://www.matousec.com/info/articles/khobe-8.0-earthquake-for-windows-desktop-security-software.php
他们的实验显示能bypass 大部分安全软件。
Product name and version        Result
3D EQSecure Professional Edition 4.2        VULNERABLE
avast! Internet Security 5.0.462        VULNERABLE
AVG Internet Security 9.0.791        VULNERABLE
Avira Premium Security Suite 10.0.0.536        VULNERABLE
BitDefender Total Security 2010 13.0.20.347        VULNERABLE
Blink Professional 4.6.1        VULNERABLE
CA Internet Security Suite Plus 2010 6.0.0.272        VULNERABLE
Comodo Internet Security Free 4.0.138377.779        VULNERABLE
DefenseWall Personal Firewall 3.00        VULNERABLE
Dr.Web Security Space Pro 6.0.0.03100        VULNERABLE
ESET Smart Security 4.2.35.3        VULNERABLE
F-Secure Internet Security 2010 10.00 build 246        VULNERABLE
G DATA TotalCare 2010        VULNERABLE
Kaspersky Internet Security 2010 9.0.0.736        VULNERABLE
KingSoft Personal Firewall 9 Plus 2009.05.07.70        VULNERABLE
Malware Defender 2.6.0        VULNERABLE
McAfee Total Protection 2010 10.0.580        VULNERABLE
Norman Security Suite PRO 8.0        VULNERABLE
Norton Internet Security 2010 17.5.0.127        VULNERABLE
Online Armor Premium 4.0.0.35        VULNERABLE
Online Solutions Security Suite 1.5.14905.0        VULNERABLE
Outpost Security Suite Pro 6.7.3.3063.452.0726        VULNERABLE
Outpost Security Suite Pro 7.0.3330.505.1221 BETA VERSION        VULNERABLE
Panda Internet Security 2010 15.01.00        VULNERABLE
PC Tools Firewall Plus 6.0.0.88        VULNERABLE
Prevx 3.0.5.143        VULNERABLE
PrivateFirewall 7.0.20.37        VULNERABLE
Security Shield 2010 13.0.16.313        VULNERABLE
Sophos Endpoint Security and Control 9.0.5        VULNERABLE
ThreatFire 4.7.0.17        VULNERABLE
Trend Micro Internet Security Pro 2010 17.50.1647.0000        VULNERABLE
Vba32 Personal 3.12.12.4        VULNERABLE
VIPRE Antivirus Premium 4.0.3272        VULNERABLE
VirusBuster Internet Security Suite 3.2        VULNERABLE
Webroot Internet Security Essentials 6.1.0.145        VULNERABLE
ZoneAlarm Extreme Security 9.1.507.000        VULNERABLE
2013-7-7 22:16
0
游客
登录 | 注册 方可回帖
返回
//