拓冰建站拓冰建站
首页 / 资讯中心 / 正文

深入解析白加黑攻击:原理、实现与防御实战指南

1. 从一次“误报”事件说起为什么白加黑如此棘手前几天一个做安全运维的朋友给我发来一个压缩包说他们内网一台机器上的终端安全软件疯狂报警但文件本身看起来“人畜无害”。我打开一看里面就两个文件一个叫update.exe数字签名完整来自一家知名的软件公司另一个是data.dll没有签名。单独扫描这两个文件杀毒软件都报“安全”。但当我尝试运行update.exe时终端防护立刻弹窗提示“检测到可疑的进程注入行为”。这就是典型的“白加黑”攻击手法。它不直接对抗杀软的静态特征库而是玩起了“借壳上市”的把戏。攻击者利用一个拥有合法数字签名、被安全软件普遍信任的“白文件”通常是正规软件的EXE去加载一个恶意功能的“黑文件”DLL、OCX等从而绕过基于文件信誉和静态特征的检测。对于防守方来说这就像在人群中一个穿着制服的“自己人”突然从口袋里掏出了危险品常规的证件检查文件签名验证完全失效。这种攻击之所以在攻防演练和实际威胁中持续高发核心在于它精准地击中了传统防御体系的软肋过度信任“白名单”。很多企业部署的终端防护策略会对拥有有效数字签名的知名软件进程放宽行为监控这原本是为了减少误报、提升用户体验却成了攻击者绝佳的掩护。随着供应链攻击的增多获取合法签名的成本在降低而开源工具和自动化框架让制作这种组合攻击载荷的门槛也越来越低。理解“白加黑”的攻防已经不再是高级威胁研究的范畴而是每一位安全工程师和系统管理员必须掌握的实战技能。2. 拆解“白加黑”核心原理与三种常见实现方式要防御必须先透彻理解攻击是如何发生的。“白加黑”的核心思想是“进程傀儡”或“侧加载”其技术本质在于Windows系统的动态链接库DLL加载机制。一个合法的EXE文件在运行时会按照既定规则去查找并加载它所需的DLL。攻击者正是通过劫持这一加载过程将恶意DLL“喂”给白进程。2.1 DLL搜索顺序劫持最经典的路径这是最古老但依然有效的方式。Windows系统在加载DLL时有一系列预设的搜索路径顺序如应用程序所在目录、系统目录、当前目录等。攻击者将一个恶意DLL命名为白进程必然会加载的某个系统DLL名例如version.dll,winhttp.dll并将其放置在比合法系统目录优先级更高的位置比如应用程序同级目录。当白进程启动时它会优先加载这个恶意的“李鬼”DLL。为什么容易成功许多软件开发不规范没有使用绝对路径或SetDllDirectory来限定DLL加载位置而是依赖默认搜索顺序。这就给攻击者留下了可乘之机。防御方往往只关注EXE本身而忽略了其运行上下文环境中的DLL文件。2.2 利用白程序的配置文件或旁加载Side-Loading这种方式更为隐蔽。许多正规软件尤其是那些使用通用安装框架或需要插件的软件会通过配置文件如.manifest文件、注册表键值或者特定的加载函数如LoadLibrary来指定需要加载的辅助模块。攻击者可以篡改配置文件修改白程序附带的.manifest文件将其指向一个恶意DLL。利用未引用的绝对/相对路径如果配置中指定的DLL路径不存在或者攻击者通过权限在更高优先级的路径放置了恶意DLL就会被加载。利用“Known DLLs”机制绕过这是一个进阶技巧。系统有一个KnownDlls列表其中的DLL只能从system32加载。但攻击者可以伪造一个不在该列表中的DLL名诱使白进程从当前目录加载。我曾分析过一个案例攻击者利用一款图像查看软件的插件机制。该软件启动时会扫描Plugins目录下的所有DLL并尝试加载。攻击者将一个恶意DLL伪装成图像滤镜插件放入该目录软件毫无戒备地将其加载恶意代码便在软件进程空间内获得了执行权限。2.3 白进程作为“加载器”进程空洞Process Hollowing的变种这是一种更高级的“白加黑”利用形式严格来说它结合了进程注入技术。攻击者并不完全依赖白进程自身的逻辑去加载DLL而是以挂起Suspended方式创建一个合法的白进程。将该进程内存中的合法代码“挖空”Unmap。将恶意代码可以是Shellcode或另一个PE文件写入该进程的内存空间。修改进程的入口点然后恢复线程执行。此时从外部看运行的是一个有合法签名、名称正常的进程但其内部执行的完全是攻击者的代码。这种方法完全脱离了文件层面的DLL依赖检测难度更大。它利用的是安全软件对“进程创建”这一初始行为的信任。3. 攻击者视角一次完整的“白加黑”攻击链构建理解了原理我们来看看攻击者具体是如何操作的。这里我以一个假设的、用于合法测试的场景为例拆解其步骤。请注意以下技术仅用于安全研究、渗透测试授权和防御建设严禁用于非法活动。3.1 第一步寻找合适的“白”程序攻击者不会随机挑选目标。一个理想的“白”程序通常具备以下特征拥有有效的数字签名来自微软、Adobe、Oracle等受信任的发布者或任何在目标环境内被加入白名单的软件。行为相对简单或可预测进程启动后加载的DLL较少逻辑清晰便于分析其加载链。普遍存在于目标环境如办公套件组件、PDF阅读器、压缩工具、系统工具等。可能存在配置缺陷如加载DLL时不验证签名、使用相对路径、存在未引用的插件目录等。工具上攻击者会使用Process MonitorProcMon这类工具监控目标白进程启动时所有文件系统、注册表操作精准定位其尝试加载的DLL名称和搜索路径。3.2 第二步制作恶意的“黑”DLL这是攻击载荷的核心。恶意DLL需要实现两个关键函数导出函数其名称必须与白进程要加载的DLL的导出函数名一致至少包括白进程会调用的那个函数。例如如果白进程要加载fake.dll并调用其ExportFunc函数那么恶意DLL就必须导出同名函数。DllMain入口点这是DLL被加载和卸载时自动执行的函数。攻击者会将主要的恶意代码如反弹Shell、信息窃取、横向移动模块放在DllMain中或者放在某个导出函数中。为了绕过静态查杀攻击者会对这个DLL进行“免杀”处理也就是我们标题中的前两个字。常见手法包括代码混淆与加密使用异或、AES等算法加密核心Shellcode运行时解密执行。分离加载DLL本身不包含恶意代码仅作为一个下载器从远程服务器获取加密的载荷并在内存中执行。API动态解析不直接调用WinExec、CreateProcess等敏感API而是通过GetProcAddress动态获取函数地址规避基于导入表的检测。利用合法工具Living-off-the-LandDLL的功能仅仅是调用certutil.exe、bitsadmin.exe、mshta.exe等系统自带合法程序来下载执行后续代码极大降低恶意特征。3.3 第三步部署与执行将制作好的恶意DLL按照第二节分析的某种方式放置到白进程会加载的位置。然后通过钓鱼邮件、漏洞利用、U盘摆渡等方式诱使目标用户或系统执行那个白程序。一旦执行恶意代码就在一个受信任的进程空间内运行起来。攻击链至此完成。防守方看到的可能只是一个普通的reader.exePDF阅读器在运行而实际上它正在悄悄外传数据。4. 构建有效防御从静态特征到动态行为的全面监控面对“白加黑”单一的防御手段是无效的。必须建立一个纵深、联动的防御体系。以下是我在实际工作中总结出的几个关键防御层面。4.1 强化静态预防收紧“白名单”策略首先要重新审视和收紧所谓的“白名单”或信任策略。签名验证不止于EXE安全产品应配置为不仅验证启动进程的签名还要对其加载的所有模块DLL、OCX、驱动进行签名验证。如果白进程加载了无签名或签名无效的DLL应产生高优先级告警。应用控制/白名单软件部署严格的应用执行控制策略。只允许运行经过企业IT部门核准、并纳入中央白名单库的程序。对于白名单外的程序即使有合法签名也默认禁止执行。这能从根本上杜绝未知“白程序”的引入。文件完整性监控对关键软件如办公套件、浏览器的安装目录设置文件完整性监控。任何在该目录下新增、修改DLL或配置文件的行为都应触发告警。4.2 加强动态检测关注进程行为异化这是防御“白加黑”的主战场。核心思路是一个进程无论披着谁的外衣其恶意行为最终都会露出马脚。进程行为基线建模为常见、受信任的进程建立行为基线。例如notepad.exe通常不会去连接网络svchost.exe的某个特定服务实例通常只监听特定端口。通过EDR或高级终端防护软件持续监控进程的以下行为子进程创建一个文本编辑器突然启动了cmd.exe或powershell.exe。网络连接一个本地工具进程突然向外部IP发起HTTP/HTTPS连接。敏感文件访问进程试图读取密码存储文件、浏览器历史记录、加密钱包等。内存操作进程进行大量的内存分配、写入可执行代码这是Process Hollowing的典型特征。权限提升进程尝试获取调试权限、修改其他进程内存等。检测DLL搜索顺序劫持安全软件可以监控进程的DLL加载事件分析加载的DLL路径。如果一个进程从C:\Temp加载了kernel32.dll这极不正常而不是从C:\Windows\System32加载这本身就是强烈的恶意指标。父进程与子进程关系分析正常的winword.exe可能由explorer.exe用户双击启动。如果一个winword.exe是由一个可疑的脚本或未知进程启动的就值得深究。4.3 终端与网络联动响应单点检测容易误报和漏报需要将终端行为与网络流量关联分析。出站连接关联当检测到一个白进程有可疑网络行为时立即在防火墙或全流量审计设备上检查该连接的目的地。是否是已知的恶意IP或域名传输的数据是否异常如大量加密数据外传内部横向移动监测“白加黑”攻击成功立足后攻击者往往会进行横向移动。监控内网中从一台主机上的白进程发起到另一台主机敏感端口如445/SMB, 135/RPC的连接尝试。使用威胁情报将检测到的可疑哈希值DLL文件哈希、进程内存特征哈希、IP、域名与云端威胁情报库进行实时比对。5. 实战排查当警报响起如何抽丝剥茧定位“白加黑”假设你作为安全分析师在SIEM平台看到一条告警“进程acrobat.exe疑似进行恶意网络通信”。以下是我的标准排查流程第一步快速三要素确认立即查看告警详情获取三个核心信息主机名/IP、进程PID、可疑目标地址。通过终端管理平台或EDR快速登录该主机定位到具体的进程。第二步进程深度剖析不要急于结束进程。使用Process Explorer或EDR的进程树功能查看进程路径确认acrobat.exe的路径是否在正常的Program Files\Adobe目录下。如果是在临时目录或用户下载目录嫌疑陡增。命令行参数查看启动该进程的命令行是否有可疑的URL或脚本参数。加载的模块这是关键。在Process Explorer中查看该acrobat.exe进程加载的所有DLL。重点关注无签名的DLL尤其是那些本应有签名如Adobe自家模块却显示未签名的。路径异常的DLL是否有DLL是从Temp、AppData或进程所在目录加载的而这些DLL通常是系统DLL如ntdll.dll,kernel32.dll这极可能是DLL劫持。可疑名称的DLL是否存在名称奇怪、或与Adobe产品明显无关的DLL第三步内存与行为取证如果发现可疑DLL进一步操作转储内存使用Procdump或EDR内置功能将整个acrobat.exe进程的内存转储下来。公式procdump -ma PID。这个内存镜像包含了进程中所有代码和数据可供后续静态分析。网络连接确认使用netstat -ano | findstr PID确认该进程确实建立了到告警IP的连接。检查进程启动链回查是哪个父进程启动了acrobat.exe。是用户交互启动还是由计划任务、服务、WMI事件或其他进程触发第四步文件系统取证定位到可疑DLL文件路径后在文件系统中找到它。计算哈希计算该DLL的MD5/SHA256哈希值提交到VirusTotal等平台进行扫描。注意“白加黑”DLL的免杀可能使其VT检测率很低但这仍是必要步骤。静态分析使用PE Studio、DIE等工具查看DLL的导入表、导出表、字符串。寻找可疑的API调用如WinExec,URLDownloadToFile或硬编码的URL、IP地址。时间线分析检查该DLL文件的创建、修改时间与攻击可能发生的时间窗口是否吻合。检查同一目录下是否有其他可疑文件。第五步遏制与根除在完成关键证据收集后隔离主机将受感染主机从网络中断开防止进一步扩散。清除持久化检查自启动项注册表Run键、服务、计划任务、启动文件夹、WMI事件订阅、浏览器插件等攻击者可能已在此处植入持久化机制确保下次开机仍能触发“白加黑”。全盘扫描与修复使用专业查杀工具进行全盘扫描但不要过度依赖因为免杀可能绕过。更重要的是根据排查结果手动清除已确认的恶意文件。复盘与加固分析攻击入口是钓鱼邮件、漏洞还是其他修补漏洞并调整安全策略。例如可以针对此次被利用的白程序在组策略或安全软件中设置一条规则禁止该进程从非安装目录加载任何DLL。整个排查过程就像侦探破案需要将进程、文件、网络、注册表等多个维度的线索串联起来形成完整的证据链。经验在于你知道哪些地方是攻击者最可能留下的“指纹”。6. 进阶思考防御体系的演进与主动狩猎传统的基于规则的防御永远在追赶攻击者的创新。因此我们必须向更主动、更智能的方向演进。建立“可疑行为”基线库除了对单个进程建模还可以对整个环境建立行为基线。例如市场部的电脑在上班时间频繁访问销售部的数据库服务器这可能就是异常。通过UEBA用户实体行为分析技术可以发现伪装在正常进程下的异常数据访问模式。内存扫描与无文件攻击检测对于高等级的“白加黑”如Process Hollowing恶意代码只存在于内存中。这就需要安全产品具备实时内存扫描能力检测内存中是否存在已知的Shellcode特征码、或是否在非映像内存区域如堆、栈中创建了可执行代码页。欺骗与诱捕技术在关键节点部署高交互的蜜罐系统伪装成存有敏感数据的文件服务器或数据库。当攻击者利用“白加黑”进行横向移动尝试访问这些蜜罐时就会立即暴露。同时可以在内网散布一些伪装成配置文件、但实际是监控脚本的“诱饵文件”一旦被恶意DLL读取或加载就触发告警。威胁狩猎Threat Hunting不要只坐在SOC里等告警。定期主动进行狩猎使用EDR的查询语言在全网范围内搜索以下模式“所有加载了无签名DLL的、具有合法签名的进程。”“所有从AppData或Temp目录加载了DLL的svchost.exe进程。”“进程网络连接的目标IP不在公司业务IP列表内的记录。” 这种主动的、假设驱动的搜索往往能发现那些尚未触发规则的高级威胁。防御“白加黑”是一场持久战它考验的不仅是安全产品的能力更是防守方对系统原理的深刻理解、对攻击链的全局视角以及将各种安全数据关联分析的实战能力。没有一劳永逸的银弹只有持续地加固、监控、分析和响应。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门