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


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

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

** Je lepší nabušený Photoshop, nebo program s jedním tlačítkem? ** Photolemur si myslí to druhé ** Tento fotoeditor neumí skoro nic, a přitom (skoro) všechno

Jakub Čížek | 22

Severní magnetický pól „odcestoval“ z Kanady na Sibiř. Vědci musí upravit model

Severní magnetický pól „odcestoval“ z Kanady na Sibiř. Vědci musí upravit model

** Zemské magnetické pole se chová nepředvídatelně ** Severní magnetický pól se posouvá z Kanady směrem na Sibiř ** Vědci musí rychle aktualizovat Světový magnetický model

Karel Kilián | 30

Čína si věří: „Naše hypersonické střely potopí americké letadlové lodě“

Čína si věří: „Naše hypersonické střely potopí americké letadlové lodě“

** Číně roste sebevědomí ** Nedávno uvedla, že její nové hypersonické střely mohou potopit velké letadlové lodě US Navy ** Podle komentátorů Čína nejspíše takové střely má, i když není jasné kolik

Stanislav Mihulka | 61

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

** Přečerpávací vodní elektrárna Dlouhé stráně je obdivuhodné technické dílo ** Stejná turbína vyrábí elektřinu i tlačí vodu zpět do horního jezera ** Strojovna elektrárny je zabudována v podzemí

David Polesný | 37

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

** Máme eObčanku, máme čtečku, vyzkoušeli jsme přihlášení na weby úřadů. ** Objevily se drobné problémy, podařilo se nám je vyřešit. ** Používání eObčanky pro online identifikaci je velmi pohodlné.

Marek Lutonský | 37