Programování | Hacking | 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, Programování, Hacking, NSA, Brno, GitHub, Elektrárna, Heslo, C++, Kód, Java, Jaderná elektrárna, Nástroj, Hacker, Havlíčkův Brod, Mac a Linux, Program


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

37 nejstrašnějších počítačů, které jste kdy viděli

37 nejstrašnějších počítačů, které jste kdy viděli

** Přehled nejhorších počítačů na světě ** Šílené konstrukce a materiály ** Jak to dopadne, když se o počítač nestaráte

Karel Javůrek | 22

Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

** Tipy na klávesnice, myši, routery, tiskárny, sluchátka a další věci k počítačům ** Poradíme, s jakými produkty neuděláte chybu ** Vybíráme jak příslušenství na běžnou práci, tak na hraní her

David Polesný | 22

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 | 93

Nejlepší notebooky do 10 000 korun: Co koupit a čemu se raději vyhnout

Nejlepší notebooky do 10 000 korun: Co koupit a čemu se raději vyhnout

** Do deseti tisíc korun lze dnes koupit slušné notebooky ** V nabídce ale i tak převládají zastaralé a pomalé modely ** Poradíme, jak dobře vybrat i s omezeným rozpočtem

David Polesný | 115

17 užitečných tipů a triků pro Mapy Googlu, které byste měli znát

17 užitečných tipů a triků pro Mapy Googlu, které byste měli znát

** Mapy Googlu mají spoustu funkcí, které jsou často přehlíženy ** Využijte například podrobnější možnosti plánování cest ** Hodit se mohou i tipy na sdílení nebo pohledy do minulosti

Karel Kilián | 25



Aktuální číslo časopisu Computer

Megatest 12 bezdrátových sluchátek

Vyplatí se Apple z bazaru?

Test batohů pro notebooky

Vybíráme nejlepší sportovní hodinky