Un logiciel malveillant injecte un code malveillant dans “Failed Request Event Buffering module” afin de surveiller les requêtes HTTP.
Symantec, via Broadcom Software, a observé un nouveau logiciel malveillant qui détourne une fonction des services d’information Internet (IIS) de Microsoft pour déployer une porte dérobée ou “Backdoor” sur des systèmes ciblés.
Le logiciel malveillant, baptisé Frebniis (Backdoor.Frebniis), a été utilisé par un acteur inconnu contre des cibles à Taïwan.
La technique utilisée par Frebniis consiste à injecter un code malveillant dans la mémoire d’un fichier DLL (iisfreb.dll) lié à une fonction IIS utilisée pour dépanner et analyser les demandes de pages web qui échouent.
Cela permet au logiciel malveillant de surveiller furtivement toutes les requêtes HTTP et de reconnaître les requêtes HTTP spécialement formatées envoyées par l’attaquant, permettant ainsi l’exécution de code à distance.
Pour utiliser cette technique, un attaquant doit obtenir l’accès au système Windows exécutant le serveur IIS par un autre moyen.
Dans ce cas particulier, la façon dont cet accès a été obtenue, reste floue.
Failed Request Event Buffering
IIS est un serveur web polyvalent qui s’exécute sur les systèmes Windows pour délivrer les pages ou les fichiers HTML demandés.
Un serveur web IIS accepte les requêtes des ordinateurs clients distants et renvoie la réponse appropriée.
IIS dispose d’une fonction appelée Failed Request Event Buffering (FREB) qui collecte des données et des détails sur les requêtes, tels que l’adresse IP et le port d’origine, les en-têtes HTTP avec les cookies, etc.
Une fonction appelée “Failed Request Tracing” peut être utilisée pour dépanner les requêtes ayant échoué dans le système d’information.
Cette fonction met en mémoire tampon les événements de traçage d’une requête et les envoie sur le disque si la requête répond à la définition d'”échec” définie par l’utilisateur.
Le suivi des requêtes ayant échoué peut, par exemple, être utilisé pour savoir pourquoi les requêtes renvoient un code d’état HTTP spécifique (401 ou 404, etc.), ou pourquoi le traitement d’une requête prend trop de temps, ou ne répond pas.
Stealth Code Hijacking of IIS
Frebniis s’assure que le traçage des demandes infructueuses est activé et accède ensuite à la mémoire du processus w3wp.exe (IIS), obtenant ainsi l’adresse de l’endroit où le code de mise en mémoire tampon des demandes infructueuses (iisfreb.dll) est chargé.
À partir de cette adresse de démarrage du code, Frebniis recherche une fonction “pointer table” pour détourner l’exécution du code.
Les auteurs de Frebniis ont déterminé qu’une fonction “pointer” particulière dans iisfreb.dll est appelée par iiscore.dll chaque fois qu’une requête HTTP est adressée à IIS par un client web.
Cette fonction vérifie normalement si le contenu de la requête HTTP correspond aux règles de traçage des requêtes échouées.

Figure 1. Function pointer table used to hijack execution
Frebniis détourne cette fonction en injectant son propre code malveillant dans la mémoire du processus IIS, puis en remplaçant ce pointeur de fonction par l’adresse de son propre code malveillant.
Ce point de détournement permet à Frebniis de recevoir et d’inspecter furtivement chaque requête HTTP adressée au serveur IIS avant de revenir à la fonction d’origine.

Figure 2. After running its own malicious code, Frebniis jumps back to the original function
Backdoor
Le code malveillant injecté par Frebniis analyse toutes les requêtes HTTP POST reçues pour /logon.aspx ou /default.aspx avec un mot de passe paramétré à “7ux4398 !”. Si le mot de passe correspond, Frebniis déchiffre et exécute une section du code injecté, qui est un code exécutable .NET comprenant les principales fonctionnalités de la porte dérobée ou “Backdoor”.
Aucun exécutable n’est enregistré sur le disque au cours de ce processus, ce qui rend la porte dérobée totalement furtive !
Le code .NET fournit une fonctionnalité de proxy et d’exécution de code à distance contrôlée par un deuxième paramètre HTTP fourni qui est une chaîne codée en Base64.
Pour activer le proxy, la chaîne codée est décodée en Base64 puis décryptée (xor 0x08), le premier caractère représentant une commande proxy suivie des paramètres attendus.
Le proxy est utilisé pour envoyer et recevoir des données codées en Base64 provenant d’autres systèmes informatiques.
Cela permet aux attaquants de communiquer avec des ressources internes qui peuvent normalement être bloquées depuis l’internet via le serveur IIS compromis.
Command | Function name | Parameter | Description |
---|---|---|---|
1 | CreateConnect | Host:Port | Connect to a remote system for proxying, returns a UUID representing the remote system |
2 | ReadScoket | Uuid | Read a Base64 string from a remote system |
3 | Writescoket | Uuid, Base64 string | Write a Base64 string to a remote system |
4 | CloseScoket | Uuid | Close the connection |
Table 1. Frebniis commands – the function names have been misspelled by the malware author
Le code de la porte dérobée .NET permet également l’exécution à distance.
Si un appel HTTP à logon.aspx ou default.aspx est reçu sans le paramètre du mot de passe, mais avec la chaîne Base64, celle-ci est supposée être du code C# qui sera exécuté directement en mémoire.
La chaîne Base64 est décodée puis décryptée (xor 0x08), celle-ci doit alors se présenter comme un document XML contenant le code C# à exécuter dans le nœud “/doc” sous l’attribut “data” (par exemple, <doc data=C# code>).
Le code C# est extrait et exécuté. Cela permet à Frebniis d’exécuter furtivement un code arbitraire sur le système.

Figure 3. Exemple d’utilisation de FrebniisBroadcom
En détournant et en modifiant le code du serveur web IIS, Frebniis est en mesure d’intercepter le flux régulier de traitement des requêtes HTTP et de rechercher des requêtes HTTP spécialement formatées.
Ces requêtes permettent l’exécution de codes à distance et l’accès par procuration à des systèmes internes de manière furtive.
Aucun fichier ou processus suspect n’est exécuté sur le système, ce qui fait de Frebniis un type relativement unique et rare de porte dérobée HTTP observée.
Protection/Attenuation
Pour obtenir les dernières mises à jour de la protection, veuillez consulter le Bulletin de protection de Symantec.
Indicateur de compromis
Si un IOC est malveillant et que le fichier est disponible, les produits Symantec Endpoint détecteront et bloqueront ce fichier.
6464f9a5da26aa53fb2221255e908fd4da8edf0633f94051beee74a14b9b001c – Backdoor.Frebniis
b81c177c440e84635f22dc97b0411de93a24a983a41af676ffbbb4439487aaef – Backdoor.Frebniis
Source : Broadcom
Pour en savoir plus concernant la solution.