探索Bitmancer:用Nim构建Windows安全工具的新范式
项目简介
Bitmancer是一个专为Windows操作系统设计的进攻性安全工具开发库,它由Nim语言编写。这个项目旨在提供可高度配置、独立于位置的通用API、程序和宏,以帮助你快速启动新的植入物、PoC测试或创新工具的开发。
请注意,这是一个正在进行中的大工程,可能会遇到一些问题,稳定性的保证暂时还未提供。但是,如果你是热衷于探索新工具和技术的开发者,那么Bitmancer值得你关注!
项目技术分析
Bitmancer的核心特点是其部分依赖于winim库,提供了类型支持。通过nimble安装即可:
nimble install winim
安装Bitmancer目前只能通过GitHub源码进行:
nimble install https://github.com/zimawhit3/Bitmancer
编译时可以使用nim.cfg来避免对MSVCRT和Kernel32的依赖以及Nim系统模块的全局变量,以实现位置无关代码:
nim c -d:mingw <Your_Nim_File>
在你的Nim文件中导入Bitmancer模块非常简单:
import Bitmancer
或者只导入特定功能:
import Bitmancer/core # 只导入核心模块
import Bitmancer/core/obfuscation/hash # 只导入哈希处理
应用场景
Bitmancer适用于各种安全工具开发场景,包括但不限于:
- 创建隐蔽的植入物
- 快速验证概念证明(Proof-of-Concept)代码
- 开发用于漏洞利用、取证分析或逆向工程的工具
该库提供了多种实用功能,如ApiSet名称解析、常见API接口、哈希计算(编译时与运行时)、手动映射器、NTDLL函数封装、PE解析工具、SSN枚举等。
项目特点
现有功能
- 动态链接库(DLL)的ApiSet名称解析
- 常见API接口(如GetProcAddress,GetModuleHandle等)
- 编译时与运行时哈希计算
- 手动映射器(从磁盘加载)
- NTDLL API接口,包括NT系统调用和Rtl过程
- NTLoader数据库
- PE解析和工具
- SSN枚举(多种方法)
- 栈字符串
- 系统调用规避技术
未来计划
Bitmancer还计划支持更多高级功能,如反调试技术、加密、异常处理、回调、钩子函数、更多的NTDLL包装器、睡眠规避技术等。
使用示例
在Bitmancer中创建栈字符串是这样的:
var wStr {.stackStringW.} = "Hello!"
var cStr {.stackStringA.} = "World!"
自动生成并使用系统调用的示例:
## 自定义系统调用类型
type NtClose = proc(h: HANDLE): NTSTATUS {.stdcall, gcsafe.}
## 获取系统调用对象
let NtSyscall = ctGetNtSyscall[NtClose](...)
## 调用系统调用
NtCloseWrapper(h, NtSyscall.wSyscall, NtSyscall.pSyscall, NtSyscall.pFunction)
更多例子可以在项目仓库的examples目录下找到。
Bitmancer以其强大的功能和高度灵活性,为Windows平台的安全工具开发提供了全新的可能性。现在就加入,开始你的技术探险之旅吧!