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

news2025/1/15 13:54:20

关于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

➜  ~

最后

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

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


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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP 在建工程转固定资产

由固定资产归口采购部门或业务部门提交购置固定资产/在建工程的申请,经审批后,若是需要安装调试,则由财务部固定资产会计建立内部订单收集成本,月末结转在建工程。项目完工后,相关部门(公司装备部、分公司装…

Python虚拟环境迁移

使用python开发脚本使用的时候难免会遇到需要更换电脑来运行的问题,但是python不同版本的兼容性较差,在其他电脑使原python脚本运行时经常会发生一些问题,因此就需要python虚拟环境的迁移了。但是,直接将虚拟环境复制到另一台电脑…

Git学习(1)pro git阅读尚硅谷视频

目录 目录: 1. 起步 2. Git 基础 3. Git 分支 4. 服务器上的 Git 5. 分布式 Git 第一章 1.3 Git是什么 1.6运行git前的配置 该开源图书网站 Git - Book (git-scm.com) 目录: 1. 起步 1.1 关于版本控制1.2 Git 简史1.3 Git 是什么?1…

《图机器学习》-GNN Augmentation and Training

GNN Augmentation and Training一、Graph Augmentation for GNNs1、Feature Augmentation2、Structure augmentation3、Node Neighborhood Sampling一、Graph Augmentation for GNNs 之前的假设: Raw input graph computational graph,即原始图等于计算…

产品需求文档需要注意10件事

01什么是完美的产品需求文档(PRD)?就像产品经理一样,产品需求文档需要同时有效地执行许多不同的角色。该文档将由设计师,营销人员和工程团队使用,并且需要传达他们所需的所有必要信息。参考上面的漫画&…

html,

目录1. html新建1.1 html基本结构1.2 html细节2. 标签2.1 font标签2.2 字符实体2.3 标题标签2.4 超链接标签2.5 列表标签2.6 图片标签2.7 表格标签2.8 表单标签2.8.1基本使用2.8.2表单综合练习2.8.3表单格式化2.8.4表单使用细节2.8.5get请求2.8.6post请求2.9 其它标签2.9.1div标…

【JavaScript】第一章JavaScript入门

第一章 JavaScript入门JavaScript介绍JavaScript的起源JavaScript的应用JavaScript的特点JavaScript是脚本语言支持面向对象编程,面向过程编程/函数式编程支持跨平台执行JavaScript和ECMAScript的关系开发工具编辑器sublime textVisual Studio CodewebstormDreamwea…

安装VMWare虚拟机之后,发现网络贼卡,打开网页很慢

事情描述: 最近忙一个项目,需要到虚拟机中部署环境,安装完之后,就开整自己的项目了。 可以过几天,发现本地网络贼卡,打开各网页慢的一批,一开始还以为是路由器的问题,反复折腾之后排…

HBuilder X启动微信开发工具报错的问题

今天通过HBuilder X启动微信开发工具,报了如下的错: [微信小程序开发者工具] [error] IDE service port disabled. To use CLI Call, please enter y to confirm enabling CLI capability, or manually open IDE -> Settings -> Security Settings…

Android Studio相关记录

目录Android Studio 便捷插件Android LogcatJava文件的类头模板Android Studio 使用遇到的问题解决方案org.jetbrains.annotations.NullableBuild 控制台编译输出中文乱码Terminal 使用 git 命令窗口git 命令窗口中文乱码Android Studio 便捷插件 Android Logcat 配置路径 Fi…

【VUE】六 路由和传值

目录 一、 路由和传值 二、案例 三、案例存在无法刷新问题 一、 路由和传值 当某个组件可以根据某些参数值的不同,展示不同效果时,需要用到动态路由。 例如:访问网站看到课程列表,点击某个课程,就可以跳转到课程详…

【c#】学习DATATABLE排序

c#实现Datatable排序Datatable排序结果图代码展示总结Datatable排序 结果图 原数据 倒序 去重 筛选行 代码展示 1、使用datatable视图对table进行排序 //倒序排序 dt.DefaultView.Sort “CreateTime desc”; dt dt.DefaultView.ToTable(); 如果想升序排序&#xff0c…

kafka入个门

名词 topic 表 partation 水平扩展 leader 主 follow备 produce生产 offset偏移量 消息队列的流派 什么是 MQ Message Queue(MQ),消息队列中间件。很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶&#xf…

DASCTF X GFCTF 2022十月挑战赛 Web

from DASCTF X GFCTF 2022十月挑战赛 Web EasyPOP 就简单的php反序列化 源码 <?php highlight_file(__FILE__); error_reporting(0);class fine {private $cmd;private $content;public function __construct($cmd, $content){$this->cmd $cmd;$this->content …

Leetcode22. 括号生成

一、题目描述&#xff1a; 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例 2&…

Java笔记028-集合章节练习

Java笔记028-集合章节练习编程题按要求实现&#xff1a;封装一个新闻类&#xff0c;包含标题和内容属性&#xff0c;提供get、set方法&#xff0c;重写toString方法&#xff0c;打印对象时只打印标题只提供一个带参构造器&#xff0c;实例化对象时&#xff0c;只初始化标题&…

【Java】Java进阶学习笔记(一)—— 面向对象(封装)

【Java】Java进阶学习笔记&#xff08;一&#xff09;—— 面向对象&#xff08;封装&#xff09;一、类中成分1、类中成分2、this关键字this() 访问构造器方法3、static关键字1. 成员变量的区分2. 成员方法的区分3. 成员变量访问语法的区分二、封装1、封装的定义封装的好处2、…

excel之古诗词打乱排序

最终效果 制作过程: 一、选择一首古诗&#xff0c;将正文内容连接起来&#xff0c;放在一个单元格中 二&#xff0c;由于这首诗是20字的&#xff0c;加工20个不重复的随机数&#xff0c;具体公式如下图 &#xff08;写好第一行数据&#xff0c;拖动下拉即可&#xff09; 其中…

虚拟机上安装openKylin详细步骤总结

一、创建虚拟机 首先获取操作系统安装镜像文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1tSuXmDk2ZILR4ieee6iImw?pwdcy47 提取码&#xff1a;cy47 &#xff08;1-1&#xff09;进入新虚拟机创建向导&#xff0c;选择“自定义”&#xff1a; &#xff08;1-…

创业做校园外卖平台,该如何把自己的平台宣传出去?

如何宣传校园外卖平台&#xff1f;主要看平台宣传&#xff0c;配套宣传工具不一样&#xff01; 我认为有以下几点&#xff1a; 1.建立以宿舍楼为基础的推广团队&#xff0c;依托平台分佣&#xff0c;并能做到每个宿舍楼的送餐和广告分发&#xff1b; 2.根据学生的消费习惯&a…