Principaux points abordés dans cet article
- Les utilisateurs d'Elastic sont protégés contre les attaques de la chaîne d'approvisionnement visant les utilisateurs de 3CX.
- Le fonctionnement du flux d'exécution est activement étudié par Elastic Security Labs et d'autres équipes de recherche.
- Quelle que soit la technologie anti-malware que vous utilisez, les alertes de shellcode et d'injection de processus pour 3CX ne doivent pas être ajoutées aux listes d'exceptions.
Préambule
On March 29, 2023, CrowdStrike reported a potential supply-chain compromise affecting 3CX VOIP softphone users as detailed in a Reddit post. Elastic Security Labs continues to monitor telemetry for evidence of threat activity and will provide updates as more evidence becomes available. The earliest period of potentially malicious activity is currently understood to be on or around March 22, 2023 as reported by Todyl.
3CX déclare être utilisé par plus de 600 000 entreprises et plus de 12 000 000 d'utilisateurs. Elastic Security Labs publie donc une analyse de triage pour aider les clients de 3CX dans la détection initiale de SUDDENICON, avec une analyse complémentaire des logiciels malveillants et des intrusions qui sera publiée ultérieurement.
Dans cette mise à jour, Elastic Security Labs fournit les informations suivantes : - Domaines malveillants potentiels associés à l'activité du logiciel malveillant - Hachures de fichiers pour les clients 3CX Windows et MacOS qui peuvent être impactés - Requêtes Elastic et protections préconstruites qui peuvent être pertinentes pour cette activité - Règles YARA pour identifier le logiciel malveillant SUDDENICON
Analyse du triage SUDDENICON
Le programme d'installation MSI de 3CXDesktopApp semble contenir un code malveillant qui attend sept jours après l'installation avant de télécharger des fichiers supplémentaires depuis GitHub et de communiquer avec des domaines de commande et de contrôle malveillants. L'application client écrit ffmpeg.dll
et d3dcompiler\_47.dll
sur le disque, ce dernier contenant une charge utile que nous appelons SUDDENICON. Les deux bibliothèques de notre échantillonnage semblent avoir été protégées par un mur de soutènement. Il convient de noter que ffmpeg.dll
et d3dcompiler\_47.dll
sont tous deux des noms de fichiers légitimes et que les règles ne doivent pas être créées sur la base de ces seuls noms.
Le binaire ffmpeg.dll
extrait SUDDENICON de d3dcompiler\_47.dll
en recherchant la séquence d'octets FEEDFACE et en la décryptant à l'aide d'une clé RC4 statique (3jB(2bsG#@c7
). La charge utile résultante est ensuite chargée en mémoire en tant que charge utile du deuxième étage. Un stub de shellcode ajouté à la charge utile pour l'insérer dans la mémoire présente des similitudes avec les stubs du chargeur APPLEJEUS, qui ont été associés à la RPDC. Lorsqu'il s'exécute avec succès, ce stub de shellcode écrit un nouveau fichier ( manifest
) sur le disque avec un horodatage de 7 jours dans le futur, utilisé pour mettre en œuvre une minuterie après laquelle le logiciel malveillant se connecte à l'infrastructure C2.
Les domaines C2 sont récupérés en téléchargeant et en décodant en base64 les octets de fin joints aux fichiers d'icônes stockés dans le dépôt Github IconStorages (ce dépôt a été supprimé par Github). Ce repo a été créé par GitHub ID 120072117
le 8 décembre 2022, et mis à jour le 16 mars 2023. Après s'être connecté à un serveur C2 actif, le logiciel malveillant exécute un POST contenant un identifiant de machine. Il télécharge ensuite un nouvel exécutable et le décrypte.
L'analyse initiale du nouvel exécutable montre qu'il s'agit d'un voleur d'informations. Nous publierons une mise à jour une fois l'analyse terminée.
Le PDG de 3CX a recommandé de désinstaller le logiciel; un petit nombre de messages sur les forums communautaires décrivent la façon dont les outils de sécurité réagissent aux comportements potentiels des logiciels malveillants, et CrowdStrike et SentinelOne ont publié des informations initiales. Il semble probable que la menace ait pu introduire des logiciels malveillants créés par l'adversaire via des canaux de mise à jour, écrasant des composants autrement bénins de la 3CXDesktopApp. Les utilisateurs peuvent également s'auto-infecter accidentellement.
Logique de détection
La prévention
- Alerte de détection des menaces sur la mémoire : Injection de Shellcode
- Windows.Trojan.SuddenIcon
Requêtes de détection
Les événements pour KQL et EQL sont fournis par l'agent Elastic à l'aide de l'intégration Elastic Defend. Les requêtes de chasse peuvent renvoyer des signaux élevés ou des faux positifs. Ces requêtes sont utilisées pour identifier des comportements potentiellement suspects, mais une enquête est nécessaire pour valider les résultats.
Requêtes KQL
La requête KQL suivante peut être utilisée pour identifier le logiciel signé 3CX qui effectue la résolution de nom de raw.githubusercontent.com, où des applications malveillantes liées à cette menace ont été mises en place :
process.name : "3CXDesktopApp.exe" and dns.question.name : "raw.githubusercontent.com"
La requête KQL suivante peut être utilisée pour identifier plusieurs indicateurs de cette activité au niveau de l'hôte :
dll.hash.sha256 : "7986bbaee8940da11ce089383521ab420c443ab7b15ed42aed91fd31ce833896" or dll.hash.sha256 : "c485674ee63ec8d4e8fde9800788175a8b02d3f9416d0e763360fff7f8eb4e02"
Requêtes EQL
En utilisant la section Chronologie de la solution de sécurité dans Kibana sous l'onglet "Corrélation", vous pouvez utiliser les requêtes EQL ci-dessous pour rechercher des comportements similaires.
La requête EQL suivante peut être utilisée pour profiler le logiciel 3CX et le logiciel enfant :
any where process.code_signature.subject_name == "3CX Ltd" or process.parent.code_signature.subject_name == "3CX Ltd"
La requête EQL suivante peut être utilisée pour identifier le logiciel signé 3CX effectuant la résolution de nom de raw.githubusercontent.com, où des applications malveillantes liées à cette menace ont été mises en place :
network where process.code_signature.subject_name == "3CX Ltd" and dns.question.name == “raw.githubusercontent.com”
La requête EQL suivante peut être utilisée pour identifier les fichiers écrits par le client 3CXDesktopApp :
file where event.type == "creation" and (host.os.type == "windows" and file.path : "*:\\Users\\*\\AppData\\Local\\Programs\\C3XDesktopApp\\app\\*" and file.name : ("manifest")) or (host.os.type == "macos" and file.path : "*/Library/Application Support/3CX Desktop App/" and file.name : ("UpdateAgent", ".main_storage", ".session-lock")
La requête EQL suivante peut être utilisée pour identifier plusieurs indicateurs de cette activité au niveau de l'hôte :
sequence by host.name, process.entity_id[process where process.code_signature.subject_name:"3CX Ltd"][library where dll.hash.sha256:"c485674ee63ec8d4e8fde9800788175a8b02d3f9416d0e763360fff7f8eb4e02","7986bbaee8940da11ce089383521ab420c443ab7b15ed42aed91fd31ce833896"][network where dns.question.name:"raw.githubusercontent.com"]
La requête EQL suivante peut être utilisée pour identifier cette activité si la DLL est mise à jour :
library where process.code_signature.subject_name : "3CX Ltd" and not dll.code_signature.trusted == true and not startswith~(dll.name, process.name) and /* DLL loaded from the process.executable directory */ endswith~(substring(dll.path, 0, length(dll.path) - (length(dll.name) + 1)), substring(process.executable, 0, length(process.executable) - (length(process.name) + 1)))
YARA
Elastic Security Labs a publié deux signatures YARA pour le shellcode malveillant, que nous appelons SUDDENICON.
Défenses recommandées
Les clients d'Elastic Endgame et d'Elastic Endpoint dont les protections contre les shellcodes sont activées en mode prévention ont bloqué l'exécution de SUDDENICON, bien que tout logiciel client compromis doive être supprimé. En raison de la récupération et de l'injection retardées du shellcode, les utilisateurs de 3CXDesktopApp peuvent ne pas voir d'alertes jusqu'à ce que l'intervalle de sommeil soit écoulé (environ 7 jours). Les clients qui utilisent des protections contre les codes-barres en mode détection uniquement doivent activer la prévention pour réduire le risque d'infection. Ne créez pas d'exceptions pour ces alertes.
Références
The following were referenced throughout the above research: - https://www.reddit.com/r/crowdstrike/comments/125r3uu/20230329_situational_awareness_crowdstrike/ - https://www.sentinelone.com/blog/smoothoperator-ongoing-campaign-trojanizes-3cx-software-in-software-supply-chain-attack/ - https://www.todyl.com/blog/post/threat-advisory-3cx-softphone-telephony-campaign
Indicateurs
Domaines potentiellement malveillants
Les domaines en gras indiquent qu'ils ont été observés dans notre analyse.
- akamaicontainer[.]com
- akamaitechcloudservices[.]com
azuredeploystore[.]com
- azureonlinecloud[.]com
- azureonlinestorage[.]com
- dunamistrd[.]com
- glcloudservice[.]com
- journalide[.]org
msedgepackageinfo[.]com
- msstorageazure[.]com
msstorageboxes[.]com
officeaddons[.]com
officestoragebox[.]com
- pbxcloudeservices[.]com
- pbxphonenetwork[.]com
- pbxsources[.]com
- qwepoi123098[.]com
- sbmsa[.]wiki
sourceslabs[.]com
visualstudiofactory[.]com
zacharryblogs[.]com
Versions et hachages de 3CXDesktopApp potentiellement concernés :
Hachure du client : dde03348075512796241389dfea5560c20a3d2a2eac95c894e7bbed5e85a0acc
OS : Windows hachage de l'installateur : aa124a4b4df12b34e74ee7f6c683b2ebec4ce9a8edcf9be345823b4fdcf5d868
Nom du fichier d'installation : 3cxdesktopapp-18.12.407.msi
Hachure du client : fad482ded2e25ce9e1dd3d3ecc3227af714bdfbbde04347dbc1b21d6a3670405
OS : Windows hachage de l'installateur : 59e1edf4d82fae4978e97512b0331b7eb21dd4b838b850ba46794d9c7a2c0983
Nom du fichier d'installation : 3cxdesktopapp-18.12.416.msi
Hachure du client : 92005051ae314d61074ed94a52e76b1c3e21e7f0e8c1d1fdd497a006ce45fa61
OS : macOS Hash de l'installateur : 5407cda7d3a75e7b1e030b1f33337a56f293578ffa8b3ae19c671051ed314290
Nom du fichier d'installation : 3CXDesktopApp-18.11.1213.dmg
Hachure du client : b86c695822013483fa4e2dfdf712c5ee777d7b99cbad8c2fa2274b133481eadb
OS : macOS Hash de l'installateur : e6bbc33815b9f20b0cf832d7401dd893fbc467c800728b5891336706da0dbcec
Nom du fichier d'installation : 3cxdesktopapp-latest.dmg