如何使用ADFSRelay分析和研究针对ADFS的NTLM中继攻击

关于ADFSRelay

ADFSRelay是一款功能强大的概念验证工具,可以帮助广大研究人员分析和研究针对ADFS的NTLM中继攻击。

ADFSRelay这款工具由NTLMParse和ADFSRelay这两个实用程序组成。其中,NTLMParse用于解码base64编码的NTLM消息,并打印有关消息中基础属性和字段的信息。在研究特定NTLM实现的行为时,检查这些NTLM消息将很有帮助。ADFSRelay则是在研究针对ADFS服务的NTLM中继攻击的可行性时开发的概念验证实用程序,此实用程序可用于执行针对ADFS的NTLM中继攻击。

关于ADFS

ADFS的全称是Active Directory Federation Services,ADFS是基于Web的单点登录(Single Sign-On
(SSO))的标准, 它通过实现了forest间的claim based authentication而开启了联合身份(federated
identity),简化了对系统和应用程序的访问, AD FS 可以帮助企业实现基于 Web 的单一登录 (SSO)
,避免多系统多用户名密码造成的记忆困难。

在ADFS中, 身份的联合(identity federation )是通过在两个组织的安全边界间建立信任关系来实现的. 在一端(account
side)的federation server 负责通过在Active Directory domain services中的标准方式认证一个用户,
然后生成一个包含一系列包含有关这个用户的claims的token, 包括federation server的实体本身. 另一端(resource
side), 另一个federation server会校验这个token, 然后生成另一个token供本地服务器接受claim identify所用.
这允许系统为它的资源提对另外一个安全边界的某用户供可控制的访问权限, 而不需要让这个用户直接登录系统, 也不需要两个系统共享用户的identify和密码。

工具下载

该工具基于Go语言开发,因此我们首先需要在设备上安装并配置好Golang环境。

接下来,我们可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/praetorian-inc/ADFSRelay.git

工具使用

NTLMParse使用

要使用NTLMParse实用程序,只需将Base64编码的消息传递给应用程序,它将解码消息中的相关字段和结构:

➜  ~ pbpaste | NTLMParse

(ntlm.AUTHENTICATE_MESSAGE) {

 Signature: ([]uint8) (len=8 cap=585) {

  00000000  4e 54 4c 4d 53 53 50 00                           |NTLMSSP.|

 },

 MessageType: (uint32) 3,

 LmChallengeResponseFields: (struct { LmChallengeResponseLen uint16; LmChallengeResponseMaxLen uint16; LmChallengeResponseBufferOffset uint32; LmChallengeResponse []uint8 }) {

  LmChallengeResponseLen: (uint16) 24,

  LmChallengeResponseMaxLen: (uint16) 24,

  LmChallengeResponseBufferOffset: (uint32) 160,

  LmChallengeResponse: ([]uint8) (len=24 cap=425) {

   00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

   00000010  00 00 00 00 00 00 00 00                           |........|

  }

 },

 NtChallengeResponseFields: (struct { NtChallengeResponseLen uint16; NtChallengeResponseMaxLen uint16; NtChallengeResponseBufferOffset uint32; NtChallengeResponse []uint8; NTLMv2Response ntlm.NTLMv2_RESPONSE }) {

  NtChallengeResponseLen: (uint16) 384,

  NtChallengeResponseMaxLen: (uint16) 384,

  NtChallengeResponseBufferOffset: (uint32) 184,

  NtChallengeResponse: ([]uint8) (len=384 cap=401) {

   00000000  30 eb 30 1f ab 4f 37 4d  79 59 28 73 38 51 19 3b  |0.0..O7MyY(s8Q.;|

   00000010  01 01 00 00 00 00 00 00  89 5f 6d 5c c8 72 d8 01  |........._m\.r..|

   00000020  c9 74 65 45 b9 dd f7 35  00 00 00 00 02 00 0e 00  |.teE...5........|

   00000030  43 00 4f 00 4e 00 54 00  4f 00 53 00 4f 00 01 00  |C.O.N.T.O.S.O...|

   00000040  1e 00 57 00 49 00 4e 00  2d 00 46 00 43 00 47 00  |..W.I.N.-.F.C.G.|

下面给出的是NTLM AUTHENTICATE_MESSAGE消息样例,可以用于后续测试使用:

TlRMTVNTUAADAAAAGAAYAKAAAACAAYABuAAAABoAGgBYAAAAEAAQAHIAAAAeAB4AggAAABAAEAA4AgAAFYKI4goAYUoAAAAPqfU7N7/JSXVfIdKvlIvcQkMATwBOAFQATwBTAE8ALgBMAE8AQwBBAEwAQQBDAHIAbwBzAHMAZQByAEQARQBTAEsAVABPAFAALQBOAEkARAA0ADQANQBNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDrMB+rTzdNeVkoczhRGTsBAQAAAAAAAIlfbVzIctgByXRlRbnd9zUAAAAAAgAOAEMATwBOAFQATwBTAE8AAQAeAFcASQBOAC0ARgBDAEcAVQA0AEcASABPADAAOAA0AAQAGgBDAE8ATgBUAE8AUwBPAC4ATABPAEMAQQBMAAMAOgBXAEkATgAtAEYAQwBHAFUANABHAEgATwAwADgANAAuAEMATwBOAFQATwBTAE8ALgBMAE8AQwBBAEwABQAaAEMATwBOAFQATwBTAE8ALgBMAE8AQwBBAEwABwAIAIlfbVzIctgBBgAEAAIAAAAIADAAMAAAAAAAAAABAAAAACAAABQaOHb4nG5F2JL1tA5kL+nKQXJSJLDWljeBv+/XlPXpCgAQAON+EDXYnla0bjpwA8gfVEgJAD4ASABUAFQAUAAvAHMAdABzAC4AYwBvAG4AdABvAHMAbwBjAG8AcgBwAG8AcgBhAHQAaQBvAG4ALgBjAG8AbQAAAAAAAAAAAKDXom0m65knt1NeZF1ZxxQ=

ADFSRelay使用

ADFSRelay的唯一必需参数是NTLM中继攻击的目标ADFS服务器的URL地址,另外的三个可选参数为:-debug以启用调试模式,-port以定义服务应侦听的端口,-help以显示帮助菜单。帮助菜单示例如下:

➜  ~ ADFSRelay -h

Usage of ADFSRelay:

  -debug

     启用调试模式输出

  -help

     显示此帮助菜单

  -port int

     HTTP监听器需要监听的端口,默认为8080

  -targetSite string

     中继攻击目标ADFS站点,例如https://sts.contoso.com

➜  ~

最后

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值