Disclaimer :
Ce contenu est proposé à but éducatif, de recherche et de sécurité informatique.
N’en faites pas un usage illégal.



Introduction

Rendu public en 2015, PowerShell Empire est un outil de sécurité informatique pouvant être utilisé lors des audits techniques de cybersécurité. A titre indicatif, son usage s’avère particulièrement pertinent au cours de la phase 6 ‘Command & Control’ de la cyber-killchain de Lockheed Martin.

Empire est un framework de post-exploitation, cela signifie que son utilisation ne débute qu’après la phase d’exploitation d’une vulnérabilité et dès lors que l’auditeur détient un accès sur la machine ciblée. En outre, il permet le déploiement rapide d’un serveur distant de commande et de contrôle (C2 ou C&C) pour communiquer de manière chiffrée avec des agents injectés dans des machines compromises au sein d’une infrastructure.

L’utilisation d’un tel framework prend tout son intérêt dès lors qu’il est question d’automatiser des taches et d’administrer les machines compromises au fur et à mesure de la progression de l’intrusion dans le système d’information. L’architecture de l’outil est flexible de par la possibilité de créer des modules (plugins), en langage python, personnalisés aux usages spécifiques qu’il peut en être fait.


Les fonctionnalités

Empire cible en particulier les machines basées sur le système d’exploitation Windows de Microsoft. Il détient néanmoins quelques modules Linux que je qualifie « d’opportunité ».

Outre son usage de serveur de commande et de contrôle, il est principalement utilisé pour actions suivantes :

  • Elévation de privilège : Il s’agit d’une action, sur un système, visant à acquérir des droits supérieurs à ceux détenus initialement. Ce mécanisme est généralement légitime, néanmoins cette technique peut être utilisée de manière frauduleuse via l’exploitation d’une vulnérabilité par un attaquant.

  • Reconnaissance du réseau : Il s’agit habituellement de procéder à la cartographie interne d’une infrastructure informatique. Effectuée depuis l’intérieur au travers de la machine compromise, la reconnaissance peut viser un large panel dans la collecte de renseignements : machines actives, ports ouverts, écoute du trafic, etc…

  • Pivoting, ou mouvements latéraux : Technique consistant à propager l’attaque depuis une machine compromise vers une autre située à proximité « virtuelle » (des appareils interconnectés peuvent se trouver dans des lieux physiques différents) dans le réseau.

  • Collecte de données : Il est question de rassembler des informations, que ce soit via la reconnaissance, l’exploitation des fichiers présents sur la machine ou la pose d’un keylogger par exemple.

Dans tous les cas, les communications entre l’agent et le serveur C2 transitent chiffrées, à la condition d’avoir préconfiguré un certificat auto-signé. Les commandes ne sont chargées qu’en mémoire et non pas écrites sur le support physique de la cible. Cela a pour but, in fine, de ne laisser qu’un minimum de traces et de réduire ainsi la surface de détection par les outils de défense et de contre-mesure.

Comme son nom l’indique, l’outil exécute des agents PowerShell et ne nécessite donc pas l’activation de l’exécutable local PowerShell. Cette méthode lui assure, de facto, une discrétion notable et une bonne interopérabilité avec le système d’exploitation Windows.

Utilisable depuis un terminal en ligne de commande, Empire dispose cependant d’une interface graphique baptisée « Starkiller ». Cette dernière servira ici à illustrer la démonstration et les fonctionnalités.

Voici le menu principal de Starkiller/Empire :

  • Listeners : Semblable à « netcat », il permet de mettre en place un service en écoute sur le serveur C2 dans l’attente d’une connexion entrante de l’agent Empire. Ce menu contient la liste des services en écoute.

  • Stagers : Il s’agit de la « charge utile » (payload) chargée de créer l’agent sur la machine cible. Une fois configurée et générée, il faudra l’uploader puis l’exécuter pour établir une connexion vers le C2. Ce menu contient la liste des charges générées.

  • Agents : C’est dans ce menu que se trouve la liste des agents en interaction ou ayant interagi avec le C2. Il permet une vue d’ensemble du réseau administré. Les commandes et les modules sont déployés depuis cette page.

  • Modules : Liste des modules pouvant être utilisés, qu’il s’agisse d’outils ou d’exploits.

  • Credentials : Cette page agrège (de manière automatique ou non) tous les identifiants et éléments d’authentification découverts.

  • Reporting : Génère un rapport détaillé contenant les commandes pour chaque agent. Utile pour concevoir le livrable lors d’un audit ou pour un retour d’expérience post opération.


Déploiement et facilités d’usage

1ère étape : Installation et déploiement du serveur C2

L’installation du serveur se fait en récupérant le code source depuis le Git officiel puis en exécutant le script d’installation.

  1. cd /opt

  2. git clone https://github.com/BC-SECURITY/Empire/

  3. cd /opt/Empire

  4. ./setup/install.sh

Il en est de même pour la surcouche graphique « Starkiller » :

  1. cd /opt

  2. wget https://github.com/BC-SECURITY/Starkiller/releases/download/v1.5.1/starkiller-1.5.1.AppImage

  3. chmod +x starkiller-1.5.1.AppImage

Démarrage du serveur C2 :

  1. cd /opt/Empire

  2. ./empire –rest

Démarrage de l’UI :

  1. cd /opt

  2. ./starkiller-0.0.0.AppImage # Ajouter –no-sandbox si exécution en tant que root

Connexion de Starkiller au serveur Empire :

Le mot de passe par défaut est « password123 »

Le serveur C2 est désormais fonctionnel et l’interface interagit correctement avec son API.

2ème étape : Post-exploitation

Comme détaillé dans l’introduction, l’utilisation du C2 se fait post exploitation. Aussi, après avoir obtenu l’accès à la machine il faut créer un « listener », puis un « stager » et enfin l’uploader puis l’exécuter sur la machine compromise.

Une fois l’agent actif et la connexion établie vers le C2, celui-ci apparait dans l’interface.

Il est désormais possible d’interagir directement avec l’agent, soit via des commandes PowerShell (et UNIX retranscrites automatiquement) soit via des modules. Par défaut, Empire embarque de nombreux modules (injecteur mimikatz, etc…)

- « I am root ! »


Les coûts

S’agissant de projets open-source, le coût est nul en tant que tel. Des frais supplémentaires peuvent être à prévoir en condition d’utilisation réelle avec l’utilisation de serveurs proxy et l’hébergement d’un C2 distant.

Le projet est toujours actif et la documentation officielle est de qualité.


Mais à quoi ça sert vraiment ?

Empire est une alternative libre et gratuite à d’autres C2 comme CobaltStrike par exemple.

Néanmoins, d’autres solutions telles que « Covenant » ont vu le jour récemment et semblent plus prometteuses en termes de fonctionnalités.

PowerShell Empire C2 est un bon outil pour une première approche de l’utilisation d’un serveur de commande et de contrôle dans une opération de cybersécurité ou lors d’un audit technique.


J’espère que cet article vous a plu, n’hésitez pas à le partager sur vos réseaux ! =)



sources :

Le site & Git du projet « Empire » :

Le Git de l’UI « Starkiller » :

L’indispensable cheatsheet :

Quelques astuces plus avancées :

Le papier de SANS sur la détection du C2 :