Le National Cyber Security Centre (NCSC) du Royaume-Uni a publié une analyse d’un malware Linux nommé « Pigmy Goat » créé pour détourner les pare-feu Sophos XG dans le cadre d’attaques récemment révélées par des acteurs malveillants chinois.
La semaine dernière, Sophos a publié une série de rapports intitulés «Pacific Rim » qui détaillait les attaques menées depuis cinq ans par des acteurs menaçants chinois sur les appareils réseau de pointe.
L’un des logiciels malveillants personnalisés utilisés dans ces attaques est un rootkit qui emprunte fidèlement l’identité des conventions de dénomination des fichiers des produits Sophos.
Le malware, conçu pour compromettre les périphériques réseau, présente des mécanismes avancés de persistance, d’évasion et d’accès à distance et possède une structure de code et des chemins d’exécution plutôt complexes.
Bien que le Rapport NCSC n’attribue pas l’activité observée à des acteurs de menace connus, il souligne des techniques, tactiques et procédures (TTP) similaires à celles du malware « Castletap », que Mandiant a associé à un acteur étatique chinois.
Sophos a également divulgué le même malware dans son Rapport Pacific Rimdéclarant que le rootkit a été utilisé lors d’attaques de 2022 liées à un acteur menaçant chinois connu sous le nom de « Tstark ».
« X-Ops a identifié deux copies de libsophos.so, toutes deux déployées à l’aide de CVE-2022-1040 — l’une sur un appareil gouvernemental de haut niveau et l’autre sur un partenaire technologique du même ministère », a partagé Sophos.
Une chèvre dans le pare-feu
Le malware « Pygmy Goat » est un objet partagé ELF x86-32 (« libsophos.so ») offrant aux acteurs malveillants un accès dérobé aux périphériques réseau basés sur Linux tels que les pare-feu Sophos XG.
Il utilise la variable d’environnement LD_PRELOAD pour charger sa charge utile dans le démon SSH (sshd), lui permettant de se connecter aux fonctions du démon et de remplacer la fonction d’acceptation, qui traite les connexions entrantes.
Pygmy Goat surveille le trafic SSH pour une séquence spécifique d’« octets magiques » dans les 23 premiers octets de chaque package.
Une fois cette séquence trouvée, la connexion est identifiée comme une session de porte dérobée et le malware la redirige vers un socket Unix interne (/tmp/.sshd.ipc) pour établir la communication avec son Command and Control (C2).
Le malware écoute également sur un socket ICMP brut, en attente de paquets avec une charge utile cryptée en AES qui contient des informations IP et de port pour la communication C2, ce qui déclenche une tentative de reconnexion via TLS.
Pygmy Goat communique avec le C2 via TLS, à l’aide d’un certificat intégré imitant l’autorité de certification « FortiGate » de Fortinet, une couverture potentielle pour se fondre dans les environnements réseau où les appareils Fortinet sont courants.
Lorsqu’une connexion SSH est établie, une fausse poignée de main avec des réponses prédéfinies est déclenchée pour créer une fausse image de légitimité sur les moniteurs réseau.
Le serveur C2 peut envoyer des commandes Pygmy Goat à exécuter sur l’appareil, notamment les suivantes :
- Ouvrez un shell /bin/sh ou /bin/csh.
- Commencez à capturer le trafic réseau via libpcap, en transmettant les résultats à C2.
- Gérez les tâches cron à l’aide de BusyBox pour planifier des activités lorsque l’acteur n’est pas activement connecté.
- Utilisez la boîte à outils open source EarthWorm pour établir un proxy inverse SOCKS5, permettant au trafic C2 de traverser le réseau sans être vu.
Détection et défense
Le rapport NCSC contient des hachages de fichiers et des règles YARA et Snort qui détectent les séquences d’octets magiques et les fausses poignées de main SSH, afin que les défenseurs puissent les utiliser pour détecter l’activité de Pygmy Goat dès le début.
De plus, les vérifications manuelles de /lib/libsophos.so, /tmp/.sshd.ipc, /tmp/.fgmon_cli.ipc, /var/run/sshd.pid et /var/run/goat.pid peuvent révéler un infection.
Il est également conseillé de configurer la surveillance des charges utiles chiffrées dans les paquets ICMP et l’utilisation de « LD_PRELOAD » dans l’environnement du processus « ssdh », ce qui est un comportement inhabituel pouvant indiquer une activité de chèvre pygmée.