PDA

Ver la versión completa : Malware que sobrevive a formateos, vive en la BIOS



4v7n42
25-03-2009, 04:03
Un par de investigadores argentinos,han encontrado una manera de realizar un ataque malware a nivel BIOS que puede sobrevivir al formateo del disco duro de un ordenador como a re-flaseo de la BIOS.

Ortega y Sacco forman parte de Core Security Technologies y participaron en la pasada conferencia CanSecWest demostrando métodos con los que infectar la BIOS de un ordenador con código persistente que sobrevive tanto a formateo del ordenador como a intentos de re-flaseo de la BIOS.


http://tbn2.google.com/images?q=tbn:soZ2ulRrICmxfM:https://belenus.unirioja.es/~alortiz/imagenes/chip_bios.jpg

La técnica en cuestión incluye el parcheo de la BIOS con una pequeño código que otorga el completo control de la máquina. La demostración funcionó de forma correcta en una máquina Windows, en otra con OpenBSD y otra corriendo VMware Player.

En palabras de Alfredo Ortega: “fue muy fácil. Podemos poner el código donde queramos [...] No estamos usando una vulnerabilidad de ningún tipo. No estoy seguro de si entendéis el impacto de ello. Podemos reinfectar la BIOS cada vez que se reinicia“.

PDF demostrativo (http://www.theinquirer.es/wp-content/uploads/2009/03/core_bios.pdf)

Fuente (http://www.theinquirer.es/2009/03/24/malware-que-sobrevive-a-formateos.html#comment-178907)

gondar_f
25-03-2009, 14:28
Juas pues me acuerdo que paso a finales de los noventa con el virus chernobil que infectaba las BIOS... uf! hoy en día la cosa sería mil veces más peligrosa...

Ashura Blood
25-03-2009, 17:10
que extraño que no se armara la gorda... hay que tener cuidado con estas cosas...

hystd
25-03-2009, 21:01
Bueno, el tema de modificar el firmware de la BIOS está presente desde que se creó el primer PC... Me refiero a que no es nada nuevo... De hecho los primeros virus (allá por la época del DOS), se basaban en modificar los vectores de interrupción, o bien, como la que comenta el PDF, cambiar la EA del JMP que se produce siempre al ejecutar la primera instrucción de este firmware, logrando que el registro EIP apunte hacia el código maligno.

Sólo quiero hacer un pequeño inciso referente a la forma de infección. Si hablamos de infectar cuando aún no hay carga de SO presente, me puedo creer que reprogramar el firmware de la BIOS es posible (de hecho lo es). Ahora bien, si hablamos de infectar cuando el SO ya ha cargado, en el caso de un Windows superior a 95/98/ME, es necesario utilizar FORZOSAMENTE un Driver para lograr acceder a las posiciones de memoria en donde se encuentran mapeados los puertos de E/S del BIOS. De lo contrario no es posible utilizar instrucciones del tipo in/out para leer o escribir nada.

Con esto me refiero a que para modificar el software del BIOS es necesario que el usuario sea consciente de ello. Ningún software que se ejecute bajo un SO con protecciones basadas en anillos, puede acceder al hardware si no es mediante un driver. La cuestión es... ¿Es posible detectar la presencia de ese driver? la respuesta es si, aunque con mayor dificultad, ya que entre otras cosas, los drivers tienen cualidades como paginar o no a disco y hacerlo cuando crean lo crean conveniente (Usando por ejemplo el Pagedpool y el NonPagedPool, o incluso el Stack del Kernel), además que no es sólo paginar o no, un driver va más allá de eso como para hablar sólo de paginación... pero no vamos a entrar en eso ahora.

Otra cuestión... Dice que reflasheando (o reprogramando) el BIOS con el firmware original no se conseguiría nada y el virus seguiría residente... bueno, eso no es del todo así... en realidad si tu restauras el firmware original, el código maligno habrá sido machacado. Ahora bien, si tras eso, se realiza la carga del SO y el maldito driver vuelve a ejecutar su rutina de infección, entonces estaremos en las mismas. Es más no hace falta esperar a cargar ese driver, ya que suponiendo que no sólo se haya modificado el BIOS, sino el MBR del sector de arranque del disco duro maestro con una rutina que se basa en reinfectar el BIOS, estaría totalmente en un bucle de infección. Pero bueno... esto tiene solución que comentaré a continuación.

Despues, dice que formateando el disco no se consigue nada, pero falta añadir a eso que depende si el formateo se basa en poner a 0 la tabla de partición, o por contra es a bajo nivel, o incluso utilizando algoritmos de eliminación seguros de datos, por mucho que el driver haya podido sobreescribir el MBR del sector de arranque por un código distinto, si el formato se ha hecho a bajo nivel (sobreescribiendo cada sector por 0's, por ejemplo), el virus habrá desaparecido.

Además, mencionar otra cuestión... si por algún casual resulta que el MBR ha sido modificado, y esa rutina se basa en ejecutar una instrucción de salto en vez de al primer sector de partición, hacia una zona en el disco la cual carga una máquina virtual que simula la ejecución de un Windows normal (Algo similar a lo que ocurre con la técnica Blue Pill), tampoco habría que dramatizar...

Simplemente y resumiendo, suponiendo que por algún remoto casual somos infectados, entonces

1º Reflasheando la BIOS
2º Reiniciando el sistema
3º Entrando en el SETUP del BIOS (recordar que ya tenemos el firmware original)
4º Establecer como unidad arrancable otro medio distinto al HD maestro
5º Arrancando desde ese medio
6º Formateando a bajo nivel el HD maestro.

tienemos el tema zanjado. Y cuando he enumerado 1º, 2º, 3º, etc.. me refiero a ese orden estrictamente y a ese número de pasos exactos (sin hacer nada extraño de por medio).

Me baso con toda seguridad en decir ésto, porque la arquitectura tanto hardware (x86) como software, sigue siendo la misma.

Un saludo.

4v7n42
25-03-2009, 22:14
Simplemente y resumiendo, suponiendo que por algún remoto casual somos infectados, entonces

1º Reflasheando la BIOS
2º Reiniciando el sistema
3º Entrando en el SETUP del BIOS (recordar que ya tenemos el firmware original)
4º Establecer como unidad arrancable otro medio distinto al HD maestro
5º Arrancando desde ese medio
6º Formateando a bajo nivel el HD maestro.

Un saludo.

pero culquiera de esas cosas es bastante drastica
xD
"me agarre un virus"
"vale, haz un formateo a bajo a nivel y despues reseteas la BIOS"

nota: proximamente.. (ojala no)
aparecen virus en la BIOS y apareceran ativirus para la BIOS y tendremos el eterno juego del gato y el raton en nuestra bios, (donde el gato muchas veces crea los ratones solo para que lo mantengamos).

hystd
25-03-2009, 22:39
jejeje, cuando dije drástico me referia a que no va a estar ahi siempre como nos hacen creer. La solución que he propuesto sería en última instancia (como último recurso). Por supuesto que lo ideal es poder siempre quitar el virus sin perder información, sería interesante tener una copia de ese virus para echarle un vistazo y ver realmente qué hace y cómo, tal vez así se pueda hallar la contramedida o el antivirus.

Como ya dije si la infeccion se realiza bajo Windows, sin consentimiento del usuario, es necesaria la presencia de un driver. Pues bien, así a bote pronto, de forma genérica, es posible por ejemplo implementar un Lower FiDO que intercepte los IRP's que llegan del driver de función (el del virus), tras peticiones realizadas por una aplicación infectada (por ejemplo mediante inyección DLL con Hooks, tal y como comenta el PDF), y según sea el tipo de petición que solicita el IRP que nos llega, dejaremos o no pasarlo al driver de bus, el cual será quien finalmente acceda al hardware utilizando las macros del HAL.

Eso si, este ejemplo de solución serviría para evitar una infección. Para el caso de que estemos ya infectados, habría que analizar con más detalle.


Un saludo.

Tcp_syn
27-03-2009, 04:41
Ese alfredo es un capo, hace unos años hackeo Openbsd. Sin embargo las "Rootkits" del Bios datan desde hace mucho tiempo ya sea para Rastrear notebooks robadas (Computrace), hacer trampa en los videojegos, etc.