调试器规避
攻击者可能采用各种手段检测和规避调试器。调试器通常被防御者用于跟踪和/或分析潜在恶意软件负载的执行。(引用: ProcessHacker GitHub) 调试器规避可能包括根据检查调试环境存在的工件结果改变行为。类似于虚拟化/沙盒规避,如果攻击者检测到调试器,他们可能会改变其恶意软件以脱离受害者或隐藏植入物的核心功能。他们还可能在投放次要或附加负载之前搜索调试器工件。 具体检查将根据目标和/或攻击者而有所不同,但可能涉及Native API函数调用,如IsDebuggerPresent()
和NtQueryInformationProcess()
,或手动检查进程环境块(PEB)的BeingDebugged
标志。其他调试工件的检查还可能尝试枚举硬件断点、中断汇编操作码、时间检查,或测量当前进程中是否引发异常(假设存在的调试器会“吞下”或处理潜在错误)。(引用: hasherezade调试)(引用: AlKhaser调试)(引用: vxunderground调试) 攻击者可能在自动发现过程中使用从这些调试器检查中学到的信息来塑造后续行为。调试器还可以通过分离进程或通过循环Native API函数调用(如OutputDebugStringW()
)产生的消息用无意义的数据淹没调试日志来规避。(引用: wardle evilquest partii)(引用: Checkpoint Dridex 2021年1月)