Hacker laat Hermes AI-agent onbeheerd draaien voor post-exploitatie bij het Thaise ministerie van Financiën

Iemand heeft een populaire AI-assistent op een gehuurde server geïnstalleerd, de instelling uitgeschakeld die ervoor zorgt dat deze toestemming vraagt ​​voordat risicovolle opdrachten worden uitgevoerd, en deze heeft gericht aan het Thaise ministerie van Financiën, dat de schatkist en de belastinginning van het land beheert.

De agent werkte vervolgens zelfstandig via het netwerk van het ministerie, controleerde hosts op manieren om root-toegang te verkrijgen, zocht door bestandssystemen en doorzocht een map met stafpersoneelsgegevens die teruggaan tot 2012.

De operator liet de eigen logbestanden van de agent achter op een webserver met de directorylijst ingeschakeld, waar dreigingsinformatiebureau Hunt.io en onderzoeker Bob Diachenko ze vonden, samen met 585 bestanden en 470 MB aan aanvalstools.

De tool is Hermes, een open-source assistent van Nous Research die mensen installeren om hun e-mail te beheren, klusjes uit te voeren en instructies te ontvangen via Telegram of Slack. Het is geen hacktool, en niets hier bevat een fout.

De modus die de operator gebruikte, genaamd YOLO, is een gedocumenteerde functie met een eigen opdrachtregelvlag. Dat is wat deze zaak onderscheidt van de tot nu toe gerapporteerde AI-ondersteunde aanvallen.

Toen Anthropic afgelopen november een Chinese groep onthulde die Claude Code gebruikte voor spionage, moesten de aanvallers het model zover krijgen dat ze meewerkten, en Anthropic verbood hun accounts zodra het merkte. Hermes draait op de eigen machine van de operator. Geen enkele verkoper keek toe en er was geen account om te verbannen.

De telefoniste was al binnen voordat de agent begon. Hunt.io heeft een verborgen webshell teruggevonden die op een webserver van het ministerie was geplaatst, scripts geschreven tegen genoemde interne Hadoop-systemen en gestolen mailboxwachtwoorden die hardgecodeerd waren in een mailtestscript.

Niets in de herstelde bestanden laat zien dat gegevens het netwerk hebben verlaten, en hoe de operator voor het eerst binnenkwam is onbekend. Het Thaise nationale CERT en cyberveiligheidsagentschap werden op 15 juli op de hoogte gebracht; geen van beiden had iets gepubliceerd toen The Hacker News op 24 juli controleerde.

Voor alle anderen is het nuttige detail waar de scripts van de operator voor zijn gebouwd: een Hadoop-databaseservice die standaard elk wachtwoord accepteert.

De mens deed de onderdelen die het kennen van het doelwit vereisen. Het artikel van Hunt.io toont een wachtwoordlijst die is opgebouwd uit de afkortingen van de eigen afdeling van het ministerie in plaats van uit een woordenboek, en shellcode die hardgecodeerde paden naar het intranet van het ministerie draagt.

De agent voerde het repetitieve deel uit: voer een scan uit, las de uitvoer, besliste wat hij vervolgens wilde controleren en voerde nog een scan uit. Uit niets in het teruggevonden materiaal blijkt dat het een nieuwe kwetsbaarheid heeft gevonden of een doelwit heeft gekozen.

Geen van de commando’s was exotisch. LinPEAS, een standaardscript dat op Linux zoekt naar escalatiepaden voor bevoegdheden. Een zoektocht naar bestanden met verhoogde rechten. Een directory-crawl. Een persoon zou dezelfde dingen typen. Wat er veranderde, is dat niemand ze allemaal hoefde goed te keuren.

Hermes biedt deze instelling op drie manieren: een –yolo-vlag bij het opstarten, een /yolo-opdracht halverwege de sessie, of een HERMES_YOLO_MODE=1 omgevingsvariabele. De configuratiegids van het project zegt: “Gebruik dit alleen in vertrouwde, sandbox-omgevingen.”

Eén laag overleeft het: een harde blokkeerlijst die nog steeds opdrachten weigert die de machine waarop de agent draait zouden wissen. Wat de telefoniste uitschakelde was de menselijke controle, niet elke beveiliging.

Wat de agent heeft gedaan

Vijf bestanden met de naam call_00_*.txt zijn de beurten van de agent: het scannen van de kernelkwetsbaarheid tegen een ministeriehost, een tweede LinPEAS-run, een zoektocht naar binaire bestanden met verhoogde toestemming, een lijst met bestandssystemen en een recursieve crawl van de webroot van het Office of the Permanent Secretary.

Die map bevatte Office-documenten, prestatie-evaluaties en personeelsgegevens uit 2012. Uit de logboeken blijkt dat de agent de map leest. Geen van hen laat de bestanden zien die het verlaten.

Het scanscript dat werd overhandigd, was niet standaard. Een aangepaste linpeas.sh controleerde op vier Linux-kernelfouten uit 2026 in drie families: Copy Fail (CVE-2026-31431), Dirty Frag (CVE-2026-43284 en CVE-2026-43500) en DirtyClone (CVE-2026-43503).

Elk overhandigt een lokale gebruikersroot waar de vereisten gelden, wat voor Dirty Frag en DirtyClone CAP_NET_ADMIN betekent. Ze waren allemaal weken oud toen de operator ze in scène zette, en niets teruggevonden noemt een kernelversie van het ministerie of laat zien dat een van de vier draaide.

De eigen SSH-sessie van de operator op de staging-server kwam van 103.97.0(.)57 in Hong Kong. Het wachtwoord van de webinterface van de agent bevat het Chinese woord Leishen, dondergod, en ernaast zit een sleutel voor FOFA, een Chinese dienst voor het zoeken naar activa.

Dezelfde server hostte voorheen een ShadowPad-controller en voert nu een VShel command-and-control-listener uit. Hunt.io beoordeelt met weinig tot gemiddelde zekerheid dat de operator Chinees spreekt of de taal vloeiend spreekt, en noemt geen groep. Het bedrijf en Diachenko blijven de enige openbare bron voor de ministeriespecifieke bevindingen.

De route naar Hadoop

Het grootste deel van de aangepaste code ging naar het Hadoop-cluster van het ministerie, waar het grote hoeveelheden gegevens opslaat en opvraagt. Een script met de naam hive_rce_py2.py maakt verbinding met HiveServer2, de SQL-front-end van dat cluster, op een interne machine op poort 10000, en verzendt een wachtwoord.

Apache’s eigen documentatie zegt dat de standaard authenticatiemodus NONE is, die welk wachtwoord dan ook accepteert zonder het te controleren.

Eenmaal verbonden, installeert het script een kwaadaardige Java-add-on genaamd HiveCmd.jar als een door de gebruiker gedefinieerde functie, waarmee het besturingssysteemopdrachten kan uitvoeren via gewone databasequery’s en de resultaten kan teruglezen. Cloudera waarschuwt dat iedereen die een dergelijke functie kan installeren, willekeurige code kan uitvoeren als het Hive-serviceaccount en gevoelige gegevens kan bereiken.

Ook op de server geënsceneerd: een voorheen ongedocumenteerd Go-implantaat dat de operator Hades noemt, gebouwd voor zowel Windows als Linux in 62 exemplaren. Hunt.io analyseerde er één van elk en vond dezelfde codebase; de overige 60 zijn niet individueel onderzocht.

Hun hardgecodeerde adressen verbinden de staging-server met een tweede host in Hong Kong, hoewel uit geen enkel gevonden artefact blijkt dat Hades een bedieningsmachine bereikt. Afzonderlijke scripts testten standaardreferenties op een interne GlassFish-console, waarbij geen van beide implementaties werd bevestigd, naast exploitcode voor drie oudere fouten in polkit, sudo en IIS 6.0.

Wat te doen

  • Controleer of HiveServer2 actief is met verificatie ingesteld op GEEN, en beperk wie door de gebruiker gedefinieerde functies kan installeren. Op die standaard is het script van de operator geschreven om op te vertrouwen.
  • Waarschuw wanneer een webserverproces een verbinding opent met interne Hadoop-poorten zoals 10000 of 50070. Een webserver die een Hadoop-knooppunt bereikt, is op zichzelf al de moeite van het bekijken waard.
  • Zoek recursief in de webroots naar PHP-bestanden met namen met leidende punten die systeemcaches imiteren. Deze stond op /storage/Counter/nine/.journald-cache.php en verschijnt niet in een normale directorylijst.
  • Patch kernels tegen alle vier bovenstaande 2026-fouten, plus sudo naar 1.9.5p2 of hoger, polkit voor CVE-2021-4034 en eventuele resterende IIS 6.0 WebDAV.

De agent laat zijn eigen spoor achter. Het webpaneel van Hermes retourneert een HermesWebUI-serverheader, en een zoekopdracht op die string leverde ongeveer 5.900 scangebeurtenissen op gedurende een maand, volgens het rapport van Hunt.io van 23 juli, waarbij waarnemingen werden geteld in plaats van afzonderlijke machines.

De betere hook is waar de agent zijn resultaten schrijft: een consistente /hermes-results/ map met voorspelbare bestandsnamen, die dezelfde dag 575 hits opleverde in Hunt.io’s index van blootgestelde mappen, elk een host- en bestandsnaampaar. Geen enkele veiligheidscontrole heeft deze operator blootgesteld. Een directoryvermelding deed dat.

Het eindpunt ziet hoe dan ook dezelfde shell-opdrachten en dezelfde tools. Niets in een gewone opdrachtregel kondigt aan dat er niemand achter het toetsenbord zit.

Thijs Van der Does