网络攻防对抗之“左右互搏术”
本文介绍了一种从攻防两个维度研究分析网络安全对抗技术的网络方法。该方法基于Sysmon日志 、攻防ATT&CK标签日志、对抗操作系统日志的右互分析实践 ,通过几种典型攻防对抗技术示例,搏术着重介绍和分析攻击在主机层面特征,网络为蓝队人员“看得见”“看得清”网络威胁 ,攻防提供了一种简单易学的对抗技术修炼方法 。也借此抛砖引玉,右互希望在安全规则优化或威胁狩猎的搏术专家能有更多此方面技术分享。
1、网络“左右互搏术”
这里的攻防“左右互搏术”,建站模板喻意为安全人员一边模拟红队或入侵者或企业内恶意人员的对抗攻击 ,一边作为防守方从网络 、右互主机等多层面检测和分析攻击,搏术有助于安全人员理解掌握相关攻击技术原理、技术特征及其产生的日志、告警等信息。若将相关经验应用到企业生产环境,那么为企业优化网络安全告警解析规则、快速分析溯源攻击 、威胁狩猎、针对性增强防护检测措施等方面,将是大有裨益的。服务器租用
2 、资源准备
测试验证主要资源及软硬件配置信息如下 。
笔记本电脑: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等虚拟机。3、基于Sysmon的“左右互搏术”
Sysmon是微软安全人员开发的一种 Windows系统服务和设备驱动程序 ,一旦安装在系统上 ,就会在系统重启后保持驻留状态 ,以监视系统活动并将其记录到 Windows事件日志 。它能提供有关进程创建、网络连接和文件创建时间更改等详细信息。通过使用Windows事件查看器或SIEM代理收集它生成的事件并进行安全分析 ,可了解入侵者和恶意软件如何在网络系统上运行 ,从而识别恶意或异常活动 。目前,源码下载Sysmon也有支持Linux版本,但其检测功能还比较弱 ,支持的操作系统类型较少。
以下介绍三方面场景,主要介绍在主机侧对有关攻击的检测发现。篇幅有限 ,未对有关攻击与检测技术原理,防护措施等深入展开说明 。3.1EventID 1进程创建
Sysmon EventID 1是为有关新创建进程提供扩展信息,能提供有关进程执行上下文的完整命令行。
攻击者入侵系统往往会创建进程与C2等远控服务器建立通信连接,因此一般可通过Sysmon EventID 1进程创建事件来发现入侵行为 。免费模板3.1.1 红队攻击红队在内网横向移动过程中,可能会使用Impacket套件等工具。现在模拟红队执行psexec.py横向移动一台Windows主机 ,执行效果如下图所示 。

使用psexec.py时,靶机出现病毒告警 ,改用smbexec.py则不会被防病毒软件(这里指Defender)查杀 ,且能与靶机保持正常通信,执行效果见下图。

蓝队可以从有关攻击工具的源代码(如有)或恶意样本 、网络通信数据包、主机日志等方面来进行安全分析 。
1)代码层面分析通过查看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 ,发现用户异常登录,如下图所示。

3.2EventID 3&22网络外连
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进程关联分析功能 ,让蓝队很容易理解攻击行为,并高效地开展攻击溯源或威胁狩猎 。

3.3EventID 17&18命名管道
Sysmon EventID 17在创建命名管道时生成 ,而恶意软件通常使用命名管道进行进程间通信 。EventID 18则是在客户和服务端之间建立命名管道连接时形成事件记录。
以下两图分别展示了CS木马在靶机上产生的命名管道创建和连接日志 。


CS有很多用于后渗透的攻击模块 ,其加载通常借助调用Windows DLL方式来实现 。这些攻击模块会通过命名管道的形式与Beacon通信,默认管道名称有\MSSE-、\postex_、\postex ssh*、\status_ 、\msagent_。这为蓝队分析判断攻击者使用哪种武器 ,有一定参考意义。
通过对Sysmon每一个EventID事件分析,蓝队将会发现很多有安全价值的信息 ,对不同EventID进行关联 ,将会在入侵检测方面有较大的发挥空间。例如 ,通过监控单个或所有主机Sysmon EventID的走势图 ,也是可以发现攻击异常。

4 、基于ATT&CK的“左右互搏术”
借助ATT&CK模型,可以让蓝队更容易理解分析攻击者所使用的技战术和工具,甚至能分析判断出其属于哪个团伙 ,也便于安全人员间交流。
本项测试基于Sysmon产生的带有ATT&CK标签的日志。通过ATT&CK技战术分析日志,非常有助于蓝队攻击溯源和威胁狩猎。遗憾的是 ,目前少有EDR、HIDS厂家将带有ATT&CK标签的日志接口开放,不利于蓝队使用该模型来开发关联检测规则。4.1ATT&CK T1003操作系统凭证导出
在网络攻击中,凭证导出是最常见的攻击行为之一 。目前,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 。4.1.1 红队攻击红队有时会将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.actinotallow=="目录服务访问" and event.code=="4662"and winlog.event_data.AccessMask:"0x100"等)进行关联并设置阈值 ,经测试产生了相关告警 。如果两条规则产生的告警同时出现,更充分说明正在发生PTH和DCsync攻击 ,如下图所示。

4.2ATT&CK T1136.001创建账号
红队在攻击Linux系统后,有可能会创建账号 。Sysmon for Linux可以检测此类攻击行为 ,修改Sysmon配置文件,添加如下图所示检测规则 ,可检测Linux账号创建行为。

在ELK中查询创建账号时,Sysmon有生成“T1136.001:Local Account”ATT&CK标签的日志。

同Sysmon EventID走势图一样 ,蓝队也可以通过监控单个或所有主机“TechniqueID”走势图来发现攻击行为或其他异常。

5、基于操作系统日志的“左右互搏术”
Windows操作系统中有Powershell、Defender、USB和WIFI使用等相关日志,因此 ,蓝队应能从这些日志中发现一些入侵攻击或恶意行为。
5.1PTH哈希传递攻击场景
红队在内网横向移动过程中,往往会利用已掌握的个别系统账号密码 ,使用CME等工具对内网服务器实施SSH 、SMB等协议密码喷洒攻击或PTH哈希传递攻击。
5.1.1 红队攻击模拟红队使用crackmapexec套件工具,利用已获得账号及其哈希值 ,进行哈希传递攻击 。下图显示发现有两个系统存在相同的账号密码。

通过分析网络数据包,未发现明显攻击特征 。蓝队可在实际生产环境中验证是否能产生密码喷洒告警。
2)主机层面行为分析使用场景4.1.2中的PTH哈希传递攻击检测规则“NTLMV2访问” ,发现了CME工具发起的PTH哈希传递攻击 。

5.2SID history权限维持场景
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 。

5.3防泄密场景
如果企业有封闭网络环境 ,禁止服务器接入USB存储设备 ,防止敏感数据被窃取。那么作为一种审计措施,将检索“event.code:207 and 驱动器”形成如下搜索结果 ,从而检测相关服务器是否发生了失泄密事件 。

5.4WIFI非法外连场景
如果企业有封闭网络环境 ,禁止非法网络外连。作为一种审计措施,将检索“event.code:8001 and 无线”形成如下搜索结果,从而检测是否发生了非法网络外连行为。这种违规行为在封闭网络环境下时有发生,值得特别关注 。

5.5病毒告警场景
如果企业使用Windows Defender防病毒软件,那么可以将Defender日志集中收集分析 。检索“event.code:1116”和“event.code:1117”形成如下搜索结果 ,从而快速发现恶意文件和攻击行为 。

6、总结
通过以上攻防对抗技术测试,将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类攻击 。
网络攻防对抗就像猫鼠游戏,蓝队需要持续跟踪了解掌握常见攻击技术 ,根据自身业务安全场景需要 ,通过持续优化安全系统告警规则,结合网络安全有效性验证及红蓝对抗实战化检验 ,及时检测发现深层次网络攻击行为和异常 。7、相关资源
以下为测试过程中参考或应用到的部分资源链接信息 。
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/本文作者 :tom0099, 转载请注明来自FreeBuf.COM