Résumé
Okta Threat Intelligence a identifié une campagne d'attaque à grand volume qui, selon des recherches ultérieures, est active depuis au moins mars 2025, exploitant le kit de ressources de phishing-as-a-service (PhaaS) EvilProxy pour exécuter des attaques de phishing en temps réel conçues pour voler les identifiants des utilisateurs et les cookies de session actifs. Nous suivons cette campagne sous le nom de O-UNC-035.
Cette opération cible des organisations dans de nombreux secteurs, notamment la finance, le gouvernement, la santé et la technologie, en utilisant principalement des leurres très convaincants imitant des outils commerciaux populaires tels que SAP Concur et des services de signature de documents tels qu’Adobe ou DocuSign.
Analyse des menaces
EvilProxy Phishing-as-a-Service
EvilProxy (O-TA-041) est un kit de ressources PhaaS qui utilise une architecture de reverse proxy/d'intermédiaire (AitM) pour intercepter les connexions et les cookies de session des victimes en temps réel, permettant aux attaquants de contourner l'authentification multifacteur (authentification multifacteur) et de pirater des comptes.
Observé initialement en 2022 et rapidement industrialisé sur les marketplaces du dark web, EvilProxy a été largement utilisé dans des campagnes ciblées d'usurpations de compte et de compromission d'e-mail professionnelle, car il proxy les sites légitimes. Cela signifie que les utilisateurs voient de vraies invites d'authentification multifacteur et que l'attaquant est capable de capturer les tokens et les cookies que l'attaquant pourra rejouer. Comme EvilProxy est vendu et maintenu en tant que service, il permet de mettre à l'échelle les attaques et d'abaisser le seuil de compétences pour les criminels : les opérateurs peuvent lancer de grands volumes de campagnes de phishing personnalisées.
Mécanismes de leurre
Nous avons observé des logiciels et des services d’entreprise de confiance usurpés pour inciter les utilisateurs à cliquer sur des liens et à saisir des identifiants :
- Services de signature de documents (tels que Docusign, Adobe Acrobat, Adobe Sign, EchoSign) : Un thème cohérent observé dans cette campagne était l’usurpation de fournisseurs de gestion de documents et de signature électronique. Les attaquants utilisent la promesse d’un document partagé ou d’une demande de signature pour attirer les victimes.
- Plateformes de gestion des dépenses et d'approvisionnement (telles que SAP Concur, Coupa) : Il s'agissait de l'appât le plus fréquemment observé dans cette campagne. Elle cible les employés en se faisant passer pour des systèmes populaires de gestion des dépenses et des voyages, souvent avec des invites à approuver un rapport ou à examiner une dépense. Un appât plus générique utilise des termes tels que dépense, rapport de dépenses ou solutions de dépenses.
- Microsoft SharePoint: La campagne cible également les utilisateurs de l'écosystème Microsoft 365 en simulant un lien vers un document partagé ou un site collaboratif.
- Réunions en ligne : Les attaquants ont enregistré des domaines génériques qui incluent des mots comme réunion pour imiter les invitations aux plateformes de réunion.
- KnowBe4 : Les attaquants ont usurpé l’identité d’une entreprise de formation de sensibilisation à la sécurité, afin d’inciter les utilisateurs ciblés à penser que le leurre de phishing faisait partie d’un test de phishing officiel.
Analyse du code
La chaîne de redirection d'appât commence par un lien court dans lequel l'adresse e-mail de la victime est masquée dans le chemin d'URL. L'utilisateur est ensuite redirigé via un redirecteur portant le nom de l'entreprise cible dans le sous-domaine, et atterrit finalement sur une page d'hameçonnage convaincante à l'image de Microsoft qui vole les identifiants. Le JavaScript sur le redirecteur extrait l'e-mail du chemin, le réencode et construit une URL de redirection personnalisée qui transporte cette identité à chaque étape.
Chaîne HTTP exemple 1
Lien initial :
hxxps[://]expensereport[.]ch/[coded_string]
Redirecteur :
hxxps[://][company][.]sapconcur[.]sa[.]com/expense/?uid=[uid]&hid=[hid] &document=[document]&token=[token]&t=[t]
URL finale (montrant le site Web de connexion pour la collecte d'informations d'identification) :
hxxps[://][32_characters_string][.]laurimarierefling[.]com/?uid=[uid]&hid=[hid] &document=[document]&token=[token]&t=[token]&[string_7_characters]=[string_32_characters]
Exemple de chaîne HTTP 2
Lien initial :
hxxps[://]sapconcursolutions[.]pl/[coded_string]
Redirecteur :
hxxps[://][company][.]sapconcur[.]sa[.]com/expense/?uid=[uid]&hid=[hid] &document=[document]&token=[token]&t=[t]
URL finale (affichant le site web de connexion pour la collecte d'identifiants) :
hxxps[://][32_characters_string][.]concurmgt[.]pl//?uid=[uid]&hid=[hid]&document=[document]&token=[token]&t=[token]&[string_7_characters]=[string_32_characters]
Comment le redirigeur décode et personnalise la victime
Les pages de phishing acceptent le dernier segment de chemin d’accès et tentent d’utiliser plusieurs décodeurs en séquence (mappage de tokens personnalisés, hexadécimal, Base32 et Base64) jusqu’à ce que le résultat contienne « @ ». Cette valeur devient l’adresse e-mail de la victime pour une utilisation en aval, comme le montre cet exemple de code de page d’appât initiale :
let encodedValue = window.location.pathname.split('/').pop();
...
e-mail = decodeEmail(encodedValue); // custom tri-gram map
...
if (!decodingSuccessful && isHexadecimal(encodedValue)) e-mail = hexToString(encodedValue);
if (!decodingSuccessful && isBase32(encodedValue)) e-mail = base32ToString(encodedValue);
if (!decodingSuccessful && isBase64(encodedValue)) e-mail = base64ToString(encodedValue);
Le décodeur personnalisé remplace les tokens à trois caractères par des caractères, à l'aide d'une carte comme :
const encodingMap = {
"@":"MN3",".":"OP4","a":"QR5","e":"ST6","i":"UV7",
"o":"WX8","u":"YZ9","s":"ABO","n":"CD1","r":"EF2",
"d":"GH3","I":"JK4"
};
Barrières anti-analyse
Avant la redirection, le script tente d'éviter les robots d'indexation et les environnements sandbox :
function isBot() {
const botPatterns = ['bot','spider','crawl','slurp','baidu','yandex',
'wget','curl','lighthouse','pagespeed','prerender','screaming frog',
'semrush','ahrefs','duckduckgo'];
if (navigator.webdriver || navigator.plugins.length === 0 ||
navigator.languages === "" || navigator.languages === undefined)
return true;
...
}
Si un signal de bot/headless est détecté - ou si l'organisation « bloquée » de l'opérateur apparaît - la page redirige directement vers la connexion Microsoft légitime, donnant aux équipes de triage une page propre tandis que les vrais utilisateurs continuent sur le phishing. Le service api.ipify.org est utilisé pour renvoyer l'adresse IP publique de la victime, afin de la comparer à une liste de blocage IP/plage.
Domaines bloqués
Le code contient également deux domaines bloqués qui, s'ils sont présents dans l'adresse e-mail de la victime, entraîneront la sortie du flux de phishing vers la page de connexion Microsoft authentique :
const blockedDomains = ['belfius', 'baringa'];
const emailDomain = email.split('@')[1].toLowerCase();
for (const blocked of blockedDomains) {
if (emailDomain.startsWith(blocked)) {
window.location.href = "https://login.microsoftonline.com/common/login";
return;
}
}
La provenance du blocage de ces deux domaines est inconnue. Le domaine "belfius" semble faire référence à une banque belge, tandis que "baringa" semble être associé à une société de conseil en gestion britannique.
Paramètres de requête
Dans les échantillons observés, le redirecteur construit la même URL paramétrée et seule la famille de domaine varie. Deux paramètres sont l'e-mail de la victime dans différents wrappers ; les autres sont des nonces plus un horodatage :
- uid → Base64(e-mail)
- Peut être décodé à l'aide d'une recetteCyberChef
- hid → hex(Base64(e-mail))
- Peut être décodé à l'aide d'une recetteCyberChef
- document, token → ID aléatoires (de type nonce)
- t → Timestamp Unix (ms)
- Peut être converti en une date lisible par l'homme à l'aide d'une recetteCyberChef
Flux d’authentification
Dans le flux d’authentification, le nom de l’entreprise imitée apparaît dans certains champs du redirecteur et de l’URL finale. De plus, le framework de phishing remplit automatiquement le champ du nom d’utilisateur de la page de phishing avec l’adresse e-mail de la victime.
Lien initial :
hxxps[://]expensereport[.]ch/616c6578616e6465722e652e6261754073662e6672622e6f7267
Redirector :
hxxps[://]sf[.]sapconcur[.]sa[.]com/expense/?uid=...&hid=...&document=...&token=...&t=...
URL finale
hxxps[://]299afcb76fac4238a0facad80c326230[.]concursolutions[.]asia/?uid=...&hid=... &document=...&token=...&t=...&u9pPUdqL=...
Figure 1 : Capture d’écran de l’URL finale présentée à l’utilisateur cible, contenant la page de connexion malveillante
Lien initial :
hxxps[://]concursecure[.]pl/AB0ST6QR5CD1OP4kUV7CD1CD1MN3cST6CD1AB0YZ9AB0OP4gWX8v
Redirector :
hxxps[://]census[.]concursystem[.]cv/auth/?uid=...&hid=...&document=... &token=...&t=...
URL finale
hxxps[://]6b81e59848ba4a9d8cc3b4570b303a24[.]reports[.]sa[.]com/adfs/ls/?login_hint= ...&wa=wsignin1[.]0&wtrealm=...&wctx=...
Figure 2 : Capture d'écran d'une URL finale présentée à l'utilisateur contenant la page de connexion malveillante, avec un front-end personnalisé pour l'entreprise ciblée
Lien initial :
hxxps[://]expensereport[.]ch/phUV7JK4UV7ppQR5mQR5CD1CD1UV7xMN3tfJK4OP4gWX8vOP4YZ9k
Redirector :
hxxps[://]tfl[.]sapconcur[.]sa[.]com/expense/uid=...&hid=...&document=...&token=...&t=...
URL finale
hxxps[://]b4f1341373f341d98f11caea1052d878[.]laurimarierefling[.]com/?uid=...&hid= ...&document=...&token=...&t=...&...
Figure 3 : Capture d’écran d’une URL finale contenant la page de connexion malveillante ciblant Transport for London
Lien initial :
hxxps[://]concursolution[.]de/UV7JK4QR5CD1_CD1ST6tzST6EF2MN3mcQR5fST6ST6OP4cWX8m
Redirector :
hxxps[://]mcafee[.]concursystem[.]cv/auth/?uid=...&hid=...&document=...&token=...&t=...
URL finale
hxxps[://]3b2c66787c6349369fc9f90ecf789899[.]echosign[.]uk[.]com/ app/office365/.../wsfed/passive?login_hint=...&wa=wsignin1[.]0&...
Figure 4 : Capture d'écran de l'URL finale présentée à l'utilisateur ciblé, dans ce cas une page de connexion pour un utilisateur Office365 fédéré dans Okta en tant que fournisseur d'identité
Usurpation d'identité efficace
Du point de vue de l'utilisateur, tout ressemble à un arrière-plan familier de Microsoft, un favicon et une brève animation "veuillez patienter" avant une connexion. Pendant ce temps, le kit désobscurcit l'e-mail de la victime, personnalise dynamiquement la page de leurre suivante avec le nom de l'organisation ciblée, et transporte des identifiants (uid/hid/document/token/t) à travers la chaîne de sorte que toutes les informations d'identification capturées puissent être rattachées à une campagne spécifique. Le modèle d'URL répétable- un sous-domaine personnalisé plus l'ensemble de paramètres stable - associé à l'extrait de code anti-bot léger et au chargeur de style Office, permet une détection et un regroupement fiables dans toute cette famille.
Objectifs de la campagne et mode opératoire
L'objectif principal de cette campagne est la collecte d'identifiants, en se concentrant spécifiquement sur la capture des identifiants des utilisateurs et des cookies de session actifs. L'activité observée démontre une intention claire de contourner ou de capturer les codes d'authentification multifacteur (MFA), ce qui indique une capacité avancée au-delà du simple vol statique d'informations d'identification.
Secteurs verticaux ciblés
- Finance, assurance et banque : Il s'agit du secteur vertical le plus ciblé. Les attaquants ciblent les employés des grandes banques, des sociétés d'investissement et des compagnies d'assurance.
- Technologies et services IT : Les grandes entreprises de technologies, de logiciels et de conseil en informatique sont des cibles privilégiées, probablement en raison de leur accès à une propriété intellectuelle précieuse et à une infrastructure critique.
- Santé, produits pharmaceutiques et biotechnologie : Ce secteur est ciblé pour ses données sensibles et ses recherches essentielles.
- Aviation, transport et logistique : Cibler ce secteur pourrait donner accès à la logistique de voyage, aux informations de réservation d’entreprise et aux données sensibles des employés.
- Fabrication et automobile : Les géants mondiaux de la fabrication et de l'automobile figurent également sur la liste.
- Commerce de détail et biens de consommation : Comprend des chaînes de vente au détail et des entreprises de produits de consommation bien connues.
- Gouvernement et secteur public : Plusieurs agences gouvernementales et organisations de service public sont ciblées.
Page de leurre
La page racine des domaines utilisés dans cette campagne semble être un jeu d'une page inoffensif intitulé « Artistic One Page » ou « Archery Master » afin de masquer le but de l'infrastructure. Notez qu'en raison de ces titres, une requête de recherche qui peut être utilisée pour localiser l'infrastructure supplémentaire dans cette campagne dans urlscan.io par exemple :
page.title:("Artistic One Page" OR "Archery Master")
Cette page de leurre demande aux visiteurs de saisir un nom d'utilisateur avant de jouer. Le client bloque certains noms d'utilisateur (par exemple : administrateur, test et un court filtre de vulgarités). Pour tout autre nom d'utilisateur, le site lance immédiatement un jeu de tir à l'arc intégré et une expérience de classement.
Figure 5 : Capture d'écran de la page de leurre sous la forme d'un faux jeu de tir à l'arc
Figure 6 : Capture d'écran du jeu de tir à l'arc une fois qu'un nom d'utilisateur valide est saisi
Figure 7 : Capture d'écran du leurre « Artistic One Page »
Réponse aux menaces
Ce que nous faisons :
Nous sommes activement engagés dans les activités suivantes pour atténuer cette menace :
- Surveillance continue des nouveaux domaines d’hameçonnage et des infrastructures associées à cette campagne.
- Dépôt proactif de signalements d’abus auprès des registraires et des fournisseurs d’hébergement concernés afin de lancer des demandes de retrait pour les sites malveillants identifiés.
- Fournir des conseils et une assistance aux organisations pour améliorer la sécurité de leurs environnements Okta et les aider à enquêter sur toute activité suspecte liée à des comptes potentiellement compromis.
Contrôles de protection
Recommandations pour les clients
- Inscrivez les utilisateurs à des authentificateurs forts tels qu’Okta FastPass, FIDO2 WebAuthn et des cartes à puce, et appliquez la résistance au phishing dans la politique.
- Les politiques d'authentification des applications Okta (anciennement « politiques d'authentification ») peuvent également être utilisées pour restreindre l'accès aux comptes utilisateur en fonction d'un éventail de conditions préalables configurables par le client. Nous recommandons aux administrateurs de restreindre l'accès aux applications sensibles aux terminaux gérés par les outils de gestion des terminaux et protégés par les outils de sécurité des terminaux. Pour l'accès aux applications moins sensibles, exigez des terminaux enregistrés (à l'aide d'Okta FastPass) qui présentent des indicateurs d'hygiène de base.
- Refuser ou exiger un niveau d'assurance plus élevé pour les demandes provenant de réseaux rarement utilisés. Avec Okta Network Zones, l’accès peut être contrôlé par emplacement, ASN (Autonomous System Number), IP et type d’IP (qui peut identifier les mandataires d’anonymisation connus).
- Les évaluations du comportement et des risques d'Okta peuvent être utilisées pour identifier les demandes d'accès aux applications qui s'écartent des modèles d'activité des utilisateurs établis précédemment. Les politiques peuvent être configurées pour l'authentification renforcée ou refuser les demandes à l'aide de ce contexte.
- Formez les utilisateurs à identifier les indicateurs d’e-mails suspects, de sites d’hameçonnage et de techniques d’ingénierie sociale courantes utilisées par les attaquants. Facilitez le signalement des problèmes potentiels par les utilisateurs en configurant les Notifications de l'utilisateur final et le Signalement d'activité suspecte.
- Documenter, promouvoir et respecter un processus standardisé pour valider l'identité des utilisateurs distants qui contactent le personnel de support informatique, et vice versa.
- Adoptez une approche de « privilèges permanents nuls » pour l'accès administratif. Attribuez aux administrateurs des Rôles d'administrateur personnalisés avec le minimum d'autorisations requises pour les tâches quotidiennes, et exigez une double autorisation pour l'accès JIT (en flux tendu (JIT)) aux rôles plus à privilèges.
- Appliquez la liaison de session IP à toutes les applications administratives pour empêcher la relecture des sessions administratives volées.
- Activez les Actions Protégées pour forcer la réauthentification chaque fois qu'un utilisateur administratif tente d'effectuer des actions sensibles.
Observer et répondre à l'infrastructure de phishing :
- Examinez les logs d'application (logs Okta, proxies Web, systèmes d'e-mail, serveurs DNS, pare-feu) pour toute preuve de communication avec de tels domaines suspects.
- Surveiller régulièrement les domaines pour voir si le contenu change.
Si le contenu hébergé sur le domaine viole le droit d’auteur ou les marques légales, envisagez de fournir des preuves et d’émettre une demande de retrait auprès du registraire de domaine et/ou du fournisseur d’hébergement Web.
Annexe A : Indicateurs de compromission
Il s'agit d'une enquête en cours, et d'autres CIO pourraient être identifiés au fur et à mesure de l'évolution de la campagne. Il est conseillé aux organisations de rester vigilantes et de mettre en œuvre les stratégies d'atténuation recommandées. Vous trouverez ci-dessous les IOC observés.
| Type | Indicateur | Comment |
|---|---|---|
| Domaine | acrobatsign[.]es | Page de destination suspecte |
| Domaine | adobeacrobat[.]sa[.]com | Page de destination suspecte |
| Domaine | adobesign[.]ceelegal[.]com | Page de destination suspecte |
| Domaine | adobesign[.]pl | Page de destination suspecte |
| Domaine | adobesign[.]us[.]com | Page de destination suspecte |
| Domaine | asir[.]co[.]com | Page de destination suspecte |
| Domaine | blue-styles[.]cz | Page de destination suspecte |
| Domaine | ceelegal[.]com | Page de destination suspecte |
| Domaine | codemonkey[.]cc | Page de destination suspecte |
| Domaine | comcursolutions[.]de | Page de destination suspecte |
| Domaine | comcursolutions[.]eu | Page de destination suspecte |
| Domaine | comcursolutions[.]pl | Page de destination suspecte |
| Domaine | comcursolutions[.]us | Page de destination suspecte |
| Domaine | concur[.]cv | Page de destination suspecte |
| Domaine | concur[.]pages[.]dev | Page de destination suspecte |
| Domaine | concurexpense[.]pl | Page de destination suspecte |
| Domaine | concurmgt[.]pl | Page de destination suspecte |
| Domaine | concursap[.]netlify[.]app | Page de destination suspecte |
| Domaine | concursecure[.]pl | Page de destination suspecte |
| Domaine | concursolution[.]de | Page de destination suspecte |
| Domaine | concursolution[.]pl | Page de destination suspecte |
| Domaine | concursolutions[.]asia | Page de destination suspecte |
| Domaine | concursolutions[.]at | Page de destination suspecte |
| Domaine | concursolutions[.]ceelegal[.]com | Page de destination suspecte |
| Domaine | concursolutions[.]ch | Page de destination suspecte |
| Domaine | concursolutions[.]com | Page de destination suspecte |
| Domaine | concursolutions[.]com[.]tr | Page de destination suspecte |
| Domaine | concursolutions[.]cv | Page de destination suspecte |
| Domaine | concursolutions[.]cz | Page de destination suspecte |
| Domaine | concursolutions[.]de[.]com | Page de destination suspecte |
| Domaine | concursolutions[.]es | Page de destination suspecte |
| Domaine | concursolutions[.]in | Page de destination suspecte |
| Domaine | concursolutions[.]mex[.]com | Page de destination suspecte |
| Domaine | concursolutions[.]my | Page de destination suspecte |
| Domaine | concursolutions[.]nl | Page de destination suspecte |
| Domaine | concursolutions[.]pl | Page de destination suspecte |
| Domaine | concursolutions[.]pt | Page de destination suspecte |
| Domaine | concursolutions[.]re | Page de destination suspecte |
| Domaine | concursystem[.]cv | Page de destination suspecte |
| Domaine | concursystem[.]netlify[.]application | Page de destination suspecte |
| Domaine | coupahost[.]pl | Page de destination suspecte |
| Domaine | crsign[.]com | Page de destination suspecte |
| Domaine | cruisesaudi[.]sa[.]com | Page de destination suspecte |
| Domaine | dfwcom[.]com | Page de destination suspecte |
| Domaine | dnglobal[.]ca | Page de destination suspecte |
| Domaine | echosign[.]cv | Page de destination suspecte |
| Domaine | echosign[.]de[.]com | Page de destination suspecte |
| Domaine | echosign[.]eu02-safelink[.]com | Page de destination suspecte |
| Domaine | echosign[.]nl | Page de destination suspecte |
| Domaine | echosign[.]pl | Page de destination suspecte |
| Domaine | echosign[.]ru[.]com | Page de destination suspecte |
| Domaine | echosign[.]uk | Page de destination suspecte |
| Domaine | echosign[.]za[.]com | Page de destination suspecte |
| Domaine | esign[.]sa[.]com | Page de destination suspecte |
| Domaine | eu02-safelink[.]com | Page de destination suspecte |
| Domaine | eumai1-docusign[.]com | Page de destination suspecte |
| Domaine | excelpediatric[.]us[.]com | Page de destination suspecte |
| Domaine | expense[.]pl | Page de destination suspecte |
| Domaine | expense[.]sa[.]com | Page de destination suspecte |
| Domaine | expensereport[.]ch | Page de destination suspecte |
| Domaine | expensereports[.]pages[.]dev | Page de destination suspecte |
| Domaine | expensereports[.]pl | Page de destination suspecte |
| Domaine | expensereports[.]pl | Page de destination suspecte |
| Domaine | getadobesign[.]eu02-safelink[.]com | Page de destination suspecte |
| Domaine | getconcur[.]pl | Page de destination suspecte |
| Domaine | khs[.]co[.]com | Page de destination suspecte |
| Domaine | knowbe4[.]es | Page de destination suspecte |
| Domaine | meeting[.]sa[.]com | Page de destination suspecte |
| Domaine | myapps[.]sa[.]com | Page de destination suspecte |
| Domaine | na4-6l9[.]pages[.]dev | Page de destination suspecte |
| Domaine | na4[.]it[.]com | Page de destination suspecte |
| Domaine | saferedirect[.]pages[.]dev | Page de destination suspecte |
| Domaine | sapconcur[.]cv | Page de destination suspecte |
| Domaine | sapconcur[.]pages[.]dev | Page de destination suspecte |
| Domaine | sapconcur[.]sa[.]com | Page de destination suspecte |
| Domaine | sapconcursolutions[.]pl | Page de destination suspecte |
| Domaine | scality[.]us[.]com | Page de destination suspecte |
| Domaine | secure[.]za[.]com | Page de destination suspecte |
| Domaine | sharepoint[.]za[.]com | Page de destination suspecte |
| Domaine | supancasign[.]netlify[.]app | Page de destination suspecte |
| Domaine | sutheha[.]za[.]com | Page de destination suspecte |
| Domaine | team[.]sa[.]com | Page de destination suspecte |
| Domaine | ug4t5w[.]cfd | Page de destination suspecte |
| Domaine | wepp[.]website | Page de destination suspecte |
Une note sur le langage d’estimation
Les équipes d'Okta Threat Intelligence utilisent les termes suivants pour exprimer la probabilité, conformément à la directive 203 de la communauté du renseignement du bureau du directeur du renseignement national des États-Unis - Normes analytiques.
| Probabilité de survenue | Presque aucune chance | Très peu probable | Peu probable | Probablement une chance égale | Probable | Fort probablement | Presque certain(ement) |
|---|---|---|---|---|---|---|---|
| Probabilité | À distance | Très improbable | Improbable | À peu près probabilités égales | Probable | Très Probable | Presque certain |
| Pourcentage | 1-5 % | 5 - 20 % | 20-45 % | 45-55% | 55-80 % | 80-95% | 95-99 % |