0


安全对抗相关技术和概念的总结和分析

流量对抗与行为对抗

  1. 流量对抗- 核心目标:规避通过网络流量分析进行的恶意行为检测。- 关键点: - 流量加密:通过SSL/TLS或自定义加密协议,隐藏网络通信内容。- 流量伪装:模拟合法流量模式(如HTTP、HTTPS流量),降低被发现的可能性。- 流量随机化:动态改变通信的大小、时间间隔和模式,避免流量特征被检测到。
  2. 行为对抗- 核心目标:规避基于行为检测的杀软和EDR(Endpoint Detection and Response)。- 关键点: - 延迟启动:通过时间延迟绕过行为检测的初期监控。- 动态加载模块:规避静态分析和初始行为特征。- 最小化行为特征:减少显著的恶意活动(如文件写入、内存分配)以避免触发规则。

杀软查杀特点

  1. 流量查杀- 特点:分析网络通信流量,通过特征匹配或AI分析检测异常。- 对抗方式: - 流量加密(如HTTPS、WSS)。- 流量伪装成合法的第三方服务(如浏览器流量)。- 使用 CDN 或合法域名混淆真实目标。
  2. 静态查杀- 特点:基于文件特征(如hash值、签名)或代码内容(如字符串、函数调用)检测恶意程序。- 对抗方式: - 文件混淆(如代码加密、动态解密)。- 使用动态加载或加壳技术隐藏危险内容。- 在IAT(Import Address Table)中避免直接引用危险函数。
  3. IAT 签名与静态查杀- 核心问题:静态查杀的重点是IAT中是否存在危险函数(如CreateProcessVirtualAlloc等)。- 隐藏方式: - 使用动态调用(如GetProcAddressLoadLibrary)。- 基于PEB(Process Environment Block)与hash技术获取函数地址。- 示例: - 动态调用示例:FARPROC proc =GetProcAddress(GetModuleHandleA("kernel32.dll"),"CreateProcessA");proc(...);- PEB+hash动态获取: 使用PEB遍历模块列表,通过函数名称hash计算匹配目标函数。
  4. 签名检查- 过期签名:Windows 11会通过时间戳和CRL(证书吊销列表)检查过期签名。 - 规避方式: - 使用正规代码签名的文件作为loader。- 避免直接运行未签名或过期签名的可执行文件。- 白+黑策略:将白程序加载器与恶意DLL结合,以分层对抗检测。
  5. 单EXE熵值检测- 熵值特点:高熵通常是加密或压缩的标志,被杀软(如360)重点关注。- 对抗方式: - 合理降低熵值:混入伪代码或合法字符串。- 加载外部资源而非直接加密存储。- 使用非典型加密算法或分块处理降低整体熵值。
  6. Hash标记- 特点:白文件和恶意DLL的组合容易被标记为黑。- 对抗方式: - 定期更换白文件与黑DLL的hash值。- 使用合法程序加载动态加密的shellcode以规避直接标记。

国外与国内EDR对比

  1. 国外EDR(如CrowdStrike、Carbon Black)- 特点: - 更关注行为和流量分析。- 静态查杀能力较弱。- 对抗重点: - 避免明显的恶意行为(如代码注入、DLL劫持)。- 流量伪装为合法的业务流量。
  2. 国内杀软(如360、赛门铁克)- 特点: - 注重静态查杀(签名、熵值、hash等)。- 强大的流量和动态行为分析能力。- 对抗重点: - 使用动态加载技术隐藏静态危险特征。- 避免高熵文件直接暴露,使用合法程序作为入口点。

重点分析与建议

  1. 对抗静态查杀- 动态调用危险函数(GetProcAddress/PEB)。- 动态解密payload,避免静态分析工具提取。- 分层设计,将敏感逻辑从主程序分离。
  2. 对抗行为与流量分析- 模拟合法用户行为,伪装流量特征。- 延迟启动与分阶段执行,规避初期监控。- 加强加密流量的伪装性,避免简单特征匹配。
  3. 签名与hash管理- 使用可信签名的程序作为入口,避免直接暴露恶意payload。- 定期更新组件的hash值,减少被标记的可能性。

通过以上策略,可以在一定程度上规避杀软和EDR的检测,但需要持续更新技术以适应安全产品的升级与特征匹配规则的变化。
3.函数调用链
以下是对您描述的安全技术相关内容的整理与分析:


以下是对您描述的安全相关技术和策略的分析、实现思路和防御对策的详细说明:


1. VirtualAlloc + Shellcode执行链分析

操作流程:

  1. 申请可执行内存: - 使用VirtualAlloc分配内存,设置为可执行权限(PAGE_EXECUTE_READWRITE)。
  2. 解密Shellcode: - 动态解密Shellcode以避免静态分析检测。
  3. Memcpy拷贝: - 使用memcpy将解密后的代码写入分配的内存。
  4. 指针执行: - 通过函数指针调用内存中的Shellcode完成执行。

示例代码:

void* exec_mem =VirtualAlloc(NULL, payload_size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);memcpy(exec_mem, encrypted_shellcode, payload_size);decrypt_shellcode(exec_mem, payload_size);((void(*)())exec_mem)();

风险点:

  • VirtualAlloc的显著特征容易被检测。
  • Shellcode动态执行是常见的恶意行为特征。

规避技术:

  1. 间接调用VirtualAlloc:- 使用动态解析函数地址(GetProcAddress)。- 模糊调用链,例如通过ntdll的NT函数间接完成内存分配。
  2. 堆栈欺骗(Spoof Call):- 修改调用栈伪装函数链,欺骗分析工具。- 示例:伪装调用链为合法模块触发。
  3. 替代分配方式:- 通过HeapAlloc分配不可执行内存,后续使用VirtualProtect修改内存属性。void* mem =HeapAlloc(GetProcessHeap(),0, payload_size);VirtualProtect(mem, payload_size, PAGE_EXECUTE_READWRITE,&oldProtect);

2. 危险操作及对抗措施

危险操作:

  1. Shell命令执行:- 创建cmd.exepowershell.exe子进程,执行危险命令。- 典型检测特征:通过CreateProcess启动外部进程。
  2. 注入操作:- 获取目标进程句柄(OpenProcess)。- 使用WriteProcessMemory写入代码,CreateRemoteThread注入执行。
  3. 修改目标进程内容(CFG保护绕过):- CFG(Control Flow Guard)会检测对目标进程内容的非预期修改。- 修改后可能触发目标进程自动销毁。

规避技术:

  1. 命令执行伪装:- 使用合法的子进程作为桥接点执行命令(如msbuild.exe)。- 隐藏命令行参数或使用.Net加载脚本:Process.Start("powershell.exe","-nop -enc <base64_payload>");
  2. 注入技术优化:- 使用无句柄方法注入,如APC(Asynchronous Procedure Call)Reflective DLL Injection。- 规避直接调用OpenProcess,通过提升权限的子进程完成注入。
  3. 绕过CFG保护:- 使用进程镜像加载,先加载目标进程的副本,在副本中完成修改后切换到原进程运行。
  4. 操作注册表与计划任务:- 动态加载advapi32.dll,使用RegSetValueEx设置注册表键值。- 创建计划任务时,伪装触发程序路径为可信文件路径。

3. Hook与反Hook技术

Bitdefender Hook对抗:

  1. R3 Hook(用户态钩子):- 检测方法: - 查看DLL导入表中是否存在异常钩子指向。- 检查内存区域是否存在被修改的代码。- 解除方法(Unhook): - 重写内存区域为原始字节。- 动态加载未被钩子的系统DLL替换被钩的函数。
  2. 关键函数钩子(如VirtualAlloc):- 通过反向分析,查找杀软对VirtualAlloc调用的处理逻辑。- 动态替换钩子:- 使用jmp汇编替换钩子地址,恢复原始指令:jmp [original_function_address]

汇编级操作示例:

  • VirtualAlloc Hook绕过:mov eax, [original_virtualalloc_address]call eax

4. BOF(Beacon Object File)与AMS保护绕过

BOF执行链:

  1. 概念:- BOF是Cobalt Strike中用于扩展功能的模块,基于C语言实现。- 使用WinAPI完成低级操作。
  2. AMS保护绕过:- AMSI(Antimalware Scan Interface)是Windows的反恶意软件接口,会拦截和检测PowerShell、脚本等执行。

绕过技术:

  1. AMSI内存补丁:- 修改AMSI.dll中关键函数的返回值为成功:char patch[]={0x31,0xC0,0xC3};// xor eax, eax; retWriteProcessMemory(hProc, amsiScanBufferAddress, patch,sizeof(patch),NULL);
  2. 动态加载绕过:- 避免直接调用AMSI,使用动态加载并替换检测函数。

5. 计划任务与注册表操作

  1. 计划任务创建:- 使用schtasks.exe创建计划任务。- 伪装触发器为系统事件或特定时间。
  2. 注册表操作:- 设置Run键值实现开机启动。- 创建隐藏的注册表项存储恶意配置。

总结

通过结合动态加载、堆栈欺骗、反Hook和行为伪装等技术,可以有效绕过大部分静态和动态检测机制,但需要注意以下几点:

  1. 动态加载:隐藏关键API调用,减少暴露特征。
  2. 堆栈与调用链伪装:混淆行为路径,欺骗分析工具。
  3. 绕过AMS与CFG:修改内存结构以避免关键功能被阻止。
  4. 防御对抗策略更新:需针对不同杀软和EDR持续优化对抗策略。
标签: 安全

本文转载自: https://blog.csdn.net/frhdd/article/details/143903775
版权归原作者 frhdd 所有, 如有侵权,请联系我们删除。

“安全对抗相关技术和概念的总结和分析”的评论:

还没有评论