Mielpops : Cas réel d'utilisation

Écrit par Xylitol – Mars 2025

Salut à tous, je vais aborder la thématique de hacking WordPress en étudiant des attaques réelles et plus particulièrement une en particulier.
Avec mon Hackerspace, nous avons eu l'idée de coder un honeypot web. Nous avons donc disséminé des pages fictives un peu partout, notamment pour le CMS WordPress.
Et devinez quoi ? Aujourd'hui, un pigeon a mordu à l'hameçon ! Alors analysons un peu plus en détail le déroulé des évènements.

Honeypot capture

Quelqu'un dont l'IP est située au Bangladesh a essayé de configurer notre fausse page d'installation WordPress, voici un extrait des logs:


{
        "created_at": "2025-03-03 06:47:14",
        "ip": "103.199.84.77",
        "country": "BD",
        "host": "103.199.84.77.summitiig.net",
        "exploit_path": "/wp-admin/setup-config.php?dbname=confidential&uname=confidential&pwd=confidential&dbhost=162.241.226.127&prefix=wp_mrt00000213&step=2&submit=Submit",
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
    },
    {
        "created_at": "2025-03-03 06:47:07",
        "ip": "103.199.84.77",
        "country": "BD",
        "host": "103.199.84.77.summitiig.net",
        "exploit_path": "/wp-admin/setup-config.php?dbname=confidential&uname=confidential&pwd=confidential&dbhost=162.241.226.127&prefix=wp_mrt00000212&step=2&submit=Submit",
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
    },
    {
        "created_at": "2025-03-03 06:46:52",
        "ip": "103.199.84.77",
        "country": "BD",
        "host": "103.199.84.77.summitiig.net",
        "exploit_path": "/wp-admin/setup-config.php?step=1",
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
    },
    {
        "created_at": "2025-03-03 06:45:56",
        "ip": "103.199.84.77",
        "country": "BD",
        "host": "103.199.84.77.summitiig.net",
        "exploit_path": "/wp-admin/setup-config.php?dbname=confidential&uname=confidential&pwd=confidential&dbhost=162.241.226.127&prefix=wp_mrt00000212&step=2&submit=Submit",
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
    },
    {
        "created_at": "2025-03-03 06:45:37",
        "ip": "103.199.84.77",
        "country": "BD",
        "host": "103.199.84.77.summitiig.net",
        "exploit_path": "/wp-admin/setup-config.php?step=1",
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
    },
    {
        "created_at": "2025-03-03 06:43:26",
        "ip": "103.199.84.77",
        "country": "BD",
        "host": "103.199.84.77.summitiig.net",
        "exploit_path": "/wp-admin/setup-config.php",
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
    } 

On essaye de se connecter à la base de données distante que l'attaquant a tenté de configurer sur notre honeypot.
L'accès fonctionne correctement, on y retrouve dans la capture que des tables WordPress avec des préfixes différents, qui suggèrent que l'attaquant ne fait que des installations de WordPress :

BDD WordPress

Voici maintenant une screenshot de chacun des premiers éléments des tables « options »:
Plusieurs choses intéressantes pour nous, on a les domaines sur lequel l'installation a été réalisée, ainsi que les adresses mail utilisées pour créer les comptes administrateurs.
L'attaquant utilise souvent dans ses configurations des WordPress trois adresses en « yopmail » :

  • evan123@yopmail.com
  • mrxwp@yopmail.com
  • mr.t007@yopmail.com
  • enbehlima@gmaill.com
  • t00lz.shellz999@gmail.com
Options table

Plusieurs choses notables : il utilise « Yopmail », on peut donc utiliser ce service pour consulter l'activité de ses boites aux lettres jetables.
La quatrième adresse email en « gmaill » est utilisée pour le domaine « dikbud.kolutkab.go.id », qui est un domaine un petit peu spécial.
En Indonésie, le domaine officiel du gouvernement est « go.id » et seules les institutions gouvernementales indonésiennes peuvent les utiliser...

Jetons un coup d'oeil aux boites Yopmail. Sans surprise, on retrouve que des emails d'installation de WordPress, avec pleins d'autres domaines que l'on n'avaient pas dans les tables SQL:

Yopmail addresses

Bon OK il installe des WordPress... et après ?
Créons-nous un compte « parasite » dans sa table pour aller jeter un coup d'oeil dans le WordPress...

Compte parasite

On se log dans le panel admin:

Admin panel

Il y a une notification dans le menu « plugins », allons voir, il semble que le gestionnaire de fichiers pour WordPress « Filester - File Manager Pro » est le seul plugin d'activé.

Plugin installé

Apparement, plusieurs fichiers ont l'air externes a WordPress:

Fichiers plugin

Jetons un oeil un peu au hasard à ces fichiers. Ici, « rom.php », est en faite un autre gestionnaire de fichiers externe.
« rom.php » nous permet d'obtenir les horodatages donc avec ces informations on voit que en premier il y a « edwad.php » puis « admin1.php », « he.php », « rom.php », et « jemp.php ».

Fichiers plugin

Le fichier « edwad.php » est un autre gestionnaire de fichiers, mais celui-ci est clairement taillé pour des attaquants:

Backdoor

Le script «jemp.php » permet a l'attaquant de récupérer divers fichiers de configuration de CMS et de les stocker sous forme de « .txt » dans des dossiers créés.

Backdoor 2

Voilà, on connait maintenant les méthodes utilisées par l'attaquant et ce qu'il a tenté de faire sur notre honeypot
Un bon rappel sur pourquoi il est important de ne pas laisser sur son serveur les fichiers d'installation de WordPress.

Pour aller plus loin, nous pouvons aller voir les tables « usermeta ». La colonne « community-events-location » nous donne la dernière IP utilisée par le compte:


wp_a30032usermeta: a:1:{s:2:"ip";s:13:"103.204.211.0";} (Bangladesh)
wp_a30040usermeta: a:1:{s:2:"ip";s:13:"139.192.192.0";} (Indonésie)

Passage au Bot IRC:


<Xyl2k> .ip 103.204.211.0
<shell> 📌 Level3 Carrier Limited - 0.211.204.103-level3carrier.net [AS58682 - Level3 Carrier Ltd.] (103.204.211.0/24)
<Xyl2k> .ip 103.204.211.132
<shell> 📌 Level3 Carrier Limited - 132.211.204.103-level3carrier.net [AS58682 - Level3 Carrier Ltd.] (103.204.211.0/24)
<Xyl2k> .as AS58682
<shell> ✖ 18,133,887,294,219,437,620,592,640 [ Bangladesh ] AS58682 – Level3 Carrier Ltd. (level3carrier.com)
<shell> irt: IRT-LEVEL3
<shell> address: Plot 11 Road 113/A Gulshan Dhaka 1212, Bangladesh
<shell> e-mail: shapon01@gmail.com
<shell> tech-c: AT921-AP
<shell> remarks: shapon01@gmail.com was validated on 2024-12-31
<Xyl2k> .ip 139.192.192.0
<shell> 📌 PT. First Media,Tbk - No Hostname [AS23700 - Linknet-Fastnet ASN] (139.192.192.0/19)
<Xyl2k> .as AS23700
<shell> ✖ 79,556,990,337,199,516,729,064,030,208 [ Indonesia ] AS23700 – Linknet-Fastnet ASN (firstmedia.com)

<Xyl2k> l&apos;IP du Bangladesh qui a attaqué notre pot de miel:
<Xyl2k> .ip 103.199.84.77
<shell> 📌 Summit Communications Limited - 103.199.84.77.summitiig.net [AS58717 - Summit Communications Ltd] (103.199.84.0/24)
<Xyl2k> .as AS58717
<shell> ✖ 79,254,758,882,295,859,435,387,486,208 [ Bangladesh ] AS58717 – Summit Communications Ltd (summitcommunications.net)

À ce stade, on ne sait pas grand-chose sur le ou les auteur(s).
Les logs d'accès de « dlwhosting » indiquent que « 103.204.211.132 (Bangladesh) » installe malicieusement la base de données, puis installe le plugin de gestion de fichiers pour ensuite installer la porte dérobée « edwad.php »
Un peu plus tard « 139.192.192.145 (Indonésie) » apparait et en drop quelques autres.

GitHub

Il y en a un qui se fait appeler « Mr.X » via le préfixe des tables « wp_Mrx » et son adresse Yopmail « mrxwp ».
Parfois « Mr.X » utilise aussi une adresse Yopmail « mr.t007 » et des préfixes de table « wp_mrt ».

On retrouve dans une porte dérobée utilisée son profil GitHub « MrXcoderofficial »:

GitHub

Sur GitHub, on constate qu'il vend ses services:

Profil GitHub

Son compte Telegram est mentionné : « @Jackleet ». C'est donc l'heure de faire de la reconnaissance.
Via des bots, on retrouve rapidement ses infos ainsi que les channels auxquels il participe.

Bot Telegram

Il gère aussi son propre canal Telegram « t.me/Mrx_Tools ». Des hack tools sont à vendre et sans surprise aussi des backdoors à 5$ unité.

MrX Tools

On appréciera ses vidéos avec son bordel monstrueux sur son bureau et son compte Facebook qui apparaît brièvement dans une de ses vidéos.

Profil Facebook

Alors avec un peu de recherches, on tombe sur son profile « facebook.com/Mahedi.hasan47 »
En 2023, sur son mur, il fait référence a « sellex.pw », un site de black market pour pirates.

Facebook

« sellex » a également un groupe Telegram ou « Mr.X » y vend des shells:

Sellex

Son profil Facebook indique qu'il vit dans la ville de Dacca, la capitale du Bangladesh.
Voici qui coïncide avec l'IP « 103.204.211.0 » réccupérée a plusieurs reprises dans les tables SQL des WordPress compromises.
Sans oublier l'IP « 103.199.84.77 » qui est à la source de l'attaque de notre honeypot.

Géo IP

OPSEC Fail !
Le Bangladesh est un pays très pauvre, enfin.. y'a des coins.
Le salaire moyen à Dacca, est estimé à environ 29 100 takas bangladais (BDT) par mois, soit environ 274$
A 5$ le shell, Mr.X aurais besoin de vendre 55 shells par mois, peut être fait t'il ça comme un complément de salaire.

A noter qu'un autre a utilisé le pseudo « negat1ve » dans la création de comptes administrateurs, mais Mr.X le fait également.