Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon ffmpeg puede grabar X de cualquier usuario




El otro día estaba platicando con Kamsky, hablando de proyectos pendientes y cosas similares. Después de un rato le digo "Una pizza si me dices que canción estoy escuchando" ya previamente le había hecho un usuario para que se conecte mediante ssh a mi equipo, y pues resulta él entró a ver algunas cosas testeó algunos archivos y demás lo que haría cualquier persona tratando de obtener privilegios que no le corresponden, bueno resulta que no logró nada en ese momento ya que el estaba ocupado en otras cosas.




En ese momento yo tenia un poquito des-actualizado FreeBSD en el sistema de ports había unos 65 bugs y en kernel tenia unos 15 de los cuales creo que ya había por ahí un que otro exploit.

Lo más normal hubiese sido convertirse en mi usuario y leer el archivo del xmms con el plugin de InfoPipe

Código
Anon@localhost % cat /tmp/xmms-info_Anon.0
XMMS protocol version: 2467
InfoPipe Plugin version: 1.3
Status: Playing
Tunes in playlist: 2483
Currently playing: 2414
uSecPosition: 3715
Position: 0:03
uSecTime: 275069
Time: 4:35
Current bitrate: 128000
Samping Frequency: 44100
Channels: 2
Title: Interpol - Obstacle 1

El quería convertirse en root y hacerle un:

Código
hexdump -C /dev/mem | grep xmms

o algo similar, sin embargo es un proceso algo lento y con pocas probabilidades de éxito, yo lo intente y no di con nada

Pues me puse a pensar en como era posible ver lo que yo estaba escuchando, y después de pensar en las cosas mas raras y extravagantes sobre ingeniería social, hacking y demás, recordé un dicho que dice "la solución siempre es mas sencilla de lo que parece". Me dije a mi mismo, "algo entre tanto sistema operativo, no debe de estar implementando bien la seguridad" y recordé que cuando implementé el torneo shell misteriosamente aparecían xterm de otros usuarios en mi X, en ese entonces lo asocié eso a que estaban siguiendo alguna sección del texto smashing the stack for fun and profit ellos pensaban que todavía tener un xterm vulnerable como el que se describió en el texto, ellos realizaban algo como:

setenv DISPLAY ":0.0" o export DISPLAY=":0.0"

dependiendo del shell que estén usando en ese momento, en lo que visualice el :0.0 se disparo una idea en mi mente, con la utilidad ffmpeg la cual tengo instalada y es con la cual grabo los vídeos que he subido a youtube, la herramienta en cuestión utiliza una sintaxis así para grabar:

Código
ffmpeg -f x11grab -r 30 -sameq -s 854×480 -i :0.0 /path/to/file.avi

Entré inmediatamente con un usuario sin privilegios previamente creado en el torneo shell, y puse el comando, en lo que vi que si estaba grabando, reajuste el tamaño a capturar y si, ahí estaba la sección perteneciente al xmms mostrando la canción que estoy escuchando.

En conclusión kamsky se perdió de una pizza
Aprendí que se puede espiar el X de cualquier usuario, incluso el de root

Trate de reportar eso al bugtrack de FreeBSD, pero al parecer no piensan que sea un bug. Esto fue lo que me respondieron:

Dear Anon,

We have received your message. However I do not feel this is a security issue
within FreeBSD. X, where the display is being set, is reponsible for sharing the
desktop etc. ffmpeg is an additional third party port that has access to this.

It might be best to ask around on the ports@ mailinglist or even x11@ (might
be better now that I think of it) on how to tune down display access from local users.

Cheers and thanks for trying to help and make FreeBSD better, it's appreciated!


Y con su consejo lo he mando al maillist de X11 en FreeBSD y resulta que hasta ahora sigo sin respuesta.

http://lists.freebsd.org/pipermail/freebsd-x11/2010-February/009359.html


Saludos

-
Anon

10 comentarios :

LeGNa dijo...

"...al parecer no piensan que sea un bug"
Creo q sobra "que sea un bug" :P

Muy buena la entrada. Como solucionarlo?

kamsky dijo...

sigo diciendo que se puede hacer como yo digo! de hecho viste que lo hice en mi Pc sin problemas y apenas tarda...

vertex@Symphony dijo...

Correcto, no es un bug en sí en FreeBSD, esta variable DISPLAY se hace disponible una vez iniciado el servidor X (o antes, para especificar en que dispositivo se tiene que iniciar) para las aplicaciones que dependen de esta variable ... y se expone en toda distro ... también es posible obtener esta información de /var/log/Xorg.0.log

y como ffmpeg tiene como opción leer de Xorg ...

Habría que mandarles un mail a X11 como te dijeron, preguntándoles si ya tienen control de acceso por ejemplo por grupos (si te unís al grupo X por ejemplo, tener acceso a los displays), sino implementarlo ...

pero no es un fallo de FreeBSD per se...
dicho sea de paso, buen artículo ! =D

Saludos ~

vertex@Symphony dijo...

LeGNa : La solución rápida es quitarle el soporte de X11 a ffmpeg,en mi caso, en un sistema gentoo es cuestión de sacar X de la variable USE al paquete ffmpeg ...
en /etc/portage/package.use (si no existe, crearlo, aunque dudo que no exista *roll eyes*) y agregás :

media-video/ffmpeg -X

después un "emerge --newuse ffmpeg" y a reinstalar ffmpeg

En las distribuciones binarias ya viene compilado el soporte, y ahí lamento decir que ni idea más que compilar ffmpeg a mano y uno mismo generar el paquete para el gestor ...

aún así, eso es un paliativo, ya que de otra forma se podría leer del server Xorg la información del display de forma local...

Saludos ~

vertex@Symphony dijo...

@LeGNa: la solución rápida es sacarle el soporte de X11 a ffmpeg, en gentoo se hace rápidísimo, se le especifica que no queremos soporte de X en la variable USE, eso se agrega en /etc/portage/package.use

media-video/ffmpeg -X

y un "emerge --newuse ffmpeg"

Aunque eso es un paliativo, me imagino que ya habrá otra forma de leer del servidor X el display =/

Saludos ~

P.S : me pareció haber puesto vista previa de este comentario, pero perdí el contenido con lo de verificar, quizá ya lo envié ?

Anon dijo...

@kamsky en linux ya vi que si se puede hacer como lo comentas. Pero en FreeBSD no he encontrado dicho enlace que mencionas.

@vertex Existe una herramienta en linux que también toma el snapshot y te guarda en una imagen, no he probado esa utilidad, creo que también es posible ahi, a no se ahí si esta bien controlado.

Otra cosa cualquier atacante con acceso al sistema puede re-compilar su propio ffmpeg, o una utilidad similar.

Saludos

sirdarckcat dijo...

deberias poner una screenshot de lo que se capturo o algo asi :)

Adrián dijo...

Hasta donde yo he probado en debian testing esto no funciona, te da un error con "Could not open display".

Anónimo dijo...

man xhost

Si cualquier usuario local puede conectarse a tu display hay cosas peores que un simple screenshot.

vertex@Symphony dijo...

empezé a leer sobre la seguridad en el servidor X, y un buen artículo introductorio es este : http://www-it.desy.de/systems/services/x11/xsec.html

comenta justamente sobre xhost y xauth

Saludos ~

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.