今年奧義參與了數起與普羅米修斯勒索軟體 (Prometheus Ransomware) 有關的事件調查,內部研究團隊亦針對此勒索軟體進行逆向工程,以便更深入地瞭解該攻擊的行動。研究過程中,我們發現了能夠復原部分被加密檔案的方法,並開發出本篇文章所分享的工具。
於此同時,我們也將內部開發的 Prometheus Decryptor 分享出來,希望能在一定程度上協助更多受害者的檔案恢復,相關的使用方式等內容完整記載於本文中,也歡迎各位分享轉載!
我們為 Windows 作業系統的使用者提供了圖像化使用介面 (Graphical User Interface, GUI),並且 GUI 可支援此解密器的所有功能。若您對使用命令列指令較不熟練,可以直接依照下列步驟來操作 GUI,並將被普羅米修斯所加密的檔案解密還原:
近期崛起的勒索組織 Prometheus(普羅米修斯)在今年六月時因 Unit42 的研究報告而備受關注,在 Unit42 針對組織超過 4 個月的持續觀察中,發現到逾 30 個相關受害者,範圍遍及美國、英國,以及位於亞洲、歐洲、中東與北美等區域的數十個國家。而曾被 Prometheus 組織攻擊的企業,則包含政府、金融、製造、物流、農業、醫療、保險、能源、顧問、法律等許多不同產業。
Prometheus 宣稱自己是隸屬於被認為曾攻擊過台灣電腦公司 Acer 的駭客組織 REvil,然而,從 Prometheus 的攻擊行為與程式碼內容來看,事實上他們與 Thanos 有著更高的相似性。REvil 在今年七月對美國託管軟體公司 Kaseya 發動大規模供應鏈攻擊,使上千家公司遭遇勒索,並要求共逾 7,000 萬美元(約台幣 19 億 7,120 萬元)比特幣贖金。
Thanos 最早在 2020 年時被發現,並因其高達 43 種不同的設定選項,且是首個使用以 RIPlace 為名的規避技術 (Evasion techinique) 的勒索軟體,而使其惡名廣為人知。
RIPlace 在 2019 年時被資安廠商揭露,能夠繞過包含防毒軟體與特定 EDR 解決方案在內,一部分針對勒索軟體的防禦機制,而該新型技術被揭露後,很快地在幾個月內便於野外出現蹤影,並被實際運用在攻擊中。
與許多在勒索軟體即服務 (Ransomware-as-a-Service, RaaS) 的市場中活動的勒索軟體一樣,Thanos 的程式碼也確實擁有和其他勒索軟體重疊的部分,尤其是和 Hakbit 有較高的重複性。然而,Thanos 也具備了客製化的內容,並似乎依然在積極開發中。
普羅米修斯勒索軟體是利用 Tickcount 作為隨機種子 (Random seed) 來生成密鑰的 Salsa20 加密,隨機密鑰的長度為 32 Bytes,且所有的字元都是可顯示的字元。由於利用了系統的 Tickcount 來生成密鑰,我們可以透過暴力破解的方式來猜出密鑰。
make win32 # windows 32 bits
make win64 # windows 64 bits
make linux # linux
make win32GUI # windows 32 bits GUI (built on windows)
make win64GUI # windows 64 bits GUI (build on windows)
Usage of ./bin/prometheus_decrypt:
-b string
Custom search with byte value. (i.e. \xde\xad\xbe\xef -> deadbeef)
Please use ?? to match any byte (i.e. de??beef)
-c Use current tickcount. (only support in Windows)
-e string
Search file extension.
-f int
Found candidate. (default 1)
-i string
Input encrypted file.
-k string
Decrypt with this key.
-m int
Move backward m minutes from the current decrypted seed when guessing the next sample. (default 30)
-o string
Output decrypted file.
-p int
Use n thread. (default 1)
-r Reversed tickcount.
-s string
Custom search with regular expression.
-t int
Start tickcount.
以下範例為針對一個 png 檔案,從 tickcount 0 開始嘗試找出生成密鑰的隨機種子。
./prometheus_decrypt -i ./sample/CyCraft.png.PROM\[prometheushelp@mail.ch\] -o ./output/CyCraft.png -e png -p 16
在這個指令中,有四個引數:
以下範例為針對一個 png 檔案,從 tickcount 100000 開始往回嘗試找出生成密鑰的隨機種子。
./prometheus_decrypt -i ./sample/CyCraft.png.PROM\
[prometheushelp@mail.ch\] -o ./output/CyCraft.png -e png -p 16 -t 100000 -r
相較前一種有兩個額外的引數:
以下範例為針對一個 png 檔案,從當前的 Tickcount 開始嘗試找出生成密鑰的隨機種子,這個功能通常在使用時會是往回數。
./prometheus_decrypt -i ./sample/CyCraft.png.PROM\
[prometheushelp@mail.ch\] -o ./output/CyCraft.png -e png -p 16 -c -r
這邊也有一個額外的引數:
提供一個密鑰來進行加密或解密。
./prometheus_decrypt -i ./sample/CyCraft.png.PROM\
[prometheushelp@mail.ch\] -o ./output/CyCraft.png -k "+@[%T-mZSh+E[^^i{W:dpwnhdL4<b8D4}]]"
此處也有一個額外的引數:
以下範例為針對一個已知字串 “we had another great” 嘗試找出生成密鑰的隨機種子。
./prometheus_decrypt -i ./sample/test.txt.enc -o ./output/test.txt -p 16 -s "we had another great"
新的引數項目:
針對一個 png 檔案,用十六進位標頭來嘗試找出生成密鑰的隨機種子。
./prometheus_decrypt -i ./sample/test.txt.enc -o ./output/test.txt -p 16 -b '89??4e??0d??1a0a??00'
新引數的相關說明:
由於有許多檔案的內容難以用可視字元來呈現,因此,相較於前一項使用已知字串來對應解密是否成功,利用檔案標頭來進行解密流程會更加方便且有效。
針對一個 png 檔案,用十六進位標頭來嘗試找出生成密鑰的隨機種子。
./prometheus_decrypt -i ./sample -o ./output -p 16 -m 1 -f 2
此處有兩項新的引數:
seed-m*60*1000
做為下一輪暴力破解時的起始 Tickcount考慮到有大量的檔案需要進行解密,使用者可以按 Ctrl-c
來跳過目前正在破解中的檔案。
解密時我們會檢查檔案標頭的 Magic number,不過就算是使用錯誤的密鑰,也可能會算出正常的 Magic number,因此,我們的做法是會繼續試下一組密鑰並繼續執行解密流程。然而,當使用者確定已解密的檔案正確無誤後,可以隨時終止這個流程。
% ./prometheus_decrypt -i ./sample/test.txt.enc -o ./output/test.txt -p 16 -s "we had another great"
Decrypt file with seed 615750, key: +@[%T-mZSh+E[^^i{W:dpwnhdL4<b8D4, path: ./output/615750_test.txt 2795306...
我們利用工具來檢查各種檔案類型的標頭的 Magic number,以下是解密器可支援的檔案類型:
image/jpeg
image/png
image/gif
image/webp
image/x-canon-cr2
image/tiff
image/bmp
image/heif
image/vnd.ms-photo
image/vnd.adobe.photoshop
image/vnd.microsoft.icon
image/vnd.dwg
video/mp4
video/x-m4v
video/x-matroska
video/webm
video/quicktime
video/x-msvideo
video/x-ms-wmv
video/mpeg
video/x-flv
video/3gpp
audio/midi
audio/mpeg
audio/m4a
audio/ogg
audio/x-flac
audio/x-wav
audio/amr
audio/aac
application/epub+zip
application/zip
application/x-tar
application/vnd.rar
application/gzip
application/x-bzip2
application/x-7z-compressed
application/x-xz
application/zstd
application/pdf
application/vnd.microsoft.portable-executable
application/x-shockwave-flash
application/rtf
application/x-iso9660-image
application/octet-stream
application/postscript
application/vnd.sqlite3
application/x-nintendo-nes-rom
application/x-google-chrome-extension
application/vnd.ms-cab-compressed
application/vnd.debian.binary-package
application/x-unix-archive
application/x-compress
application/x-lzip
application/x-rpm
application/x-executable
application/dicom
application/msword
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.ms-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.ms-powerpoint
application/vnd.openxmlformats-officedocument.presentationml.presentation
application/font-woff
application/font-woff
application/font-sfnt
application/font-sfnt
application/wasm
application/vnd.android.dex
application/vnd.android.dey
本文的原文版本於 2021 年 7 月中旬發布,我們所開發的解密工具 Prometheus Decryptor 首度對外開源分享,並且於當時受到國內外各方的關注。其中,在一篇由 Catalin Cimpanu 所撰寫的報導中,進一步地指出在 7 月 13 日奧義文章發表的當天,恰巧也是普羅米修斯組織在暗網上有所活動的最後一天,在那之後的半個多月內,該組織沒有新的行動、看似已暫停了其攻擊行為。
由此可推測,奧義開發的 Prometheus Decryptor 或許對普羅米修斯組織造成了一定的影響。
而後,奧義智慧也向國際知名的 No More Ransom 計畫提出加入申請,並正在申請 Associate 合作夥伴的資格。未來,我們將持續關注並針對更多勒索軟體進行深入研究,免於讓更多的企業受勒索攻擊所苦,積極協助客戶提升資安防禦韌性。
Writer: CyCraft
奧義智慧科技(CyCraft Technology)是一家專注於 AI 自動化技術的資安科技公司,成立於2017年。總部設於台灣,在日本和新加坡均設有子公司。為亞太地區的政府機關、警政國防、銀行和高科技製造產業提供專業資安服務。獲得華威國際集團(The CID Group)和淡馬錫控股旗下蘭亭投資(Pavilion Capital)的強力支持,並獲得國際頂尖研究機構 Gartner、IDC、Frost & Sullivan 的多項認可,以及海內外大獎的多次肯定。同時也是多個跨國資安組織和台灣資安社群的成員和合作夥伴,長年致力於資安產業的發展。