No-Consolation DLL加载高级玩法:PEB链接与无进程注入技术
【免费下载链接】No-ConsolationA BOF that runs unmanaged PEs inline项目地址: https://gitcode.com/gh_mirrors/no/No-Consolation
No-Consolation是一款强大的Beacon Object File (BOF)工具,能够在内存中内联执行未托管PE文件(包括EXE和DLL),并在不分配控制台(即不生成conhost.exe进程)的情况下检索其输出。这一终极技术方案为安全研究人员和开发者提供了前所未有的内存操作灵活性。
核心功能解析:重新定义PE加载方式
No-Consolation的设计理念围绕着高效、隐蔽的内存中PE执行,其核心特性彻底改变了传统的DLL加载模式:
- 跨架构支持:完美兼容64位和32位系统环境
- 双模执行:同时支持EXE和DLL文件类型
- 无进程注入:无需创建新进程即可执行目标代码
- PEB链接技术:将模块链接到进程环境块(PEB),使
GetModuleHandle和GetProcAddress等API调用正常工作 - 内存持久化:加密存储已加载的二进制文件,避免重复传输
- 异常处理:x64架构下完整支持C++异常机制
PEB链接技术:突破传统加载限制
进程环境块(PEB)是Windows进程中的关键数据结构,No-Consolation通过精妙的PEB操作实现了模块的隐蔽加载。在source/peb.c中,我们可以看到核心实现代码:
peb = (PPEB2)READ_MEMLOC(PEB_OFFSET); ldr = (PPEB_LDR_DATA2)peb->Ldr;这段代码通过读取PEB偏移地址获取PEB结构,并访问其Ldr成员(PEB加载器数据)。通过修改这些结构,No-Consolation能够将模块"链接"到PEB中,使其看起来像是正常加载的模块,同时避免了常规LoadLibrary调用带来的检测风险。
使用--link-to-peb参数即可启用此功能:
beacon> noconsolation --link-to-peb --local C:\path\to\target.dll无进程注入实战:高级使用指南
No-Consolation的无进程注入能力使其成为安全研究的理想工具。以下是几种典型使用场景:
1. 内存中执行PowerShell
beacon> noconsolation --local C:\windows\system32\windowspowershell\v1.0\powershell.exe $ExecutionContext.SessionState.LanguageMode此命令在内存中执行PowerShell,不产生新进程,有效规避进程监控。
2. 加载可疑DLL并保持隐蔽
beacon> noconsolation --dont-unload --link-to-peb --no-output --dont-save --local C:\windows\system32\suspicious.dll该命令将DLL加载到内存并链接到PEB,使后续依赖此DLL的操作不会触发镜像加载回调。关键参数说明:
--dont-unload:保持DLL加载状态--link-to-peb:将模块链接到PEB--no-output:不尝试获取输出--dont-save:不将二进制文件保存到内存
3. 内存中PE管理
No-Consolation提供了完整的内存中PE生命周期管理:
- 列出已加载PE:
noconsolation --list-pes - 卸载指定PE:
noconsolation --unload-pe mimikatz.exe - 临时执行不保存:
noconsolation --dont-save /tmp/temp.exe
技术实现解析:关键代码模块
No-Consolation的强大功能源于其精心设计的代码结构,核心模块包括:
- PEB操作:source/peb.c负责PEB结构解析和模块链接
- API解析:source/apisetlookup.c处理API集查找
- 加载逻辑:source/loader.c实现PE文件的内存加载
- 控制台重定向:source/console.c处理输出捕获,避免
conhost.exe生成
快速开始:安装与基本使用
环境准备
首先克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/no/No-Consolation编译项目
使用Makefile编译BOF:
make基本命令格式
noconsolation [选项] /path/to/binary.exe [参数]最常用的基础命令示例:
beacon> noconsolation --local C:\windows\system32\cmd.exe /c ipconfig总结:重新定义内存中PE执行
No-Consolation通过创新的PEB链接技术和无进程注入方案,为安全研究和红队操作提供了强大工具。其核心优势在于:
- 隐蔽性:不创建新进程,避免常规检测机制
- 高效性:内存中执行,减少磁盘操作和网络传输
- 灵活性:支持EXE和DLL,提供丰富的参数控制
- 兼容性:跨架构支持,处理C++异常
无论是安全研究人员还是开发人员,No-Consolation都提供了探索Windows内存执行的新视角和强大能力。通过掌握这些高级技术,您可以更深入地理解Windows内部机制,并构建更安全、更高效的应用程序。
参考资料
- 项目头文件定义:include/peb.h
- 核心加载逻辑:source/loader.c
- 使用示例与高级技巧:README.md
【免费下载链接】No-ConsolationA BOF that runs unmanaged PEs inline项目地址: https://gitcode.com/gh_mirrors/no/No-Consolation
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考