Skip to content

Sakura529/ObfuscatedPersistence

Repository files navigation

Obfuscated Persistence - 混淆持久化研究工具

功能概述

这是一个 Windows 持久化技术的研究型 PoC(概念验证)工具,演示了以下防御研究场景:

  1. 持久化机制:利用 RegisterApplicationRestart API 实现应用程序自动重启
  2. 关机拦截:创建隐藏窗口监听系统关机事件(WM_QUERYENDSESSION)
  3. 载荷执行:启动时自动执行指定的可执行文件(默认为 text.exe
  4. 混淆技术:使用多种代码混淆手段避免静态检测

工作原理

核心流程

  1. 程序启动

    • 释放控制台窗口,完全静默运行(FreeConsole()
    • 注册应用程序自动重启机制(RegisterApplicationRestart
  2. 载荷执行

    • 从当前目录查找配置的可执行文件(默认 text.exe
    • 以隐藏窗口方式启动载荷程序
  3. 关机拦截机制

    • 创建隐藏窗口注册系统消息监听
    • 设置高优先级关机参数(SetProcessShutdownParameters
    • 当系统尝试关机时:
      • 拦截 WM_QUERYENDSESSION 消息
      • 调用 AbortSystemShutdown 中止关机
      • 请求关机权限(SeShutdownPrivilege
      • 强制系统重启(ExitWindowsEx
  4. 持久化效果

    • 系统重启后,由于注册了自动重启机制,程序会被系统自动拉起
    • 形成"关机-重启-程序自启-拦截关机"的循环

混淆技术

  • 动态字符串拼接:避免硬编码敏感 API 名称(如 SeShutdownPrivilege
  • 随机化窗口类名:基于系统时间生成动态窗口类名
  • 计算常量:通过简单运算隐藏真实的 API 标志值
  • 干扰变量:插入无意义变量增加逆向分析难度
  • 条件混淆:使用永远为真/假的条件表达式混淆逻辑

使用方法

编译环境

  • Visual Studio 2019 或更高版本
  • Windows SDK
  • C++ 桌面开发工具集

配置步骤

  1. 修改载荷文件名(可选)

    打开 persistence_obfuscated.cpp,修改第 15 行:

    #define PAYLOAD_EXE_NAME L"text.exe"  // 改为你的目标程序名
  2. 编译项目

    在 Visual Studio 中打开 ObfuscatedPersistence.sln,编译为 Release 版本:

    • 配置:Release
    • 平台:x64 或 x86
  3. 部署测试

    隔离的虚拟机环境中进行测试:

    测试目录/
    ├── ObfuscatedPersistence.exe  (编译后的主程序)
    └── text.exe                    (你的载荷程序)
    
  4. 运行测试

    • 双击运行 ObfuscatedPersistence.exe
    • 程序会立即隐藏(无任何窗口)
    • 载荷程序(text.exe)会被自动启动
    • 尝试关机时系统会自动重启
    • 重启后程序会自动恢复运行

About

影子持久化

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages