Archives for 

kernel

PoC: Elevación de privilegios en el kernel Linux

Hace poco me entero de una nueva vulnerabilidad en el kernel de Linux, esta vez se trata de una vulnerabilidad, la cual permite escalar privilegios localmente en un sistema que tenga el kernel de Linux 2.6

El fallo fue descubierto por Jüri Aedla y  se debe a una incorrecta comprobación de privilegios al abrir el ‘/proc/#pid#/mem‘ de un proceso.

La informacion completa del fallo puede encontrarse en este link, alli explican paso a paso en que consiste la vulnerabilidad y como explotarla.

Esta es una vulnerabilidad grave, ya que  cualquier persona autorizada podria acceder como ROOT a cualquier sistema (obviamente que sea vulnerable) tan solo con estar fisicamente en el equipo y ejecutar el exploit.

En RinconInformatico.NET, se hizo la prueba de concepto con el fin de verificar  que tan facil seria para un atacante obtener una consola de root, y la verdad es que es bastante sencillo.

Se deben seguir los siguientes pasos:

  1. Se obtiene el codigo del exploit, elaborado en C, denominado por el autor como mempodipper
  2. Teniendo el codigo fuente del script, se procede a compilarlo:

    $ gcc mempodipper.c -o mempodipper

  3. Despues de compilar, solo resta ejecutar el binario y esperar  el resultado:
./mempodipper
Si todo ha salido bien, obtendremos root en unos pocos segundos:

 

Afortunadamente, las bondades del software libre permite que el bug sea corregido en tiempo record, aqui puedes ver el parche desarrollado por Linus Torvalds el cual soluciona la vulnerabilidad.

Solo queda esperar a que las diferentes distribuciones empaqueten la nueva version incluyendo el parche y actualizar de inmediato. Por su parte el proyecto Debian ya parcho casi todas las versiones, solo falta la version de wheezy, para la cual se debe esperar 10 dias a que la version en SID (ya parchada)  pase a testing.

El milagro del parche de 200 lineas para el kernel de linux, en un script de bash

Recientemente, hemos leido  muchos comentarios sobre el milagroso parche del kernel de Linux desarrollado por Mike Galbraith, el cual con tan solo 200 lineas de codigo, aumentaba el rendimiento de forma considerable y muy notoria. Desafortunadamente este parche solo sera incluido en el kernel a partir de la version 2.6.38, por lo tanto,  para poder probar dicho parche, y evidenciar la mejora en el performance del sistema, es necesario descargar el parche, aplicarlo y obviamente compilar el kernel. Esta tarea requiere algo de conocimiento y sobre todo tiempo.

Sin embargo,  leyendo  un enlace interesante,  encuentro otra forma dada a conocer por Lennart Poettering, un desarrollador de Red Hat, la cual con  unas pocas lineas en bash, obtenemos el mismo resultado, que aplicando el parche, ya aplican el mismo concepto de crear grupos de tareas TTY.

En esta ocasion nuestro amigo Junix ha creado un pequeño script el cual aplica los cambios descritos por Lennart. Cabe resaltar que el script sirve para los usuarios de Debian  y sus derivados. Para   ejecutar debemos hacer lo siguiente:

wget http://isc.utp.edu.co/~junix/cgroup.sh
chmod +x cgroup.sh
sudo -E ./cgroup.sh

Reiniciamos y listo, con esto  tendremos las nuevas mejoras. Yo realizado el proceso, y efectivamente he evidenciado una mejora en el rendimiento de mi equipo, en cuanto a navegacion, reproduccion de video,  y carga de aplicaciones. Sin embargo, la mejor opcion es  que cada uno de ustedes prueben el script y nos cuenten sus comentarios.

Como saber la temperatura de nuestro CPU y la carga de nuestra bateria en la consola

Desde hace dias estoy teniendo algunos problemas de temperatura en  mi laptop,  la ultima vez, estaba compilando el kernel para instalar el NCTUNS, pero de un momento a otro el ordenador se apago. Revisando los LOGS, me lleve una gran sorpresa, al descubrir que el apagon fue como consecuencia de la alta temperatura que tenia mi CPU, alrededor de 85 C°.

Nuevamente necesitaba  compilar el kernel, pero para que no volviera apagarse necesitaba monitorear constantemente  la temperatura del procesador.  En lo primero que  pense fue en ACPI,   esta aplicacion,  nos permite realizar este proposito, monitorear la temperatura y la bateria de nuestro equipo.

Para instalar podemos hacer uso del gestor de paquetes:

apt-get install acpi

Su funcionamiento es bastante sencillo

acpi

Te mostrara la informacion basica de la bateria, es decir el porcentaje de carga de la misma

si deseamos mas informacion:

acpi  -V

Nos mostrara mucha mas informacion.

Ahora si lo deseamos es  que nos muestre la informacion en tiempo real, podemos hacer uso del paquete watch

watch acpi -V

De esta forma podremos ver toda la informacion en tiempo real, de esta manera es posible monitorear  cada instante y ver los cambios de temperatura que la CPU tiene.

Como instalar OpenWRT en Mikrotik Routerboard 450G [Parte 1]

Hace tiempo queria instalar openWRT en cualquier dispositivo(obviamente alguno compatible), esta semana tuve la oportunidad de  tener una routerBoard 450G en la mano, asi que decidi probar y darme la tarea de instalar este  maravilloso firmware. El proceso  es mas o menos sencillo, hay que tener algunos conocimientos basicos en TFTP,  y un servidor DHCP,  A continuacion mostrare los pasos que segui para realizar la instalacion correctamente, pero antes, es bueno tener alguna teoria clara.

La siguiente informacion es tomada de la wiki

¿Que es OpenWRT?

OpenWRT es una distribución de Linux basada en firmware usada para dispositivos empotrados tales como routers personales.

El soporte fue limitado originalmente al modelo Linksys WRT54G, pero desde su rápida expansión se ha incluido soporte para otros fabricantes y dispositivos, incluidos el Netgear, D-Link, ASUS y algunos otros. El router más popular sigue siendo el Linksys WRT54G y el ASUS WL500G. OpenWRT utiliza principalmente un interfaz de línea de comando, pero también dispone de una interfaz WEB en constante mejora. El soporte técnico es provisto como en la mayoría de los proyectos OpenSource, a través de foros y su canal IRC.

Ahora que sabemos, que es OpenWRT, y por ende que ventajas trae instalarlo en algun dispositivo(que son muchas!!), procedemos a realizar la instalacion:

  1. Descargamos la ultima revision:
  2. svn co svn://svn.openwrt.org/openwrt/trunk kamikaze
    (Deben tener subversion instalado)

  3. Entramos a la carpeta kamikaze y ejecutamos el siguiente comando
  4. cd kamikaze

    make menuconfig (no ejecutar como root)

    Cabe aclarar que es muy probable que al ejecutar el comando  se presenten algunos errores de dependencias, si esto ocurre,  podemos ayudarnos en el gestor de paquetes para resolver estos inconvenientes.

  5. Despues de resolver todos los errores,  nos debe aparecer el siguiente menu: (Notese que el proceso es muy similar a la compilacion de un kernel en GNU/Linux)
  6. En este menu podemos definir que  modulos y que funcionalidades deseamos que tenga nuetra imagen de  OpenWRT,  ese proceso lo dejo a decision de ustedes, pueden navegar por el menu y decidir que necesitan segun sus requerimientos. Sin embargo  como vamos a instalar OpenWRT en una routerboard 450G debemos escoger en el target System,  el Hardware de este dispositivo, por tal razon escogeremos este “Atheros AR71xx/AR7240/AR913x”
  7. Otra cosa que debemos tener en cuenta en target images debemos selecciona la opcion ramdisk, ya que inicialmente lo que haremos es cargar la imagen del OpenWRT en la maquina para verificar su funcionamiento. y despues de esto si escribiremos la imagen en el memoria del equipo
  8. Despues haber realizado los cambios, guardamos la configuracio y procedemos a  compilar

make

Al terminar el proceso de compilacion, tendremos un directorio bin el cual tendra las imagenes que necesitamos para realizar la instalacion. En la proxima parte explicare como pasamos la imagen al dispositivo y  realizar la instalacion. Espero que les haya gustado y  que  en verdad lo prueben por que vale la pena. Esperen mas adelante la segunda parte

Instalar tarjetas Broadcom BCM43XX con soporte de inyección en kernel 2.6.32 en Debian GNU/Linux

En Rincon Informatico hemos visto la evolución que ha tenido el soporte de Hardware en GNU/Linux en cuanto a  las siempre dificultosas y problematicas tarjetas wifi de Broadcom.

Al inicio cuando no había soporte, se debía utilizar el driver de Windows haciendo uso del NDISWRAPPER, paso el tiempo  y broadcom publico sus drivers oficiales para GNU/Linux, aunque funcionaban bien, estos no traían el soporte para inyectar, es decir, la tarjeta wifi no se podía poner en modo monitor, característica fundamental a la hora de crackear redes inalámbricas.

Hoy en día con el kernel 2.6.32 el cual trae entre sus mejoras el soporte de estas tarjetas por el driver b43, es posible  poner nuestra tarjeta  wifi BCM43XX  en modo monitor, de una forma sencilla  y rápida. En esta ocasión mostrare el procedimiento  para instalar el driver con su respectiva firmware. Antes de empezar hay que aclarar que este método fue probado en Debian Squeeze con tarjeta BCM4312 (rev 01) , sin embargo es posible  que sirva para varias tarjetas y distribuciones mas (en cuanto a las distribuciones o versiones, todo depende del kernel, osea que si usas una distro diferente puedes compilar manualmente el kernel, y seguir con el siguiente paso de la guia). Para  saber si tu tarjeta esta soportada por el drive puedes entrar en este enlace. Ahora si Manos al teclado!!!

Instalando el Kernel 2.6.32

Para los usuarios de debian squeeze, pueden descargar el kernel desde el repositorio:

apt-get install linux-image-2.6.32-3-686 linux-headers-2.6.32-3-686

Compilando el B43-fwcutter

Hay que tener en cuenta, que si instalas el b43-fwcutter desde los repositorios, no servirá, ya que hay que descargar e instalar  la versión de desarrollo:

Descargamos el paquete

Extraemos y entramos a la carpeta

cd b43-tools/fwcutter
make
cd ..

Ahora procedemos a descargar e instalar la ultima versión del firmware:

export FIRMWARE_INSTALL_DIR=”/lib/firmware”
wget http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
tar xjf broadcom-wl-4.178.10.4.tar.bz2
cd broadcom-wl-4.178.10.4/linux
../../fwcutter/b43-fwcutter -w “$FIRMWARE_INSTALL_DIR” wl_apsta.o

El resultado debe  ser algo como esto:

broadcom modo monitor

El siguiente paso es reiniciar.

Después de reiniciar  probamos si nuestra tarjeta wifi ya esta levantada:

iwconfig

Si no te sale tu interfaz cargamos el modulo:

modprobe b43
ifconfig wlan1 up

Con esto la interfaz debera esta levantada, probamos de nuevo.

iwconfig

Añadiendo el driver al inicio.

Vamos al archivo /etc/modules y añadimos la siguiente linea:

b43

Ahora vamos al archivo /etc/rc.local y añadimos esta linea antes del ( exit 0):

modprobe b43

Y listo con eso ya tendremos nuestra tarjeta con soporte de inyeccion. Es gratificante como ver la evolución de GNU/Linux, y por que no ser parte de ella,  Despues de tantas peleas con ndiswrapper y wl por fin tenemos nuestra tarjeta wifi funcionando como debería ser. Espero les sirva a todos aquellos que pro desgracia tienen una tarjeta broadcom.

Nota: ALgunas cosas fueron tomadas del how-to escrito en   este enlace. el cual nos muestra como instalarlo en Gentoo