远程桌面(RDP)取证&安卓锁屏破解

before

使用远程桌面协议( Remote Desktop Protocol)的时候, 通常会留下痕迹, 如

  1. 使用远程桌面时所需的程序 Terminal Server Client
  2. 被远程操控时会留下default.rdp ( 通常在document文件夹下)
  3. bmcbin缓存文件, 可以用来恢复远程桌面画面

新版本系统的缓存路径: %USERPROFILE%AppDataLocalMicrosoftTerminal Server ClientCache\

旧系统缓存路径 : %USERPROFILE%Local SettingsApplication DataMicrosoftTerminal Server ClientCache\

  1. Credentials 路径通常在%userprofile%AppDataLocalMicrosoftCredentials\

该文件夹内包含远程登录的密钥凭证,可使用mimikatz导出

Windows远程桌面(RDP)密码凭证获取 (゚益゚メ) 渗透测试

example( WMCTF2021 Flag Thief)

附件是E01格式,显然可以挂载,其它流程暂不叙述,主要介绍RDP部分

image-20210831113130759

根据hint,曾经执行过远程桌面,可以发现Cache文件夹下存在缓存文件

我们可以使用bmc-tools恢复缓存,从而得到远程桌面的画面

python .\bmc-tools.py -s .\src\ -d .\dst\ -w 1920 -v
[+++] Processing a directory...
[---] File '.\src\Cache0000.bin' has been found.
[---] File '.\src\Cache0001.bin' has been found.
[---] File '.\src\Cache0002.bin' has been found.
[---] Subsequent header version: 6.
...
...
[===] Successfully exported 4676 files.

随后挑出来几张, 先用montage拼一下

montage *.bmp -tile 5x5 -geometry +0+0 flag.jpg

flag

gaps跑一下

gaps --image=flag.jpg --size=64 --save

flag_solution

得到

5eCuri7yPaSsW0rd@__WMCTF

以及VeraCrypt的提示, 说明内存中可能存在VeraCrypt的文件

此时再去看看取证大师, 扫描一下

image-20210901002151692

得到一堆, 这里由于5e的最大, 遂尝试解密, 可以得到一个nox的镜像

这里nox.vmdk是夜神模拟器的虚拟磁盘, 可以在模拟器内导入,导入后发现存在密码, 这里要爆破密码, 原理详见: Cracking gatekeeper.pattern.key

于是winhex查看这个vmdk, 导出对应的文件

image-20210901004809519

然后结合这篇文章搞了个脚本

# !/usr/bin/python3
# -*- coding:utf-8 -*-
import struct
import itertools
import base64
import scrypt

N = 16384
r = 8
p = 1

f = open('gatekeeper.pattern.key', 'rb')  # 读取gatekeeper.pattern.key文件
blob = f.read()
# res = open(r'list.txt', 'wb')
s = struct.Struct('<' + '17s 8s 32s')
(meta, salt, signature) = s.unpack_from(blob)  # 提取其中关键的信息
print(meta.hex())
print(base64.b64encode(salt))
print(base64.b64encode(signature))
print(f'.\hashcat64.exe -a 0 -m 8900 SCRYPT:{N}:{r}:{p}:{base64.b64encode(salt).decode()}:{base64.b64encode(signature).decode()} .\list.txt')
for i in itertools.permutations('123456789', 9):
    '''↓仅生成字典↓'''
#     to_hash =meta+ ''.join(i).encode() + b'\n'  # 将字典中读取的密码和meta信息组合成to_hash
#     res.write(to_hash)
# res.close()
    '''↓python爆破↓'''
    to_hash = meta + ''.join(i).encode()
    hash = scrypt.hash(to_hash, salt, N, r, p)
    tmp = hash[0:32]
    if hash[0:32] == signature:  # 如果相同,程序结束
        print(''.join(i))
        print('signature  %s' % signature.hex())
        print('Hash:      %s' % hash[0:32].hex())  # 取hash值的前32位
        print('Equal:     %s' % (hash[0:32] == signature))
        print("OK")
        exit()

.hashcat64.exe -a 0 -m 8900 SCRYPT:{N}:{r}:{p}:{base64.b64encode(salt).decode()}:{base64.b64encode(signature).decode()} .list.txt

这里python爆破太慢了 我就丢去hashcat了 也是跑了10分钟左右出的, hashcat的格式在上边

img

转一下hex就得到锁屏密码了, 这里主要想记录一下RDP部分和破解安卓锁屏部分, 后面简单就不再赘述

最后修改:2021 年 09 月 01 日 12 : 53 AM
如果觉得我的文章对你有用,请随意赞赏