大约在19年末到21年初的时候, 在参加的诸多红蓝对抗和渗透测试中.渐渐发现每当遇到目标机器存在反病毒软件时. 都需要对投放的载荷进行免杀处理, 而在我尝试了市面上开源或者未开源的等一系列免杀工具后我发现, 虽然有些工具的免杀效果确实不错.但大部分在使用时都需要手动替换载荷或者指定相应的参数, 在红蓝对抗这种跟时间赛跑的情况下, 这种方式就显得有点疲软了.
结合上述需求, 我渐渐萌生了一个想法.能不能开发一个简单且易用的免杀及分发的平台, 基于此平台用户在使用时不再需要记住各种参数和手动替换载荷等繁琐的步骤, 用户只需要做的就是在网页上简单的点点按钮就可以生成一个符合要求的载荷, 剩下的至于怎么生成这个载荷都交给系统去处理. 生成载荷后用户只需要下载这个载荷去目标上执行就可以了, 基于此方式将大大减少在载荷处理上的时间.
本文主要跟大家分享一下开发此项目的昨天,今天和明天
, 目的更多的在于提供一些方式方法或着说一些思路, 可能并不会讲太多关于技术细节的东西
引用某著名小品的中一句话
让我们回顾一下过去, 评说一下现在, 展望一下未来
由于平台最初使用的Csharp作为加载器,故起名为Super Sharp
简称为SSharp
, 并使用反射注入的方式执行shellcode.
在使用一段时间后, 渐渐发现一个严重问题. 由于编译生成的载荷需要依赖.net framework
, 而在一些实际环境中并没有安装相应的组件, 导致生成的载荷无法运行.在发现此问题后, 基于Csharp
的这种方式也就被弃用了.
在发现.net
兼容性问题后, 我便开始寻找另外一种语言作为加载器使用. 当我在github
上浏览相关加载器项目时, 无意间发现了一个使用冷门且小众的语言开发的安全项目-OffensiveNim, 此项目使用一种较为冷门的语言Nim
作为主要的开发语言. 随后便去了解了一下这门语言
Nim
是一种静态类型、命令式编程语言,支持过程式、 函数 式、面向对象和泛型编程风格. 支持跨平台, 使用nim
编写的的程序可以很轻松的转换成C, C++, Javascript
等语言格式, 语法风格上与Python
几乎一致, 在编译体积和执行速度上可以媲美原生C程序.
在了解后第一感觉作为加载器来说还是不错的,唯一的缺点就是第三方库较少. 有些特定需求的功能都需要自己去实现
在简单学习后, 我用Nim
重构了一遍加载器,并更换了shellcode的加载方式
此方式一直沿用到了今年, 在经过今年大大小小的多人运动实战后. 效果上表现还算不错, 但之后又暴露出了一个问题, 由于生成的载荷直接与平台进行通讯进行下发配置和模块, 这就导致了一旦投递的载荷多了或者被捕获了流量那么平台地址在威胁情报平台上会被标记,影响载荷和平台之间通讯.
在意识到这个问题后, 随即想着怎样去处理这个问题. 在斟酌了几个方案后. 我决定采用云函数技术来解决这个问题, 通过使用各云厂商提供的sdk
, 在每次生成载荷时发布一个与载荷对应的云函数服务, 让云函数作为载荷和平台之间中转的一个桥梁, 将真实平台隐藏到后面. 当一个载荷不再使用或者失效时, 将对应云函数删除即可, 做到随用随取, 用完即毁.
之后此项目也更名为Prometheus
经过前几次的技术更新, 目前该平台主要的功能也趋于完善. 下面简单介绍一下目前该平台实现功能
目前平台主要有以下4个模块
模块名称 | 功能 |
---|---|
分发器模块 | 用于生成, 管理现有的载荷信息 |
资源模块 | 用于添加, 管理载荷程序集和配置分发器模板 |
转发器模块 | 用于生成, 管理云函数转发器和配置转发器模板 |
用户模块 | 用于添加, 管理用户 |
该模块主要用于生成具有免杀特性的载荷文件, 此过程需要用户输入shellcode, 加密, 请求标识等指示参数
或设置其他一些附加选项
此页面主要展示一个分发器的主要参数或查看回连信息
此功能主要由于指示生成的载荷文件属性信息
此功能主要用于配置分发器模板参数及代码
此功能主要用于生成和展示一个转发器相关的主要参数
此功能主要用于配置转发器模板参数及代码
此模块主要用于管理平台相关用户的状态, 权限等信息
尽管Prometheus
的功能已趋于完善, 应对大多数AV已足够, 但并没有达到FUD
后续主要的更新也会着重此方面
近期的更新计划
nim
的跨平台优势)由于某些功能的原因, 目前Prometheus
仍正处于内部测试阶段, 如果你想体验并愿意帮助改进. 请联系我们