🐒Monkey Money Challenge
https://app.malizen.com
Dernière mise à jour
https://app.malizen.com
Dernière mise à jour
Ce WU n'est pas tout à fait terminé :), notamment sur les 3 dernières catégories MITRE.
🔦 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
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.
400 Mo de Logs
Des événements linux
Des événements windows
Des événements suricata
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.
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
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
L'attaquant récupère donc son fichier payload.ps1 à 14:19:20 avec les droits root depuis webserver :
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.
A travers l'étape précédente, on peut voir les fichiers récupérés par les machines :
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.
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
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) :
14:48:51 rebond.exe - Connexion pass the hash en Administrateur sur l'AD
winrm https://book.hacktricks.xyz/network-services-pentesting/5985-5986-pentesting-winrm
Le binaire ransomware.exe est executé via powershell à 14:59:32 sur le controleur de domaine.
Exemple key:value linux | Exemple key:value windows |
---|---|
Catégorie | Sous-catégorie | Artefacts |
---|---|---|
Hosts | IP | Files | Datetime |
---|---|---|---|
IP DST | Request | Commentaire |
---|---|---|
Command and Control - Log4j exploit to gain access to the webserver
Ingress tool transfer
5
EeExecution & Ressource Development - Obtaining access to other machines
Command and scripting Interpreter
Acquire Infrastructure
Stage Capabilities
3 2 3
Discovery - Exploring the network, machines, files, users...
System service discovery
File and directory discovery
Account discovery
Software discovery
Network service discovery
Gather victim network information
2 2 4 2 2 2
Credential Access & Lateral Movement - Moving from victim to victim using secrets
OS credential dumping
Exploitation of remote services
1
Lateral Movement - Moving to the final target
Remote services - Windows remote management
1
Impact - Launching the final attack: the ransomware
Data encrypted for impact
1
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
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