我又来分享一个免杀的姿势了,还是静态免杀。
进程Herpaderping是一种image被映射之后修改磁盘上的内容来隐藏进程意图的方法。
作者的网站:
https://jxy-s.github.io/herpaderping
工具项目地址:
https://github.com/jxy-s/herpaderping
引用原文的话术,进行翻译了下,看官大概大概看看吧:
安全产品通过在Windows内核(PsSetCreateProcessNotifyRoutineEx)中注册回调来监挺进程创建操作。这个内核回调是在插入初始线程时调用的,而不是在创建进程对象时调用的。
有些产品使用写时扫描方法,其中包括对文件写入的监视。比如记录已写入的文件,推迟实际检查,直到 IRP_MJ_CLEANUP 发生(例如,文件句柄关闭)。利用write->map->modify->execute->close的行为将破坏完全依赖IRP_MJ_CLEANUP检查的写入扫描。
像我这种菜鸡看到这里有点懵逼,接着往下看看行为是怎么样的吧。
绕过流程如下:
1、将目标二进制文件写入磁盘,保持句柄打开
2、将文件映射为image section
3、使用节句柄创建进程对象
4、使用相同的目标文件句柄,隐藏磁盘上的文件
5、在进程中创建初始线程(此时,内核中的进程创建回调将启动。磁盘上的内容与image的内容不匹配。此时检查文件将导致错误的属性)
6、关闭句柄,触发IRP_MJ_CLEANUP,此时安全产品开始检查文件(因为我们已经隐藏了正在执行的内容,所以此时的检查将导致错误的属性)
对应的流程图大家可以看看作者原文的介绍,大概长这样:
个人水平有限,担心误人子弟,就不写自己对原理的见解了,往下看看如何使用这个工具吧。
项目是用C++写的,作者没有给我们编译好,所以我们需要动动手编译一下
下载代码:
git clone https://github.com/jxy-s/herpaderping.git
cd .herpaderping
git submodule update --init --recursive
MSBuild .herpaderping.sln
温馨提示:编译的时候用vs2019,别的版本都不行,会提示无法打开xxx文件
编译成功后,会在herpaderpingbuildDebug.x64目录下生成一个ProcessHerpaderping.exe的应用程序
简单的介绍下怎么使用,有三个必须的参数:恶意文件名,重新写入的文件名,需要伪造的程序名
此时我们的恶意程序就已经以miansha666.txt的进程名运行
写入的文件签名会与你伪造的程序一致
此时脑海里闪过,我TM文件都到电脑上了,直接运行不就行了
赶紧想想别的利用姿势,比如http?
试试看
告辞,打扰了
怎么办呢,只能看下源码怎么加载的文件了,说干就干,来自菜鸡最后一点的倔强
先是在main.cpp里找到这样一段代码
感觉应该是执行入口没错了,跟进看看
然后在herpaderp.hpp里看了这个,CreateFileW()函数
看不懂,但是完全不慌,凭借我面向搜索引擎编程的经验,找到了这个函数的介绍
第一反应,共享文件
虚拟机开一个共享
用CS生成一个默认的EXE木马丢进去
接下来就是见证奇迹的时候,给爷连!!!!
真香
不过利用的时候有版本要求,其他版本能不能行,就自己测试吧
这时候想,如果结束掉进程再查杀会是怎么样的
MD5算一下我们写入的文件,发现运行时和结束进程之后MD5一样的
去我们的虚拟机里看看一开始生成的那个CS木马,发现MD5不一样
再去看看lsass的MD5是多少
看来不一样,此时飘过一个想法,工具可以做签名伪造,我先在本地运行,用生成的那个木马去别的机器执行,会不会也可以运行,也可以达到免杀的效果,试试看
图我就不截了,最后测试的结果发现不行,但是换个角度想,如果一些经验不足的一线应急人员拿着这个样本去跑沙箱是安全,看到签名是微软的,会不会放松警惕忽略过去了呢
我不说,私聊我就告诉你
站在巨人的肩膀上很舒服,保持求知欲,希望也能成为别人的肩膀。
END
本文始发于微信公众号(NOVASEC):利用PROCESS HERPADERPING免杀上线
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论