Kimsuky gebruikt de open-source AI-codeeragent opencode om lokdocumenten voor phishing in bulk te produceren, meldt het Zuid-Koreaanse securitybedrijf Genians, dat de naam van de agent letterlijk terugvond in de metadata van de verspreide PDF's.
Interessanter dan de agent is waar die documenten sinds kort over gaan. De lokthema's van de groep draaiden tot nu toe om diplomatie, veiligheid en wetenschap. De dertien onderzochte snelkoppelingen uit 11 tot 19 augustus gaan over uitbetaling van beleidskrediet, verzekeringspremies, rentebetalingen, certificaatverlenging, kaarttransacties en klantdossiers: de mail komt binnen als een verzekeringsnota of een melding over een beleidsfonds.
De campagne zelf mikt op Koreaanse doelwitten en de documenten zijn Koreaanstalig. De fabriek erachter is dat niet: één prompt, een ander onderwerp, en de volgende stapel rolt eruit. Daarmee verschuift de vraag van of jouw organisatie een spionagedoelwit is naar of iemand op je crediteurenadministratie een keurig opgemaakte betaalbevestiging opent.

De agent tekent zelf af in het Creator-veld
In de Creator- en Producer-velden van meerdere lok-PDF's staat letterlijk opencode, terwijl het Author-veld op anonymous bleef staan. Dat zijn waarden die gangbare tekstverwerkers niet produceren, constateert Genians, en ze wijzen op documenten die programmatisch door een agent zijn weggeschreven. opencode is geen hackersgereedschap maar gewone ontwikkelsoftware: een codeeragent voor de terminal met 195.000 sterren op GitHub en 950 bijdragers, die met meer dan 75 modelaanbieders werkt.
Vier documenten uit die familie dragen exact dezelfde aanmaaktijd, 16 augustus 2026 om 03:00:00 UTC, tot op de seconde gelijk en zonder wijzigingsdatum. Dat is niet iemand die stukken achter elkaar opstelt, dat is één script dat een batch wegschrijft.
Het model liet ook sporen na die niemand meer nakeek. In de bodytekst van de verspreide documenten staan negen keer onvervangen tijdelijke waarden. In het stuk over beleidskrediet loopt het werkkapitaal op tot 100 miljoen won per bedrijf tegen 2,0 procent vaste rente, gevolgd door de aantekening dat het om een tijdelijke waarde gaat. Het model wist het bedrag niet, markeerde het als placeholder, en de aanvaller verstuurde het zo.
Twee productielijnen naast elkaar
Naast de opencode-serie vond Genians een tweede familie met HeadlessChrome en Skia/PDF in de metadata. Dat is HTML die door een browser zonder scherm naar PDF is gedrukt, de standaardroute in geautomatiseerde documentpijplijnen. Die reeks is binnen achttien minuten aangemaakt, op 10 augustus tussen 19:27 en 19:46.
De teksten in die reeks lijken voor meer dan 80 procent op elkaar; alleen de onderwerpwoorden zijn vervangen. Waar de ene zin de afgeronde rentebetalingen doorgeeft, geeft de andere de afgeronde incasso's van verzekeringspremies door, met dezelfde zinsbouw en dezelfde slotformule aan de verantwoordelijke medewerker.
Deze tweetrapslijn levert netter werk op. Geen achtergebleven placeholders, wel een tabelopmaak die op een echt bedrijfsdocument lijkt. Twee XLSX-bestanden uit dezelfde buit noemen AzureUser als auteur, de standaardbeheerdersnaam van een Azure-VM, wat erop wijst dat de productie op gehuurde cloudmachines draait. Van de 29 opgehaalde lokdocumenten bleken er na hashvergelijking maar 11 uniek: dezelfde stukken gaan onder willekeurige bestandsnamen opnieuw rond.
Wat er na de klik op de werkplek gebeurt
De aanvalsketen zelf bleef ongewijzigd, en juist dat maakt hem detecteerbaar. Alle dertien snelkoppelingen dragen chrome.exe als pictogram terwijl ze PowerShell starten, met ongeveer 300 spaties vóór de opdracht zodat het eigenschappenvenster van Windows niets prijsgeeft. De opdrachtregels zijn 5.800 tot 9.500 tekens lang. Negen bestanden zijn opgeblazen tot 8,9 MB met willekeurige opvultekens terwijl de echte LNK-structuur in de eerste 16 KB zit, puur om scanners te laten afhaken.
Daarna volgt het vaste patroon. Een verborgen geplande taak, met een naam die net iets afwijkt van legitieme software of eindigt op een betekenisloos getal van minstens tien cijfers. En PowerShell die raw.githubusercontent.com aanroept met een persoonlijk toegangstoken dat niets met het werk te maken heeft. Acht GitHub-accounts dienden als commandokanaal. Nieuw is Pastebin als tweede afleverroute, klaarblijkelijk bedoeld om een takedown van de eerste te overleven.
Eén variant, verstuurd als klantdossier, stopt zichzelf zodra hij analysegereedschap ziet. Hij loopt een lijst processen af met VGAuthService, vmtoolsd, ProcessHacker, x64dbg en Autoruns, kapt ermee als de ingelogde gebruiker Bruno heet, en wist daarna de PowerShell-geschiedenis.
Waar de verschuiving zit
Het is de eerste keer dat Genians een AI-codeeragent bij Kimsuky aantreft; eerder kon het bureau AI-gebruik alleen afleiden uit schrijfstijl en documentstructuur. Op dezelfde commandoservers trof hetzelfde team vorige maand al de lokale taalmodellen Ollama, GPT4All en Msty plus een RAG-database op gestolen documenten aan. Wat toen nog een vermoeden was, staat nu in een metadataveld.
Voor de ontvanger betekent dat het einde van de laatste inhoudelijke aanwijzing. Een vergeten tijdelijke waarde is precies het soort slordigheid dat verdwijnt zodra iemand de uitvoer één keer naleest, en de gepolijste tweede productielijn laat zien dat die kwaliteitsslag al gaande is. Wat overblijft is de keten na de klik: een snelkoppeling uit een archief die PowerShell start, een geplande taak aanmaakt en vervolgens een codeplatform aanroept. Die combinatie komt in normaal kantoorwerk niet voor, en het is de enige laag die niet met een betere prompt is weg te poetsen. Dezelfde grens werd eerder zichtbaar toen onderzoekers bij 19.500 gevolgde medewerkers geen verband vonden tussen de verplichte antiphishingtraining en de kans dat iemand alsnog klikte.
Veelgestelde vragen
Grip op je factuurstroom
Bij een binnenkomende stroom facturen en betaalbevestigingen zit de bescherming in het proces, niet in het oog van de ontvanger. Ik denk mee over hoe die keten hoort te lopen, ontwerp de controlestappen en bouw en automatiseer ze, self-hosted waar dat kan.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
