html tool

2019年7月8日星期一

Hook/Notity 的分析和next


P475 -
5.Hook/Notity 的分析和next

[popexizhi analysis]

  • 对选择NtResumeThread hook的原因
    多数文章都分析如下,进程创建过程中CreateProcess的调用过程解剖如下:
    CreateProcess ->
    CreateProcessInternal ->
    NtCreateProcess -> ->
    NtCreateThread ->
    NtResumeThread


    https://blog.csdn.net/zhou191954/article/details/10164459
    推荐的阅读-分析系统创建进程过程,寻找方法
    关于这方面内容,可以参考毛德操老师的两篇文章
    《漫谈兼容内核之十七:再谈Windows的进程创建》
    《漫谈兼容内核之二十二:Windows线程的调度和运行》


    此方式的做法是
    通过对系统服务NtResumeThread的注入,查找其中notepad.exe的对这个系统方法的调用,在这个调用中对notepad的进程插入Shellcode并修改CONTEXT,当notepad的对应线程恢复时就先执行这个ShellCode

    这里NtResumeThread是系统提供的在线程刚刚创建或被暂停时一定使用的内核服务;
    而原始code中对于Shellcode的插入点选择eax而不是eip的原因也是和这个NtResumeThread的使用场景直接相关的,虽然pope现在也没找到code上的直接证据,但是从逻辑上分析应该是这样的。

    原书在code后的追加说当前方法在x64平台上的内核PatchGuard机制导致不可以用,不过pope好像x32平台也没有编译通过:)
    这个方式和4.SetThreadContext法是相似的都是在系统中的对进程管理涉及到的某个位置进行修改,之后被执行shellcode。



没有评论:

发表评论