通过反射DLL注入来构建后渗透模块(第一课)
Aggressor Script
Aggressor Script是Cobalt Strike 3.0版本以上的一个内置脚本语言,由Sleep语言解析,Cobalt Strike 3.0以上版本的菜单、选项、事件都由default.cna构建。红队人员可以通过它来调用一些IRC、Webhook接口去对接机器人,实现自动化渗透与监控,Aggressor Script是Cobalt Strike这款C2平台的画龙点睛之笔。
对于Python、C/C++爱好者来说,Sleep语言一开始接触的时候感觉很奇怪,会有很多想吐槽的点,但久而久之,就会发现它的便捷之处。
反射 DLL注入
Aggressor Script脚本提供了一些关于反射DLL的接口:https://cobaltstrike.com/aggressor-script/functions.html#bdllspawn
话不多说,先上代码:
|
|
很明显,这是一个DLL的主函数,在经过DLL_PROCESS_ATTACH的时候,开始执行代码。程序通过DLLMain函数的lpReserved来当做参数传递。
但光看一个DLLMain是看不出后面的奇妙的,我们把目光转向反射DLL注入技术的作者:
这里有一个完整示例。
通过跟踪代码:https://github.com/stephenfewer/ReflectiveDLLInjection/blob/master/inject/src/LoadLibraryR.c
发现该函数会寻找ReflectiveLoader这个导出函数的地址,然后直接创建一个远程线程执行这个函数,这个函数本身又会自动模拟整个LoadLibrary API,从而执行DLLMain,最终完成代码执行。
开发自己的反射DLL
首先,可以直接将反射DLL注入作者的项目拿过来使用:
接着就要编写cna脚本了。
文件目录:
通过Cobaltstrike加载后,可以执行reflective_dll在客户端弹出一个信息框。
整个过程是拥有极少的敏感行为特征,因此可以非常容易的绕过一些反病毒查杀。