Prvotním vektorem přístupu byla zranitelnost SQL injection ve veřejně přístupné Java aplikaci běžící na Apache Tomcat . Funkce automatického doplňování vyhledávání v aplikaci nedostatečně ověřovala uživatelský vstup, což útočníkům umožnilo injektovat SQL příkazy přes JDBC připojení k Oracle databázi . Jak uvedli výzkumníci z Huntress, nešlo o novou třídu zranitelností – SQL injection útoky existují již desítky let a jsou obvykle výsledkem nesprávného zpracování uživatelských vstupů směřujících k SQL serveru . Selhání aplikace při čištění jednoduchého vyhledávacího pole stačilo k zahájení celého řetězce kompromitace.
Místo nasazení tradičních malwarových souborů na kompromitovaném serveru použili útočníci vestavěný Java Virtual Machine (JVM) v Oracle a příkaz CREATE JAVA SOURCE k zkompilování a uložení celého post-exploitačního nástroje jako Java schéma objektů uvnitř Oracle databáze . Tento přístup učinil nástroj neviditelným pro standardní obrany na úrovni OS, protože nástroje EDR a antiviry se zaměřují na procesy, binární soubory a soubory v operačním systému – obecně nekontrolují Java třídy a PL/SQL obálky uložené v Oracle .
Sada nástrojů Khunt zahrnovala tyto komponenty, každá uložená jako databázový objekt:
| Komponenta | Funkce |
|---|---|
| KhuntCmd | Načte cmd.exe a spouští libovolné OS příkazy tím, že je vloží do SQL příkazů odesílaných do databáze |
| KhuntHash | Extrahuje uživatelská jména a hashe hesel z interních uživatelských tabulek Oracle a ukládá je do souboru |
| KhuntFS / KhuntFS2 | Průzkumníci souborů pro výpis, čtení, vyhledávání a kontrolu velikosti souborů na kompromitovaném systému |
| KhuntT | Jednoduchý "ping" nástroj k potvrzení, že je sada nástrojů nainstalována a dosažitelná před dalším postupem |
| KhuntUnzip | Nástroj pro rozbalování ZIP souborů |
| khunt_ PL/SQL wrappery* | PL/SQL obálkové procedury používané k volání podkladových Java metod |
Útočníci se nezastavili u přístupu na úrovni databáze. Použili sadu nástrojů Khunt k přesunu z databázové vrstvy na podkladový Windows operační systém ve vícestupňovém procesu:
cmd.exe /c whoami, což potvrdilo, že běží s oprávněními SYSTEM na Windows serveru, čímž získali vzdálené spouštění kódu (RCE) z databáze na OS .reg.exe a zkopírovali registry hives SECURITY a SYSTEM, které uložili jako khuntSECURITY.hiv a khuntSYSTEM.hiv do F:\Oracle\ .tasklist /svc a výstup uložili jako khunttasks.txt .esentutl.exe zkopírovali SAM a druhou kopii SECURITY hive, uložené jako khuntSAM.hiv a khunt_SECURITY.hiv .Exfiltrované registry hives bylo možné použít offline k extrahování a dekódování hashů hesel pro všechny místní účty v systému .
Vyšetřování Huntress odhalilo několik kritických slepých míst, která umožnila tomuto útoku uspět a vyhnout se detekci:
Na základě tohoto útoku doporučila společnost Huntress následující opatření :
Tento útok slouží jako ostrá připomínka, že databázové enginy s vestavěnými programovacími prostředími (jako je Oracle JVM) se mohou stát nenápadnými útočnými platformami, když jsou kombinovány byť jen s jediným neověřeným vstupním polem. Bezpečnostní týmy musí rozšířit své monitorování za hranice operačního systému na vrstvu databázových objektů.