本文介绍了一种从攻防两个维度研究分析网络安全对抗技术的方法。该方法基于Sysmon日志、ATT&CK标签日志、操作系统日志的分析实践,通过几种典型攻防对抗技术示例,着重介绍和分析攻击在主机层面特征,为蓝队人员“看得见”“看得清”网络威胁,提供了一种简单易学的技术修炼方法。也借此抛砖引玉,希望在安全规则优化或威胁狩猎的专家能有更多此方面技术分享。
这里的“左右互搏术”,喻意为安全人员一边模拟红队或入侵者或企业内恶意人员的攻击,一边作为防守方从网络、主机等多层面检测和分析攻击,有助于安全人员理解掌握相关攻击技术原理、技术特征及其产生的日志、告警等信息。若将相关经验应用到企业生产环境,那么为企业优化网络安全告警解析规则、快速分析溯源攻击、威胁狩猎、针对性增强防护检测措施等方面,将是大有裨益的。
测试验证主要资源及软硬件配置信息如下。
笔记本电脑:CPU 4核1.8GHz、内存16GB、SSD硬盘1T,虚拟化软件VMware Workstation Pro 15。
SEIM(安全信息和事件管理系统):Elastic ELK Docker虚拟机推荐分配12GB内存。
日志采集软件:Sysmon+modular sysmonconfig.xml配置文件,日志传送软件winlogbeat和filebeat。
攻击机:互联网云主机+CobaltStrike(以下简称CS)+云函数及API网关,虚拟机Windows10+CS+红队工具,虚拟机Kali或Ubuntu+Impacket等工具。
靶机:Windows2016、Windows11、Windows10、CentOS 8、Ubuntu20.04等虚拟机。
Sysmon是微软安全人员开发的一种 Windows系统服务和设备驱动程序,一旦安装在系统上,就会在系统重启后保持驻留状态,以监视系统活动并将其记录到 Windows事件日志。它能提供有关进程创建、网络连接和文件创建时间更改等详细信息。通过使用Windows事件查看器或SIEM代理收集它生成的事件并进行安全分析,可了解入侵者和恶意软件如何在网络系统上运行,从而识别恶意或异常活动。目前,Sysmon也有支持Linux版本,但其检测功能还比较弱,支持的操作系统类型较少。
以下介绍三方面场景,主要介绍在主机侧对有关攻击的检测发现。篇幅有限,未对有关攻击与检测技术原理,防护措施等深入展开说明。
Sysmon EventID 1是为有关新创建进程提供扩展信息,能提供有关进程执行上下文的完整命令行。
攻击者入侵系统往往会创建进程与C2等远控服务器建立通信连接,因此一般可通过Sysmon EventID 1进程创建事件来发现入侵行为。
红队在内网横向移动过程中,可能会使用Impacket套件等工具。现在模拟红队执行psexec.py横向移动一台Windows主机,执行效果如下图所示。
使用psexec.py时,靶机出现病毒告警,改用smbexec.py则不会被防病毒软件(这里指Defender)查杀,且能与靶机保持正常通信,执行效果见下图。
蓝队可以从有关攻击工具的源代码(如有)或恶意样本、网络通信数据包、主机日志等方面来进行安全分析。
通过查看psexec.py代码,可以深入了解其工作原理。下图代码展示了psexec.py首先会使用SMB协议进行会话协商,通过可写共享上传随机文件名的exe文件,随后打开SVCManager并创建服务,之后启动服务与远控端建立通信连接。
通过wireshark获取网络数据包,验证了psexec.py开始使用了SMB协议进行会话协商,通过深入分析网络数据包,观察其是否有明显特征。
通过Elastic ELK平台集中分析主机层面攻击行为,搜索eventID为1的事件,下图显示了红队执行psexec.py攻击及whoami命令后,在靶机上产生了2个进程。
但由于psexec.py执行有很多明显的特征,已被大多数防病毒软件查杀,以下是Windows defender查杀告警。
smbexec.py之所以没有被防病毒软件查杀,原因是其利用一个批处理文件和一个临时文件来执行和转发消息,达到免杀效果,如下图所示。
通过查看smbexec.py源代码,也可以验证此技术特征。
蓝队也可以通过查看Windows操作系统安全日志,ID编号为4624,发现用户异常登录,如下图所示。
Sysmon EventID 3和22是网络外连事件。EventID 3是记录系统TCP/UDP网络连接。每个连接都通过ProcessId和ProcessGuid字段链接到一个进程。该事件还包含源和目标主机IP地址、端口号和IPv6 状态。EventID 22是DNS查询,无论DNS查询结果成功还是失败、缓存与否,进程执行DNS查询时都会生成此事件。
搜索EventID 3,查看测试CS木马在靶机上的进程名称、网络外连IP和端口等信息,如下图所示。
搜索EventID 22,显示CS木马外联C2时,通过DNS解析了C2使用的云函数API网关的域名。因此,蓝队可将EventID 3和22检测到的外连IP和域名,与威胁情报库匹配来发现一些攻击行为。
下图是一个典型的CS木马执行后外连C2后产生的Sysmon告警日志柱状图。可以观测到木马执行后,先会产生大量多种EventID日志,再到后来远控通信产生的大量网络连接数据包(下图绿色部分),蓝队可以将其作为一种典型攻击行为进行跟踪。
对于初步识别出的可疑进程,可依托Elastic ELK进程关联分析功能,让蓝队很容易理解攻击行为,并高效地开展攻击溯源或威胁狩猎。
Sysmon EventID 17在创建命名管道时生成,而恶意软件通常使用命名管道进行进程间通信。EventID 18则是在客户和服务端之间建立命名管道连接时形成事件记录。
以下两图分别展示了CS木马在靶机上产生的命名管道创建和连接日志。
CS有很多用于后渗透的攻击模块,其加载通常借助调用Windows DLL方式来实现。这些攻击模块会通过命名管道的形式与Beacon通信,默认管道名称有\MSSE-、\postex_、\postex ssh*、\status_、\msagent_。这为蓝队分析判断攻击者使用哪种武器,有一定参考意义。
通过对Sysmon每一个EventID事件分析,蓝队将会发现很多有安全价值的信息,对不同EventID进行关联,将会在入侵检测方面有较大的发挥空间。例如,通过监控单个或所有主机Sysmon EventID的走势图,也是可以发现攻击异常。
借助ATT&CK模型,可以让蓝队更容易理解分析攻击者所使用的技战术和工具,甚至能分析判断出其属于哪个团伙,也便于安全人员间交流。
本项测试基于Sysmon产生的带有ATT&CK标签的日志。通过ATT&CK技战术分析日志,非常有助于蓝队攻击溯源和威胁狩猎。遗憾的是,目前少有EDR、HIDS厂家将带有ATT&CK标签的日志接口开放,不利于蓝队使用该模型来开发关联检测规则。
在网络攻击中,凭证导出是最常见的攻击行为之一。目前,ATT&CK模型中操作系统凭证导出有以下8种子技术:
T1003.001: LSASS Memory
T1003.002: Security Account Manager
T1003.003: NTDS
T1003.004: LSA Secrets
T1003.005: Cached Domain Credentials
T1003.006: DCSync
T1003.007: Proc Filesystem
T1003.008: /etc/passwd and /etc/shadow
这里测试T1003.001:LSASS Memory和T1003.006:DCSync。
红队有时会将LSASS进程内存转储后,通过mimikatz离线导出账号密码及哈希。值得注意的是,安装了KB2871997补丁或者系统版本大于Windows server 2012的,系统内存已不再保存明文密码,且只有Administrator(SID 500)默认账号可被用于PTH哈希传递攻击。
假设红队导出上述的某个账号密码属于域管理员组或具有DCsync权限,则可使用secretsdump.py来导出域控AD目录所有账号及密码哈希。
而在大型域环境,一般会使用BloodHound(下图)等工具来查找具有DCSync权限的账户。
针对红队第一种攻击技术,蓝队通过搜索T1003.001或Credential Dumping关键词,如下图所示,会发现红队访问lsass.exe进程的行为。
结合Sysmon EventID 11或直接查找lsass.dmp文件,或通过ELK自定义搜索结果来快速检索。如下图所示,检测到lsass内存转储行为。值得注意的是,测试发现mimikatz shell里执行的命令,Sysmon并没有相关日志记录。
在红队进行第二种技术攻击时,即使用secretsdump.py导出域控AD目录所有账号和哈希时,Sysmon并没有产生有关日志,而Windows安全日志里则产生了大量4622事件(A security package has been loaded by the Local Security Authority)。蓝队可以通过ELK预置规则或修改预置规则进行关联告警。需要提醒的是每一条安全检测规则均应经过实际测试验证有效。
根据红队使用DCsync攻击技术及Windows安全日志,蓝队可创建两条规则:规则一是检测使用hacker账户进行NTLM V2认证登录:winlog.event_data.LmPackageName:
"NTLM V2"(还可以增加更多字段以提高检测的准确度);规则二是将DCsync攻击产生的日志中有关字段(any where event.action=="目录服务访问" and event.code=="4662"and winlog.event_data.AccessMask:"0x100"等)进行关联并设置阈值,经测试产生了相关告警。如果两条规则产生的告警同时出现,更充分说明正在发生PTH和DCsync攻击,如下图所示。
红队在攻击Linux系统后,有可能会创建账号。Sysmon for Linux可以检测此类攻击行为,修改Sysmon配置文件,添加如下图所示检测规则,可检测Linux账号创建行为。
在ELK中查询创建账号时,Sysmon有生成“T1136.001:Local Account”ATT&CK标签的日志。
同Sysmon EventID走势图一样,蓝队也可以通过监控单个或所有主机“TechniqueID”走势图来发现攻击行为或其他异常。
Windows操作系统中有Powershell、Defender、USB和WIFI使用等相关日志,因此,蓝队应能从这些日志中发现一些入侵攻击或恶意行为。
红队在内网横向移动过程中,往往会利用已掌握的个别系统账号密码,使用CME等工具对内网服务器实施SSH、SMB等协议密码喷洒攻击或PTH哈希传递攻击。
模拟红队使用crackmapexec套件工具,利用已获得账号及其哈希值,进行哈希传递攻击。下图显示发现有两个系统存在相同的账号密码。
通过分析网络数据包,未发现明显攻击特征。蓝队可在实际生产环境中验证是否能产生密码喷洒告警。
使用场景4.1.2中的PTH哈希传递攻击检测规则“NTLMV2访问”,发现了CME工具发起的PTH哈希传递攻击。
SID history是攻击者用到的比较隐蔽的一种权限维持方法。蓝队应当经常检查域控是否有账号存在500 SID history权限,可通过powershell命令排查(Get-ADUser -Filter "SIDHistory -like ''" -Properties SIDHistory| ` Where { $_.SIDHistory -Like "-500" })。
Window安全日志ID 4765事件为SID History添加到用户时生成。如果没有查找到4765事件,则可查找ID 4738事件,并查看有关用户的SID history变更情况。下图显示,为hacker账号添加了500 SID history。
如果企业有封闭网络环境,禁止服务器接入USB存储设备,防止敏感数据被窃取。那么作为一种审计措施,将检索“event.code:207 and 驱动器”形成如下搜索结果,从而检测相关服务器是否发生了失泄密事件。
如果企业有封闭网络环境,禁止非法网络外连。作为一种审计措施,将检索“event.code:8001 and 无线”形成如下搜索结果,从而检测是否发生了非法网络外连行为。这种违规行为在封闭网络环境下时有发生,值得特别关注。
如果企业使用Windows Defender防病毒软件,那么可以将Defender日志集中收集分析。检索“event.code:1116”和“event.code:1117”形成如下搜索结果,从而快速发现恶意文件和攻击行为。
通过以上攻防对抗技术测试,将Sysmon EventID日志、带有ATT&CK标签日志和操作系统等日志,通过SEIM、SOC等安全系统进行关联分析,能有效提升企业网络威胁检测能力。
当然使用Sysmon也有其局限性,通过卸载Sysmon或关闭Sysmon进程或hook ETW,达到绕过Sysmon检测,或者将winlogbeat、filebeat这类传送日志的进程关闭,从而使SEIM无法收到相关日志及检测发现攻击行为。
另外,还有一些攻击者热衷于使用LOLBAS攻击(Living Off The Land Binaries, Scripts and Libraries)。这类程序一般具有微软或第三方认证机构的数字签名,所以不会被防病毒软件查杀,因此,往往被攻击者用于下载恶意程序、执行恶意代码、绕过UAC等内网渗透活动。蓝队可针对此类攻击方式,梳理这些程序或命令执行时最常使用的技术参数,将其纳入自定义检测告警规则,从而发现LOLBAS类攻击。
网络攻防对抗就像猫鼠游戏,蓝队需要持续跟踪了解掌握常见攻击技术,根据自身业务安全场景需要,通过持续优化安全系统告警规则,结合网络安全有效性验证及红蓝对抗实战化检验,及时检测发现深层次网络攻击行为和异常。
以下为测试过程中参考或应用到的部分资源链接信息。
1)https://attack.mitre.org/versions/v12/
2)https://github.com/deviantony/docker-elk
3)https://github.com/elastic/detection-rules
4)https://github.com/SigmaHQ/sigma/tree/master/rules
5)https://car.mitre.org/analytics/by_technique
6)https://github.com/12306Bro/Threathunting-book
7)https://lolbas-project.github.io/