Un binaire inconnu a été exécuté, probablement transféré depuis le périphérique précédent, et son rôle exact reste à déterminer.
Un binaire suspect a été identifié lors de l’analyse du poste de l’employé. Vous devez déterminer son rôle exact et évaluer s’il a provoqué des actions inhabituelles ou non autorisées sur le système.
La première étape quand on a un binaire qu'on ne connait pas on regarde son type, ELF, PE, striped etc...
$ file my_exploit.exe
myexploit.exe: PE32+ executable (console) x86-64, for MS Windows, 7 sections
Puis on regarde si on peut obtenir des informations supplémentaires.
$ strings my_exploit.exe
!This program cannot be run in DOS mode.
Rich
...
9python313.dll
On retrouve des informations propres à python, on en conclut que c'est un script python qui a été compilé.
Partie assez anecdotique où il faut juste récupérer le script python qui a été compilé. Avec l'utilisation de PyInstxtractor ou autre outils.

Nous téléchargeons ainsi le fichier zip contenant le contenu extrait du binaire.
Il faut comprendre quelles actions ont été menées sur un pc qui avait un accès au système d'informations, avec l'aide des bibliothèques utilisées et les actions effectuées par le script.
Grâce à l'étape précédente, nous avons pu récupérer le script python qui a été compilé dans le binaire.
Nous utilisons un outil comme PyLingual pour décompiler le code python extrait.
Pour ce faire, nous analysons les bibliothèques importées dans le script.

On remarque l'utilisation de la bibliothèque impacket, qui est une bibliothèque python très utilisée pour les pentests. De plus de par les importations comme :
- from impacket.krbƼ.asn1 import TGS_REP as IllllllIIIllll, AS_REP as IIIIIllIlIIIII
- from impacket.krbƼ.kerberosvƼ import getKerberosTGT
Nous comprenons donc compte que c'est une attaque Kerberoast qui a été menée, en utilisant la bibliothèque impacket.
Nous savons qu'une attaque Kerberoast a été menée, mais combien d'utilisateurs ont été compromis ?
Pour le savoir, nous pouvons nous référer au fichier de logs qui nous a été fourni précédemment.
Voici un script python qui permet d'extraire les utilisateurs compromis en fonction de l'EventRecordID (ERID) des événements de connexion réussie à partir du n-ème événement.
Ainsi il faut d'abord identifier l'EventRecordID (ERID) du branchement de la clé USB (2625) puis exécuter le script en fournissant une fenêtre autour de cet ERID pour extraire les utilisateurs compromis.
#!/usr/bin/env python3
import sys
from xml.etree import ElementTree as ET
from collections import OrderedDict
# Usage:
# python3 extract_users_erid.py EXE_logs.xml MIN_EVENTID MAX_EVENTID
# or python3 extract_users_erid.py --around EXE_logs.xml CENTER_ERID [WINDOW]
# If WINDOW is omitted, defaults to 10.
if len(sys.argv) < 2:
print("Usage:")
print(" python3 extract_users_erid.py EXE_logs.xml MIN_EVENTID MAX_EVENTID")
print(" or python3 extract_users_erid.py --around EXE_logs.xml CENTER_ERID [WINDOW]")
sys.exit(2)
if sys.argv[1] == "--around":
if len(sys.argv) < 4:
print("Usage for --around: python3 extract_users_erid.py --around EXE_logs.xml CENTER_ERID [WINDOW]")
sys.exit(2)
xmlpath = sys.argv[2]
center = int(sys.argv[3])
window = int(sys.argv[4]) if len(sys.argv) >= 5 else 10
MIN = center - window
MAX = center + window
else:
if len(sys.argv) < 4:
print("Usage: python3 extract_users_erid.py EXE_logs.xml MIN_EVENTID MAX_EVENTID")
sys.exit(2)
xmlpath = sys.argv[1]
MIN = int(sys.argv[2])
MAX = int(sys.argv[3])
NS = {'e': 'http://schemas.microsoft.com/win/2004/08/events/event'}
tree = ET.parse(xmlpath)
root = tree.getroot()
users = OrderedDict()
for ev in root.findall('.//e:Event', NS):
erid_el = ev.find('e:System/e:EventRecordID', NS)
if erid_el is None or not erid_el.text:
continue
try:
erid = int(erid_el.text.strip())
except:
continue
if erid < MIN or erid > MAX:
continue
for data in ev.findall('.//e:Data', NS):
text = (data.text or '').strip()
if not text:
continue
parts = text.split()
if len(parts) >= 2 and parts[1].lower().startswith('success'):
users[parts[0]] = None
print("\n".join(users.keys()))
On exécute le script ainsi:
$ python3 extract_users_erid.py --around EXE_logs.xml 2635 10

Dans le fichier de logs on remarque que trois minutes après le branchement de la clé USB, de nombreuses connexions à des comptes de l'entreprise ont été effectuées. On constate qu'il y a cinq comptes utilisateurs qui se sont connectés et déconnectés dans un temps très court (dizaines de secondes les uns des autres) . On en déduit donc les cinq utilisateurs qui ont été compromis.




Mince, j’ai oublié ma carte Navigo… je vais devoir prendre un ticket pour passer incognito.
Cela a pour but d'orienter le joueur vers le ticket Kerberos.