# HACKTHEON SEJONG ## RANSOM >author: kAiZ3n ![image](https://hackmd.io/_uploads/S1pIOBUUgg.png) ![image](https://hackmd.io/_uploads/B1Jd_BIIex.png) ![image](https://hackmd.io/_uploads/SkpF_B8Uxx.png) File Important.vhd là NTFS file system trong đó có tệp meeting bị encryption file system (EFS) đọc wiki ta biết được luồng hoạt động của cơ chế mã hóa này của Windows áp dụng cho Windows 7 trở lên Cơ chế mã hóa sẽ encryption file thông qua AES CBC và sau đó key sẽ được encryption key với RSA User's Private Key Để decryption ngược lại ta cần - user password (or smart card private key): used to generate a decryption key to decrypt the user's DPAPI Master Key - DPAPI Master Key: used to decrypt the user's RSA private key(s) - RSA private key: used to decrypt each file's FEK - File Encryption Key (FEK): used to decrypt/encrypt each file's data (in the primary NTFS stream) - SYSKEY: used to encrypt the cached domain verifier and the password hashes stored in the SAM Đầu tiên ta phân tích file meeting.txt một chút và EFS metadata được chứa trong ADBSTREAM ### Phân tích sơ bộ file system bằng Sleuth Kit ``` PS D:\CTFchall> D:\CTFchall\tools\sleuthkit-4.14.0-win32\bin\mmls .\Important5.vhd DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors Slot Start End Length Description 000: Meta 0000000000 0000000000 0000000001 Primary Table (#0) 001: ------- 0000000000 0000000127 0000000128 Unallocated 002: 000:000 0000000128 0000198783 0000198656 NTFS / exFAT (0x07) 003: ------- 0000198784 0000204799 0000006016 Unallocated PS D:\CTFchall> D:\CTFchall\tools\sleuthkit-4.14.0-win32\bin\fls -o 128 .\Important5.vhd r/r 4-128-1: $AttrDef r/r 8-128-2: $BadClus r/r 8-128-1: $BadClus:$Bad r/r 6-128-4: $Bitmap r/r 7-128-1: $Boot d/d 11-144-4: $Extend r/r 2-128-1: $LogFile r/r 0-128-6: $MFT r/r 1-128-1: $MFTMirr d/d 39-144-1: $RECYCLE.BIN r/r 9-128-8: $Secure:$SDS r/r 9-144-11: $Secure:$SDH r/r 9-144-14: $Secure:$SII r/r 10-128-1: $UpCase r/r 10-128-4: $UpCase:$Info r/r 3-128-3: $Volume r/r 38-128-7: meeting.txt d/d 36-144-1: System Volume Information V/V 256: $OrphanFiles PS D:\CTFchall> D:\CTFchall\tools\sleuthkit-4.14.0-win32\bin\istat -o 128 .\Important5.vhd 38 MFT Entry Header Values: Entry: 38 Sequence: 1 $LogFile Sequence Number: 1080689 Allocated File Links: 1 $STANDARD_INFORMATION Attribute Values: Flags: Archive, Encrypted Owner ID: 0 Security ID: 264 (S-1-5-21-80072447-1058360311-2986813321-1000) Created: 2025-06-07 07:32:04.379533000 (SE Asia Standard Time) File Modified: 2025-06-07 07:33:35.885219700 (SE Asia Standard Time) MFT Modified: 2025-06-07 07:34:17.617097900 (SE Asia Standard Time) Accessed: 2025-06-07 07:34:13.388641200 (SE Asia Standard Time) $FILE_NAME Attribute Values: Flags: Archive Name: meeting.txt Parent MFT Entry: 5 Sequence: 5 Allocated Size: 0 Actual Size: 0 Created: 2025-06-07 07:32:04.379533000 (SE Asia Standard Time) File Modified: 2025-06-07 07:32:04.379533000 (SE Asia Standard Time) MFT Modified: 2025-06-07 07:32:04.379533000 (SE Asia Standard Time) Accessed: 2025-06-07 07:32:04.379533000 (SE Asia Standard Time) $OBJECT_ID Attribute Values: Object Id: 8c6096d9-4332-11f0-9247-e8fb1caf749f Attributes: Type: $STANDARD_INFORMATION (16-0) Name: N/A Resident size: 72 Type: $FILE_NAME (48-3) Name: N/A Resident size: 88 Type: $OBJECT_ID (64-4) Name: N/A Resident size: 16 Type: $DATA (128-7) Name: N/A Non-Resident, Encrypted size: 124 init_size: 124 1419 Type: $LOGGED_UTILITY_STREAM (256-6) Name: $EFS Non-Resident size: 688 init_size: 688 1417 ``` Phân tích chi tiết: $DATA (128-7) Name: N/A Non-Resident, Encrypted size: 124 \$LOGGED_UTILITY_STREAM (256-6) Name \$EFS Non-Resident size: 688 Dữ liệu thực ($DATA) được mã hóa. EFS metadata được lưu ở $LOGGED_UTILITY_STREAM tên $EFS, dùng để chứa FEK được mã hóa bằng khóa công khai của user.(FEK là encrypted key AES by RSA user's privatekey) dump $LOGGED_UNTILITY_STREAM và $DATA ra phân tích với 010_EDITOR cùng với template ``` PS D:\CTFchall> D:\CTFchall\tools\sleuthkit-4.14.0-win32\bin\icat -o 128 .\Important5.vhd 38-256-6 > encrypted_FEK.bin PS D:\CTFchall> D:\CTFchall\tools\sleuthkit-4.14.0-win32\bin\icat -o 128 .\Important5.vhd 38-128-7 > encrypted_data.bin ``` ![image](https://hackmd.io/_uploads/BkUZkvB8xe.png) có được username: user@DESKTOP-EMMENVK được phép đọc file check username ở SAM bên file Ransom.ad1 để lấy UUID ta có S-1-5-21-80072447-1058360311-2986813321-1000 ### Trích xuất Encrypted FEK ![image](https://hackmd.io/_uploads/HJ7ClPrUxe.png) sau khi trích xuất xong ta cần phải có được User's RSA PrivateKey để decrypt lấy key AES ### Trích RSA Private Key và RSA Public Key Từ EFSblob ta có được pUniqueName = 6918800d-353b-49e5-8d24-ad2f398d4c1 Ta dùng pUniqueName để tìm guidMasterKey trong folder AppData\Roaming\Microsoft\Crypto\RSA\<SID> của user ta có được file bccd3883a0e4079440c3e01f1dabc363_0e81a3b6-c958-4a7e-ae5f-778aef9f5ac6 chứa pUniqueName và cũng tìm được RSA public key sẽ được lưu trữ trong %Username%\AppData\Roaming\Microsoft\SystemCertificates\Certificates\F6E2973AB94A8DDBDDEF5A95CD8531F54E41BA96 chứa pUniqueName Để giải mã lấy MasterKey được encryption trong E:\EvanCarter_DISK.E01_NONAME [NTFS]\[root]\Users\user\AppData\Roaming\Microsoft\Protect\S-1-5-21-80072447-1058360311-2986813321-1000\fc901760-7d3c-4e67-a987-e80f876d9086 ta cần phải có user's password crack user's password với DPAPImk2john ![image](https://hackmd.io/_uploads/B1-L8z8Ile.png) ![image](https://hackmd.io/_uploads/r1hULG8Ull.png) Ta có được user's password là "user1234" Dùng user's password lấy masterkey ![image](https://hackmd.io/_uploads/SJEoYVULge.png) Có masterkey rồi dùng nó để lấy RSA privatekey Lệnh lấy RSA Privatekey ``` mimikatz # dpapi::capi /in:"E:\EvanCarter_DISK.E01_NONAME [NTFS]\[root]\Users\user\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-80072447-1058360311-2986813321-1000\bccd3883a0e4079440c3e01f1dabc363_0e81a3b6-c958-4a7e-ae5f-778aef9f5ac6" /masterkey:222ee001341a7cefe498cc14e9523777246b31868d1277d239c854ed122cfd9755dcae1bd9bb9ab64dfa7d9278ddb24cc0e337fbfbe7c16f5baa338f82fca93b ``` ![image](https://hackmd.io/_uploads/BJMzY4UIxl.png) tiếp theo trích xuất public key từ SystemCertificate đây là guidMasterKey : {fc901760-7d3c-4e67-a987-e80f876d9086} và pUniqueName dựa theo xác định file trong Certificate ![image](https://hackmd.io/_uploads/BJyTcEULxx.png) Dùng openssl để covert các cert thành pem ``` PS C:\Users\tttho> openssl x509 -inform DER -outform PEM -in D:\CTFchall\mimikatz-master\mimikatz-master\x64\F6E2973AB94A8DDBDDEF5A95CD8531F54E41BA96.der -out D:\CTFchall\htb\public.pem PS C:\Users\tttho> openssl rsa -inform PVK -outform PEM -in D:\CTFchall\mimikatz-master\mimikatz-master\x64\dpapi_exchange_capi_0_6918800d-353b-49e5-8d24-ad2f398d4c12.keyx.rsa.pvk -out D:\CTFchall\htb\private.pem writing RSA key PS C:\Users\tttho> openssl pkcs12 -in D:\CTFchall\htb\public.pem -inkey D:\CTFchall\htb\private.pem -password pass:user1234 -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx ``` Để hiểu rõ hơn về bản chất Symmetric encryption tôi sẽ giải mã manual sau đó sẽ giải mã tự động sau ### Decryption manual có RSA private key tôi sẽ decyption FEK blob trong file encrypted_FEK.bin ``` PS C:\Users\tttho> openssl pkeyutl -decrypt -inkey D:\CTFchall\htb\private.pem -in D:\CTFchall\reserved_encrypted_FEK.bin -out D:\CTFchall\keyAES.bin ``` ![image](https://hackmd.io/_uploads/HyUWErIUee.png) 16 bytes đầu là pData blob chứa metadata của key #### Decrypt data enc EFS ![image](https://hackmd.io/_uploads/B1SqBBUUgg.png) có vẻ bị thiếu gì đó tôi đã cố gắn dùng Active Editor Disk để khôi phục cluster của file mã hóa đầy đủ nhưng không được ### Decryption automation Sau khi có file cert.pfx ta import nó vào user của mình để thực hiện giải mã dùng certutil ``` PS C:\Users\tttho> certutil -user -p user1234 -importpfx cert.pfx The object or property already exists. 0x80092005 (-2146885627 CRYPT_E_EXISTS) Certificate "user" already in store. CertUtil: -importPFX command completed successfully. ``` do tôi đã import trước đó bây giờ bạn vào properties -> advance ![image](https://hackmd.io/_uploads/ByX1vBUIle.png) Bỏ chọn Encrypt contents to secure data ![image](https://hackmd.io/_uploads/SJQfDSIIxg.png)