能力值:
( LV2,RANK:10 )
2 楼
http://bbs.pediy.com/showthread.php?t=68729
能力值:
( LV5,RANK:60 )
3 楼
看不到效果,opensection就失败了
另外我纳闷的就是我发个链接,你再给我一样的连接。。。我要的是自己测试出来的代码,不是网上一搜一大堆那种
能力值:
( LV5,RANK:60 )
4 楼
// 以可读写ACL权限打开PhysicalMemory
status = ZwOpenSection(&hSection, READ_CONTROL | WRITE_DAC, &oa);
这个地方失败了。。
大牛们说的以管理员方式启动再XPSP3下怎么个情况啊? 内核是ntkrnlpa,开了PAE的单核,能实现么
能力值:
( LV3,RANK:20 )
5 楼
ring3可以无驱进入ring0么?我觉得理论上应该是不可以的啊,如果可以那不是相当于提权漏洞了么?
能力值:
( LV5,RANK:60 )
6 楼
这个在无安全软件hook NtVdmControl的情况下是可以实现了。。
但是我在WRK中找不到NtVdmControl的作用,反正根据网上的文章都是操作NtVdmControl,
不过我觉得通过\\Device\\PhysicalMemory可以HOOK任何函数。。。 求NtVdmControl的作用。。
能力值:
( LV5,RANK:60 )
7 楼
无语了,居然执行完了 status=NtVdmControl(0x4000,buffer);
lkd> u nt!NtVdmControl
nt!NtVdmControl:
805f25bc e953eae07f jmp 00401014
确实可以HOOK内核的服务函数,然后jmp 00401014,问题是00401014是我用户空间的
Ring0Code的函数,调用了NtVdmControl确实执行Ring0Code实现进程隐藏,XT在UNHOOK检测到NtVdmControl被hook了,同时执行了Ring0Code检测到隐藏进程
现在的问题是为什么内核代码可以JMP到用户空间。。。这个最疑惑的地方。。
NtVdmControl利用这个函数我怀疑就是他永远不会调用,以防在HOOK后还没来得及unhook有别的线程切换导致蓝。。
例外一个设想。。可以调用R3的shellcode,那么应该可以在内核区域分配一块分配一块内存来进行JMP来jmp去。这个分配R0区域在R3层怎么实现呢?。或者利用飞地可能不用分配就是实现JMP来来回回。
能力值:
( LV3,RANK:20 )
8 楼
lz确定么?即使在没有安全软件hook的前提下,在用户态可以操作内核态的数据和代码,已经违背了ring0/3的设计原则,相当于是提权漏洞了啊。话说执行这个代码需要admin权限么?求lz发一份可以编译通过的代码我测试一下
能力值:
( LV5,RANK:60 )
9 楼
http://bbs.pediy.com/showthread.php?t=68729 自己测试下把。XPSP2。3 单核。。
能力值:
( LV3,RANK:20 )
10 楼
貌似确实是需要管理员权限的,这样的话不能算提权漏洞的范畴。不过确实是很牛逼的思路,学习到了。如果使用读写物理内存的方法,真的能够实现hook任意内核函数的话,确实很有用
能力值:
( LV2,RANK:10 )
11 楼
这位仁兄有点孤陋寡闻。。。。。。
能力值:
( LV5,RANK:60 )
12 楼
能不能解释下我之前的疑问
能力值:
( LV3,RANK:20 )
13 楼
你的系统或CPU不支持DEP才有用,你保证吗?
能力值:
( LV3,RANK:20 )
14 楼
http://bbs.pediy.com/showthread.php?t=68729
貌似没用到提权代码,你在看雪里搜下NtOpenSection和ZwOpenSection,就会找到提权代码了。
能力值:
( LV2,RANK:10 )
15 楼
别想了,微软在sp3后就封了这个漏洞,所有只能sp2上成功
能力值:
( LV3,RANK:20 )
16 楼
我发现我机器上存了份这提权代码:
EXPLICIT_ACCESS Access;
PACL OldDacl=NULL, NewDacl=NULL;
PVOID security;
HANDLE Section;
INIT_UNICODE_STRING(name,L"\\Device\\PhysicalMemory");
OBJECT_ATTRIBUTES oa ={sizeof(oa),0,&name,0,0,0};
memset(&Access, 0, sizeof(EXPLICIT_ACCESS));
NtOpenSection(&Section, WRITE_DAC | READ_CONTROL, &oa);
GetSecurityInfo(Section, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &OldDacl,NULL, &security);
Access.grfAccessPermissions = SECTION_ALL_ACCESS;
Access.grfAccessMode = GRANT_ACCESS;
Access.grfInheritance = NO_INHERITANCE;
Access.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
Access.Trustee.TrusteeForm = TRUSTEE_IS_NAME;
Access.Trustee.TrusteeType = TRUSTEE_IS_USER;
Access.Trustee.ptstrName = "CURRENT_USER";
SetEntriesInAcl(1, &Access, OldDacl, &NewDacl);
SetSecurityInfo(Section, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION,NULL, NULL, NewDacl, NULL);
CloseHandle(Section);
能力值:
( LV5,RANK:60 )
17 楼
那你别研究了,现在都是WIN7你什么都找不到了。。好了大家都别学了是吧?
能力值:
( LV5,RANK:60 )
18 楼
我已经实验成功了,现在的问题不是权限的问题,是JMP的问题。。我没弄白
能力值:
( LV2,RANK:10 )
19 楼
进入RING0 关键是通过 \Device\PhysicalMemory 映射内核空间内存,然后跳转,在SP3以前在RING3下是可以通过 \Device\PhysicalMemory 对象读写物理内存,SP3后只能读,所以权限不够。
能力值:
( LV2,RANK:10 )
20 楼
突破的方法也有,很复杂,老外有一篇文章以前看过,找找
能力值:
( LV2,RANK:10 )
21 楼
Detailed description
In Windows Server 2003 SP1, user-mode access to the \Device\PhysicalMemory object is not permitted. All forms of access (read, write) are refused when the \Device\PhysicalMemory object is accessed from a user-mode application. Access to the \Device\PhysicalMemory object is refused regardless of the user context (Administrators, Users, Local System, etc.) the application is running in.
Kernel-mode (driver) access to the \Device\PhysicalMemory object is unchanged for Windows Server 2003 SP1.
There are no means to revert this changed behavior in Windows Server 2003 SP1.
Why is this change important? What threats does it help mitigate?
This change was made to help prevent security exploits that might leverage the functionality of the \Device\PhysicalMemory object from user-mode.
In previous versions of Windows, access to the \Device\PhsyicalMemory object was protected by an access control list (ACL). However, the ACL may be inadvertently changed. Refusing all access to the \Device\PhysicalMemory object from user-mode ensures this scenario cannot occur.
微软的说明 http://technet.microsoft.com/en-us/library/cc787565(v=ws.10)
XP SP3 , 2K3 SP1以后 改的
能力值:
( LV2,RANK:10 )
22 楼
认同rock,sp3后的系统。r3要进入r0只有一个途径就是构建调用门,中断门来提权。
能力值:
( LV2,RANK:10 )
23 楼
mark
能力值:
( LV5,RANK:68 )
24 楼
上面两位洛阳铲
能力值:
( LV2,RANK:10 )
25 楼
我写了个很小的驱动,应用程序可以将汇编代码发到驱动中执行并返回执行结果。