Protected File Transfers

🧠 Introduction

Lors d’un test d’intrusion, il est courant d’accéder à des données sensibles telles que des listes d’utilisateurs, des identifiants, des fichiers critiques comme le NTDS.dit (pour le craquage de mots de passe en mode hors-ligne), ou encore des informations d’énumération sur l’infrastructure réseau et l’environnement Active Directory (AD) d’une organisation.

Il est donc essentiel de transférer ces données de manière sécurisée, notamment via des connexions chiffrées comme SSH, SFTP ou HTTPS. Toutefois, il peut arriver que ces options ne soient pas disponibles, ce qui nécessite des méthodes alternatives de protection des fichiers avant transfert.

ℹ️ À noter : sauf demande explicite du client, il n’est pas recommandé d’exfiltrer des données personnelles (PII), données financières (ex. : numéros de carte bancaire) ou secrets industriels. Pour tester les mécanismes de prévention des fuites de données (DLP), il est préférable d’utiliser un fichier factice imitant les données sensibles que le client souhaite protéger.


⚙️ Comment ça marche ?

La protection des fichiers repose ici principalement sur leur chiffrement avant transfert. Cela garantit que, même interceptés, les fichiers ne pourront pas être lus sans la clé de déchiffrement.

Deux environnements sont abordés ici :

🔐 Chiffrement de fichiers sous Windows

Le script PowerShell Invoke-AESEncryption.ps1 permet de chiffrer/déchiffrer des fichiers ou des chaînes de texte en AES.

Exemple de chiffrement d'une chaîne :

Invoke-AESEncryption -Mode Encrypt -Key "p@ssw0rd" -Text "Texte Secret"

Exemple de déchiffrement d'une chaîne :

Invoke-AESEncryption -Mode Decrypt -Key "p@ssw0rd" -Text "LtxcRelxrDLrDB9rBD6JrfX/czKjZ2CUJkrg++kAMfs="

Exemple de chiffrement de fichier :

Invoke-AESEncryption -Mode Encrypt -Key "p@ssw0rd" -Path file.txt
# Résultat : file.txt.aes

Exemple de déchiffrement de fichier :

Invoke-AESEncryption -Mode Decrypt -Key "p@ssw0rd" -Path file.txt.aes
# Résultat : file.txt

Une fois le script copié sur la machine cible, il suffit de l’importer :

Import-Module .\Invoke-AESEncryption.ps1

🔹 Utiliser un mot de passe fort et unique par client est crucial afin d’éviter qu’un fichier sensible soit déchiffré à partir d’un mot de passe compromis.

🐙 Chiffrement de fichiers sous Linux

L’outil OpenSSL permet de chiffrer des fichiers avec des algorithmes robustes.

Exemple de chiffrement avec AES-256 :

openssl enc -aes256 -iter 100000 -pbkdf2 -in /etc/passwd -out passwd.enc

Exemple de déchiffrement :

openssl enc -d -aes256 -iter 100000 -pbkdf2 -in passwd.enc -out passwd

Options utilisées :

  • -aes256 : algorithme AES 256 bits

  • -pbkdf2 : dérivation de clé sécurisée

  • -iter 100000 : renforcement du mot de passe


⚠️ Risques & vulnérabilités

  • Fuite de données non chiffrées : interception simple en cas de transfert via HTTP, SMB, FTP...

  • Mots de passe faibles ou réutilisés : facilitent le déchiffrement en cas de compromission.

  • Suppression négligente des fichiers temporaires : des données sensibles peuvent rester accessibles.

  • Transferts via des protocoles non sécurisés : le contenu est vulnérable en transit.


🛠️ Outils & commandes utiles

Windows

  • Script : Invoke-AESEncryption.ps1

  • Importation :

Import-Module .\Invoke-AESEncryption.ps1
  • Chiffrement de fichier :

Invoke-AESEncryption -Mode Encrypt -Key "MotDePasse" -Path fichier.txt

Linux

  • OpenSSL :

openssl enc -aes256 -iter 100000 -pbkdf2 -in fichier.txt -out fichier.enc
openssl enc -d -aes256 -iter 100000 -pbkdf2 -in fichier.enc -out fichier.txt

📚 Ressources utiles


Mis à jour