V sekcií "Malware" tohto ročníka súťaže CyberGame sa nachádzala téma "Documents".
Malvérová analýza - aby hráči získali vlajku, zisťujú, ako funguje škodlivý kód a hľadajú ďalšie spojitosti.
1.1 Categorization
Jeden z našich klientov zistil škodlivú aktivitu a podal podozrivý kód na analýzu. Tento kód, ktorý bol stiahnutý ako nástroj na kategorizáciu dokumentov v systéme.
Dostali ste za úlohu analyzovať tento súbor. Aké informácie z neho môžete zistiť?
Stiahol som si prílohu, súbor categorization.jl
import Pkg
Pkg.add("Nettle")
Pkg.add("HTTP")
using Sockets
using Nettle
using HTTP
encryption_key = hex2bytes("be59ee4cdd224bbc9b20d4f4cb958788a97595690c6338d0a736a3e287d64af5")
iv = hex2bytes("be59ee4cdd224bbc9b20d4f4cb958788")
cipherbytes = hex2bytes("5ea0928814f6a4aaad9aa4a8bd4c163f7d921146a65ff0653796860a0ab01de1c4a851c3a1361a98d71ba7da87e240b540a75e2986a60c9e88af8f3981a6a16179a7c440c1b44fe681c2667527bfefb8b86f840f68077d0158a379faff94b657e0f4d273e0fc3f9c668627e4203a50bf50b91de46cc872a169cd6cd24005afdc0cb3599584c621808c7d00211f49575cf9b20870b0578bcb6a7c2701ca9e6fef6baf07ed822e2cdde7774704e57fba30a2738a9e7679d171f26f115ce246c7e046e736cf21b91225c88ebfea5360e926f95b6c07172c861319ccbccf72a0e7835ff07e9fed0bf9cda538d60bc22391e615ace75c20923b75f5a546d488c9ad0b6e7386be372f526c71f51602dcd0bbfb05319a8f4a04584f7439ada6cbccb79ad51ee3df1e270c309ee96d83db7a91ffc6f524f04c68fa52d1829b44f6d3b9da003a52a3f2fb66d849c656265aa4f23ed6f6e99e8b8d8c41a0d4954cb1099c856d62679663f268ebd2c87bd2075097c91c435a775af079ef718083c9fa364614252f1baa2189899c94921be2e6c7222a52d8aafd13fbf460b8aec709c994f4f331388d1e0a12ee16399e7fe30ad45cdaf366baa641995b4a1b9d60791a493bafc5fc2c7ae7bf432c26d5169103adb4f407f1f8e2247692059b63415d8a0ace8dfc4a0b65424b329f153aa22bd18d754cd6d6d2997bd0365acaf468786154c7fa69772ceaad579e0afd53fd9ca74919b07357540921b5bd8b844ea5d543dee562c7a18ed2f599622d97b50eb8e3791f478288fcdd55a63b97027d3e95f60c5ad28661ee1cc755dfe7e33bac8c0ece22a52348eb8d3fae20de51933145cd8ea80ec2f457afbbcfb1726803a7603fbca1bb410c745bf8e8068cf6f8af01940c598106f2bb622189c8b3f4dbe37dfca8055a3489683bdf7c864a86f88fe432fe737eade87b394878c7e5be129efc2f634b789fb4854b1deaa7322c715d515d454d199f38582ae0e804c28a85786d3e5944ca0433d9b2731947914095a45940adb6f1b51a1e0c69205ff5cd290fc8b7415b7e6c8543f3648836f14f7ab6e5aeacd458f8fc8d3c6d3360149bead89dd414502ebb9dd4f2530d3c866e08fba31865d2538dce439a78d964cee4c35df13a222e88cdee5569b7a329bb21d97e5249b842ec7a83768037aadca5b571bb9fc1114937473db557a83df6ca5ff6ed7ebf8af274b96ffa2bc2a79d95f512d824f1ccb809a5c5cba2085c6a62a847ca989ee9544ac8d961c0acd9cc28d3d4b67d956fd121533cc4b8275297aa1dc63197c420f09950ae7a56eb0967634018ce9f439ff99b02b961afe2298a801ddce3b8ce7db862d0c623302b690c86cfac74e1e2d4f523da8ebf816901d74222f4fe1696ae7abeed2661a4db1fd903e3780e1e0503b18a")
decipherbytes = String(decrypt("AES256", :CBC, iv, encryption_key, cipherbytes))
include_string(Main, decipherbytes)
Ako vidieť, obsahuje 3 binárne reťazce zakódované pre čitateľnosť v HEX sústave a príkaz pre dešifrovanie najdlhšieho z nich cez algoritmus AES256. Pre dešifrovanie je potrebný kľúč {encryption key} a inicializačný vektor {iv} zabezpečujúci jedinečnosť, všetko teda máme.
Dešifrovaný reťazec príkazom include_string pribalí a teda pravdepodobne spustí.
Po zadaní reťazcov do
CyberChef máme výstup v tvare kódu, hneď na začiatku je vlajka.
flag = "SK-CERT{3ncryp73d_jul14}"
response = HTTP.get("https://api.ipify.org/")
dat = String(response.body)
if occursin("198.18.2.2", dat)
s = UInt8[
0x97, 0x8c, 0x8d, 0x8e, 0xc9, 0xcb, 0xca, 0x93,
...