章节一 关于Windows远控的一些事 想要做出来,你必须了解: Win32 API.不仅仅,比如如何注入Shellcode,所以须了解asm,也就是x64/x86汇编. C/C++的语法,标准库,数据结构等(或者你用其他的高级语言例如C Sharp),Socket etc. 为了继承www.yuque.com/wormwaker/tkpgqw/ppfnlcaqdkcsfmkd (有几个标识符(方法) 比如"显示器" "压缩文件"的声明 我们不再重定义)的伟大叙述 我于是成了它的子类. 章节二 驱动程序 比如CreateFile先经过kernel32.dll, 然后经过kernelbase.dll, 再由它调用ntdll.dll中的NTCreateFile 触发系统调用,进入Ring0 杀毒软件通过替换劫持已经加载的ntdll.dll的内存映像, 在函数里面添加jmp指令 这就是inline hook ntdll.dll进入ring0的方式是通过syscall指令 研究人员逆向分析了ntdll系统调用的编号和参数 然后在用户态自己实现了一套等效的syscall封装 这就是直接系统调用绕过 再看安全产商是如何应对的 CPU执行函数时要把调用者的返回基址压到栈上 然后跳转到函数所在的位置 这样函数执行完才能找到回来的路 syscall也是类似的跳转 如果是正常的用户态api调用流程 调用链会先经过ntdll,再由它发起syscall,也就是说, 当从内核返回到用户层时 栈顶的返回地址应该位于ntdll的地址范围 但如果由攻击者直接在用户态自己执行syscall, 此时当ring0返回时, 栈顶的返回地址就会落在主程序模块内 引用自github.com/AzidoPP的视频 纠正了若干错别字 ring0用于内核代码和驱动程序,驱动程序的文件扩展名是.sys. 我们可以用SCM方法加载驱动 比如MD5是dfb69795d1991da6f9edaa38d2a71427的A1SysTest v0.3.0.1.exe就用的是SCM方法. 用WinDbg验证 0:006...
评论
发表评论