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绕过, 云资产清单, 任务计划, 剪贴板监控, 协议分析, 命令与控制, 子域名变形, 屏幕截图, 恶意软件, 数据展示, 文件传输, 无后门, 权限提升, 清除日志, 漏洞挖掘, 端点可见性, 系统管理, 红队, 网络信息收集, 远程控制, 远程管理工具, 逆向工具, 逆向工程, 键盘记录, 麦克风录制