Inhoudsopgave
- Introductie
- Belangrijkste doelen.
- Getroffen sectoren.
- Geografische focus.
- Infectieketen.
- Eerste bevindingen
- Kijken naar het afleidingsdocument
- Technische Analyse
- Fase 1 – Kwaadaardig LNK-script
- Fase 2 – Pseudo-polyglot-truc: alles in één.
- Fase 3 – Laatste lading: LOTUSHARVEST
- Infrastructuur en Attributie.
- Conclusie
- Seqrite Bescherming.
- IOCs
- MITRE ATT&CK.
- auteurs
Introductie
De SEQRITE Labs APT-Team volgt wereldwijd bedreigingen en heeft onlangs een campagne ontdekt die zich richt op Vietnamese IT-afdelingen en HR-recruiteerders met behulp van valse cv's in pseudo-polyglotte documenten. Andere onderzoekers hebben dezelfde activiteit ook gezien. We hebben de campagne een naam gegeven “Operatie Hanoi Dief” Vanwege de uiteindelijke payload en de stealer-gerichte mogelijkheden, en de geografische locatie in het cv, namelijk rond Hanoi, de hoofdstad van Vietnam. De aanvaller gebruikt voornamelijk een bestandstype dat we een pseudo-polyglotte payload noemen om de kwaadaardige bedoelingen te verbergen.
In deze blog leggen we de volledige infectieketen uit, beginnend bij het gedrag van de campagne en de technische analyse van deze meerfasencampagne. In de eerste fase zien we een ZIP-bestand dat als bijlage bij een kwaadaardige spearphishing-e-mail wordt geleverd. Het ZIP-bestand bevat twee bestanden: een document dat dient als lokaas en de payload voor de tweede fase, en een LNK-bestand dat de eerste reactie activeert. Later bekijken we de payload voor de laatste fase, een C++ DLL-implantaat dat we LOTUSHARVEST noemen en dat wordt uitgevoerd via DLL-sideloading op de machine van het doelwit. Tot slot bespreken we de infrastructuur en andere details met betrekking tot de campagne.
Belangrijkste doelstellingen
Getroffen sectoren
- Informatie Technologie
- Werving & HR-bureaus
Geografische focus
- Vietnam
Infectieketen

Eerste bevindingen
Op 3 november 2025 ontdekte ons team een kwaadaardig spear-phishing ZIP-bestand met de naam Le-Xuan-Son_CV.zip, dat zowel in onze eigen telemetriegegevens als in de bekende openbare malwaredatabase van VirusTotal opdook . Het ZIP-archief bevat twee bestanden.

Het eerste bestand is een LNK-bestand met de naam CV.pdf.lnk. Het tweede bestand is een pseudo-polyglot payload genaamd offsec-certified-professional.png, dat dient als lokaas en tevens als container voor de .bat(batch) script payload. Laten we eerst eens kijken naar de decoy-lure.
Kijken naar het afleidingsdocument
Bij het openen van de PDF met een standaard PDF-parser of documentviewer zien we dat deze een cv bevat van een persoon genaamd " Le Xuan Son ".

Bij het bekijken van de inhoud van het lokkertje, dat naar onze mening op het moment van ons onderzoek bedoeld is voor campagnedoeleinden, lijkt het erop dat de persoon solliciteert naar een functie als softwareontwikkelaar. De naam van dit bestand, dat we eerder zagen, is offsec-certified-professional, een naam die valt onder het domein informatiebeveiliging. Dit wekt zorgen met betrekking tot de victimologie, aangezien het cv in de postcode van een softwareontwikkelaar is.
Zoals gezegd, om het vertrouwen van het slachtoffer te winnen, geloofwaardigheid op te bouwen en de social engineering-doelen te versterken, voegde de dader ook een GitHub-URL toe van een account dat in 2021 was aangemaakt. Op het cv staat dat de sollicitant woonachtig is in Hanoi, Vietnam.

Toen we het GitHub-profiel in het cv onderzochten, zagen we dat er geen updates of activiteit op het account plaatsvond. Dit wijst erop dat de kans groot is dat het specifiek is opgezet voor deze phishingcampagne.
In het volgende gedeelte onderzoeken we hoe het LNK-bestand een meertalige payload uitvoert en hoe het resulterende schadelijke DLL-bestand werkt.
Technische Analyse
We zullen onze analyse in drie verschillende secties verdelen. Ten eerste onderzoeken we het schadelijke snelkoppelingsbestand (.LNK). Ten tweede analyseren we de tweede fase, ook wel bekend als de pseudo-polyglot, en hoe de schadelijke opdrachtregel in het snelkoppelingsbestand (.LNK) een unieke manier gebruikt om de pseudo-polyglot uit te voeren. Ten derde, en tot slot, richten we ons op de DLL-implantaat LOTUSHARVEST. In de andere sectie richten we ons op de kleinste details van de campagne, zoals infrastructuur en nog veel meer.
Fase 1 – Kwaadaardig LNK-script
Bij het uitpakken van het ZIP-bestand wordt als eerste het LNK-bestand uitgevoerd. Dit bestand is verantwoordelijk voor de uitvoering van de pseudo-polyglot payload van de tweede stager.

Toen we naar de LNK-details keken, vonden we een interessante parameter onder de opdrachtregelargumenten, namelijk het gebruik van ftp.exe om het pseudo-polyglot bestand uit te voeren, met een vlag die bekend staat als -s. Bij uitvoering van het LNK-bestand wordt het cv op het scherm weergegeven, terwijl aan de andere kant het batch-script, dat we in het volgende deel zullen tegenkomen, wordt uitgevoerd met behulp van de LOLbin ftp.exe.
Nou, om dit LOLBIN-misbruik te noemen, zou geen rechttoe rechtaan TTP-gericht gedrag zijn. We zullen dit in de volgende sectie uitleggen.
Fase 2 – Pseudo-polyglot-truc: alles in één.

Aanvankelijk werd het bestandstype, waarvan gezegd wordt dat het een platte-tekstbestand is, door meerdere bestandsparsers als één bestand geparseerd en als één bestand beschouwd, terwijl PDF-bestandsparsers het labelen als een PDF-bestand, dat vervolgens wordt verwerkt en gegenereerd. Om verwarring te voorkomen, hebben we dit daarom in het algemeen afgeleid met behulp van een hex-editor.

Toen we de hex-editor bekeken, ontdekten we dat deze een reeks schadelijke scripts bevatte die werden uitgevoerd voordat de PDF Magic-headers aanwezig waren. Daarom hebben we het script verwijderd.


Nu volgt een enigszins interessant, maar eenvoudig onderdeel dat een paar jaar geleden door beveiligingsonderzoekers werd ontdekt en in de praktijk werd misbruikt. Hoewel ftp.exe wordt gebruikt om verbinding te maken met een FTP-server en commando's uit te voeren zoals downloaden of gegevens exfiltreren, zagen we in deze campagne dat het FTP-programma commando's op een lokale machine uitvoerde die het uitroepteken (!) bevatten. Het ftp.exe-programma voerde de bovengenoemde commando's of scripts dus uit op de doelmachine.
Als we het script nader bekijken, zien we dat het in eerste instantie misbruik maakt van een LOLBIN genaamd DeviceCredentialDeployment.exe, die in feite wordt gebruikt om het cmd.exe-bestand te verbergen. Verder zoeken de commando's van het script naar het certutil.exe-bestand en hernoemen het vervolgens naar lala.exe. Daarna hernoemt het batchscript het bestand offsec-certified-professional.png naar CV-Nguyen-Van-A.pdf en opent vervolgens Verkenner om de nep-pdf aan het slachtoffer te tonen.

Vervolgens zoekt het script in het pseudo-polyglotbestand naar een base64-gecodeerde datablob die de payload bevat. Het script extraheert deze gecodeerde data, decodeert deze en maakt een DLL-bestand aan met de naam MsCtfMonitor.dll. Dit bestand wordt geplaatst in de map C:\ProgramData , die we aanduiden als LOTUSHARVEST-implantaat.

Het script kopieert ook het originele bestand ctfmon.exe uit de map System32 naar dezelfde locatie als het DLL-bestand en voert het vervolgens uit. Zoals we zagen, heet de gedecodeerde DLL MsCtfMonitor.dll, een bibliotheekbestand dat geïmporteerd is door ctfmon.exe binair, volgens de DLL-zoekopdracht controleert Windows eerst dezelfde map als het uitvoerbare bestand en laadt de DLL daarvandaan, waardoor er sprake is van DLL-sideloading.
In het volgende gedeelte onderzoeken we de werking van het schadelijke DLL-implantaat LOTUSHARVEST, de laatste payload van de campagne.
Fase 3 – Laatste lading: LOTUSHARVEST

We hebben dit eerst bevestigd met behulp van bestandsanalysetools en zoals gebruikelijk blijkt het een 64-bits PE-binary te zijn. Na analyse van de DLL ontdekten we dat de payload fungeert als een informatiedief. In het volgende deel van deze blog zullen we de functionaliteit ervan in detail bespreken.
![]()
Voordat we ingaan op de kernfunctionaliteiten en kenmerken van dit implantaat, hebben we ook een interessant PDB-pad gevonden, waarbij de TA dit labelt als DEV-LOADER. Wij volgen dit echter als LOTUSHARVESTER.
Anti-analyse controles

Het implantaat maakte gebruik van enkele anti-analysemethoden die we ontdekten. Zo controleert het of het programma in een virtuele omgeving draait en als het die situatie detecteert, forceert het een crash. Hieronder staan nog veel meer methoden.
IsProcessorFeaturePresent : Deze functie controleert op een specifieke CPU-functie en activeert, indien gevonden, onmiddellijk een snelle beëindiging als anti-analysemaatregel om uitvoering op moderne CPU's, virtuele machines of beveiligde omgevingen te voorkomen.
IsDebuggerPresent : Een veelgebruikte techniek die controleert of er een debugger in gebruikersmodus is aangekoppeld. Als er een debugger wordt gedetecteerd, crasht het programma.
Nep-uitzonderingen : Het programma simuleert een crash door een nep-uitzondering en een nep-CPU-status te creëren, de locatie waar de code "doet alsof" deze draait te wijzigen (RIP/RSP) en deze vervolgens door te sturen naar UnhandledExceptionFilter(). Dit misleidt debuggers, verstoort de aanroepstack en verbergt wat het programma werkelijk doet.
Laten we nu verdergaan met het onderdeel waarbij de implantatie zich richt op het verzamelen van browsergebaseerde inloggegevens.
Browsergeschiedenis en opgeslagen inloggegevens verzamelen

We zagen dat de andere export, DoMsCtfMonitor, schadelijke code bevat die bepaalde functies uitvoert.

Bij het onderzoeken van de kwaadaardige functie identificeerden we twee belangrijke routines: één gericht op het verzamelen van inloggegevens en een andere verantwoordelijk voor het exfiltreren van de verzamelde gegevens. Omdat deze DLL-implantatie primair fungeert als een informatiedief, richt deze zich vooral op het extraheren van gevoelige browsergerelateerde informatie, zoals we in deze sectie zullen aantonen.



Zoals we kunnen zien richt het implantaat zich op browsers als Google Chrome en Microsoft Edge. In eerste instantie opent en leest het de inhoud van de bestanden. Zodra deze zijn verzameld, koppelt het implantaat de computernaam en gebruikersnaam van het slachtoffer. Deze zijn verkregen via functies als GetComputerNameA en GetUserNameA. Vervolgens start het met het exfiltreren van de gegevens, waardoor een unieke vermelding wordt gecreëerd voor de bedreigingsactor.

In de bovenstaande codefragmenten zien we dat de malware de SQLite-geschiedenisdatabases van de browsers opent , een query uitvoert om de 20 meest recent bezochte URL's te extraheren en de resultaten formatteert als een JSON-array met de URL, paginatitel, aantal bezoeken en tijdstip van het laatste bezoek.

Vervolgens opent het de Login Data -database, leest maximaal vijf opgeslagen inloggegevens en probeert elk wachtwoord te decoderen met behulp van de klassieke CryptUnprotectData API.
Gegevens exfiltratie

In de volgende functie zagen we dat het implantaat gegevens exfiltreert met behulp van de Windows WinINet API. Het opent een HTTP-sessie en maakt verbinding met de door de aanvaller beheerde server eol4hkm8mfoeevs.m.pipedream.net via poort 443. Nadat de verbinding tot stand is gebracht, verzendt het een POST-verzoek naar het /service-eindpunt en verstuurt het de gestolen browserinformatie als een JSON-payload.
In het volgende deel gaan we dieper in op de infrastructurele details die verband houden met de campagne.
Infrastructuur en attributie
Tijdens de analyse zagen we dat de payload communiceert met meerdere extern gehoste eindpunten. Een van de geïdentificeerde domeinen was uuhlswlx[.]requestrepo[.]com, een willekeurig gegenereerd subdomein. Het andere domein dat we zagen, eol4hkm8mfoeevs[.]m[.]pipedream[.]net, is eveneens een willekeurig gegenereerd subdomein dat voornamelijk werd gebruikt voor het exfiltreren van de verzamelde inloggegevens. Dit vat de infrastructurele details met betrekking tot deze implementatie kort samen.

Met een eenvoudige OSINT-zoekopdracht kwamen we er ook achter dat het contactnummer dat de TA op het nep-cv had gebruikt, +84912345678, toebehoorde aan een goede winkel in de buurt van Hanoi. Het kan echter niet concreet zijn, omdat er op verschillende locaties vaak valse of verkeerde contactnummers worden gebruikt.

Om de details die de toeschrijving bepalen nader te onderzoeken, is concreet bewijs nodig op basis van meerdere parameters, zoals hergebruik van tactieken, technieken en procedures, hergebruik van infrastructuur en slachtofferschap. Zoals we eerder hebben gezien, rond maart 2025, richtte een vermoedelijk door de Chinese staat gesponsorde dreigingsgroep zich op Vietnam met een nep-CV-lokmiddel, waarbij de naam van het lokmiddel CV-Nguyen-Lam-San-Xuat-Noi-Dung-Compress.pdf was. In dezelfde campagne werd ook een lokmiddel met de naam CV-Nguyen-Van-A gebruikt. Deze vergelijkbare nomenclatuur versterkt de zekerheid dat beide campagnes tot dezelfde groep van dreigingsentiteiten behoren.
Een andere veelvoorkomende maar eenvoudige overlap tussen beide campagnes is het gebruik van willekeurige DGA-georiënteerde domeinen om implantaten te leveren. Ook zijn er command-and-control (C2)-servers gebruikt in beide campagnes. Dit geeft de campagnes weinig vertrouwen. De laatste, maar zeker niet de minste, overeenkomst tussen beide campagnes is het gebruik van vergelijkbare victimologie, d.w.z. targetingsoftware en de rekruteringsindustrie.
Wij als onderzoekers zijn van mening dat onze vooringenomenheid niet alleen betrekking moet hebben op overlappingen, maar ook op unieke, niet-vergelijkbare artefacten. In dit geval zien we dat de dreigingsactor het LOTUSHARVEST-implantaat heeft ingezet. Dit implantaat functioneert als een informatiedief. Dit baart zorgen. Hoewel de Chinese staat DLL-Sideloading misbruikt, gebruiken ze bekende implantaten zoals PlugX en nog veel meer. Daarom zou het beschouwen van het begrip 'stealer' een tegenstrijdige en unieke metriek zijn.
Daarom hebben we besloten om deze dreigingsentiteit aan een Chinese oorsprong toe te schrijven, op basis van een gemiddelde mate van zekerheid en door te kijken naar overlappingen en verschillen tussen eerdere dreigingscampagnes die we hebben waargenomen, hun TTP's en nog veel meer. Om de dreiging als door de staat gesponsord te labelen, zijn er echter nog andere belangrijke meetgegevens nodig.
Conclusie
SEQRITE APT-Team identificeert Operation Hanoi Thief als een spear-phishingcampagne gericht op IT- en recruitmentprofessionals in Vietnam. De campagne maakt gebruik van valse cv's en snelkoppelingen om slachtoffers te misleiden en misbruikt vervolgens vertrouwde Windows-tools om verborgen scripts uit te voeren. De uiteindelijke payload, genaamd LOTUSHARVEST, is een DLL-implantaat dat browsergegevens en -geschiedenis steelt en deze vervolgens naar servers van de aanvaller stuurt. De tactieken en overeenkomsten met eerdere activiteiten suggereren een Chinese dader, hoewel staatssteun niet is bevestigd.
Seqrite Bescherming
- Trojan.50086.SL
- Trojan.A18678918
- Toepassing
IOCs
| Hash (SHA-256) | Malwaretype |
| 1beb8fb1b6283dc7fffedcc2f058836d895d92b2fb2c37d982714af648994fed | Zip bestand |
| 77373ee9869b492de0db2462efd5d3eff910b227e53d238fae16ad011826388a | LNK-bestand |
| 693ea9f0837c9e0c0413da6198b6316a6ca6dfd9f4d3db71664d2270a65bcf38 | Pseudo-polyglot payload (PDF, Batch) |
| 48e18db10bf9fa0033affaed849f053bd20c59b32b71855d1cc72f613d0cac4b | DLL-bestand |
MITRE ATT & CK
| Tactiek | Techniek-ID | Techniek naam |
| Eerste toegang | T1566.001 | Spearphishing-bijlage |
| Ontwikkeling van hulpbronnen | T1587.001 | Ontwikkel payloads: Malware |
| Uitvoering | T1204.002 | Uitvoering door gebruiker: kwaadaardig bestand |
| T1218 | Ondertekende binaire proxy-uitvoering | |
| verdediging ontduiking | T1036.007 | Maskeren: misleidende bestandsextensie |
| T1140 | Deobfuscate-bestand | |
| Privilege-escalatie | T1574.002 | DLL-sideloading |
| De reis van mijn leven | T1082 | Ontdekking van systeeminformatie |
| T1012 | Detectie van bestandssystemen voor browsergegevens | |
| Toegang tot inloggegevens | T1555.003 | Inloggegevens van wachtwoordwinkels |
| Collectie | T1005 | Gegevens van lokaal systeem |
| exfiltratie | T1041 | Exfiltratie via C2-kanaal |
| Command and Control | T1071.001 | Webprotocol: HTTPS |
auteurs
- Subhajeet Singha
- Priya Patel



