Megoldódott a DuQu-rejtély

Nemrég számoltunk be arról, hogy a speciálisan ipari rendszerek elleni támadásra tervezett Stuxnet vírus közeli rokonát, a magyar CrySyS Lab által felfedezett, DuQu-ra keresztelt kártékony szoftvert a nemzetközi együttműködés keretében az orosz Kaspersky is vizsgálja, és az elemzés során találtak egy olyan kódrészletet, amelynél nem tudtak rájönni, hogy milyen nyelven írták. A kódot és a kutatási eredményeket ezért közzétették, abban bízva, hogy az érdeklődő szakemberek között akad olyan, aki ráismer a keresett, esetleg nagyon kevesek által vagy ritkán használt nyelvre, de legalábbis kapnak olyan hasznos ötleteket a programozóktól, amelyek elvezethetik őket a megoldáshoz.

Nos, ez utóbbi történt meg, ugyanis – számol be róla a Kaspersky hivatalos blogjában Igor Sumenkov – a több mint kétszáz szakmai komment, illetve több mint hatvan, programozóktól érkezett levél között találtak néhányat, amelyek megfontolandó megállapításokat tartalmaztak, így egy klasszikusnak nevezhető közösségi erőfeszítés nyomán sikerült megfejteni a „rejtélyt”. Ezek szerint a keresett nyelv a C egyik speciális változata, melyet a Microsoft Visual Studio Compiler 2008 segítségével fordítottak.

Ahogy korábban már megírtuk, az információgyűjtésre tervezett DuQu kódját C++ nyelven írták, melyet a Microsoft Visual C++ 2008 segítségével fordítottak – kivéve a fent említett részletet. A nyelv meghatározása azért fontos a biztonsági szakemberek számára, mivel egy ilyen bűnügyben kiemelten fontos az elkövetők szakmai profiljának a megalkotása is, és ennek fontos eleme, hogy milyen „stílusban” programoznak.

DuQu
Forrás: Kaspersky

Ahogy a megfejtéshez vezető utat vázoló Sumenkov írja, sokan a LISP egyik variánsára gyanakodtak, de az igazi áttörést egy magát Igor Szkocsinszkijnek nevező programozó adta a Reddit hírgyűjtőre írt kommentjében, amikor arra sorakoztatott fel érveket, hogy miért is gondolja úgy, hogy a kódot a Microsoft Visual Studio Compilerrel készítették. A másik kulcsmomentum az volt, hogy két másik érdeklődő e-mailben jelezte a Kasperskynek, hogy szerintük egy egyedi objektumorientált C-változatról van szó (OO C), melynél speciális kiterjesztéseket használtak.

Ezek a megjegyzések vezették el a kutatókat oda, hogy napokig próbálgassák a compilerek és forráskódok kombinációit, míg rá nem találtak egy olyan binárisra, mely stílusában a DuQura emlékeztetett. Ez volt a már említett C-variációval készült kód, melyet a Microsoft termékével fordítottak úgy, hogy a O1, illetve az Ob1 opciókat használták, hogy a kész kód mérete kicsi legyen – a Kaspersky elemzőcsapatának vezetője ezzel kapcsolatban elmondta, hogy habár sok egyéb opció is a rendelkezésükre állt (sebességnövelés, optimális méret, illetve e kettő valamilyen kombinációja) a DuQu írói láthatóan arra törekedtek, hogy a lehető legkisebb méretű legyen a kód.

A kutatók más következtetéseket is levontak a megfejtés után. Úgy vélik, hogy e kódrészlet írói valószínűleg régi vágású („old-school”) programozók: a munkamódszerük és a felhasznált nyelv (C++ helyett a sokoldalúbb C) alapján látható stílus szokatlan a malware-ek között, inkább a tíz évvel ezelőtt írott professzionális kereskedelmi szoftverekre jellemző – a kutatókat egyébként lenyűgözte ez a kódrészletet, ahogy fogalmaztak: „azokhoz a »bárgyú« kártékony programokhoz képest, melyekkel naponta találkozunk, ez olyan, mint egy gyöngyszem”.

Azóta történt

Előzmények