内网渗透中的 Net-NTLM Relay Attack

VSole2022-03-30 04:44:42

漏洞原理

在看 Net-NTLM Relay Attack 之前,需了解一下攻击原理是怎样实现的。

Net-NTLM Relay 原理,它是发生在 NTLM 认证的第三步,客户端发送使用服务端 NTLM Hash 加密的 Challenge 值,得到 Net-NTLMHash。我们就是要重放这个 Net-NTLMHash 来进行攻击。

所以,进行NTLM Relay攻击的第一步我们首先要获得这个Net-NTLMHash值。那么如何能获得这个Net-NTLMHash值呢?思路是让受害者把 Net-NTLMhash 自己发送给攻击者,也就是说只要是使用 SMB、HTTP、LDAP、MSSQL 等协议来进行 NTLM 认证的程序,都可以尝试用来向攻击者发送 Net-NTLM hash(思路很多,实际情况灵魂运用)。

通过 SMB 来进行 Relay Attack

SMB 协议的 Relay攻击,可直接 Relay 到 smb 服务器,是最直接最有效的方法。

通过 SMB Relay Attack 我们可以在目标远程服务器上执行命令,上传我们的恶意 exe ,又或者到远程服务上执行恶意代码 ... 等等

而 Relay Attack 有两种场景:

1:工作组环境

在工作组环境里面,工作组中的机器之间相互没有信任关系,每台机器的账号密码 Hash 只是保存在自己的 SAM 文件中,这个时候 Relay 到别的机器可能性就不大,除非两台机器的账号密码一样,不然毫无意义。

2:域环境

我们知道在域环境下所有域用户的账号密码 Hash 都保存在域控的 ntds.dit 里面。若没有限制域用户登录到某台机子,那就可以将该域用户 Relay 到别人的机子,或者是拿到域控的请求,将域控 Relay 到普通的机子,比如域管运维所在的机器。

PS:域环境下域控默认开启 smb 签名

下面演示在域环境下进行 Relay Attack,将会使用几款工具在域环从域控 relay 到普通域机器执行命令等操作。

当前环境

目标机器IP红队人员VPSKali Linux192.168.0.175域控制器Windows 2008192.168.0.198域内机器Windows 7192.168.0.128

通过 impacket 下的 smbrelayx.py 进行 Relay Attack

1、在红队人员 VPS 上执行如下命令监听 80 和 445 端口,伪造 http 和 smb 服务:

#SMBRelay 攻击 192.168.0.128 主机,并执行 whoami 命令
python3 smbrelayx.py -h 192.168.0.128 -c whoami

2、通过钓鱼或者其他手段诱导域管理员或域用户访问了红队人员伪造的 HTTP 或 SMB 服务,访问 http://192.168.0.175 ,并输入账号密码进行认证:

3、此时就 Relay 成功获取到 192.168.0.128 的 system 权限(当然只是 whoami 命令,实战中可以直接远程加载 powershell 或者其他手段反弹 Shell 到 C2,在这里就不多阐述)

通过 impacket 下的 ntlmrelayx.py 进行 Relay Attack

1、在红队人员 VPS 上执行如下命令监听 80 和 445 端口,伪造 http 和 smb 服务:

# SMBRelay 攻击 192.168.0.128 主机,并执行 whoami 命令
python3 ntlmrelayx.py -t smb://192.168.0.128 -c whoami -smb2support

2、通过钓鱼或者其他手段诱导域管理员或域用户访问了红队人员伪造的 HTTP 或 SMB 服务,访问 http://192.168.0.175 ,并输入账号密码进行认证:

或者让域控随便访问一个资源使用 smb 触发:(因为它会检查本地 host 文件,然后检查 DNS,如果都不存在,就会通过 LLMNR 协议进行多播,在局域网中进行搜索。此时可以在攻击机上看到 Responder 的响应,然后受害者的 Windows 机器会向攻击者进行身份验证)

3、此时就 Relay 成功获取到 192.168.0.128 的 system 权限:

结尾

在内网渗透中若利用 LLMNR/NetBIOS 劫持成功并获得了目标主机的 Net-NTLM Hash,我们可以进行爆破,但是需要有一个强大的字典,否则你很难得到明文密码。

由于 Net-NTLM Hash 不像 NTLM-Hash,我们不能用 Net-NTLM Hash 来进行 Pass The Hash。那么不妨试一下 NTLM Relay Attack。

hash
本作品采用《CC 协议》,转载必须注明作者和本文链接
//oldTab:引用扩容前的哈希表。//oldCap:表示扩容前的table数组的长度。//获得旧哈希表的扩容阈值。//newThr:扩容之后下次触发扩容的条件。//条件成立说明hashMap中的散列表已经初始化过了,
一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输 出,该输出就是散列值。
Perfetch Hash Cracker是一款基于Rust开发的强大暴力破解工具,该工具可以帮助广大研究人员通过爆破的形式破解prefetch哈希。
随着攻防演练的频繁和?们安全意识的提升,企业内部Windows主机的?令也设置的较为复杂,经 常拿到windows 服务器的时候,获取到了hash,但是?法解密出密码的情况,这时候就需要?法,攻击者不需要花费时间来怼hash进?02测试环境Windows server 2012 ?先需要获取ntml hash,由于直接从内存读取到的可能是密码修改之前的hash,这?些远程命令的执??持wmi,默认开启,且windows 默认不会将wmi 的操作记录到?具的原理是wmi 创建进程执?impacket 中的smbexec 程序,命令如下python3 smbexec.py -hashes
Wavecrack是一款针对密码安全的强大工具,该工具提供了一个用户友好的Web接口,该工具支持预定义的配置,并能够在多个用户之间共享hashcat破解信息,然后使用hashcat实现密码破解。?hashcatFlaskCelerySQLiterabbitmq-serverhashcat规则字典文件?首先,我们需要使用下列命令将该项目源码克隆至本地:git?安装RabbitMQ服务器和python-ldap依赖:$?开启RabbitMQ服务器:$ sudo service rabbitmq-server start. 工具首页添加一个待破解的哈希查看结果和其他状态信息?本项目的开发与发布遵循GNU开源许可证协议。?
笔者在对volatility工具进行了解后,对分析vmem文件的手法进行了一定优化,可以提升解决锁屏问题的效率。不过官方团队并没有打包volatility3的可执行程序,原因写的是打包出来的packages会被识别为恶意软件,解决了这个问题就会出可执行程序了。过程思路一、直接在esxi中部署volatility3项目Linux环境下的esxi,这个思考很快就被证明不太可行了,volatility3需要多个系统库和pip库:yum install zlib &&\yum install zlib-devel &&\yum install bzip2-devel &&\yum install ncurses-devel &&\yum install sqlite-devel &&\yum install readline-devel &&\yum install gcc &&\yum install libffi &&\yum install libffi-devel &&\yum install gcc-c++\yum install openssl-devel\yum install tk-devel
虽然加密技术新辈多出,但哈希算法(也称“散列算法”)自诞生以来,已成为加密算法领域不可或缺的应用。 最简单的散列算法也被用来加密存在数据库中的密码字符串,日常我们在各大APP中注册时填写的密码均是以字符串方式保存在服务器中,用户登陆时需要再次对输入密码实施哈希计算,而后将两个密码字符串进行碰撞验证登陆。
内网渗透hash窃取技巧
2021-11-28 06:53:23
在内网渗透的过程中,最重要的就是信息搜集,但是在极端情况下我们找不到能够横或者跨域的机器,那么这时候我们就可以尝试做一个水坑,来尝试获取hash。当然这只是理想情况,在愈发强调对抗的当下,利用水坑钓鱼也变得不是那么简单。
我们知道HashMap底层是由数组+链表/红黑树构成的,当我们通过put(key, value)向hashmap中添加元素时,需要通过散列函数确定元素究竟应该放置在数组中的哪个位置,当不同的元素被放置在了数据的同一个位置时,后放入的元素会以链表的形式,插在前一个元素的尾部,这个时候我们称发生了hash冲突。
VSole
网络安全专家