Azure串行控制台攻防实战(第二部分)
启用Linux虚拟机日志记录
根据当前设置,此步骤可能非必需。如果云计算工作负载已由Microsoft Sentinel或其他SIEM解决方案监控,可跳过此部分。本节介绍如何使用Sysmon for Linux和Microsoft Defender for Endpoint代理记录Azure Linux虚拟机事件,以捕获串行控制台活动痕迹。
日志分析工作区的创建和Azure活动监控的启用已在博客第一部分介绍。要为Linux虚拟机启用日志记录,请从日志分析工作区的“代理”选项卡安装Log Analytics Linux代理。
Syslog
Syslog是Linux中常用的事件日志协议。Linux设备中的Syslog守护进程收集本地事件,并可将其发送到日志分析工作区。应用程序发送的消息可本地存储或发送到Syslog收集器。安装Azure Monitor Linux代理后,当在数据收集规则(DCR)中启用Syslog收集时,它会配置本地Syslog守护进程将消息转发给代理。Azure Monitor代理随后将这些消息传输到Azure Monitor或日志分析工作区,在Syslog表中创建相应的记录。使用此指南通过Azure Monitor代理收集Syslog事件。
Sysmon for Linux
安装Sysmon for Linux的先决条件:
- 确保Linux虚拟机已加入日志分析工作区。
- 使用此指南通过Azure Monitor代理收集Syslog事件。
在Linux虚拟机上使用此指南安装Sysmon。Sysmon for Linux的配置可在此处找到,并使用以下配置安装Sysmon服务:
|
|
Linux虚拟机上的串行控制台痕迹
使用串行控制台访问虚拟机的证据可在虚拟机的原生Syslog和Sysmon for Linux日志中找到。串行控制台连接通过Linux虚拟机上的/dev/ttyS0
进行。
使用Syslog追踪活动
识别启动串行控制台访问Linux虚拟机,它将在ttyS0上启动连接,并显示用户名和密码的身份验证提示以登录虚拟机。可使用以下查询识别:
|
|
要识别在Linux虚拟机上启用/dev/ttyS0
时虚拟ttyS0终端的启动,可使用以下查询:
|
|
在Syslog原生日志中发现使用串行控制台成功访问虚拟机:
|
|
查找使用串行控制台连接虚拟机的失败登录尝试。失败尝试次数也会在syslog日志中捕获对应用户帐户的时间点:
|
|
使用串行控制台成功身份验证后使用sudo
将在syslog authpriv日志中捕获,执行的命令带有sudo
,并且带有sudo
的命令也会被捕获:
|
|
使用Sysmon for Linux追踪活动
成功安装Sysmon for Linux后,日志分析工作区开始在包含“Linux-Sysmon”的syslog消息中捕获Sysmon事件。以下查询可用于识别通过串行控制台访问的Linux虚拟机上的所有进程执行事件。Sysmon for Linux在事件ID 1下记录Linux虚拟机上的所有ProcessCreate事件。
此Kusto查询可以解析当前配置文件中提到的所有事件的Sysmon for Linux日志。此查询可保存为函数(例如Sysmon_for_linux
),以使用事件ID字段搜索Linux虚拟机上的不同事件。
使用串行控制台的Linux虚拟机上的每个进程都有唯一的父进程和命令行。父进程ID将根据串行控制台会话而变化。父进程将是/usr/bin/bash
,父进程命令行将是-bash
。以下Kusto查询可以解析Sysmon for Linux日志中的事件ID 1(ProcessCreate),以识别使用串行控制台特殊管理控制台(SAC)执行的进程。但此查询有一个注意事项,因为它只投影从SAC控制台执行的直接子进程,而不是从shell脚本生成的进程。
|
|
例如,以下查询可以识别使用串行控制台在虚拟机上执行的进程(在登录用户上下文中)的所有公共网络连接:
|
|
使用Microsoft Defender for Endpoint(MDE)追踪活动
Microsoft Defender for Endpoint捕获Linux虚拟机的Azure串行控制台活动。此活动包括通过SAC控制台登录虚拟机、执行所有进程以及使用登录的串行控制台建立网络连接。到Linux虚拟机的串行控制台连接在具有设备/dev/vc/
的虚拟控制台终端上建立。在一般场景中,到任何设备的直接串行控制台访问通过/dev/ttyS0
进行。以下MDE的Kusto查询将提供与登录用户、执行的进程以及使用串行控制台建立的网络连接相关的信息。
以下MDE的Kusto查询将识别使用串行控制台登录的用户:
|
|
以下Kusto查询识别通过串行控制台连接的会话期间执行的所有进程:
|
|
以下Kusto查询将识别使用串行控制台执行的进程的所有网络连接:
|
|
狩猎可疑操作
以下是防御者可用于检测Azure串行控制台周围可疑活动的几个示例。
使用Sysmon for Linux事件日志狩猎可疑操作
攻击者可以通过Azure串行控制台获得初始访问权限,任何后续活动都可以使用串行控制台生成的进程谱系来识别。虽然有多个KQL(Kusto查询语言)狩猎查询可用于检测Linux虚拟机上的可疑操作,但以下Kusto查询对于狩猎最常见的技术特别有用。请注意,以下查询并未涵盖所有Linux攻击技术。但是,它提供了进程层次结构,安全分析师可以利用它来识别通过串行控制台在Linux机器上完成的活动。
|
|
使用Microsoft Defender for Endpoint狩猎可疑操作
访问串行控制台可被利用来滥用已知的本机系统映像以执行侦察、下载文件、搜索秘密和执行横向移动。以下查询将找到使用串行控制台执行的那些最常使用的本机映像:
|
|
使用Azure活动日志狩猎可疑操作
除了第一部分提到的狩猎技术外,还可以使用以下查询识别异常的串行控制台连接活动:
|
|
使用启动诊断日志狩猎可疑操作
在第一部分中,我们讨论了对手如何滥用启动诊断日志来泄露敏感信息。然而,启动诊断日志仍然是活动识别的重要来源。在诸如Syslog之类的日志未备份到中央位置(如SIEM)的情况下,启动诊断日志可以提供关键见解。由于它们可能包含敏感数据,这些日志不会备份到SIEM。但在日志缺失的情况下,它们具有重要的取证价值。
以下是执行LinPEAS(一种流行的权限提升工具)和使用Netcat的反向shell连接性。[请注意,Microsoft不认可使用这些工具,读者有责任负责任和道德地使用这些工具。在使用这些工具针对Azure或其他Microsoft基础设施之前,请检查我们的服务条款。]
最佳实践
以下是我们推荐的保持Azure串行控制台安全的最佳实践非详尽列表:
- 对所有具有“虚拟机参与者”访问权限的用户强制执行