横向移动分析工具(LATMA)从域环境和 Azure AD 环境中收集身份验证日志,并搜索潜在的横向移动攻击及可疑活动。横向移动可能发生在 AD 环境中,也可能发生在云与本地之间。该工具通过图表展示横向移动模式的可视化结果。此工具包含两个模块:一个用于收集日志,另一个用于分析日志。您可以分别执行每个模块。事件日志收集器应在运行 Python 3.8 或更高版本的 Windows 机器上执行,且该机器需处于 Active Directory 域环境中。分析器可在 Linux 机器和 Windows 机器上执行。
事件日志收集器具有两个功能:扫描域控制器以获取成功的 NTLM 身份验证日志,扫描端点以获取成功的 Kerberos 身份验证日志;以及从 Azure AD 收集登录日志。从 AD 环境收集日志需要 LDAP/S 端口 389 和 636 以及 RPC 端口 135 对域控制器和客户端的访问权限。此外,还需要域管理员权限,或是事件日志读取者组中的用户,或具有同等权限的用户。这是从所有端点和域控制器拉取事件日志所必需的。
对于登录收集,您需要在 Azure AD 环境中拥有一个应用程序,并在配置文件中提供相关信息。确保用于登录收集的用户未配置双因素身份验证(2FA)。
收集器从域控制器上的事件 8004 中收集 NTLM 日志,从客户端上的事件 4648 中收集 Kerberos 日志。它输出一个 CSV 逗号分隔格式的文件,包含所有可用的身份验证流量。输出包含以下字段:源主机、目标、用户名、身份验证类型、SPN 以及格式为 %Y/%m/%d %H:%M 的时间戳。收集器需要具有整个环境中事件查看器权限的有效用户的凭据,并查询每种协议的特定日志。
使用组策略验证环境中是否已审核 Kerberos 和 NTLM 协议:
收集器仅从混合或 Azure AD 加入的设备收集成功登录。这些登录表示资产在 Azure AD 环境与本地环境之间的成功移动。收集器需要以下信息来收集数据:
分析器接收一个格式化为收集器输出结构的电子表格作为输入。它使用横向移动分析算法搜索可疑活动,并检测横向移动的其他 IoC。身份验证的源和目标应使用 NetBIOS 名称而非 IP 地址进行格式化。
LATMA 获取一批身份验证请求,并在发现可疑的横向移动攻击时发出警报。我们定义如下内容:
身份验证图:一个包含环境中身份验证流量信息的有向图。图中的节点是计算机,边是计算机之间的身份验证。图边包含属性:协议类型、身份验证日期以及发出请求的账户。图节点包含其表示的计算机的信息,详见下文。
横向移动图:身份验证图的一个子图,代表攻击者的移动。横向移动图并不总是子图中的一条路径;在某些攻击中,攻击者会向多个不同方向扩散。
警报:算法怀疑属于横向移动图的一个子图。
LATMA 在执行过程中执行多项操作:
信息收集:LATMA 监控用户和机器的正常行为并对其进行特征化。学习过程稍后用于判断哪些身份验证请求偏离正常行为,可能涉及横向移动攻击。在三周的学习期内,LATMA 不会发出任何警报,仅对环境进行学习。学习在三周后仍会继续。
身份验证图构建:学习期后,每个相关的身份验证都会被添加到身份验证图中。必须仅过滤相关身份验证,否则图所拥有的边数可能过大。我们过滤以下协议类型:NTLM 和 Kerberos,服务为 "rpc"、"rpcss" 和 "termsrv"。
向图中添加身份验证可能会触发警报处理过程。通常,新边可以创建新警报、加入现有警报或合并两个警报。
LATMA 监控的每个身份验证请求都用于学习,并存储在专用数据结构中。首先,我们识别接收端和中枢。我们将接收端定义为被许多(至少 50 个)不同账户访问的机器,例如公司门户或 Exchange 服务器。我们将中枢定义为许多不同账户(至少 20 个)从中进行身份验证的机器,例如代理和 VPN。对接收端的身份验证或从中枢发出的身份验证被视为良性,因此会从身份验证图中移除。
除了基本分类外,LATMA 还会将账户与其经常进行身份验证的机器进行匹配。如果一个账户在三周内至少有三天的不同日期从某台机器进行身份验证,则意味着该账户与该机器匹配,并且该账户从该机器发出的任何身份验证都被视为良性,会从身份验证图中移除。
横向移动的 IoC 包括:
白杖 - 用户账户在相对较短的时间内从单一机器向多台机器进行身份验证。
桥梁 - 用户账户 X 从机器 A 向机器 B 进行身份验证,随后又从机器 B 向机器 C 进行身份验证。此 IoC 可能表明攻击者从其初始立足点(A)向更有利于实现攻击目标的目标机器(C)实际推进。
切换桥梁 - 用户账户 X 从机器 A 向机器 B 进行身份验证,随后用户账户 Y 从机器 B 向机器 C 进行身份验证。此 IoC 可能表明攻击者在其路径上发现并攻破了另一个账户,并使用新账户向前推进(常见的例子是账户 X 为标准域用户,账户 Y 为管理员用户)。
权重转移 - 从机器 A 向机器 {B1,…, Bn} 的白杖(见上文),随后从机器 Bx 向机器 {C1,…,Cn} 的另一个白杖。此 IoC 可能表明攻击者已确定机器 B 更能满足攻击目的,并从那时起使用机器 B 作为进一步搜索的来源。
爆发 - 用户账户 X 在非常短的时间内从机器 A 向多台机器进行身份验证。常见的例子是攻击者同时向大量机器植入/执行勒索软件。
输出:
分析器输出多个不同的文件:
用法
收集器
必需参数:
二进制用法 打开命令提示符并导航到二进制文件夹。 使用上述参数运行可执行文件。
在示例文件中,您有多个真实环境的样本(有些包含横向移动攻击,有些则没有),您可以将这些样本作为分析器的输入。
用法示例