MirraLis/Aufheben

GitHub: MirraLis/Aufheben

这是一个基于Python的Windows远程管理工具,旨在通过演示C2概念、持久化机制及后渗透技术来辅助安全研究。

Stars: 0 | Forks: 0

# 撤销 Windows 远程管理工具。 ## 概述 Aufheben 是一个基于 Python 的 RAT(远程访问木马),演示了 C2 概念、Windows 持久化机制和后渗透技术。构建此工具旨在理解恶意软件的运作方式以及如何防御它。这基本上是我当时在理解红队概念时制作的一个旧工具,我想我应该把它发出来。请享受 :)。 **注意:** 这是一个学习项目。代码中故意包含了一些限制(例如持久化路径位于桌面)。生产环境中的恶意软件要复杂和隐蔽得多。 ## 功能 **C2 通信:** - AES-CTR 加密(演示使用静态密钥) - 自定义二进制协议 - 6 字节长度头 - `0xFEEDBEEFFACE` 心跳信号 - 多客户端会话管理 - 自动重连 **客户端能力:** - 支持流式传输的文件上传/下载 - 命令执行(可见/隐藏) - 交互式 shell(cmd/powershell 切换) - 屏幕截图捕获(PNG 格式) - 进程枚举 - 递归文件搜索 - 键盘记录器(捕获击键) - 剪贴板记录器(监控复制/粘贴) - 麦克风录音 - 清除 Windows 事件日志(系统/应用程序/安全) **持久化与权限提升:** - Windows 任务计划程序集成 - 通过 fodhelper 技术绕过 UAC - 自动权限检测 - 基于 Mutex 的重复运行防护 - 远程更新机制 - 自毁并清理痕迹 **隐蔽特性:** - 后台运行(无控制台窗口) - 隐藏文件放置 - 加密通信 - 心跳机制而非持续轮询 - 可配置的持久化间隔 ## 要求 ``` Python 3.8+ Windows OS ``` ## 安装 ``` pip install -r requirements.txt ``` ## 使用方法 ### 服务器 (C2): ``` python Aufheben_server.py ``` 服务器默认绑定到 `127.0.0.1:80`。请编辑源代码进行更改。 **部署:** ``` pyinstaller -F Aufheben_client.py --noconsole --name Aufheben ``` 如果你没有 pyinstaller,请使用以下命令安装: ``` pip install pyinstaller ``` **重要:** 持久化和提权命令需要编译为 `.exe` 文件。 不过,如果你确实想在未编译为 `.exe` 的情况下运行 Aufheben_client.py,请注释掉 `self.migrate()` 函数。 (在这种情况下,你需要将 Loggers.py 放在同一目录中) ## 命令 ### 单会话: ``` help - Command list cd - Change directory ls - List directory pwd - Current directory download - Download file upload - Upload file execute - Execute command --DISPLAY - Show output --LOG - Save output cmd - Interactive shell screenshot - Take screenshot list_proc - List processes search - Find files start_keylogger - Start keylogger stop_keylogger - Stop and dump start_cliplogger - Start clipboard logger stop_cliplogger - Stop and dump record_mic - Record audio persist - Add persistence update - Update client self_destruct - Remove client check_priv - Check privileges clear_logs - Clear event logs (admin) bg - Background session exit - Close connection ``` ### 多会话: ``` sessions - List active sessions interact - Interact with session elevate - UAC bypass attempt elevate_all - UAC bypass all kill - Terminate session deploy - Upload/execute on all --DISPLAY - Show output --LOG - Save output --DELETE - Remove after execution broadcast - Execute on all start_loggers - Start all loggers stop_loggers - Stop all loggers update_all - Update all clients quit - Exit server ``` ## 技术详情 ### 迁移与持久化 `migrate()` 函数处理初始设置和持久化: 1. **权限检测:** 使用 `IsUserAnAdmin()` 检查是否以管理员权限运行 2. **文件放置:** - **管理员:** 复制到 `%TEMP%\Aufheben.exe`(隐藏系统目录) - **用户:** 复制到 `%USERPROFILE%\Desktop\Aufheben.exe`(可见但可访问) 3. **Mutex 检查:** 创建名为 `User_Task5@#` 的互斥体以防止重复实例 4. **任务计划程序设置:** 注册计划任务以实现持久化 **重要:** 目前 `activate()` 中的迁移已被注释掉,原因是: - 仅在编译为 `.exe` 时有效(不适用于 Python 脚本) - 任务计划程序需要可执行文件的绝对路径 - Python 解释器路径处理较为复杂 要启用:在 `activate()` 方法中取消注释 `self.migrate()`,然后使用 PyInstaller 编译。 ### IP 地址查询 `get_external_ip()` 函数有一个占位符: ``` external_ip = b"ip slot here" # IP LOOKUP CODE GOES HERE ``` 此处故意留白。你可以添加任何你选择的 IP 收集方法。 **留白原因:** 避免泄露开发期间使用的特定 IP 查询服务。同时也表明这是演示代码,而非生产级恶意软件。 ### 加密 使用 PyCryptodome 在 CTR 模式下的 AES 实现: ``` socket_key = b"x\x83\xe1RW\xff\xf1k\xbf\x94\xdef\x88\x8fn\x13:\x9f\xf4\xa5\xf7\x93\xf0l" # Default key. Place your AES key here 16, 24 or 32 bytes ``` ### 任务计划程序持久化 使用了两种触发器类型: **类型 7 (TASK_TRIGGER_LOGON):** - 用户登录时触发 - 用于标准用户 - 在用户的任务列表中可见 **类型 9 (TASK_TRIGGER_BOOT):** - 系统启动时触发 - 用于管理员/SYSTEM - 在用户登录之前运行 - 位于 `\Microsoft\` 文件夹中(较少可见) **重复间隔:** PT5M(每 5 分钟) - 如果进程死亡,任务会在 5 分钟内重启它 - 确保即使崩溃也能持久化 ### UAC 绕过 利用 Windows 10/11 的 fodhelper.exe(管理可选功能): 1. 修改注册表:`HKCU\Software\Classes\ms-settings\Shell\Open\command` 2. 设置 `DelegateExecute` = ""(空字符串) 3. 将默认值设置为 payload 路径 4. 执行 `fodhelper.exe`(自动提升权限且无 UAC 提示) 5. Payload 以高完整性级别运行 ### 自毁 `version_control()` 函数处理清理工作: 1. 创建临时计划任务 "AufhebenCleanup" 2. 将任务设置为创建 5 秒后运行 3. 任务执行:`cmd /c del [current exe] & schtasks /delete /tn AufhebenCleanup /f` 4. 原始进程退出 5. 任务删除文件并移除自身 6. 干净地移除,不留痕迹 **为什么使用计划任务?** 进程无法删除自己正在运行的可执行文件。任务等待进程退出,然后删除文件。 ### 更新机制 远程更新过程: 1. 服务器将新的可执行文件上传到 `%APPDATA%` 2. 客户端创建 "AufhebenCleanup" 任务 3. 任务删除旧的可执行文件,启动新的,然后移除自身 4. 新版本开始运行 5. 移除旧的持久化,创建新的持久化 允许在无需手动访问的情况下更新已部署的客户端。 ## 持久化 使用 Windows 任务计划程序: - **管理员:** 以 SYSTEM 身份运行,存储在 `%TEMP%` 中,触发器类型 9(启动) - **用户:** 以当前用户身份运行,存储在桌面上,触发器类型 7(登录) 如果进程死亡,每 5 分钟重复一次。 **限制:** 仅在编译为 `.exe` 时有效(不适用于 Python 脚本)。 ## UAC 绕过 使用 fodhelper 技术: 1. 修改 `HKCU\Software\Classes\ms-settings\Shell\Open\command` 2. 触发 `FodHelper` 3. 以提升的权限执行 成功由任务计划程序中的触发器类型 9 指示。 ## 已知问题与限制 ### 1. 持久化需要编译 **问题:** `migrate()` 默认被注释掉 **原因:** 任务计划程序需要可执行文件的绝对路径: ``` action.Path = str(self.persistent_exe) # Must be .exe, not .py ``` **解决方案:** 先编译,然后在 `activate()` 中取消注释 `self.migrate()` **技术原因:** Windows 任务计划程序无法直接执行 Python 脚本。它需要: - 有效的 PE 可执行文件 - 绝对路径(无相对路径) - .exe 扩展名 ## 结语 构建此工具的目的是为了理解 C2 架构和 Windows 内部机制。希望你觉得它有用。 如果你发现错误或有疑问,请提交 issue。到时候再见。 本项目仅用于教育/研究目的。如果你利用它从事非法活动,我不承担任何责任。
标签:AES加密, Awesome, CSV导出, OpenCanary, PyInstaller, Python, RAT, Shell, UAC绕过, 云资产清单, 任务计划, 剪贴板监控, 协议分析, 命令与控制, 子域名变形, 屏幕截图, 恶意软件, 数据展示, 文件传输, 无后门, 权限提升, 清除日志, 漏洞挖掘, 端点可见性, 系统管理, 红队, 网络信息收集, 远程控制, 远程管理工具, 逆向工具, 逆向工程, 键盘记录, 麦克风录制