Hacking | Programování | NSA

NSA zveřejnila program pro hackery Ghidra. Odhalíme s ním heslo do fiktivní jaderné elektrárny

Americký národní bezpečnostní úřad NSA zveřejnil nový nástroj Ghidra k reverzní analýze softwaru. Program doposud interně používali inženýři světoznámé agentury k hledání malwaru a nejspíše i zranitelností, které poté mohli sami využít ve svých kybernetických operacích.

Ghidra rozšířila balík softwaru NSA, který dnes agentura publikuje pod svobodnou licencí, k čemuž má i svůj vlastní účet na GitHubu.

Prolomíme zabezpečení centrálního pultu fiktivní jaderné elektrárny

Pojďme si Ghidru vyzkoušet v praxi na nějakém modelovém příkladu. Dejme tomu, že jsem zlý hacker, kterému donesli na disketě tajemný program JadernaElektrarna.exe. Když jej spustím, program nastartuje v textovém režimu a oznámí, že se jedná o ovládací konzoli jaderné elektrárny Havlíčkův Brod!

Klepněte pro větší obrázek
Program po nás chce heslo ředitele elektrárny

To zní zajímavě, ale má to jednu vadu na kráse. Ovládací program po mně požaduje heslo pana ředitele.

Nic takového pochopitelně po ruce nemám, ale jsem přece schopný hacker – reverzní inženýr, a tak sáhnu po některém z podobných nástrojů, které dokážou analyzovat libovolný program pro daný procesor a pokusí se jej znovu přeložit do čitelného kódu, který budu moci projít, abych pochopil, co se uvnitř programu vlastně děje.

Klepněte pro větší obrázek
Ghidra startuje a dokládá, že i federální NSA miluje dramatická loga svých aplikací

Ghidra pochopitelně není jediná svého druhu, jelikož v ní ale mají prsty schopné mozky z NSA, mohla by fungovat na jedničku. Zároveň se jedná o multiplatformní nástroj napsaný v Javě, takže poběží jak na Windows, tak na macOS a linuxových systémech.

Analyzujeme program pomocí balíku Ghidra

Jdeme na to. Spouštím Ghidru, zakládám nový projekt a otevírám její klíčový nástroj CodeBrowser. Do něj konečně importuji náš tajemný program JadernaElektrarna.exe a nechám Ghidru provést jeho kompletní analýzu.

Klepněte pro větší obrázek
Zakládám nový projekt a vkládám do něj k analýze program JadernaElektrarna.exe

Ovládací aplikace jaderné elektrárny Havlíčkův Brod je napsaná v C++ a CodeBrowser na mě vyplivne tuny v jazyku symbolických adres (slangově assembleru), který nyní mohu instrukci po instrukci pročítat, a pokud objednám mnoho pizzy, za týden se možná doberu kýženého výsledku, jak je to s tím heslem pana ředitele.

Klepněte pro větší obrázek
CodeBrowser, tedy pohled na strojový kód programu a pokus o jeho dekompilaci vpravo

Vyhledám, kde se v programu vyskytuje text „Zadejte heslo reditele“

Abych to urychlil, použiji vestavěný vyhledávač textových řetězců a podívám se, kde se v kódu přesně vyskytuje spojení Zadejte heslo reditele, protože přesně poté, co tuto zprávičku program vypíše do terminálu, z něj bude číst náš vstup, tedy heslo, které poté bude dále zpracovávat. A přesně tato část programu nás zajímá.

Klepněte pro větší obrázek
Potřebuji se v toku programu dostat do okamžiku, kdy mě požádá, abych vyplnil heslo
Klepněte pro větší obrázek
Nechám si vyhledat všechny textové řetězce v programu a podívám se, v jakých částech programu se vyskytuje žádost o heslo.

CodeBrowser nachází blok kódu, který potřebuji a já se podívám na jeho dekompilovanou a mnohem čitelnější podobu v C++. Z tohoto kódu je patrné, že se vstup z klávesnice postupně uloží do proměnné local_38 a _Buf1 a právě tu druhou proměnnou poté program porovnává pomocí funkce memcmp, což je standardní funkce C++ pro porovnání dvou bloků paměti.

Když tyto dva bloky paměti budou shodné, program pokračuje výpisem „Vítejte v jaderné elektrárně“ a pokračuje dál v běhu.

Klepněte pro větší obrázek
Vyhledal jsem v kódu okamžik, kdy se program ptá na heslo a zjistil jsem, že je heslo ředitele součástí kódu a zároveň bez jakéhokoliv šifrování!

Reverzní analýzou jsem našel heslo v kódu

Při pohledu na funkci memcmp je patrné, že vstup z klávesnice se porovnává s pamětí v podobě prostého textu ve znění pred_spanim_ctu_zive.cz, z čehož plyne, že právě tento text bude představovat heslo ředitele elektrárny!

Zkusím jej použít v programu a… A jadernou elektrárnu Havlíčkův Brod právě ovládli nebezpeční hackeři z Brna.

Klepněte pro větší obrázek
Reverzní analýzou jsem se dopátral hesla. Skutečné programy kritické státní informační infrastruktury jsou naštěstí mnohem bezpečnější.

V reálných podmínkách by to tak jednoduché pochopitelně nebylo, neboť éra, kdy bylo takto důležité heslo a dokonce v prostém textu bez jakéhokoliv šifrování součástí zdrojového kódu programu, je už dávno minulostí. Tedy doufejme.

Klepněte pro větší obrázek
Na závěr ještě náhled skutečného kódu C++ našeho primitivního textového programu ovladače fiktivní elektrárny. Můžete jej srovnat s tím, který Ghidra vytvořila dekompilací strojového kódu.

V praxi jsme si ale vyzkoušeli, jak podobné programy pro softwarový reverzní inženýring v principu fungují a proč jsou nedílnou výbavou počítače každého studenta IT, bezpečnostního analytika, inženýrů z antivirových společností a ano, nakonec i zlých hackerů všeho druhu.

Diskuze (18) Další článek: Jak rychle jste schopni nainstalovat Windows 95? Už i v tom se pořádají závody

Témata článku: Software, Windows, Bezpečnost, Hacking, Programování, Brno, NSA, Heslo, Elektrárna, GitHub, C++, Kód, Java, Hacker, Havlíčkův Brod, Program, Mac a Linux, Nástroj, Jaderná elektrárna


Určitě si přečtěte

16 tipů a vychytávek, se kterými dokonale ovládnete komunitní navigaci Waze

16 tipů a vychytávek, se kterými dokonale ovládnete komunitní navigaci Waze

** Waze není jen navigace – je to i sociální síť s dopravními informacemi ** Mobilní aplikace skýtá široké možnosti nastavení ** Vybrali jsme pro vás 16 nejzajímavějších tipů a triků

Karel Kilián | 44

Zranitelnost platebních karet Visa umožňuje zločincům obejít limit při bezkontaktních platbách

Zranitelnost platebních karet Visa umožňuje zločincům obejít limit při bezkontaktních platbách

** Odborníci přišli na to, jak obejít limit bezkontaktních plateb ** Stačí zařízení, ovlivňující komunikaci mezi kartou a terminálem ** Stahují se nad bezkontaktními platbami mračna?

Karel Kilián | 71

Biblická potopa Česka: Jak bychom dopadli, kdyby nás zatopil oceán

Biblická potopa Česka: Jak bychom dopadli, kdyby nás zatopil oceán

** Představte si biblickou potopu ** Nejprve zaniknou Děčín a Břeclav, pak i Brno a Praha ** Hlavním městem se stane Jihlava a zbytky Čechů přežijí na Kvildě

Jakub Čížek | 91

Je ta fotka černobílá, nebo barevná? Náš mozek realitu pouze odhaduje a vymýšlí si

Je ta fotka černobílá, nebo barevná? Náš mozek realitu pouze odhaduje a vymýšlí si

** Klasický počítač bezchybně zpracuje bit po bitu dat ** Mozek si realitu naopak spíše představuje a chybuje ** Teď se tím baví internet u další optické iluze

Jakub Čížek | 31

13 praktických tipů a triků pro Mapy.cz, které možná neznáte

13 praktických tipů a triků pro Mapy.cz, které možná neznáte

** Mapy.cz neslouží jen k zobrazení podkladů a plánování tras ** Nabízejí celou řadu dalších praktických funkcí a možností ** Vybrali jsme třináct tipů a triků, o kterých možná (ne)víte

Karel Kilián | 28



Aktuální číslo časopisu Computer

Velký test Wi-Fi mesh

Nejlepší hodinky pro všechny aktivity

Důležité aplikace na cesty

Jak streamovat video na Twitch