🐒Monkey Money Challenge
https://app.malizen.com
Ce WU n'est pas tout à fait terminé :), notamment sur les 3 dernières catégories MITRE.
1️⃣ - Contexte du challenge
🔦 Défi CTF - Alerte aux Threat Hunters ! 🔦 Nous sommes ravis de vous annoncer le lancement d'un nouveau #blueteam #ctf en ligne sur notre plateforme Community Malizen ! 💥 Le scénario ➡ Vous êtes un analyste de choc de l'équipe de réponse à incidents, appelé en renfort par Monkey Money, la célèbre start-up en NFT. Leur SI est à l'arrêt complet suite à une attaque. Mais bonne nouvelle, Monkey Money a réussi à extraire une montagne de #logs pendant la période de l'incident, et c'est là que vous entrez en jeu. Ces données ont été mises à votre disposition grâce à la plateforme de simulation M&NTIS d'AMOSSYS, et elles n'attendent que vous pour être analysées ! ❤️❤️❤️ Votre mission, si vous l'acceptez ➡ Utilisez notre plateforme d'analyse de logs pour traquer l'attaque et mettre la main sur ces #flags le plus vite possible. Etes-vous prêt à relever le défi ? Mais attendez, ce n'est pas tout ! ➡ Remportez le Nice Flag Trophy 😉 ! Des récompenses exceptionnelles sont en jeu. Pour celles ou ceux qui trouveront tous les flags en un temps record, des cartes cadeaux zubii.com à gagner ! 🎁 Alors, prêts à relever le défi ? Le compte à rebours est lancé, vous avez jusqu'au 3 octobre pour participer. #capturetheflag #blueteam #threathunting #incidentresponse #loganalysis
2️⃣ - Contexte du lab
Here's what you need to know
In this game scenario developed through M&NTIS Platform, you must explore logs of the information system of Monkey Money, that has suffered a cyber attack. On January 19th 2023, the information system of the startup stopped working altogether. The employees were no longer able to log on to their workstations. The cause seemed to be that the domain controller was not responding. You are an analyst within the incident response team of the CERTIFLEX company, called to help on this breach. The startup MonkeyMoney was able to extract the different logs of the information system during the presumed period of the attack. The dataset for this challenge has been developed by AMOSSYS through M&NTIS Platform. It allows simulating an entire corporate network, launching attack scenarios, emulating user actions, etc., all while collecting traces, mainly under the form of network captures (PCAPs) or or system and application logs.
3️⃣ - Challenge
On a quoi à notre disposition ?
400 Mo de Logs
Des événements linux
Des événements windows
Des événements suricata
Exemple key:value linux | Exemple key:value windows |
---|---|
Début des recherches
Voici ce qu'il faut trouver pour réussir le challenge au début :
Oui on est aveugle.
Pour la compréhension du WU, voici ce qu'il fallait trouver :
Il ne faut pas forcément trouver l'ensemble des artefacts pour réussir le challenge, mais en trouver au moins 1 dans chaque sous catégorie.
Catégorie | Sous-catégorie | Artefacts |
---|---|---|
Command and Control - Log4j exploit to gain access to the webserver |
| 5 |
EeExecution & Ressource Development - Obtaining access to other machines |
| 3 2 3 |
Discovery - Exploring the network, machines, files, users... |
| 2 2 4 2 2 2 |
Credential Access & Lateral Movement - Moving from victim to victim using secrets |
| 1 |
Lateral Movement - Moving to the final target |
| 1 |
Impact - Launching the final attack: the ransomware |
| 1 |
Command and Control - Log4j exploit to gain access to the webserver
Ingress tool transfer
En regardant le schéma, on remarque qu'un des points d'entrée sur le SI est le webserver (192.168.101.3) exposé via la DMZ. Je place donc les filtres suivants :
destination.ip = 192.168.101.3
destination.port = 80
destination.port = 8080
source.ip = 192.168.40.1
On découvre sur la card "event.original", un log suricata avec comme signature "ET EXPLOIT Apache log4j RCE Attempt - lower/upper TCP Bypass M1 (CVE-2021-44228)".
On peut apporter plus de détail en ajoutant les cards "file.target_path" et "http.request.method" :
On note aussi l'heure : 2023-01-19T14:02:44
Execution & Ressource Development - Obtaining access to other machines
Command and scripting Interpreter
On estime que l'exploit de l'attaquant a réussi. Par conséquent, log4j lui confère un accès en ligne de commande sur le serveur. On peut maintenir filtrer en ip source sur le webserver et en utilisant la card "vulnerability.category" de suricata avec la valeur "Potentially Bad Traffic" :
On découvre à 14:02:45 le téléchargement d'un fichier "Main.class", fichier qui va certainement remplacer le "Main.class" de l'application en production sur le serveur et permettre à l'attaquant de prendre la main à distance. De plus, le User-Agent "Java/1.8.0_102" montre que le téléchargement de ce fichier est bien initié par l'application vulnérable.
Nous avons donc l'IP d'un potentiel C2 : 91.218.114.3 et le nom d'un script pour la suite des événements : payload.ps1
Acquire Infrastructure
L'attaquant récupère donc son fichier payload.ps1 à 14:19:20 avec les droits root depuis webserver :
Stage Capabilities
A partir de l'IP qui a permis à l'attaquant de prendre le main sur le webserver, nous pouvons appliquer un filtre pour connaitre les autres actions qu'il a effectué avec ce serveur.
destination.ip = 91.218.114.3
On découvre que l'attaquant a téléchargé 5 fichiers en plus de Main.class et payload.ps1 :
set_empty_pw.exe
rebond.exe
ransomware.exe
secretsdump.exe
Plus grave encore, il semble que les machines 192.168.101.5 (NTP) et 192.168.104.2 (AD) ont elle aussi intéragit avec le C2.
Discovery - Exploring the network, machines, files, users
A travers l'étape précédente, on peut voir les fichiers récupérés par les machines :
Hosts | IP | Files | Datetime |
---|---|---|---|
WEBSERVER | 192.168.101.3 | Main.class payload.ps1 | 14:02:45 14:19:20 |
NTP | 192.168.101.5 | set_empty_pw.exe secretsdump.exe rebond.exe | 14:47:46 14:48:26 14:48:44 |
DC | 192.168.104.2 | ransomware.exe | 14:59:19 |
Je commence par analyser ce qu'il c'est passé sur le webserver entre 14h02 et 14h19 car le délai est assez important.
Je filtre en source.ip = 192.168.101.3 pour identifier de nouvelles communications.
IP DST | Request | Commentaire |
---|---|---|
91.218.114.2 | HTTP /register (14:02:46) HTTP /actions (14:03:18 à 15:02:27) HTTP /response (14:19:20) HTTP /ack (14:19:20) | Trafic très important +1.8K URL d'un nouveau C2 ? UA = Java/1.8.0_102 |
91.218.114.3 | HTTP /Main.class (14:02:45) HTTP /payload.ps1 (14:19:20) | Log4j, point d'entrée |
91.218.114.4 | ET POLICY Anonymous LDAPv3 Bind Request Outbound (14:02:45) | Log4j exploit |
192.168.101.4 | DNS sans risque | Seulement des requêtes vers ubuntu.com |
192.168.101.5 | HTTP /update_system.ps1 | Requête HTTP sur un serveur NTP pour récupérer un ps1 ?? |
192.168.101.1 | DHCP | Sans risque |
192.168.105.3 | Logstash | Sans risque, envoie de logs |
On découvre que l'attaquant pilote son attaque depuis 3 IPs. Le serveur qui répond en 91.218.114.2 permet à l'attaquant de passer des actions aux machines infectées.
J'applique un filtre sur source.ip = 91.218.114.2
On découvre une nouvelle machine infectée : 192.168.33.12 (CLIENT2) (14:49).
Pour aller plus loin, je filtre sur destination.ip = 192.168.33.12.
On découvre que CLIENT2 a lui aussi communiqué avec 192.168.101.5, 192.168.104.2 et le C2.
On peut affirmer que le serveur NTP mène l'attaque par rapport à webserver qui n'a servi que de point d'entrée. Cependant, je suis incapable de déterminer comme celui-ci a été infecté puisque les logs ne montrent rien.
Un petit schéma pour savoir ou on en est :
Je continue la suite des recherches en placant le serveur NTP en source.ip.
Pour rappel, il dispose des fichiers suivant :
set_empty_pw.exe 14:47:46
secretsdump.exe 14:48:26
rebond.exe 14:48:44
Credential Access & Lateral Movement - Moving from victim to victim using secrets
OS credential dumping
On apprend dans l'article suivant, que le binaire set_empty_pw est généralement relié à des exploits ZeroLogon (CVE-2020-1472) :
Pour cette vulnérabilité, l'attaquant a simplement besoin du nom de domaine, du nom du DC et de son adresse IP. Avec sa présence sur CLIENT2, il récupère les infos facilement car il est intégré au domaine.
Dump des secrets de la base SAM via secretsdump (impacket) présent sur le PC CLIENT2 (14:48:33) :
Exploitation of remote services
14:48:51 rebond.exe - Connexion pass the hash en Administrateur sur l'AD
Lateral Movement - Moving to the final target
Remote services - Windows remote management
winrm https://book.hacktricks.xyz/network-services-pentesting/5985-5986-pentesting-winrm
Impact - Launching the final attack: the ransomwae
Data encrypted for impact
Le binaire ransomware.exe est executé via powershell à 14:59:32 sur le controleur de domaine.
Dernière mise à jour