Ir al contenido principal

Entradas

Mostrando entradas de marzo, 2014

Servicios online para análisis de Malware

El análisis de un nuevo malware es siempre una tarea que requiere muchos recursos, tanto en tiempo como en conocimiento, lo que al final se traduce en dinero. Además, los buenos analistas de malware son un bien escaso. Las Empresas desarrolladoras de antivirus hacen una inversión muy considerable cuando se enfrenta a nuevos espécimenes de virus, por lo que se está investigando bastante en el campo del análisis automático de programas maliciosos. Está lejos el día en que un programa pueda igualar a un buen profesional, y además, personalmente, me parece una pena dejarle a una máquina el placer de resolver un desafío tan gratificante como es comprender el funcionamiento de un malware a pesar de los obstáculos que pone el programador que lo ha ideado. En cualquier caso, hay mucho malware nuevo cada día, y algunos son simplemente evoluciones de otros, así que vale la pena centrarse en los verdaderamente interesantes y usar analizadores automáticos para los demás. Existen diferentes altern...

Desarrollo de controladores de dispositivo (device drivers) en Linux

Continúo la serie de artículos sobre programación del kernel Linux con un artículo sobre el desarrollo de controladores de dispositivos o device drivers. El controlador de ejemplo que voy a mostraros se carga en memoria como un módulo del kernel, así que conviene leer los anteriores posts sobre programación de módulos del kernel Linux y cómo usar /proc desde un módulo del kernel Linux . Para compilar el módulo me he basado en el entorno para desarrollo para kernel Linux que publiqué en un anterior artículo. Voy a comenzar presentando un ejemplo sencillo que seguidamente pasaré a analizar.

Usar /proc desde un módulo del kernel Linux

Ya he dedicado un artículo a cómo programar un módulo para el kernel . Hoy vamos a dar una vuelta más de tuerca y vamos a ver cómo usar /proc desde un módulo del kernel Linux. Esto nos permitirá tener un medio de comunicación desde nuestros módulos del kernel con el exterior.

Desarrollo de módulos para el kernel Linux

Una de las primeras cosas que tiene que saber un hacker del kernel es cómo crear un módulo para el kernel Linux. Para continuar leyendo este artículo es conveniente haber leído antes el anterior Entorno para desarrollo del kernel Linux . Linux es un kernel del tipo monolítico, lo cual quiere decir, grosso modo, que todo el kernel es un gran archivo ejecutable que se carga y toma el control al iniciar el ordenador. El problema de este tipo de kernels es que al compilarlo hay que añadir todos los controladores para el hardware que queremos soportar. Esto es un problema si queremos hacer un kernel genérico que soporte una gran variedad de dispositivos, ya que su tamaño será considerable, e incluso inviable. Linux soluciona este problema a través de los módulos, por lo que podemos decir que Linux es un kernel modular que carga en memoria aquellos módulos que necesita en cada momento. Las distribuciones genéricas, como por ejemplo, Ubuntu, compilan un núcleo muy pequeño con lo mínimo para...

Entorno para desarrollo y hacking del kernel Linux

Antes de empezar a desarrollar o a hacer hacking del kernel Linux es necesario preparar un entorno que nos permita hacer modificaciones en el núcleo, compilarlo y probarlo de forma que no afecte a nuestra máquina de desarrollo (no queremos que un error de programación impida que nuestra máquina vuelva a arrancar). A mí, personalmente me gusta usar una máquina virtual en Qemu, aunque hay diferentes alternativas, como preparar un entorno chroot. Aquí voy a describir como lo hago yo, que por supuesto no tiene por qué ser la mejor manera. Por último, antes de comenzar, señalar que en mi máquina de desarrollo utilizo Ubuntu, por lo que las siguientes instrucciones son directamente aplicables a este sistema operativo (aunque son fácilmente adaptables a cualquier otra distribución Linux).