Linux keylogger sin root o sudo! ¿Es real?

29

Alguien en Youtube afirma tener un keylogger en Ubuntu que no fue ejecutado ni instalado como root. El siguiente enlace muestra una demostración de su funcionamiento.

http://www.youtube.com/watch?v=Y1fZAZTwyPQ

A pesar de sus afirmaciones de lo contrario, esta persona podría haberlo instalado como root antes de hacer una demostración para el video. ¿Hay alguna otra evidencia semi creíble de que esto sea realmente posible sin root para la instalación o ejecución?

ACTUALIZACIÓN: El software al que se hace referencia en la respuesta del 24 de junio no se instalaría sin sudo / root. He agregado una recompensa a quien proporcione un enlace a un software de registro de teclas de Linux que pueda instalarse y ejecutarse con privilegios de usuario regulares.

Mike Rowave
fuente
Creo que esto se puede hacer en el nivel X fácilmente. Solo piense en los programas con atajos globales.
Denis Nikolaenko
Para evitar los registradores de teclas del sistema de ventanas X, debe implementar SELinux para X. Que yo sepa, ninguna distribución generalizada de Linux lo hace de forma inmediata. nsa.gov/research/_files/selinux/papers/x11/t1.shtml
Denis Nikolaenko
¿Conoces algún ejemplo real de trabajo? Sin verlo funcionar de primera mano, me mantengo escéptico. Y sin saber que es realmente posible instalar un keylogger sin privilegios de sudo / root, no vale la pena lidiar con la complejidad de configurar AppArmor o SELinux para defenderse de él.
Mike Rowave, el
3
Resuma los puntos importantes del video en su respuesta. Podría eliminarse o el servidor podría dejar de estar disponible. (Sí, mientras estoy publicando, Youtube no funciona). También es bastante grosero exigir que los visitantes vean un video para averiguar de qué se trata su pregunta.
Gilles 'SO- deja de ser malvado'

Respuestas:

29

Si, es real. Si ha sido explotado a través de un navegador y un atacante puede ejecutar código con sus privilegios de usuario, puede registrar un programa a través de las instalaciones de inicio automático de GNOME o KDE que ejecutan programas al iniciar sesión. Cualquier programa puede obtener códigos de escaneo de teclas presionadas en el sistema X Window. Se demuestra fácilmente con el comando xinput. Vea la publicación de blog sobre aislamiento de GUI para más detalles

Denis Nikolaenko
fuente
12

El concepto en ese video es 100% real y el código es muy simple.

Identifique su identificación de teclado con: xinput --list

Registro de pulsaciones de teclas con: xinput --test $id

Haga coincidir los números con las teclas con: xmodmap -pke

Yardena
fuente
11

Sí, es posible.
Puede probarlo en su propia máquina con un software similar lkl .

bbaja42
fuente
Da miedo si es real. Voy a configurar una máquina virtual para probarlo. Pero luego, el siguiente enigma es cómo detectarlo de inmediato si de alguna manera se instala a través de un exploit de explorador o algo así, o al menos bloquear de manera proactiva que no transmita nada a Internet si se ejecuta.
Mike Rowave
Tengo poco conocimiento en el área, pero wiki.ubuntu.com/SELinux podría ayudar. Siéntase libre de actualizar la pregunta original con sus hallazgos. : D
bbaja42
1
Difícil de decir engaño, real o menos de lo que parece de un video solo. Ya puedo pensar en lugares para comenzar si quisiera hacer un video que suponga demostrar una gran vulnerabilidad (trucos suid, tiempos de espera sudo, herramientas de sistema adulteradas, etc. ad nauseum). De ninguna manera es Linux invulnerable para atacar, para afirmar lo contrario. es tonto Pero uno no puede sacar conclusiones basadas en videos de Youtube.
Andrew Lambert
@ Punto válido asombrado, pero no dude en instalar lkl y probarlo en su propia máquina.
bbaja42
1
No funcionó. La ejecución make installprodujo el error cannot create regular file '/usr/local/bin/lkl': Permission denied. Ejecutar sudo make installno dio el error, pero luego intentar ejecutar realmente lkl dio otro error Have to be root to perform a iopl()!.
Mike Rowave el
9

No he visto el video, así que estoy respondiendo a la impresión que tengo sobre lo que dice del hilo SU en lugar del video que usted cita.

Si un atacante puede ejecutar código en su máquina como su usuario, entonces puede registrar sus pulsaciones de teclas.

Bueno duh. Todas las aplicaciones que está ejecutando tienen acceso a sus pulsaciones de teclas. Si está escribiendo cosas en su navegador web, su navegador web tiene acceso a sus pulsaciones de teclas.

Ah, usted dice, pero ¿qué pasa con el registro de pulsaciones de teclas en otra aplicación? Mientras la otra aplicación se esté ejecutando en el mismo servidor X, aún se pueden registrar. X11 no intenta aislar aplicaciones, ese no es su trabajo. X11 permite que los programas definan accesos directos globales, lo cual es útil para los métodos de entrada, para definir macros, etc.

Si el atacante puede ejecutar el código como su usuario, también puede leer y modificar sus archivos, y causar todo tipo de daños.

Esto no es una amenaza. Es parte de las expectativas normales de un sistema de trabajo. Si permite que un atacante ejecute código en su máquina, su máquina ya no es segura. Es como si abrieras la puerta de entrada y permitieras que entrara un asesino con hacha: si luego te parten en dos, no es porque tu puerta de entrada esté insegura.

El keylogger solo puede registrar teclas presionadas por el usuario infectado. (Al menos mientras el usuario infectado no escriba la contraseña de sudo).

Gilles 'SO- deja de ser malvado'
fuente
Ver Ley # 1 .
Iszi
"No permitir que un atacante ejecute código en su máquina" es un gran modelo de seguridad ... Supongo que Windows se vuelve perfectamente seguro cuando lo usa un usuario de Linux en ese momento (que con seguridad no "permitiría que un atacante ejecute código") ...
gbr
3

Es 100% posible. Para ttys / ptys (modo de texto), la forma más fácil es agregar una cuña a / bin / {ba, da, a} sh (por ejemplo, un segundo segmento de código, RX) y cambiar el punto de entrada (como un ELF virus lo haría). Salvo el acceso a eso en este caso, uno puede modificar ~ / .profile o ~ / .bashrc (etc.) a, como un modelo hipotético muy simple:

exec ~ / .malicious_programme

que puede cargar código dinámico de objeto compartido para ocultar el programa malicioso en cuestión (por ejemplo: permitir la lectura y modificación de perfiles, pero ocultar la línea. Y / u ocultar el programa).

Luego, se puede usar el sistema pIX (7) de UNIX98 o incluso simplemente canalizar (2) para registrar todas las entradas en un shell bifurcado, suponiendo que fd no esté marcado como FD_CLOEXEC, e incluso cambiar la entrada del usuario al shell.

En X11, aunque kdm / gdm / xdm se ejecuta como setuid root (o el equivalente en capacidades [ver setcap (8)] o cualquier modelo de seguridad que esté utilizando si no es predeterminado), las cosas se vuelven más complicadas, obviamente. Si uno puede elevar los privilegios? iopl (2) o ioperm (2) hace la vida bastante fácil con acceso directo a los puertos de teclado 0x60 / 0x64 en x86. Como suponemos que no puede, debemos buscar una ruta alternativa. Sé de varios, pero no estoy completamente seguro de que desee una disertación sobre cómo es posible y las interfaces involucradas.

Es suficiente decir que el anillo 3, los troyanos sin superusuario son bastante posibles en * nix, a pesar del aislamiento del proceso, como resultado de varios problemas (particularmente con X) que ha agregado características para que los demonios en modo de usuario proporcionen, por ejemplo, texto Soporte de voz a voz para todas las aplicaciones sin comprometer la seguridad del sistema. Ya describí uno que funciona de manera análoga a ttysnoops (que ya pasó su fecha de vencimiento), y no requiere root. Tengo un código de muestra para este caso (que incluiría terminales internas en X), pero aún no lo he publicado. Si desea más información, no dude en ponerse en contacto conmigo.

David McIlwraith
fuente
La pregunta dice "sin root ni sudo". ¿Cómo modificaría un atacante un programa /binsin privilegios?
G-Man dice 'reinstalar a Mónica' el
0

Sí, es posible instalar software sin los privilegios su o sudo; sin embargo, esto generalmente se hace a través de un exploit de escalada de privilegios. Ese video hace un trabajo bastante bueno de las capacidades de ese keylogger, pero deja un poco de detalle sobre la instalación del keylogger. Puede haber un poco de truco aquí, pero es difícil saberlo solo por el video.

Xenoactive
fuente
Estás retorciendo palabras. Puede ser posible instalar software en un directorio del sistema sin ejecutar su o sudo, pero un exploit de escalada de privilegios le daría al atacante el privilegio raíz, también conocido como "superusuario" o "su" privilegio.
G-Man dice 'reinstalar a Mónica' el
0

Para fines de prueba, creé un keylogger TTY que puede conectarse dinámicamente al tty de un usuario y el programa no necesita ser instalado por root y puede ser utilizado por cualquier cuenta. Una vez conectado, registrará las entradas que coinciden con el patrón dado en la línea de comando cuando se inicia el programa.

wzis
fuente
-3

Esto es posible con sistemas como Crunchbang (distribución basada en Debian) simplemente agregue permisos al archivo sudoers mediante el uso de nano visudo en la terminal y agregue keylogger al inicio automático como teclas de registro para Linux, por ejemplo logkeys --start --output /home/user/.secret /Iniciar sesión

Buena suerte

GodOfWarWebMew
fuente
55
Se requiere privilegio root o sudo para editar el archivo sudoers.
Mike Rowave