Alan 框架
Alan Framework 是一个在红队活动中有用的后渗透框架。
如果你觉得我的工具有用,请考虑赞助我。
⚠⚠⚠ 免责声明 ⚠⚠⚠
此类软件的创建一直引发争议。如果你想知道我为什么决定创建这个工具,那是因为我相信最终的学习体验是实现你所学的知识。在逆向工程过程中,许多小细节被忽略。渐渐地,这些细节阻碍了研究人员全面了解正在发生的事情。最后,我首先是一名程序员,我喜欢开发这类程序 😄
下载
下载 Alan C2 框架
显著特点
- 你可以直接在内存中运行你喜欢的工具
- JavaScript 脚本执行(内存中,无需第三方依赖)
- 完全兼容的 SOCKS5 代理
- 支持的代理类型:Powershell (x86/x64)、DLL (x86/x64)、可执行文件 (x86/x64)、Shellcode (x86/x64)
- Server.exe 可以在 Linux 中执行(通过 dotnet core)
- 网络通信完全加密,会话密钥无法从代理二进制文件或流量转储中恢复
- 通过 HTTP/HTTPS 进行通信
- 无需安装外部依赖或库
- 强大的命令 shell
- 代理配置可以动态更新(你也可以更改端口和协议)
文档:
博客文章
更多使用信息,请阅读文档。
编译源代码
要编译 Alan,必须执行以下操作:
- 确保已安装 cmake 并且它在 PATH 中(运行 cmake --help 查看是否正常工作)
- 安装 Visual Studio 2022(社区版即可)。这些步骤已在 VS 2022 17.3.1 版本上测试过
- 确保 Visual Studio 套件中安装了 .NET 桌面开发、使用 C++ 的桌面开发 和 F# 语言
- 通过运行以下命令安装 .NET 库:./src/server/paket.exe install
- 在 Visual Studio 中打开文件 .src/server/ServerSln.sln。将 ServerBuilder 项目设置为主项目(右键 -> 设置为启动项目)
- 运行 ServerBuilder,它将编译所有内容
- 如果编译成功,Alan .zip 文件将位于新创建的目录 Misc/out/release 中
视频:
演示视频
更新日志
v7.0.514.10 - 15/05/2022
- 实现了
proxy 命令用于 pivoting
info 和 info++ 命令现在显示代理是否正在使用代理
- 修复了网络通信中的 bug(Issue 2)
- 修复了 PE 加载器中通过序号导入函数时的错误
- 修复了 JS 模块导致提前释放内存的问题
- 修复了
run 命令中导致 & 选项无法工作的错误
- 日志消息现在保存到文件
alan.log
- 所有生成的输出和用户输入都记录到
evidences 文件夹内的证据文件中
- 为
info 命令添加了机器 ID 信息
- 为代理创建添加了
Vanilla 包类型。这允许更好地集成自定义打包器。
v6.0.511.28 24/02/2022
- 修改了 x86/x64 PE 加载器以更新 PEB->Ldr 字段。这允许系统在注入的 DLL 上调用 DLL_PROCESS_DETACH。
- 将最大响应大小增加到 1GB。修复了大文件的下载问题。
- 在配置中添加了代理过期日期。
run 命令已扩展以支持执行 Javascript 文件。
info++ 命令现在显示卷标和文件系统类型。
v5.0.509.20 - 13/12/2021
- 实现了
run 命令
- 实现了
kill 命令
- 实现了
exec 命令
- 移除了
inject 消息,因为它可以通过后台的 run 命令实现
- 创建了 stager 和 PE 加载器以使代理更隐蔽。每个生成的代理文件具有不同的哈希值
- 改进了代码注入以绕过动态代码策略缓解
- 现在可以在向导中指定要创建的代理文件名
- 修复了
upload 和 download 命令中的错误
- 修复了 shell 创建中的错误。命令 shell 进程令牌没有与代理相同的完整性级别
- 从 DLL 代理工件中移除了导出的函数
- 为
info 命令添加了当前工作目录
- 扩展了
shell 命令以执行单个命令
v4.0.0 - 26/09/2021
- 添加了
inject 命令。此命令允许操作员将代码注入远程进程
- 添加了
sleep 命令,每次短睡眠 400 毫秒。
- 在
sleep 中引入了 Jitter 概念
- 将代理移植到 x64 位(包含 PE32+ 加载器)
- 修复了 x86 PE 加载器中的错误
- .NET 代理运行器现在以更隐蔽的方式执行以避免检测
- 现在可以在 HTTP/S 监听器响应中指定自定义 Web 服务器
- 移除了
listeners 命令,因为它是多余的
- 改进了
info 命令,提供了更多信息
- 错误消息更具解释性
- 添加了进程令牌类型(是否提权)的信息
- 添加了进程令牌权限的信息
- 添加了进程令牌组的信息
v3.0.0 - 15/05/2021
- 将代理 shell 的
quit 命令重命名为 exit
- 通过
migrate 命令实现了代理迁移
- 修复了获取操作系统版本时的错误
- 在创建向导中添加了 DLL 作为代理格式。
- 实现了
ps 命令以列出当前运行的进程
- 实现了
download 命令以将文件或整个目录下载到本地
- 实现了
upload 命令以上传文件到受害主机
- 实现了
SuccessRequest 作为 HTTP 服务器响应选项,以自定义 http/s 监听器响应
- 实现了
ErrorRequest 以自定义错误请求的 http/s 监听器响应
- 实现了
prepend 和 append 作为 HTTP 服务器请求选项,在代理配置中指定
v2.0.500.23 - 20/03/2021
- 实现了代理
detach 命令以临时退出已连接的代理
- 实现了 shell
detach 命令以临时退出命令 shell
- 实现了
listeners 命令以列出可用的监听器
- 实现了 HTTPS 监听器以通过 TLS 与代理通信
- 实现了
get-config 命令以下载当前代理配置
- 实现了
update 命令以更新代理配置
- 现在支持 Windows 7
v1.0.0 - 22/02/2021