前段时间看一个很早前写的驱动,发现对双向链表的操作还有BUG,删除时会蓝屏,修正了一下,把修正后的代码贴出来,方便日后使用前直接复制,大牛不用看了。
此演示完成user权限下以system权限运行指定程序,利用的是前几篇文章说的那个系统驱动的溢出漏洞。
利用成功后可看到Services.exe以system权限运行了C:\Users\test\Desktop\1.exe。
上次说的溢出0day的shellcode终于写完了,开始遇到了不少困难,但都一一解决了。
一开始,像大多数其它溢出那样,执行完shellcode后就sleep等死,可是这里不行,在进入有漏洞的函数前,系统占了一个锁,如果等死了,整个系统也立马卡死。函数调用是像下面这样的:
call func2()
{
getlocker();
bugfunc();//存在溢出的函数
...
在win32k中存在一个单向链表,这个链表中保存着当前子系统下的所有快捷键,保存这个单向链表的头的全局变量为_gphkFirst,这个全局变量在_RegisterHotKey、IsHotKey等函数中有使用。
下面是我在xp下逆向分析出的这个链表的结构:
typedef struct _HOTKEY
{
PVOID Win32Thread;
ULONG gptiCurrent;
...
昨天分析了下鬼影的驱动文件atixx.sys,分析了大概8、9成,学到了一些东西。
1.从这个木马里看到了一条IDA不认识的指令,mov eax,cr0它对应的机器码是0f20c0;
2.还有指令lock jmp,非常干扰IDA的分析;
3.另外返回使用jmp dword ptr [esp-4]会对动态调试造成影响
4.驱动文件执行一段加密一段,干扰静态分析。
...
用工行的网上银行给招行跨行转帐,貌似就会出现冲突。
工行用的口令卡,在工行填写对话对方招行账号时,强悍的招商插件弹出一个安全警告,大概意思是提示在招行官方以外的网站输入招行卡号是不安全的,看来工行没有和招行搞好关系。
然后无视这个提示,继续下一步,再下一步,到了显示转帐单要输入口令密码时,工行弹出一个错误“非法字符展现”,然后口令卡坐标位置写了“异常”2字。
回去重新操作了两遍还是不行,退出重新登录也不行,再从Maxthon换到IE7还不行,前前后后登录了不下四次,重输对方帐号、姓名、分行地址不下5次,还是不停的弹那个错误错,当时真是火气都来了。
...
2月16号我发布一篇《最近发现的一个windows溢出0day演示》,当时只是说理论存在非管理员权限下利用的可能性,因为当时只找到管理员权限下利用的方法。
这两天重新研究了下这个漏洞,终于在Win7下找到了非管理员权限下利用的方法,其它系统也能溢出,但有个security_cookie没能突破,不能做到执行指定shellcode。
利用此漏洞只要在Win7 User权限下执行一下一个小程序,就能导致内核溢出,然后执行内核shellcode,shellcode里Attach到system权限的进程,插apc,然后添加一个管理员权限的用户。
...