攻击技术研判 | ADFS任意账户登录后门技术分析

admin 2022年9月19日21:51:39安全文章评论26 views3832字阅读12分46秒阅读模式
攻击技术研判 | ADFS任意账户登录后门技术分析

情报背景

近期,微软发现并公布了 Nobelium APT 组织在获得 Active Directory 联合服务 (AD FS) 服务器的管理权限后使用的后门 MagicWeb。MagicWeb 通过替换 AD FS 合法 DLL 的方式植入恶意代码,控制 AD FS 的身份验证过程和认证证书,使攻击者可以用特殊的证书,以任意用户的身份通过 AD FS 的认证。


组织名称

Nobelium

关联组织

APT29、Cozy Bear、The Dukes

战术标签

权限维持

技术标签

身份验证、后门

情报来源

https://www.microsoft.com/security/blog/

2022/08/24/magicweb-nobeliums-post-compromise-trick-to-authenticate-as-anyone/


01 攻击技术分析

Nobelium 在获取到 AD FS 的高权限后,用 MagicWeb 进行权限维持。MagicWeb 会检查认证请求中是否包含自定义硬编码的 OID 证书,如果包含,MagicWeb 操纵 AD FS 的认证流程,绕过正常的认证流程,包括 MFA 认证。具体流程如下:

1. 获取 AD FS 的高权限后,植入恶意代码到Microsoft.IdentityServer.Diagnostics.dll中

2. 修改 .net 文件签名,加载步骤 1 中的恶意 DLL,完成对 AD FS 持久化后门的建立

3. 攻击者用特殊 OID 的证书请求 AD FS 认证,触发后门处理逻辑

4. MagicWeb 介入认证流程,处理特殊 OID 的证书请求,如果请求没有特殊 OID 的证书,则转交控制权给正常流程

5. MagicWeb 用特殊 OID 的证书注入认证信息到 AD FS,使 AD FS 通过认证


OID 是 x509 证书中的一个扩展字段,这个值通常用来标识证书用户,比如 EKU 中包含 OID(Object Identifier) 值为 1.3.6.1.4.1.311.20.2.2,说明是智能卡认证。MagicWeb 在恶意代码中硬编码了2个特殊的 OID 值。


亮点一:恶意代码植入合法 DLL

在获取到 AD FS 的权限后,NOBELIUM 通过修改合法 Microsoft.IdentityServer.Diagnostics.dll 的方式植入恶意代码,并修改 C:WindowsAD FSMicrosoft.IdentityServer.Servicehost.exe.config 中 DLL 的签名,保证 AD FS 可以加载被修改后的恶意 DLL 而不是合法的 DLL。

攻击技术研判 | ADFS任意账户登录后门技术分析


在加载恶意 DLL 后,为了让 AD FS 尽快执行 DLL 中恶意代码,NOBELIUM 选择在该 DLL 的 TraceLog 类的静态构造方法中加载,因为 TraceLog 在 AD FS 的很多地方都会调用。


亮点二:hook 特定方法控制认证

MagicWeb hook 以下 4 个方法,控制认证流程:

攻击技术研判 | ADFS任意账户登录后门技术分析


MagicWeb 后门 hook 后的认证流程:

攻击技术研判 | ADFS任意账户登录后门技术分析


BeginBuild

BeginBuild() hook 了 Microsoft.IdentityServer.IdentityModel.dll的 Build(),主要目的是在调用合法的 Build() 前,提前检查证书的 OID 是否是硬编码的特殊值。


BeginBuild() 会首先调用 MagicWeb 的 ValidateX509Extensions(),在该方法中遍历所有证书,通过自定义的 md5 算法,检查证书的 OID 是否存以下两个硬编码的值:

攻击技术研判 | ADFS任意账户登录后门技术分析


如果存在则 BeginBuild() 直接返回 true,否则调用合法的 Build()。


BeginGetClientCertificate

BeginGetClientCertificate() hook 了 Microsoft.IdentityServer.WebHost.dll 中的  GetClientCertificate(),主要目的是设置合法的 GetClientCertificate() 获取的所有证书为合法证书。


BeginGetClientCertificate() 会首先调用合法的 GetClientCertificate() 获取客户端证书,然后调用上文提到的 ValidateX509Extensions() 判断客户端证书是否包含两个特殊的 OID,如果包含,则执行:

1. 获取当前对象的 _adapter 值

2. 获取 adapter 对象的 _reques 值

3. 设置 _request 对象的 m_ClientCertificateError 为 0


上述步骤完成后,m_ClientCertificateError 属性被设置为 0,即当 GetClientCertificate() 获取的证书中的 OID 包含两个特殊值时,不管证书是否有效都可以当作有效证书。


BeginProcessClaims

BeginProcessClaims() hook 了 Microsoft.IdentityServer.Service.dll 的 ProcessClaims(),主要目的控制了 AD FS 处理 Claims 的流程,Claims  是一种简单的陈述,用来承载主体的名称、身份信息、所属组等。MagicWeb 搜索所有的  Claims,找到包含 MagicWeb 特殊 OID 的 Claims,并注入到认证流程中,修改合法 ProcessClaims() 的返回值,使其通过认证。


BeginProcessClaims() 调用合法的 ProcessClaims() 后,以 processed 对象为参数调用 MagicWeb 的GetClaims(),GetClaims() 获取所有 Claims 的字符串和对应的类型并返回给 BeginProcessClaims()。BeginProcessClaims() 搜索所有 Claims 中 type 为 http://schemas.microsoft.com/claims/authnmethodsreferences,值为http://schemas.microsoft.com/claims/multipleauthn 的 Claims,即 MFA 认证的请求,如果已经存在,则 MagicWeb 仅转发给正常的认证流程。


如果没有搜索到,以 unprocessed 对象为参数再次调用 GetClaims()  获取 Claims,并用自定义的 md5 算法计算所有 Claims 的值,检查是否存在硬编码 hash 为 6E3466296D2F63DE[REDACTED] 的 Claims,这个 md5 对应上文提到的 OID 的 hash:1.3.6.1.4.1.311.21.8.868518.12957973.4869258.12250419.[REDACTED].[REDACTED].[REDACTED].[REDACTED]


如果存在 hash 符合的 Claim,则利用该 Claim 的信息注入一个 type 为 http://schemas.microsoft.com/claims/authnmethodsreferences ,值为 http://schemas.microsoft.com/claims/multipleauthn 的 Claim,即 MagicWeb 注入了自己的 MFA 类型的 Claim,并且让 AD FS 可以通过认证。


BeginEndpointConfiguration

BeginEndpointConfiguration() hook 了 Microsoft.IdentityServer.WebHost.dll 中的 EndpointConfiguration(),主要目的是确保携带恶意证书的请求可以被转发给 AD FS。


BeginEndpointConfiguration() 会检查和修改 ProxyEndpoint 对象的 CertificateValidation 值是否为 0 ,如果不是 0 则修改为 0。修改为 0 的目的是,允许 WAP(Web Application Proxy) 转发携带恶意证书的请求给 AD FS,因为 CertificationValidation 为 1 的时候, WAP 不会转发请求。


02 总结

在获得 AD FS 的权限后,NOBELIUM 之前使用 FoggyWeb 后门维持权限,专门用来窃取和伪造 AD FS 的证书,这次的 MagicWeb 后门超越了 FoggyWeb,专门针对 AD FS 的认证流程,它用 hook 的方式控制了 AD FS 的身份验证流程,植入自己的后门,从而用特殊的证书可以冒充任意的用户身份通过认证。从 MagicWeb 的行为和代码片段中可以看出,它对 AD FS 的认证流程和代码实现有着更加深入地理解。


攻击技术研判 | ADFS任意账户登录后门技术分析

绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。

研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。


攻击技术研判 | ADFS任意账户登录后门技术分析

M01N Team公众号

聚焦高级攻防对抗热点技术

绿盟科技蓝军技术研究战队

攻击技术研判 | ADFS任意账户登录后门技术分析

官方攻防交流群

网络安全一手资讯

攻防技术答疑解惑

扫码加好友即可拉群


往期推荐

攻击技术研判 | Kimsuky基于受害者身份验证的多阶段C2控制技术分析

攻击技术研判 | ADFS任意账户登录后门技术分析

攻击技术研判 | 宏文档攻击及Python恶意载荷防御规避新思路

攻击技术研判 | ADFS任意账户登录后门技术分析

攻击技术研判 | 绕过Chrome安全首选项无交互安装恶意扩展

攻击技术研判 | ADFS任意账户登录后门技术分析


原文始发于微信公众号(M01N Team):攻击技术研判 | ADFS任意账户登录后门技术分析

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月19日21:51:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  攻击技术研判 | ADFS任意账户登录后门技术分析 http://cn-sec.com/archives/1305577.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: