Det indledende indbrud skete via en SQL-injektionssårbarhed i en offentligt tilgængelig Java-applikation, der kørte på Apache Tomcat . Applikationens autocomplete-søgefunktion validerede ikke brugerinput korrekt, hvilket gjorde det muligt for angriberne at injicere SQL-kommandoer gennem en JDBC-forbindelse til Oracle-databasen . Som Huntress' forskere påpegede, er dette ikke en ny sårbarhedstype – SQL-injektionsangreb har eksisteret i årtier og skyldes typisk, at brugerinput ikke håndteres korrekt, før det sendes til SQL-serveren . Applikationens manglende evne til at rense et simpelt søgefelt var nok til at starte en kæde af kompromittering.
I stedet for at implementere traditionel malware på den kompromitterede server brugte angriberne Oracles indbyggede JVM og CREATE JAVA SOURCE-erklæringen til at kompilere og gemme hele post-eksploiteringsværktøjskassen som Java-schemaobjekter inde i Oracle-databasen . Denne tilgang gjorde værktøjskassen usynlig for standard OS-niveau-forsvar, fordi EDR- og antivirusværktøjer fokuserer på processer, binære filer og filer på operativsystemet – de inspicerer generelt ikke Java-klasser og PL/SQL-indpakninger gemt inde i Oracle .
Khunt-værktøjskassen indeholdt følgende komponenter, hver gemt som et databaseobjekt:
| Komponent | Funktion |
|---|---|
| KhuntCmd | Indlæser cmd.exe og udfører vilkårlige OS-kommandoer ved at indlejre dem i SQL-sætninger sendt til databasen |
| KhuntHash | Udtrækker brugernavne og adgangskodehashes fra Oracles interne brugertabeller og gemmer dem i en fil |
| KhuntFS / KhuntFS2 | Filudforskere til at liste, læse, søge og kontrollere filstørrelser på det kompromitterede system |
| KhuntT | Et simpelt "ping"-værktøj til at bekræfte, at værktøjskassen er installeret og tilgængelig |
| KhuntUnzip | Værktøj til at pakke ZIP-filer ud |
| khunt_ PL/SQL-indpakninger* | PL/SQL-procedureindpakninger, der bruges til at kalde de underliggende Java-metoder |
Angriberne stoppede ikke ved database-niveau-adgang. De brugte khunt-værktøjskassen til at bevæge sig fra databaselaget til det underliggende Windows-operativsystem i en flertrinsproces:
cmd.exe /c whoami, hvilket bekræftede, at de kørte med SYSTEM-rettigheder på Windows-serveren, hvilket etablerede fjernkodekørsel (RCE) fra databasen til operativsystemet .reg.exe og kopiere SECURITY- og SYSTEM-registreringsdatabasenøglerne, som de gemte som khuntSECURITY.hiv og khuntSYSTEM.hiv i F:\Oracle\ .tasklist /svc og gemte output som khunttasks.txt .esentutl.exe til at kopiere SAM- og en ekstra kopi af SECURITY-nøglerne, gemt som khuntSAM.hiv og khunt_SECURITY.hiv .De eksfiltrerede registreringsdatabasenøgler kunne bruges offline til at udtrække og dekode adgangskodehashes for alle lokale konti på systemet .
Huntress' undersøgelse afslørede flere kritiske blinde vinkler, der gjorde dette angreb muligt og svært at opdage:
Baseret på dette angreb anbefalede Huntress følgende foranstaltninger :
Dette angreb er en skarp påmindelse om, at database-motorer med indbyggede programmeringsmiljøer (som Oracles JVM) kan blive snigende angrebsplatforme, når de kombineres med blot ét uvalideret inputfelt. Sikkerhedsteams skal udvide deres overvågning ud over operativsystemet til også at omfatte databaseobjektlaget.