网上流传的永恒之蓝漏洞利用代码中,关于内核shellcode部分,大部分都是利用APC注入的。 最近有个想法,直接利用内核代码执行权限,来写文件,于是就抄起了VS,开始写shellcode,开始以为和R3下面写shellcode一样简单。 新建个驱动的项目,按照下面修改项目的属性,然后动态获取API,再调API完成自己的功能。 // C/C++ //
<br /></font></pre><br /><pre><font size="2"><br /><br />[PEB]<br />———<br />获取KERNEL地址最有效的方法就是通过PEB实现,即:PEB kernel base location。<br />下面是一个比较常见的利用PEB获取kernel32.dll地址的shellcode,31字节。<br /><br />——— <br />/*程序1 ...
然后我用IDA提取shellcode,使用windbg强制改RIP,跳转到我shellcode中执行。 参考一位同事写的一篇笔记《内核调试shellcode》https://www.cnblogs.com/goabout2/p/7875372.html 强改RIP后,shellcode前面部分执行ok,但是执行IoCreateFile这个函数的时候,就蓝屏。 一直中断到内核函数内部。 登录后可查看完整内容 [培训...
然后我用IDA提取shellcode,使用windbg强制改RIP,跳转到我shellcode中执行。 参考一位同事写的一篇笔记《内核调试shellcode》https://www.cnblogs.com/goabout2/p/7875372.html 强改RIP后,shellcode前面部分执行ok,但是执行IoCreateFile这个函数的时候,就蓝屏。 一直中断到内核函数内部。 登录后可查看完整内容 [培训...
虽然许多恶意样本都可以进行静态分析,但FLARE团队有时候会调试这些样本来确认特定的功能。调试是一种非常有效的方式来解决混淆和封装,快速识别kernel shellcode样本被访问的结构,系统路径和进程。 一般来说,我们都是用虚拟机这样的安全环境来分析恶意软件,很少用kernel shellcode loader这样的工具来分析。下面我们对kernel...
标题: kernel shellcode之寻找ntoskrnl.exe基址 http://scz.617.cn:8/windows/201704171416.txt 以64 bits为例,这是Eternalblue所用函数: x64内核态GS:0指向nt!_KPCR。对于x64,必须从相应的MSR中
Star143 BranchesTags Folders and files Name Last commit message Last commit date Latest commit History 11 Commits dll kinject sys Capture.gif README.md kinject.sln README kinject Kernel shellcode injector basic vs2019 + cpp + wdk usage(64-bit only) ...
标题: kernel shellcode之寻找ntoskrnl.exe基址 http://scz.617.cn:8/windows/201704171416.txt 以64-bits为例,这是Eternalblue所用函数: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 --- 0000000000000961 Private_find_MZ proc near 0000000000000961 53 push rbx /* * 起始位置 */ 0000000000000962 65...
接下来便是shellcode的编写,windows下的提权一般使用Token窃取技术。在此之前需要了解一些常见的数据结构。 处理器信息存储在内核控制区域的KPCR结构体中,在x64中使用GS:[0]进行索引,可以使用下面的命令查看其结构: 代码语言:javascript 代码运行次数:0 运行 ...
(1)修改返回地址为线性映射区的地址,大概率会执行到add_rsp_0xe8_ret将栈抬升到pt_regs处,执行我们负责栈迁移的shell_code。 (2)将栈迁移到我们目标地址后,大量的slider gadget将栈不断抬升到get_root代码处,完成提权。 kernel rop + ret2user 利用思路 这种方法实际上是将前两种方法结合起来,同样可以绕过 sm...