络靶场实战-免杀技术之虚假父进程

1. 什么是父进程

  • Windows中进程A创建了另一个进程B,那么进程A就是进程B的父进程,B就是A的子进程。

  • 在每一个进程的内存数据结构中,只保存了其父进程的Pid(Parent ProcessId),即使父进程被关闭了,这个存储父进程Pid的字段也不会更新,因此很多情况下通过父进程Pid很可能找不到任何一个进程(即父进程已经关闭或者异常退出)。

  • 当然这并不是什么大问题,因为目前并没有什么东西需要依赖这个父进程Pid。

  • 通过一个简单实验来说明进程树还有进程之间的关系,我们需要用到Process Hacker 2这个工具。[Process Hacker 2下载链接](https://processhacker.sourceforge.io/downloads.php)

  • 此时我们打开Process Hacker 2 随便找一个进程,我们看下。

    目前由此图可以看到dasHost.exe这个进程是由svchost.exe启动起来的。

  • 这时候我们自己来启动个程序看下,我们首先打开调试器x64dbg或者od都可以,我们在里面随便打开个软件看下。

   

 我这里就随便打开个Hash.exe

    这里因为Hash.exe是32位程序,所以我们用x32dbg来打开

把进程运行起来

可以看到这个进程和x32dbg中间有着联系。

2. 虚假父进程有什么作用

  上面我们说到子进程和父进程中间始终存在着各种关联,所以我们如果想要用我们自己的进程去启动一个程序,那么就会很容易的被检测到从而证明我们是一个可以软件。

    今天所说到的虚假父进程就正好的解决了这个问题,这样就可以在这一层的对抗上去的不错的胜利。

    那么我们所说的技术可以用到哪些的实战环境中呢/p>

    例如:反调试,反沙箱中。

    反调试我们不必多说,因为从上图可以看到,如果我们判断下我们的父进程不对就结束掉,这样就可以实现很简单的反调试手段。当然这种反调试很容易会被绕过,一般我们也不会去这么处理,对于反调试的手段我们后续再讲。

    反沙箱技术,这里如果读者们有了解过沙箱的实现原理或者看过cuckoo沙箱我们可以知道,一般情况下他会通过固定的进程去启动我们的软件,这里我们只需要将他通过判断过滤掉就已经过掉了反沙箱技术。

  • 我们来演示下怎么过沙箱。

  • 首先我们编译一段代码,输出我们的父进程名字。

    我们本地运行起来发现是VS的调试工具起的我们进程这也很好理解比较我们是直接启动的那么此时我们丢到沙箱里面看下结果。

    可以看到这里的进程是explorer.exe,那么我们完全可以用别的进程去起我们的进程让他不是这个explorer.exe,或者修改我们父进程从而绕过去他的启动检测。

3. 怎么实现虚假父进程

    实现父进程主要依靠的是微软的API CreateProcess

    通常我们启动一个进程就是直接CreateProcessA/W 进行直接调用我们我们来看下 我们两个的区别

    可以看到我们通过CreateProcessA直接调用的父进程就会是启动我们进程的进程。

    那么我们对这个进程稍作修改来看下。

    可以看出这里我们已经利用这修改父进程的技术去把我们修改的父进程给修改到正常的进程而不是我们自身进程,这样我们的程序最起码看起来更为的逼真。

4. 在虚假父进程中实现ShllCode注入

    那么我们继续在这段代码里写入一段ShellCode去执行一下

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月16日
下一篇 2022年11月16日

相关推荐