赞
踩
概述
在红蓝对抗中,作为红队,除了需要发起攻击之外,还需要关注的就是如何能避免被发现。一个经验丰富的红队,其攻击行为往往不会被任何蓝队成员或系统运维人员发现。随着近年来终端检测与响应(EDR)产品的不断发展,可疑攻击行为被发现的概率也随之增加,因此对于红队来说,也必须不断发展他们的技术。本文主要是FireEye Mandiant Red Team的经验分享,探讨了我们如何制作Payload以绕过当今的EDR产品,以及如何在目标系统上获得完整命令与控制(C2)。
对于我们来说,Shellcode注入和Shellcode执行是在目标系统上运行C2 Payload的最理想方法。那么,什么是Shellcode呢?Michael Sikorski将Shellcode定义为“通常用于描述任何独立的可执行代码的专有名词”。大多数商业渗透测试框架(例如:Empire、Cobalt Strike或Metasploit)都在其工具中内置了Shellcode生成器。Shellcode生成器通常采用二进制格式或十六进制格式,具体取决于我们是希望生成原始输出,还是将其作为应用程序源。
为什么我们所有的Payload都希望使用Shellcode?
在红队进行攻击的过程中,如果使用Shellcode,就能在Payload类型选择上具有很高的灵活性。Shellcode运行程序可以使用多种编程语言编写,这些语言可以合并到多种类型的Payload中。这样的灵活性可以让我们自定义Payload,以满足客户的特定需求,或符合红队在安全评估期间可能出现的任何特定情况。由于Shellcode可以从Payload内部启动,也可以注入到已经运行的进程中,因此我们可以使用多种技术来提高Payload逃避EDR产品检测的能力,具体要取决于目标环境中使用的场景和技术。目前,有几种技术可以用来混淆Shellcode,例如加密、自定义编码等,这使EDR产品很难直接检测到商业C2工具中的Shellcode。总而言之,Shellcode具有的灵活性和逃避检测的特性,是我们在红队评估过程中高度依赖基于Shellcode的Payload的主要原因。
Shellcode注入与执行
红蓝对抗中最关键的一项工作就是开发Payload,这一Payload需要成功、可靠且隐蔽地运行在目标系统上。Payload可以从其自身的进程中执行Shellcode,也可以将Shellcode注入到另一个最终执行Shellcode的进程的地址空间。就本文而言,我们讨论的Shellcode注入是指“在远程进程中执行的Shellcode”,我们讨论的Shellcode执行是指“在Payload进程中执行的Shellcode”。
Shellcode注入是红队和恶意攻击者用于逃避EDR产品和网络防御设备检测的一种技术。有许多EDR产品都基于Windows进程的预期行为进行检测。例如,EDR产品认为进程通常不应该访问lsass.exe,因此从任意进程(例如:DefinitelyNotEvil.exe)的上下文中执行Mimikatz的攻
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。