Hétfőn furcsa levél jelent meg az egyetemi emailcímemen. Látszólag a Nemzeti Egészségbiztositási Alapkezelőtől, aláírás vagy bármi más nélkül. Az üzenet feladója a igazolt.jelentkezo. A levél gond nélkül átment az egyetem víruskeresőjén, még a plecsnit is megkapta, hogy biztonságos. Ráadásul mintha az előző hetekben kaptunk volna valami levelet, hogy kedvezményes egészségbiztosítást igényelhetnek az egyetemi dolgozók, szóval megnyitás előtt nem volt gyanús.
Utána már furcsa volt, hogy nincs megszólítás, kezdtem sejteni, hogy ez valami kártékony dolog. A levél fejlécét letöltve semmi gyanúsat nem láttam. Nem volt benne olyan, hogy a válaszcím máshova szól, mint a feladó. Sajnos, mióta az egyetem átállt Office365-re, a feladó eredeti IP címe nem elérhető, ezért azt nem láttam.
Egy attachment volt benne: megerősítés.tar. Ezt nem értettem, miért küldenének egy tar állományt? A legtöbb felhasználó Windows-t használ, a tar nem mond nekik semmit. Letöltöttem.
A második megdöbbentő dolog az volt, hogy ez nem tar, hanem egy tar kiterjesztésű Rar. Ezt még inkább nem értettem. A Rar nem alapértelmezett tömörítő. Ha azt akarnám, hogy minél több embert fertőzzön meg, Zip-et használnék. Bár igaz, akkor a vírusirtók is könnyebben azonosítják.
A harmadik furcsaság, hogy a fejlécben van egy utalás egy pdf állományra. De ezt a pdf-t nem lehet kicsomagolni!
Ha megnézzük az unrar l paranccsal, akkor egy megerosites.cmd-t látunk csak. A csomagolás dátuma két órával előzte meg az email érkezését, szóval nem vesztegették az idejüket.
Kicsomagoltam a tar-nak álcázott rar állományt, és megnéztem a megerosites.cmd-t, de azt totál nem értettem. Olyan érzés lehetett, mint amikor Dr. Dyson megkapta a Terminator központi processzorát. Azt hittem valami shell szkript lesz, de nem az volt. Egy COMCOM állomány volt az első pár byte, ami elképzelni sem tudom, hogy mi lehet. Két napig túrtam a netet, hátha megtudom, mi lehet ez, de eredménytelenül. A rejtélyes fejlécet két windowsos parancs követi: cls és set, majd obfuszkált kód. A legvégén van egy digitális aláírás.
Arra gondoltam, a kód írója biztos egy létező obfuszkátort használt, ezért elkezdtem keresni ilyen programokat. Gyorsan találtam is egyet, ami elég hasonló kódot generált a képek alapján. Ekkor kezdtem megérteni, mi is történik. Létrehoznak egy változót, aminek a neve nem ASCII karakterekből áll, mert hát megtehetik. Ebbe belepakolnak egy látszólag random sztringet. A Windowsban van egy olyan lehetőség, hogy ennek a sztringnek egy részét kiszedjék:
%valtozo:~start,hossz%
Az obfuszkált kódban a hossz minden esetben 1 volt. Tehát a forráskód további része karakterenként épül fel az első változó alapján. Oké, akkor írok egy deobfuszkátort ez alapján. Gondoltam én naiv! Azért kíváncsi voltam, hányféle karakterből áll a forráskód, ezért a következő egysorossal szétbontottam:
sed 's/%%/%\n%/g' megerosites.cmd | less
Mivel minden változó után egy következő változó kezdődik, ezért a %% mentén beszúrtam egy újsor karaktert. Az eredmény elkeserítő volt. Az első változó neve 0xC4 0xC5 0xC7 0xC9 (hex kódokkal), de utána kerültek elő más változónevek is. Ez a deobfuszkálás bonyolultabb, mint gondoltam! Nézzük meg, más már megoldotta-e a feladatot.
Nincs valami sok a kínálatban, azok is elég régiek. Végül ezt válaszottam, mert Python, ezért fut Linux alatt is, és csak két éves. Nos, az eredmény, amit adott nem tökéletes.
De már látszanak olyasmik, hogy CLEAN.GIF. A qQpzQ\EJSR pedig többször is előfordul, mintha valami elérési út lenne. A dolgot tovább bonyolítja, hogy bizonyos változóneveket később felüldefiniál a szkript, hogy még jobban megnehezítse az ember dolgát.
Egy kiberbiztonsággal foglalkozó Discord szerveren kértem segítséget, hátha van valami más megoldás, ami elkerülte a figyelmemet. Egyetlen ember válaszolt, hogy használjam az IDA Pro-t. Köszi, mintha nem írtam volna le, hogy Windows batch fájlról van szó, nem binárisról.
Úgy tűnik, nem úszom meg, hogy saját deobfuszkálót írjak. A gond az ilyen munkával az, hogy véget nem érő feladat. Csak elkezdeni lehet, befelyezni nem. Ennek ellenére megpróbálok írni egyet, ami nem lesz jó minden esetre, de erre a speciális esetre talán működni fog.