深入理解白加黑
字数 3004 2025-08-29 08:30:05

深入理解白加黑技术:原理、应用与防御

一、白加黑技术介绍

1. 基本概念

白加黑技术是一种网络安全领域的攻击手段,主要用于绕过杀毒软件的检测并实现恶意代码执行。

  • 白文件:指具有合法数字签名或被杀毒软件标记为可信的可执行文件(如.exe程序),通常为系统工具或常见软件。
  • 黑文件:指攻击者自定义的恶意代码,通常以DLL文件形式存在,包含Shellcode、反弹Shell等恶意功能。
  • 白加黑组合:通过白文件加载黑DLL,使恶意代码在白文件执行时被触发,从而绕过杀软对黑文件的查杀。

2. 攻击机制

  • DLL劫持:Windows系统在加载DLL时,会优先搜索程序所在目录。攻击者将恶意DLL放置于白文件目录下,当白文件运行时,系统会优先加载恶意DLL而非系统原版DLL。
  • 动态加载:通过LoadLibrary等API函数显式加载恶意DLL,或修改白文件的导入表(IAT),使其在运行时调用黑DLL。
  • 无文件落地:部分攻击直接将恶意代码编译为Shellcode,通过白文件内存加载执行,避免生成独立文件。

3. 攻击目的

  • 权限提升:执行命令(如创建管理员账户)
  • 持久化控制:通过注册表或启动项实现自启动
  • 敏感数据窃取:结合后续攻击获取系统权限

4. 防御措施

  • 限制目录权限:确保软件仅安装在受保护的目录(如C:\Program Files),避免普通用户写入恶意DLL。
  • 增强杀软检测:通过行为分析识别异常DLL加载行为,而非仅依赖静态签名。
  • 修复已知漏洞:及时更新系统补丁,防止利用已知DLL劫持路径的攻击。

5. 技术演变

随着杀软对抗升级,白加黑技术呈现以下趋势:

  • 动态化:结合进程注入、代码混淆等手段降低检测概率
  • 场景化:针对特定软件(如Steam、浏览器)定制白文件,提高成功率
  • 长期化:通过重启断链、隐蔽加载等方式规避行为监控

二、应用场景

1. 绕过杀毒软件动态检测

通过将恶意代码(黑文件)与合法程序(白文件)结合,利用系统DLL加载机制或数字签名欺骗杀软。

示例

  • 使用腾讯游戏加速器的白文件加载恶意DLL,通过DLL劫持实现无文件攻击
  • 为Veil生成的恶意程序添加腾讯视频等可信应用的数字签名,降低在线/本地查杀率

2. 权限维持与持久化控制

  • DLL劫持+APC注入:在合法进程(如网易云音乐)加载时注入恶意DLL,通过Early Bird APC技术实现隐蔽进程接管,规避杀软钩子检测
  • 隐写术结合DLL:将加密的Shellcode存入图片文件,通过DLL动态加载机制从图片中读取并执行,实现无文件落地攻击

3. 对抗现代杀软静态分析

  • 静态特征规避:通过修改恶意DLL的导出函数、删除冗余代码、调整编译标准(如禁用C++17特性)等方式,逃逸基于静态签名的查杀
  • 函数劫持伪装:使用Aheadlib工具生成DLL函数模拟代码,覆盖原函数入口实现无特征调用

4. 场景化攻击定制

  • 针对性白文件选择:优先选择存在未校验DLL依赖或弱签名校验的软件(如部分国产工具、游戏加速器),降低攻击复杂度
  • 多平台适配:针对32/64位系统分别编译恶意DLL,结合CreateProcessA和调试挂起技术实现跨平台注入

典型攻击流程示例

  1. 选择白文件:如cloudmusic_reporter.exe(缺失libcurl.dll)或游戏加速器主程序
  2. 生成/改造黑文件:用Veil生成Shellcode,或通过Aheadlib生成函数劫持DLL
  3. 植入与加载:将恶意文件放置于白文件目录,或通过APC注入技术触发加载
  4. 免杀强化:添加数字签名、代码混淆或隐写存储,提升存活率

三、常用工具

灰梭子

核心功能

  • 手动化扫描:测试断点+dll劫持
  • 操作:简易手动断点找dll,然后拖入x64 dll劫持完整asm+cpp

注意:该工具需在合法授权范围内使用,禁止用于非法渗透测试或攻击活动。

Zeroeye

核心功能

  • 自动化扫描:通过遍历指定目录或分析单个文件,提取EXE的导入表,筛选出非系统DLL文件
  • 白文件挖掘:将符合条件的文件分类存储至binX64或binX86目录,并生成Infos.txt记录DLL信息,支持虚拟机环境批量扫描
  • 扩展功能:支持数字签名校验、生成DLL劫持模板,结合灰梭子等工具实现免杀攻击流程化

技术特性

  • 性能优化:使用C++替代Python脚本,提升扫描速度(如200G数据扫描仅需2分11秒)
  • 多平台适配:提供x64/x86双版本可执行文件,兼容不同系统环境

获取方式

  • GitHub仓库:https://github.com/ImCoriander/ZeroEye

注意:该工具需在合法授权范围内使用,禁止用于非法渗透测试或攻击活动。

IDA

  1. 恶意DLL函数定位与分析:通过IDA加载目标DLL文件,利用其反汇编功能快速定位关键函数入口
  2. 代码逻辑与行为验证:IDA的图形化界面和交叉引用功能可帮助研究人员理解DLL的运行流程
  3. 测试DLL的动态调试支持:在编写测试DLL时,IDA可与调试器(如x64dbg)配合使用,实时监控DLL加载过程和函数执行结果
  4. 免杀对抗特征规避:利用IDA的代码修改功能,对恶意代码进行混淆或加密处理

零攻防dll模板

(具体内容未在原文中详细描述)

四、个人理解

白加黑技术不应用于任何形式的第一次上线操作(即将shellcode loader写入Black dll),这样会导致dll存活期短,而且不容易做到单文件(因为各大查杀工具对下载者查杀很严)。而是应该用于权限提升或权限维持。

误区纠正:黑dll不一定非要写启动行为,可以尝试对症下药的措施。

五、案例研究

案例1:针对打印机程序的权限维持

目标:办公人员,经常使用打印机,已获得user权限

操作步骤

  1. 确认劫持对象

    • 在windows系统文件中找到打印机程序,猜测存在dll执行,手动测试
    • 发现对象Printdialog.dll疑似存在劫持
  2. IDA确认

    • 将dll导入IDA
    • 发现有一堆函数,添加dll关键词进行筛选
  3. 导入灰梭子,劫持

  4. 测试+利用

    • 运行成功,写代码批量修改dll
    • 实现该功能的C++代码结合了文件操作、网络请求和进程管理技术
  5. 效果预测

    • 在对症下药的策略下,使得dll无启动等高危行为实现"自启"
    • 用户每次使用打印机都会上线
    • 缺点:多次上线,需要添加互斥体
  6. 如何自查

    • 定期查注册表,启动项
    • 检查文件hash或者签名

六、防御建议

  1. 系统层面

    • 启用DLL签名验证
    • 限制非特权用户对系统目录的写入权限
    • 定期更新系统和应用程序补丁
  2. 安全产品层面

    • 部署具备行为分析能力的终端防护产品
    • 监控异常DLL加载行为
    • 实施应用程序白名单策略
  3. 管理层面

    • 定期进行安全审计
    • 对关键系统文件进行完整性检查
    • 建立完善的日志记录和分析机制

七、法律与道德声明

本技术文档仅供学习、研究、教育或合法用途。开发者明确声明其无意将该代码用于任何违法、犯罪或违反道德规范的行为。任何个人或组织在使用本技术时,需自行确保其行为符合所在国家或地区的法律法规。

开发者对任何因直接或间接使用该技术而导致的法律责任、经济损失或其他后果概不负责。使用者需自行承担因使用本技术产生的全部风险和责任。请勿将本技术用于任何违反法律、侵犯他人权益或破坏公共秩序的活动。

深入理解白加黑技术:原理、应用与防御 一、白加黑技术介绍 1. 基本概念 白加黑技术是一种网络安全领域的攻击手段,主要用于绕过杀毒软件的检测并实现恶意代码执行。 白文件 :指具有合法数字签名或被杀毒软件标记为可信的可执行文件(如.exe程序),通常为系统工具或常见软件。 黑文件 :指攻击者自定义的恶意代码,通常以DLL文件形式存在,包含Shellcode、反弹Shell等恶意功能。 白加黑组合 :通过白文件加载黑DLL,使恶意代码在白文件执行时被触发,从而绕过杀软对黑文件的查杀。 2. 攻击机制 DLL劫持 :Windows系统在加载DLL时,会优先搜索程序所在目录。攻击者将恶意DLL放置于白文件目录下,当白文件运行时,系统会优先加载恶意DLL而非系统原版DLL。 动态加载 :通过LoadLibrary等API函数显式加载恶意DLL,或修改白文件的导入表(IAT),使其在运行时调用黑DLL。 无文件落地 :部分攻击直接将恶意代码编译为Shellcode,通过白文件内存加载执行,避免生成独立文件。 3. 攻击目的 权限提升:执行命令(如创建管理员账户) 持久化控制:通过注册表或启动项实现自启动 敏感数据窃取:结合后续攻击获取系统权限 4. 防御措施 限制目录权限 :确保软件仅安装在受保护的目录(如C:\Program Files),避免普通用户写入恶意DLL。 增强杀软检测 :通过行为分析识别异常DLL加载行为,而非仅依赖静态签名。 修复已知漏洞 :及时更新系统补丁,防止利用已知DLL劫持路径的攻击。 5. 技术演变 随着杀软对抗升级,白加黑技术呈现以下趋势: 动态化 :结合进程注入、代码混淆等手段降低检测概率 场景化 :针对特定软件(如Steam、浏览器)定制白文件,提高成功率 长期化 :通过重启断链、隐蔽加载等方式规避行为监控 二、应用场景 1. 绕过杀毒软件动态检测 通过将恶意代码(黑文件)与合法程序(白文件)结合,利用系统DLL加载机制或数字签名欺骗杀软。 示例 : 使用腾讯游戏加速器的白文件加载恶意DLL,通过DLL劫持实现无文件攻击 为Veil生成的恶意程序添加腾讯视频等可信应用的数字签名,降低在线/本地查杀率 2. 权限维持与持久化控制 DLL劫持+APC注入 :在合法进程(如网易云音乐)加载时注入恶意DLL,通过Early Bird APC技术实现隐蔽进程接管,规避杀软钩子检测 隐写术结合DLL :将加密的Shellcode存入图片文件,通过DLL动态加载机制从图片中读取并执行,实现无文件落地攻击 3. 对抗现代杀软静态分析 静态特征规避 :通过修改恶意DLL的导出函数、删除冗余代码、调整编译标准(如禁用C++17特性)等方式,逃逸基于静态签名的查杀 函数劫持伪装 :使用Aheadlib工具生成DLL函数模拟代码,覆盖原函数入口实现无特征调用 4. 场景化攻击定制 针对性白文件选择 :优先选择存在未校验DLL依赖或弱签名校验的软件(如部分国产工具、游戏加速器),降低攻击复杂度 多平台适配 :针对32/64位系统分别编译恶意DLL,结合CreateProcessA和调试挂起技术实现跨平台注入 典型攻击流程示例 选择白文件 :如cloudmusic_ reporter.exe(缺失libcurl.dll)或游戏加速器主程序 生成/改造黑文件 :用Veil生成Shellcode,或通过Aheadlib生成函数劫持DLL 植入与加载 :将恶意文件放置于白文件目录,或通过APC注入技术触发加载 免杀强化 :添加数字签名、代码混淆或隐写存储,提升存活率 三、常用工具 灰梭子 核心功能 手动化扫描 :测试断点+dll劫持 操作 :简易手动断点找dll,然后拖入x64 dll劫持完整asm+cpp 注意 :该工具需在合法授权范围内使用,禁止用于非法渗透测试或攻击活动。 Zeroeye 核心功能 自动化扫描 :通过遍历指定目录或分析单个文件,提取EXE的导入表,筛选出非系统DLL文件 白文件挖掘 :将符合条件的文件分类存储至binX64或binX86目录,并生成Infos.txt记录DLL信息,支持虚拟机环境批量扫描 扩展功能 :支持数字签名校验、生成DLL劫持模板,结合灰梭子等工具实现免杀攻击流程化 技术特性 性能优化 :使用C++替代Python脚本,提升扫描速度(如200G数据扫描仅需2分11秒) 多平台适配 :提供x64/x86双版本可执行文件,兼容不同系统环境 获取方式 GitHub仓库:https://github.com/ImCoriander/ZeroEye 注意 :该工具需在合法授权范围内使用,禁止用于非法渗透测试或攻击活动。 IDA 恶意DLL函数定位与分析 :通过IDA加载目标DLL文件,利用其反汇编功能快速定位关键函数入口 代码逻辑与行为验证 :IDA的图形化界面和交叉引用功能可帮助研究人员理解DLL的运行流程 测试DLL的动态调试支持 :在编写测试DLL时,IDA可与调试器(如x64dbg)配合使用,实时监控DLL加载过程和函数执行结果 免杀对抗特征规避 :利用IDA的代码修改功能,对恶意代码进行混淆或加密处理 零攻防dll模板 (具体内容未在原文中详细描述) 四、个人理解 白加黑技术不应用于任何形式的第一次上线操作(即将shellcode loader写入Black dll),这样会导致dll存活期短,而且不容易做到单文件(因为各大查杀工具对下载者查杀很严)。而是应该用于权限提升或权限维持。 误区纠正 :黑dll不一定非要写启动行为,可以尝试对症下药的措施。 五、案例研究 案例1:针对打印机程序的权限维持 目标 :办公人员,经常使用打印机,已获得user权限 操作步骤 : 确认劫持对象 在windows系统文件中找到打印机程序,猜测存在dll执行,手动测试 发现对象Printdialog.dll疑似存在劫持 IDA确认 将dll导入IDA 发现有一堆函数,添加dll关键词进行筛选 导入灰梭子,劫持 测试+利用 运行成功,写代码批量修改dll 实现该功能的C++代码结合了文件操作、网络请求和进程管理技术 效果预测 在对症下药的策略下,使得dll无启动等高危行为实现"自启" 用户每次使用打印机都会上线 缺点:多次上线,需要添加互斥体 如何自查 定期查注册表,启动项 检查文件hash或者签名 六、防御建议 系统层面 启用DLL签名验证 限制非特权用户对系统目录的写入权限 定期更新系统和应用程序补丁 安全产品层面 部署具备行为分析能力的终端防护产品 监控异常DLL加载行为 实施应用程序白名单策略 管理层面 定期进行安全审计 对关键系统文件进行完整性检查 建立完善的日志记录和分析机制 七、法律与道德声明 本技术文档仅供学习、研究、教育或合法用途。开发者明确声明其无意将该代码用于任何违法、犯罪或违反道德规范的行为。任何个人或组织在使用本技术时,需自行确保其行为符合所在国家或地区的法律法规。 开发者对任何因直接或间接使用该技术而导致的法律责任、经济损失或其他后果概不负责。使用者需自行承担因使用本技术产生的全部风险和责任。请勿将本技术用于任何违反法律、侵犯他人权益或破坏公共秩序的活动。