Sie sind auf Seite 1von 128

"If you're a good hacker, everyone knows your name.

If you're a great hacker, no one knows who you are"

This document is licensed under the Attribution-ShareAlike 3.0 Unported license, available at http://creativecommons.org/licenses/by-sa/3.0/.

INDICE
INFORMACION DEL AUTOR..........................................................................................................4 INTRODUCCION A LA SEGURIDAD...............................................................................................5 FILOSOFIA HACKER..................................................................................................................... 12 FOOTPRINTING............................................................................................................................ 17 GOOGLE HACKING...................................................................................................................... 25 SCANNING & ENUMERATION......................................................................................................29 SYSTEM HACKING....................................................................................................................... 33 DENEGACION DE SERVICIO.......................................................................................................39 PREVINIENDO UN DoS................................................................................................................. 45 INGENIERIA SOCIAL..................................................................................................................... 48 HIJACKING.................................................................................................................................... 58 SESSION HIJACKING................................................................................................................... 59 VULNERABILIDADES EN APLICACIONES WEB..........................................................................61 W3AF............................................................................................................................................. 63 EVASION DE FIREWALLS............................................................................................................ 76 EVASION DE IDS.......................................................................................................................... 83 HONEYPOTS................................................................................................................................. 87 CRIPTOGRAFIA PROTECCION DE DATOS..............................................................................91 FIRMA DIGITAL ............................................................................................................................ 93 GPG (Gnu Privacy Guard).............................................................................................................. 94 TALLER DE APACHE SECURITY...............................................................................................100 TALLER DE IPTABLES................................................................................................................ 106 TALLER DE SNORT.................................................................................................................... 124

INFORMACION DEL AUTOR


Jos Mara Schenone
Profesional con ms de 15 aos de experiencia real trabajando en diferentes empresas y organizmos del estado coordinando y realizando implementaciones con Linux. Hace 3 aos que se desempea como instructor en cursos relacionados con Linux y Seguridad Informtica. Vive en Buenos Aires y actualmente es el CEO y Director de su propia consultora. Coordinador del rea de capacitacin profesional en dotLinuX Training Consultor en Seguridad y GNU/Linux Administrador de Redes Linux con mas de 15 aos de experiencia Consultor para el proyecto "Debian Linux" en Argentina (http://www.debian.org) Fundador de la Asociacin Argentina de Hackers Eticos (http://www.oahe.org.ar) Coordinador de las Conferencias Latinoamericanas de Seguridad (http://www.conlaseg.org)

Como consultor independiente, desarroll y particip en la implementacin de soluciones en lugares como: Ministerio de Defensa de la Repblica Argentina Direccin General de Administracin de Infracciones (Gobierno de la Ciudad de Buenos Aires) Unidad Administrativa de Control de Faltas (Gobierno de la Ciudad de Buenos Aires) Educ.ar Sistema de Observaciones y Recomendaciones para el Gobierno de la Ciudad de Buenos Aires Facultad de Filosofa y Letras (UBA) Instituto Nacional de Servicios Sociales para Jubilados y Pensionados Caja de Valores S.A. - Central Depositaria Argentina Telecom Personal Argentina Techint Argentina

Forma de Contacto para Consultas

Email: jose@dotlinux.com.ar

-4-

INTRODUCCION A LA SEGURIDAD
Qu es la Seguridad Informtica?
La seguridad informtica es el rea de la informtica que se enfoca en la proteccin de la infraestructura computacional y todo lo relacionado con esta (incluyendo la informacin contenida). Para ello existen una serie de estndares, protocolos, mtodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la informacin. La seguridad informtica comprende software, bases de datos, metadatos, archivos y todo lo que la organizacin valore (activo) y signifique un riesgo si sta llega a manos de otras personas. Este tipo de informacin se conoce como informacin privilegiada o confidencial. El concepto de seguridad de la informacin no debe ser confundido con el de seguridad informtica, ya que este ltimo slo se encarga de la seguridad en el medio informtico, pudiendo encontrar informacin en diferentes medios o formas.

Objetivos de la seguridad informtica


La seguridad informtica est concebida para proteger los activos informticos, entre los que se encuentran: La informacin contenida : Se ha convertido en uno de los elementos ms importantes dentro de una organizacin. La seguridad informtica debe ser administrada segn los criterios establecidos por los administradores y supervisores, evitando que usuarios externos y no autorizados puedan acceder a ella sin autorizacin. De lo contrario la organizacin corre el riesgo de que la informacin sea utilizada maliciosamente para obtener ventajas de ella o que sea manipulada, ocasionando lecturas erradas o incompletas de la misma. Otra funcin de la seguridad informtica en esta rea es la de asegurar el acceso a la informacin en el momento oportuno, incluyendo respaldos de la misma en caso de que esta sufra daos o prdida producto de accidentes, atentados o desastres. La infraestructura computacional : Una parte fundamental para el almacenamiento y gestin de la informacin, as como para el funcionamiento mismo de la organizacin. La funcin de la seguridad informtica en esta rea es velar que los equipos funcionen adecuadamente y prever en caso de falla planes de robos, incendios, boicot, desastres naturales, fallas en el suministro elctrico y cualquier otro factor que atente contra la infraestructura informtica. Los usuarios : Son las personas que utilizan la estructura tecnolgica, zona de comunicaciones y que gestionan la informacin. La seguridad informtica debe establecer normas que minimicen los riesgos a la informacin o infraestructura informtica. Estas normas incluyen horarios de funcionamiento, restricciones a ciertos lugares, autorizaciones, denegaciones, perfiles de usuario, planes de emergencia, protocolos y todo lo necesario que permita un buen nivel de seguridad
-5-

informtica minimizando el impacto en el desempeo de los funcionarios y de la organizacin en general y como principal contribuyente al uso de programas realizados por programadores.

Las amenazas
Una vez que la programacin y el funcionamiento de un dispositivo de almacenamiento (o transmisin) de la informacin se consideran seguras, todava deben ser tenidos en cuenta las circunstancias "no informticas" que pueden afectar a los datos, las cuales son a menudo imprevisibles o inevitables, de modo que la nica proteccin posible es la redundancia (en el caso de los datos) y la descentralizacin -por ejemplo mediante estructura de redes- (en el caso de las comunicaciones). Estos fenmenos pueden ser causados por: El usuario: causa del mayor problema ligado a la seguridad de un sistema informtico (porque no le importa, no se da cuenta o a propsito). Programas maliciosos: programas destinados a perjudicar o a hacer un uso ilcito de los recursos del sistema. Es instalado (por inatencin o maldad) en el ordenador abriendo una puerta a intrusos o bien modificando los datos. Estos programas pueden ser un virus informtico, un gusano informtico, un troyano, una bomba lgica o un programa espa o Spyware. Un intruso: persona que consigue acceder a los datos o programas de los cuales no tiene acceso permitido (cracker, defacer, script kiddie o Script boy, viruxer, etc.). Un siniestro (robo, incendio, inundacin): una mala manipulacin o una malintencin derivan a la prdida del material o de los archivos. El personal interno de Sistemas: Las pujas de poder que llevan a disociaciones entre los sectores y soluciones incompatibles para la seguridad informtica.

Tipos de amenaza
El hecho de conectar una red a un entorno externo nos da la posibilidad de que algn atacante pueda entrar en ella, con esto, se puede hacer robo de informacin o alterar el funcionamiento de la red. Sin embargo el hecho de que la red no sea conectada a un entorno externo no nos garantiza la seguridad de la misma. De acuerdo con el Computer Security Institute (CSI) de San Francisco aproximadamente entre 60 y 80 por ciento de los incidentes de red son causados desde adentro de la misma. Basado en esto podemos decir que existen 2 tipos de amenazas: Amenazas internas: Generalmente estas amenazas pueden ser ms serias que las externas por varias razones como son: Los usuarios conocen la red y saben cmo es su funcionamiento Tienen algn nivel de acceso a la red por las mismas necesidades de su trabajo

-6-

Los IPS y Firewalls son mecanismos no efectivos en amenazas internas

Esta situacin se presenta gracias a los esquemas ineficientes de seguridad con los que cuentan la mayora de las compaas a nivel mundial, y porque no existe conocimiento relacionado con la planeacin de un esquema de seguridad eficiente que proteja los recursos informticos de las actuales amenazas combinadas. El resultado es la violacin de los sistemas, provocando la prdida o modificacin de los datos sensibles de la organizacin, lo que puede representar un dao con valor de miles o millones de dlares. Amenazas externas: Son aquellas amenazas que se originan de afuera de la red. Al no tener informacin certera de la red, un atacante tiene que realizar ciertos pasos para poder conocer qu es lo que hay en ella y buscar la manera de atacarla. La ventaja que se tiene en este caso es que el administrador de la red puede prevenir una buena parte de los ataques externos.

La amenaza informtica del futuro


Si en un momento el objetivo de los ataques fue cambiar las plataformas tecnolgicas ahora las tendencias cibercriminales indican que la nueva modalidad es manipular los significados de la informacin digital. El rea semntica, era reservada para los humanos, se convirti ahora en el ncleo de los ataques debido a la evolucin de la Web 2.0 y las redes sociales, factores que llevaron al nacimiento de la generacin 3.0. Se puede afirmar que la Web 3.0 otorga contenidos y significados de manera tal que pueden ser comprendidos por las computadoras, las cuales -por medio de tcnicas de inteligencia artificial- son capaces de emular y mejorar la obtencin de conocimiento, hasta el momento reservada a las personas. Es decir, se trata de dotar de significado a las pginas Web, y de ah el nombre de Web semntica o Sociedad del Conocimiento, como evolucin de la ya pasada Sociedad de la Informacin

En este sentido, las amenazas informticas que viene en el futuro ya no son con la inclusin de troyanos en los sistemas o softwares espas, sino con el hecho de que los ataques se han profesionalizado y manipulan el significado del contenido virtual. La Web 3.0, basada en conceptos como elaborar, compartir y significar, est representando un desafo para los hackers que ya no utilizan las plataformas convencionales de ataque, sino que optan por modificar los significados del contenido digital, provocando as la confusin lgica del usuario y permitiendo de este modo la intrusin en los sistemas, La amenaza ya no solicita la clave de homebanking del desprevenido usuario, sino que directamente modifica el balance de la cuenta, asustando al internauta y, a partir de all, s efectuar el robo del capital.

Para no ser presa de esta nueva ola de ataques ms sutiles, Se recomienda: Mantener las soluciones activadas y actualizadas. Evitar realizar operaciones comerciales en computadoras de uso pblico.

-7-

Verificar los archivos adjuntos de mensajes sospechosos y evitar su descarga en caso de duda.

Anlisis de riesgos
El activo ms importante que se posee es la informacin y, por lo tanto, deben existir tcnicas que la aseguren, ms all de la seguridad fsica que se establezca sobre los equipos en los cuales se almacena. Estas tcnicas las brinda la seguridad lgica que consiste en la aplicacin de barreras y procedimientos que resguardan el acceso a los datos y slo permiten acceder a ellos a las personas autorizadas para hacerlo. Existe un viejo dicho en la seguridad informtica que dicta: "lo que no est permitido debe estar prohibido" y sta debe ser la meta perseguida. Los medios para conseguirlo son: 1. Restringir el acceso (de personas de la organizacin y de las que no lo son) a los programas y archivos. 2. Asegurar que los operadores puedan trabajar pero que no puedan modificar los programas ni los archivos que no correspondan (sin una supervisin minuciosa). 3. Asegurar que se utilicen los datos, archivos y programas correctos en/y/por el procedimiento elegido. 4. Asegurar que la informacin transmitida sea la misma que reciba el destinatario al cual se ha enviado y que no le llegue a otro. 5. Asegurar que existan sistemas y pasos de emergencia alternativos de transmisin entre diferentes puntos. 6. Organizar a cada uno de los empleados por jerarqua informtica, con claves distintas y permisos bien establecidos, en todos y cada uno de los sistemas o aplicaciones empleadas. 7. Actualizar constantemente las contraseas de accesos a los sistemas de cmputo.

Puesta en marcha de una poltica de seguridad


Actualmente las legislaciones nacionales de los Estados, obligan a las empresas, instituciones pblicas a implantar una poltica de seguridad. Ej: En Espaa la Ley Orgnica de Proteccin de Datos o tambin llamada LOPD y su normativa de desarrollo. Generalmente se ocupa exclusivamente a asegurar los derechos de acceso a los datos y recursos con las herramientas de control y mecanismos de identificacin. Estos mecanismos permiten saber que los operadores tienen slo los permisos que se les dio. La seguridad informtica debe ser estudiada para que no impida el trabajo de los operadores en lo que les es necesario y que puedan utilizar el sistema informtico con toda confianza. Por eso en lo referente a elaborar una poltica de seguridad, conviene:
-8-

Elaborar reglas y procedimientos para cada servicio de la organizacin. Definir las acciones a emprender y elegir las personas a contactar en caso de detectar una posible intrusin Sensibilizar a los operadores con los problemas ligados con la seguridad de los sistemas informticos.

Los derechos de acceso de los operadores deben ser definidos por los responsables jerrquicos y no por los administradores informticos, los cuales tienen que conseguir que los recursos y derechos de acceso sean coherentes con la poltica de seguridad definida. Adems, como el administrador suele ser el nico en conocer perfectamente el sistema, tiene que derivar a la directiva cualquier problema e informacin relevante sobre la seguridad, y eventualmente aconsejar estrategias a poner en marcha, as como ser el punto de entrada de la comunicacin a los trabajadores sobre problemas y recomendaciones en trmino de seguridad informtica.

Tcnicas para asegurar el sistema


Codificar la informacin: Criptologa, Criptografa y Criptociencia, contraseas difciles de averiguar a partir de datos personales del individuo. Vigilancia de red. Zona desmilitarizada Tecnologas repelentes o protectoras: cortafuegos, sistema de deteccin de intrusos - antispyware, antivirus, llaves para proteccin de software, etc. Mantener los sistemas de informacin con las actualizaciones que ms impacten en la seguridad. Sistema de Respaldo Remoto. Servicio de backup remoto

Respaldo de Informacin
La informacin constituye el activo ms importante de las empresas, pudiendo verse afectada por muchos factores tales como robos, incendios, fallas de disco, virus u otros. Desde el punto de vista de la empresa, uno de los problemas ms importantes que debe resolver es la proteccin permanente de su informacin crtica. La medida ms eficiente para la proteccin de los datos es determinar una buena poltica de copias de seguridad o backups: Este debe incluir copias de seguridad completa (los datos son almacenados en su totalidad la primera vez) y copias de seguridad incrementales (slo se copian los archivos creados o modificados desde el ltimo backup). Es vital para las empresas elaborar un plan de backup en funcin del volumen de informacin generada y la cantidad de equipos crticos. Un buen sistema de respaldo debe contar con ciertas caractersticas indispensables: Continuo : El respaldo de datos debe ser completamente automtico y continuo. Debe funcionar de forma transparente, sin intervenir en las tareas que se encuentra realizando el usuario. Seguro : Muchos softwares de respaldo incluyen cifrado de datos (128-448 bits), lo

-9-

cual debe ser hecho localmente en el equipo antes del envo de la informacin. Remoto : Los datos deben quedar alojados en dependencias alejadas de la empresa. Mantencin de versiones anteriores de los datos : Se debe contar con un sistema que permita la recuperacin de versiones diarias, semanales y mensuales de los datos.

Hoy en da los sistemas de respaldo de informacin online (Servicio de backup remoto) estn ganando terreno en las empresas y organismos gubernamentales. La mayora de los sistemas modernos de respaldo de informacin online cuentan con las mximas medidas de seguridad y disponibilidad de datos. Estos sistemas permiten a las empresas crecer en volumen de informacin sin tener que estar preocupados de aumentar su dotacin fsica de servidores y sistemas de almacenamiento.

Consideraciones de software
Tener instalado en la mquina nicamente el software necesario reduce riesgos. As mismo tener controlado el software asegura la calidad de la procedencia del mismo (el software obtenido de forma ilegal o sin garantas aumenta los riesgos). En todo caso un inventario de software proporciona un mtodo correcto de asegurar la reinstalacin en caso de desastre. El software con mtodos de instalacin rpidos facilita tambin la reinstalacin en caso de contingencia. Existe un software que es conocido por la cantidad de agujeros de seguridad que introduce. Se pueden buscar alternativas que proporcionen iguales funcionalidades pero permitiendo una seguridad extra.

Consideraciones de una red


Los puntos de entrada en la red son generalmente el correo, las pginas web y la entrada de archivos desde discos, o de ordenadores ajenos, como porttiles. Mantener al mximo el nmero de recursos de red slo en modo lectura, impide que ordenadores infectados propaguen virus. En el mismo sentido se pueden reducir los permisos de los usuarios al mnimo. Se pueden centralizar los datos de forma que detectores de virus en modo batch puedan trabajar durante el tiempo inactivo de las mquinas. Controlar y monitorizar el acceso a Internet puede detectar, en fases de recuperacin, cmo se ha introducido el virus.

- 10 -

Algunas afirmaciones seguridad

errneas

comunes

acerca

de

la

Mi sistema no es importante para un cracker Esta afirmacin se basa en la idea de que no introducir contraseas seguras en una empresa no entraa riesgos pues quin va a querer obtener informacin ma?. Sin embargo, dado que los mtodos de contagio se realizan por medio de programas automticos, desde unas mquinas a otras, estos no distinguen buenos de malos, interesantes de no interesantes, etc. Por tanto abrir sistemas y dejarlos sin claves es facilitar la vida a los virus. Estoy protegido pues no abro archivos que no conozco Esto es falso, pues existen mltiples formas de contagio, adems los programas realizan acciones sin la supervisin del usuario poniendo en riesgo los sistemas. Como tengo antivirus estoy protegido En general los programas antivirus no son capaces de detectar todas las posibles formas de contagio existentes, ni las nuevas que pudieran aparecer conforme los ordenadores aumenten las capacidades de comunicacin, adems los antivirus son vulnerables a desbordamientos de bfer que hacen que la seguridad del sistema operativo se vea ms afectada an. Como dispongo de un firewall no me contagio Esto nicamente proporciona una limitada capacidad de respuesta. Las formas de infectarse en una red son mltiples. Unas provienen directamente de accesos al sistema (de lo que protege un firewall) y otras de conexiones que se realizan (de las que no me protege). Emplear usuarios con altos privilegios para realizar conexiones puede entraar riesgos, adems los firewalls de aplicacin (los ms usados) no brindan proteccin suficiente contra el spoofing. Tengo un servidor web cuyo sistema operativo es un Unix actualizado a la fecha Puede que este protegido contra ataques directamente hacia el ncleo, pero si alguna de las aplicaciones web (PHP, Perl, Cpanel, etc.) est desactualizada, un ataque sobre algn script de dicha aplicacin puede permitir que el atacante abra una shell y por ende ejecutar comandos en el unix.

Organismos oficiales de seguridad informtica


Existen organismos oficiales encargados de asegurar servicios de prevencin de riesgos y asistencia a los tratamientos de incidencias, tales como el CERT/CC (Computer Emergency Response Team Coordination Center) del SEI (Software Engineering Institute) de la Carnegie Mellon University el cual es un centro de alerta y reaccin frente a los ataques informticos, destinados a las empresas o administradores, pero generalmente estas informaciones son accesibles a todo el mundo.

- 11 -

FILOSOFIA HACKER
Qu es el ethical hacking?
El "ethical hacking" o "tica hacker" es una nueva tica surgida de y aplicada a las comunidades virtuales o cibercomunidades, aunque no exclusivamente. La expresin se suele atribuir al periodista Steven Levy en su ensayo seminal Hackers: Heroes of the Computer Revolution, publicado en 1984, donde describe y enuncia con detalle los principios morales que surgieron a finales de los aos cincuenta en el Laboratorio de Inteligencia Artificial del MIT y, en general, en la cultura de los aficionados a la informtica de los aos sesenta y setenta. Aquellos principios --que se resumen en el acceso libre a la informacin y en que la informtica puede mejorar la calidad de vida de las personas-- han constituido la base de la mayor parte de definiciones que se han elaborado posteriormente. Uno de sus mentores actuales ha sido el finlands Pekka Himanen. Himanen en su obra La tica del hacker y el espritu de la era de la informacin (que contiene un prlogo de Linus Torvalds y un eplogo de Manuel Castells), comienza por rescatar una de las acepciones originales del trmino 'hacker'. Segn Himanen, un hacker no es un delincuente, vndalo o pirata informtico con altos conocimientos tcnicos (a los que prefiere llamar crackers), sino que hacker es todo aquel que trabaja con gran pasin y entusiasmo por lo que hace. De ah que el trmino 'hacker' pueda y deba extrapolarse a otros mbitos como ser, por ejemplo, el cientfico. As Himanen escribe, En el centro de nuestra era tecnolgica se hallan unas personas que se autodenominan hackers. Se definen a s mismos como personas que se dedican a programar de manera apasionada y creen que es un deber para ellos compartir la informacin y elaborar software gratuito. No hay que confundirlos con los crackers, los usuarios destructivos cuyo objetivo es el de crear virus e introducirse en otros sistemas: un hacker es un experto o un entusiasta de cualquier tipo que puede dedicarse o no a la informtica. En este sentido, la tica hacker es una nueva moral que desafa la tica protestante del trabajo, tal como la expuso hace casi un siglo Max Weber en su obra clsica La tica protestante y el espritu del capitalismo, y que est fundada en la laboriosidad diligente, la aceptacin de la rutina, el valor del dinero y la preocupacin por la cuenta de resultados. Frente a la moral presentada por Weber, la tica del trabajo para el hacker se funda en el valor de la creatividad, y consiste en combinar la pasin con la libertad. El dinero deja de ser un valor en s mismo y el beneficio se cifra en metas como el valor social y el libre acceso, la transparencia y la franqueza.

Valores fundamentales
La tica hacker es una tica de tipo axiolgico, es decir, una tica basada en una determinada serie de valores. Himanen rescata algunos fundamentales, a saber: Pasin Libertad
- 12 -

Conciencia social Verdad Anti-corrupcin Lucha contra la alienacin del hombre Igualdad social Libre acceso a la informacin (conocimiento libre) Valor social (reconocimiento entre semejantes) Accesibilidad Actividad Preocupacin responsable Curiosidad Creatividad

Otros aspectos que resaltan de esta tica, es una frase muy sonada y maravillosa: "Ningn problema debera resolverse 2 veces", aludiendo a que el tiempo de los dems es muy valioso, y cuando resuelvas algo comunicalo a todos tus compaeros hackers para que puedan resolver otros problemas, aumentando la productividad.

Qu es un cracker?
El trmino cracker (del ingls crack, romper) se utiliza para referirse a las personas que rompen algn sistema de seguridad. Los crackers pueden estar motivados por una multitud de razones, incluyendo fines de lucro, protesta, o simplemente por el desafo de hacerlo. A partir de 1980 haba aparecido la cultura hacker, programadores aficionados o personas destacadas o con un importante conocimiento de informtica. Estos programadores no solan estar del lado de la ilegalidad, y aunque algunos conocan tcnicas para burlar sistemas de seguridad, se mantenan dentro del mbito legal. Pero con el tiempo surgieron personas que utilizando su conocimiento en informtica, aprovechaban debilidades o bugs de algunos sistemas informticos y los crackeaban, es decir, burlaban el sistema de seguridad muchas veces entrando en la ilegalidad y algunos considerando estas prcticas como "malas". A estas personas se las continu llamando hackers, por lo que alrededor de 1985 los hackers "originales" empezaron a llamarlos crackers en contraposicin al trmino hacker, en defensa de stos ltimos por el uso incorrecto del trmino. Por ello los crackers son criticados por la mayora de hackers, por el desprestigio que les supone ante la opinin pblica y las empresas ya que muchas veces, inclusive en los medios de comunicacin, no hacen diferencia entre el trmino hacker y cracker creando confusin sobre la definicin de los mismos y aparentando un significado similar.

- 13 -

Distintos usos del trmino


Se suele referir a una persona como cracker cuando: Mediante ingeniera inversa realiza: seriales, keygens y cracks, los cuales sirven para modificar el comportamiento o ampliar la funcionalidad del software o hardware original al que se aplican, y se los suele utilizar para saltearse restricciones como por ejemplo que un programa deje de funcionar a un determinado tiempo, o que slo funcione si es instalado desde un CD original, etc. Viola la seguridad de un sistema informtico y, por ejemplo, toma control de este, obtiene informacin, borra datos, etc.

En ambos casos dichas prcticas suelen ser ilegales y penadas por la ley.

Legalidad
Muchos programas informticos, usualmente los privativos, no permiten la modificacin o estudio del funcionamiento del programa, esto hace que el hecho de realizar ingeniera inversa para poder generar un serial o un crack sea ilegal. En ocasiones el cracking es la nica manera de realizar cambios sobre software para el que su fabricante no presta soporte, especialmente cuando lo que se quiere es, o corregir defectos, o exportar datos a nuevas aplicaciones, en estos casos en la mayora de legislaciones no se considera el cracking como actividad ilegal,[cita requerida] incluso a veces la empresa que desarroll el software ya no existe o ya no posee los derechos sobre el producto. A su vez cuando una persona penetra en un sistema ajeno sin su autorizacin, se comete una violacin a la propiedad privada, se suele dar el ejemplo de que es ilegal entrar sin permiso a la casa de otra persona, por ms de que la puerta est abierta. Aunque tambin las tcticas utilizadas por los crackers para violar los sistemas de seguridad suelen ser utilizadas por empresas de seguridad informtica u otras personas para testear la seguridad de un programa o computadora, en dicho caso como se tiene el permiso para realizar el "ataque" o bien, es el mismo dueo de la computadora el que lo realiza, ya no es una prctica ilegal y entrara en disputa tambin el uso del trmino cracker para dichos actos, por esto se han creado diversas leyes que tratan de solucionar estas diferencias.

Qu es un hacker?
Un hacker es una persona apasionada por la seguridad informtica. Esto concierne principalmente a entradas remotas no autorizadas por medio de redes de comunicacin como Internet ("Black hats"). Pero tambin incluye a aquellos que depuran y arreglan errores en los sistemas ("White hats") y a los de moral ambigua como son los "Grey hats". Los hackers son son una comunidad de entusiastas programadores y diseadores de sistemas originada en los sesenta alrededor del Instituto Tecnolgico de Massachusetts (MIT), el Tech Model Railroad Club (TMRC) y el Laboratorio de Inteligencia Artificial del MIT. Esta comunidad se caracteriza por el lanzamiento del movimiento de software libre. La World Wide Web e Internet en s misma son creaciones de hackers. El RFC 13924 amplia este significado como "persona que se disfruta de un conocimiento profundo del
- 14 -

funcionamiento interno de un sistema, en particular de computadoras y redes informticas" Muchos hackers pertenecen a la comunidad de aficionados a la informtica domstica, centrada en el hardware posterior a los setenta y en el software (juegos de ordenador, crackeo de software, la demoscene) de entre los ochenta/noventa. En la actualidad el trmino hacker se utiliza de forma corriente para referirse mayormente a los criminales informticos, debido a su utilizacin masiva por parte de los medios de comunicacin desde la dcada de 1980. A los criminales se le pueden sumar los llamados "script kiddies", gente que invade computadoras, usando programas escritos por otros, y que tiene muy poco conocimiento sobre como funcionan. Este uso parcialmente incorrecto se ha vuelto tan predominante que, en general, un gran segmento de la poblacin no es consciente de que existen diferentes significados. Mientras que los hackers aficionados reconocen los tres tipos de hackers y los hackers de la seguridad informtica aceptan todos los usos del trmino, los hackers del software libre consideran la referencia a intrusin informtica como un uso incorrecto de la palabra, y se refieren a los que rompen los sistemas de seguridad como "crackers" (analoga de "safecracker", que en espaol se traduce como "un ladrn de cajas fuertes").

Controversia y ambigedad
En un principio se utilizaba "hack" como verbo para expresar "perder el tiempo" (e.j. "Puedo hackear con el ordenador"), el significado del trmino ha cambiado a lo largo de dcadas desde que empez a utilizarse en un contexto informtico. Como su uso se ha extendido ms ampliamente, el significado primario de la palabra, por parte de los nuevos usuarios, ha pasado a uno que entra en conflicto con el nfasis original.

El Emblema Hacker
El Emblema Hacker fue propuesto primero en Octubre de 2003 por Eric S. Raymond, alegando la necesidad de una unificacin y un smbolo reconocible para la percepcin de la cultura hacker. Esto no se refiere a la accin de infringir irrumpir sin permiso computadores/ordenadores. Tal accin es realizada por los llamados crackers. en los

El emblema Hacker

- 15 -

Raymond ha dicho que uno no pretende ser un hacker slo para mostrar este emblema, pero sugiere que:

"el uso de este emblema expresa la solidaridad con los objetivos y valores de los hackers, y la forma de vivir de un hacker"
La imagen en s misma es una representacin de un planeador (Glider), una formacin en el Juego de la vida de John Conway que viaja en todos los mbitos. Se descubri por primera vez por Richard K. Guy. Es la ms pequea nave espacial, y se desplaza en forma diagonal a una velocidad de c/4. El planeador es a menudo producido a partir de generaciones preconfiguradas aleatorias. Los planeadores son importantes para el juego de la vida porque son producidas con facilidad, pueden ser colisionado entre s para formar objetos ms complejos, y puede utilizarse para transmitir informacin a largas distancias. Eric S. Raymond ha propuesto al planeador como un emblema para representar a los hackers porque: El planeador (Glider) "naci casi al mismo tiempo que el Internet y Unix". El Juego de la vida hace un llamamiento a los hackers.

- 16 -

FOOTPRINTING
Qe es el Footprinting?
El Footprinting consiste en la bsqueda de toda la informacin pblica, bien porque haya sido publicada a propsito o bien porque haya sido publicada por desconocimiento (abierta, y por tanto no estaremos incurriendo en ningn delito, adems la entidad ni debera detectarlo) que pueda haber sobre el sistema que se va a auditar, es decir, buscaremos todas las huellas posibles, desde direcciones IP, servidores internos, cuentas de correo de los usuarios, nombres de mquinas, informacin del registrador del dominio, tipos de servidores, archivos con cuentas y/o credenciales de usuarios, impresoras, cmaras IP, metadatos, etc. Cualquier dato que nos pueda ser de utilidad para lanzar distintos ataques en las fases posteriores de la auditora. Si enumeramos los pasos genricos para realizar un Test de Intrusin, el proceso de Footprinting sera el primero de ellos: Footprinting Fingerprinting Anlisis de vulnerabilidades Explotacin de vulnerabilidades Generacin de informes En este capitulo veremos las practicas ms comunes para realizar una bsqueda de informacin. Pongamos como ejemplo que tenemos que auditar al instituto que tiene en el dominio www.dotlinux.com.ar su sitio Web y desde el que se pueden conectar a distintos servicios que ofrece.

Visitar el sitio Web


El primer paso ser evidentemente entrar en el sitio Web que vamos a auditar. Deberemos navegar por todas sus pginas y aplicaciones, ya que nunca sabemos que nos vamos a encontrar. Es habitual, sobretodo en sitios Web muy grandes, que se dejen olvidados enlaces a sitios que no deberan estar, o algn error en una llamada a BBDD (algo ms comn de lo que se piensa verdad? ). Tras hacernos una idea del estado de la web continuaremos con el siguiente paso.

Qu saben los buscadores de nuestro objetivo?


El segundo paso de cualquier proceso de Footprinting sera preguntar a Google, Bing, etc. por el dominio del que queremos obtener informacin. Lo bueno (o malo segn se mire) de los buscadores es que sus crawlers suelen indexar en ocasiones ciertas pginas que no deberan haberse publicado, pero que han estado cierto tiempo visibles desde Internet mientras se estaban probando, y han quedado cacheadas en Google. Por lo tanto
- 17 -

podramos verlas mirando la cach o con algn servicio como archive.org Continuaremos con las bsquedas hacking, utilizando diferentes verbos para refinar un poco ms las bsquedas. Por ejemplo, es interesante ver que saben o dicen los dems de nuestro objetivo, para ello podemos ayudarnos de la siguiente bsqueda en Google, donde el - indca que queremos ver todos los resultados menos los del dominio objetivo:
dotlinux -site:dotlinux.com.ar

Algunos verbos a destacar seran: site: para listar toda la informacin de un dominio concreto. filetype o ext: para buscar archivos de un formato determinado, por ejemplo pdf, rdp (de escritorio remoto), imgenes png, jpg, etc. para obtener informacin EXIF y un largo etctera. intitle: para buscar pginas con ciertas palabras en el campo title inurl: para buscar pginas con ciertas palabras en la URL. O buscar por ejemplo por la frase index of para encontrar listados de archivos de ftps, etc. Una vez que hayamos realizado algunas bsquedas especficas ser interesante listar todas las pginas que pendan del dominio raz. Para ello podemos ayudarnos de la bsqueda:
site:dotlinux.com.ar

En este punto podramos leernos el cdigo fuente de las distintas pginas encontradas, para ver si hay comentarios escritos por los programadores (algo comn) u otros datos que puedan ser de utilidad. Por ejemplo, en una ocasin me encontr con un comentario muy curioso que deca algo como lo siguiente:
<!Comentario del Diseador al Programador, el usuario para conectarse a la BBDD es PEPITO y la clave MENGANITO-->

Si quieren trabajar un poco menos pueden descargarse el sitio web entero con la herramienta wget y hacer bsquedas directamente sobre la carpeta donde est el sitio web descargado utilizando un grep, que realiza bsquedas muy rpidas sobre el contenido de los archivos de una carpeta. Wget puede trabajar bajando archivos en forma recursiva mediante el protocolo HTTP o FTP. La sintaxis de URL utilizada es la estndar:
http://host[:puerto]/path ftp://[username[:password]@]host/path/archivo

Normalmente no se necesitan opciones, salvo que se desee modificar el comportamiento estndar de wget. La lista de las opciones ms comunes en el uso de wget es la siguiente: -h help -v verbose
- 18 -

-nv no verbose (muestra solo mensajes de error) -q quiet (no muestra mensajes) -i filename lee la lista de URLs de 'filename' --follow-ftp sigue enlaces FTP desde documentos HTML -l depth cambia el nivel de recursividad a 'depth' (default 5) -r modo recursivo -nc no baja los archivos ya bajados (permite seguir de donde nos quedamos la ltima vez)

Para ms datos sobre su utilizacin chequear 'man wget' e 'info wget'. Ahora que tenemos mas informacion sobre los sitios, podremos hacer una consulta rapida para saber la ubicacin del servidor y su IP utilizando el servicio de www.ipadress.com/whois Tambin podremos encontrarnos con que varios dominios compartan una IP (virtual hosts), para buscarlos nos ser de especial utilidad el buscador Bing con su verbo IP

Servicios Web de bsqueda de informacin de un dominio


El siguiente paso que vamos a seguir en la bsqueda de informacin ser el uso de distintos servicios Web que hay por Internet y que nos permitirn analizar ciertos datos del dominio objetivo como por ejemplo su direccin IP, los subdominios que cuelgan del dominio principal, su registrador mediante consultas Whois, su localizacin en mapas, trazas, servidores de DNS, etc. Netcraft (http://searchdns.netcraft.com) Este servicio nos permitir analizar la informacin de un determinado dominio, proporcionndonos datos como sus direcciones IP, Servidores Web, Sistemas Operativos, etc. Cuwhois (http://www.cuwhois.com/) Una autntica navaja suiza. En la parte superior de la pgina tenemos enlazadas todas las herramientas que incorpora: Entre los datos ms interesantes que nos podr aportar se encuentran la IP, Servidores DNS, Registrador del dominio, Pas, Idioma, Lenguaje de programacin del sitio Web, codificacin, modelo del Servidor Web, la posicin en distintos rankings, feeds, incluso si comparte servidor Web con otras pginas nos proporcionar un listado con sus vecinos. IPTools (http://www.iptools.com/) Es otro servicio Web parecido a Cuwhois que incorpora gran cantidad de herramientas. Robtex (http://www.robtex.com/) Otro servicio parecido a Cuwhois, muy completo, que cuenta tambin con una gran cantidad de herramientas Yougetsignal (http://www.yougetsignal.com/) Otro todo en uno como Cuwhois, Robtex, etc. Intodns (http://www.intodns.com/) Herramienta para verificar el funcionamiento correcto de los servidores DNS y de correo que podremos utilizar para obtener informacin de los mismos
- 19 -

Freednsinfo (http://www.freednsinfo.com/) Otra herramient semejante a IPTools Dnsstuff (http://www.dnsstuff.com) Es un servicio similar a los anteriores, aunque no es gratuito. Dnsenquirty (http://www.dnsenquiry.com/) Otro servicio que nos permitir analizar el whois, dns lookup y ping Visualware (http://visualroute.visualware.com/) Servicio Web que nos permitir seguir visualmente el camino que se recorre hasta llegar a la IP del servidor objetivo. Requiere Java 123people (http://www.123people.es/) Con este servicio podremos buscar informacin sobre personas a partir de su nombre, nos ser de utilidad para saber informacin de una persona cuando hayamos conseguido su nombre a travs de metadatos, registro Whois, etc. Nos ayudar a encontrar sus posibles blogs, vdeos subidos a youtube, publicaciones, etc. Analizaremos un poco de su vida para futuros ataques con ingeniera social.

Finalmente la ltima tcnica que veremos ser el anlisis de cabeceras de los correos electrnicos. Para ello ser clave que consigamos que alguien de la organizacin a auditar nos enve un email, o tengan un sistema con el que podamos enviarlo nosotros mismos, como los tpicos de enviar esta noticia a un amigo:

- 20 -

Si analizamos el correo completo:

Obtener informacion de los DNS


En Internet existen sitios donde se realiza el registro de nombres de dominio, o sea donde yo registro www.soyunhacker.org y otros. El ms conocido de estos sitios es InterNIC. La informacin sobre nombres de dominio puede consultarse de muchas maneras, y es impresionante lo que puede averiguarse. Si bien las consultas pueden hacerse desde la pgina, en Linux tenemos el comando 'whois' que realiza justamente la funcin de consultar la base de datos de dominios de InterNIC. Veamos de qu formas podemos utilizarlo. Hagamos una consulta por todos los dominios que posean un determinado string. En nuestro caso probemos buscando Telefonica
jomax@g460:~$ whois -h whois.crsnic.net "Telefonica" TELEFONICA.VCRINGS.COM TELEFONICA.TUHOGAR.NET TELEFONICA.PTSSA.NET TELEFONICA.MOTOSTIVOLIRENT.NET TELEFONICA.ES TELEFONICA.EAW-WEB.COM TELEFONICA.DNSPERU123.BIZ TELEFONICA.COM.BR TELEFONICA.NET TELEFONICA.COM >>> Last update of whois database: Sat, 19 Nov 2011 20:01:31 UTC <<< The Registry database contains ONLY .COM, .NET, .EDU domains and Registrars.

Ahora que tenemos identificado el dominio que nos interesa podemos obtener informacin ms detallada utilizando nuevamente whois
jomax@g460:~$ whois telefonica.com

- 21 -

Server Name: TELEFONICA.COM.BR Registrar: DIRECTI INTERNET SOLUTIONS PVT. LTD. D/B/A PUBLICDOMAINREGISTRY.COM Whois Server: whois.PublicDomainRegistry.com Referral URL: http://www.PublicDomainRegistry.com Domain Name: TELEFONICA.COM Registrar: INTERDOMAIN, S.A. Whois Server: whois.interdomain.net Referral URL: http://www.interdomain.es Name Server: NS3CHOS01.TELEFONICA-DATA.COM Name Server: NSJC8HOS01.TELEFONICA-DATA.COM Status: clientDeleteProhibited Status: clientTransferProhibited Status: clientUpdateProhibited Updated Date: 18-oct-2006 Creation Date: 03-may-1996 Expiration Date: 04-may-2013 >>> Last update of whois database: Sat, 19 Nov 2011 19:48:24 UTC <<< The Registry database contains ONLY .COM, .NET, .EDU domains and Registrars. Domain Name................ Creation Date............ Expiry Date.............. Last Update Date......... Organization Contact Id.... Organization Name........ Organization Org......... Organization Street...... Organization City........ Organization State....... Organization PC.......... Organization Country..... Organization Phone....... Organization Fax......... Organization e-mail...... Administrative Contact Id.. Administrative Name...... Administrative Org....... Administrative Street.... Administrative City...... Administrative State..... Administrative PC........ Administrative Country... Administrative Phone..... Administrative Fax....... Administrative e-mail.... Technical Contact Id....... Technical Name........... Technical Org............ Technical Street......... Technical City........... Technical State.......... Technical PC............. Technical Country........ Technical Phone.......... Technical Fax............ Technical e-mail......... telefonica.com 03/05/1996 04/05/2013 10/05/2011 PROP-1230-00091872 TELEFONICA, S.A. TELEFONICA, S.A. GRAN VIA, 28 MADRID MADRID 28013 ES +34.902106082 +34.915844509 dominios@e-telefonica.com 1052-00136019 MANUEL CRESPO DE LA MATA TELEFONICA S.A. GRAN VIA 28 MADRID MADRID E-28013 ES +34.902106082 +34.915844509 dominios@e-telefonica.com 1052-00136020 Ventanilla Unica TELEFONICA S.A. GRAN VIA 28 MADRID MADRID E-28013 ES +34.917548900 +34.915840589 ventanillaunica.cpdv@telefonica.es - 22 -

Domain servers in listed order: Name Name Name Name Name Name Server............. nsjc8hos01.telefonica-data.com Server............. ns3chos01.telefonica-data.com Server............. Server............. Server............. Server.............

Veamos ahora que nos arroja la consulta con el comando host:


jomax@g460:~$ host -d telefonica.com Trying "telefonica.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59625 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;telefonica.com. ;; ANSWER SECTION: telefonica.com. 2133 IN IN A A 195.53.169.57

Received 48 bytes from 192.168.1.1#53 in 2 ms Trying "telefonica.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35212 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;telefonica.com. IN AAAA

Received 32 bytes from 192.168.1.1#53 in 2 ms Trying "telefonica.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23594 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 13, ADDITIONAL: 12 ;; QUESTION SECTION: ;telefonica.com. ;; ANSWER SECTION: telefonica.com. telefonica.com. 2331 2331 IN IN IN MX MX MX 10 smtpus.telefonica.com. 10 smtpar.telefonica.com.

Received 506 bytes from 192.168.1.1#53 in 308 ms

Como vimos, es muy facil conseguir datos importantes y adems las direcciones IP de cualquier servicio web. Es importante que tambien en los casos donde host nos devuelve un dominio en vez de una ip, podremos resolverlo utilizando dig
jomax@g460:~$ dig smtpus.telefonica.com ; <<>> DiG 9.7.3 <<>> smtpus.telefonica.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46508 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 12 ;; QUESTION SECTION: ;smtpus.telefonica.com. IN A

- 23 -

;; ANSWER SECTION: smtpus.telefonica.com. 1309 ;; ;; ;; ;;

IN

216.177.207.223

Query time: 330 msec SERVER: 192.168.1.1#53(192.168.1.1) WHEN: Sat Nov 19 17:11:09 2011 MSG SIZE rcvd: 483

- 24 -

GOOGLE HACKING
Los buscadores son herramientas muy populares que todos usamos y que todos necesitamos y adems son muy potentes y absorben toda la informacin que encuentran en su camino que no est debidamente protegida. Google es hoy en da el buscador ms popular en uso, siendo sus tcnicas de recoleccin de datos y algoritmos de clasificacin muy avanzados, lo que proporciona resultados certeros en las bsquedas a poco que sepamos trabajar con sus mltiples funcionalidades. Google es, con toda probabilidad, el buscador ms tecnolgicamente avanzado que existe. Esto facilita que dispongamos de mucha informacin en la red. Pero tambin posibilita que podamos hallar informacin sensible que no ha sido protegida adecuadamente. Veamos en qu consiste esta tcnica de minado de datos con fines maliciosos, utilizando ejemplos y con algunos consejos de como prevenirlos.

Qu es el Google Hacking?
A esta altura te estars imaginando que descargas una super aplicacin oculta en algn link de Google por la cual sers capaz de obtener acceso a los servidores del mundo. Nada ms lejos de la realidad pero tampoco tan equivocado. La realidad es que aplicacin que utilizaremos para esta tcnica es el mismo buscador de Google. Para que comprendas mejor lo que quiero decirte, abre tu navegador favorito y escribe literalmente (respeta las comillas y los simbolos por favor):
"Microsoft (R) Windows * (TM) Version * DrWtsn32 Copyright (C)" ext:log

o tal vez podriamos hacer la siguiente bsqueda:


"telfono ext:pdf * * *" "direccin *" "e-mail" intitle:"curriculum vitae"

Por si no ha quedado claro la tcnica conocida como Google Hacking consiste en conocer como funciona el buscador para explotar su potencial a nuestro favor. Si las bsquedas las orientamos a ciertas palabras clave que nos ayuden a encontrar informacin sensible, puntos de entrada sensibles a posibles ataques, como por ejemplo:
"SquirrelMail version 1.4.4" inurl:src ext:php

o cualquier otro tipo de informacin que tuviera carcter de sensibilidad, estaremos ejecutando un Google hack.

- 25 -

Google Hacking es buscar en Google informacin sensible, generalmente con fines que seguramente no sea el que ests pensando ;-)

Ms ejemplos de Google Hacking


Productos vulnerables
"Powered by MercuryBoard [v1"

Mensajes de error
"Warning: mysql_query()" "invalid query"

Archivos que contienen informacin sensible


"Index of" / "chat/logs"

Archivos que contienen claves


ext:pwd inurl:(service | authors | administrators | users) "# -FrontPage-"

Archivos que contienen nombres de usuario


filetype:conf inurl:proftpd.conf -sample

Footholds e informacin de apoyo al acceso


+htpasswd +WS_FTP.LOG filetype:log

Pginas con formularios de acceso


"You have requested access to a restricted area of our website. Please authenticate yourself to continue."

Pginas que contienen datos relativos a vulnerabilidades


filetype:pdf "Assessment Report" nessus

Directorios sensibles
filetype:cfg ks intext:rootpw -sample -test -howto

Informacin sensible sobre comercio y banca electrnica


inurl:shopdbtest.asp

- 26 -

Dispositivos hardware online


camera linksys inurl:main.cgi

Archivos vulnerables
intitle:"Directory Listing" "tree view"

Servidores vulnerables
intitle:"Mail Server CMailServer Webmail" "5.2"

Deteccin de servidores web


intitle:"Welcome to Windows Small Business Server 2003"

Cmo impedir ser vctimas de Google Hacks?


La mejor forma de no convertirnos en una vctima es aprender cmo funciona Google. Conozca y experimente las posibilidades de la bsqueda avanzada. Entienda que las bsquedas son muy refinables y que es el motor de bsqueda ms poderoso que hay hoy en da, que no slo est pensado para ordenar y encontrar pginas web, sino que tambin pueden hallarse documentos de OpenOffice, informes, faxes, notas privadas, fotografas, telfonos, etc.

Absolutamente todo lo que sea accesible desde un navegador terminar en las bases de datos de Google para que cualquiera lo encuentre.
Una vez que hayamos comprendido lo gigantesco que es Google, comprenderemos que podemos utilizarlo para hallar documentos inocuos, podemos emplearlo para obtener documentos con datos sensibles.

Esta no es una tcnica tonta y obsoleta. Hay gente que vive utilizandola y comercializando la informacin que extrae de ellas.
Si dispone de su propia pgina web, asegrese de comprender lo importante que es tener un archivo de robots.txt correctamente configurado. Tener una pgina web es algo ms que colocar fotos y documentos en la Red para que las vean sus amigos o sus familiares. Nuevamente les recuerdo en que todo lo que se coloca en servidores Web (la nube) es susceptible de ser indexado por los motoroes de las bases de datos de Google. Esto es aplicable para cualquier objeto accesible desde documentos Web: cmaras web, impresoras, etc.

- 27 -

Consejos finales
No deje de consultar los parmetros que definen el mecanismo de posicionamiento de resultados en Google. Aplique "posicionamiento inverso" a todo aquello que quiera mantener lejos de ojos ajenos. Puestos a aparecer, mejor aparecer en el puesto doscientos que en el quinto. No est de ms usar el buscador para aprender cmo funciona el Google Hacking y aplicar tcnicas de inversin aplicadas a su caso. Adems debera replantearse la exclusin de los robots.

- 28 -

SCANNING & ENUMERATION


Nmap (de Network Mapper) es una utilidad de software libre para explorar, administrar y auditar la seguridad de redes de ordenadores. Detecta hosts online, sus puertos abiertos, servicios y aplicaciones corriendo en ellos, su sistema operativo, que firwalls/filtros corren en una red y de que tipo son. Es excelente para hacer trabajos de auditoria y fue diseado para llevar acabo escaneos rpidos en una gran cantidad de redes, pero es igualmente usable en hosts individuales. Es reconocido como el scanner de puertos mas poderoso. Y se lo usa basicamente para 3 cosas: Auditorias de seguridad. Pruebas rutinarias de redes. Recolector de informacion para futuros ataques Nmap es software libre y por lo tanto gratuito. Y basicamente existe una version para cada sistema operativo que conozcas: MacOSX, Microsoft Windows, GNU/Linux, OpenBSD, Solaris, etc.

Funcionamiento de Nmap
Es capaz de utilizar diferentes tcnicas de evasin de deteccin como escaneo sealth. Soporta escaneos sobre ciertos puertos especficos, entre rangos IP especficos, uso se paquetes Null, FIN, Xmas y ACK, adems SYN que es el paquete por defecto. Esto significa que se mandan cierto tipo de paquetes a cada puerto y estos respondern con alguna seal que permitir a scanner encontrar versiones y servicios.

Conceptos importantes
Que es un puerto? Un puerto es una zona en la que dos ordenadores (hosts) intercambian informacin Que es un servicio? Un servicio es el tipo de informacin que se intercambia con una utilidad determinada como ssh o telnet. Que es un Firewall? Un firewall acepta o no el trafico entrante o saliente de un ordenador. Que son paquetes SYN? As por encima, pueden ser paquetes que abren un intento de establecer una conexin TCP. Debemos tener en cuenta que para Nmap un puerto puede estar de tres maneras: open: el puerto es accesible y hay un demonio escuchando. closed: el puerto es accesible pero no hay un demonio escuchando. filtered: el puerto no es accesible, un firewall filtra el puerto.

- 29 -

Instalacion en Linux
En el caso de distribuciones basadas en Debian se instala via apt:
sudo apt-get install nmap

Si usas otra distro puedes buscarlo en los repositorios de tu distro y 100% seguro que lo encontrars. Y si usas algn otro sistema operativo entra a esta pagina http://nmap.org/download.html y lo descargas.

Como usar Nmap


La forma ms bsica de usarlo es escribir en una consola algo como:
nmap 192.168.1.1

Es decir el comando nmap seguido de una ip o dominio. Este uso tn bsico solo nos devuelve que puertos estn abiertos tras un scan simple. Dependiendo de la seguridad de la ip que se escanee puede que nos bloquee el escaneo si lo hacemos de esa manera. Una forma mas discreta de hacerlo que no deja registros en el sistema es as:
nmap sS 192.168.1.1

Cabe resaltar que existen varios tipos de modificadores de scan lo mas importante es lograr identificar la combinacin mas apropiada, los modificadores que se pueden utilizar para realizar el scan son los siguientes: sT se intenta hacer un barrido de puertos por TCP la ventaja de esta tcnica es que no requiere usuarios privilegiados, opuesto a sS sU se intenta hacer un barrido de puertos por UDP, es til cuando se intentan descubrir puertos de nivel superior que pueden estar detrs de un firewall, lenta pero permite hacer auditorias mas exactas. sA se usan mensajes de ACK para lograr que sistema responda y as dterminar si el puerto esta abierto algunos Firewall no filtran estos Mensajes y por ello puede ser efectivo en algunos casos. sX puede pasar algunos Firewall con malas configuraciones y detectar servicios prestndose dentro de la red sN puede pasar algunos Firewall con malas configuraciones y detectar servicios prestndose dentro de la red sF puede pasar algunos Firewall con malas configuraciones y detectar servicios prestndose dentro de la red sP este modificador ayuda a identificar que sistemas estn arriba en la red (en funcionamiento) para luego poder hacer pruebas mas especificas, similar a Ping. sV intenta identificar los servicios por los puertos abiertos en el sistema esto permite evaluar cada servicio de forma individual para intentar ubicar vulnerabilidades en los mismos. sO con esta opcin se identifica que protocolos de nivel superior a capa tres (Red o Network) responden en el sistema, de esta manera es mas fcil saber las caractersticas de la red o el sistema que se intenta evaluar.
- 30 -

Adicionalmente a las opciones de scan se pueden especificar opciones que permiten explotar mas aun la herramienta, dentro de las opciones que mas frecuentemente se usan estn las de evitar el Ping o mostrar todos los resultados en pantalla al mximo detalle, veamos cuales son estas opciones: b Para determinar si la victima es vulnerable al bounce attack n no hace conversiones DNS para hacer el -sP mas rapido vv hacer la salida de la herramienta detallada en pantalla f habilita la fracmentacion de esta forma es mucho mas complejo para un un firewall u otro tipo de sistema lograr hacer el rastreo. oN redirige la salida a un archivo oX redirige la salida a un archivo XML --stylesheet con esta opcin se usa una hoja de estilo que hace mas fcil la lectura de la salida en XML P0 indica que no se debe hacer ping a los sistemas objetivo antes de iniciar el anlisis til para evitar el bloque en algunos Firewall p se usa para especificar puertos de anlisis o rango de puertos. T se usa para especificar la velocidad general del scan de esta forma se puede pasar inadvertido en algunos sistemas que detectan la velocidad de los paquetes entrantes. Veamos algunos ejemplos:
nmap sV P0 O vv o archivo.txt 192.168.1.1

El anterior comando ejecuta un barrido (scan) de puertos sobre la IP seleccionada, evita que se ejecute Ping sobre la maquina, adems de esto intenta detectar el sistema operativo, para cada puerto segn las cabeceras que se retornan se detecten los servicios ejecutndose y la informacin se dejara en el archivo.txt
nmap 192.168.1.0/24

El anterior comando escanea una red completa


nmap 192.168.1.100 -p 10-200

El anterior comando escanea un rango de puertos Veamos un ejemplo completo y real:


jomax@g460:~$ sudo nmap -sS 67.208.113.135 Starting Nmap 5.00 ( http://nmap.org ) at 2011-11-19 17:34 ART NSE: Loaded 0 scripts for scanning. Initiating Ping Scan at 17:34 Scanning 67.208.113.135 [4 ports] Completed Ping Scan at 17:34, 0.41s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 17:34 Completed Parallel DNS resolution of 1 host. at 17:34, 0.00s elapsed Initiating SYN Stealth Scan at 17:34 Scanning geminis2.dotlinux.com.ar (67.208.113.135) [1000 ports] Discovered open port 21/tcp on 67.208.113.135 Discovered open port 53/tcp on 67.208.113.135 - 31 -

Discovered open port 22/tcp on 67.208.113.135 Discovered open port 80/tcp on 67.208.113.135 Completed SYN Stealth Scan at 17:35, 28.99s elapsed (1000 total ports) Host geminis2.dotlinux.com.ar (67.208.113.135) is up (0.24s latency). Interesting ports on geminis2.dotlinux.com.ar (67.208.113.135): Not shown: 994 filtered ports PORT STATE SERVICE 20/tcp closed ftp-data 21/tcp open ftp 22/tcp open ssh 53/tcp open domain 80/tcp open http 667/tcp closed unknown Read data files from: /usr/share/nmap Nmap done: 1 IP address (1 host up) scanned in 29.59 seconds Raw packets sent: 3008 (132.328KB) | Rcvd: 22 (908B)

Otra opcin muy interesante es instalar zenmap que nos permitir utilizar nmap en modo grafico facilitando an ms su uso.

- 32 -

SYSTEM HACKING
La idea central del Hackeo de sistemas es el romper o adivinar passwords o claves para poder tener acceso a los sistemas, cuentas de e-mail, informacin confidencial, etc. Una vez se tiene acceso al sistema comprometido lo prximo es escalar privilegios, ejecutar aplicaciones, esconder archivos y cubrir las huellas para no poder ser detectado.

Windows System Hacking


Los passwords o claves pueden ser rotos o adivinados de manera manual (dificil) o con herramientas automatizadas (facil) como ataques de diccionario y de fuerza bruta. Para romper passwords manualmente sigua estos pasos: 1. Encuentre una cuenta valida de usuario, como Administrador o Guest. 2. Cree una lista de posibles passwords. 3. Ordene la lista de alta a baja probabilidad. 4. Pruebe cada password. 5. Intntelo hasta que el password sea encontrado. Hacerlo de manera manual no es muy efectivo y consume bastante tiempo. Pero es bueno practicarlo porque no siempre vamos a tener a la mano herramientas automatizadas que hagan el trabajo por nosotros. Los SO Windows y Linux tienen un archivo donde guardan los passwords (en forma de hash) para propsitos de logon o login al sistema, as que la manera ms efectiva de romper un password para tener acceso a un sistema es teniendo acceso a este archivo. En Windows los passwords son guardados en el archivo llamado SAM (Security Accounts Manager) pero este archivo est asegurado (locked) cuando el SO est funcionando, por lo tanto es imposible copiar o mover el archivo. Ms adelante le decimos como copiar el archivo SAM en Windows. En Linux los passwords son guardados en el archivo llamado password shadow file.

Qu es el NT LanManager Hash?
Los SO Windows 2000, XP y 2003
Los SO Windows 2000, XP y 2003 utilizan el algoritmo NT Lan Manager (NTLM) para asegurar, cifrar y guardar los passwords de usuario, incluso las ms recientes versiones de Windows, como vista y 7 utilizan NTLM por razones de compatibilidad pero este debe ser activado manualmente para cuentas locales a travs de la configuracin de lapliza de seguridad (Security Policy)y para Active Directory se activa aplicando la misma configuracin a los controladores de dominio (domain controller). Se considera como una buena prctica de seguridadinhabilitar el NTLM si este no se necesita, porque el NTLM es considerado dbil y obsoleto. Las nuevas versiones de Windows (Vista / 7 / Server 2008) utilizan NTLMv2 o el protocolo Kerberos.
- 33 -

El NTLM es considerado dbil porque dependiendo del password el hash puede ser bien fcil de romper. Ejemplo: Supongamos que su clave o password para acceder a su sistema Windows es123abc una vez presionado el botn Enter la clave se convierte a letras Maysculas: 123ABC como la clave es menor de14 caracteres a esta se le aaden 0 (ceros) para completar 14 caracteres: 123ABC00000000. Antes de que el password sea cifrado, los 14 caracteres son divididos por la mitad: 123ABC0 y 0000000. Entonces cada pedazo es cifrado individualmente y el resultado de cada uno es unido o concatenado: 123ABC0 = 7BB597FA94CD5C1D 0000000 = AAD3B435B51404EE

Entonces el hash sera = 7BB597FA94CD5C1DAAD3B435B51404EE Si la clave es de 7 caracteres o menos el resultado de la segunda mitad del hash siempre ser AAD3B435B51404EE.

Rompiendo passwords en Windows 2000 y XP


1. Inicie la mquina con un SO alterno como DOS o Linux con un boot CD. 2. Copie el archivo SAM desde el directorio repair (C:\windows\repair\) 3. Como el archivo SAM se comprime cuando se crea en el directorio repair debe descomprimirlo o expandirlo utilizando el comando del Command Prompt, C:\>expand sam sam.txt (el archivo sam.txt es el archivo destino donde se descomprimir el archivo SAM) 4. Despus que el archivo es descomprimido se le puede realizar un ataque de diccionario, hibrido o de fuerza bruta utilizando una herramienta automatizada como L0phtCrack.

Los 4 tipos de ataques a passwords Passive Online (pasivo en lnea)


Este tipo de ataque tambin es conocido como sniffing the password. Se realiza tanto en redes cableadas (wire) como inalmbricas (wireless). Los ataques pasivos no pueden ser detectados por el usuario final. El atacante obtiene el password durante el proceso de autenticacin o login. Si el password obtenido esta en forma de hash o cifrado, entonces el hacker usara alguna herramienta de su arsenal para romperlo.

Active Online (activo en lnea)


Este tipo de ataque se refiere a tratar de adivinar la clave. Este ataque solo es efectivo si el password de Administrador es simple o dbil.
- 34 -

Offline (fuera de lnea)


Los ataques offline son realizados desde una ubicacin que no es la de la computadora que se intenta acceder. Por ejemplo: Usted logra copiar el archivo SAM de una computadora de una biblioteca pblica en una memoria porttil. Luego usted se va a su casa e intenta romper el password en su computadora. Existen 3 tipos de ataques Offline: Dictionary attack: es un ataque mediante el uso de listas de palabras encontradas en los diccionarios. Un ejemplo seria: Administrador Hybrid attack: este ataque sustituye letras por nmeros y aade nmeros al final. Un ejemplo seria: Adm1n1strador o Administrador35 Brute-force attack: este tipo de ataques intenta todas las combinaciones de letras, nmeros y caracteres especiales. Un ejemplo seria: Admin#45tra@dor Nonelectronic attack: se refiere a los ataques que no requieren conocimientos tcnicos para romper una clave. Algunos ejemplos son: ataques como ingeniera social shoulder surfing (mirar por encima del hombro de otra persona para ver la clave que escribe) dumpster diving (rebuscar en la basura)

Herramientas para romper Passwords:


1. Legion: Programa automatizado para adivinar passwords en sesiones del NetBIOS. Legion tambien escanea multiples rangos de direcciones IP y tiene una herramienta para ataques de diccionarios. 2. KerbCrack: Consiste de 2 programas: elkerbsniffy y elkerbcrack. El primero es un sniffer que literalmente escucha en la red y captura los logins del protocolo Kerberos en Windows 2000/XP. El segundo, el cracker es usado para encontrar passwords del archivo capturado usando un ataque de fuerza bruta (brute force) o de diccionario. 3. Win32CreateLocalAdminUser: Programa usado para crear un nuevo usuario con el nombre de usuario y password X. Aade al usuario X al grupo local del Administrador. 4. C2MYAZZ: Es un programa espa (spyware) que hace que los sistemas Windows (cliente) envien los passwords en texto plano. 5. SMBDie: Este pequeo programa hace que los sistemas Windows NT/2000/XP colapsen enviando pedidos (request) especialmente manipulados al SMB (Server Message Block). 6. SMBrelay: Es un servidor SMB que captura hashes de nombres de usuarios y
- 35 -

passwords del trfico recibido por el SMB. 7. SMBrelay2: Es parecido al SMBrelay pero en vez de usar direcciones IP para capturar nombres de usuario y passwords utiliza nombres del NetBIOS. 8. L0phtCrack: Este programa captura paquetes del Server Message Block (SMB) en segmentos de una red local y captura sesiones individuales de login. Tambien posee herramientas para ataques de diccionario, fuerza-bruta e hibridos. 9. Samdump: Programa para ver el contenido de los archivos SAM. Abra el Command Prompt y entre samdump sam. Recuerde que debe ejecutar el programa y tener el archivo SAM en el mismo directorio donde se est ejecutando el Command Prompt.

Contramedidas
Nunca deje el password por defecto Nunca utilice passwords que se puedan encontrar en un diccionario Nunca utilice passwords relacionados a sus pasatiempo, nombre de mascotas, nombres de miembros de su familia, fechas de nacimiento, etc., etc Nunca utilice passwords relacionados a los nombre de host y dominios Se recomienda por los profesionales de seguridad informtica que los passwords se cambien cada 30 das. Nunca reutilice los ltimos 3 passwords. Monitoree los logs del Event Viewer (Windows) o el Auth (en linux). Los Administradores necesitan monitorear estos registros para reconocer intentos de intrusin al sistema.

Como localizar el Event Viewer en Windows XP


Start > Control Panel > Administrative Tools > Event Viewer (en la ventana izq. seleccione el log Security)

Como localizar el Event Viewer en Windows Vista


Start > Event Viewer (en la ventana izq. seleccione Windows logs y dentro elija el log Security)

- 36 -

Linux System Hacking


Tal vez por culpa del Alzheimer o simplemente porque nos encontramos un servidor sin dueo, tenemos que reiniciar la clave del usuario root para poder acceder al mismo. Si bien existen distintos metodos para lograr el mismo resultado, unicamente voy a describir los dos ms utilizados.

Procedimiento 1: GRUB sin Password


Este procedimiento es el ms rpido de todos pero solo puede ser utilizado cuando GRUB o GRUB2 no poseen una password de acceso. 1. Encendemos el equipo con Linux 2. En la pantalla de inicio de Grub tipeamos la letra 'e' para editar las opciones de arranque. 3. Ahora, al final de la linea que comienza con el string linux, debemos agregar el string init=/bin/bash de manera que quede algo similar a esto: linux /boot/vmlinuz-version root=UUID=hex ro quite init=/bin/bash 4. El ltimo paso que debemos realizar es apretar las teclas CTRL+X para iniciar el proceso de arranque.

Cuando el sistema operativo termine de iniciarse en este modo recovery tenemos que escribir los siguientes comandos:
# mount -o remount,rw # passwd (debemos escribir la nueva password de root dos veces) # sync reboot

Despues de reiniciar el sistema ya tendremos acceso al usuario root del sistema.

Procedimiento 2: GRUB con Password


Este es el metodo que tendremos que realizar si nos encontramos con un gestor de arranque GRUB o GRUB2 protegido por una password. 1. Encendemos el equipo y nos aseguraremos de iniciarlo con cualquier LiveCD que tengamos a la mano. 2. Cuando tengamos disponible una consola del LiveCD identificaremos el disco local del equipo en el que est instalado el linux al que no tenemos acceso. 3. Ahora debemos crear un directorio para montar este disco utilizando el comando mount con una linea muy similar a esta: mount /dev/sdaX /tmp/testdir 4. Una vez montado el disco, ingresamos al directorio en donde montamos el disco de nuestro linux y ahi buscaremos el archivo shadow que estar en el directorio /tmp/testdir/etc/.

- 37 -

5. Lo unico que debemos hacer, es editar el archivo shadow eliminando la password del usuario root. Para esto utilizaremos el editor vi o el que tengamos disponible. 6. Por ejemplo en este caso root:dsfDSDF!s:12581:0:99999:7::: la password es dsfDSDF!s asi que procederemos a eliminarla dejandola en blanco para que quede como el siguiente ejemplo: root::12581:0:99999:7::: 7. Una vez editado el archivo shadow lo grabamos, desmontamos el disco y reiniciamos el equipo.

Estos procedimientos son realmente muy sencillos, pero eso no significa que los sistemas Windows sean ms seguros que los sistemas Linux.

- 38 -

DENEGACION DE SERVICIO
Un ataque de denegacin de servicio, tambin llamado ataque DoS (de las siglas en ingls Denial of Service), es un ataque a un sistema de computadoras o red que causa que un servicio o recurso sea inaccesible por sus usuarios. Normalmente provoca la prdida de la conectividad de la red por el consumo del ancho de banda de la red de la vctima o sobrecarga de los recursos del sistema de la vctima.

Se genera mediante la saturacin de los puertos con flujo de informacin, haciendo que el servidor se sobrecargue y no pueda seguir prestando servicios, por eso se le denomina "denegacin", pues hace que el servidor no d abasto a la cantidad de solicitudes. Esta tcnica es usada para dejar fuera de servicio a los servidores objetivo.

- 39 -

Una ampliacin del ataque Dos es el llamado ataque distribuido de denegacin de servicio, tambin llamado ataque DDoS (de las siglas en ingls Distributed Denial of Service) el cual se lleva a cabo generando un gran flujo de informacin desde varios puntos de conexin. La forma ms comn de realizar un DDoS es a travs de una botnet, siendo esta tcnica el ciberataque ms usual y eficaz por su sencillez tecnolgica. En ocasiones, esta herramienta ha sido utilizada como un buen mtodo para comprobar la capacidad de trfico que un equipo puede soportar sin volverse inestable y afectar a los servicios que presta. Un administrador de redes puede as conocer la capacidad real de cada mquina.

Mtodos de ataque
Un ataque de "Denegacin de servicio" impide el uso legtimo de los usuarios al usar un servicio de red. El ataque se puede dar de muchas formas. Pero todas tienen algo en comn: utilizan el protocolo TCP/IP para conseguir su propsito. Un ataque DoS puede ser perpetrado de varias formas. Aunque bsicamente consisten en: Consumo de recursos, tales como ancho de banda, espacio de disco, o tiempo de procesador Alteracin de informacin de configuracin, tales como la informacin de rutas Alteracin de informacin de estado, tales como interrupcin de sesiones TCP (TCP reset) Interrupcin de componentes fsicos de red Obstruccin de medios de comunicacin entre usuarios de un servicio y la vctima, de manera que ya no puedan comunicarse adecuadamente.

Inundacin SYN (SYN Flood)


Principios de TCP/IP
Cuando una mquina se comunica mediante TCP/IP con otra, enva una serie de datos junto a la peticin real. Estos datos forman la cabecera de la solicitud. Dentro de la cabecera se encuentran unas sealizaciones llamadas Flags (banderas). Estas sealizaciones (banderas) permiten iniciar una conexin, cerrarla, indicar que una solicitud es urgente, reiniciar una conexin, etc. Las banderas se incluyen tanto en la solicitud (cliente), como en la respuesta (servidor). Para aclararlo, veamos cmo es un intercambio estndar TCP/IP: 1. Establecer Conexin: El cliente enva una Flag SYN, si el servidor acepta la conexin, ste, debera responderle con un SYN/ACK luego el cliente debera responder con una Flag ACK.
- 40 -

1-Cliente --------SYN-----> 4-Cliente <-----SYN/ACK---5-Cliente --------ACK----->

2 Servidor 3 Servidor 6 Servidor

2. Resetear Conexin: Al haber algn error o perdida de paquetes de envo se establece envo de Flags RST:
1-Cliente -------Reset-----> 2-servidor 4-Cliente <----Reset/ACK---- 3-Servidor 5-Cliente --------ACK------> 6-Servidor

La inundacin SYN enva un flujo de paquetes TCP/SYN (varias peticiones con Flags SYN en la cabecera), muchas veces con la direccin de origen falsificada. Cada uno de los paquetes recibidos es tratado por el destino como una peticin de conexin, causando que el servidor intente establecer una conexin al responder con un paquete TCP/SYN-ACK y esperando el paquete de respuesta TCP/ACK (Parte del proceso de establecimiento de conexin TCP de 3 vas). Sin embargo, debido a que la direccin de origen es falsa o la direccin IP real no ha solicitado la conexin, nunca llega la respuesta. Estos intentos de conexin consumen recursos en el servidor y copan el nmero de conexiones que se pueden establecer, reduciendo la disponibilidad del servidor para responder peticiones legtimas de conexin. SYN cookies provee un mecanismo de proteccin contra Inundacin SYN, eliminando la reserva de recursos en el host destino, para una conexin en momento de su gestin inicial.

Inundacin ICMP (ICMP Flood)


Es una tcnica DoS que pretende agotar el ancho de banda de la vctima. Consiste en enviar de forma continuada un nmero elevado de paquetes ICMP Echo request (ping) de tamao considerable a la vctima, de forma que esta ha de responder con paquetes ICMP Echo reply (pong) lo que supone una sobrecarga tanto en la red como en el sistema de la vctima. Dependiendo de la relacin entre capacidad de procesamiento de la vctima y el atacante, el grado de sobrecarga vara, es decir, si un atacante tiene una capacidad mucho mayor, la vctima no puede manejar el trfico generado.

SMURF
Existe una variante a ICMP Flood denominado considerablemente los efectos de un ataque ICMP. Ataque Smurf que amplifica

Existen tres partes en un Ataque Smurf: El atacante, el intermediario y la vctima (comprobaremos que el intermediario tambin puede ser vctima). En el ataque Smurf, el atacante dirige paquetes ICMP tipo "echo request" (ping) a una direccin IP de broadcast, usando como direccin IP origen, la direccin de la vctima
- 41 -

(Spoofing). Se espera que los equipos conectados respondan a la peticin, usando Echo reply, a la mquina origen (vctima). Se dice que el efecto es amplificado, debido a que la cantidad de respuestas obtenidas, corresponde a la cantidad de equipos en la red que puedan responder. Todas estas respuestas son dirigidas a la vctima intentando colapsar sus recursos de red. Como se dijo anteriormente, los intermediarios tambin sufren los mismos problemas que las propias vctimas.

Inundacin UDP (UDP Flood)


Bsicamente este ataque consiste en generar grandes cantidades de paquetes UDP contra la vctima elegida. Debido a la naturaleza sin conexin del protocolo UDP, este tipo de ataques suele venir acompaado de IP spoofing. Es usual dirigir este ataque contra mquinas que ejecutan el servicio Echo, de forma que se generan mensajes Echo de un elevado tamao.

- 42 -

Low Orbit Ion Cannon (LOIC)


Low Orbit Ion Cannon (abreviado LOIC) es una aplicacin diseada para realizar un ataque de denegacin de servicio durante el proyecto Chanology, desarrollada por praetox usando el lenguaje de programacin C# (Existe tambin un fork en C++ y Qt llamado LOIQ). La aplicacin realiza un ataque de denegacin de servicio del objetivo enviando una gran cantidad de paquetes TCP, paquetes UDP o peticiones HTTP con objeto de determinar cul es la cantidad de peticiones por segundo que puede resolver la red objetivo antes de dejar de funcionar.

IRCLOIC
El desarrollador NewEraCracker actualiz LOIC para su uso en la Operation Payback, arreglando algunos bugs y aadiendo algunas habilidades nuevas al programa.1 Desde la versin 1.1.1.3, LOIC incorpora la posibilidad de que el usuario delegue voluntariamente el control de la aplicacin LOIC al operador de un canal IRC, que puede controlar de esta manera un ataque coordinado empleando todos los clientes conectados a dicho canal. Esta caracterstica se denomina comnmente como inteligencia de enjambre (Hive Mind, en ingls) y permite la organizacin rpida de una botnet formada por voluntarios. La versin con control remoto por IRC se denomina habitualmente IRCLOIC.2 Esta actualizacin funciona en Windows XP y posteriores, necesitando Microsoft .NET Framework 3.5 Service Pack 1. Tambin funciona en sistemas Linux con los paquetes Mono o Wine.

- 43 -

En las ltimas versiones se ha aadido una opcin para iniciar el programa oculto como un servicio de Windows. En todas las versiones de LOIC es bastante fcil conocer la direccin IP del atacante si ste no est protegido por una red Peer-to-peer annimo.

LOIQ
LOIQ es una implementacin de la funcionalidades de LOIC empleando el lenguaje C++ y la librera Qt 4, lo cual permite compilarlo en cualquier plataforma que disponga de la librera Qt (Linux, BSD, Unix, Windows, Windows CE, Mac OS X, etc...)

JSLOIC
JSLOIC es una implementacin de algunas de las funcionalidades de LOIC realizadas en lenguaje JavaScript, lo cual permite ejecutarlo desde un navegador web sin necesidad de instalar ningn software en el ordenador. Esta implementacin realiza test limitados a peticiones HTTP, no permitiendo el envo de paquetes TCP y UDP, ni delegar el control para su uso en modo colectivo. Podrn descargar las versiones de LOIC desde los siguientes enlaces: http://sourceforge.net/projects/loic/ http://github.com/NewEraCracker/LOIC/downloads http://sourceforge.net/projects/loiq/

- 44 -

PREVINIENDO UN DoS
(D)DoS Deflate
(D)DoS Deflate es un script muy sencillo diseado para combatir el proceso de bloqueo de las direcciones IP de nuestros atacantes. Este script utiliza el comando netstat para crear una lista de las direcciones IP conectadas al servidor dependiendo de la cantidad de conexiones que tenga en un determinado momento. El comando es:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

En el sitio oficial encontraan los scripts actualizados para descargarlos y ejecutarlos.

Fail2ban
Fail2Ban es un pequeo script programado en python que se encarga de observar los logs en busca de patrones sospechosos, y es capaz de tomar medidas para bloquear a los atacantes ya sea con iptables o lanzando un comando de nuestra eleccin. El directorio de configuracion de fail2ban es /etc/fail2ban/ all encontraremos 2 directorios: action.d y filter.d. En action.d, encontraremos las acciones que fail2ban realizar cuando alguno de nuestros filtros detecte alguna IP haciendo maldades. Estas acciones pasan por filtrado con iptables, envio de mails de aviso etc, mientras que en filter.d, tenemos todos los filtros que utilizaremos a modo de trampa para cazar a nuestros atacantes. En nuestro caso, vamos a configurar fail2ban en un servidor web, al que ultimamente se le ha detectado un alto numero de intentos de ataque de inyeccin, tanto SQL como XSS, y como mnimo pretendemos bloquear los accesos que hemos detectado en los logs. Para eso tendremos que editar el archivo jail.conf del directorio /etc/fail2ban/ en este archivo tendremos todas las trampas o jails y sus correspondientes acciones, acompaados de unos parametros por defecto, de entrada, es recomendable que agreguemos en la linea ignoreip nuestra ip local, o la de algun servidor con el que podamos conectar en caso de que por error nos bloqueemos nosotros mismos.
ignoreip = 127.0.0.1 <nuestra ip>

Una vez hecho esto, revisamos todas las entradas de este archivo, la primera entrada que encontramos es la de ssh, esta jail en nuestro caso es asi:
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com] logpath = /var/log/secure maxretry = 5 - 45 -

Tenemos por orden los siguientes campos: Si est habilitado El nombre La accion a ejecutar (una por linea), en este caso filtramos con el action iptables el puerto ssh y mandamos un mail con el action sendmail-whois a fail2ban@mail.com Indicamos el archivo de logs que leera el filtro /var/log/secure es donde logea SSH. Y le indicamos el numero de intentos con el que ejecutamos la accion (en este caso 5) Nosotros no tenemos acceso SSH al exterior en nuestras mquinas de modo que vamos a dejar enabled=false, y procederemos a configurar las siguientes jails que si que son interesantes para el servicio web:
[apache-tcpwrapper] enabled = true filter = apache-auth action = hostsdeny logpath = /var/www/vhosts/*/statistics/logs/error_log maxretry = 6 [apache-badbots] enabled = true filter = apache-badbots action = iptables-multiport[name=BadBots, port="http,https"] sendmail-buffered[name=BadBots, lines=5, dest=you@mail.com] logpath = /var/www/vhosts/*/statistics/logs/access_log bantime = 172800 maxretry = 1 # Para prevenir ataques de inyeccion de codigo [php-url-fopen] enabled = true port = http,https filter = php-url-fopen logpath = /var/www/vhosts/*/statistics/logs/access_log maxretry = 1 # Evitamos ataques de ips que accedan a urls que contengan passthru o system o similares [apache-hacks] enabled = true port = http,https filter = apache-hacks action = iptables-multiport[name=AtaqueApache, port="http,https"] sendmail-buffered[name=AtaqueApache, lines=5, dest=you@mail.com] logpath = /var/www/vhosts/*/statistics/logs/access_log maxretry = 3

Lo realmente importante aqui, es cambiar las lineas logpath, ya que nuestro servidor es un plesk la ruta de los logs es /var/www/vhosts/*/statistics/logs/access_log o /var/www/vhosts/*/statistics/logs/error_log el resto, son cambios en el mail de destino al que mandaremos el mail, y los nombres de los filtros a aplicar, nosotros aplicamos estos: apache-tcpwrapper: Bloquea con el archivo /etc/hosts.deny los hosts que se
- 46 -

intentan conectar a dominios protegidos con contrasea (estos fallos de autenticacin aparecen en el error_log) apache-badbots : Bloquea por iptables los hosts que se conectan haciendo uso de un User Agent sospechoso, y nos envia un mail para avisarnos php-url-fopen : Bloqueamos los hosts, que intentan una inyeccion de cdigo del tipo: GET /index.php?n=http://www.dominio.com/archivo.htm apache-hacks : Bloquea los hosts que acceden a urls sospechosas, haciendo un SCAN o directamente acceden a urls intentando inyectar llamadas al sistema desde php (system, passthru) esta regla se va rellenando con las expresiones que vamos encontrando en los logs, al final del post, adjuntamos el contenido del filtro en nuestro caso.

En el ultimo caso, hemos creado un archivo apache-hacks.conf en el directorio filters.d, para empezar podemos agregar entradas como estas:
failregex = ^<HOST> -.*(GET|POST).*\?.*passthru.* HTTP\/.*$ ^<HOST> -.*(GET|POST).*\?.*system.* HTTP\/.*$

Y mas adelante agregar nuevas reglas.

Con esta serie de utilidades podremos evitar algunos de los intentos de ataque ms comunes, pero no podemos ni por un momento pensar que con solo aplicarlas estaremos a salvo.

- 47 -

INGENIERIA SOCIAL
La ingeniera social es la prctica de obtener informacin confidencial a travs de la manipulacin de los usuarios. Es una tcnica que pueden usar ciertas personas, tales como investigadores privados, criminales, o crackers, para obtener informacin, acceso o privilegios en sistemas que les permitan realizar algn acto que perjudique o exponga a la persona u organismo comprometido. El principio que sustenta la ingeniera social es el que en cualquier sistema "los usuarios son el eslabn ms dbil de la seguridad de los sistemas". En la prctica, un ingeniero social usar comnmente el telfono o internet para engaar a la gente, fingiendo ser, por ejemplo, un empleado de algn banco o alguna otra empresa, un compaero de trabajo, un tcnico o un cliente. Va sitios web o por medio de correos electrnicos se usa, adicionalmente, el envo de solicitudes de renovacin de permisos de acceso a pginas web o memos falsos que solicitan respuestas e incluso las famosas "cadenas", llevando as a revelar informacin sensible, o a violar las polticas de seguridad tpicas. Con este mtodo, los ingenieros sociales aprovechan la tendencia natural de la gente a reaccionar de manera predecible en ciertas situaciones, por ejemplo proporcionando detalles financieros a un aparente funcionario de un banco, en lugar de tener que encontrar agujeros de seguridad en los sistemas informticos.

Quiz el ataque ms simple pero muy efectivo sea engaar a un usuario llevndolo a pensar que un administrador del sistema esta solicitandole una contrasea para varios propsitos legtimos.
Los usuarios de sistemas de Internet frecuentemente reciben mensajes que solicitan contraseas o informacin de tarjeta de crdito, con el motivo de "crear una cuenta", "reactivar una configuracin", u otra operacin; a este tipo de ataques se los llama phishing (pesca). Los usuarios de estos sistemas deberan ser advertidos temprana y frecuentemente para que no divulguen contraseas u otra informacin sensible a personas que dicen ser administradores. En realidad, los administradores de sistemas informticos raramente (o nunca) necesitan saber la contrasea de los usuarios para llevar a cabo sus tareas. Sin embargo incluso este tipo de ataque podra no ser necesario en una encuesta realizada por la empresa Boixnet, el 90% de los empleados de oficina de la estacin Waterloo de Londres revelaron sus contraseas a cambio de un bolgrafo barato. Otro ejemplo contemporneo de un ataque de ingeniera social es el uso de archivos adjuntos en e-mails, ofreciendo, por ejemplo, fotos "ntimas" de alguna persona famosa o algn programa "gratis" (a menudo aparentemente provenientes de alguna persona conocida) pero que ejecutan cdigo malicioso (por ejemplo, usar la mquina de la vctima para enviar cantidades masivas de spam). Ahora, despus de que los primeros e-mails
- 48 -

maliciosos llevaran a los proveedores de software a deshabilitar la ejecucin automtica de archivos adjuntos, los usuarios deben activar esos archivos de forma explcita para que ocurra una accin maliciosa. Muchos usuarios, sin embargo, abren casi ciegamente cualquier archivo adjunto recibido, concretando de esta forma el ataque.

La ingeniera social tambin se aplica al acto de manipulacin cara a cara para obtener acceso a los sistemas. Otro ejemplo es el conocimiento sobre la vctima, a travs de la introduccin de contraseas habituales, lgicas tpicas o conociendo su pasado y presente; respondiendo a la pregunta: Qu contrasea introducira yo si fuese la vctima?

La principal defensa contra la ingeniera social es capacitar y entrenar a los usuarios de los sistemas, en la implementacin de polticas de seguridad y asegurarse de que estas sean seguidas en todo momento.
Uno de los ingenieros sociales ms famosos de los ltimos tiempos es Kevin Mitnick a quien pueden seguir en su cuenta de Twitter https://twitter.com/#!/kevinmitnick. Segn su opinin, la ingeniera social se basa en estos cuatro principios: 1. Todos queremos ayudar. 2. El primer movimiento es siempre de confianza hacia el otro. 3. No nos gusta decir No. 4. A todos nos gusta que nos alaben.

Phishing
El trmino phishing proviene de la palabra inglesa "fishing" (pesca), haciendo alusin al intento de hacer que los usuarios "piquen en el anzuelo". A quien lo practica se le llama phisher. Tambin se dice que el trmino "phishing" es la contraccin de "password harvesting fishing" (cosecha y pesca de contraseas), aunque esto probablemente es un acrnimo retroactivo, dado que la escritura 'ph es comnmente utilizada por hackers para sustituir la f, como raz de la antigua forma de hacking telefnico conocida como phreaking. La primera mencin del trmino phishing data de enero de 1996. Se dio en el grupo de noticias de hackers alt.2600, aunque es posible que el trmino ya hubiera aparecido anteriormente en la edicin impresa del boletn de noticias hacker "2600 Magazine". El trmino phishing fue adoptado por quienes intentaban "pescar" cuentas de miembros de AOL.

Phishing en AOL
Quienes comenzaron a hacer phishing en AOL durante los aos 1990 solan obtener cuentas para usar los servicios de esa compaa a travs de nmeros de tarjetas de crdito vlidos, generados utilizando algoritmos para tal efecto. Estas cuentas de acceso a AOL podan durar semanas e incluso meses. En 1995 AOL tom medidas para prevenir este uso
- 49 -

fraudulento de sus servicios, de modo que los crackers recurrieron al phishing para obtener cuentas legtimas en AOL. El phishing en AOL estaba estrechamente relacionado con la comunidad de warez que intercambiaba software falsificado. Un cracker se haca pasar como un empleado de AOL y enviaba un mensaje instantneo a una vctima potencial. Para poder engaar a la vctima de modo que diera informacin confidencial, el mensaje poda contener textos como "verificando cuenta" o "confirmando informacin de factura". Una vez el usuario enviaba su contrasea, el atacante poda tener acceso a la cuenta de la vctima y utilizarla para varios propsitos criminales, incluyendo el spam. Tanto el phishing como el warezing en AOL requeran generalmente el uso de programas escritos por crackers, como el AOLHell. En 1997 AOL reforz su poltica respecto al phishing y los warez fueron terminantemente expulsados de los servidores de AOL. Durante ese tiempo el phishing era tan frecuente en AOL que decidieron aadir en su sistema de mensajera instantnea, una lnea de texto que indicaba: "no one working at AOL will ask for your password or billing information" ("nadie que trabaje en AOL le pedir a usted su contrasea o informacin de facturacin"). Simultneamente AOL desarroll un sistema que desactivaba de forma automtica una cuenta involucrada en phishing, normalmente antes de que la vctima pudiera responder. Los phishers se trasladaron de forma temporal al sistema de mensajera instantneo de AOL (AIM), debido a que no podan ser expulsados del servidor de AIM. El cierre obligado de la escena de warez en AOL caus que muchos phishers dejaran el servicio, y en consecuencia la prctica.9

Intentos recientes de phishing


Los intentos ms recientes de phishing han tomado como objetivo a clientes de bancos y servicios de pago en lnea. Aunque el ejemplo que se muestra en la primera imagen es enviado por phishers de forma indiscriminada con la esperanza de encontrar a un cliente de dicho banco o servicio, estudios recientes muestran que los phishers en un principio son capaces de establecer con qu banco una posible vctima tiene relacin, y de ese modo enviar un e-mail, falseado apropiadamente, a la posible vctima.

- 50 -

En trminos generales, esta variante hacia objetivos especficos en el phishing se ha denominado spear phishing (literalmente pesca con arpn). Los sitios de Internet con fines sociales tambin se han convertido en objetivos para los phishers, dado que mucha de la informacin provista en estos sitios puede ser utilizada en el robo de identidad. Algunos experimentos han otorgado una tasa de xito de un 90% en ataques phishing en redes sociales. A finales de 2006 un gusano informtico se apropi de algunas pginas del sitio web MySpace logrando redireccionar los enlaces de modo que apuntaran a una pgina web diseada para robar informacin de ingreso de los usuarios.

Tcnicas de phishing
La mayora de los mtodos de phishing utilizan alguna forma tcnica de engao en el diseo para mostrar que un enlace en un correo electrnico parezca una copia de la organizacin por la cual se hace pasar el impostor. URLs mal escritas o el uso de subdominios son trucos comnmente usados por phishers, como el ejemplo en esta URL, http://www.nombredetubanco.com/ejemplo.

Otro ejemplo para disfrazar enlaces es el de utilizar direcciones que contengan el carcter arroba: @, para posteriormente preguntar el nombre de usuario y contrasea (contrario a los estndares).
Por ejemplo, el enlace http://www.google.com@members.tripod.com/ puede engaar a un observador casual y hacerlo creer que el enlace va a abrir en la pgina de www.google.com, cuando realmente el enlace enva al navegador a la pgina de members.tripod.com (y al intentar entrar con el nombre de usuario de www.google.com, si
- 51 -

no existe tal usuario, la pgina abrir normalmente). Este mtodo ha sido erradicado desde entonces en los navegadores de Mozilla e Internet Explorer. Otros intentos de phishing utilizan comandos en JavaScripts para alterar la barra de direcciones. Esto se hace poniendo una imagen de la URL de la entidad legtima sobre la barra de direcciones, o cerrando la barra de direcciones original y abriendo una nueva que contiene la URL ilegtima. En otro mtodo popular de phishing, el atacante utiliza contra la vctima el propio cdigo de programa del banco o servicio por el cual se hace pasar. Este tipo de ataque resulta particularmente problemtico, ya que dirige al usuario a iniciar sesin en la propia pgina del banco o servicio, donde la URL y los certificados de seguridad parecen correctos. En este mtodo de ataque (conocido como Cross Site Scripting) los usuarios reciben un mensaje diciendo que tienen que "verificar" sus cuentas, seguido por un enlace que parece la pgina web autntica; en realidad, el enlace est modificado para realizar este ataque, adems es muy difcil de detectar si no se tienen los conocimientos necesarios. Otro problema con las URL es el relacionado con el manejo de nombres de dominios internacionalizados (IDN) en los navegadores, puesto que puede ser que direcciones que resulten idnticas a la vista puedan conducir a diferentes sitios (por ejemplo dominio.com se ve similar a dmini.com, aunque en el segundo las letras "o" hayan sido reemplazadas por la correspondiente letra griega micron, ""). Al usar esta tcnica es posible dirigir a los usuarios a pginas web con malas intenciones. A pesar de la publicidad que se ha dado acerca de este defecto, conocido como IDN spoofing o ataques homgrafos, ningn ataque conocido de phishing lo ha utilizado.

Lavado de dinero producto del phishing


Actualmente empresas ficticias intentan reclutar teletrabajadores por medio de e-mails, chats, irc y otros medios, ofrecindoles no slo trabajar desde casa sino tambin otros jugosos beneficios. Aquellas personas que aceptan la oferta se convierten automticamente en vctimas que incurren en un grave delito sin saberlo: el blanqueo de dinero obtenido a travs del acto fraudulento de phishing. Para que una persona pueda darse de alta con esta clase de empresas debe rellenar un formulario en el cual indicar, entre otros datos, su nmero de cuenta bancaria. Esto tiene la finalidad de ingresar en la cuenta del trabajador-vctima el dinero procedente de estafas bancarias realizadas por el mtodo de phishing. Una vez contratada, la vctima se convierte automticamente en lo que se conoce vulgarmente como mulero. Con cada acto fraudulento de phishing la vctima recibe el cuantioso ingreso en su cuenta bancaria y la empresa le notifica del hecho. Una vez recibido este ingreso, la vctima se quedar un porcentaje del dinero total, pudiendo rondar el 10%-20%, como comisin de trabajo y el resto lo reenviar a travs de sistemas de envo de dinero a cuentas indicadas por la seudo-empresa. Dado el desconocimiento de la vctima (muchas veces motivado por la necesidad econmica) sta se ve involucrada en un acto de estafa importante, pudiendo ser requerido
- 52 -

por la justicia previa denuncia de los bancos. Estas denuncias se suelen resolver con la imposicin de devolver todo el dinero sustrado a la vctima, obviando que este nicamente recibi una comisin.

Fases del Phishing en el lavado de dinero virtual


En la primera fase, la red de estafadores se nutre de usuarios de chat, foros o correos electrnicos, a travs de mensajes de ofertas de empleo con una gran rentabilidad o disposicin de dinero (hoax o scam). En el caso de que caigan en la trampa, los presuntos intermediarios de la estafa, deben rellenar determinados campos, tales como: Datos personales y nmero de cuenta bancaria. Se comete el phishing, ya sea el envo global de millones de correos electrnicos bajo la apariencia de entidades bancarias, solicitando las claves de la cuenta bancaria (PHISHING) o con ataques especficos. El tercer paso consiste en que los estafadores comienzan a retirar sumas importantes de dinero, las cuales son transmitidas a las cuentas de los intermediarios (muleros). Los intermediarios realizan el traspaso a las cuentas de los estafadores, llevndose stos las cantidades de dinero y aqullos (los intermediarios) el porcentaje de la comisin.

Cmo evitamos el phishing?


Una estrategia para combatir el phishing adoptada por algunas empresas es la de entrenar a los empleados de modo que puedan reconocer posibles ataques phishing. Una nueva tctica de phishing donde se envan correos electrnicos de tipo phishing a una compaa determinada, conocido como spear phishing, ha motivado al entrenamiento de usuarios en varias localidades, incluyendo la Academia Militar de West Point en los Estados Unidos. En un experimento realizado en junio del 2004 con spear phishing, el 80% de los 500 cadetes de West Point a los que se les envi un e-mail falso fueron engaados y procedieron a dar informacin personal. Un usuario al que se le contacta mediante un mensaje electrnico y se le hace mencin sobre la necesidad de "verificar" una cuenta electrnica puede o bien contactar con la compaa que supuestamente le enva el mensaje, o puede escribir la direccin web de un sitio web seguro en la barra de direcciones de su navegador para evitar usar el enlace que aparece en el mensaje sospechoso de phishing. Muchas compaas, incluyendo eBay y PayPal, siempre se dirigen a sus clientes por su nombre de usuario en los correos electrnicos, de manera que si un correo electrnico se dirige al usuario de una manera genrica como "Querido miembro de eBay" es probable que se trate de un intento de phishing. Del lado tcnico hay varios programas informticos anti-phishing disponibles. La mayora de estos programas trabajan identificando contenidos phishing en sitios web y correos electrnicos; algunos programas anti-phishing pueden por ejemplo, integrarse con los navegadores web y clientes de correo electrnico como una barra de herramientas que muestra el dominio real del sitio visitado. Los filtros de spam tambin ayudan a proteger a

- 53 -

los usuarios de los phishers, ya que reducen el nmero de correos electrnicos relacionados con el phishing recibidos por el usuario. Muchas organizaciones han introducido la caracterstica denominada pregunta secreta, en la que se pregunta informacin que slo debe ser conocida por el usuario y la organizacin. En los Estados Unidos, el senador Patrick Leahy introdujo el Acta Anti-Phishing de 2005 el 1 de marzo de 2005. Esta ley federal de anti-phishing estableca que aquellos criminales que crearan pginas web falsas o enviaran spam a cuentas de e-mail con la intencin de estafar a los usuarios podran recibir una multa de hasta $250,000 USD y penas de crcel por un trmino de hasta cinco aos.

La Estafa nigeriana
La estafa nigeriana, timo nigeriano o timo 419, es un fraude, un engao. Se lleva a cabo principalmente por correo electrnico no solicitado. Adquiere su nombre del nmero de artculo del cdigo penal de Nigeria que viola, ya que buena parte de estas estafas provienen de ese pas. Esta estafa consiste en ilusionar a la vctima con una fortuna inexistente y persuadirla para que pague una suma de dinero por adelantado, como condicin para acceder a la supuesta fortuna. Las sumas solicitadas son bastante elevadas, pero insignificantes comparadas con la fortuna que las vctimas esperan recibir.

Variantes
Existen numerosas variantes de la estafa. Las ms comunes son una herencia vacante que la vctima adquirir, una cuenta bancaria abandonada, una lotera que la vctima ha ganado, un contrato de obra pblica o simplemente una gran fortuna que alguien desea donar generosamente antes de morir. Algunos sostienen que la excusa de la lotera es la ms comn de todas. Por ejemplo, la vctima podra recibir un mensaje del tipo "Soy una persona muy rica que reside en Nigeria y necesito trasladar una suma importante al extranjero con discrecin. Sera posible utilizar su cuenta bancaria?". Las sumas normalmente suelen estar cerca de decenas de millones de dlares. A la vctima se le promete un determinado porcentaje, como el 10 o el 20 por ciento. El trato propuesto se suele presentar como un delito de guante blanco inocuo con el fin de disuadir a las vctimas -los supuestos inversionistas- de llamar a las autoridades. Los timadores enviarn algunos documentos con sellos y firmas con aspecto oficial, normalmente archivos grficos adjuntados a mensajes de correo electrnico, a quien acepte la oferta. A medida que prosiga el intercambio, se pide a la vctima que enve dinero, con la excusa de supuestos honorarios, gastos, sobornos, impuestos o comisiones. Se va creando una sucesin de excusas de todo tipo, pero siempre se mantiene la promesa del traspaso de una cantidad millonaria. A menudo se ejerce presin psicolgica, por ejemplo alegando que la parte nigeriana tendra que vender todas sus pertenencias y pedir un prstamo para poder
- 54 -

pagar algunos gastos y sobornos. A veces, se invita a la vctima a viajar a determinados pases africanos, entre ellos Nigeria y Sudfrica. Esto es especialmente peligroso, porque en ocasiones el supuesto inversor puede acabar secuestrado o incluso asesinado por el timador.

En cualquier caso, la transferencia nunca llega, pues las millonarias sumas de dinero jams han existido.
Las operaciones estn organizadas con gran profesionalidad en pases como Nigeria, Sierra Leona, Costa de Marfil, Ghana, Togo, Benn y Sudfrica. Cuentan con oficinas, nmeros de fax, telfonos celulares y a veces con sitios fraudulentos en internet. ltimamente, gran cantidad de estafadores provenientes del frica Occidental se han establecido en diversas ciudades europeas, especialmente msterdam, Londres y Madrid, etc, como tambin en Dubi. A menudo se persuade a las vctimas a viajar all para cobrar sus millones.

Tipos comunes de timo nigeriano


La clsica estafa nigeriana o africana
Una supuesta autoridad gubernamental, bancaria o petrolera africana solicita al destinatario los datos de su cuenta bancaria con el objeto de transferir a ella grandes sumas de dinero que desean sacar del pas, a cambio de una sustanciosa comisin. En caso de que la vctima acepte y tras una serie de contactos por correo electrnico, fax o telfono, se le solicita que enve dinero para hacer frente a gastos inesperados o sobornos. Por supuesto ni las cantidades adelantadas sern nunca restituidas, ni se recibirn jams los beneficios prometidos.

Animales regalados
Se anuncian en pginas de venta y regalo de animales. Normalmente ofrecen alguna raza de animal especialmente valorada como por ejemplo "Regalo Yorkshire". Son anuncios mal redactados, con un castellano absolutamente deficiente que seguramente proviene de un traductor automtico de nuestro idioma. Cuentan que tienen que mudarse y necesitan regalar sus perritos o cualquier otro animal. Cuando algn interesado contesta que acepta, dicen que hay que enviarles el dinero para que puedan enviar por avin desde all el animal. Suelen mandar informacin falsa hacindose pasar por el aeropuerto para "informar" de cmo envan los cachorros y a qu se deben los gastos. Si se llega ms adelante y se paga esa cantidad (que suele ser pequea para que la gente se lo plantee), mandan mensajes de otros aeropuertos a los que el cachorro supuestamente ha sido enviado por error, solicitando un nuevo envo de dinero para poder completar la supuesta entrega.

- 55 -

El capitn militar en Irak


Contestan a los anuncios de venta de los que sea (terrenos, casas...) solicitando informacin. Al obtener respuesta, envan un correo electrnico alegando ser militares que necesitan invertir un dinero que han obtenido del crudo, pero que como militares que son lo tienen que entregar a alguien en quien puedan confiar, ya que es ilegal que se lo queden a ttulo personal y para ello solicitan los datos de la vctima de la estafa para enviar supuestamente el dinero en concepto de compra de la propiedad en venta. Como en los otros casos, en algn momento los timadores solicitarn a la vctima que pague algn tipo de gasto.

El timo de la lotera
El mensaje anuncia al destinatario que ha obtenido un premio de la lotera, aun cuando no haya participado en sorteo alguno. La mecnica luego del mensaje es similar al caso anterior: tras sucesivos contactos se solicita un desembolso para cubrir los gastos ocasionados por algn trmite. La gran difusin de este fenmeno en Espaa ha provocado que el Organismo Nacional de Loteras y Apuestas del Estado haya publicado un aviso al respecto en su pgina web.

El To de Amrica
Los supuestos albaceas de un desconocido y adinerado pariente anuncian su fallecimiento y notifican al destinatario su inclusin entre los beneficiarios del testamento. En este caso a menudo se utilizan tcnicas de ingeniera social, por ejemplo haciendo coincidir el apellido del difunto con el del destinatario. En ocasiones se sugiere con ambigedad que el destinatario se haga pasar por un pariente del difunto, para evitar perder la herencia, que ser repartida entre el abogado/albacea y la vctima. Una variante de esta estafa es la "herencia en vida", en que alguien supuestamente aquejado de una enfermedad terminal, sin familia, contacta a la vctima con el fin de darle su dinero para que realice obras de caridad, ayudando a los pobres o desamparados. Como en los otros casos, en algn momento los timadores solicitarn a la vctima que pague algn tipo de gasto.

El prisionero espaol o peruano


Este timo tiene un origen muy anterior a los previos, a comienzos del siglo XX. Uno de los timadores, el confidente, contacta con la vctima para explicarle que est en contacto con una persona muy famosa e influyente que est encerrada en una crcel espaola (o segn versiones ms modernas, de algn pas africano) bajo una identidad falsa. No puede revelar su identidad para obtener su libertad, ya que esa accin tendra repercusiones muy graves, y le ha pedido al confidente que consiga suficiente dinero para pagar su defensa o fianza. El confidente ofrece a la vctima la oportunidad de aportar parte del dinero, a cambio de una recompensa extremadamente generosa cuando el prisionero
- 56 -

salga libre. Sin embargo, una vez entregado el dinero surgen complicaciones que necesitan de ms dinero, hasta que la vctima ya no puede o quiere dar ms. En ese momento se acaba el timo y el confidente desaparece.

La venta del telfono mvil (celular) en eBay


En este fraude, los timadores localizan a usuarios particulares de eBay que ofrezcan telfonos mviles. Ofrecen una puja muy alta en el ltimo momento, ganando as la subasta. Luego contactan al vendedor para explicarle que desean enviar el mvil a un supuesto hijo que trabaja como misionero en Nigeria, y que necesitan conocer la cuenta Paypal del vendedor para pagar (en vez de pagar directamente va Paypal, a travs de los enlaces proporcionados por eBay al final de cada subasta). A continuacin envan un mensaje con las cabeceras falsificadas para que parezca provenir de Paypal, en que se confirma que el pago se ha realizado. Cuando el vendedor intenta comprobar el pago desde el enlace en el mensaje, ser dirigido a una web falsa, con la apariencia de ser de Paypal. En esta pgina se le explica que por seguridad, el pago ser transferido a su cuenta solo cuando se realice el envo. Obviamente, si enva el mvil al comprador, nunca recibir el dinero.

La compensacin
El mensaje informa a la vctima de que el Estado nigeriano le compensar por haber sido vctima de la "Estafa Nigeriana", aunque la potencial vctima no lo haya sido. Las sumas ofrecidas van desde US$850.000 a US$1.000.000. La vctima debe contactar a un funcionario, quien le pedir el depsito de una suma de alrededor de US $1.000 para asuntos burocrticos de la cobranza de la compensacin.

El Nuevo Amor
Es una de las ms comunes. Consiste en que una supuesta mujer, generalmente nativa de Sudn o Nigeria , enva a un correo electrnico una solicitud de amistad y fotografas personales. Los nombres ms usados del emisor son: Edith Kassala o Aline.

- 57 -

HIJACKING
El termino hijacking significa secuestro en ingls y en el mbito informtico hace referencia a toda tcnica ilegal que lleve consigo el aduearse o robar algo (generalmente informacin) por parte de un atacante. Es por tanto un concepto muy abierto y que puede aplicarse a varios mbitos, de esta manera podemos encontramos con el secuestro de conexiones de red, sesiones de terminal, servicios, modems y un largo etctera en cuanto a servicios informticos se refiere.

Algunos ejemplos de Hijacking


IP hijakers: secuestro de una conexin TCP/IP por ejemplo durante una sesin Telnet permitiendo a un atacante inyectar comandos o realizar un DoS durante dicha sesin. Page hijacking: secuestro de pgina web. Hace referencia a las modificaciones que un atacante realiza sobre una pgina web, normalmente haciendo uso de algn bug de seguridad del servidor o de programacin del sitio web, tambin es conocido como defacement o desfiguracin. Reverse domain hijacking o Domain hijacking: secuestro de dominio Session hijacking: secuestro de sesin Browser hijacking: Se llama as al efecto de apropiacin que realizan algunos spyware sobre el navegador web lanzando popups, modificando la pgina de inicio, modificando la pgina de bsqueda predeterminada etc. Es utilizado por un tipo de software malware el cual altera la configuracin interna de los navegadores de internet de un ordenador. El termino "secuestro" hace referencia a que stas modificaciones se hacen sin el permiso y el conocimiento del usuario. Algunos de stos son fciles de eliminar del sistema, mientras que otros son extremadamente complicados de eliminar y revertir sus cambios. Home Page Browser hijacking: secuestro de la pgina de inicio del navegador. Esto sucede cuando la pgina de inicio, en la que navegamos es cambiada por otra a inters del secuestrador. Generalmente son pginas en las que nos invita a usar los servicios de la pgina para que nuestro equipo est seguro y funcione correctamente. No cabe decir que es a cambio de un pago y que el origen del error y mal funcionamiento del equipo es debido a nuestro secuestrador Modem hijacking: secuestro del Modem. Esta expresin es en ocasiones utilizada para referirse a la estafa de los famosos dialers que tanta guerra dieron en su da (antes del auge del ADSL) y que configuran sin el consentimiento del usuario nuevas conexiones a nmeros de cobro extraordinario.

- 58 -

SESSION HIJACKING
Cuando usted se conecta a su cuenta bancaria en lnea con su nombre de usuario, password y dems, se crea una sesin entre su computadora y los servidores del banco con el tiempo o duracin de la conexin (por ejemplo, 5 minutos) utilizando una cookie que permite mantener una sesin con un nmero de identificacin propio, informacin del usuario, preferencias, hbitos, etc.

Pero el problema con las sesiones es que se pueden secuestrar. Por eso es que le definen un tiempo, por ejemplo 5 minutos para que al completarse los 5 minutos la conexin se cierra automticamente para que usted tenga que ingresar nuevamente (por motivos de seguridad) su nombre de usuario y password y le sale un mensaje dicindole que su sesin a expirado. Seguramente ya le habr sucedido en varias ocasiones. Si una sesin es secuestrada y esa sesin dura mucho tiempo , mucho ms tiempo tendra el atacante para hacerse pasar por usted.

Las sesiones de los sistemas deben estar limitadas a un periodo de 3 a 5 minutos de inactividad. Transcurrido este tiempo, la sesin debe expirar.
Esto no lo digo para que se asuste y deje de usar su cuenta online. Los bancos hoy en da tienen altas medidas de seguridad en internet, de hecho son los sitios ms difciles o casi imposibles de vulnerar y si lo atrapan puede ser condenado hasta con 30 aos de prisin, dependiendo del pais en el que se haya cometido el ilcito.

- 59 -

Qu es el secuestro de sesiones?
El secuestro de las sesiones es tomar el control sobre una sesin TCP que est siendo intercambiada entre 2 computadoras (cliente/servidor). Esto se lleva a cabo mediante la implementacin de un sniffer como Wireshark para lograr un ataque man-in-the-middle y de esa forma capturar la informacin de la sesin.

El atacante necesita que el usuario legtimo haga una conexin y una autentificacin (login) para poder tomar el control de la sesin existente.

Pasos para secuestrar una sesin web


1. El atacante debe situarse entre la vctima y el objetivo (cliente/servidor) y tener la habilidad de realizar sniffing en la red (lo que normalmente se conoce como un ataque man-in-the-middle) 2. Monitorear el flujo de paquetes 3. Capturar la sesin de la vctima 4. Tomar el control de la sesin

- 60 -

VULNERABILIDADES EN APLICACIONES WEB


Una de los principales motivos causales de ataques sobre nuestros servidores son las vulneravilidades que poseen nuestras aplicaciones web o peor an cuando nuestros servidores estn mal configurados o poseen mal seteados los permisos. Estas son algunas de las aplicaciones web para explotar vulnerabilidades w3af: Un proyecto basado en un framework completamente extensible mediante plugins, el cual ya incluye una gran cantidad en su sitio que manejan distintos tipos de detecciones, auditorias, ataques por fuerza bruta, etc. Tambin open source y creado en Python. (http://w3af.sourceforge.net/) Grabber: Su creador lo define como un webscanner muy sencillo y simple, pero an as es capaz de detectar inyecciones SQL, Cross-Site Scripting, y analizar cdigo Javascript. Bsicamente se trata de un script en Python, por lo que requiere Python 2.4, adems de los paquetes BeautifulSoup y PyXML. Por ende tambin es plausible de correr en cualquier sistema que tenga soporte para este lenguaje. (http://rgaucher.info/beta/grabber/) Nikto: Adems de ser open source, Nikto afirma detectar alrededor de 3500 archivos potencialmente peligrosos, las versiones de 900 servidores, y problemas especficos en 250 versiones diferentes. En este caso se compone de un script creado en Perl, por lo que tambin puede ejecutarse en cualquier sistema operativo que tenga instalado el soporte para este lenguaje. (http://cirt.net/nikto2) Wapiti: Otro proyecto open source, capaz de escanear por inyecciones en bases de datos, Cross Site Scripting, inyeccin LDAP y ejecuciones de comandos entre otros. Tambin creado en Python. (http://wapiti.sourceforge.net/) SPIKE Proxy: Aplicacin open source creada por la compaa Immunity, tambin bajo el lenguaje Python, que cubre lo bsico como inyeccin SQL y Cross-Site Scripting. (http://www.immunitysec.com/resources-freesoftware.shtml) OWASP Pantera Web Assessment Studio Project: Basado en SPIKE Proxy, este proyecto lo mejora para convertirse en una herramienta de penetration testing, capaz de generar reportes, soportar plugins, y diversas utilidades incorporadas como antiIDS, fuzzing, web spider, brute force y escnaneo de cgi. (http://www.owasp.org/index.php/Category:OWASP_Pantera_Web_Assessment_Stu dio_Project) Sandcat: Permite realizar alrededor de 260 comprobaciones de seguridad, cubriendo 38 tipos de ataques va web. Tambin escanea los sitios contra los ranking de vulnerabilidades ms populares, extrados de las listas SANS Top Twenty, OWASP Top 10, y OWASP PHP Top 5. Adems, provee un mdulo para asistir en la securizacin de Apache y un analizador de logs para analizar los registros del servidor si ya fue atacado. Posee dos versiones, una gratuita y una paga, agregando esta ltima actualizaciones automticas, resumen de sesin, generador de reportes e

- 61 -

informacin completa section=sandcat)

sobre

las

vulnerabilidades.

(http://www.syhunt.com/?

Paros: Una herramienta gratuita multiplataforma realizada en Java, la cual tiene funciones de escner y proxy y tambin permite incorporar plugins. Al igual que las dems, est preparada para realizar detecciones de inyecciones SQL, Cross-Site Scripting, y vulnerabilidades especficas de servidores. (http://parosproxy.org/) OWASP WebScarab Project: Otro proxy que permite analizar trfico e interceptarlo para detectar inyecciones SQL y dems. De cdigo abierto y escrito en Java. (http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project)

Si queremos conocer an ms opciones en analizadores de vulnerabilidades para aplicaciones web podemos recurrir a la lista de escners de vulnerabilidades de aplicaciones web del NIST ingresando a http://samate.nist.gov/index.php/Web_Application_Vulnerability_Scanners

- 62 -

W3 AF
w3af se trata de un framework que permite realizar diferentes tipos de pruebas contra aplicaciones web para determinar que vulnerabilidades puede tener dicha aplicacin detallando niveles de criticidad en funcin al impacto que puedan llegar a tener estas sobre la infraestructura web o sobre sus clientes, en algunos casos se ha dicho que este framework es El metasploit para aplicaciones web dado que se trata de un framework bastante completo y con unas capacidades que difcilmente se encuentran en otras herramientas de la misma ndole (open source o comerciales). Por otro lado, se trata de un framework libre, licenciado bajo la GNU/GPLv2 lo que quiere decir que su cdigo se encuentra disponible al publico, ademas de que se puede usar, modificar y redistribuir si es lo que le interesa al usuario.

Instalacin de w3af via repositorio


Para instalar w3af, contamos con 2 mecanismos, en primer lugar en distribuciones basadas en Debian es posible descargarlo desde los repositorios oficiales, dado que se incluye como software, simplemente ejecutando:
apt-get install w3af

Instalacin de w3af via subversion


Si deseamos tener la ltima versin de la aplicacin la descargamos desde su repositorio subversion utilizando el comando:
svn co https://w3af.svn.sourceforge.net/svnroot/w3af/trunk w3af

Luego de haber descargado la ltima versin de w3af ser necesario tener algunas dependencias instaladas para conseguir que el framework pueda ser utilizado correctamente, estas dependencias son:
apt-get install python nlkt python-nltk python-lxml python-svn pythonfpconst python-pygooglechart python-soappy python-openssl python-scapy python-lxml python-svn

Ahora si queremos ejecutarlo en modo grafico, se deben instalar graphviz


apt-get install graphviz

La mayora de estas libreras se encuentran incluidas en las ultimas versiones de Debian y/o Ubuntu, sin embargo, si la instalacin de alguna, da algn tipo de fallo o deben instalarse manualmente, el framework incluye todas estas libreras necesarias para ser instaladas manualmente desde el directorio extlib/

- 63 -

Ejecutando w3af
Para probar que w3af se encuentra correctamente configurado, basta con dirigirse al directorio donde se ha descargado el Framework y ejecutar el comando
# ./w3af_console

Si se encuentra el entorno con todas las libreras correctamente configuradas, con esto se abrir la consola de w3af lista para recibir comandos, por otro lado para ejecutar la interfaz GTK, desde el mismo directorio ejecutar:
# ./w3af_gui

Funcionamiento de w3af
La instalacin de w3af tiene ciertos requerimientos que deben ser cumplidos antes de poder utilizar este framework, sin embargo una vez se configura el entorno, utilizar esta herramienta es muy provechoso para realizar diferentes tipos de tareas relacionadas con penetracin en aplicaciones web. Para entender el funcionamiento de w3af es necesario en primer lugar, entender como se encuentra subdividido en 3 tipos de Plugins que son: Discovery (Descubrimiento), Audit (Auditoria) y Attack (Ataque). Los 3 interactuan con el fin de detectar vulnerabilidades sobre un objetivo dado y finalmente atacar dicha vulnerabilidad con el fin de inyectar un payload u obtener acceso no autorizado a los recursos del objetivo. En la consola de w3af tenemos los siguientes comandos:
w3af>>> help |-------------------------------------------------------------------------| | start | Start the scan. | | plugins | Enable and configure plugins. | | exploit | Exploit the vulnerability. | | profiles | List and use scan profiles. | | cleanup | Cleanup before starting a new scan. | |-------------------------------------------------------------------------| | http-settings | Configure the HTTP settings of the framework. | | misc-settings | Configure w3af misc settings. | | target | Configure the target URL. | |-------------------------------------------------------------------------| | back | Go to the previous menu. | | exit | Exit w3af. | | assert | Check assertion. | |-------------------------------------------------------------------------| | help | Display help. Issuing: help [command] , prints more | | | specific help about "command" | | version | Show w3af version information. | | keys | Display key shortcuts. | |-------------------------------------------------------------------------| w3af>>>

Las opciones tienen su descripcin justo al frente, las mas interesantes en primera instancia son target, http-settings y plugins, con el fin de establecer el objetivo, definir la configuracin HTTP y finalmente habilitar o desactivar plugins. Por otro lado tambin se cuenta con el comando back, que permite cambiar de contexto de ejecucin, si por ejemplo estamos ubicados en la configuracin de HTTP u otros podemos volver al contexto anterior. Probablemente una de las razones por las que w3af es comparado con MetaSploit
- 64 -

Framework es por la forma en la que se utilizan los plugins y dems opciones disponibles, ya que todas se encuentran en un nico contexto con sus propias opciones de configuracin, una caracterstica que resulta bastante familiar en MetaSploit, ya que en MetaSploit, navegamos a travs de exploits, payloads, auxiliaries, etc. y cada uno tiene su propio contexto y sus propias opciones de configuracin.

Objetivos de w3af
En primera instancia, es necesario definir donde se encuentra localizada la aplicacin web objetivo, para esto, es necesario seguir los siguientes pasos: 1. Establecer el contexto de objetivos en w3af:
w3af>>> target w3af/config:target>>> help |-------------------------------------------------------------------------| | view | List the available options and their values. | | set | Set a parameter value. | |-------------------------------------------------------------------------| | back | Go to the previous menu. | | exit | Exit w3af. | | assert | Check assertion. | |-------------------------------------------------------------------------| w3af/config:target>>> w3af/config:target>>> view |-------------------------------------------------------------------------| | Setting | Value | Description | |-------------------------------------------------------------------------| | targetOS | unknown | Target operating system | | | | (unknown/unix/windows) | | targetFramework | unknown | Target programming framework | | | | (unknown/php/asp/java/jsp/cfm/ruby/perl) | | target | | A comma separated list of URLs | |-------------------------------------------------------------------------| w3af/config:target>>>

2. Definir la ruta de la aplicacin que ser el objetivo de nuestro anlisis


w3af/config:target>>> set target http://localhost/dvw

3. Opcionalmente, establecer la plataforma del objetivo y el lenguaje en el que esta escrita la aplicacin web:
w3af>>> target set targetOS windows w3af>>> target set targetFramework jsp

Como puede apreciarse, en los comandos anteriores no ha sido necesario desplazarse hasta el contexto de target para establecer una propiedad, sin embargo a lo largo de los siguientes pasos siempre se navegar hasta el contexto correspondiente con el fin de aclarar conceptos.

Configuraciones de w3af
Las opciones generales de configuracin de w3af, se dividen en dos categoras, a saber, parmetros de configuracin del protocolo HTTP y parmetros de configuracin de uso
- 65 -

general del Framework, a continuacin se su funcionamiento:

HTTP Settings
Para configurar adecuadamente estas propiedades es necesario navegar a la opcin correspondiente y conocer las opciones de configuracin HTTP disponibles, con esto en mente, se procede a indicar los pasos para editar estas propiedades. 1. Establecer el contexto de Configuracin de protocolo HTTP.
w3af>>> http-settings w3af/config:http-settings>>>

2. Listar las opciones de configuracin disponibles.


w3af/config:http-settings>>> view |----------------------------------------------------------------------------------------------------------| | Setting | Value | Description | |----------------------------------------------------------------------------------------------------------| | urlParameter | | Append the given URL parameter to every accessed URL. Example: | | | | http://www.foobar.com/index.jsp;<parameter>?id=2 | | timeout | 15 | The timeout for connections to the HTTP server | | headersFile | | Set the headers filename. This file has additional headers | | | | that are added to each request. | |----------------------------------------------------------------------------------------------------------| | ignoreSessCookies | False | Ignore session cookies | | cookieJarFile | | Set the cookiejar filename. | |----------------------------------------------------------------------------------------------------------| | ntlmAuthUser | | Set the NTLM authentication username for HTTP requests | | ntlmAuthPass | | Set the NTLM authentication password for HTTP requests | |----------------------------------------------------------------------------------------------------------| | maxFileSize | 400000 | Maximum file size | | userAgent | w3af.sourceforge.net | User Agent header | | maxRetrys | 2 | Maximum number of retries | |----------------------------------------------------------------------------------------------------------| | never404 | | A comma separated list that determines what URLs will NEVER be | | | | detected as 404 pages. | | always404 | | A comma separated list that determines what URLs will ALWAYS | | | | be detected as 404 pages. | | 404string | | If this string is found in an HTTP response, then it will be | | | | tagged as a 404. | |----------------------------------------------------------------------------------------------------------| | proxyPort | 8080 | Proxy TCP port | | proxyAddress | | Proxy IP address | |----------------------------------------------------------------------------------------------------------| | basicAuthUser | | Set the basic authentication username for HTTP requests |

- 66 -

| basicAuthPass | | Set the basic authentication password for HTTP requests | | basicAuthDomain | | Set the basic authentication domain for HTTP requests | |----------------------------------------------------------------------------------------------------------| w3af/config:http-settings>>>

3. Estableciendo algunas propiedades de configuracin HTTP


w3af/config:http-settings>>> w3af/config:http-settings>>> w3af/config:http-settings>>> w3af/config:http-settings>>> w3af/config:http-settings>>> /page1.jsf w3af/config:http-settings>>> set set set set set basicAuthDomain localhost basicAuthUser admin basicAuthPass password 404string w3af no ha encontrado el recurso always404 /page1.html /page1.jsp /page1.asp

set never404 /index.html

Evidentemente las opciones de configuracin dependen directamente de la informacin que tengamos del objetivo, con el fin de establecer opciones personalizadas que se adapten al escaneo que se pretende realizar.

Misc Settings
Se trata de parmetros de configuracin globales para determinar el funcionamiento del Framework, en especial con aquellas caractersticas del Framework que estn relacionadas con la integracin de herramientas externas, para configurar estas caractersticas se siguen los siguientes pasos: 1. Establecer el contexto de parmetros globales del Framework.
w3af>>> misc-settings w3af/config:misc-settings>>>

2. Listando los parmetros de configuracin globales del Framework.


w3af>>> misc-settings w3af/config:misc-settings>>> view |-----------------------------------------------------------------------------------------------------------| | Setting | Value | Description | |-----------------------------------------------------------------------------------------------------------| | exportFuzzableRequests | | Export all discovered fuzzable requests to the given file (CSV) | |-----------------------------------------------------------------------------------------------------------| | interface | eth0 | Local interface name to use when sniffing, doing reverse connections, | | | | etc. | | localAddress | 10.0.2.15 | Local IP address to use when doing reverse connections | |-----------------------------------------------------------------------------------------------------------| | maxDiscoveryTime | 120 | Maximum discovery time (minutes) | | maxThreads | 15 | Maximum number of threads that the w3af process will spawn. Zero | | | | means no threads (recommended) | | autoDependencies | True | Automatic dependency enabling for plugins | |-----------------------------------------------------------------------------------------------------------| | demo | False | Enable this when you are doing a demo in a conference | | nonTargets | | A comma separated list of URLs that w3af should completely ignore | |---------------------------------------------------------------------------------------------------------

- 67 -

---| | fuzzFormComboValues | tmb | Indicates what HTML form combo values w3af plugins will use: all, tb, | | | | tmb, t, b | | fuzzFCExt | txt | Indicates the extension to use when fuzzing file content | | fuzzableHeaders | | A list with all fuzzable header names | | fuzzCookie | False | Indicates if w3af plugins will use cookies as a fuzzable parameter | | fuzzFileContent | True | Indicates if w3af plugins will send the fuzzed payload to the file | | | | forms | | fuzzFileName | False | Indicates if w3af plugins will send fuzzed filenames in order to find | | | | vulnerabilities | |-----------------------------------------------------------------------------------------------------------|

3. Estableciendo valores de configuracin para los parmetros que resulten de inters.


w3af/config:misc-settings>>> set demo True w3af/config:misc-settings>>> set msf_location /opt/metasploit3/msf3 w3af/config:misc-settings>>> set maxDiscoveryTime 60

Plugins w3af
Los plugins en w3af son la base del framework, ya que separa de forma lgica las 3 categoras de acciones llevadas a cabo, que son Descubrimiento, Auditoria y Explotacin o Ataque, cada uno de los plugins disponibles en w3af corresponden a una de las 3 categoras anteriormente mencionadas, y cada uno de estos a su vez, tienen subplugins que pueden ser activados o desactivados dependiendo de las necesidades de la ejecucin del escaneo/ataque. En este punto, los plugins que se encuentran en la jerarqua mas alta en w3af se pueden listar de la siguiente forma:
w3af>>> plugins w3af/plugins>>> help |-----------------------------------------------------------------------------------------------------------| | list | List available plugins. | |-----------------------------------------------------------------------------------------------------------| | back | Go to the previous menu. | | exit | Exit w3af. | | assert | Check assertion. | |-----------------------------------------------------------------------------------------------------------| | discovery | View, configure and enable discovery plugins | | bruteforce | View, configure and enable bruteforce plugins | | evasion | View, configure and enable evasion plugins | | audit | View, configure and enable audit plugins | | grep | View, configure and enable grep plugins | | output | View, configure and enable output plugins | | mangle | View, configure and enable mangle plugins | |-----------------------------------------------------------------------------------------------------------| w3af/plugins>>>

- 68 -

Los plugins anteriores corresponden a los plugins principales contenidos en w3af, cada uno de estos puede ser configurado para activar o desactivar determinados sub-plugins que se encuentran incluidos en el plugin principal, de esta forma, se crea una estructura jerrquica de plugins que pueden ser activados y configurados de distintos modos. La arquitectura y el flujo de informacin entre los plugins disponibles en w3af es el siguiente:

El funcionamiento de estos plugins se ejecuta en el siguiente orden: 1. Se ejecutan los plugins de Discovery habilitados para intentar descubrir peticiones fuzzables, esas son potenciales vulnerabilidades que pueden ser tomadas en cuenta luego por los plugins de Auditoria. Todos los plugins de Descubrimiento se ejecutan en ciclo constante donde cada salida de uno de ellos es enviada al siguiente, de esta forma, el procesamiento no termina hasta que todos los plugins terminan, por este motivo, en ocasiones un escaneo puede llevar horas, en especial cuando se habilitan todos. Por otro lado algunos plugins tambin intentan recolectar informacin sobre el objetivo, como por ejemplo tipo de servidor, fingerprint del servicio httpd, mtodos HTTP, deteccin de load balancer en el objetivo, etc. 2. Posteriormente se ejecutan los plugins de auditoria que toman como entrada, la salida de la ejecucin de los plugins de descubrimiento, el objetivo de los plugins de auditoria es recopilar la mayor cantidad de vulnerabilidades sobre el objetivo y posteriormente almacenarlas en una zona conocida como objetos vulnerables que posteriormente pueden ser tomados como insumo para los plugins de exploits que intentaran aprovecharlas. 3. Finalmente, se encuentran los plugins de ataque que se encargan de leer la zona de Conocimiento Base y obtener los objetos vulnerables almacenados por los plugins de auditoria, estos plugins intentan aprovechar dichas vulnerabilidades intentando inyectar un payload en el objetivo. 4. Los pasos anteriores son el escenario tpico de un escaneo con w3af, sin embargo, estos tienen el apoyo de otros plugins que facilitan determinadas funciones que son necesarias, en esta categora de Plugins se encuentran: 1. Output: Especifica el formato de salida de los mensajes que produce la ejecucin de cada plugin. 2. Mangle: Intentan modificar las peticiones y respuestas por medio de expresiones regulares. 3. Evasion: Intentan modificar las peticiones con el fin de evadir sistemas IDS instalados en el objetivo. 4. Bruteforce: Intentan ejecutar un ataque de fuerza bruta contra login.
- 69 -

Navegado por los Plugins


Navegar por plugins y sus configuraciones es uno de los primeros pasos que se deben realizar en orden de habilitar aquellos que resulten interesantes dependiendo del conocimiento que se tenga del objetivo y otros criterios que puedan ser tambin aplicables, a continuacin se listan los comandos utilizados para navegar, configurar y activar/desactivar plugins.
w3af>>> plugins w3af/plugins>>> list audit |----------------------------------------------------------------------------------------------------------| | Plugin name | Status | Conf | Description | |----------------------------------------------------------------------------------------------------------| | LDAPi | | | Find LDAP injection bugs. | | blindSqli | | Yes | Find blind SQL injection vulnerabilities. | | buffOverflow | | | Find buffer overflow vulnerabilities. | | dav | | | Verify if the WebDAV module is properly configured. | | eval | | Yes | Find insecure eval() usage. | | fileUpload | | Yes | Uploads a file and then searches for the file inside all known | | | | | directories. | | formatString | | | Find format string vulnerabilities. | | frontpage | | Yes | Tries to upload a file using frontpage extensions (author.dll). | | generic | | Yes | Find all kind of bugs without using a fixed database of errors. | | globalRedirect | | | Find scripts that redirect the browser to any site. | | htaccessMethods | | | Find misconfigurations in the "<LIMIT>" configuration of Apache. | | localFileInclude | | | Find local file inclusion vulnerabilities. | | mxInjection | | | Find MX injection vulnerabilities. | | osCommanding | | | Find OS Commanding vulnerabilities. | | phishingVector | | | Find phishing vectors. | | preg_replace | | | Find unsafe usage of PHPs preg_replace. | | redos | | | Find ReDoS vulnerabilities. | | remoteFileInclude | | Yes | Find remote file inclusion vulnerabilities. | | responseSplitting | | | Find response splitting vulnerabilities. | | sqli | | | Find SQL injection bugs. | | ssi | | | Find server side inclusion vulnerabilities. | | sslCertificate | | | Check the SSL certificate validity( if https is being used ). | | unSSL | | | Find out if secure content can also be fetched using http. | | xpath | | | Find XPATH injection vulnerabilities. | | xsrf | | | Find the easiest to exploit xsrf vulnerabilities. | | xss | | Yes | Find cross site scripting vulnerabilities. | | xst | | | Find Cross Site Tracing vulnerabilities. | |----------------------------------------------------------------------------------------------------------| w3af/plugins>>>

Existen 4 columnas que corresponden a:

- 70 -

1. 2. 3. 4.

Plugin Name: Nombre del Plugin Status: Estado del Plugin Activado/Desactivado. Conf: Indica si tiene opciones de configuracin personalizadas. Description: Descripcin del Plugin.

Consultar informacin sobre uno de los plugins del listado:


w3af/plugins>>> help audit View, configure and enable audit plugins Syntax: audit [config plugin | plugin1[,plugin2 ... pluginN] | desc plugin] Example1: audit Result: All enabled audit plugins are listed. Example2: audit LDAPi,blindSqli Result: LDAPi and blindSqli are configured to run Example3: audit config LDAPi Result: Enters to the plugin configuration menu. Example4: audit all,!blindSqli Result: All audit plugins are configured to run except blindSqli. Example5: audit desc LDAPi Result: You will get the plugin description. Example6: audit LDAPi,blindSqli audit !LDAPi Result: LDAPi is disabled in the second command, only blindSqli will run. w3af/plugins>>>

Consultar la descripcin de un plugin dentro de una de las categoras de plugins raz, por ejemplo, describir el uso del plugin dav incluido en el plugin audit
w3af/plugins>>> audit desc dav This plugin finds WebDAV configuration errors. These errors are generally server configuration errors rather than a web application errors. To check for vulnerabilities of this kind, the plugin will try to PUT a file on a directory that has WebDAV enabled, if the file is uploaded successfully, then we have found a bug. w3af/plugins>>>

Activando un plugin dentro de una de las categoras de plugins principales.


w3af/plugins>>> audit xss xsrf dav

Desactivando un plugin dentro de una de las categoras de plugins principales.


w3af/plugins>>> audit !LDAPi !sslCertificate

Configurando opciones de sub-plugins:


w3af/plugins>>> audit config xss w3af/plugins/audit/config:xss>>> view |----------------------------------------------------------------------------------------------------------| | Setting | Value | Description | |----------------------------------------------------------------------------------------------------------| | numberOfChecks | 3 | Set the amount of checks to perform for each fuzzable parameter. Valid numbers: | | | | 1 to 15 | | checkStored | True | Identify stored cross site scripting vulnerabilities

- 71 -

| |----------------------------------------------------------------------------------------------------------| w3af/plugins/audit/config:xss>>>

Las instrucciones anteriores corresponden a los pasos que se deben llevar a cabo para configurar cualquier plugin existente en w3af, como puede apreciarse, son bastante sencillos sin embargo se requieren conocimientos avanzados sobre seguridad en aplicaciones web con el fin de establecer una configuracin optima.

Profiles w3af
Los profiles en w3af son simplemente configuraciones guardadas de plugins y sub-plugins habilitados, enfocados en objetivos con caractersticas especificas, frecuentemente este tipo de asociaciones se realizan en el momento de iniciar un proceso de recoleccin de informacin por medio de otras herramientas como por ejemplo, tcnicas de ingeniera social, en cualquier caso, el uso de perfiles, permite habilitar solamente aquellos plugins que resultan interesantes contra un objetivo, desactivando el resto. Establecer el contexto de perfiles:
w3af>>> profiles w3af/profiles>>> list |-----------------------------------------------------------------------------------------------------------| | Profile | Description | |-----------------------------------------------------------------------------------------------------------| | bruteforce | Bruteforce form or basic authentication access controls using default | | | credentials. To run this profile, set the target URL to the resource where the | | | access control is, and then click on Start. | | audit_high_risk | Perform a scan to only identify the vulnerabilities with higher risk, like SQL | | | Injection, OS Commanding, Insecure File Uploads, etc. | | full_audit_manual_disc | Perform a manual discovery using the spiderMan plugin, and afterwards scan the | | | site for any known vulnerabilities. | | full_audit | This profile performs a full audit of the target website, using only the | | | webSpider plugin for discovery. | | OWASP_TOP10 | The Open Web Application Security Project (OWASP) is a worldwide free and open | | | community focused on improving the security of application software. OWASP | | | searched for and published the ten most common security flaws. This profile | | | search for this top 10 security flaws. For more information about the security | | | flaws: http://www.owasp.org/index.php/OWASP_Top_Ten_Project . | | fast_scan | Perform a fast scan of the target site, using only a few discovery plugins and | | | the fastest audit plugins. | | empty_profile | This is an empty profile that you can use to start a new configuration from. | | web_infrastructure | Use all the available techniques in w3af to fingerprint the remote Web | | | infrastructure. | | sitemap | Use different online techniques to create a fast sitemap of the target web | | | application. This plugin will only work if you've got Internet access and the | | | target web application is being spidered by Yahoo!

- 72 -

| |-----------------------------------------------------------------------------------------------------------| w3af/profiles>>>

Usando un Perfile de los listados:


w3af/profiles>>> use sitemap The plugins configured by the scan profile have been enabled, and their options configured. Please set the target URL(s) and start the scan. w3af/profiles>>>

Exploits w3af
Finalmente, una de las partes ms importantes en el proceso de escaneo de vulnerabilidades, es el aprovechamiento de las mismas, es aqu donde juegan un papel importante los plugins de ataque de w3af, a continuacin se explica como se pueden usar estos plugins desde la consola de w3af 1.Estableciendo el contexto de exploits:
w3af>>> exploit w3af/exploit>>>

2. Listando los plugins de ataque:


w3af/exploit>>> list |-----------------------------------------------------------------------------------------------------------| | Plugin | Description | |-----------------------------------------------------------------------------------------------------------| | sqlmap | Exploits [blind] sql injections using sqlmap ( http://sqlmap.sf.net ). | | osCommandingShell | Exploit OS Commanding vulnerabilities. | | xssBeef | Exploit XSS vulnerabilities using beEF ( www.bindshell.net/tools/beef/ ) . | | localFileReader | Exploit local file inclusion bugs. | | rfiProxy | Exploits remote file inclusions to create a proxy server. | | remoteFileIncludeShell | Exploit remote file include vulnerabilities. | | davShell | Exploit web servers that have unauthenticated DAV access. | | eval | Exploit eval() vulnerabilities. | | fileUploadShell | Exploit applications that allow unrestricted file uploads inside the webroot. | | sql_webshell | Exploits [blind] sql injections by uploading a webshell to the target webroot. | |-----------------------------------------------------------------------------------------------------------| w3af/exploit>>>

3. Para explotar todas las vulnerabilidades encontradas en busca de una consola remota:
w3af/exploit>>> exploit

4. Para ejecutar un Fast Exploit


w3af/exploit>>> fastexploit

- 73 -

Encontrando Vulnerabilidades, ejecutando Exploits


Hasta ahora vimos como utilizar y configurar w3af para ejecutar pruebas de penetracin contra aplicaciones web, habilitando diversos tipos de plugins y recolectando informacin sobre un objetivo determinado. Primero vamos a descargar un entorno de pruebas provisto por w3af. El entorno contiene una aplicaciones web con cada una de las vulnerabilidades incluidas en distintos directorios, lista para desplegar en un servidor apache, (como por ejemplo XAMPP, para pruebas es mas que suficiente), para tener la aplicacin web de pruebas de w3af basta con realizar un checkout del repositorio SVN ubicado en la ruta:
https://w3af.svn.sourceforge.net/svnroot/w3af/extras/testEnv/webroot/w3af/

Solamente es necesario ubicar todos estos archivos en el directorio de aplicaciones del servidor web, posteriormente, es necesario establecer determinadas configuraciones a nivel de Apache, para esto basta con ver el contenido del directorio:
https://w3af.svn.sourceforge.net/svnroot/w3af/extras/testEnv/apache2config /

Donde se encuentran los mdulos habilitados y las opciones de configuracin adicionales. Una vez establecido el entorno de pruebas, se puede utilizar w3af con el fin de detectar y explotar dichas vulnerabilidades, ahora a probar algunas de las vulnerabilidades incluidas en el entorno de pruebas:

Vulnerabilidades OS Command
Se trata de una vulnerabilidad que permite a un atacante ejecutar comandos de forma arbitraria en la maquina objetivo, frecuentemente ocasionada por malas practicas de programacin.
w3af>>> target set target http://localhost/w3af/audit/os_commanding/simple_osc.php?cmd=ls w3af>>> plugins audit osCommanding w3af>>> start There is no point in searching yahoo site explorer for site: "localhost" . Yahoo doesnt index private pages. Found 1 URLs and 1 different points of injection. The list of URLs is: - http://localhost/w3af/audit/os_commanding/simple_osc.php The list of fuzzable requests is: - http://localhost/w3af/audit/os_commanding/simple_osc.php | Method: GET | Parameters: (cmd="ls") OS Commanding was found at: "http://localhost/w3af/audit/os_commanding/simple_osc.php", using HTTP method GET. The sent data was: "cmd=ping+-c+9+localhost". This vulnerability was found in the request with id 20. Finished scanning process. w3af>>> w3af>>> target set target http://localhost/w3af/audit/os_commanding/simple_osc.php?cmd=ls Unknown command 'w3af>>>' w3af>>> w3af>>> plugins audit osCommanding Unknown command 'w3af>>>' w3af>>> w3af>>> start Unknown command 'w3af>>>' w3af>>> There is no point in searching yahoo site explorer for site: "localhost" . Yahoo doesnt index private pages. Unknown command 'There' w3af>>> Found 1 URLs and 1 different points of injection. Unknown command 'Found' w3af>>> The list of URLs is: Unknown command 'The' w3af>>> - http://localhost/w3af/audit/os_commanding/simple_osc.php Unknown command '-' w3af>>> The list of fuzzable requests is: Unknown command 'The' w3af>>> - http://localhost/w3af/audit/os_commanding/simple_osc.php | Method: GET | Parameters: (cmd="ls") Unknown command '-'

- 74 -

w3af>>> OS Commanding was found at: "http://localhost/w3af/audit/os_commanding/simple_osc.php", using HTTP method GET. The sent data was: "cmd=ping+-c+9+localhost". This vulnerability was found in the request with id 20. Unknown command 'OS' w3af>>> Finished scanning process. Unknown command 'Finished' w3af>>> w3af>>> Unknown command 'w3af>>>' w3af>>> exploit exploit osCommandingShell osCommandingShell exploit plugin is starting. The vulnerability was found using method GET, tried to change the method to POST for exploiting but failed. Vulnerability successfully exploited. This is a list of available shells and proxies: - [0] <osCommandingShell object (ruser: "www-data" | rsystem: "Linux g460 2.6.32-5-686 i686 GNU/Linux")> Please use the interact command to interact with the shell objects. w3af>>> exploit interact 0 Execute "endInteraction" to get out of the remote shell. Commands typed in this menu will be runned through the osCommandingShell shell w3af/exploit/osCommandingShell-0>>> ls blind_osc.php index.html param_osc.php passthru.php simple_osc.php vulnerable.php vulnerable2.php w3af/exploit/osCommandingShell-0>>>

Como se ha podido apreciar la ruta http://localhost/w3af/audit/os_commanding/simple_osc.php?cmd=ls indica la vulnerabilidad incluida en el entorno de pruebas w3af, los dems comandos son bsicos y se han explicado en el post anterior.

Existen muchas ms vulnerabilidades que pueden emplearse con w3af.


En un entorno cercano a la realidad, lo mas frecuente con w3af es que un atacante utilice esta herramienta para explorar el objetivo de esta forma podr detectar posibles vulnerabilidades que posteriormente puede aprovechar.

- 75 -

EVASION DE FIREWALLS
Existen distintas tcnicas que permiten conocer cuales puertos se encuentran abiertos en una mquina remota, cada una estas tcnicas utilizan distintos tipos de envo de paquetes y protocolos, sin embargo, cuando una mquina remota tiene un Firewall o un IDS instalado y correctamente configurado, lo ms probable es que los escaneos sean infructuosos, dado que la salida ms frecuente, ser precisamente ver todos los puertos bloqueados. Por ejemplo, si ejecutamos un clsico escaneo de puertos contra una mquina windows sin un firewall activo, podramos ver lo siguiente:
# nmap -sS -sV 10.10.10.200 Starting nmap 5.21 ( http://nmap.org ) at 2012-02-29 01:48 ART nmap scan report for 10.10.10.200 Host is up (0.00062s latency). Not shown: 997 closed ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds MAC Address: 08:00:27:61:34:29 (Cadmus Computer Systems) Service Info: OS: Windows Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . nmap done: 1 IP address (1 host up) scanned in 7.71 seconds

Es posible ver los puertos y los servicios en ejecucin, sin embargo, contra la misma mquina, con el firewall correctamente configurado, lo mas probable es que la salida del mismo comando sea similar a la siguiente:
>nmap -sS -sV 10.10.10.200 Starting nmap 5.21 ( http://nmap.org ) at 2012-02-29 01:50 ART nmap scan report for 10.10.10.200 Host is up (0.00038s latency). All 1000 scanned ports on 10.10.10.200 are filtered MAC Address: 08:00:27:61:34:29 (Cadmus Computer Systems) Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . nmap done: 1 IP address (1 host up) scanned in 21.71 seconds

No solamente el escaneo ha tardado tres veces ms, ademas no ha arrojado ningn resultado de inters, solamente que la mquina objetivo se encuentra activa. Cmo es posible determinar si un puerto se encuentra abierto o inclusive el sistema operativo en ejecucin si existe un Firewall que impide conocer estos detalles? En nmap existen algunas tcnicas que permiten detectar cuando un puerto se encuentra abierto y filtrado por el firewall.

- 76 -

Tcnicas de Evasion con nmap


Aunque existen algunos tips que le permiten a un atacante obtener informacin sobre puertos y servicios que se encuentran filtrados por un firewall, no existe una opcin en nmap que permita identificar si un puerto determinado se encuentra abierto y/o esta filtrado por un firewall. Solamente conociendo el protocolo TCP/IP y como funciona el intercambio de paquetes entre dos host, le permite a un atacante identificar cuales puertos se encuentran realmente abiertos. Para controlar las caractersticas de envi de paquetes a un host objetivo se pueden establecer algunas opciones en nmap con el fin de controlar y de alguna forma, predecir las respuestas del host objetivo.

NOTA: Frecuentemente cuando un sistema se encuentra protegido con un sistema de proteccin como un Firewall o un IDS, evadir estos mecanismos puede llevar tiempo, en algunos casos incluso horas, ademas, si a esto le adicionamos el uso de Tor, (en el caso de que se trate de un ataque real y se desee anonimato) el tiempo se multiplica, en especial si no se selecciona un nodo de salida concreto para la red de Tor, permitiendo que cada peticin viaje por varios nodos de salida de la red. Tambin es bastante frecuente utilizar la tcnica de escaneo conocida como Idle Scan (-sI) que le permite al usuario proteger su identidad enviando todos los paquetes por medio de una mquina que esta siendo manejada como zombie, esta tcnica tambin tiene cuestiones de rendimiento que hacen que su desempeo sea bastante lento. En resumen, es una tarea que necesita paciencia por parte del atacante y sobre todo practica y experiencia.
Veamos algunas de estas opciones que permitiran mantenernos un poco mas a salvo de las miradas de los administradores. -f: Esta opcin intenta fragmentar los paquetes que se envan al objetivo en pequeos trozos, de esta forma es un poco mas difcil para un IDS o los Filtros de un Firewall identificar que se trata de un escaneo de puertos, con esta opcin hace que nmap divida los paquetes en pequeos trozos de 8 bytes o incluso menos, sin embargo, si lo que se desea es que los fragmentos sean de un tamao concreto, tambin se puede especificar la opcin --mtu. Por otra parte, si se especifica dos veces en esta opcin se duplica el tamao de los fragmentos en 16 --mtu: Indica el tamao en bytes de fragmentacin de los paquetes que se enven al objetivo, el valor tiene que ser un mltiplo de 8 y no se debe especificar esta opcin junto con -f, cumple los mismos fines que la opcin -f, no obstante le da mas control al pentester para especificar un tamao concreto para los paquetes -D: Ejecuta un escaneo usando distintos seuelos, esto quiere decir que las peticiones que se envan a la mquina objetivo se envan desde las direcciones IP indicadas con esta opcin (separadas por coma), estas direcciones IP pueden ser reales o no, la intencin es
- 77 -

que el origen de las peticiones no sea el mismo para todas, utilizando esta opcin junto con tiempos de espera un poco mas largos es posible evadir sistemas de deteccin de intrusos y en algunos casos restricciones de Firewall. Por otro lado es posible generar estas direcciones de forma aleatoria, simplemente utilizando la palabra clave RND:<numero de direcciones>, tambin puede usarse la palabra reservada ME para incluir la direccin IP real del atacante en la lista de seuelos. --source-port: Esta opcin permite establecer el puerto de origen por donde se enviaran los paquetes, esta opcin es til contra algunos firewall que confan en las peticiones enviadas de cualquier mquina por un puerto determinado, (por ejemplo algunas versiones del firewall Windows aceptan peticiones de maquinas cuyo puerto de origen es el 88, puerto comn para la comunicacin de Kerberos) --spoof-mac: Esta opcin permite al atacante utilizar una MAC distinta a la suya en el proceso de escaneo, inclusive puede sugerir a nmap que genere una MAC correspondiente a un nombre de proveedor como por ejemplo Cisco --data-length: Se trata de la longitud en bytes que contendr los paquetes aleatorios generados por nmap para enviar al objetivo, en escaneos que intenten evadir restricciones de Firewall, es frecuente usar valores pequeos por cuestiones de rendimiento en el escaneo. --randomize-hosts: Escaneo de hosts aleatorio para cambiar la firma de escaneo y evitar deteccin de IDS, esta opcin le indica a nmap que debe barajar o revolver un grupo de hosts ficticios para que no sea tan evidente el escaneo para el objetivo. --sent-eth: Enviar los paquetes va Ethernet --ip-options: Consiste en establecer determinadas opciones incluidas en los headers de los paquetes IP, de esta forma pueden engaarse algunas reglas de ciertas configuraciones de Firewall que se basan en algunos de estos campos en los paquetes IP. Si se desea todas ver las opciones incluidas en los paquetes enviados y recibidos, utilizar la opcin --packettrace. --ttl: Time To Live de cada uno de los paquetes enviados al objetivo, frecuentemente puede ser empleado para especificar el tiempo que se utilizara en cada escaneo

Estas son solo unas de las opciones mas utilizadas para evadir las restricciones de un Firewall. Ejemplo 1:
# nmap --spoof-mac Cisco -T4 --source-port 53 \ -sS --send-ip -n --data-length 30 --randomize-hosts \ -PN -p- -f -f -sV --version-all -O -oA target_scan-%D-%T 10.10.10.201

Con este ejemplo utilizamos una mac Cisco, definimos el valor 4 de la opcin T para personalizar los controles de tiempo que llevar el escaneo (*), estableciendo el puerto de origen 53, modo stealthy scan, longitud mxima de paquete de 30 bytes, escaneos de hosts aleatorios, no enviamos paquetes ping, escaneamos los puertos desde 1-65535, generamos
- 78 -

paquetes en fragmentos de 16 bytes, realizamos la deteccin de versin y finalmente generamos un archivo de salida con los resultados formateado con la fecha del escaneo. (*) Niveles: paranoid = 0 / sneaky = 1 / polite = 2 / normal = 3 / aggressive = 4 / insane = 5

Ejemplo 2:
# nmap -sS --log-errors --reason packet-trace \ -d3 -D 22.22.22.22,33.33.33.33,RND:4,ME \ -oN nmap-log.nmap 192.168.1.34

Ahora estamos realizando un stealthy scan, enseando mensajes de error y la razn por la cual un puerto ha sido declarado abierto|cerrado|filtrado, realizamos un traceo de todos los paquetes enviados a nivel de detalle fino, declaramos el nivel de depuracin 3 (el ms alto es el 9), declaramos dos seuelos estticos, cuatro aleatorios y uno que incluye la IP del atacante (esto ltimo en trminos prcticos no es aconsejable), finalmente generamos un archivo en formato nmap que puede ser posteriormente relanzado en el caso de que sea interrumpido el escaneo con el siguiente comando:
# nmap --resume nmap-log.nmap

Ejemplo 3:
# nmap --mtu 32 --send-eth --data-length 50 \ --source-port 53 -PN --ip-options \1\8\3\4 192.168.1.34

En este ejemplo establecemos un mtu especifico de 32 bytes por paquete, los paquetes son enviados va ethernet, establecemos un valor de 50 bytes al mximo de cada paquete de datos, esto indica que este valor se dividir entre 32 bytes que es la unidad de bytes por paquete, cada paquete es fragmentado en 2 paquetes, uno de 32 bytes y otro de 18, se establece un puerto que es por el que se enviaran los paquetes. Como ya se ha indicado anteriormente, algunos firewall con malas configuraciones permiten conexiones entrantes en funcin del puerto origen por donde han sido enviados. Se indica a nmap que no realice peticiones ping a la mquina ya que se asume que se encuentra activa, se establece la opcin \1\8\3\4 que permite determinar si es una maquina Windows o GNU/Linux dependiendo de la respuesta y finalmente se establecen las opciones de IP. Los valores validos pueden ser: R,T,U,L,S y valores decimales/hexadecimales. Para mayor informacin les recomiendo visitar http://seclists.org/nmap-dev/ En el ejemplo 3, si la mquina objetivo no es Windows la respuesta ser similar a la siguiente:
SENT (0.1980s) ARP who-has 192.168.1.36 tell 192.168.1.34 RCVD (0.1990s) ARP reply 192.168.1.36 is-at 08:00:27:61:34:29 SENT (0.4500s) ICMP 192.168.1.34 > 192.168.1.36 echo request (type=8/code=0) ttl=46 id=39558 iplen=32 ipopts={ NOP ??{\x08\x03\x04}}

- 79 -

Si la maquina objetivo es Windows la respuesta sera similar a la siguiente:


SENT (0.0570s) ICMP 192.168.1.34 > 192.168.1.34 echo request (type=8/code=0) ttl=57 id=39881 iplen=32 ipopts={ NOP ??{\x08\x03\x04}} RCVD (0.0570s) ICMP 192.168.1.34 > 192.168.1.34 echo request (type=8/code=0) ttl=57 id=39881 iplen=32 ipopts={ NOP ??{\x08\x03\x04}} RCVD (0.0570s) ICMP 192.168.1.34 > 192.168.1.34 echo reply (type=0/code=0) ttl=64 id=38533 iplen=28

Como puede apreciarse, la diferencia radica en la respuesta RCVD entre ambas mquinas, mientras que en la mquina Windows el paquete contiene las opciones IP establecidas a ipopts={ NOP ??{\x08\x03\x04}} la mquina bajo GNU/Linux ha comprendido correctamente la opcin IP y no ha registrado ningn mensaje de error o warning, lo que nos permite dictaminar la plataforma de un objetivo, aunque este se encuentre detrs de un Firewall.

Idle Scan, tu mejor aliado


Si la combinacin de las tcnicas anteriormente descritas no permite obtener informacin sobre puertos abiertos en la mquina objetivo, es probable que la conexin no sea posible establecerse entre la mquina del atacante y la mquina objetivo, al menos de forma directa, probablemente el Firewall tenga reglas para que solamente unas cuantas direcciones IP tengan acceso a los servicios de la mquina. En estos casos es necesario utilizar una tcnica avanzada conocida como Idle Scan, que consiste bsicamente en el uso de un Zombie para realizar el escaneo de puertos contra la mquina objetivo, esto es conseguido por medio de una vulnerabilidad a la que estn expuestos algunos sistemas operativos, por supuesto Windows es uno de ellos =D, que consiste en predecir cual es el IPID (Nmero de Identificacin de Fragmento de un paquete IP) para posteriormente consultar si un puerto se encuentra abierto o no en la mquina atacada. El flujo de este mecanismo de escaneo es el siguiente: 1. La mquina del atacante ha identificado una mquina vulnerable a ser tratada como Zombie, por lo tanto le enva un paquete SYN/ACK, dado que la maquina Zombie no ha enviado un paquete SYN no entiende el paquete SYN/ACK que enva la mquina del atacante, por este motivo, retorna un paquete RST con el IPID (por ejemplo el 3345) 2. El atacante con esta informacin envi un paquete SYN a la maquina objetivo con el IPID (en este caso el 3345) hacindose pasar por el Zombie, si la mquina remota acepta conexiones de dicha mquina (del Zombie), puede decirse que puede explotarse la relacin de confianza que existe entre ambas maquinas, una oportunidad frecuentemente aprovechada por un atacante 3. La maquina objetivo, enviar entonces un paquete SYN/ACK si el puerto escaneado en el paso anterior se encuentra abierto, o simplemente enviar un paquete RST si esta cerrado, en el caso de que este Filtrado, la mquina objetivo ignorara el paquete y no emitir ningn tipo de respuesta 4. Si la mquina Zombie en este punto, recibe un paquete SYN/ACK por parte de la
- 80 -

mquina objetivo, responder con un paquete RST dado que en principio no ha enviado ninguna peticin SYN, (esta la ha enviado el atacante en el paso 2), al hacer esto, el IPID aumenta en uno (es decir ahora es 3346) si por el contrario recibe un paquete RST, (indicando que el puerto en la mquina objetivo esta cerrado) la maquina Zombie omitir este paquete, lo que quiere decir que el IPID se quedar sin modificaciones 5. El atacante posteriormente, envi un paquete SYN/ACK a la mquina Zombie, nuevamente, el Zombie no ha enviado ningn paquete de sincronizacin anteriormente, as que intenta resetear la conexin enviando un paquete RST, con lo que el IPID aumenta nuevamente en uno 6. El atacante despus de recibir el paquete RST del Zombie, puede determinar si un puerto esta abierto o cerrado/filtrado, simplemente comparando el IPID, si este ha aumentado en 2 (el paquete RST enviado desde Zombie hacia el Objetivo y RST desde Zombie hacia atacante) quiere decir que el puerto se encuentra abierto, si por el contrario ha aumentado solamente en 1 (el paquete RST enviado desde Zombie hacia atacante) indica que el puerto se encuentra cerrado o filtrado por firewall desde la mquina Zombie.

Se trata de un mecanismo muy eficaz (aunque lento), que permite explotar relaciones de confianza y huecos en las reglas del firewall. Para utilizar esta tcnica pueden seguirse los siguientes pasos: 1. Identificar las mquinas en el segmento de red del objetivo a las cuales, se tiene acceso y ademas son susceptibles de ser tratadas como Zombies, o que es lo mismo, el mecanismo de generacin de IPID es secuencial, para esto puede utilizarse MetaSploit Framework
msf > use auxiliary/scanner/ip/ipidseq msf auxiliary(ipidseq) > show options Module options (auxiliary/scanner/ip/ipidseq): Name Current Setting Required Description - INTERFACE no The name of the interface RHOSTS 192.168.1.0/24 yes The target address range or CIDR identifier RPORT 80 yes The target port SNAPLEN 65535 yes The number of bytes to capture THREADS 1 yes The number of concurrent threads TIMEOUT 500 yes The reply read timeout in milliseconds msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24 RHOSTS => 192.168.1.0/24 msf [*] [*] [*] [*] [*] [*] [*] [*] [*] auxiliary(ipidseq) > run Error: 192.168.1.0: #<Class:0x7f28ea2ff3e0> execution 192.168.1.1s IPID sequence class: All zeros Error: 192.168.1.4: #<Class:0x7f28eb0fb0e8> execution Error: 192.168.1.5: #<Class:0x7f28ead0e1b0> execution Error: 192.168.1.6: #<Class:0x7f28eabeea28> execution Error: 192.168.1.7: #<Class:0x7f28ea8ffa88> execution Error: 192.168.1.8: #<Class:0x7f28ea7a1100> execution Error: 192.168.1.9: #<Class:0x7f28ea66ee68> execution Scanned 026 of 256 hosts (010% complete) - 81 expired expired expired expired expired expired expired

[*] 192.168.1.36s IPID sequence class: Incremental! [*] 192.168.1.37s IPID sequence class: All zeros [*] 192.168.1.38s IPID sequence class: All zeros .

Por otro lado tambin es posible utilizar un script de nmap que permite realizar un escaneo en busca de mquinas que sean susceptibles de ser tratadas como Zombies, esta herramienta puede ser descargada desde http://nmap.org/nsedoc/scripts/ipidseq.html Una vez descargado el archivo ipidseq.nse se debe ubicar en el directorio scripts donde se encuentre instalado nmap. Si se ha utilizado apt-get o un paquete deb/rpm para instalarlo, lo mas probable es que se encuentre en las libreras compartidas de usuario /usr/share/nmap. Para utilizarlo se puede ejecutar el comando:
# nmap -vv script ipidseq 192.168.1.1/24

En el ejemplo anterior se ha encontrado una mquina susceptible de ser tratada como Zombie, por lo tanto puede utilizarse para tratar de identificar los puertos abiertos en la mquina objetivo (que en este caso es la 192.168.1.35) simplemente ejecutando:
>nmap -Pn -sI 192.168.1.36 192.168.1.35 Starting nmap 5.21 ( http://nmap.org ) at 2011-06-01 21:37 CEST Idle scan using zombie 192.168.1.36 (192.168.1.36:80); Class: Incremental nmap scan report for 192.168.1.35 Host is up (0.051s latency). Not shown: 987 closed|filtered ports PORT STATE SERVICE 21/tcp open ftp 80/tcp open http 135/tcp open msrpc 139/tcp open netbios-ssn 443/tcp open https 445/tcp open microsoft-ds 3306/tcp open mysql 5357/tcp open unknown 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49155/tcp open unknown 49156/tcp open unknown MAC Address: 08:00:27:E3:E3:3D (Cadmus Computer Systems) nmap done: 1 IP address (1 host up) scanned in 13.19 seconds

Con esto se ha conseguido filtrar informacin sobre la mquina que se encuentra protegida por el firewall.

- 82 -

EVASION DE IDS
Hasta aqu hemos visto como utilizar nmap y ejecutar un ataque de reconocimiento de forma sigilosa, evadiendo mecanismos de seguridad en el objetivo y evitando ser detectados en nuestras acciones. Ahora se intentar evadir las reglas y preprocessors de snort para que de este modo, el escaneo efectuado contra el objetivo sea lo mas silencioso posible, tratando de no despertar sospechas ni levantar ninguna alarma de las definidas en snort (con las reglas y opciones de los preprocessors correctamente configuradas obviamente!!!). Intentaremos utilizar diferentes opciones de nmap para realizar un escaneo a diferentes mquinas en el segmento de red (snort se ejecutar como NIDS) de esta forma se medir el nivel de eficiencia de snort y las opciones de configuracin disponibles ante las diferentes tcnicas de evasin existentes en nmap.

Partiendo de la base que snort se encuentra en ejecucin con los preprocessors HTTP Inspect, Frag3, Stream5, sfPortScan, entre otros ms, se intentar ejecutar comandos nmap contra mquinas pertenecientes al segmento de red inspeccionado y se detalla el comportamiento de snort.
Entonces iniciaremos snort de la siguiente forma:
# snort -i eth0 -A console daq dump -c /etc/snort/snort.conf

Posteriormente, las siguientes pruebas determinaran el comportamiento de snort ante ataques de reconocimiento utilizando nmap

Decoy Scan con nmap


Si ejecutamos un escaneo Stealthy con 7 seuelos con el siguiente comando:
nmap -sS -D 192.168.1.30, 192.168.1.31, 192.168.1.32, 192.168.1.35, 192.168.1.36,192.168.1.37,ME 192.168.1.34

snort identificar el ataque y generar una alerta como la siguiente:


06/26-18:05:39.953695 [**] [122:2:0] (portscan) TCP Decoy Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.30 -> 192.168.1.34

Fragmentacin de Paquetes nmap


Si ejecutamos un escaneo TCP sin ejecutar ICMP_REPLY/ICMP_ECHO y fragmentando los paquetes a 8 bytes:
# nmap -PN -P0 -f 192.168.1.34

- 83 -

el preprocessor Frag3 de snort identificar el ataque de fragmentacin de paquetes y generar una alarma, ademas, el preprocessor sfPortScan identificar que se intentaba realizar un escaneo de puertos TCP.
06/26-18:29:02.793913 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794002 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794086 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794108 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794221 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34

Host Aleatorios con nmap


Ahora intentaremos ejecutar un escaneo de puertos generando un grupo de direcciones aleatorias y cambiando el puerto origen de la peticin.
nmap --source-port 80 -sS -n --randomize-hosts -PN 192.168.1.34

Con esto snort solamente consigue obtener una alarma relacionada con el escaneo:
06/26-18:49:36.255313 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.34

Escaneo de nmap + spoofing sobre la identidad del atacante


Con nmap es posible definir una direccin IP falsa, puertos falsos y MAC falsas para realizar un escaneo contra una mquina objetivo. De esta forma aunque exista un sistema de deteccin de intrusos establecido en la red donde se localizar el objetivo, este detectar que se est realizando un escaneo de puertos pero en los logs se ver la direccin origen que el atacante eligi mostrar. Se trata de una tcnica muy til, sin embargo no es muy sutil, ya que aunque la identidad del atacante no se ve comprometida (en teora), es posible que se disparen todas las alarmas en el objetivo por un posible ataque de reconocimiento.
# nmap -PN --spoof-mac 00:11:22:33:44:55 --source-port 80 -n -e eth0 -S 192.168.1.22 192.168.1.34

La direccin 192.168.1.22 no existe, sin embargo, snort simplemente ha alertado que se esta llevando a cabo un escaneo de puertos desde la mquina con direccin IP 192.168.1.22
07/01-18:43:59.477619 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.22 -> 192.168.1.34

Como puede apreciarse, la alerta generada no contiene trazas relacionadas con la direccin IP real del atacante.
- 84 -

Como nota adicional, se debe tener en cuenta desactivar consultas DNS reversas (-n) y no ejecutar un ping antes del escaneo (-PN) y no se debe utilizar un escaneo TCP (-sT) ya que en dicho caso snort detectar la direccin real del atacante.
# nmap -sT -PN --spoof-mac 00:11:22:33:44:55 --source-port 80 -n -e eth0 -S 192.168.1.22 192.168.1.34 WARNING: -S will only affect the source address used in a connect() scan if you specify one of your own addresses. Use -sS or another raw scan if you want to completely spoof your source address, but then you need to know what youre doing to obtain meaningful results. WARNING: -g is incompatible with the default connect() scan (-sT). Use a raw scan such as -sS if you want to set the source port.

El resultado en la traza de snort.


07/01-19:53:30.908484 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.34

Como se puede apreciar, snort ha identificado la direccin IP real del atacante.

Escaneo controlando el tiempo de entrega de paquetes con nmap


Se ejecuta un escaneo con nmap utilizando control de tiempo de entrega de los paquetes a la mquina objetivo, de esta forma, es mucho ms difcil que snort pueda identificar el ataque, para conseguir esto se utiliza la opcin -T como se ha indicado anteriormente, dependiendo del mecanismo utilizado (T1, T2, T3, etc.) el tiempo del escaneo puede variar considerablemente. T0
nmap -T0 192.168.1.34

snort no conseguir identificar el ataque de escaneo de puertos sin embargo, el tiempo empleado en el escaneo ser bastante alto, entre 2 y 4 horas. T1
nmap -T1 192.168.1.34

snort no conseguir identificar el ataque de escaneo de puertos sin embargo, el tiempo empleado en el escaneo ser bastante alto, entre 30 y 45 minutos. T2
nmap -T2 192.168.1.34

snort no podr identificar que se trata de un ataque de reconocimiento, pero el escaneo demora aproximadamente 20 minutos. T3
nmap -T3 192.168.1.34

snort no identifica el ataque de reconocimiento llevado a cabo por nmap, y tarda algo de 10
- 85 -

minutos. T4
nmap -T4 192.168.1.34

snort identifica el ataque de reconocimiento y genera una alarma relacionada con el escaneo realizado
06/26-19:24:49.419571 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.34

T5
nmap -T5 192.168.1.41

snort detecta el ataque y genera tres alarmas por el escaneo, pero la ejecucin de nmap ha tardado menos de un minuto.
06/26-19:10:54.275733 [**] [122:3:0] (portscan) TCP Portsweep [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.41 06/26-19:10:54.275733 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.41 06/26-19:11:09.100088 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.41

NOTA: Los tiempos tomados y las alarmas generadas son un indicativo aproximado. Dependiendo del entorno que se desee escanear, es posible que snort pueda detectar el ataque. En un entorno real con unos niveles de seguridad ptimos, probablemente sea conveniente utilizar valores mas bajos (-T0, -T1) aunque el escaneo puede llevar incluso horas, sin embargo si es prioritario no despertar ninguna sospecha, esta es la mejor opcin.

- 86 -

HONEYPOTS
Gran parte de los esfuerzos del rea de seguridad a la hora de establecer medidas de proteccin se basan en el aprendizaje de las tcnicas utilizadas por los atacantes. Con este propsito, uno de los pilares fundamentales del personal dedicado a la seguridad est enfocado a la recopilacin de informacin para su posterior anlisis, para poder aplicar y reforzar las medidas de seguridad en la organizacin en funcin de las conclusiones obtenidas. Pero, qu informacin se recopila en este proceso y de qu forma? Existen muchas fuentes de informacin conocidas como pueden ser los informes de nuevas vulnerabilidades de aplicaciones concretas, estudios de analistas independientes, nuevas tcnicas de ataque, o incluso informacin obtenida del ltimo ataque sufrido sobre un recurso corporativo. Igual que en la pelcula de hacker, no es difcil imaginar tcnicas de obtencin de informacin que estn basadas en la implantacin de seuelos o trampas en forma de aplicaciones, cuyo propsito es registrar la actividad sospechosa de los potenciales atacantes, para que stos acten sin darse cuenta de que su comportamiento est siendo realmente estudiado.

Qu es un honeypot?
Un honeypot puede ser una aplicacion que simula, de una forma ms o menos interactiva, servicios o aplicaciones que registran la actividad sospechosa que un atacante pueda realizar sobre ellos. Al conjunto de honeypots que presentan una arquitectura lgica de red simulando un conjunto de sistemas, servicios y aplicaciones relacionadas, se los denomina como honeynet. Por supuesto, en este tipo de entornos simulados no existe informacin real sensible ni relativa a la organizacin, pero si informacin aparentemente interesante que motive al atacante y le haga perder tiempo, al mismo tiempo que proporciona informacin sobre tcnicas y mtodos de ataque. En esta lnea existe un proyecto dedicado a sumar esfuerzos y desarrollar pautas para la creacin, gestin y divulgacin de estos sistemas, denominado el HoneyNet Project (http://www.honeynet.org/) . En su web es posible encontrar tanto papers con informacin tcnica como referencias a los denominados chapters de cada pas relacionados con el proyecto. En cualquier caso, en este tipo de entornos es recomendable no olvidar que estamos tratando con sistemas que interactan con potenciales intrusos, y que los clasificamos como honeypots porque tanto la informacin que se expone como los sistemas que puedan verse
- 87 -

comprometidos no interfieren de forma negativa en el proceso de negocio de la organizacin. Como habrn supuesto, el inters de estos sistemas y entornos es doble. Por una parte, el registro de la actividad del atacante que interacta con el honeypot o la honeynet muestra nuevas tcnicas o tendencias de ataques de los que podemos aprender, y por lo tanto, permite planificar e implantar las medidas de seguridad oportunas a corto, medio e incluso a largo plazo para paliar posibles futuros ataques sobre los sistemas productivos de la empresa. Al mismo tiempo, la existencia de sistemas intencionadamente vulnerables conviviendo con sistemas de produccin convenientemente securizados (aunque como saben, nunca lo suficiente) proporciona una forma muy efectiva de dirigir la atencin del atacante lejos de los sistemas de negocio. Es importante, no obstante, que el entorno vulnerable est adecuadamente aislado, evitando que pueda servir de puente hacia otros sistemas internos, y por tanto convirtiendo una herramienta en un problema. Cmo podemos recopilar, analizar y aprovechar todos los datos que se van generando? Para ello existen correladores de informacin que ofrecen una integracin bastante sencilla con la mayora de honeypots existentes, y que a su vez son lo suficientemente flexibles como para adaptarlos al sistema en el que debamos instalarlos.

Clasificacin de Honeypots
Como explicamos recien, un honeypot no es ms que una aplicacin, servicio o sistema que simula ser lo que no es. No tiene un valor productivo para quien lo implanta y est preparado para ser sondeado, atacado y comprometido. Es bsicamente un seuelo con el objeto de engaar al atacante que pretenda amenazar nuestros sistemas, al mismo tiempo que ayuda a entender las tcnicas de ataque utilizadas. Por estas razones, es lgico pensar que cualquier actividad que se genere desde o hacia un honeypot, ser muy probablemente una actividad ilegtima o no autorizada. Existen diversas formas de clasificar los honeypots. Aqu lo haremos basndonos en dos de sus propiedades principales: la localizacin concreta dentro de una red y la interaccin que permite con el atacante. Segn la LOCALIZACIN, pueden situarse en un entorno de:

Honeypots en Produccin
El objetivo que se pretende alcanzar al implantar un honeypot en una red en produccin no es otro que la obtencin de informacin sobre las tcnicas empleadas para tratar de vulnerar los sistemas que componen dicha infraestructura. El abanico de posibilidades que nos ofrece un honeypot en una red en produccin es muy amplio. Desde la posibilidad de ubicar el honeypot en el segmento de la red de servidores internos de la compaa, con el objetivo de detectar posibles accesos por parte de usuarios internos a recursos crticos de la organizacin (por ejemplo algun archivo del sector contable), hasta la publicacin de un servicio web con idntica configuracin y diseo que el
- 88 -

mismo servicio que est en produccin o preproduccin. El mayor inconveniente que supone esta eleccin es el peligro que supone para los sistemas organizativos el permitir (incluso provocar) que el trfico malintencionado conviva con el legtimo.

Honeypots en Desarrollo
En este caso, el principal objetivo es la recopilacin de la mayor cantidad de informacin que permita al investigador poder analizar las nuevas tendencias en los mtodos de ataque, as como los principales objetivos perseguidos y los distintos orgenes de los ataques. El resultado de este anlisis es recogido en informes cuyo objetivo es respaldar la toma de decisiones en la implantacin de las medidas de seguridad preventivas. La principal ventaja de situar el honeypot en una red independiente, dedicada nicamente a la investigacin, es la separacin del sistema vulnerable del resto de sistemas productivos y evitar as la posibilidad de sufrir un ataque a travs del propio honeypot. Por el contrario, el inconveniente es la cantidad de recursos necesarios. Sobre la arquitectura a emplear profundizaremos en prximos posts. Otro mtodo de clasificacin de los honeypots es el que define la INTERACCIN con el atacante. En este caso, los honeypots se agrupan en dos tipos: Baja Interaccin: El honeypot emula un servicio, una aplicacin o un sistema vulnerable. Sus caractersticas principales son su sencilla instalacin y configuracin, junto con lo limitado de su capacidad para obtener diferentes tipos de datos. Unos ejemplos de honeypots de este tipo son: Honeyd: Quizs uno de los honeypots ms sencillos y populares. Es un demonio que crea hosts virtuales en una red. Los anfitriones pueden ser configurados para ejecutar servicios arbitrarios, y su comportamiento puede ser adaptado para que simule estar en ejecucin en ciertos sistemas operativos. HoneyC: El objetivo de este honeypot es la identificacin de servidores web maliciosos en la red. Para ello emula varios clientes y recaba la mayor cantidad posible de informacin de las respuestas de los servidores cuando estos contestan a sus solicitudes de conexin. HoneyC es ampliable de diversas formas: pueden utilizarse diferentes clientes, sistemas de bsqueda y algoritmos de anlisis. Nephentes: Honeypot de baja interaccin que pretende emular vulnerabilidades conocidas para recopilar informacin sobre posibles ataques. Nepenthes est diseado para emular vulnerabilidades que los gusanos utilizan para propagarse y cuando estos intentan aprovecharlas, captura su cdigo para su posterior anlisis. Honeytrap: Este honeypot est destinado a la observacin de ataques contra servicios de red. En contraste con otros honeypots, que se suelen centrar en la recogida de malware, el objetivo de Honeytrap es la captura de exploits. Glastopf: Emula miles de vulnerabilidades para recopilar datos de los ataques contra aplicaciones web. La base para la recoleccin de informacin es la respuesta
- 89 -

correcta que se le ofrece al atacante cuando intenta explotar la aplicacin web. Es fcil de configurar y una vez indexado por los buscadores, los intentos de explotacin de sus vulnerabilidades se multiplican. Alta Interaccin: En este caso el honeypot es una aplicacin con la cual se puede interactuar y que responde como se espera, con la diferencia de que su diseo est orientado a realizar un registro exhaustivo de la actividad que se lleva a cabo sobre ella y de que la informacin que contiene no es relevante en ningn caso. HI-HAT (High Interaction Honeypot Analysis Toolkit): Herramienta que transforma aplicaciones php en aplicaciones honeypot de alta interaccin. Adems ofrece una interfaz web que permite consultar y monitorizar los datos registrados. HoneyBow: Herramienta de recopilacin de malware que puede integrarse con el honeypot de baja interaccin Nephentes para crear una herramienta de recoleccin mucho ms completa. Sebek: Funciona como un HIDS (Host-based Intrusion Detection System) permitiendo capturar una gran variedad de informacin sobre la actividad en un sistema ya que acta a muy bajo nivel. Es una arquitectura cliente-servidor, con capacidad multiplataforma, que permite desplegar honeypots cliente en sistemas Windows, Linux, Solaris, *BSD, etc., que se encargan de la captura y el envo de la actividad recopilada hacia el servidor Sebek. Podramos decir que forma parte de una tercera generacin de honeypots. Capture-HPC: Del tipo cliente, como HoneyC, identifica servidores potencialmente maliciosos interactuando con ellos, utilizando una mquina virtual dedicada y observando cambios de sistema no previstos o autorizados. Otra opcin a destacar en cuanto a la eleccin de un honeypot es la de la web Project HoneyPot (http://www.projecthoneypot.org/). Se trata de un portal que facilita un recurso web para usarlo como honeypot. Este genera una pgina con un cdigo script, la cual utiliza diversas tcnicas para la recopilacin de informacin (IPs, logins usados en ataques de fuerza bruta, spammers, etc). Como trabajo prctico, pueden intentar instalar el honeypot Kojoney (http://kojoney.sourceforge.net/), el cual les recomiendo tenerlo instalado en sus entornos de produccin ya que emula un servidor SSH.

- 90 -

CRIPTOGRAFIA PROTECCION DE DATOS


En nuestro da a da si queremos guardar informacin confidencial sobre nuestros clientes podremos destinar una oficina especial en la cual solo pueda ingresar personal autorizado llave de por medio y si fuera necesario podramos protegerla designando un guardia para que custodie la oficina. Si tenemos que enviar informacin confidencial por correo utilizaremos los servicios de la mejor empresa de correo y si queremos guardar nuestro dinero para que no nos lo roben podremos guardarlo en una caja fuerte del banco que nos resulte ms seguro. Por desgracia en una red informtica estas opciones no existen y se tard bastante en poner al alcance de todos la principal forma de proteger nuestra informacin: la criptografa. El cifrado de los datos nos va a permitir desde proteger nuestro correo personal para que ningn curioso lo pueda leer, hasta controlar el acceso a nuestros archivos de forma que slo personas autorizadas puedan examinar y modificar su contenido, pasando por proteger nuestras claves cuando nos conectamos a un sistema remoto o nuestros datos bancarios cuando realizamos una compra a travs de Internet. La criptografa es la ciencia que trata lo problemas tericos relacionados con la seguridad en el intercambio de mensajes en clave entre un emisor y un receptor que utilizan un canal de comunicacin. Esta ciencia est dividida en dos grandes ramas: la criptografa, ocupada del cifrado de mensajes en clave y del diseo de criptosistemas y el criptoanlisis, que trata de descifrar los mensajes en clave, rompiendo as el criptosistema. El uso original de la criptografa era proteger la confidencialidad de informaciones militares y polticas. En la actualidad resulta interesante y til para cualquier persona que est interesada en la confidencialidad de sus datos. Hoy por hoy adems de mantener en secreto ciertos datos se busca garantizar la autenticacin en la transmisin de los datos. Es decir que podamos confiar ciegamente que el emisor del mensaje es quien dice ser, y no otro, y la integridad del mensaje que leemos, esto significa que sea el mismo que nos enviaron.

Tratemos de ver de forma sencilla como es el proceso de encriptacin... El emisor emite un texto plano, que es tratado por un cifrador con la ayuda de una clave, k, creando un texto cifrado (criptograma). Este criptograma llega al descifrador a travs de un canal de comunicaciones. El descifrador convierte el criptograma de nuevo en texto plano, usando ahora otra clave, k (veremos ms adelante que esta clave puede o no ser la misma que la utilizada para cifrar), y este texto plano ha de coincidir con el emitido inicialmente para que se cumplan los principios bsicos de la criptografa moderna. El elemento ms importante en este proceso es el cifrador, que ha de utilizar el algoritmo de cifrado para convertir el texto plano en un criptograma.

- 91 -

Usualmente, para hacer esto, el cifrador depende de un parmetro exterior, que se conoce como clave de cifrado, que es aplicado a una funcin matemtica irreversible. Slo es posible invertir la funcin si se dispone de la clave de descifrado. Existen dos tipos bsicos de criptografa: 1. la criptografa simtrica, 2. la criptografa asimtrica

Cmo es el proceso de criptografa simtrica?


En la criptografa simtrica se utiliza siempre la misma clave, esta clave es compartida tanto por el generador de una transaccin o un mensaje como por el receptor. El problema radica en que al tener que compartir la misma clave no se puede identificar el emisor o fuente de un mensaje. En la criptografa asimtrica se utilizan claves distintas, es decir que cada una de las partes que intervienen en la transaccin poseen un par de claves: una clave privada y una clave pblica.

Cmo es el proceso de criptografa asimtrica?


En este sistema, cada persona obtiene un par de claves, llamadas clave pblica y clave privada. La clave pblica de cada una, como su nombre lo indica, es de dominio pblico y la privada se mantiene en secreto. La necesidad de que emisor y receptor compartan la misma clave queda eliminada: las comunicaciones slo necesitan de la clave pblica y entonces la clave privada no se transmite ni se comparte, es una "realmente Privada". De sta forma no es necesario confiar en los canales de comunicacin, corriendo el riesgo de que alguien est 'escuchando' en la lnea de comunicacin o de que se viole el secreto de la clave privada. Cualquier persona puede enviar un mensaje confidencial con slo utilizar la clave pblica, pero el mensaje slo puede desencriptarse con la clave privada que posee nicamente el receptor. Ms an, la criptografa asimtrica puede utilizarse tanto para la autenticacin (firmas digitales) como para mantener la privacidad (encriptado). La ventaja principal de este mtodo de cifrado es su mayor seguridad. Las claves privadas no se transmiten ni se revelan a persona alguna. En el sistema simtrico, siempre existe la posibilidad de que sea descubierta durante la transmisin.

- 92 -

FIRMA DIGITAL
Otra ventaja importante consiste en que proporciona un mtodo de firma digital. La autenticacin digital es un proceso por el cual el receptor de un mensaje digital puede mantener confidencial la identidad del que lo enva y/o la integridad del mensaje. cmo es este proceso en la prctica? Vemoslo en un ejemplo, supongamos que Mariana le quiere enviar un documento a Fabin, obtiene su clave pblica y la utiliza para encriptar el documento; luego lo enva. Cuando Fabin lo recibe, utiliza su clave privada para desencriptarlo y leerlo. Nadie escucha ni puede desencriptar el mensaje. Por qu? Porque Fabin recibe documentos que slo l puede desencriptar.

En este caso el mensaje est protegido mientras la clave privada permanece solo en manos de Fabin. Cuando un receptor desea recibir una informacin cifrada, ha de hacer llegar a todos los potenciales emisores su clave pblica, para que estos cifren los mensajes con dicha clave. De este modo, el nico que podr descifrar el mensaje ser el legtimo receptor, mediante su clave privada.

- 93 -

GPG ( Gnu Privacy Guard)


GPG es una herramienta conocida como un sistema de firma digital para correo electrnico. Una firma digital es un bloque de caracteres que acompaa a un documento, acreditando quin es su autor y que no ha existido manipulacin posterior de los datos. El proceso de firma digital que realiza este software consiste en aplicar un algoritmo sobre el texto a firmar, obteniendo un extracto de longitud fija y nico para ese mensaje. Este extracto cuya longitud oscila entre 176 y 160 bits se somete al cifrado (RSA DSS) mediante la clave secreta del autor, previa peticin de contrasea. Para verificar la firma, el receptor descifra la firma con la clave pblica del emisor, comprime con la funcin hash al texto original recibido y compara el resultado de la parte descifrada con la parte comprimida, si ambas coinciden el emisor tiene garanta de la parte descifrada con la parte comprimida, si ambas coinciden el emisor tiene garanta que el texto no ha sido modificado. El mecanismo de firma digital soporta los servicios de integridad de datos, autenticacin de origen y no repudio con prueba de origen. Para proporcionar el servicio de no repudio con prueba de entrega es necesario forzar al receptor a enviar al emisor un recibo firmado digitalmente. Podemos obtener esta aplicacin de: http://www.gnupg.org/ o ftp://ftp.gnupg.org/gcrypt/ La instalacin se explica muy bien en el archivo INSTALL y en los archivos que hay en el directorio doc, que trae el paquete. Lo primero que hay que hacer una vez instalado es generar el par de llaves pblica y privada que usaremos, ya que el gpg utiliza un sistema de codificacin asimtrico. Qu es todo esto? Los sistemas de codificacin simtricos utilizan una clave para cifrar y descifrar los datos. Esto quiere decir que si alguien conoce la clave de cifrado puede interpretar los mensajes que "capture" y tenga esa clave como firma. Los sistemas asimtricos utilizan una clave, llamada pblica, para encriptar la informacin y una clave, llamada privada, para descifrarla.Con este mtodo, por ms que se sepa la clave pblica, no se pueden interpretar los datos de un mensaje cifrado. El primer paso que ejecutaremos ser:
$ gpg --gen-key gpg (GnuPG) 1.2.1; Copyright (C) 2002 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. gpg: ATENCIN: se est usando memoria insegura! gpg: por favor, vea http://www.gnupg.org/faq.html para ms informacin Por favor seleccione tipo de clave deseado:

- 94 -

(1) DSA y ElGamal (por defecto) (2) DSA (slo firmar) (5) RSA (slo firmar) Su eleccin:

Para que no salga el mensaje:


gpg: ATENCIN: se est usando memoria insegura!

Tendremos que colocar en el archivo ~/.gnupg/gpg.conf una lnea que contenga:


no-secmem-warning

Como podemos ver, lo primero que se nos pide es el algoritmo de cifrado, y el recomendado es el que aparece por defecto, ya que no est patentado.
Su eleccin: 1 El par de claves DSA tendr 1024 bits. Listo para generar un nuevo par de claves ELG-E. el tamao mnimo es 768 bits el tamao por defecto es 1024 bits el tamao mximo recomendado es 2048 bits De qu tamao quiere la clave (1024)?

Lo siguiente es la longitud de la clave, cuanto ms larga, ms segura, pero lleva ms tiempo generarla y firmar correos, etc. Con el tamao por defecto tenemos un buen nivel de seguridad. El tamao requerido es de 1024 bits Por favor, especifique el perodo de validez de la clave.
0 = la clave nunca caduca <n> = la clave caduca en n das <n>w = la clave caduca en n semanas <n>m = la clave caduca en n meses <n>y = la clave caduca en n aos

Validez de la clave (0)? Seguimos con el perodo de validez de la clave, vamos a elegir que nunca caduque:
Key nunca caduca Es correcto (s/n)? s

Necesitamos ahora un identificador de usuario para identificar nuestra clave. El programa construye el identificador a partir del Nombre Real, Comentario y Direccin de Correo Electrnico de esta forma: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Nombre y apellidos:

- 95 -

Aqu tenemos que escribir lo que nos solicita.


Nombre y apellidos: Pedro prueba Direccin de correo electrnico: pedro@pedrito.com.ar Comentario: El mejor usuario Ha seleccionado este ID de usuario: "Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar>" Cambia (N)ombre, (C)omentario, (D)ireccin o (V)ale/(S)alir? Aceptamos las opciones. Cambia (N)ombre, (C)omentario, (D)ireccin o (V)ale/(S)alir? v Necesita una contrasea para proteger su clave secreta.

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar alguna otra tarea (trabajar en otra ventana/consola, mover el mouse, usar la red y los discos) durante la generacin de nmeros primos. Esto da al generador de nmeros aleatorios mayor oportunidad de recoger suficiente entropa (el porcentaje de informacin y redundancia que contienen).
.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++ +++.+++++++++++++++++++++++++..+++++.+++++.+++++..+++++++++++++++.++++ +........>.+++++...........>+++++<+++++...................>+++++<+++++++++ +++++++++++.+++++.++++++++++++++++++++++++++++++.++++++++++++++++++++++++ +.++++++++++++++++++++.++++++++++.+++++++++++++++.+++++++++++++++>++++ +.......<+++++...>+++++....................................<++++ +...........>.+++++.................................>+++++.<++++ +.................+++++^^^^^^^^^^^ gpg: /home/pedro/.gnupg/trustdb.gpg: se ha creado base de datos de confianza claves pblica y secreta creadas y firmadas. clave marcada como de confianza absoluta. pub 1024D/C8F3702B 2003-05-16 Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar> Huella de clave = B124 FD41 717E 0761 5E7D B4E5 4EA7 4AF9 C8F3 702B sub 1024g/2BA33BAE 2003-05-16

Listo, ya tenemos nuestro par de claves, ahora pondremos en un archivo la clave pblica, para compartirla.
$ gpg --export -a -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.2.1 (GNU/Linux) mQGiBD7EUHsRBADkAfVr9jWrbPKbnND6Fpo4a/qCi9HANt0L4Cze9DaRR2WvQhOg 39TIMBZxQIXN4b7I6RP+hKEwifmpylV7+GRdqvKGOGO6f5yGE+GCrsh3iGG5X28v UjYFBE8GY8+k5ZKoUUA352J4KaudIOM0qfhzM8bqeFpPo7Divlis0JBIBwCg1Ixe EDTYXPA3IuxmRi7FFqAvytMEANnaFr8ArZDSw9PEY5dR0Zdx1lDzQ+Tn1YMd23EC c13gwmzve8FLPnNpod8LDH58VBUBgVKFbBmBXz6SQrp/WZfE6MMgVucpTD0vz8RW UO3887Hr7Y/nRDzbYhcLdf7iQ739gWCaKMorA8lfWtIU+mWW2tU/K/pCWXNWyiz0 MsAtBAC2t09SGsqJi0BBw2KUjsfIVxAEeslsO7y7d1BqvmgiFkMssvhdjLRq0E6q YL0Y5Nb3MOGJxUxaVPYIGti8oa7QTnpZoh52NJyWPnJ500NrdImJ46LkvYgF2M3/ s46k7t5BDqmZf1eAvVf8pfPQlEEdASj6lYqd0DXeO32bdokbALQ2UGVkcm8gcHJ1 ZWJhIChFbCBtZWpvciB1c3VhcmlvKSA8cGVkcm9AcGVkcml0by5jb20uYXI+iFkE ExECABkFAj7EUHsECwcDAgMVAgMDFgIBAh4BAheAAAoJEE6nSvnI83Ar6mcAniek

- 96 -

0xksKzV02ccYIKNOSTg85gBOAJsE5BVH1TVPdA5sdU9NcR46j3I3ibkBDQQ+xFCI EAQAuwcteknhMkGBH7OQWsrpQH+4ESSOYfFathqwSLzx4U00t9AlmwMKgxa8wyyv Mnl4Cr4xdAj9G1/Py981Eklill1xQAukJaEJxY4dLfEvRwlSngd6QnLiIiqfYJBa oWnX6YkkzR1O2CVNDYDWGmbwdWrLC6fF6AM7llefZJnhTXcABA0D/3k6wVmSzNfy P37uOnkIDjM2yiwzdBX0VBMuNIRz/6INtynFn6sbaqpxI0ijHl4DWo0yaaQo3Ca1 KC7hV+auJA48L5jR/XhJm8FszfnN01Jo6ueZic/TTJdMFPLH376DoUeOpUsGdwNp F0KAKOWFEJO+6KhGVnM2Ugr2rjB9K+DliEYEGBECAAYFAj7EUIgACgkQTqdK+cjz cCvXdgCfYOt8YtslYI8LfVjzSVPheixwmMYAn26TG6HROvvz27yf8JAyJu8ud4el =urZ5 -----END PGP PUBLIC KEY BLOCK-----

Si no colocamos la opcin -a, la salida sera binaria. Ahora tenemos que mandarla por mail o direccionar la salida a un archivo y enviarlo de alguna forma a la persona que queremos que me escriba mensajes cifrados usando mi clave pblica.
$ gpg -export [uid] $ gpg -import [archivo]

Con import tomamos la/las claves de un archivo y las agregamos a nuestro anillo de claves. Con la opcin -fingerprint, podemos ver la huella de la clave y verificar que sea correcta y se corresponda con su dueo.
$ gpg -fingerprint /home/pedro/.gnupg/pubring.gpg -----------------------------pub 1024D/C8F3702B 2003-05-16 Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar> Huella de clave = B124 FD41 717E 0761 5E7D B4E5 4EA7 4AF9 C8F3 702B sub 1024g/2BA33BAE 2003-05-16

Para encriptar un archivo usamos (genera archivo.gpg):


$ gpg -e archivo

Para encriptarlo con la clave de otro usuario:


$ gpg -er usuario archivo

Podemos agregar la opcin -a para que genere un archivo ascii (genera archivo.asc). Para descifrar el archivo:
$ gpg -o pepe -d pepe.asc

Necesitamos una contrasea para desbloquear la clave secreta del usuario:


"Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar>" clave ELG-E de 1024 bits, ID 2BA33BAE, creada el 2003-05-16(ID clave primaria C8F3702B) gpg: cifrado con clave ELG-E de 1024 bits, ID 2BA33BAE, creada el 2003-05-

- 97 -

16 "Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar>"

Usamos el -o para que la salida sea dirigida hacia all y -d para descifrar el mensaje. Para firmar un archivo o mail con nuestra clave usamos (el ej. genera archivo.txt.asc):
$ gpg -a -s archivo.txt

Ojo!!! el archivo .asc creado contiene la informacin y la firma, si queremos tener en un slo archivo la firma, sin la informacin usamos:
$gpg -a -b archivo.txt

Para verificar una firma tipeamos en la consola:


$ gpg -v archivo.txt.asc

Ejemplo:
$ gpg -v archivo.txt.asc gpg: cabecera de armadura: Version: GnuPG v1.2.1 (GNU/Linux) gpg: asumiendo que hay datos firmados en `archivo.txt' gpg: Firma creada el vie 16 may 2003 00:32:58 ART usando clave DSA ID C8F3702B gpg: Firma correcta de "Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar>"

Para borrar una clave usamos el siguiente comando:


$ gpg --delete-key [UID]

- 98 -

TALLERES

- 99 -

TALLER DE APACHE SECURITY


Hacking Web Servers
Una de las razones principales de porque los servidores web tienen gran probabilidad de ser hackeados es porque estn pblicamente disponibles en Internet las 24 horas los 7 das. Si un atacante logra comprometer con xito un servidor web este tendr una va o puerta de acceso a la red donde est conectado el servidor y tendr acceso al propio OS del servidor y sus aplicaciones o programas.

Vulnerabilidades comunes
Estas son las 4 vulnerabilidades ms comunes que buscan los hackers para explotar los servidores web. Errores de programacin en el cdigo del sistema operativo, permitiendo ejecutar comandos que corren el servidor web Vulnerabilidades en instalaciones por defecto (default) del sistema operativo y programas del servidor Servidores y sus programas no actualizados adecuadamente con los ltimos parches de seguridad Una pobre o inadecuadas plizas y procedimientos de seguridad Todas estas vulnerabilidades pueden ser explotadas porque los servidores web se encuentran en la zona desmilitarizada (Demilitarized Zone) o DMZ. El DMZ es un rea pblicamente accesible entre 2 dispositivos de filtrado de paquetes, como los Firewalls. Website Cloaking Es la habilidad de un servidor web para mostrar diferentes tipos de pginas web segn la direccin IP del usuario. Web Server defacement (desfiguracin) Es la habilidad del hacker para explotar una vulnerabilidad en el sistema operativo o programas del web server para alterar archivos del website y mostrar que el website ha sido hackeado.

Ataques ms comunes a los servidores web


Ataque al DNS para re direccionar a los usuarios a un web server diferente Ataque SQL injection Comprometer o atacar servidores de FTP o de e-mail Obtener nombre de usuario y password del administrador va ataque man-in-themiddle Explotar vulnerabilidades en aplicaciones web Usar intrusion via Telnet o Secure Shell (SSH)
- 100 -

Re direccionar usuarios a una URL diferente va URL poisoning (envenenamiento de URL) Web share no configurados Ataques usando extensiones del servidor web o servicios remotos

Como incrementar la seguridad en servidores web


Remueva aplicaciones o programas del servidor que no se usen Inhabilitar el directory browsing en la configuracin del servidor web Inhabilite la administracin remota Remplace el GET por el POST en los formularios cuando envi informacin al servidor web Instale los ltimos parches, hotfixes y service packs al servidor y sus aplicaciones Actualice su cuenta de administrador y password cada 30 das y utilice un password fuerte Coloque un aviso legal en el website para hacerle entender a los posibles atacantes las implicaciones de hackear el website Utilice un firewall entre el servidor web y la internet y mantenga abiertos solo puertos necesarios como el 80 (HTTP) y el 443 (HTTPS) Habilite auditing y logging Verifique los limites de entrada de datos en los formularios y en las consultas a las bases de datos para prevenir ataques de buffer overflow (desbordamiento del buffer)

Herramientas para atacar servidores web N-Stalker


Es un escner que te permite revisar aplicaciones web en busca de vulnerabilidades como; cross-site-scripting (XSS), SQL injection, buffer overflow, etc.

Metasploit Framework
Esta poderosa herramienta gratuita es usada para probar o hackear un sistema operativo o aplicaciones del servidor web. Los exploits pueden ser usados como plug-ins y se pueden llevar a cabo a travs de sistemas operativos Windows y Unix. Lo bueno y lo malo de Metasploit es que el atacante o hacker puede escribir sus propios exploits como tambin usar los ya existentes.

6 Consejos para Incrementar la Seguridad


1. Mantenerse Actualizado Este es el punto clave ms importante. Est comprobado que el 90% de las vulnerabilidades producidas son porque nuestros servidores no estn correctamente actualizados, tanto a nivel sistema operativo como de las aplicaciones que ejecutamos en l. 2 .Ocultar el numero de versin de Apache
- 101 -

La principal herramienta que utilizar nuestro atacante ser la informacin que sin querer le estamos brindando. En el caso de un servidor web, es normal que se pueda ver el siguiente pie cuando intentamos acceder a una pagina que no se encuentra disponible.

Para ocultar esta informacin, tenemos que editar el archivo /etc/apache2/apache2.conf y agregar las siguientes directivas de seguridad que vienen deshabilitadas por omisin.
ServerTokens ProductOnly ServerSignature Off

Recordemos reiniciar nuestro servicio de Apache con el comando apache2ctl restart para comprobar los cambios. 3. Proteger los .htaccess Otra tarea que debemos realizar es proteger nuestros archivos .htaccess ya que estos pueden contener informacin importante sobre el funcionamiento de nuestro servidor web.
<Directory /> AllowOverride None </Directory>

4. Apagar las inclusiones Server Side Es importante que agreguemos la directiva -Includes dentro del tag <directory>
Options -Includes

5. Apagar la ejecucin CGI Si no estamos utilizando el modulo CGI, es recomendable apagarlo. Dentro del tag <directory> tenemos que agregar la directiva -ExecCGI
Options -ExecCGI

6. Limitar el acceso a determinados archivos Nuestros visitantes, no tienen que tener la posibilidad de ver los archivos de nuestro servidor. Para esto, podremos limitarlo utilizando el archivo .htaccess
<FilesMatch "\.(.*sql|.*~)$"> Order deny,allow Deny from all </FilesMatch>

Esto evitaria por ejemplo, que no se puedan acceder a los archivos .sql

- 102 -

APACHE MOD_SECURITY
Los que poseen un servidor web, saben lo complicado que es mantener el servidor seguro, ms aun cuando corremos pginas en PHP, Python, etc. No importa lo paranoico o prolijo que seamos, siempre hay puntos vulnerables y si revisamos los logs del servidor, seguro encontraremos cientos de ataques XSS, SQL Injection, etc. La idea de esta parte del taller es configurar Mod_Security en un servidor Apache, para que podamos repeler un alto nmero de estos ataques, sin estar volvindonos locos.

Vamos por partes Que es Mod_Security?


Segn Wikipedia, Mod_Security es una herramienta para deteccin y prevencin de intrusos para aplicaciones Web. Bsicamente, es un mdulo de Apache que se encarga de inspeccionar todo el trafico HTTP que pasa por nuestro webserver y en base a los resultados realizar acciones, como ser rechazar el pedido si es algo peligroso o mal intencionado. Para mas informacin de mod_security pueden leer http://es.wikipedia.org/wiki/Mod_Security o mejor an el sitio oficial http://www.modsecurity.org/. Lamentablemente los paquetes de Debian de mod_security siempre estan pasados de moda (versiones viejisimas) o no estan disponibles para bajar (y ms aun para Debian 6 Squeeze), as que aca vamos a proceder directamente a instalar mod_security desde su cdigo fuente. Lo primero es bajar la ultima versin. Al momento de escribir este material, se trata de la version 2.6.7. Antes de proseguir debemos asegurarnos de que sea la ultima version entrando a http://www.modsecurity.org/download/.
# cd /usr/src/
# wget "http://www.modsecurity.org/download/modsecurity-apache_2.6.7.tar.gz"

# tar zxvf modsecurity-apache_2.6.7.tar.gz

Ahora instalamos un par de herramientas y librerias que vamos a necesitar para instalar todo esto ..
# apt-get install libxml2-dev liblua5.1-0 lua5.1 apache2-threaded-dev build-essential libxml2 libxml2-dev libcurl3 libcurl3-dev

Procedemos a compilar mod_security y luego a instalarlo


# # # # cd modsecurity-apache_2.6.7 ./configure make make install

- 103 -

Ahora debemos crear el archivo /etc/apache2/mods-available/mod_security2.load con el siguiente contenido:


LoadFile /usr/lib/libxml2.so LoadFile /usr/lib/liblua5.1.so.0 LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

Hecho esto, habilitamos los mdulos que usaremos.


# a2enmod mod_security2 # a2enmod unique_id

Configuramos lo minimo-necesario para correr el mod-security.


# cp modsecurity.conf-recommended /etc/apache2/conf.d/modsecurity.conf

Ahora bajamos el pack de reglas ms actualizado y lo instalamos: (en este caso, al momento de armar este material, era el modsecurity-crs_2.2.5, pero tal como hicimos antes debemos validar en el sitio web http://sourceforge.net/projects/modsecurity/files/modsecurity-crs/0-CURRENT/ asi bajamos la ultima version actualizada.
# cd /etc/apache2/ # wget -O modsecurity-crs.tar.gz "http://downloads.sourceforge.net/project/mod-security/modsecurity-crs/0CURRENT/modsecurity-crs_2.2.5.tar.gz?r=http%3A%2F%2Fsourceforge.net %2Fprojects%2Fmod-security%2Ffiles%2Fmodsecurity-crs%2F0-CURRENT %2F&ts=1344909585&use_mirror=ufpr" # tar xzvf modsecurity-crs.tar.gz # mv modsecurity-crs_2.2.5 /etc/apache2/modsecurity_crs # rm -fr modsecurity-crs.tar.gz # chown root.root /etc/apache2/modsecurity_crs/ -R # cd /etc/apache2/modsecurity_crs # mv modsecurity_crs_10_config.conf.example modsecurity_crs_10_config.conf

Ahora ajustaremos la configuracion de mod-security para apuntar los archivos de logs a donde queremos, e incluir el pack de rules que acabamos de bajar. Para ello, editamos el archivo de configuracion:
# vim /etc/apache2/conf.d/modsecurity.conf

Buscamos las lineas:


# SecDebugLog /opt/modsecu # SecDebugLogLevel 3

las descomentamos y las dejamos de la siguiente forma:


SecDebugLog /var/log/apache2/modsec_debug.log SecDebugLogLevel 3

Luego buscamos las lineas:


# SecAuditLogType Serial # SecAuditLog /var/log/modsec_audit.log

las descomentamos y las dejamos de la siguiente forma:


- 104 -

SecAuditLogType Serial SecAuditLog /var/log/apache2/modsec_audit.log

Y al final de todo el archivo, agregamos las siguientes lineas, que servirn para cargar todas las reglas del pack que bajamos:
Include /etc/apache2/modsecurity_crs/*.conf Include /etc/apache2/modsecurity_crs/base_rules/*.conf

Guardamos el archivo y salimos. A continuacion preparamos los logs que vamos a usar y seteamos los permisos necesarios:
# # # # touch touch chown chmod /var/log/apache2/modsec_debug.log /var/log/apache2/modsec_audit.log root.root /var/log/apache2/modsec_* 660 /var/log/apache2/modsec_*

Eso es todo, ahora podemos decirle a Apache que verifique si todo esta OK en la config:
# apache2ctl configtest

Si todo esta OK, veremos un hermoso: Syntax OK Si no es as y algo fall, deberemos revisar toda la configuracin.

NO PODEMOS CONTINUAR SINO VEMOS EL Syntax OK!.


Ahora si .. si todo esta OK, podemos reinicar Apache2:
# /etc/init.d/apache2 restart

Luego de reiniciar, podemos mirar el errorlog de Apache, para ver si efectivamente cargo el ModSecurity.
# tail /var/log/apache2/error.log

Eso es todo! Ya tenemos mod-security funcionando en nuestro Apache. Recuerden ingresar al sitio oficial de mod_security para estar actualizados con todos los updates y novedades que sacan semanalmente.

- 105 -

TALLER DE IPTABLES
Qu es un firewall
Un firewall es un dispositivo que filtra el trfico entre 2 o ms redes. El firewall puede ser un dispositivo fsico o un software sobre un sistema operativo. En general debemos verlo como una caja con 2 o ms interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexin determinada puede establecerse o no. Incluso puede ir ms all y realizar modificaciones sobre las comunicaciones, como el NAT. Esa sera la definicin genrica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una BIOS que filtra el trfico TCP/UDP/ICMP/../IP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red.

Figura 1: esquema de firewall tpico entre red local e internet

Esquema tpico de firewall para proteger una red local conectada a internet a travs de un router. El firewall debe colocarse entre el router (con un nico cable) y la red local (conectado al switch o al hub de la LAN)

Dependiendo de las necesidades de cada red, puede ponerse uno o ms firewalls para establecer distintos permetros de seguridad en torno a un sistema. Es frecuente tambin que se necesite exponer algn servidor a internet (como es el caso de un servidor web, un servidor de correo, etc..), y en esos casos obviamente en principio se debe aceptar cualquier conexin a ellos. Lo que se recomienda en esa situacin es situar ese servidor en lugar aparte de la red denominada DMZ o zona desmilitarizada.

Figura 2: esquema de firewall entre red local e internet con zona DMZ para servidores - 106 -

expuestos

En la zona desmilitarizada se pueden poner tantos servidores como se necesiten. Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a l, la red local sigue protegida por el firewall. Esta estructura de DMZ puede hacerse tambin con un doble firewall (aunque como se ve se puede usar un nico dispositivo con al menos tres interfaces de red). Sera un esquema como este:

Figura 3: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doble firewall(permetro)

Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como proteccin de internet en las empresas, aunque ah tambin suelen tener una doble funcin: controlar los accesos externos hacia dentro y tambin los internos hacia el exterior; esto ltimo se hace con el firewall o frecuentemente con un proxy (que tambin utilizan reglas, aunque de ms alto nivel). Tambin, en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o ms firewalls ya sea filtrando toda la instalacin o parte de ella:

- 107 -

Figura 4: esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

Sea el tipo de firewall que sea, generalmente no tendr mas que un conjunto de reglas en las que se examina el origen y destino de los paquetes del protocolo tcp/ip. En cuanto a protocolos es probable que sean capaces de filtrar muchos tipos de ellos, no solo los tcp, tambin los udp, los icmp y otros protocolos vinculados a vpns. Este podra ser (en pseudolenguaje) un conjunto de reglas correspondiente al firewall de la figura 1: Politica por defecto ACEPTAR Todo lo que venga de la red local al firewall ACEPTAR Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR Todo lo que venga de ntp.nasa.gov al puerto udo 123 ACEPTAR Todo lo que venga de la red local y vaya al exterior ENMASCARAR Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR Todo lo que venga del exterior al puerto tcp 3389 DENEGAR Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es: Habilita el acceso a puertos de administracin a determinadas IPs privilegiadas Enmascara el trafico de la red local hacia el exterior (NAT, una peticin de un pc de la LAN sale al exterior con la ip pblica), para poder salir a internet Deniega el acceso desde el exterior a puertos de administracin y a todo lo que este entre 1 y 1024.

Hay dos maneras de implementar un firewall:


- 108 -

1) Poltica por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegar lo que se diga explcitamente. 2) Poltica por defecto DENEGAR: todo esta denegado, y solo se permitir pasar por el firewall aquellos que se permita explcitamente.

Como es obvio imaginar, la primera poltica facilita mucho la gestin del firewall, ya que simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa; el resto no importa tanto y se deja pasar. Por ejemplo, si queremos proteger una mquina linux, podemos hacer un netstat -ln (o netstat -an, o netstat -puta | grep LISTEN), saber que puertos estn abiertos, poner reglas para proteger esos puertos y ya est.

Para qu vamos a proteger un puerto que realmente nunca se va a abrir? El nico problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son peligrosos. Si la poltica por defecto es ACEPTAR y no se protege explcitamente, estamos arriesgando nuestra seguridad. En cambio, si la poltica por defecto es DENEGAR, a no ser que lo permitamos explcitamente, el firewall se convierte en un autntico MURO impenetrable. El problema es que es mucho ms difcil preparar un firewall as, y hay que tener muy claro que es lo que se tiene que abrir sin caer en la tentacin de empezar a meter reglas super-permisivas. Esta configuracin de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mnimamente iptables pero al finalizar este modulo aprenders a trabajar con iptables sin mayores dificultades.

El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); despus de eso NO SE MIRARN MS REGLAS para ese paquete. Cul es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no sirvan de nada.

Qu es iptables
Iptables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4 de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de iptables no es como un servidor que lo iniciamos o
- 109 -

detenemos o que se pueda caer por un error de programacin (esto es una pequea mentira ya que ha tenido alguna vulnerabilidad que permite hacerle un DoS, pero nunca tendr tanto peligro como las aplicaciones que escuchan en determinado puerto TCP). Iptables esta integrado con el kernel, es parte del sistema operativo. Cmo se pone en marcha? Realmente lo que se hace es aplicar reglas. Para ello se ejecuta el comando iptables, con el que aadimos, borramos, o creamos reglas. Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de firewall. Entonces tenemos una mquina linux con soporte para iptables, tiene reglas aplicadas y empiezan a llegar/salir/pasar paquetes. Olvidemos cuantas tarjetas de red hay, que direcciones ip tiene la mquina y olvidemos si el paquete entra o sale. Las reglas de firewall estn a nivel de kernel, y al kernel lo que le llega es un paquete y unicamente tiene que decidir que hacer con l. El kernel lo que hace es, dependiendo si el paquete es para la propia maquina o para otra maquina, consultar las reglas de firewall y decidir que hacer con el paquete segn mande el firewall. Este es el camino que seguira un paquete en el kernel:

Figura 5: cuando un paquete u otra comunicacin llega al kernel con iptables se sigue este camino

Como se ve en el grfico, bsicamente se mira si el paquete esta destinado a la propia maquina o si va a otra. Para los paquetes (o datagramas, segn el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARD. INPUT,OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Pero antes de aplicar esas reglas es posible aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destino. Incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar los paquetes; son reglas poco conocidas y es probable que no las tengamos que utilizar. Por lo tanto tenemos tres tipos de reglas en iptables: MANGLE NAT: reglas PREROUTING, POSTROUTING FILTER: reglas INPUT, OUTPUT, FORWARD.

- 110 -

Creando un firewall con iptables Proteger la propia mquina


Muy bien, tenemos una mquina linux conectada a internet y queremos protegerla con su propio firewall. Lo nico que tenemos que hacer es crear un script de shell en el que se van aplicando las siguientes reglas:
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -i lo -j ACCEPT iptables iptables iptables iptables iptables iptables iptables iptables -A -A -A -A -A -A -A -A INPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT -s -s -s -p -p -p -p -p 195.65.34.234 -j ACCEPT 231.45.134.23 -p tcp --dport 3306 -j ACCEPT 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT tcp --dport 80 -j ACCEPT tcp tcp tcp tcp --dport --dport --dport --dport 20:21 -j DROP 3306 -j DROP 22 -j DROP 10000 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Como pueden apreciar es un script de los ms simples, con unas pocas reglas con las que cerramos puertos al pblico a los que no tienen porque tener acceso, salvo el puerto 80. Pero cualquiera con algo de ojo se habr dado cuenta de que ni se filtran los protocolos UDP ni el ICMP. Como les comentaba anteriormente, este tipo de firewall es necesario hacer un netstat para ver que puertos estn abiertos, y salvo que un rootkit nos haya modificado los binarios, netstat nos dar la informacin precisa que necesitamos. Hay gente que prefiere realizarce un nmap as mismos.

Dependiendo de cmo lo ejecutemos quiz no nos muestre todos los puertos, ya que suele mirar los bien conocidos.
Imaginemos que hemos dado un repaso a nuestro sistema, y ahora tenemos mejor identificados los puertos tcp y udp abiertos. Pero por si acaso al final del script cerraremos el rango de puertos del 1 al 1024, los reservados tanto para tcp como udp.

- 111 -

#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -i lo -j ACCEPT iptables iptables iptables iptables -A -A -A -A INPUT INPUT INPUT INPUT -s -s -s -p 195.65.34.234 -j ACCEPT 231.45.134.23 -p tcp --dport 3306 -j ACCEPT 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 1:1024 -j DROP iptables -A INPUT -p udp --dport 1:1024 -j DROP iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP iptables -A INPUT -p udp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Mucho ms facil, no? Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas a su sistema. Si se tiene miedo de perder el control de una mquina remota, pruebe el script en una mquina local y asegrese de que funciona como queremos.

Versin con DROP por defecto


Ahora que ya hicimos nuestro primer firewall queremos que nuestra maquina sea 100% segura y que solo tenga abierto un puerto imprescindible para dar determinado servicio. Con DROP por defecto se protege la maquina perfectamente, aunque hay que aadir algunas reglas para que la propia mquina sea capaz de salir a internet.
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables -F -X -Z -t nat -F

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP /sbin/iptables -A INPUT -i lo -j ACCEPT

- 112 -

/sbin/iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -s 195.65.34.234 -j ACCEPT iptables -A OUTPUT -d 195.65.34.234 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 20:21 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 1024:65535 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A INPUT -s 211.95.64.39 -p udp -m udp --sport 53 -j ACCEPT /sbin/iptables -A OUTPUT -d 211.95.64.39 -p udp -m udp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -s 211.95.79.109 -p udp -m udp --sport 53 -j ACCEPT /sbin/iptables -A OUTPUT -d 211.95.79.109 -p udp -m udp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -s 130.206.3.166 -p udp -m udp --dport 123 -j ACCEPT /sbin/iptables -A OUTPUT -d 130.206.3.166 -p udp -m udp --sport 123 -j ACCEPT /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables -A -A -A -A -A INPUT INPUT INPUT INPUT INPUT -p -p -p -p -p tcp udp tcp tcp tcp -m -m -m -m -m tcp udp tcp tcp tcp --dport --dport --dport --dport --dport 1:1024 -j DROP 1:1024 -j DROP 1723 -j DROP 3306 -j DROP 5432 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"

- 113 -

Firewall de una LAN con salida a internet


Ahora vamos a ver una configuracin de firewall iptables para el tpico caso de red local que necesita salida a internet.

Figura 6: esquema de firewall tpico entre red local e internet

Qu es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascaramiento en iptables), con lo que se hara dos veces NAT en el firewall y en el router. Entre el router y el firewall lo normal es que haya una red privada (192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de las necesidades puede que los dos tengan IP pblica. El router se supone que hace un NAT completo hacia dentro, o sea que desde el exterior no se llega al router si no que de forma transparente se "choca" contra el firewall. Lo normal en este tipo de firewalls es poner la poltica por defecto de FORWARD en denegar (DROP), pero eso lo veremos ms adelante.
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Pero como nuestro trabajo es asegurar la red y optimizar los recursos de ella, vamos a asegurarnos de que solamente se pueda navegar por internet, denegando el acceso a
- 114 -

servicios como Amule o cualquier otro P2P.


#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Ahora para poder terminar de aprender y a fin de poder practicar les dejo algunos ejemplos que seguramente podrs aplicar y modificar facilmente para cualquier proposito.

Supongamos que este firewall tiene alguna funcin adicional: es un servidor proxy y adems es un servidor de correo. Darle funcionalidades de este tipo a un firewall no es recomendable, porque si no se protegen bien esos puertos o si no est actualizado el software pueden entrar en el firewall a base de exploits comprometiendo TODA la red. De todas formas muchas empresas no se pueden permitir o no quieren tener una mquina para cada cosa. Supongamos tambin que la empresa tiene representantes comerciales y que se conectan a internet desde sus notebooks o smartphones desde una ip dinmica. Ademas, el jefe de la empresa quiere acceder a la red local desde casa con una conexin ADSL. Ahora en el firewall deberiamos tener instalado un servidor SMTP, POP3, y una VPN.
- 115 -

#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables iptables iptables iptables iptables ACCEPT iptables iptables -A -A -A -A -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j

-A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Ahora queremos compartir algn servicio pero de un servidor que tenemos dentro de la red local, por ejemplo el IIS de un servidor Windows 2000, y adems permitir la gestin remota por Terminal Server para esta mquina para una empresa externa. En este caso lo que hay que hacer es un redireccin de puerto. Veamos la configuracin con las nuevas reglas de DNAT:
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables -F -X -Z -t nat -F

- 116 -

iptables iptables iptables iptables iptables

-P -P -P -t -t

INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80 iptables -t nat -A PREROUTING -s 221.23.124.181 -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.10.12:3389 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Bueno ya tenemos montada la red, pero conviene insistir en que esta ltima configuracin, con las redirecciones y los servicios de correo funcionando en el firewall es bastante insegura. Qu ocurre si atacan al servidor IIS de la red local? El firewall no serviria de gran cosa, lo poco que podra hacer una vez se ha entrado en la red local es evitar escaneos hacia el exterior desde la mquina atacada, aunque para ello el firewall deberia tener una buena configuracin con denegacin por defecto.

Firewall de una LAN con salida a internet con DMZ


Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos las cosas bien y colocamos ese servidor IIS en una DMZ:

- 117 -

Figura 7: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitir: - Acceso de la red local a internet. - Acceso pblico al puerto tcp/80 y tcp/443 del servidor de la DMZ - Acceso del servidor de la DMZ a una BBDD de la LAN - Obviamente bloquear el resto de acceso de la DMZ hacia la LAN. Qu tipo de reglas son las que hay que usar para filtrar el trfico entre la DMZ y la LAN? Solo pueden ser las FORWARD, ya que estamos filtrando entre distintas redes, no son paquetes destinados al propio firewall.
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.3.2:443 /sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward - 118 -

iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.5 -d 192.168.3.2 -p tcp --sport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.3.2 -p tcp --sport 1024:65535 --dport 3389 -j ACCEPT iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.0/24 -p tcp --sport 3389 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Vamos a ver: si las mquinas de la DMZ tienen una ip pblica hay que tener muchsimo cuidado de no permitir el FORWARD por defecto. Si en la DMZ hay ip pblica NO ES NECESARIO HACER REDIRECCIONES de puerto, sino que basta con enrutar los paquetes para llegar hasta la DMZ. Este tipo de necesidades surgen cuando por ejemplo tenemos dos mquinas con un servidor web (un apache y un IIS); A cul de las dos le redirigimos el puerto 80? No hay manera de saberlo, por eso se deben asignar IPs pblicas o en su defecto usar puertos distintos. Por tanto hay que proteger convenientemente toda la DMZ. Tampoco hara falta enmascarar la salida hacia el exterior de la DMZ, si tiene una ip pblica ya tiene una pata puesta en internet; obviamente hay que decirle al router como llegar hasta esa ip pblica. As podra ser esta red:

Figura 8: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs pblicas

- 119 -

#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 80 -j ACCEPT iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 443 -j ACCEPT iptables -A FORWARD -d 212.194.89.150/30 -j DROP iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.5 -d 212.194.89.152 -p tcp --sport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -d 212.194.89.152 -p tcp --sport 1024:65535 --dport 3389 -j ACCEPT iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -p tcp --sport 3389 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -j DROP iptables -A INPUT -s 212.194.89.152 -i eth2 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

Analicemos algunas de las reglas de este nuevo firewall:

Permitimos abrir el Terminal Server de la DMZ desde la LAN


iptables -A FORWARD -s 192.168.10.0/24 -d 212.194.89.152 -p tcp -sport 1024:65535 --dport 3389 -j ACCEPT

Hay que hacerlo en sentido y el otro


iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -p tcp --sport - 120 -

3389 --dport 1024:65535 -j ACCEPT

Y obviamente cerramos el acceso de la DMZ a la LAN


iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -j DROP

Por qu hay que explicitar la abertura en uno y otro sentido? Porque la tercera regla cierra todo lo que va de la DMZ a la red local. Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ y que a su vez pueda volver a la LAN. Esto de tener que especificar la abertura en uno y otro sentido ser el pan de cada da en un iptables con poltica DROP por defecto: mejor proteccin pero ms trabajo. Por qu se explicita el puerto de origen/destino 1024:65535 en la primera y segunda regla? Imaginemos que un atacante logra acceso a la mquina de la DMZ. Si no especificamos el puerto de destino en esas dos reglas, el atacante puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp/3389, cosa fcil para un atacante que sepa algo de C o que tenga el programa pertinente a mano. De todas formas el atacante tendra que saber que existe ese tipo de reglas, si es listo probara con puertos de gestin o con puertos netbios. El problema es que se deja un vnculo con la LAN para administrarlo remotamente o para establecer relaciones de confianza y ah es donde reside el peligro.

Firewall con poltica por defecto DROP


Qu supone el hecho de establecer como poltica por defecto la denegacin? Se debe explicitar cada conexin permitida en los dos sentidos Se debe conocer perfectamente qu debe estar abierto y qu no Es muchos ms difcil de mantener y si se hace conviene hacerlo desde el principio No todo es ms trabajo: tambin supone un firewall mucho ms seguro

Es mucho ms simple aplicar DROP por defecto cuando el firewall es en la propia mquina. Si recuerdan, al iniciar este modulo armabamos nuestro primer firewall. Ahora lo realizaremos de nuevo pero utilizando DROP.
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables -F iptables -X iptables -Z

- 121 -

iptables -t nat -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -s 195.65.34.234 -j ACCEPT iptables -A OUTPUT -d 195.65.34.234 -j ACCEPT iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT iptables -A OUTPUT -d 231.45.134.23 -p tcp --sport 3306 -j ACCEPT iptables -A INPUT -s 80.37.45.194 -p tcp --dport 20:21 -j ACCEPT iptables -A OUTPUT -d 80.37.45.194 -p tcp --sport 20:21 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 1:1024 iptables -A INPUT -p udp --dport 1:1024 iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP iptables -A INPUT -p udp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"

- 122 -

Cmo depurar el funcionamiento del firewall Programas tiles


IPTRAF
Sin duda alguna uno de los programas ms prcticos para depurar el firewall es iptables, ya que con el podemos observar si la conexiones se establecen o no; es un programa de consola que es aconsejable controlar ya que muestra en tiempo real el trfico que atraviesa nuestra mquina con todo lujo de detalles: origen/destino de ips y puertos, trfico total o trfico total segn el interfaz de red, etc Si vemos muchas conexiones simultaneas y nos perdemos, existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa.

NMAP
La herramienta para escanear puertos por excelencia, rechace imitaciones. Es una herramienta de consola rpida, efectiva y con multitud de opciones. Podemos usarla desde mquinas ajenas a nuestra red para comprobar si realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que "visin" pueden tener los hackers de nuestro sistema.

SHELL
En el propio script del firewall podemos aadir algunas opciones para descubrir fallos de sintaxis en las reglas. Claro, imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el script. Cul es? Es probable que el mensaje de error no aclare lo suficiente, por eso se puede aadir algo as al final de cada regla:
... iptables -A INPUT -s 195.55.234.2 -j ACCEPT && echo " regla-21 ok" iptables -A INPUT -s 213.62.89.145 -j ACCEPT && echo " regla-22 ok" ...

Si la regla se ejecuta bien mostrar el mensajito de ok.

- 123 -

TALLER DE SNORT
Snort es un potente IDS/IPS (Intrusion Detection System/Intrusion Prevention System) que se ha convertido en un estndar en el campo de la seguridad de sistemas informticos. Es una herramienta que utiliza una filosofa muy similar a IPTables, ya que utiliza reglas sobre los paquetes que viajan en una red, sin embargo, dependiendo del modo de ejecucin va un poco mas all, permitiendo tomar decisiones sobre la informacin intercambiada y la deteccin de posibles ataques sobre peticiones que aunque aparentemente son legitimas, pueden encajar en algn patrn de ataque. Antes de profundizar sobre los modos y configuracin de Snort es necesario conocer el procedimiento de instalacin, que en algunos casos no resulta tan sencillo como se espera, de hecho es un poco complejo principalmente por la cantidad de paquetes que se deben instalar, sin embargo se intenta indicar las pautas generales para conseguir instalar Snort en plataformas Debian (Lenny, Squeeze).

Proceso de instalacin bajo sistemas basados en Debian


En primera instancia se deben insertar los siguientes repositorios para que APT pueda utilizar paquetes dependientes all incluidos, para esto es necesario editar el archivo /etc/apt/sources.list (En este caso se trata de Debian Squeeze, si es Debian Lenny, cambiar este valor por lenny)
deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all

Ahora con los repositorios indicados se puede instalar la clave GPG necesaria, para esto, ubicarse en el directorio /usr/src desde una consola, obtener la clave e instalarla
/usr/src# wget http://www.dotdeb.org/dotdeb.gpg /usr/src# cat dotdeb.gpg | apt-key add

Por otro lado, para que Snort funcione correctamente es necesario tener por un lado, algunas libreras instaladas en la maquina y por otro lado algunas herramientas y software del que depende Snort para su instalacin y posterior configuracin, en concreto se requiere, Apache, MySQL, gcc, libssl, flex, entre otras. Se puede ejecutar el siguiente comando APT para cumplir con todas las dependencias e instalar el software necesario, (Para MySQL se solicitar la contrasea del usuario Root, ser necesario ingresarla para que posteriormente se pueda ingresar en la base de datos)
/usr/src# apt-get update /usr/src# apt-get install apache2 libapache2-mod-php5 libwww-perl mysqlserver mysql-common mysql-client php5-mysql libnet1 libnet1-dev libpcre3 libpcre3-dev autoconf libcrypt-ssleay-perl libmysqlclient-dev php5-gd phppear libphp-adodb php5-cli libtool libssl-dev gcc-4.4 g++ automake gcc make flex bison apache2-doc ca-certificates vim

- 124 -

Cabe anotar, que si ya se dispone de un servidor Apache configurado con MySQL y PHP los paquetes correspondientes a dicho software pueden ser omitidos. Posteriormente se procede a instalar otras libreras que no se encuentran incluidas en los repositorios y que hay que instalar de forma manual, en concreto, dichas libreras son: DAQ, libpcap, libdnet. En todos los casos el directorio donde se encontrar posicionada la consola ser /usr/src/ DAQ
/usr/src# wget http://www.snort.org/dl/snort-current/daq-0.5.tar.gz /usr/src# tar -zxf daq-0.5.tar.gz && cd daq-0.5

NOTA IMPORTANTE: En sistemas en Debian 6.0 (squeeze), es necesario parchear manualmente el archivo
vim /usr/src/daq-0.5/os-daq-modules/daq_pcap.c

Cambiando la linea:
context->buffer_size = strtol(entry->key, NULL, 10);

Por la linea:
context->buffer_size = strtol(entry->value, NULL, 10);

Continuamos el proceso de compilacin de DAQ


/usr/src/daq-0.5# ./configure /usr/src/daq-0.5# make && make install /usr/src/daq-0.5# echo >> /etc/ld.so.conf /usr/lib && ldconfig

LIBPCAP
/usr/src# wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz /usr/src# tar -zxf libpcap-1.1.1.tar.gz && cd libpcap-1.1.1 /usr/src/libpcap-1.1.1# ./configure --prefix=/usr -enable-shared /usr/src/libpcap-1.1.1# make && make install

LIBDNET
/usr/src# wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz /usr/src# tar -zxf libdnet-1.12.tgz && cd libdnet-1.12 /usr/src/libdnet-1.12# ./configure prefix=/usr enable-shared /usr/src/libdnet-1.12# make && make install

Despus de ejecutar todos los pasos anteriores se puede comenzar con la instalacin de Snort en un sistema GNU/Linux basado en Debian, nuevamente desde el directorio /usr/src se ejecutan los siguientes comandos:
- 125 -

/usr/src# wget http://www.snort.org/dl/snort-current/snort-2.9.0.5.tar.gz -O snort-2.9.0.5.tar.gz /usr/src# tar -zxf snort-2.9.0.5.tar.gz && cd snort-2.9.0.5 /usr/src/snort-2.9.0.5#./configure --with-mysql --enable-dynamicplugin --enable-perfprofiling --enable-ipv6 --enable-zlib --enable-reload /usr/src/snort-2.9.0.5# make && make install

Con los pasos anteriores se ha instalado correctamente Snort en el sistema, ahora se debe proceder a configurar el servicio para que pueda ser ejecutado fcilmente, para esto se ejecutan los siguientes comandos desde consola
/usr/src/snort-2.9.0.5# mkdir /etc/snort /etc/snort/rules /var/log/snort /var/log/barnyard2 /usr/local/lib/snort_dynamicrules /usr/src/snort-2.9.0.5# groupadd snort && useradd -g snort snort /usr/src/snort-2.9.0.5# chown snort:snort /var/log/snort /var/log/barnyard2 /usr/src/snort-2.9.0.5# cp /usr/src/snort-2.9.0.5/etc/*.conf* /etc/snort /usr/src/snort-2.9.0.5# cp /usr/src/snort-2.9.0.5/etc/*.conf* /etc/snort

Posteriormente es necesario establecer las opciones de configuracin necesarias en el archivo /etc/snort/snort.conf Instalar BARNYARD con los siguientes pasos:
/usr/src# wget http://www.securixlive.com/download/barnyard2/barnyard21.9.tar.gz /usr/src# tar -zxf barnyard2-1.9.tar.gz && cd barnyard2-1.9 /usr/src/barnyard2-1.9# ./configure --with-mysql /usr/src/barnyard2-1.9# make && make install /usr/src# mv /usr/local/etc/barnyard2.conf /etc/snort

Editar el archivo /etc/snort/barnyard2.conf En la linea 215 cambiar:


output alert_fast: stdout

por
output alert_fast

Al final del archivo declarar la siguiente linea:


output database: log, mysql, user=snort password=snort dbname=snort host=localhost

Establecer las variables de configuracin de Snort, Linea 39: ipvar HOME_NET 192.168.1.0/24 Linea 42: ipvar EXTERNAL_NET !$HOME_NET Linea 80: var RULE_PATH ./rules (aqu se indica el directorio donde se encuentran ubicados los archivos de reglas)
- 126 -

Lineas 186-190: Comentar todas las entradas correspondientes a preprocessor normalize_* Linea 366: Configuracin adicional sobre tipos de instalacin, establecer la siguiente linea: output unified2: filename snort.log, limit 128 Linea 393: A partir de esta linea se incluyen los archivos de reglas para Snort, en este caso concreto se comentarn todas las inclusiones, dejando solamente la primera (local.rules).

Crear una regla de pruebas para verificar el funcionamiento del sistema, crear y editar el archivo /etc/snort/rules/local.rules incluyendo las siguientes lineas:
alert icmp any any -> $HOME_NET any (msg:ICMP test; sid:10000001;)

Probar Snort.
snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Ahora se procede a configurar la base de datos MySQL y con esto en mente, la primera instruccin que se llevar a cabo ser crear un usuario Snort con los privilegios necesarios.
/usr/local/bin/log# mysql -u root -p mysql> create database snort ; mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost; mysql> SET PASSWORD FOR snort@localhost=PASSWORD(snort); mysql> exit

Ahora se procede a crear la base de datos partiendo del esquema existente en Snort tras su instalacin, el nombre de esta base de datos ser snort.
/tmp# mysql -u root -p < /usr/src/snort-2.9.0.5/schemas/create_mysql snort /tmp# mysql -u root -p mysql> use snort mysql> show tables ;

Validamos que se hayan creados las tablas correspondientes en nuestra base de datos. Por ultimo es necesario configurar el servidor Apache con PHP para que todo el circuito de configuracin quede definido, para esto se ejecutan los siguientes comandos Editar el archivo /etc/php5/apache2/php.ini y cambiar la variable error_reporting con el siguiente valor:
error_reporting = E_ALL & ~E_NOTICE

/# /# /# /# /#

cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled a2enmod ssl pear config-set preferred_state alpha pear install Image_Color Image_Canvas Image_Graph /etc/init.d/apache2 restart

- 127 -

Se procede a instalar BASE (Basic Analysis and Security Engine). Se trata de una aplicacin web que permite realizar el anlisis de los paquetes capturados por snort.
/usr/src# wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base1.4.5.tar.gz /usr/src# tar -zxf base-1.4.5.tar.gz /usr/src# cp -r base-1.4.5 /var/www/base /usr/src# chmod 777 /var/www

Ahora desde el navegador web, apuntar a https://<DIRECCION_LOCAL>/base Dado que se trata de la primera vez que se ejecuta la aplicacin web, se procede a iniciar el proceso de configuracin que consta de 5 pasos

Paso 1
Seleccionar el lenguaje de la eleccin del usuario Ruta de adodb: /usr/share/php/adodb

Paso 2
Definir las caractersticas de conexin a la base de datos MySQL creada y configurada en pasos anteriores.

Paso 3
Definir los valores de autenticacin del sistema BASE, estos valores sern utilizados posteriormente para utilizar BASE.

Paso 4
Creacin de las tablas del sistema BASE, en este punto, las tablas que se van a crear van a permitir extender las funcionalidades de Snort empleado BASE. Presionar sobre Create BASE AG

Paso 5
Si hasta este punto la configuracin ha sido correcta, se debe ensear la interfaz de autenticacin de usuario.

Una vez finalizados los pasos anteriores se tiene Snort configurado y preparado para su ejecucin con todas las dependencias necesarias.

- 128 -

Das könnte Ihnen auch gefallen