Beruflich Dokumente
Kultur Dokumente
This document is licensed under the Attribution-ShareAlike 3.0 Unported license, available at http://creativecommons.org/licenses/by-sa/3.0/.
INDICE
INFORMACION DEL AUTOR..........................................................................................................4 INTRODUCCION A LA SEGURIDAD...............................................................................................5 FILOSOFIA HACKER..................................................................................................................... 12 FOOTPRINTING............................................................................................................................ 17 GOOGLE HACKING...................................................................................................................... 25 SCANNING & ENUMERATION......................................................................................................29 SYSTEM HACKING....................................................................................................................... 33 DENEGACION DE SERVICIO.......................................................................................................39 PREVINIENDO UN DoS................................................................................................................. 45 INGENIERIA SOCIAL..................................................................................................................... 48 HIJACKING.................................................................................................................................... 58 SESSION HIJACKING................................................................................................................... 59 VULNERABILIDADES EN APLICACIONES WEB..........................................................................61 W3AF............................................................................................................................................. 63 EVASION DE FIREWALLS............................................................................................................ 76 EVASION DE IDS.......................................................................................................................... 83 HONEYPOTS................................................................................................................................. 87 CRIPTOGRAFIA PROTECCION DE DATOS..............................................................................91 FIRMA DIGITAL ............................................................................................................................ 93 GPG (Gnu Privacy Guard).............................................................................................................. 94 TALLER DE APACHE SECURITY...............................................................................................100 TALLER DE IPTABLES................................................................................................................ 106 TALLER DE SNORT.................................................................................................................... 124
Como consultor independiente, desarroll y particip en la implementacin de soluciones en lugares como: Ministerio de Defensa de la Repblica Argentina Direccin General de Administracin de Infracciones (Gobierno de la Ciudad de Buenos Aires) Unidad Administrativa de Control de Faltas (Gobierno de la Ciudad de Buenos Aires) Educ.ar Sistema de Observaciones y Recomendaciones para el Gobierno de la Ciudad de Buenos Aires Facultad de Filosofa y Letras (UBA) Instituto Nacional de Servicios Sociales para Jubilados y Pensionados Caja de Valores S.A. - Central Depositaria Argentina Telecom Personal Argentina Techint Argentina
Email: jose@dotlinux.com.ar
-4-
INTRODUCCION A LA SEGURIDAD
Qu es la Seguridad Informtica?
La seguridad informtica es el rea de la informtica que se enfoca en la proteccin de la infraestructura computacional y todo lo relacionado con esta (incluyendo la informacin contenida). Para ello existen una serie de estndares, protocolos, mtodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la informacin. La seguridad informtica comprende software, bases de datos, metadatos, archivos y todo lo que la organizacin valore (activo) y signifique un riesgo si sta llega a manos de otras personas. Este tipo de informacin se conoce como informacin privilegiada o confidencial. El concepto de seguridad de la informacin no debe ser confundido con el de seguridad informtica, ya que este ltimo slo se encarga de la seguridad en el medio informtico, pudiendo encontrar informacin en diferentes medios o formas.
informtica minimizando el impacto en el desempeo de los funcionarios y de la organizacin en general y como principal contribuyente al uso de programas realizados por programadores.
Las amenazas
Una vez que la programacin y el funcionamiento de un dispositivo de almacenamiento (o transmisin) de la informacin se consideran seguras, todava deben ser tenidos en cuenta las circunstancias "no informticas" que pueden afectar a los datos, las cuales son a menudo imprevisibles o inevitables, de modo que la nica proteccin posible es la redundancia (en el caso de los datos) y la descentralizacin -por ejemplo mediante estructura de redes- (en el caso de las comunicaciones). Estos fenmenos pueden ser causados por: El usuario: causa del mayor problema ligado a la seguridad de un sistema informtico (porque no le importa, no se da cuenta o a propsito). Programas maliciosos: programas destinados a perjudicar o a hacer un uso ilcito de los recursos del sistema. Es instalado (por inatencin o maldad) en el ordenador abriendo una puerta a intrusos o bien modificando los datos. Estos programas pueden ser un virus informtico, un gusano informtico, un troyano, una bomba lgica o un programa espa o Spyware. Un intruso: persona que consigue acceder a los datos o programas de los cuales no tiene acceso permitido (cracker, defacer, script kiddie o Script boy, viruxer, etc.). Un siniestro (robo, incendio, inundacin): una mala manipulacin o una malintencin derivan a la prdida del material o de los archivos. El personal interno de Sistemas: Las pujas de poder que llevan a disociaciones entre los sectores y soluciones incompatibles para la seguridad informtica.
Tipos de amenaza
El hecho de conectar una red a un entorno externo nos da la posibilidad de que algn atacante pueda entrar en ella, con esto, se puede hacer robo de informacin o alterar el funcionamiento de la red. Sin embargo el hecho de que la red no sea conectada a un entorno externo no nos garantiza la seguridad de la misma. De acuerdo con el Computer Security Institute (CSI) de San Francisco aproximadamente entre 60 y 80 por ciento de los incidentes de red son causados desde adentro de la misma. Basado en esto podemos decir que existen 2 tipos de amenazas: Amenazas internas: Generalmente estas amenazas pueden ser ms serias que las externas por varias razones como son: Los usuarios conocen la red y saben cmo es su funcionamiento Tienen algn nivel de acceso a la red por las mismas necesidades de su trabajo
-6-
Esta situacin se presenta gracias a los esquemas ineficientes de seguridad con los que cuentan la mayora de las compaas a nivel mundial, y porque no existe conocimiento relacionado con la planeacin de un esquema de seguridad eficiente que proteja los recursos informticos de las actuales amenazas combinadas. El resultado es la violacin de los sistemas, provocando la prdida o modificacin de los datos sensibles de la organizacin, lo que puede representar un dao con valor de miles o millones de dlares. Amenazas externas: Son aquellas amenazas que se originan de afuera de la red. Al no tener informacin certera de la red, un atacante tiene que realizar ciertos pasos para poder conocer qu es lo que hay en ella y buscar la manera de atacarla. La ventaja que se tiene en este caso es que el administrador de la red puede prevenir una buena parte de los ataques externos.
En este sentido, las amenazas informticas que viene en el futuro ya no son con la inclusin de troyanos en los sistemas o softwares espas, sino con el hecho de que los ataques se han profesionalizado y manipulan el significado del contenido virtual. La Web 3.0, basada en conceptos como elaborar, compartir y significar, est representando un desafo para los hackers que ya no utilizan las plataformas convencionales de ataque, sino que optan por modificar los significados del contenido digital, provocando as la confusin lgica del usuario y permitiendo de este modo la intrusin en los sistemas, La amenaza ya no solicita la clave de homebanking del desprevenido usuario, sino que directamente modifica el balance de la cuenta, asustando al internauta y, a partir de all, s efectuar el robo del capital.
Para no ser presa de esta nueva ola de ataques ms sutiles, Se recomienda: Mantener las soluciones activadas y actualizadas. Evitar realizar operaciones comerciales en computadoras de uso pblico.
-7-
Verificar los archivos adjuntos de mensajes sospechosos y evitar su descarga en caso de duda.
Anlisis de riesgos
El activo ms importante que se posee es la informacin y, por lo tanto, deben existir tcnicas que la aseguren, ms all de la seguridad fsica que se establezca sobre los equipos en los cuales se almacena. Estas tcnicas las brinda la seguridad lgica que consiste en la aplicacin de barreras y procedimientos que resguardan el acceso a los datos y slo permiten acceder a ellos a las personas autorizadas para hacerlo. Existe un viejo dicho en la seguridad informtica que dicta: "lo que no est permitido debe estar prohibido" y sta debe ser la meta perseguida. Los medios para conseguirlo son: 1. Restringir el acceso (de personas de la organizacin y de las que no lo son) a los programas y archivos. 2. Asegurar que los operadores puedan trabajar pero que no puedan modificar los programas ni los archivos que no correspondan (sin una supervisin minuciosa). 3. Asegurar que se utilicen los datos, archivos y programas correctos en/y/por el procedimiento elegido. 4. Asegurar que la informacin transmitida sea la misma que reciba el destinatario al cual se ha enviado y que no le llegue a otro. 5. Asegurar que existan sistemas y pasos de emergencia alternativos de transmisin entre diferentes puntos. 6. Organizar a cada uno de los empleados por jerarqua informtica, con claves distintas y permisos bien establecidos, en todos y cada uno de los sistemas o aplicaciones empleadas. 7. Actualizar constantemente las contraseas de accesos a los sistemas de cmputo.
Elaborar reglas y procedimientos para cada servicio de la organizacin. Definir las acciones a emprender y elegir las personas a contactar en caso de detectar una posible intrusin Sensibilizar a los operadores con los problemas ligados con la seguridad de los sistemas informticos.
Los derechos de acceso de los operadores deben ser definidos por los responsables jerrquicos y no por los administradores informticos, los cuales tienen que conseguir que los recursos y derechos de acceso sean coherentes con la poltica de seguridad definida. Adems, como el administrador suele ser el nico en conocer perfectamente el sistema, tiene que derivar a la directiva cualquier problema e informacin relevante sobre la seguridad, y eventualmente aconsejar estrategias a poner en marcha, as como ser el punto de entrada de la comunicacin a los trabajadores sobre problemas y recomendaciones en trmino de seguridad informtica.
Respaldo de Informacin
La informacin constituye el activo ms importante de las empresas, pudiendo verse afectada por muchos factores tales como robos, incendios, fallas de disco, virus u otros. Desde el punto de vista de la empresa, uno de los problemas ms importantes que debe resolver es la proteccin permanente de su informacin crtica. La medida ms eficiente para la proteccin de los datos es determinar una buena poltica de copias de seguridad o backups: Este debe incluir copias de seguridad completa (los datos son almacenados en su totalidad la primera vez) y copias de seguridad incrementales (slo se copian los archivos creados o modificados desde el ltimo backup). Es vital para las empresas elaborar un plan de backup en funcin del volumen de informacin generada y la cantidad de equipos crticos. Un buen sistema de respaldo debe contar con ciertas caractersticas indispensables: Continuo : El respaldo de datos debe ser completamente automtico y continuo. Debe funcionar de forma transparente, sin intervenir en las tareas que se encuentra realizando el usuario. Seguro : Muchos softwares de respaldo incluyen cifrado de datos (128-448 bits), lo
-9-
cual debe ser hecho localmente en el equipo antes del envo de la informacin. Remoto : Los datos deben quedar alojados en dependencias alejadas de la empresa. Mantencin de versiones anteriores de los datos : Se debe contar con un sistema que permita la recuperacin de versiones diarias, semanales y mensuales de los datos.
Hoy en da los sistemas de respaldo de informacin online (Servicio de backup remoto) estn ganando terreno en las empresas y organismos gubernamentales. La mayora de los sistemas modernos de respaldo de informacin online cuentan con las mximas medidas de seguridad y disponibilidad de datos. Estos sistemas permiten a las empresas crecer en volumen de informacin sin tener que estar preocupados de aumentar su dotacin fsica de servidores y sistemas de almacenamiento.
Consideraciones de software
Tener instalado en la mquina nicamente el software necesario reduce riesgos. As mismo tener controlado el software asegura la calidad de la procedencia del mismo (el software obtenido de forma ilegal o sin garantas aumenta los riesgos). En todo caso un inventario de software proporciona un mtodo correcto de asegurar la reinstalacin en caso de desastre. El software con mtodos de instalacin rpidos facilita tambin la reinstalacin en caso de contingencia. Existe un software que es conocido por la cantidad de agujeros de seguridad que introduce. Se pueden buscar alternativas que proporcionen iguales funcionalidades pero permitiendo una seguridad extra.
- 10 -
errneas
comunes
acerca
de
la
Mi sistema no es importante para un cracker Esta afirmacin se basa en la idea de que no introducir contraseas seguras en una empresa no entraa riesgos pues quin va a querer obtener informacin ma?. Sin embargo, dado que los mtodos de contagio se realizan por medio de programas automticos, desde unas mquinas a otras, estos no distinguen buenos de malos, interesantes de no interesantes, etc. Por tanto abrir sistemas y dejarlos sin claves es facilitar la vida a los virus. Estoy protegido pues no abro archivos que no conozco Esto es falso, pues existen mltiples formas de contagio, adems los programas realizan acciones sin la supervisin del usuario poniendo en riesgo los sistemas. Como tengo antivirus estoy protegido En general los programas antivirus no son capaces de detectar todas las posibles formas de contagio existentes, ni las nuevas que pudieran aparecer conforme los ordenadores aumenten las capacidades de comunicacin, adems los antivirus son vulnerables a desbordamientos de bfer que hacen que la seguridad del sistema operativo se vea ms afectada an. Como dispongo de un firewall no me contagio Esto nicamente proporciona una limitada capacidad de respuesta. Las formas de infectarse en una red son mltiples. Unas provienen directamente de accesos al sistema (de lo que protege un firewall) y otras de conexiones que se realizan (de las que no me protege). Emplear usuarios con altos privilegios para realizar conexiones puede entraar riesgos, adems los firewalls de aplicacin (los ms usados) no brindan proteccin suficiente contra el spoofing. Tengo un servidor web cuyo sistema operativo es un Unix actualizado a la fecha Puede que este protegido contra ataques directamente hacia el ncleo, pero si alguna de las aplicaciones web (PHP, Perl, Cpanel, etc.) est desactualizada, un ataque sobre algn script de dicha aplicacin puede permitir que el atacante abra una shell y por ende ejecutar comandos en el unix.
- 11 -
FILOSOFIA HACKER
Qu es el ethical hacking?
El "ethical hacking" o "tica hacker" es una nueva tica surgida de y aplicada a las comunidades virtuales o cibercomunidades, aunque no exclusivamente. La expresin se suele atribuir al periodista Steven Levy en su ensayo seminal Hackers: Heroes of the Computer Revolution, publicado en 1984, donde describe y enuncia con detalle los principios morales que surgieron a finales de los aos cincuenta en el Laboratorio de Inteligencia Artificial del MIT y, en general, en la cultura de los aficionados a la informtica de los aos sesenta y setenta. Aquellos principios --que se resumen en el acceso libre a la informacin y en que la informtica puede mejorar la calidad de vida de las personas-- han constituido la base de la mayor parte de definiciones que se han elaborado posteriormente. Uno de sus mentores actuales ha sido el finlands Pekka Himanen. Himanen en su obra La tica del hacker y el espritu de la era de la informacin (que contiene un prlogo de Linus Torvalds y un eplogo de Manuel Castells), comienza por rescatar una de las acepciones originales del trmino 'hacker'. Segn Himanen, un hacker no es un delincuente, vndalo o pirata informtico con altos conocimientos tcnicos (a los que prefiere llamar crackers), sino que hacker es todo aquel que trabaja con gran pasin y entusiasmo por lo que hace. De ah que el trmino 'hacker' pueda y deba extrapolarse a otros mbitos como ser, por ejemplo, el cientfico. As Himanen escribe, En el centro de nuestra era tecnolgica se hallan unas personas que se autodenominan hackers. Se definen a s mismos como personas que se dedican a programar de manera apasionada y creen que es un deber para ellos compartir la informacin y elaborar software gratuito. No hay que confundirlos con los crackers, los usuarios destructivos cuyo objetivo es el de crear virus e introducirse en otros sistemas: un hacker es un experto o un entusiasta de cualquier tipo que puede dedicarse o no a la informtica. En este sentido, la tica hacker es una nueva moral que desafa la tica protestante del trabajo, tal como la expuso hace casi un siglo Max Weber en su obra clsica La tica protestante y el espritu del capitalismo, y que est fundada en la laboriosidad diligente, la aceptacin de la rutina, el valor del dinero y la preocupacin por la cuenta de resultados. Frente a la moral presentada por Weber, la tica del trabajo para el hacker se funda en el valor de la creatividad, y consiste en combinar la pasin con la libertad. El dinero deja de ser un valor en s mismo y el beneficio se cifra en metas como el valor social y el libre acceso, la transparencia y la franqueza.
Valores fundamentales
La tica hacker es una tica de tipo axiolgico, es decir, una tica basada en una determinada serie de valores. Himanen rescata algunos fundamentales, a saber: Pasin Libertad
- 12 -
Conciencia social Verdad Anti-corrupcin Lucha contra la alienacin del hombre Igualdad social Libre acceso a la informacin (conocimiento libre) Valor social (reconocimiento entre semejantes) Accesibilidad Actividad Preocupacin responsable Curiosidad Creatividad
Otros aspectos que resaltan de esta tica, es una frase muy sonada y maravillosa: "Ningn problema debera resolverse 2 veces", aludiendo a que el tiempo de los dems es muy valioso, y cuando resuelvas algo comunicalo a todos tus compaeros hackers para que puedan resolver otros problemas, aumentando la productividad.
Qu es un cracker?
El trmino cracker (del ingls crack, romper) se utiliza para referirse a las personas que rompen algn sistema de seguridad. Los crackers pueden estar motivados por una multitud de razones, incluyendo fines de lucro, protesta, o simplemente por el desafo de hacerlo. A partir de 1980 haba aparecido la cultura hacker, programadores aficionados o personas destacadas o con un importante conocimiento de informtica. Estos programadores no solan estar del lado de la ilegalidad, y aunque algunos conocan tcnicas para burlar sistemas de seguridad, se mantenan dentro del mbito legal. Pero con el tiempo surgieron personas que utilizando su conocimiento en informtica, aprovechaban debilidades o bugs de algunos sistemas informticos y los crackeaban, es decir, burlaban el sistema de seguridad muchas veces entrando en la ilegalidad y algunos considerando estas prcticas como "malas". A estas personas se las continu llamando hackers, por lo que alrededor de 1985 los hackers "originales" empezaron a llamarlos crackers en contraposicin al trmino hacker, en defensa de stos ltimos por el uso incorrecto del trmino. Por ello los crackers son criticados por la mayora de hackers, por el desprestigio que les supone ante la opinin pblica y las empresas ya que muchas veces, inclusive en los medios de comunicacin, no hacen diferencia entre el trmino hacker y cracker creando confusin sobre la definicin de los mismos y aparentando un significado similar.
- 13 -
En ambos casos dichas prcticas suelen ser ilegales y penadas por la ley.
Legalidad
Muchos programas informticos, usualmente los privativos, no permiten la modificacin o estudio del funcionamiento del programa, esto hace que el hecho de realizar ingeniera inversa para poder generar un serial o un crack sea ilegal. En ocasiones el cracking es la nica manera de realizar cambios sobre software para el que su fabricante no presta soporte, especialmente cuando lo que se quiere es, o corregir defectos, o exportar datos a nuevas aplicaciones, en estos casos en la mayora de legislaciones no se considera el cracking como actividad ilegal,[cita requerida] incluso a veces la empresa que desarroll el software ya no existe o ya no posee los derechos sobre el producto. A su vez cuando una persona penetra en un sistema ajeno sin su autorizacin, se comete una violacin a la propiedad privada, se suele dar el ejemplo de que es ilegal entrar sin permiso a la casa de otra persona, por ms de que la puerta est abierta. Aunque tambin las tcticas utilizadas por los crackers para violar los sistemas de seguridad suelen ser utilizadas por empresas de seguridad informtica u otras personas para testear la seguridad de un programa o computadora, en dicho caso como se tiene el permiso para realizar el "ataque" o bien, es el mismo dueo de la computadora el que lo realiza, ya no es una prctica ilegal y entrara en disputa tambin el uso del trmino cracker para dichos actos, por esto se han creado diversas leyes que tratan de solucionar estas diferencias.
Qu es un hacker?
Un hacker es una persona apasionada por la seguridad informtica. Esto concierne principalmente a entradas remotas no autorizadas por medio de redes de comunicacin como Internet ("Black hats"). Pero tambin incluye a aquellos que depuran y arreglan errores en los sistemas ("White hats") y a los de moral ambigua como son los "Grey hats". Los hackers son son una comunidad de entusiastas programadores y diseadores de sistemas originada en los sesenta alrededor del Instituto Tecnolgico de Massachusetts (MIT), el Tech Model Railroad Club (TMRC) y el Laboratorio de Inteligencia Artificial del MIT. Esta comunidad se caracteriza por el lanzamiento del movimiento de software libre. La World Wide Web e Internet en s misma son creaciones de hackers. El RFC 13924 amplia este significado como "persona que se disfruta de un conocimiento profundo del
- 14 -
funcionamiento interno de un sistema, en particular de computadoras y redes informticas" Muchos hackers pertenecen a la comunidad de aficionados a la informtica domstica, centrada en el hardware posterior a los setenta y en el software (juegos de ordenador, crackeo de software, la demoscene) de entre los ochenta/noventa. En la actualidad el trmino hacker se utiliza de forma corriente para referirse mayormente a los criminales informticos, debido a su utilizacin masiva por parte de los medios de comunicacin desde la dcada de 1980. A los criminales se le pueden sumar los llamados "script kiddies", gente que invade computadoras, usando programas escritos por otros, y que tiene muy poco conocimiento sobre como funcionan. Este uso parcialmente incorrecto se ha vuelto tan predominante que, en general, un gran segmento de la poblacin no es consciente de que existen diferentes significados. Mientras que los hackers aficionados reconocen los tres tipos de hackers y los hackers de la seguridad informtica aceptan todos los usos del trmino, los hackers del software libre consideran la referencia a intrusin informtica como un uso incorrecto de la palabra, y se refieren a los que rompen los sistemas de seguridad como "crackers" (analoga de "safecracker", que en espaol se traduce como "un ladrn de cajas fuertes").
Controversia y ambigedad
En un principio se utilizaba "hack" como verbo para expresar "perder el tiempo" (e.j. "Puedo hackear con el ordenador"), el significado del trmino ha cambiado a lo largo de dcadas desde que empez a utilizarse en un contexto informtico. Como su uso se ha extendido ms ampliamente, el significado primario de la palabra, por parte de los nuevos usuarios, ha pasado a uno que entra en conflicto con el nfasis original.
El Emblema Hacker
El Emblema Hacker fue propuesto primero en Octubre de 2003 por Eric S. Raymond, alegando la necesidad de una unificacin y un smbolo reconocible para la percepcin de la cultura hacker. Esto no se refiere a la accin de infringir irrumpir sin permiso computadores/ordenadores. Tal accin es realizada por los llamados crackers. en los
El emblema Hacker
- 15 -
Raymond ha dicho que uno no pretende ser un hacker slo para mostrar este emblema, pero sugiere que:
"el uso de este emblema expresa la solidaridad con los objetivos y valores de los hackers, y la forma de vivir de un hacker"
La imagen en s misma es una representacin de un planeador (Glider), una formacin en el Juego de la vida de John Conway que viaja en todos los mbitos. Se descubri por primera vez por Richard K. Guy. Es la ms pequea nave espacial, y se desplaza en forma diagonal a una velocidad de c/4. El planeador es a menudo producido a partir de generaciones preconfiguradas aleatorias. Los planeadores son importantes para el juego de la vida porque son producidas con facilidad, pueden ser colisionado entre s para formar objetos ms complejos, y puede utilizarse para transmitir informacin a largas distancias. Eric S. Raymond ha propuesto al planeador como un emblema para representar a los hackers porque: El planeador (Glider) "naci casi al mismo tiempo que el Internet y Unix". El Juego de la vida hace un llamamiento a los hackers.
- 16 -
FOOTPRINTING
Qe es el Footprinting?
El Footprinting consiste en la bsqueda de toda la informacin pblica, bien porque haya sido publicada a propsito o bien porque haya sido publicada por desconocimiento (abierta, y por tanto no estaremos incurriendo en ningn delito, adems la entidad ni debera detectarlo) que pueda haber sobre el sistema que se va a auditar, es decir, buscaremos todas las huellas posibles, desde direcciones IP, servidores internos, cuentas de correo de los usuarios, nombres de mquinas, informacin del registrador del dominio, tipos de servidores, archivos con cuentas y/o credenciales de usuarios, impresoras, cmaras IP, metadatos, etc. Cualquier dato que nos pueda ser de utilidad para lanzar distintos ataques en las fases posteriores de la auditora. Si enumeramos los pasos genricos para realizar un Test de Intrusin, el proceso de Footprinting sera el primero de ellos: Footprinting Fingerprinting Anlisis de vulnerabilidades Explotacin de vulnerabilidades Generacin de informes En este capitulo veremos las practicas ms comunes para realizar una bsqueda de informacin. Pongamos como ejemplo que tenemos que auditar al instituto que tiene en el dominio www.dotlinux.com.ar su sitio Web y desde el que se pueden conectar a distintos servicios que ofrece.
podramos verlas mirando la cach o con algn servicio como archive.org Continuaremos con las bsquedas hacking, utilizando diferentes verbos para refinar un poco ms las bsquedas. Por ejemplo, es interesante ver que saben o dicen los dems de nuestro objetivo, para ello podemos ayudarnos de la siguiente bsqueda en Google, donde el - indca que queremos ver todos los resultados menos los del dominio objetivo:
dotlinux -site:dotlinux.com.ar
Algunos verbos a destacar seran: site: para listar toda la informacin de un dominio concreto. filetype o ext: para buscar archivos de un formato determinado, por ejemplo pdf, rdp (de escritorio remoto), imgenes png, jpg, etc. para obtener informacin EXIF y un largo etctera. intitle: para buscar pginas con ciertas palabras en el campo title inurl: para buscar pginas con ciertas palabras en la URL. O buscar por ejemplo por la frase index of para encontrar listados de archivos de ftps, etc. Una vez que hayamos realizado algunas bsquedas especficas ser interesante listar todas las pginas que pendan del dominio raz. Para ello podemos ayudarnos de la bsqueda:
site:dotlinux.com.ar
En este punto podramos leernos el cdigo fuente de las distintas pginas encontradas, para ver si hay comentarios escritos por los programadores (algo comn) u otros datos que puedan ser de utilidad. Por ejemplo, en una ocasin me encontr con un comentario muy curioso que deca algo como lo siguiente:
<!Comentario del Diseador al Programador, el usuario para conectarse a la BBDD es PEPITO y la clave MENGANITO-->
Si quieren trabajar un poco menos pueden descargarse el sitio web entero con la herramienta wget y hacer bsquedas directamente sobre la carpeta donde est el sitio web descargado utilizando un grep, que realiza bsquedas muy rpidas sobre el contenido de los archivos de una carpeta. Wget puede trabajar bajando archivos en forma recursiva mediante el protocolo HTTP o FTP. La sintaxis de URL utilizada es la estndar:
http://host[:puerto]/path ftp://[username[:password]@]host/path/archivo
Normalmente no se necesitan opciones, salvo que se desee modificar el comportamiento estndar de wget. La lista de las opciones ms comunes en el uso de wget es la siguiente: -h help -v verbose
- 18 -
-nv no verbose (muestra solo mensajes de error) -q quiet (no muestra mensajes) -i filename lee la lista de URLs de 'filename' --follow-ftp sigue enlaces FTP desde documentos HTML -l depth cambia el nivel de recursividad a 'depth' (default 5) -r modo recursivo -nc no baja los archivos ya bajados (permite seguir de donde nos quedamos la ltima vez)
Para ms datos sobre su utilizacin chequear 'man wget' e 'info wget'. Ahora que tenemos mas informacion sobre los sitios, podremos hacer una consulta rapida para saber la ubicacin del servidor y su IP utilizando el servicio de www.ipadress.com/whois Tambin podremos encontrarnos con que varios dominios compartan una IP (virtual hosts), para buscarlos nos ser de especial utilidad el buscador Bing con su verbo IP
Freednsinfo (http://www.freednsinfo.com/) Otra herramient semejante a IPTools Dnsstuff (http://www.dnsstuff.com) Es un servicio similar a los anteriores, aunque no es gratuito. Dnsenquirty (http://www.dnsenquiry.com/) Otro servicio que nos permitir analizar el whois, dns lookup y ping Visualware (http://visualroute.visualware.com/) Servicio Web que nos permitir seguir visualmente el camino que se recorre hasta llegar a la IP del servidor objetivo. Requiere Java 123people (http://www.123people.es/) Con este servicio podremos buscar informacin sobre personas a partir de su nombre, nos ser de utilidad para saber informacin de una persona cuando hayamos conseguido su nombre a travs de metadatos, registro Whois, etc. Nos ayudar a encontrar sus posibles blogs, vdeos subidos a youtube, publicaciones, etc. Analizaremos un poco de su vida para futuros ataques con ingeniera social.
Finalmente la ltima tcnica que veremos ser el anlisis de cabeceras de los correos electrnicos. Para ello ser clave que consigamos que alguien de la organizacin a auditar nos enve un email, o tengan un sistema con el que podamos enviarlo nosotros mismos, como los tpicos de enviar esta noticia a un amigo:
- 20 -
Ahora que tenemos identificado el dominio que nos interesa podemos obtener informacin ms detallada utilizando nuevamente whois
jomax@g460:~$ whois telefonica.com
- 21 -
Server Name: TELEFONICA.COM.BR Registrar: DIRECTI INTERNET SOLUTIONS PVT. LTD. D/B/A PUBLICDOMAINREGISTRY.COM Whois Server: whois.PublicDomainRegistry.com Referral URL: http://www.PublicDomainRegistry.com Domain Name: TELEFONICA.COM Registrar: INTERDOMAIN, S.A. Whois Server: whois.interdomain.net Referral URL: http://www.interdomain.es Name Server: NS3CHOS01.TELEFONICA-DATA.COM Name Server: NSJC8HOS01.TELEFONICA-DATA.COM Status: clientDeleteProhibited Status: clientTransferProhibited Status: clientUpdateProhibited Updated Date: 18-oct-2006 Creation Date: 03-may-1996 Expiration Date: 04-may-2013 >>> Last update of whois database: Sat, 19 Nov 2011 19:48:24 UTC <<< The Registry database contains ONLY .COM, .NET, .EDU domains and Registrars. Domain Name................ Creation Date............ Expiry Date.............. Last Update Date......... Organization Contact Id.... Organization Name........ Organization Org......... Organization Street...... Organization City........ Organization State....... Organization PC.......... Organization Country..... Organization Phone....... Organization Fax......... Organization e-mail...... Administrative Contact Id.. Administrative Name...... Administrative Org....... Administrative Street.... Administrative City...... Administrative State..... Administrative PC........ Administrative Country... Administrative Phone..... Administrative Fax....... Administrative e-mail.... Technical Contact Id....... Technical Name........... Technical Org............ Technical Street......... Technical City........... Technical State.......... Technical PC............. Technical Country........ Technical Phone.......... Technical Fax............ Technical e-mail......... telefonica.com 03/05/1996 04/05/2013 10/05/2011 PROP-1230-00091872 TELEFONICA, S.A. TELEFONICA, S.A. GRAN VIA, 28 MADRID MADRID 28013 ES +34.902106082 +34.915844509 dominios@e-telefonica.com 1052-00136019 MANUEL CRESPO DE LA MATA TELEFONICA S.A. GRAN VIA 28 MADRID MADRID E-28013 ES +34.902106082 +34.915844509 dominios@e-telefonica.com 1052-00136020 Ventanilla Unica TELEFONICA S.A. GRAN VIA 28 MADRID MADRID E-28013 ES +34.917548900 +34.915840589 ventanillaunica.cpdv@telefonica.es - 22 -
Domain servers in listed order: Name Name Name Name Name Name Server............. nsjc8hos01.telefonica-data.com Server............. ns3chos01.telefonica-data.com Server............. Server............. Server............. Server.............
Received 48 bytes from 192.168.1.1#53 in 2 ms Trying "telefonica.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35212 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;telefonica.com. IN AAAA
Received 32 bytes from 192.168.1.1#53 in 2 ms Trying "telefonica.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23594 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 13, ADDITIONAL: 12 ;; QUESTION SECTION: ;telefonica.com. ;; ANSWER SECTION: telefonica.com. telefonica.com. 2331 2331 IN IN IN MX MX MX 10 smtpus.telefonica.com. 10 smtpar.telefonica.com.
Como vimos, es muy facil conseguir datos importantes y adems las direcciones IP de cualquier servicio web. Es importante que tambien en los casos donde host nos devuelve un dominio en vez de una ip, podremos resolverlo utilizando dig
jomax@g460:~$ dig smtpus.telefonica.com ; <<>> DiG 9.7.3 <<>> smtpus.telefonica.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46508 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 12 ;; QUESTION SECTION: ;smtpus.telefonica.com. IN A
- 23 -
IN
216.177.207.223
Query time: 330 msec SERVER: 192.168.1.1#53(192.168.1.1) WHEN: Sat Nov 19 17:11:09 2011 MSG SIZE rcvd: 483
- 24 -
GOOGLE HACKING
Los buscadores son herramientas muy populares que todos usamos y que todos necesitamos y adems son muy potentes y absorben toda la informacin que encuentran en su camino que no est debidamente protegida. Google es hoy en da el buscador ms popular en uso, siendo sus tcnicas de recoleccin de datos y algoritmos de clasificacin muy avanzados, lo que proporciona resultados certeros en las bsquedas a poco que sepamos trabajar con sus mltiples funcionalidades. Google es, con toda probabilidad, el buscador ms tecnolgicamente avanzado que existe. Esto facilita que dispongamos de mucha informacin en la red. Pero tambin posibilita que podamos hallar informacin sensible que no ha sido protegida adecuadamente. Veamos en qu consiste esta tcnica de minado de datos con fines maliciosos, utilizando ejemplos y con algunos consejos de como prevenirlos.
Qu es el Google Hacking?
A esta altura te estars imaginando que descargas una super aplicacin oculta en algn link de Google por la cual sers capaz de obtener acceso a los servidores del mundo. Nada ms lejos de la realidad pero tampoco tan equivocado. La realidad es que aplicacin que utilizaremos para esta tcnica es el mismo buscador de Google. Para que comprendas mejor lo que quiero decirte, abre tu navegador favorito y escribe literalmente (respeta las comillas y los simbolos por favor):
"Microsoft (R) Windows * (TM) Version * DrWtsn32 Copyright (C)" ext:log
Por si no ha quedado claro la tcnica conocida como Google Hacking consiste en conocer como funciona el buscador para explotar su potencial a nuestro favor. Si las bsquedas las orientamos a ciertas palabras clave que nos ayuden a encontrar informacin sensible, puntos de entrada sensibles a posibles ataques, como por ejemplo:
"SquirrelMail version 1.4.4" inurl:src ext:php
o cualquier otro tipo de informacin que tuviera carcter de sensibilidad, estaremos ejecutando un Google hack.
- 25 -
Google Hacking es buscar en Google informacin sensible, generalmente con fines que seguramente no sea el que ests pensando ;-)
Mensajes de error
"Warning: mysql_query()" "invalid query"
Directorios sensibles
filetype:cfg ks intext:rootpw -sample -test -howto
- 26 -
Archivos vulnerables
intitle:"Directory Listing" "tree view"
Servidores vulnerables
intitle:"Mail Server CMailServer Webmail" "5.2"
Absolutamente todo lo que sea accesible desde un navegador terminar en las bases de datos de Google para que cualquiera lo encuentre.
Una vez que hayamos comprendido lo gigantesco que es Google, comprenderemos que podemos utilizarlo para hallar documentos inocuos, podemos emplearlo para obtener documentos con datos sensibles.
Esta no es una tcnica tonta y obsoleta. Hay gente que vive utilizandola y comercializando la informacin que extrae de ellas.
Si dispone de su propia pgina web, asegrese de comprender lo importante que es tener un archivo de robots.txt correctamente configurado. Tener una pgina web es algo ms que colocar fotos y documentos en la Red para que las vean sus amigos o sus familiares. Nuevamente les recuerdo en que todo lo que se coloca en servidores Web (la nube) es susceptible de ser indexado por los motoroes de las bases de datos de Google. Esto es aplicable para cualquier objeto accesible desde documentos Web: cmaras web, impresoras, etc.
- 27 -
Consejos finales
No deje de consultar los parmetros que definen el mecanismo de posicionamiento de resultados en Google. Aplique "posicionamiento inverso" a todo aquello que quiera mantener lejos de ojos ajenos. Puestos a aparecer, mejor aparecer en el puesto doscientos que en el quinto. No est de ms usar el buscador para aprender cmo funciona el Google Hacking y aplicar tcnicas de inversin aplicadas a su caso. Adems debera replantearse la exclusin de los robots.
- 28 -
Funcionamiento de Nmap
Es capaz de utilizar diferentes tcnicas de evasin de deteccin como escaneo sealth. Soporta escaneos sobre ciertos puertos especficos, entre rangos IP especficos, uso se paquetes Null, FIN, Xmas y ACK, adems SYN que es el paquete por defecto. Esto significa que se mandan cierto tipo de paquetes a cada puerto y estos respondern con alguna seal que permitir a scanner encontrar versiones y servicios.
Conceptos importantes
Que es un puerto? Un puerto es una zona en la que dos ordenadores (hosts) intercambian informacin Que es un servicio? Un servicio es el tipo de informacin que se intercambia con una utilidad determinada como ssh o telnet. Que es un Firewall? Un firewall acepta o no el trafico entrante o saliente de un ordenador. Que son paquetes SYN? As por encima, pueden ser paquetes que abren un intento de establecer una conexin TCP. Debemos tener en cuenta que para Nmap un puerto puede estar de tres maneras: open: el puerto es accesible y hay un demonio escuchando. closed: el puerto es accesible pero no hay un demonio escuchando. filtered: el puerto no es accesible, un firewall filtra el puerto.
- 29 -
Instalacion en Linux
En el caso de distribuciones basadas en Debian se instala via apt:
sudo apt-get install nmap
Si usas otra distro puedes buscarlo en los repositorios de tu distro y 100% seguro que lo encontrars. Y si usas algn otro sistema operativo entra a esta pagina http://nmap.org/download.html y lo descargas.
Es decir el comando nmap seguido de una ip o dominio. Este uso tn bsico solo nos devuelve que puertos estn abiertos tras un scan simple. Dependiendo de la seguridad de la ip que se escanee puede que nos bloquee el escaneo si lo hacemos de esa manera. Una forma mas discreta de hacerlo que no deja registros en el sistema es as:
nmap sS 192.168.1.1
Cabe resaltar que existen varios tipos de modificadores de scan lo mas importante es lograr identificar la combinacin mas apropiada, los modificadores que se pueden utilizar para realizar el scan son los siguientes: sT se intenta hacer un barrido de puertos por TCP la ventaja de esta tcnica es que no requiere usuarios privilegiados, opuesto a sS sU se intenta hacer un barrido de puertos por UDP, es til cuando se intentan descubrir puertos de nivel superior que pueden estar detrs de un firewall, lenta pero permite hacer auditorias mas exactas. sA se usan mensajes de ACK para lograr que sistema responda y as dterminar si el puerto esta abierto algunos Firewall no filtran estos Mensajes y por ello puede ser efectivo en algunos casos. sX puede pasar algunos Firewall con malas configuraciones y detectar servicios prestndose dentro de la red sN puede pasar algunos Firewall con malas configuraciones y detectar servicios prestndose dentro de la red sF puede pasar algunos Firewall con malas configuraciones y detectar servicios prestndose dentro de la red sP este modificador ayuda a identificar que sistemas estn arriba en la red (en funcionamiento) para luego poder hacer pruebas mas especificas, similar a Ping. sV intenta identificar los servicios por los puertos abiertos en el sistema esto permite evaluar cada servicio de forma individual para intentar ubicar vulnerabilidades en los mismos. sO con esta opcin se identifica que protocolos de nivel superior a capa tres (Red o Network) responden en el sistema, de esta manera es mas fcil saber las caractersticas de la red o el sistema que se intenta evaluar.
- 30 -
Adicionalmente a las opciones de scan se pueden especificar opciones que permiten explotar mas aun la herramienta, dentro de las opciones que mas frecuentemente se usan estn las de evitar el Ping o mostrar todos los resultados en pantalla al mximo detalle, veamos cuales son estas opciones: b Para determinar si la victima es vulnerable al bounce attack n no hace conversiones DNS para hacer el -sP mas rapido vv hacer la salida de la herramienta detallada en pantalla f habilita la fracmentacion de esta forma es mucho mas complejo para un un firewall u otro tipo de sistema lograr hacer el rastreo. oN redirige la salida a un archivo oX redirige la salida a un archivo XML --stylesheet con esta opcin se usa una hoja de estilo que hace mas fcil la lectura de la salida en XML P0 indica que no se debe hacer ping a los sistemas objetivo antes de iniciar el anlisis til para evitar el bloque en algunos Firewall p se usa para especificar puertos de anlisis o rango de puertos. T se usa para especificar la velocidad general del scan de esta forma se puede pasar inadvertido en algunos sistemas que detectan la velocidad de los paquetes entrantes. Veamos algunos ejemplos:
nmap sV P0 O vv o archivo.txt 192.168.1.1
El anterior comando ejecuta un barrido (scan) de puertos sobre la IP seleccionada, evita que se ejecute Ping sobre la maquina, adems de esto intenta detectar el sistema operativo, para cada puerto segn las cabeceras que se retornan se detecten los servicios ejecutndose y la informacin se dejara en el archivo.txt
nmap 192.168.1.0/24
Discovered open port 22/tcp on 67.208.113.135 Discovered open port 80/tcp on 67.208.113.135 Completed SYN Stealth Scan at 17:35, 28.99s elapsed (1000 total ports) Host geminis2.dotlinux.com.ar (67.208.113.135) is up (0.24s latency). Interesting ports on geminis2.dotlinux.com.ar (67.208.113.135): Not shown: 994 filtered ports PORT STATE SERVICE 20/tcp closed ftp-data 21/tcp open ftp 22/tcp open ssh 53/tcp open domain 80/tcp open http 667/tcp closed unknown Read data files from: /usr/share/nmap Nmap done: 1 IP address (1 host up) scanned in 29.59 seconds Raw packets sent: 3008 (132.328KB) | Rcvd: 22 (908B)
Otra opcin muy interesante es instalar zenmap que nos permitir utilizar nmap en modo grafico facilitando an ms su uso.
- 32 -
SYSTEM HACKING
La idea central del Hackeo de sistemas es el romper o adivinar passwords o claves para poder tener acceso a los sistemas, cuentas de e-mail, informacin confidencial, etc. Una vez se tiene acceso al sistema comprometido lo prximo es escalar privilegios, ejecutar aplicaciones, esconder archivos y cubrir las huellas para no poder ser detectado.
Qu es el NT LanManager Hash?
Los SO Windows 2000, XP y 2003
Los SO Windows 2000, XP y 2003 utilizan el algoritmo NT Lan Manager (NTLM) para asegurar, cifrar y guardar los passwords de usuario, incluso las ms recientes versiones de Windows, como vista y 7 utilizan NTLM por razones de compatibilidad pero este debe ser activado manualmente para cuentas locales a travs de la configuracin de lapliza de seguridad (Security Policy)y para Active Directory se activa aplicando la misma configuracin a los controladores de dominio (domain controller). Se considera como una buena prctica de seguridadinhabilitar el NTLM si este no se necesita, porque el NTLM es considerado dbil y obsoleto. Las nuevas versiones de Windows (Vista / 7 / Server 2008) utilizan NTLMv2 o el protocolo Kerberos.
- 33 -
El NTLM es considerado dbil porque dependiendo del password el hash puede ser bien fcil de romper. Ejemplo: Supongamos que su clave o password para acceder a su sistema Windows es123abc una vez presionado el botn Enter la clave se convierte a letras Maysculas: 123ABC como la clave es menor de14 caracteres a esta se le aaden 0 (ceros) para completar 14 caracteres: 123ABC00000000. Antes de que el password sea cifrado, los 14 caracteres son divididos por la mitad: 123ABC0 y 0000000. Entonces cada pedazo es cifrado individualmente y el resultado de cada uno es unido o concatenado: 123ABC0 = 7BB597FA94CD5C1D 0000000 = AAD3B435B51404EE
Entonces el hash sera = 7BB597FA94CD5C1DAAD3B435B51404EE Si la clave es de 7 caracteres o menos el resultado de la segunda mitad del hash siempre ser AAD3B435B51404EE.
passwords del trfico recibido por el SMB. 7. SMBrelay2: Es parecido al SMBrelay pero en vez de usar direcciones IP para capturar nombres de usuario y passwords utiliza nombres del NetBIOS. 8. L0phtCrack: Este programa captura paquetes del Server Message Block (SMB) en segmentos de una red local y captura sesiones individuales de login. Tambien posee herramientas para ataques de diccionario, fuerza-bruta e hibridos. 9. Samdump: Programa para ver el contenido de los archivos SAM. Abra el Command Prompt y entre samdump sam. Recuerde que debe ejecutar el programa y tener el archivo SAM en el mismo directorio donde se est ejecutando el Command Prompt.
Contramedidas
Nunca deje el password por defecto Nunca utilice passwords que se puedan encontrar en un diccionario Nunca utilice passwords relacionados a sus pasatiempo, nombre de mascotas, nombres de miembros de su familia, fechas de nacimiento, etc., etc Nunca utilice passwords relacionados a los nombre de host y dominios Se recomienda por los profesionales de seguridad informtica que los passwords se cambien cada 30 das. Nunca reutilice los ltimos 3 passwords. Monitoree los logs del Event Viewer (Windows) o el Auth (en linux). Los Administradores necesitan monitorear estos registros para reconocer intentos de intrusin al sistema.
- 36 -
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
- 37 -
5. Lo unico que debemos hacer, es editar el archivo shadow eliminando la password del usuario root. Para esto utilizaremos el editor vi o el que tengamos disponible. 6. Por ejemplo en este caso root:dsfDSDF!s:12581:0:99999:7::: la password es dsfDSDF!s asi que procederemos a eliminarla dejandola en blanco para que quede como el siguiente ejemplo: root::12581:0:99999:7::: 7. Una vez editado el archivo shadow lo grabamos, desmontamos el disco y reiniciamos el equipo.
Estos procedimientos son realmente muy sencillos, pero eso no significa que los sistemas Windows sean ms seguros que los sistemas Linux.
- 38 -
DENEGACION DE SERVICIO
Un ataque de denegacin de servicio, tambin llamado ataque DoS (de las siglas en ingls Denial of Service), es un ataque a un sistema de computadoras o red que causa que un servicio o recurso sea inaccesible por sus usuarios. Normalmente provoca la prdida de la conectividad de la red por el consumo del ancho de banda de la red de la vctima o sobrecarga de los recursos del sistema de la vctima.
Se genera mediante la saturacin de los puertos con flujo de informacin, haciendo que el servidor se sobrecargue y no pueda seguir prestando servicios, por eso se le denomina "denegacin", pues hace que el servidor no d abasto a la cantidad de solicitudes. Esta tcnica es usada para dejar fuera de servicio a los servidores objetivo.
- 39 -
Una ampliacin del ataque Dos es el llamado ataque distribuido de denegacin de servicio, tambin llamado ataque DDoS (de las siglas en ingls Distributed Denial of Service) el cual se lleva a cabo generando un gran flujo de informacin desde varios puntos de conexin. La forma ms comn de realizar un DDoS es a travs de una botnet, siendo esta tcnica el ciberataque ms usual y eficaz por su sencillez tecnolgica. En ocasiones, esta herramienta ha sido utilizada como un buen mtodo para comprobar la capacidad de trfico que un equipo puede soportar sin volverse inestable y afectar a los servicios que presta. Un administrador de redes puede as conocer la capacidad real de cada mquina.
Mtodos de ataque
Un ataque de "Denegacin de servicio" impide el uso legtimo de los usuarios al usar un servicio de red. El ataque se puede dar de muchas formas. Pero todas tienen algo en comn: utilizan el protocolo TCP/IP para conseguir su propsito. Un ataque DoS puede ser perpetrado de varias formas. Aunque bsicamente consisten en: Consumo de recursos, tales como ancho de banda, espacio de disco, o tiempo de procesador Alteracin de informacin de configuracin, tales como la informacin de rutas Alteracin de informacin de estado, tales como interrupcin de sesiones TCP (TCP reset) Interrupcin de componentes fsicos de red Obstruccin de medios de comunicacin entre usuarios de un servicio y la vctima, de manera que ya no puedan comunicarse adecuadamente.
2. Resetear Conexin: Al haber algn error o perdida de paquetes de envo se establece envo de Flags RST:
1-Cliente -------Reset-----> 2-servidor 4-Cliente <----Reset/ACK---- 3-Servidor 5-Cliente --------ACK------> 6-Servidor
La inundacin SYN enva un flujo de paquetes TCP/SYN (varias peticiones con Flags SYN en la cabecera), muchas veces con la direccin de origen falsificada. Cada uno de los paquetes recibidos es tratado por el destino como una peticin de conexin, causando que el servidor intente establecer una conexin al responder con un paquete TCP/SYN-ACK y esperando el paquete de respuesta TCP/ACK (Parte del proceso de establecimiento de conexin TCP de 3 vas). Sin embargo, debido a que la direccin de origen es falsa o la direccin IP real no ha solicitado la conexin, nunca llega la respuesta. Estos intentos de conexin consumen recursos en el servidor y copan el nmero de conexiones que se pueden establecer, reduciendo la disponibilidad del servidor para responder peticiones legtimas de conexin. SYN cookies provee un mecanismo de proteccin contra Inundacin SYN, eliminando la reserva de recursos en el host destino, para una conexin en momento de su gestin inicial.
SMURF
Existe una variante a ICMP Flood denominado considerablemente los efectos de un ataque ICMP. Ataque Smurf que amplifica
Existen tres partes en un Ataque Smurf: El atacante, el intermediario y la vctima (comprobaremos que el intermediario tambin puede ser vctima). En el ataque Smurf, el atacante dirige paquetes ICMP tipo "echo request" (ping) a una direccin IP de broadcast, usando como direccin IP origen, la direccin de la vctima
- 41 -
(Spoofing). Se espera que los equipos conectados respondan a la peticin, usando Echo reply, a la mquina origen (vctima). Se dice que el efecto es amplificado, debido a que la cantidad de respuestas obtenidas, corresponde a la cantidad de equipos en la red que puedan responder. Todas estas respuestas son dirigidas a la vctima intentando colapsar sus recursos de red. Como se dijo anteriormente, los intermediarios tambin sufren los mismos problemas que las propias vctimas.
- 42 -
IRCLOIC
El desarrollador NewEraCracker actualiz LOIC para su uso en la Operation Payback, arreglando algunos bugs y aadiendo algunas habilidades nuevas al programa.1 Desde la versin 1.1.1.3, LOIC incorpora la posibilidad de que el usuario delegue voluntariamente el control de la aplicacin LOIC al operador de un canal IRC, que puede controlar de esta manera un ataque coordinado empleando todos los clientes conectados a dicho canal. Esta caracterstica se denomina comnmente como inteligencia de enjambre (Hive Mind, en ingls) y permite la organizacin rpida de una botnet formada por voluntarios. La versin con control remoto por IRC se denomina habitualmente IRCLOIC.2 Esta actualizacin funciona en Windows XP y posteriores, necesitando Microsoft .NET Framework 3.5 Service Pack 1. Tambin funciona en sistemas Linux con los paquetes Mono o Wine.
- 43 -
En las ltimas versiones se ha aadido una opcin para iniciar el programa oculto como un servicio de Windows. En todas las versiones de LOIC es bastante fcil conocer la direccin IP del atacante si ste no est protegido por una red Peer-to-peer annimo.
LOIQ
LOIQ es una implementacin de la funcionalidades de LOIC empleando el lenguaje C++ y la librera Qt 4, lo cual permite compilarlo en cualquier plataforma que disponga de la librera Qt (Linux, BSD, Unix, Windows, Windows CE, Mac OS X, etc...)
JSLOIC
JSLOIC es una implementacin de algunas de las funcionalidades de LOIC realizadas en lenguaje JavaScript, lo cual permite ejecutarlo desde un navegador web sin necesidad de instalar ningn software en el ordenador. Esta implementacin realiza test limitados a peticiones HTTP, no permitiendo el envo de paquetes TCP y UDP, ni delegar el control para su uso en modo colectivo. Podrn descargar las versiones de LOIC desde los siguientes enlaces: http://sourceforge.net/projects/loic/ http://github.com/NewEraCracker/LOIC/downloads http://sourceforge.net/projects/loiq/
- 44 -
PREVINIENDO UN DoS
(D)DoS Deflate
(D)DoS Deflate es un script muy sencillo diseado para combatir el proceso de bloqueo de las direcciones IP de nuestros atacantes. Este script utiliza el comando netstat para crear una lista de las direcciones IP conectadas al servidor dependiendo de la cantidad de conexiones que tenga en un determinado momento. El comando es:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Fail2ban
Fail2Ban es un pequeo script programado en python que se encarga de observar los logs en busca de patrones sospechosos, y es capaz de tomar medidas para bloquear a los atacantes ya sea con iptables o lanzando un comando de nuestra eleccin. El directorio de configuracion de fail2ban es /etc/fail2ban/ all encontraremos 2 directorios: action.d y filter.d. En action.d, encontraremos las acciones que fail2ban realizar cuando alguno de nuestros filtros detecte alguna IP haciendo maldades. Estas acciones pasan por filtrado con iptables, envio de mails de aviso etc, mientras que en filter.d, tenemos todos los filtros que utilizaremos a modo de trampa para cazar a nuestros atacantes. En nuestro caso, vamos a configurar fail2ban en un servidor web, al que ultimamente se le ha detectado un alto numero de intentos de ataque de inyeccin, tanto SQL como XSS, y como mnimo pretendemos bloquear los accesos que hemos detectado en los logs. Para eso tendremos que editar el archivo jail.conf del directorio /etc/fail2ban/ en este archivo tendremos todas las trampas o jails y sus correspondientes acciones, acompaados de unos parametros por defecto, de entrada, es recomendable que agreguemos en la linea ignoreip nuestra ip local, o la de algun servidor con el que podamos conectar en caso de que por error nos bloqueemos nosotros mismos.
ignoreip = 127.0.0.1 <nuestra ip>
Una vez hecho esto, revisamos todas las entradas de este archivo, la primera entrada que encontramos es la de ssh, esta jail en nuestro caso es asi:
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com] logpath = /var/log/secure maxretry = 5 - 45 -
Tenemos por orden los siguientes campos: Si est habilitado El nombre La accion a ejecutar (una por linea), en este caso filtramos con el action iptables el puerto ssh y mandamos un mail con el action sendmail-whois a fail2ban@mail.com Indicamos el archivo de logs que leera el filtro /var/log/secure es donde logea SSH. Y le indicamos el numero de intentos con el que ejecutamos la accion (en este caso 5) Nosotros no tenemos acceso SSH al exterior en nuestras mquinas de modo que vamos a dejar enabled=false, y procederemos a configurar las siguientes jails que si que son interesantes para el servicio web:
[apache-tcpwrapper] enabled = true filter = apache-auth action = hostsdeny logpath = /var/www/vhosts/*/statistics/logs/error_log maxretry = 6 [apache-badbots] enabled = true filter = apache-badbots action = iptables-multiport[name=BadBots, port="http,https"] sendmail-buffered[name=BadBots, lines=5, dest=you@mail.com] logpath = /var/www/vhosts/*/statistics/logs/access_log bantime = 172800 maxretry = 1 # Para prevenir ataques de inyeccion de codigo [php-url-fopen] enabled = true port = http,https filter = php-url-fopen logpath = /var/www/vhosts/*/statistics/logs/access_log maxretry = 1 # Evitamos ataques de ips que accedan a urls que contengan passthru o system o similares [apache-hacks] enabled = true port = http,https filter = apache-hacks action = iptables-multiport[name=AtaqueApache, port="http,https"] sendmail-buffered[name=AtaqueApache, lines=5, dest=you@mail.com] logpath = /var/www/vhosts/*/statistics/logs/access_log maxretry = 3
Lo realmente importante aqui, es cambiar las lineas logpath, ya que nuestro servidor es un plesk la ruta de los logs es /var/www/vhosts/*/statistics/logs/access_log o /var/www/vhosts/*/statistics/logs/error_log el resto, son cambios en el mail de destino al que mandaremos el mail, y los nombres de los filtros a aplicar, nosotros aplicamos estos: apache-tcpwrapper: Bloquea con el archivo /etc/hosts.deny los hosts que se
- 46 -
intentan conectar a dominios protegidos con contrasea (estos fallos de autenticacin aparecen en el error_log) apache-badbots : Bloquea por iptables los hosts que se conectan haciendo uso de un User Agent sospechoso, y nos envia un mail para avisarnos php-url-fopen : Bloqueamos los hosts, que intentan una inyeccion de cdigo del tipo: GET /index.php?n=http://www.dominio.com/archivo.htm apache-hacks : Bloquea los hosts que acceden a urls sospechosas, haciendo un SCAN o directamente acceden a urls intentando inyectar llamadas al sistema desde php (system, passthru) esta regla se va rellenando con las expresiones que vamos encontrando en los logs, al final del post, adjuntamos el contenido del filtro en nuestro caso.
En el ultimo caso, hemos creado un archivo apache-hacks.conf en el directorio filters.d, para empezar podemos agregar entradas como estas:
failregex = ^<HOST> -.*(GET|POST).*\?.*passthru.* HTTP\/.*$ ^<HOST> -.*(GET|POST).*\?.*system.* HTTP\/.*$
Con esta serie de utilidades podremos evitar algunos de los intentos de ataque ms comunes, pero no podemos ni por un momento pensar que con solo aplicarlas estaremos a salvo.
- 47 -
INGENIERIA SOCIAL
La ingeniera social es la prctica de obtener informacin confidencial a travs de la manipulacin de los usuarios. Es una tcnica que pueden usar ciertas personas, tales como investigadores privados, criminales, o crackers, para obtener informacin, acceso o privilegios en sistemas que les permitan realizar algn acto que perjudique o exponga a la persona u organismo comprometido. El principio que sustenta la ingeniera social es el que en cualquier sistema "los usuarios son el eslabn ms dbil de la seguridad de los sistemas". En la prctica, un ingeniero social usar comnmente el telfono o internet para engaar a la gente, fingiendo ser, por ejemplo, un empleado de algn banco o alguna otra empresa, un compaero de trabajo, un tcnico o un cliente. Va sitios web o por medio de correos electrnicos se usa, adicionalmente, el envo de solicitudes de renovacin de permisos de acceso a pginas web o memos falsos que solicitan respuestas e incluso las famosas "cadenas", llevando as a revelar informacin sensible, o a violar las polticas de seguridad tpicas. Con este mtodo, los ingenieros sociales aprovechan la tendencia natural de la gente a reaccionar de manera predecible en ciertas situaciones, por ejemplo proporcionando detalles financieros a un aparente funcionario de un banco, en lugar de tener que encontrar agujeros de seguridad en los sistemas informticos.
Quiz el ataque ms simple pero muy efectivo sea engaar a un usuario llevndolo a pensar que un administrador del sistema esta solicitandole una contrasea para varios propsitos legtimos.
Los usuarios de sistemas de Internet frecuentemente reciben mensajes que solicitan contraseas o informacin de tarjeta de crdito, con el motivo de "crear una cuenta", "reactivar una configuracin", u otra operacin; a este tipo de ataques se los llama phishing (pesca). Los usuarios de estos sistemas deberan ser advertidos temprana y frecuentemente para que no divulguen contraseas u otra informacin sensible a personas que dicen ser administradores. En realidad, los administradores de sistemas informticos raramente (o nunca) necesitan saber la contrasea de los usuarios para llevar a cabo sus tareas. Sin embargo incluso este tipo de ataque podra no ser necesario en una encuesta realizada por la empresa Boixnet, el 90% de los empleados de oficina de la estacin Waterloo de Londres revelaron sus contraseas a cambio de un bolgrafo barato. Otro ejemplo contemporneo de un ataque de ingeniera social es el uso de archivos adjuntos en e-mails, ofreciendo, por ejemplo, fotos "ntimas" de alguna persona famosa o algn programa "gratis" (a menudo aparentemente provenientes de alguna persona conocida) pero que ejecutan cdigo malicioso (por ejemplo, usar la mquina de la vctima para enviar cantidades masivas de spam). Ahora, despus de que los primeros e-mails
- 48 -
maliciosos llevaran a los proveedores de software a deshabilitar la ejecucin automtica de archivos adjuntos, los usuarios deben activar esos archivos de forma explcita para que ocurra una accin maliciosa. Muchos usuarios, sin embargo, abren casi ciegamente cualquier archivo adjunto recibido, concretando de esta forma el ataque.
La ingeniera social tambin se aplica al acto de manipulacin cara a cara para obtener acceso a los sistemas. Otro ejemplo es el conocimiento sobre la vctima, a travs de la introduccin de contraseas habituales, lgicas tpicas o conociendo su pasado y presente; respondiendo a la pregunta: Qu contrasea introducira yo si fuese la vctima?
La principal defensa contra la ingeniera social es capacitar y entrenar a los usuarios de los sistemas, en la implementacin de polticas de seguridad y asegurarse de que estas sean seguidas en todo momento.
Uno de los ingenieros sociales ms famosos de los ltimos tiempos es Kevin Mitnick a quien pueden seguir en su cuenta de Twitter https://twitter.com/#!/kevinmitnick. Segn su opinin, la ingeniera social se basa en estos cuatro principios: 1. Todos queremos ayudar. 2. El primer movimiento es siempre de confianza hacia el otro. 3. No nos gusta decir No. 4. A todos nos gusta que nos alaben.
Phishing
El trmino phishing proviene de la palabra inglesa "fishing" (pesca), haciendo alusin al intento de hacer que los usuarios "piquen en el anzuelo". A quien lo practica se le llama phisher. Tambin se dice que el trmino "phishing" es la contraccin de "password harvesting fishing" (cosecha y pesca de contraseas), aunque esto probablemente es un acrnimo retroactivo, dado que la escritura 'ph es comnmente utilizada por hackers para sustituir la f, como raz de la antigua forma de hacking telefnico conocida como phreaking. La primera mencin del trmino phishing data de enero de 1996. Se dio en el grupo de noticias de hackers alt.2600, aunque es posible que el trmino ya hubiera aparecido anteriormente en la edicin impresa del boletn de noticias hacker "2600 Magazine". El trmino phishing fue adoptado por quienes intentaban "pescar" cuentas de miembros de AOL.
Phishing en AOL
Quienes comenzaron a hacer phishing en AOL durante los aos 1990 solan obtener cuentas para usar los servicios de esa compaa a travs de nmeros de tarjetas de crdito vlidos, generados utilizando algoritmos para tal efecto. Estas cuentas de acceso a AOL podan durar semanas e incluso meses. En 1995 AOL tom medidas para prevenir este uso
- 49 -
fraudulento de sus servicios, de modo que los crackers recurrieron al phishing para obtener cuentas legtimas en AOL. El phishing en AOL estaba estrechamente relacionado con la comunidad de warez que intercambiaba software falsificado. Un cracker se haca pasar como un empleado de AOL y enviaba un mensaje instantneo a una vctima potencial. Para poder engaar a la vctima de modo que diera informacin confidencial, el mensaje poda contener textos como "verificando cuenta" o "confirmando informacin de factura". Una vez el usuario enviaba su contrasea, el atacante poda tener acceso a la cuenta de la vctima y utilizarla para varios propsitos criminales, incluyendo el spam. Tanto el phishing como el warezing en AOL requeran generalmente el uso de programas escritos por crackers, como el AOLHell. En 1997 AOL reforz su poltica respecto al phishing y los warez fueron terminantemente expulsados de los servidores de AOL. Durante ese tiempo el phishing era tan frecuente en AOL que decidieron aadir en su sistema de mensajera instantnea, una lnea de texto que indicaba: "no one working at AOL will ask for your password or billing information" ("nadie que trabaje en AOL le pedir a usted su contrasea o informacin de facturacin"). Simultneamente AOL desarroll un sistema que desactivaba de forma automtica una cuenta involucrada en phishing, normalmente antes de que la vctima pudiera responder. Los phishers se trasladaron de forma temporal al sistema de mensajera instantneo de AOL (AIM), debido a que no podan ser expulsados del servidor de AIM. El cierre obligado de la escena de warez en AOL caus que muchos phishers dejaran el servicio, y en consecuencia la prctica.9
- 50 -
En trminos generales, esta variante hacia objetivos especficos en el phishing se ha denominado spear phishing (literalmente pesca con arpn). Los sitios de Internet con fines sociales tambin se han convertido en objetivos para los phishers, dado que mucha de la informacin provista en estos sitios puede ser utilizada en el robo de identidad. Algunos experimentos han otorgado una tasa de xito de un 90% en ataques phishing en redes sociales. A finales de 2006 un gusano informtico se apropi de algunas pginas del sitio web MySpace logrando redireccionar los enlaces de modo que apuntaran a una pgina web diseada para robar informacin de ingreso de los usuarios.
Tcnicas de phishing
La mayora de los mtodos de phishing utilizan alguna forma tcnica de engao en el diseo para mostrar que un enlace en un correo electrnico parezca una copia de la organizacin por la cual se hace pasar el impostor. URLs mal escritas o el uso de subdominios son trucos comnmente usados por phishers, como el ejemplo en esta URL, http://www.nombredetubanco.com/ejemplo.
Otro ejemplo para disfrazar enlaces es el de utilizar direcciones que contengan el carcter arroba: @, para posteriormente preguntar el nombre de usuario y contrasea (contrario a los estndares).
Por ejemplo, el enlace http://www.google.com@members.tripod.com/ puede engaar a un observador casual y hacerlo creer que el enlace va a abrir en la pgina de www.google.com, cuando realmente el enlace enva al navegador a la pgina de members.tripod.com (y al intentar entrar con el nombre de usuario de www.google.com, si
- 51 -
no existe tal usuario, la pgina abrir normalmente). Este mtodo ha sido erradicado desde entonces en los navegadores de Mozilla e Internet Explorer. Otros intentos de phishing utilizan comandos en JavaScripts para alterar la barra de direcciones. Esto se hace poniendo una imagen de la URL de la entidad legtima sobre la barra de direcciones, o cerrando la barra de direcciones original y abriendo una nueva que contiene la URL ilegtima. En otro mtodo popular de phishing, el atacante utiliza contra la vctima el propio cdigo de programa del banco o servicio por el cual se hace pasar. Este tipo de ataque resulta particularmente problemtico, ya que dirige al usuario a iniciar sesin en la propia pgina del banco o servicio, donde la URL y los certificados de seguridad parecen correctos. En este mtodo de ataque (conocido como Cross Site Scripting) los usuarios reciben un mensaje diciendo que tienen que "verificar" sus cuentas, seguido por un enlace que parece la pgina web autntica; en realidad, el enlace est modificado para realizar este ataque, adems es muy difcil de detectar si no se tienen los conocimientos necesarios. Otro problema con las URL es el relacionado con el manejo de nombres de dominios internacionalizados (IDN) en los navegadores, puesto que puede ser que direcciones que resulten idnticas a la vista puedan conducir a diferentes sitios (por ejemplo dominio.com se ve similar a dmini.com, aunque en el segundo las letras "o" hayan sido reemplazadas por la correspondiente letra griega micron, ""). Al usar esta tcnica es posible dirigir a los usuarios a pginas web con malas intenciones. A pesar de la publicidad que se ha dado acerca de este defecto, conocido como IDN spoofing o ataques homgrafos, ningn ataque conocido de phishing lo ha utilizado.
por la justicia previa denuncia de los bancos. Estas denuncias se suelen resolver con la imposicin de devolver todo el dinero sustrado a la vctima, obviando que este nicamente recibi una comisin.
- 53 -
los usuarios de los phishers, ya que reducen el nmero de correos electrnicos relacionados con el phishing recibidos por el usuario. Muchas organizaciones han introducido la caracterstica denominada pregunta secreta, en la que se pregunta informacin que slo debe ser conocida por el usuario y la organizacin. En los Estados Unidos, el senador Patrick Leahy introdujo el Acta Anti-Phishing de 2005 el 1 de marzo de 2005. Esta ley federal de anti-phishing estableca que aquellos criminales que crearan pginas web falsas o enviaran spam a cuentas de e-mail con la intencin de estafar a los usuarios podran recibir una multa de hasta $250,000 USD y penas de crcel por un trmino de hasta cinco aos.
La Estafa nigeriana
La estafa nigeriana, timo nigeriano o timo 419, es un fraude, un engao. Se lleva a cabo principalmente por correo electrnico no solicitado. Adquiere su nombre del nmero de artculo del cdigo penal de Nigeria que viola, ya que buena parte de estas estafas provienen de ese pas. Esta estafa consiste en ilusionar a la vctima con una fortuna inexistente y persuadirla para que pague una suma de dinero por adelantado, como condicin para acceder a la supuesta fortuna. Las sumas solicitadas son bastante elevadas, pero insignificantes comparadas con la fortuna que las vctimas esperan recibir.
Variantes
Existen numerosas variantes de la estafa. Las ms comunes son una herencia vacante que la vctima adquirir, una cuenta bancaria abandonada, una lotera que la vctima ha ganado, un contrato de obra pblica o simplemente una gran fortuna que alguien desea donar generosamente antes de morir. Algunos sostienen que la excusa de la lotera es la ms comn de todas. Por ejemplo, la vctima podra recibir un mensaje del tipo "Soy una persona muy rica que reside en Nigeria y necesito trasladar una suma importante al extranjero con discrecin. Sera posible utilizar su cuenta bancaria?". Las sumas normalmente suelen estar cerca de decenas de millones de dlares. A la vctima se le promete un determinado porcentaje, como el 10 o el 20 por ciento. El trato propuesto se suele presentar como un delito de guante blanco inocuo con el fin de disuadir a las vctimas -los supuestos inversionistas- de llamar a las autoridades. Los timadores enviarn algunos documentos con sellos y firmas con aspecto oficial, normalmente archivos grficos adjuntados a mensajes de correo electrnico, a quien acepte la oferta. A medida que prosiga el intercambio, se pide a la vctima que enve dinero, con la excusa de supuestos honorarios, gastos, sobornos, impuestos o comisiones. Se va creando una sucesin de excusas de todo tipo, pero siempre se mantiene la promesa del traspaso de una cantidad millonaria. A menudo se ejerce presin psicolgica, por ejemplo alegando que la parte nigeriana tendra que vender todas sus pertenencias y pedir un prstamo para poder
- 54 -
pagar algunos gastos y sobornos. A veces, se invita a la vctima a viajar a determinados pases africanos, entre ellos Nigeria y Sudfrica. Esto es especialmente peligroso, porque en ocasiones el supuesto inversor puede acabar secuestrado o incluso asesinado por el timador.
En cualquier caso, la transferencia nunca llega, pues las millonarias sumas de dinero jams han existido.
Las operaciones estn organizadas con gran profesionalidad en pases como Nigeria, Sierra Leona, Costa de Marfil, Ghana, Togo, Benn y Sudfrica. Cuentan con oficinas, nmeros de fax, telfonos celulares y a veces con sitios fraudulentos en internet. ltimamente, gran cantidad de estafadores provenientes del frica Occidental se han establecido en diversas ciudades europeas, especialmente msterdam, Londres y Madrid, etc, como tambin en Dubi. A menudo se persuade a las vctimas a viajar all para cobrar sus millones.
Animales regalados
Se anuncian en pginas de venta y regalo de animales. Normalmente ofrecen alguna raza de animal especialmente valorada como por ejemplo "Regalo Yorkshire". Son anuncios mal redactados, con un castellano absolutamente deficiente que seguramente proviene de un traductor automtico de nuestro idioma. Cuentan que tienen que mudarse y necesitan regalar sus perritos o cualquier otro animal. Cuando algn interesado contesta que acepta, dicen que hay que enviarles el dinero para que puedan enviar por avin desde all el animal. Suelen mandar informacin falsa hacindose pasar por el aeropuerto para "informar" de cmo envan los cachorros y a qu se deben los gastos. Si se llega ms adelante y se paga esa cantidad (que suele ser pequea para que la gente se lo plantee), mandan mensajes de otros aeropuertos a los que el cachorro supuestamente ha sido enviado por error, solicitando un nuevo envo de dinero para poder completar la supuesta entrega.
- 55 -
El timo de la lotera
El mensaje anuncia al destinatario que ha obtenido un premio de la lotera, aun cuando no haya participado en sorteo alguno. La mecnica luego del mensaje es similar al caso anterior: tras sucesivos contactos se solicita un desembolso para cubrir los gastos ocasionados por algn trmite. La gran difusin de este fenmeno en Espaa ha provocado que el Organismo Nacional de Loteras y Apuestas del Estado haya publicado un aviso al respecto en su pgina web.
El To de Amrica
Los supuestos albaceas de un desconocido y adinerado pariente anuncian su fallecimiento y notifican al destinatario su inclusin entre los beneficiarios del testamento. En este caso a menudo se utilizan tcnicas de ingeniera social, por ejemplo haciendo coincidir el apellido del difunto con el del destinatario. En ocasiones se sugiere con ambigedad que el destinatario se haga pasar por un pariente del difunto, para evitar perder la herencia, que ser repartida entre el abogado/albacea y la vctima. Una variante de esta estafa es la "herencia en vida", en que alguien supuestamente aquejado de una enfermedad terminal, sin familia, contacta a la vctima con el fin de darle su dinero para que realice obras de caridad, ayudando a los pobres o desamparados. Como en los otros casos, en algn momento los timadores solicitarn a la vctima que pague algn tipo de gasto.
salga libre. Sin embargo, una vez entregado el dinero surgen complicaciones que necesitan de ms dinero, hasta que la vctima ya no puede o quiere dar ms. En ese momento se acaba el timo y el confidente desaparece.
La compensacin
El mensaje informa a la vctima de que el Estado nigeriano le compensar por haber sido vctima de la "Estafa Nigeriana", aunque la potencial vctima no lo haya sido. Las sumas ofrecidas van desde US$850.000 a US$1.000.000. La vctima debe contactar a un funcionario, quien le pedir el depsito de una suma de alrededor de US $1.000 para asuntos burocrticos de la cobranza de la compensacin.
El Nuevo Amor
Es una de las ms comunes. Consiste en que una supuesta mujer, generalmente nativa de Sudn o Nigeria , enva a un correo electrnico una solicitud de amistad y fotografas personales. Los nombres ms usados del emisor son: Edith Kassala o Aline.
- 57 -
HIJACKING
El termino hijacking significa secuestro en ingls y en el mbito informtico hace referencia a toda tcnica ilegal que lleve consigo el aduearse o robar algo (generalmente informacin) por parte de un atacante. Es por tanto un concepto muy abierto y que puede aplicarse a varios mbitos, de esta manera podemos encontramos con el secuestro de conexiones de red, sesiones de terminal, servicios, modems y un largo etctera en cuanto a servicios informticos se refiere.
- 58 -
SESSION HIJACKING
Cuando usted se conecta a su cuenta bancaria en lnea con su nombre de usuario, password y dems, se crea una sesin entre su computadora y los servidores del banco con el tiempo o duracin de la conexin (por ejemplo, 5 minutos) utilizando una cookie que permite mantener una sesin con un nmero de identificacin propio, informacin del usuario, preferencias, hbitos, etc.
Pero el problema con las sesiones es que se pueden secuestrar. Por eso es que le definen un tiempo, por ejemplo 5 minutos para que al completarse los 5 minutos la conexin se cierra automticamente para que usted tenga que ingresar nuevamente (por motivos de seguridad) su nombre de usuario y password y le sale un mensaje dicindole que su sesin a expirado. Seguramente ya le habr sucedido en varias ocasiones. Si una sesin es secuestrada y esa sesin dura mucho tiempo , mucho ms tiempo tendra el atacante para hacerse pasar por usted.
Las sesiones de los sistemas deben estar limitadas a un periodo de 3 a 5 minutos de inactividad. Transcurrido este tiempo, la sesin debe expirar.
Esto no lo digo para que se asuste y deje de usar su cuenta online. Los bancos hoy en da tienen altas medidas de seguridad en internet, de hecho son los sitios ms difciles o casi imposibles de vulnerar y si lo atrapan puede ser condenado hasta con 30 aos de prisin, dependiendo del pais en el que se haya cometido el ilcito.
- 59 -
Qu es el secuestro de sesiones?
El secuestro de las sesiones es tomar el control sobre una sesin TCP que est siendo intercambiada entre 2 computadoras (cliente/servidor). Esto se lleva a cabo mediante la implementacin de un sniffer como Wireshark para lograr un ataque man-in-the-middle y de esa forma capturar la informacin de la sesin.
El atacante necesita que el usuario legtimo haga una conexin y una autentificacin (login) para poder tomar el control de la sesin existente.
- 60 -
- 61 -
sobre
las
vulnerabilidades.
(http://www.syhunt.com/?
Paros: Una herramienta gratuita multiplataforma realizada en Java, la cual tiene funciones de escner y proxy y tambin permite incorporar plugins. Al igual que las dems, est preparada para realizar detecciones de inyecciones SQL, Cross-Site Scripting, y vulnerabilidades especficas de servidores. (http://parosproxy.org/) OWASP WebScarab Project: Otro proxy que permite analizar trfico e interceptarlo para detectar inyecciones SQL y dems. De cdigo abierto y escrito en Java. (http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project)
Si queremos conocer an ms opciones en analizadores de vulnerabilidades para aplicaciones web podemos recurrir a la lista de escners de vulnerabilidades de aplicaciones web del NIST ingresando a http://samate.nist.gov/index.php/Web_Application_Vulnerability_Scanners
- 62 -
W3 AF
w3af se trata de un framework que permite realizar diferentes tipos de pruebas contra aplicaciones web para determinar que vulnerabilidades puede tener dicha aplicacin detallando niveles de criticidad en funcin al impacto que puedan llegar a tener estas sobre la infraestructura web o sobre sus clientes, en algunos casos se ha dicho que este framework es El metasploit para aplicaciones web dado que se trata de un framework bastante completo y con unas capacidades que difcilmente se encuentran en otras herramientas de la misma ndole (open source o comerciales). Por otro lado, se trata de un framework libre, licenciado bajo la GNU/GPLv2 lo que quiere decir que su cdigo se encuentra disponible al publico, ademas de que se puede usar, modificar y redistribuir si es lo que le interesa al usuario.
Luego de haber descargado la ltima versin de w3af ser necesario tener algunas dependencias instaladas para conseguir que el framework pueda ser utilizado correctamente, estas dependencias son:
apt-get install python nlkt python-nltk python-lxml python-svn pythonfpconst python-pygooglechart python-soappy python-openssl python-scapy python-lxml python-svn
La mayora de estas libreras se encuentran incluidas en las ultimas versiones de Debian y/o Ubuntu, sin embargo, si la instalacin de alguna, da algn tipo de fallo o deben instalarse manualmente, el framework incluye todas estas libreras necesarias para ser instaladas manualmente desde el directorio extlib/
- 63 -
Ejecutando w3af
Para probar que w3af se encuentra correctamente configurado, basta con dirigirse al directorio donde se ha descargado el Framework y ejecutar el comando
# ./w3af_console
Si se encuentra el entorno con todas las libreras correctamente configuradas, con esto se abrir la consola de w3af lista para recibir comandos, por otro lado para ejecutar la interfaz GTK, desde el mismo directorio ejecutar:
# ./w3af_gui
Funcionamiento de w3af
La instalacin de w3af tiene ciertos requerimientos que deben ser cumplidos antes de poder utilizar este framework, sin embargo una vez se configura el entorno, utilizar esta herramienta es muy provechoso para realizar diferentes tipos de tareas relacionadas con penetracin en aplicaciones web. Para entender el funcionamiento de w3af es necesario en primer lugar, entender como se encuentra subdividido en 3 tipos de Plugins que son: Discovery (Descubrimiento), Audit (Auditoria) y Attack (Ataque). Los 3 interactuan con el fin de detectar vulnerabilidades sobre un objetivo dado y finalmente atacar dicha vulnerabilidad con el fin de inyectar un payload u obtener acceso no autorizado a los recursos del objetivo. En la consola de w3af tenemos los siguientes comandos:
w3af>>> help |-------------------------------------------------------------------------| | start | Start the scan. | | plugins | Enable and configure plugins. | | exploit | Exploit the vulnerability. | | profiles | List and use scan profiles. | | cleanup | Cleanup before starting a new scan. | |-------------------------------------------------------------------------| | http-settings | Configure the HTTP settings of the framework. | | misc-settings | Configure w3af misc settings. | | target | Configure the target URL. | |-------------------------------------------------------------------------| | back | Go to the previous menu. | | exit | Exit w3af. | | assert | Check assertion. | |-------------------------------------------------------------------------| | help | Display help. Issuing: help [command] , prints more | | | specific help about "command" | | version | Show w3af version information. | | keys | Display key shortcuts. | |-------------------------------------------------------------------------| w3af>>>
Las opciones tienen su descripcin justo al frente, las mas interesantes en primera instancia son target, http-settings y plugins, con el fin de establecer el objetivo, definir la configuracin HTTP y finalmente habilitar o desactivar plugins. Por otro lado tambin se cuenta con el comando back, que permite cambiar de contexto de ejecucin, si por ejemplo estamos ubicados en la configuracin de HTTP u otros podemos volver al contexto anterior. Probablemente una de las razones por las que w3af es comparado con MetaSploit
- 64 -
Framework es por la forma en la que se utilizan los plugins y dems opciones disponibles, ya que todas se encuentran en un nico contexto con sus propias opciones de configuracin, una caracterstica que resulta bastante familiar en MetaSploit, ya que en MetaSploit, navegamos a travs de exploits, payloads, auxiliaries, etc. y cada uno tiene su propio contexto y sus propias opciones de configuracin.
Objetivos de w3af
En primera instancia, es necesario definir donde se encuentra localizada la aplicacin web objetivo, para esto, es necesario seguir los siguientes pasos: 1. Establecer el contexto de objetivos en w3af:
w3af>>> target w3af/config:target>>> help |-------------------------------------------------------------------------| | view | List the available options and their values. | | set | Set a parameter value. | |-------------------------------------------------------------------------| | back | Go to the previous menu. | | exit | Exit w3af. | | assert | Check assertion. | |-------------------------------------------------------------------------| w3af/config:target>>> w3af/config:target>>> view |-------------------------------------------------------------------------| | Setting | Value | Description | |-------------------------------------------------------------------------| | targetOS | unknown | Target operating system | | | | (unknown/unix/windows) | | targetFramework | unknown | Target programming framework | | | | (unknown/php/asp/java/jsp/cfm/ruby/perl) | | target | | A comma separated list of URLs | |-------------------------------------------------------------------------| w3af/config:target>>>
3. Opcionalmente, establecer la plataforma del objetivo y el lenguaje en el que esta escrita la aplicacin web:
w3af>>> target set targetOS windows w3af>>> target set targetFramework jsp
Como puede apreciarse, en los comandos anteriores no ha sido necesario desplazarse hasta el contexto de target para establecer una propiedad, sin embargo a lo largo de los siguientes pasos siempre se navegar hasta el contexto correspondiente con el fin de aclarar conceptos.
Configuraciones de w3af
Las opciones generales de configuracin de w3af, se dividen en dos categoras, a saber, parmetros de configuracin del protocolo HTTP y parmetros de configuracin de uso
- 65 -
HTTP Settings
Para configurar adecuadamente estas propiedades es necesario navegar a la opcin correspondiente y conocer las opciones de configuracin HTTP disponibles, con esto en mente, se procede a indicar los pasos para editar estas propiedades. 1. Establecer el contexto de Configuracin de protocolo HTTP.
w3af>>> http-settings w3af/config:http-settings>>>
- 66 -
| basicAuthPass | | Set the basic authentication password for HTTP requests | | basicAuthDomain | | Set the basic authentication domain for HTTP requests | |----------------------------------------------------------------------------------------------------------| w3af/config:http-settings>>>
Evidentemente las opciones de configuracin dependen directamente de la informacin que tengamos del objetivo, con el fin de establecer opciones personalizadas que se adapten al escaneo que se pretende realizar.
Misc Settings
Se trata de parmetros de configuracin globales para determinar el funcionamiento del Framework, en especial con aquellas caractersticas del Framework que estn relacionadas con la integracin de herramientas externas, para configurar estas caractersticas se siguen los siguientes pasos: 1. Establecer el contexto de parmetros globales del Framework.
w3af>>> misc-settings w3af/config:misc-settings>>>
- 67 -
---| | fuzzFormComboValues | tmb | Indicates what HTML form combo values w3af plugins will use: all, tb, | | | | tmb, t, b | | fuzzFCExt | txt | Indicates the extension to use when fuzzing file content | | fuzzableHeaders | | A list with all fuzzable header names | | fuzzCookie | False | Indicates if w3af plugins will use cookies as a fuzzable parameter | | fuzzFileContent | True | Indicates if w3af plugins will send the fuzzed payload to the file | | | | forms | | fuzzFileName | False | Indicates if w3af plugins will send fuzzed filenames in order to find | | | | vulnerabilities | |-----------------------------------------------------------------------------------------------------------|
Plugins w3af
Los plugins en w3af son la base del framework, ya que separa de forma lgica las 3 categoras de acciones llevadas a cabo, que son Descubrimiento, Auditoria y Explotacin o Ataque, cada uno de los plugins disponibles en w3af corresponden a una de las 3 categoras anteriormente mencionadas, y cada uno de estos a su vez, tienen subplugins que pueden ser activados o desactivados dependiendo de las necesidades de la ejecucin del escaneo/ataque. En este punto, los plugins que se encuentran en la jerarqua mas alta en w3af se pueden listar de la siguiente forma:
w3af>>> plugins w3af/plugins>>> help |-----------------------------------------------------------------------------------------------------------| | list | List available plugins. | |-----------------------------------------------------------------------------------------------------------| | back | Go to the previous menu. | | exit | Exit w3af. | | assert | Check assertion. | |-----------------------------------------------------------------------------------------------------------| | discovery | View, configure and enable discovery plugins | | bruteforce | View, configure and enable bruteforce plugins | | evasion | View, configure and enable evasion plugins | | audit | View, configure and enable audit plugins | | grep | View, configure and enable grep plugins | | output | View, configure and enable output plugins | | mangle | View, configure and enable mangle plugins | |-----------------------------------------------------------------------------------------------------------| w3af/plugins>>>
- 68 -
Los plugins anteriores corresponden a los plugins principales contenidos en w3af, cada uno de estos puede ser configurado para activar o desactivar determinados sub-plugins que se encuentran incluidos en el plugin principal, de esta forma, se crea una estructura jerrquica de plugins que pueden ser activados y configurados de distintos modos. La arquitectura y el flujo de informacin entre los plugins disponibles en w3af es el siguiente:
El funcionamiento de estos plugins se ejecuta en el siguiente orden: 1. Se ejecutan los plugins de Discovery habilitados para intentar descubrir peticiones fuzzables, esas son potenciales vulnerabilidades que pueden ser tomadas en cuenta luego por los plugins de Auditoria. Todos los plugins de Descubrimiento se ejecutan en ciclo constante donde cada salida de uno de ellos es enviada al siguiente, de esta forma, el procesamiento no termina hasta que todos los plugins terminan, por este motivo, en ocasiones un escaneo puede llevar horas, en especial cuando se habilitan todos. Por otro lado algunos plugins tambin intentan recolectar informacin sobre el objetivo, como por ejemplo tipo de servidor, fingerprint del servicio httpd, mtodos HTTP, deteccin de load balancer en el objetivo, etc. 2. Posteriormente se ejecutan los plugins de auditoria que toman como entrada, la salida de la ejecucin de los plugins de descubrimiento, el objetivo de los plugins de auditoria es recopilar la mayor cantidad de vulnerabilidades sobre el objetivo y posteriormente almacenarlas en una zona conocida como objetos vulnerables que posteriormente pueden ser tomados como insumo para los plugins de exploits que intentaran aprovecharlas. 3. Finalmente, se encuentran los plugins de ataque que se encargan de leer la zona de Conocimiento Base y obtener los objetos vulnerables almacenados por los plugins de auditoria, estos plugins intentan aprovechar dichas vulnerabilidades intentando inyectar un payload en el objetivo. 4. Los pasos anteriores son el escenario tpico de un escaneo con w3af, sin embargo, estos tienen el apoyo de otros plugins que facilitan determinadas funciones que son necesarias, en esta categora de Plugins se encuentran: 1. Output: Especifica el formato de salida de los mensajes que produce la ejecucin de cada plugin. 2. Mangle: Intentan modificar las peticiones y respuestas por medio de expresiones regulares. 3. Evasion: Intentan modificar las peticiones con el fin de evadir sistemas IDS instalados en el objetivo. 4. Bruteforce: Intentan ejecutar un ataque de fuerza bruta contra login.
- 69 -
- 70 -
1. 2. 3. 4.
Plugin Name: Nombre del Plugin Status: Estado del Plugin Activado/Desactivado. Conf: Indica si tiene opciones de configuracin personalizadas. Description: Descripcin del Plugin.
Consultar la descripcin de un plugin dentro de una de las categoras de plugins raz, por ejemplo, describir el uso del plugin dav incluido en el plugin audit
w3af/plugins>>> audit desc dav This plugin finds WebDAV configuration errors. These errors are generally server configuration errors rather than a web application errors. To check for vulnerabilities of this kind, the plugin will try to PUT a file on a directory that has WebDAV enabled, if the file is uploaded successfully, then we have found a bug. w3af/plugins>>>
- 71 -
| |----------------------------------------------------------------------------------------------------------| w3af/plugins/audit/config:xss>>>
Las instrucciones anteriores corresponden a los pasos que se deben llevar a cabo para configurar cualquier plugin existente en w3af, como puede apreciarse, son bastante sencillos sin embargo se requieren conocimientos avanzados sobre seguridad en aplicaciones web con el fin de establecer una configuracin optima.
Profiles w3af
Los profiles en w3af son simplemente configuraciones guardadas de plugins y sub-plugins habilitados, enfocados en objetivos con caractersticas especificas, frecuentemente este tipo de asociaciones se realizan en el momento de iniciar un proceso de recoleccin de informacin por medio de otras herramientas como por ejemplo, tcnicas de ingeniera social, en cualquier caso, el uso de perfiles, permite habilitar solamente aquellos plugins que resultan interesantes contra un objetivo, desactivando el resto. Establecer el contexto de perfiles:
w3af>>> profiles w3af/profiles>>> list |-----------------------------------------------------------------------------------------------------------| | Profile | Description | |-----------------------------------------------------------------------------------------------------------| | bruteforce | Bruteforce form or basic authentication access controls using default | | | credentials. To run this profile, set the target URL to the resource where the | | | access control is, and then click on Start. | | audit_high_risk | Perform a scan to only identify the vulnerabilities with higher risk, like SQL | | | Injection, OS Commanding, Insecure File Uploads, etc. | | full_audit_manual_disc | Perform a manual discovery using the spiderMan plugin, and afterwards scan the | | | site for any known vulnerabilities. | | full_audit | This profile performs a full audit of the target website, using only the | | | webSpider plugin for discovery. | | OWASP_TOP10 | The Open Web Application Security Project (OWASP) is a worldwide free and open | | | community focused on improving the security of application software. OWASP | | | searched for and published the ten most common security flaws. This profile | | | search for this top 10 security flaws. For more information about the security | | | flaws: http://www.owasp.org/index.php/OWASP_Top_Ten_Project . | | fast_scan | Perform a fast scan of the target site, using only a few discovery plugins and | | | the fastest audit plugins. | | empty_profile | This is an empty profile that you can use to start a new configuration from. | | web_infrastructure | Use all the available techniques in w3af to fingerprint the remote Web | | | infrastructure. | | sitemap | Use different online techniques to create a fast sitemap of the target web | | | application. This plugin will only work if you've got Internet access and the | | | target web application is being spidered by Yahoo!
- 72 -
| |-----------------------------------------------------------------------------------------------------------| w3af/profiles>>>
Exploits w3af
Finalmente, una de las partes ms importantes en el proceso de escaneo de vulnerabilidades, es el aprovechamiento de las mismas, es aqu donde juegan un papel importante los plugins de ataque de w3af, a continuacin se explica como se pueden usar estos plugins desde la consola de w3af 1.Estableciendo el contexto de exploits:
w3af>>> exploit w3af/exploit>>>
3. Para explotar todas las vulnerabilidades encontradas en busca de una consola remota:
w3af/exploit>>> exploit
- 73 -
Solamente es necesario ubicar todos estos archivos en el directorio de aplicaciones del servidor web, posteriormente, es necesario establecer determinadas configuraciones a nivel de Apache, para esto basta con ver el contenido del directorio:
https://w3af.svn.sourceforge.net/svnroot/w3af/extras/testEnv/apache2config /
Donde se encuentran los mdulos habilitados y las opciones de configuracin adicionales. Una vez establecido el entorno de pruebas, se puede utilizar w3af con el fin de detectar y explotar dichas vulnerabilidades, ahora a probar algunas de las vulnerabilidades incluidas en el entorno de pruebas:
Vulnerabilidades OS Command
Se trata de una vulnerabilidad que permite a un atacante ejecutar comandos de forma arbitraria en la maquina objetivo, frecuentemente ocasionada por malas practicas de programacin.
w3af>>> target set target http://localhost/w3af/audit/os_commanding/simple_osc.php?cmd=ls w3af>>> plugins audit osCommanding w3af>>> start There is no point in searching yahoo site explorer for site: "localhost" . Yahoo doesnt index private pages. Found 1 URLs and 1 different points of injection. The list of URLs is: - http://localhost/w3af/audit/os_commanding/simple_osc.php The list of fuzzable requests is: - http://localhost/w3af/audit/os_commanding/simple_osc.php | Method: GET | Parameters: (cmd="ls") OS Commanding was found at: "http://localhost/w3af/audit/os_commanding/simple_osc.php", using HTTP method GET. The sent data was: "cmd=ping+-c+9+localhost". This vulnerability was found in the request with id 20. Finished scanning process. w3af>>> w3af>>> target set target http://localhost/w3af/audit/os_commanding/simple_osc.php?cmd=ls Unknown command 'w3af>>>' w3af>>> w3af>>> plugins audit osCommanding Unknown command 'w3af>>>' w3af>>> w3af>>> start Unknown command 'w3af>>>' w3af>>> There is no point in searching yahoo site explorer for site: "localhost" . Yahoo doesnt index private pages. Unknown command 'There' w3af>>> Found 1 URLs and 1 different points of injection. Unknown command 'Found' w3af>>> The list of URLs is: Unknown command 'The' w3af>>> - http://localhost/w3af/audit/os_commanding/simple_osc.php Unknown command '-' w3af>>> The list of fuzzable requests is: Unknown command 'The' w3af>>> - http://localhost/w3af/audit/os_commanding/simple_osc.php | Method: GET | Parameters: (cmd="ls") Unknown command '-'
- 74 -
w3af>>> OS Commanding was found at: "http://localhost/w3af/audit/os_commanding/simple_osc.php", using HTTP method GET. The sent data was: "cmd=ping+-c+9+localhost". This vulnerability was found in the request with id 20. Unknown command 'OS' w3af>>> Finished scanning process. Unknown command 'Finished' w3af>>> w3af>>> Unknown command 'w3af>>>' w3af>>> exploit exploit osCommandingShell osCommandingShell exploit plugin is starting. The vulnerability was found using method GET, tried to change the method to POST for exploiting but failed. Vulnerability successfully exploited. This is a list of available shells and proxies: - [0] <osCommandingShell object (ruser: "www-data" | rsystem: "Linux g460 2.6.32-5-686 i686 GNU/Linux")> Please use the interact command to interact with the shell objects. w3af>>> exploit interact 0 Execute "endInteraction" to get out of the remote shell. Commands typed in this menu will be runned through the osCommandingShell shell w3af/exploit/osCommandingShell-0>>> ls blind_osc.php index.html param_osc.php passthru.php simple_osc.php vulnerable.php vulnerable2.php w3af/exploit/osCommandingShell-0>>>
Como se ha podido apreciar la ruta http://localhost/w3af/audit/os_commanding/simple_osc.php?cmd=ls indica la vulnerabilidad incluida en el entorno de pruebas w3af, los dems comandos son bsicos y se han explicado en el post anterior.
- 75 -
EVASION DE FIREWALLS
Existen distintas tcnicas que permiten conocer cuales puertos se encuentran abiertos en una mquina remota, cada una estas tcnicas utilizan distintos tipos de envo de paquetes y protocolos, sin embargo, cuando una mquina remota tiene un Firewall o un IDS instalado y correctamente configurado, lo ms probable es que los escaneos sean infructuosos, dado que la salida ms frecuente, ser precisamente ver todos los puertos bloqueados. Por ejemplo, si ejecutamos un clsico escaneo de puertos contra una mquina windows sin un firewall activo, podramos ver lo siguiente:
# nmap -sS -sV 10.10.10.200 Starting nmap 5.21 ( http://nmap.org ) at 2012-02-29 01:48 ART nmap scan report for 10.10.10.200 Host is up (0.00062s latency). Not shown: 997 closed ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds MAC Address: 08:00:27:61:34:29 (Cadmus Computer Systems) Service Info: OS: Windows Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . nmap done: 1 IP address (1 host up) scanned in 7.71 seconds
Es posible ver los puertos y los servicios en ejecucin, sin embargo, contra la misma mquina, con el firewall correctamente configurado, lo mas probable es que la salida del mismo comando sea similar a la siguiente:
>nmap -sS -sV 10.10.10.200 Starting nmap 5.21 ( http://nmap.org ) at 2012-02-29 01:50 ART nmap scan report for 10.10.10.200 Host is up (0.00038s latency). All 1000 scanned ports on 10.10.10.200 are filtered MAC Address: 08:00:27:61:34:29 (Cadmus Computer Systems) Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . nmap done: 1 IP address (1 host up) scanned in 21.71 seconds
No solamente el escaneo ha tardado tres veces ms, ademas no ha arrojado ningn resultado de inters, solamente que la mquina objetivo se encuentra activa. Cmo es posible determinar si un puerto se encuentra abierto o inclusive el sistema operativo en ejecucin si existe un Firewall que impide conocer estos detalles? En nmap existen algunas tcnicas que permiten detectar cuando un puerto se encuentra abierto y filtrado por el firewall.
- 76 -
NOTA: Frecuentemente cuando un sistema se encuentra protegido con un sistema de proteccin como un Firewall o un IDS, evadir estos mecanismos puede llevar tiempo, en algunos casos incluso horas, ademas, si a esto le adicionamos el uso de Tor, (en el caso de que se trate de un ataque real y se desee anonimato) el tiempo se multiplica, en especial si no se selecciona un nodo de salida concreto para la red de Tor, permitiendo que cada peticin viaje por varios nodos de salida de la red. Tambin es bastante frecuente utilizar la tcnica de escaneo conocida como Idle Scan (-sI) que le permite al usuario proteger su identidad enviando todos los paquetes por medio de una mquina que esta siendo manejada como zombie, esta tcnica tambin tiene cuestiones de rendimiento que hacen que su desempeo sea bastante lento. En resumen, es una tarea que necesita paciencia por parte del atacante y sobre todo practica y experiencia.
Veamos algunas de estas opciones que permitiran mantenernos un poco mas a salvo de las miradas de los administradores. -f: Esta opcin intenta fragmentar los paquetes que se envan al objetivo en pequeos trozos, de esta forma es un poco mas difcil para un IDS o los Filtros de un Firewall identificar que se trata de un escaneo de puertos, con esta opcin hace que nmap divida los paquetes en pequeos trozos de 8 bytes o incluso menos, sin embargo, si lo que se desea es que los fragmentos sean de un tamao concreto, tambin se puede especificar la opcin --mtu. Por otra parte, si se especifica dos veces en esta opcin se duplica el tamao de los fragmentos en 16 --mtu: Indica el tamao en bytes de fragmentacin de los paquetes que se enven al objetivo, el valor tiene que ser un mltiplo de 8 y no se debe especificar esta opcin junto con -f, cumple los mismos fines que la opcin -f, no obstante le da mas control al pentester para especificar un tamao concreto para los paquetes -D: Ejecuta un escaneo usando distintos seuelos, esto quiere decir que las peticiones que se envan a la mquina objetivo se envan desde las direcciones IP indicadas con esta opcin (separadas por coma), estas direcciones IP pueden ser reales o no, la intencin es
- 77 -
que el origen de las peticiones no sea el mismo para todas, utilizando esta opcin junto con tiempos de espera un poco mas largos es posible evadir sistemas de deteccin de intrusos y en algunos casos restricciones de Firewall. Por otro lado es posible generar estas direcciones de forma aleatoria, simplemente utilizando la palabra clave RND:<numero de direcciones>, tambin puede usarse la palabra reservada ME para incluir la direccin IP real del atacante en la lista de seuelos. --source-port: Esta opcin permite establecer el puerto de origen por donde se enviaran los paquetes, esta opcin es til contra algunos firewall que confan en las peticiones enviadas de cualquier mquina por un puerto determinado, (por ejemplo algunas versiones del firewall Windows aceptan peticiones de maquinas cuyo puerto de origen es el 88, puerto comn para la comunicacin de Kerberos) --spoof-mac: Esta opcin permite al atacante utilizar una MAC distinta a la suya en el proceso de escaneo, inclusive puede sugerir a nmap que genere una MAC correspondiente a un nombre de proveedor como por ejemplo Cisco --data-length: Se trata de la longitud en bytes que contendr los paquetes aleatorios generados por nmap para enviar al objetivo, en escaneos que intenten evadir restricciones de Firewall, es frecuente usar valores pequeos por cuestiones de rendimiento en el escaneo. --randomize-hosts: Escaneo de hosts aleatorio para cambiar la firma de escaneo y evitar deteccin de IDS, esta opcin le indica a nmap que debe barajar o revolver un grupo de hosts ficticios para que no sea tan evidente el escaneo para el objetivo. --sent-eth: Enviar los paquetes va Ethernet --ip-options: Consiste en establecer determinadas opciones incluidas en los headers de los paquetes IP, de esta forma pueden engaarse algunas reglas de ciertas configuraciones de Firewall que se basan en algunos de estos campos en los paquetes IP. Si se desea todas ver las opciones incluidas en los paquetes enviados y recibidos, utilizar la opcin --packettrace. --ttl: Time To Live de cada uno de los paquetes enviados al objetivo, frecuentemente puede ser empleado para especificar el tiempo que se utilizara en cada escaneo
Estas son solo unas de las opciones mas utilizadas para evadir las restricciones de un Firewall. Ejemplo 1:
# nmap --spoof-mac Cisco -T4 --source-port 53 \ -sS --send-ip -n --data-length 30 --randomize-hosts \ -PN -p- -f -f -sV --version-all -O -oA target_scan-%D-%T 10.10.10.201
Con este ejemplo utilizamos una mac Cisco, definimos el valor 4 de la opcin T para personalizar los controles de tiempo que llevar el escaneo (*), estableciendo el puerto de origen 53, modo stealthy scan, longitud mxima de paquete de 30 bytes, escaneos de hosts aleatorios, no enviamos paquetes ping, escaneamos los puertos desde 1-65535, generamos
- 78 -
paquetes en fragmentos de 16 bytes, realizamos la deteccin de versin y finalmente generamos un archivo de salida con los resultados formateado con la fecha del escaneo. (*) Niveles: paranoid = 0 / sneaky = 1 / polite = 2 / normal = 3 / aggressive = 4 / insane = 5
Ejemplo 2:
# nmap -sS --log-errors --reason packet-trace \ -d3 -D 22.22.22.22,33.33.33.33,RND:4,ME \ -oN nmap-log.nmap 192.168.1.34
Ahora estamos realizando un stealthy scan, enseando mensajes de error y la razn por la cual un puerto ha sido declarado abierto|cerrado|filtrado, realizamos un traceo de todos los paquetes enviados a nivel de detalle fino, declaramos el nivel de depuracin 3 (el ms alto es el 9), declaramos dos seuelos estticos, cuatro aleatorios y uno que incluye la IP del atacante (esto ltimo en trminos prcticos no es aconsejable), finalmente generamos un archivo en formato nmap que puede ser posteriormente relanzado en el caso de que sea interrumpido el escaneo con el siguiente comando:
# nmap --resume nmap-log.nmap
Ejemplo 3:
# nmap --mtu 32 --send-eth --data-length 50 \ --source-port 53 -PN --ip-options \1\8\3\4 192.168.1.34
En este ejemplo establecemos un mtu especifico de 32 bytes por paquete, los paquetes son enviados va ethernet, establecemos un valor de 50 bytes al mximo de cada paquete de datos, esto indica que este valor se dividir entre 32 bytes que es la unidad de bytes por paquete, cada paquete es fragmentado en 2 paquetes, uno de 32 bytes y otro de 18, se establece un puerto que es por el que se enviaran los paquetes. Como ya se ha indicado anteriormente, algunos firewall con malas configuraciones permiten conexiones entrantes en funcin del puerto origen por donde han sido enviados. Se indica a nmap que no realice peticiones ping a la mquina ya que se asume que se encuentra activa, se establece la opcin \1\8\3\4 que permite determinar si es una maquina Windows o GNU/Linux dependiendo de la respuesta y finalmente se establecen las opciones de IP. Los valores validos pueden ser: R,T,U,L,S y valores decimales/hexadecimales. Para mayor informacin les recomiendo visitar http://seclists.org/nmap-dev/ En el ejemplo 3, si la mquina objetivo no es Windows la respuesta ser similar a la siguiente:
SENT (0.1980s) ARP who-has 192.168.1.36 tell 192.168.1.34 RCVD (0.1990s) ARP reply 192.168.1.36 is-at 08:00:27:61:34:29 SENT (0.4500s) ICMP 192.168.1.34 > 192.168.1.36 echo request (type=8/code=0) ttl=46 id=39558 iplen=32 ipopts={ NOP ??{\x08\x03\x04}}
- 79 -
Como puede apreciarse, la diferencia radica en la respuesta RCVD entre ambas mquinas, mientras que en la mquina Windows el paquete contiene las opciones IP establecidas a ipopts={ NOP ??{\x08\x03\x04}} la mquina bajo GNU/Linux ha comprendido correctamente la opcin IP y no ha registrado ningn mensaje de error o warning, lo que nos permite dictaminar la plataforma de un objetivo, aunque este se encuentre detrs de un Firewall.
mquina objetivo, responder con un paquete RST dado que en principio no ha enviado ninguna peticin SYN, (esta la ha enviado el atacante en el paso 2), al hacer esto, el IPID aumenta en uno (es decir ahora es 3346) si por el contrario recibe un paquete RST, (indicando que el puerto en la mquina objetivo esta cerrado) la maquina Zombie omitir este paquete, lo que quiere decir que el IPID se quedar sin modificaciones 5. El atacante posteriormente, envi un paquete SYN/ACK a la mquina Zombie, nuevamente, el Zombie no ha enviado ningn paquete de sincronizacin anteriormente, as que intenta resetear la conexin enviando un paquete RST, con lo que el IPID aumenta nuevamente en uno 6. El atacante despus de recibir el paquete RST del Zombie, puede determinar si un puerto esta abierto o cerrado/filtrado, simplemente comparando el IPID, si este ha aumentado en 2 (el paquete RST enviado desde Zombie hacia el Objetivo y RST desde Zombie hacia atacante) quiere decir que el puerto se encuentra abierto, si por el contrario ha aumentado solamente en 1 (el paquete RST enviado desde Zombie hacia atacante) indica que el puerto se encuentra cerrado o filtrado por firewall desde la mquina Zombie.
Se trata de un mecanismo muy eficaz (aunque lento), que permite explotar relaciones de confianza y huecos en las reglas del firewall. Para utilizar esta tcnica pueden seguirse los siguientes pasos: 1. Identificar las mquinas en el segmento de red del objetivo a las cuales, se tiene acceso y ademas son susceptibles de ser tratadas como Zombies, o que es lo mismo, el mecanismo de generacin de IPID es secuencial, para esto puede utilizarse MetaSploit Framework
msf > use auxiliary/scanner/ip/ipidseq msf auxiliary(ipidseq) > show options Module options (auxiliary/scanner/ip/ipidseq): Name Current Setting Required Description - INTERFACE no The name of the interface RHOSTS 192.168.1.0/24 yes The target address range or CIDR identifier RPORT 80 yes The target port SNAPLEN 65535 yes The number of bytes to capture THREADS 1 yes The number of concurrent threads TIMEOUT 500 yes The reply read timeout in milliseconds msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24 RHOSTS => 192.168.1.0/24 msf [*] [*] [*] [*] [*] [*] [*] [*] [*] auxiliary(ipidseq) > run Error: 192.168.1.0: #<Class:0x7f28ea2ff3e0> execution 192.168.1.1s IPID sequence class: All zeros Error: 192.168.1.4: #<Class:0x7f28eb0fb0e8> execution Error: 192.168.1.5: #<Class:0x7f28ead0e1b0> execution Error: 192.168.1.6: #<Class:0x7f28eabeea28> execution Error: 192.168.1.7: #<Class:0x7f28ea8ffa88> execution Error: 192.168.1.8: #<Class:0x7f28ea7a1100> execution Error: 192.168.1.9: #<Class:0x7f28ea66ee68> execution Scanned 026 of 256 hosts (010% complete) - 81 expired expired expired expired expired expired expired
[*] 192.168.1.36s IPID sequence class: Incremental! [*] 192.168.1.37s IPID sequence class: All zeros [*] 192.168.1.38s IPID sequence class: All zeros .
Por otro lado tambin es posible utilizar un script de nmap que permite realizar un escaneo en busca de mquinas que sean susceptibles de ser tratadas como Zombies, esta herramienta puede ser descargada desde http://nmap.org/nsedoc/scripts/ipidseq.html Una vez descargado el archivo ipidseq.nse se debe ubicar en el directorio scripts donde se encuentre instalado nmap. Si se ha utilizado apt-get o un paquete deb/rpm para instalarlo, lo mas probable es que se encuentre en las libreras compartidas de usuario /usr/share/nmap. Para utilizarlo se puede ejecutar el comando:
# nmap -vv script ipidseq 192.168.1.1/24
En el ejemplo anterior se ha encontrado una mquina susceptible de ser tratada como Zombie, por lo tanto puede utilizarse para tratar de identificar los puertos abiertos en la mquina objetivo (que en este caso es la 192.168.1.35) simplemente ejecutando:
>nmap -Pn -sI 192.168.1.36 192.168.1.35 Starting nmap 5.21 ( http://nmap.org ) at 2011-06-01 21:37 CEST Idle scan using zombie 192.168.1.36 (192.168.1.36:80); Class: Incremental nmap scan report for 192.168.1.35 Host is up (0.051s latency). Not shown: 987 closed|filtered ports PORT STATE SERVICE 21/tcp open ftp 80/tcp open http 135/tcp open msrpc 139/tcp open netbios-ssn 443/tcp open https 445/tcp open microsoft-ds 3306/tcp open mysql 5357/tcp open unknown 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49155/tcp open unknown 49156/tcp open unknown MAC Address: 08:00:27:E3:E3:3D (Cadmus Computer Systems) nmap done: 1 IP address (1 host up) scanned in 13.19 seconds
Con esto se ha conseguido filtrar informacin sobre la mquina que se encuentra protegida por el firewall.
- 82 -
EVASION DE IDS
Hasta aqu hemos visto como utilizar nmap y ejecutar un ataque de reconocimiento de forma sigilosa, evadiendo mecanismos de seguridad en el objetivo y evitando ser detectados en nuestras acciones. Ahora se intentar evadir las reglas y preprocessors de snort para que de este modo, el escaneo efectuado contra el objetivo sea lo mas silencioso posible, tratando de no despertar sospechas ni levantar ninguna alarma de las definidas en snort (con las reglas y opciones de los preprocessors correctamente configuradas obviamente!!!). Intentaremos utilizar diferentes opciones de nmap para realizar un escaneo a diferentes mquinas en el segmento de red (snort se ejecutar como NIDS) de esta forma se medir el nivel de eficiencia de snort y las opciones de configuracin disponibles ante las diferentes tcnicas de evasin existentes en nmap.
Partiendo de la base que snort se encuentra en ejecucin con los preprocessors HTTP Inspect, Frag3, Stream5, sfPortScan, entre otros ms, se intentar ejecutar comandos nmap contra mquinas pertenecientes al segmento de red inspeccionado y se detalla el comportamiento de snort.
Entonces iniciaremos snort de la siguiente forma:
# snort -i eth0 -A console daq dump -c /etc/snort/snort.conf
Posteriormente, las siguientes pruebas determinaran el comportamiento de snort ante ataques de reconocimiento utilizando nmap
- 83 -
el preprocessor Frag3 de snort identificar el ataque de fragmentacin de paquetes y generar una alarma, ademas, el preprocessor sfPortScan identificar que se intentaba realizar un escaneo de puertos TCP.
06/26-18:29:02.793913 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794002 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794086 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794108 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.34 06/26-18:29:02.794221 [**] [123:13:1] (spp_frag3) Tiny fragment [**] [Priority: 3] {TCP} 192.168.1.33 -> 192.168.1.34
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
La direccin 192.168.1.22 no existe, sin embargo, snort simplemente ha alertado que se esta llevando a cabo un escaneo de puertos desde la mquina con direccin IP 192.168.1.22
07/01-18:43:59.477619 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.22 -> 192.168.1.34
Como puede apreciarse, la alerta generada no contiene trazas relacionadas con la direccin IP real del atacante.
- 84 -
Como nota adicional, se debe tener en cuenta desactivar consultas DNS reversas (-n) y no ejecutar un ping antes del escaneo (-PN) y no se debe utilizar un escaneo TCP (-sT) ya que en dicho caso snort detectar la direccin real del atacante.
# nmap -sT -PN --spoof-mac 00:11:22:33:44:55 --source-port 80 -n -e eth0 -S 192.168.1.22 192.168.1.34 WARNING: -S will only affect the source address used in a connect() scan if you specify one of your own addresses. Use -sS or another raw scan if you want to completely spoof your source address, but then you need to know what youre doing to obtain meaningful results. WARNING: -g is incompatible with the default connect() scan (-sT). Use a raw scan such as -sS if you want to set the source port.
snort no conseguir identificar el ataque de escaneo de puertos sin embargo, el tiempo empleado en el escaneo ser bastante alto, entre 2 y 4 horas. T1
nmap -T1 192.168.1.34
snort no conseguir identificar el ataque de escaneo de puertos sin embargo, el tiempo empleado en el escaneo ser bastante alto, entre 30 y 45 minutos. T2
nmap -T2 192.168.1.34
snort no podr identificar que se trata de un ataque de reconocimiento, pero el escaneo demora aproximadamente 20 minutos. T3
nmap -T3 192.168.1.34
snort no identifica el ataque de reconocimiento llevado a cabo por nmap, y tarda algo de 10
- 85 -
minutos. T4
nmap -T4 192.168.1.34
snort identifica el ataque de reconocimiento y genera una alarma relacionada con el escaneo realizado
06/26-19:24:49.419571 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.34
T5
nmap -T5 192.168.1.41
snort detecta el ataque y genera tres alarmas por el escaneo, pero la ejecucin de nmap ha tardado menos de un minuto.
06/26-19:10:54.275733 [**] [122:3:0] (portscan) TCP Portsweep [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.41 06/26-19:10:54.275733 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.41 06/26-19:11:09.100088 [**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] {PROTO:255} 192.168.1.33 -> 192.168.1.41
NOTA: Los tiempos tomados y las alarmas generadas son un indicativo aproximado. Dependiendo del entorno que se desee escanear, es posible que snort pueda detectar el ataque. En un entorno real con unos niveles de seguridad ptimos, probablemente sea conveniente utilizar valores mas bajos (-T0, -T1) aunque el escaneo puede llevar incluso horas, sin embargo si es prioritario no despertar ninguna sospecha, esta es la mejor opcin.
- 86 -
HONEYPOTS
Gran parte de los esfuerzos del rea de seguridad a la hora de establecer medidas de proteccin se basan en el aprendizaje de las tcnicas utilizadas por los atacantes. Con este propsito, uno de los pilares fundamentales del personal dedicado a la seguridad est enfocado a la recopilacin de informacin para su posterior anlisis, para poder aplicar y reforzar las medidas de seguridad en la organizacin en funcin de las conclusiones obtenidas. Pero, qu informacin se recopila en este proceso y de qu forma? Existen muchas fuentes de informacin conocidas como pueden ser los informes de nuevas vulnerabilidades de aplicaciones concretas, estudios de analistas independientes, nuevas tcnicas de ataque, o incluso informacin obtenida del ltimo ataque sufrido sobre un recurso corporativo. Igual que en la pelcula de hacker, no es difcil imaginar tcnicas de obtencin de informacin que estn basadas en la implantacin de seuelos o trampas en forma de aplicaciones, cuyo propsito es registrar la actividad sospechosa de los potenciales atacantes, para que stos acten sin darse cuenta de que su comportamiento est siendo realmente estudiado.
Qu es un honeypot?
Un honeypot puede ser una aplicacion que simula, de una forma ms o menos interactiva, servicios o aplicaciones que registran la actividad sospechosa que un atacante pueda realizar sobre ellos. Al conjunto de honeypots que presentan una arquitectura lgica de red simulando un conjunto de sistemas, servicios y aplicaciones relacionadas, se los denomina como honeynet. Por supuesto, en este tipo de entornos simulados no existe informacin real sensible ni relativa a la organizacin, pero si informacin aparentemente interesante que motive al atacante y le haga perder tiempo, al mismo tiempo que proporciona informacin sobre tcnicas y mtodos de ataque. En esta lnea existe un proyecto dedicado a sumar esfuerzos y desarrollar pautas para la creacin, gestin y divulgacin de estos sistemas, denominado el HoneyNet Project (http://www.honeynet.org/) . En su web es posible encontrar tanto papers con informacin tcnica como referencias a los denominados chapters de cada pas relacionados con el proyecto. En cualquier caso, en este tipo de entornos es recomendable no olvidar que estamos tratando con sistemas que interactan con potenciales intrusos, y que los clasificamos como honeypots porque tanto la informacin que se expone como los sistemas que puedan verse
- 87 -
comprometidos no interfieren de forma negativa en el proceso de negocio de la organizacin. Como habrn supuesto, el inters de estos sistemas y entornos es doble. Por una parte, el registro de la actividad del atacante que interacta con el honeypot o la honeynet muestra nuevas tcnicas o tendencias de ataques de los que podemos aprender, y por lo tanto, permite planificar e implantar las medidas de seguridad oportunas a corto, medio e incluso a largo plazo para paliar posibles futuros ataques sobre los sistemas productivos de la empresa. Al mismo tiempo, la existencia de sistemas intencionadamente vulnerables conviviendo con sistemas de produccin convenientemente securizados (aunque como saben, nunca lo suficiente) proporciona una forma muy efectiva de dirigir la atencin del atacante lejos de los sistemas de negocio. Es importante, no obstante, que el entorno vulnerable est adecuadamente aislado, evitando que pueda servir de puente hacia otros sistemas internos, y por tanto convirtiendo una herramienta en un problema. Cmo podemos recopilar, analizar y aprovechar todos los datos que se van generando? Para ello existen correladores de informacin que ofrecen una integracin bastante sencilla con la mayora de honeypots existentes, y que a su vez son lo suficientemente flexibles como para adaptarlos al sistema en el que debamos instalarlos.
Clasificacin de Honeypots
Como explicamos recien, un honeypot no es ms que una aplicacin, servicio o sistema que simula ser lo que no es. No tiene un valor productivo para quien lo implanta y est preparado para ser sondeado, atacado y comprometido. Es bsicamente un seuelo con el objeto de engaar al atacante que pretenda amenazar nuestros sistemas, al mismo tiempo que ayuda a entender las tcnicas de ataque utilizadas. Por estas razones, es lgico pensar que cualquier actividad que se genere desde o hacia un honeypot, ser muy probablemente una actividad ilegtima o no autorizada. Existen diversas formas de clasificar los honeypots. Aqu lo haremos basndonos en dos de sus propiedades principales: la localizacin concreta dentro de una red y la interaccin que permite con el atacante. Segn la LOCALIZACIN, pueden situarse en un entorno de:
Honeypots en Produccin
El objetivo que se pretende alcanzar al implantar un honeypot en una red en produccin no es otro que la obtencin de informacin sobre las tcnicas empleadas para tratar de vulnerar los sistemas que componen dicha infraestructura. El abanico de posibilidades que nos ofrece un honeypot en una red en produccin es muy amplio. Desde la posibilidad de ubicar el honeypot en el segmento de la red de servidores internos de la compaa, con el objetivo de detectar posibles accesos por parte de usuarios internos a recursos crticos de la organizacin (por ejemplo algun archivo del sector contable), hasta la publicacin de un servicio web con idntica configuracin y diseo que el
- 88 -
mismo servicio que est en produccin o preproduccin. El mayor inconveniente que supone esta eleccin es el peligro que supone para los sistemas organizativos el permitir (incluso provocar) que el trfico malintencionado conviva con el legtimo.
Honeypots en Desarrollo
En este caso, el principal objetivo es la recopilacin de la mayor cantidad de informacin que permita al investigador poder analizar las nuevas tendencias en los mtodos de ataque, as como los principales objetivos perseguidos y los distintos orgenes de los ataques. El resultado de este anlisis es recogido en informes cuyo objetivo es respaldar la toma de decisiones en la implantacin de las medidas de seguridad preventivas. La principal ventaja de situar el honeypot en una red independiente, dedicada nicamente a la investigacin, es la separacin del sistema vulnerable del resto de sistemas productivos y evitar as la posibilidad de sufrir un ataque a travs del propio honeypot. Por el contrario, el inconveniente es la cantidad de recursos necesarios. Sobre la arquitectura a emplear profundizaremos en prximos posts. Otro mtodo de clasificacin de los honeypots es el que define la INTERACCIN con el atacante. En este caso, los honeypots se agrupan en dos tipos: Baja Interaccin: El honeypot emula un servicio, una aplicacin o un sistema vulnerable. Sus caractersticas principales son su sencilla instalacin y configuracin, junto con lo limitado de su capacidad para obtener diferentes tipos de datos. Unos ejemplos de honeypots de este tipo son: Honeyd: Quizs uno de los honeypots ms sencillos y populares. Es un demonio que crea hosts virtuales en una red. Los anfitriones pueden ser configurados para ejecutar servicios arbitrarios, y su comportamiento puede ser adaptado para que simule estar en ejecucin en ciertos sistemas operativos. HoneyC: El objetivo de este honeypot es la identificacin de servidores web maliciosos en la red. Para ello emula varios clientes y recaba la mayor cantidad posible de informacin de las respuestas de los servidores cuando estos contestan a sus solicitudes de conexin. HoneyC es ampliable de diversas formas: pueden utilizarse diferentes clientes, sistemas de bsqueda y algoritmos de anlisis. Nephentes: Honeypot de baja interaccin que pretende emular vulnerabilidades conocidas para recopilar informacin sobre posibles ataques. Nepenthes est diseado para emular vulnerabilidades que los gusanos utilizan para propagarse y cuando estos intentan aprovecharlas, captura su cdigo para su posterior anlisis. Honeytrap: Este honeypot est destinado a la observacin de ataques contra servicios de red. En contraste con otros honeypots, que se suelen centrar en la recogida de malware, el objetivo de Honeytrap es la captura de exploits. Glastopf: Emula miles de vulnerabilidades para recopilar datos de los ataques contra aplicaciones web. La base para la recoleccin de informacin es la respuesta
- 89 -
correcta que se le ofrece al atacante cuando intenta explotar la aplicacin web. Es fcil de configurar y una vez indexado por los buscadores, los intentos de explotacin de sus vulnerabilidades se multiplican. Alta Interaccin: En este caso el honeypot es una aplicacin con la cual se puede interactuar y que responde como se espera, con la diferencia de que su diseo est orientado a realizar un registro exhaustivo de la actividad que se lleva a cabo sobre ella y de que la informacin que contiene no es relevante en ningn caso. HI-HAT (High Interaction Honeypot Analysis Toolkit): Herramienta que transforma aplicaciones php en aplicaciones honeypot de alta interaccin. Adems ofrece una interfaz web que permite consultar y monitorizar los datos registrados. HoneyBow: Herramienta de recopilacin de malware que puede integrarse con el honeypot de baja interaccin Nephentes para crear una herramienta de recoleccin mucho ms completa. Sebek: Funciona como un HIDS (Host-based Intrusion Detection System) permitiendo capturar una gran variedad de informacin sobre la actividad en un sistema ya que acta a muy bajo nivel. Es una arquitectura cliente-servidor, con capacidad multiplataforma, que permite desplegar honeypots cliente en sistemas Windows, Linux, Solaris, *BSD, etc., que se encargan de la captura y el envo de la actividad recopilada hacia el servidor Sebek. Podramos decir que forma parte de una tercera generacin de honeypots. Capture-HPC: Del tipo cliente, como HoneyC, identifica servidores potencialmente maliciosos interactuando con ellos, utilizando una mquina virtual dedicada y observando cambios de sistema no previstos o autorizados. Otra opcin a destacar en cuanto a la eleccin de un honeypot es la de la web Project HoneyPot (http://www.projecthoneypot.org/). Se trata de un portal que facilita un recurso web para usarlo como honeypot. Este genera una pgina con un cdigo script, la cual utiliza diversas tcnicas para la recopilacin de informacin (IPs, logins usados en ataques de fuerza bruta, spammers, etc). Como trabajo prctico, pueden intentar instalar el honeypot Kojoney (http://kojoney.sourceforge.net/), el cual les recomiendo tenerlo instalado en sus entornos de produccin ya que emula un servidor SSH.
- 90 -
Tratemos de ver de forma sencilla como es el proceso de encriptacin... El emisor emite un texto plano, que es tratado por un cifrador con la ayuda de una clave, k, creando un texto cifrado (criptograma). Este criptograma llega al descifrador a travs de un canal de comunicaciones. El descifrador convierte el criptograma de nuevo en texto plano, usando ahora otra clave, k (veremos ms adelante que esta clave puede o no ser la misma que la utilizada para cifrar), y este texto plano ha de coincidir con el emitido inicialmente para que se cumplan los principios bsicos de la criptografa moderna. El elemento ms importante en este proceso es el cifrador, que ha de utilizar el algoritmo de cifrado para convertir el texto plano en un criptograma.
- 91 -
Usualmente, para hacer esto, el cifrador depende de un parmetro exterior, que se conoce como clave de cifrado, que es aplicado a una funcin matemtica irreversible. Slo es posible invertir la funcin si se dispone de la clave de descifrado. Existen dos tipos bsicos de criptografa: 1. la criptografa simtrica, 2. la criptografa asimtrica
- 92 -
FIRMA DIGITAL
Otra ventaja importante consiste en que proporciona un mtodo de firma digital. La autenticacin digital es un proceso por el cual el receptor de un mensaje digital puede mantener confidencial la identidad del que lo enva y/o la integridad del mensaje. cmo es este proceso en la prctica? Vemoslo en un ejemplo, supongamos que Mariana le quiere enviar un documento a Fabin, obtiene su clave pblica y la utiliza para encriptar el documento; luego lo enva. Cuando Fabin lo recibe, utiliza su clave privada para desencriptarlo y leerlo. Nadie escucha ni puede desencriptar el mensaje. Por qu? Porque Fabin recibe documentos que slo l puede desencriptar.
En este caso el mensaje est protegido mientras la clave privada permanece solo en manos de Fabin. Cuando un receptor desea recibir una informacin cifrada, ha de hacer llegar a todos los potenciales emisores su clave pblica, para que estos cifren los mensajes con dicha clave. De este modo, el nico que podr descifrar el mensaje ser el legtimo receptor, mediante su clave privada.
- 93 -
- 94 -
(1) DSA y ElGamal (por defecto) (2) DSA (slo firmar) (5) RSA (slo firmar) Su eleccin:
Como podemos ver, lo primero que se nos pide es el algoritmo de cifrado, y el recomendado es el que aparece por defecto, ya que no est patentado.
Su eleccin: 1 El par de claves DSA tendr 1024 bits. Listo para generar un nuevo par de claves ELG-E. el tamao mnimo es 768 bits el tamao por defecto es 1024 bits el tamao mximo recomendado es 2048 bits De qu tamao quiere la clave (1024)?
Lo siguiente es la longitud de la clave, cuanto ms larga, ms segura, pero lleva ms tiempo generarla y firmar correos, etc. Con el tamao por defecto tenemos un buen nivel de seguridad. El tamao requerido es de 1024 bits Por favor, especifique el perodo de validez de la clave.
0 = la clave nunca caduca <n> = la clave caduca en n das <n>w = la clave caduca en n semanas <n>m = la clave caduca en n meses <n>y = la clave caduca en n aos
Validez de la clave (0)? Seguimos con el perodo de validez de la clave, vamos a elegir que nunca caduque:
Key nunca caduca Es correcto (s/n)? s
Necesitamos ahora un identificador de usuario para identificar nuestra clave. El programa construye el identificador a partir del Nombre Real, Comentario y Direccin de Correo Electrnico de esta forma: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Nombre y apellidos:
- 95 -
Es necesario generar muchos bytes aleatorios. Es una buena idea realizar alguna otra tarea (trabajar en otra ventana/consola, mover el mouse, usar la red y los discos) durante la generacin de nmeros primos. Esto da al generador de nmeros aleatorios mayor oportunidad de recoger suficiente entropa (el porcentaje de informacin y redundancia que contienen).
.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++ +++.+++++++++++++++++++++++++..+++++.+++++.+++++..+++++++++++++++.++++ +........>.+++++...........>+++++<+++++...................>+++++<+++++++++ +++++++++++.+++++.++++++++++++++++++++++++++++++.++++++++++++++++++++++++ +.++++++++++++++++++++.++++++++++.+++++++++++++++.+++++++++++++++>++++ +.......<+++++...>+++++....................................<++++ +...........>.+++++.................................>+++++.<++++ +.................+++++^^^^^^^^^^^ gpg: /home/pedro/.gnupg/trustdb.gpg: se ha creado base de datos de confianza claves pblica y secreta creadas y firmadas. clave marcada como de confianza absoluta. pub 1024D/C8F3702B 2003-05-16 Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar> Huella de clave = B124 FD41 717E 0761 5E7D B4E5 4EA7 4AF9 C8F3 702B sub 1024g/2BA33BAE 2003-05-16
Listo, ya tenemos nuestro par de claves, ahora pondremos en un archivo la clave pblica, para compartirla.
$ gpg --export -a -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.2.1 (GNU/Linux) mQGiBD7EUHsRBADkAfVr9jWrbPKbnND6Fpo4a/qCi9HANt0L4Cze9DaRR2WvQhOg 39TIMBZxQIXN4b7I6RP+hKEwifmpylV7+GRdqvKGOGO6f5yGE+GCrsh3iGG5X28v UjYFBE8GY8+k5ZKoUUA352J4KaudIOM0qfhzM8bqeFpPo7Divlis0JBIBwCg1Ixe EDTYXPA3IuxmRi7FFqAvytMEANnaFr8ArZDSw9PEY5dR0Zdx1lDzQ+Tn1YMd23EC c13gwmzve8FLPnNpod8LDH58VBUBgVKFbBmBXz6SQrp/WZfE6MMgVucpTD0vz8RW UO3887Hr7Y/nRDzbYhcLdf7iQ739gWCaKMorA8lfWtIU+mWW2tU/K/pCWXNWyiz0 MsAtBAC2t09SGsqJi0BBw2KUjsfIVxAEeslsO7y7d1BqvmgiFkMssvhdjLRq0E6q YL0Y5Nb3MOGJxUxaVPYIGti8oa7QTnpZoh52NJyWPnJ500NrdImJ46LkvYgF2M3/ s46k7t5BDqmZf1eAvVf8pfPQlEEdASj6lYqd0DXeO32bdokbALQ2UGVkcm8gcHJ1 ZWJhIChFbCBtZWpvciB1c3VhcmlvKSA8cGVkcm9AcGVkcml0by5jb20uYXI+iFkE ExECABkFAj7EUHsECwcDAgMVAgMDFgIBAh4BAheAAAoJEE6nSvnI83Ar6mcAniek
- 96 -
0xksKzV02ccYIKNOSTg85gBOAJsE5BVH1TVPdA5sdU9NcR46j3I3ibkBDQQ+xFCI EAQAuwcteknhMkGBH7OQWsrpQH+4ESSOYfFathqwSLzx4U00t9AlmwMKgxa8wyyv Mnl4Cr4xdAj9G1/Py981Eklill1xQAukJaEJxY4dLfEvRwlSngd6QnLiIiqfYJBa oWnX6YkkzR1O2CVNDYDWGmbwdWrLC6fF6AM7llefZJnhTXcABA0D/3k6wVmSzNfy P37uOnkIDjM2yiwzdBX0VBMuNIRz/6INtynFn6sbaqpxI0ijHl4DWo0yaaQo3Ca1 KC7hV+auJA48L5jR/XhJm8FszfnN01Jo6ueZic/TTJdMFPLH376DoUeOpUsGdwNp F0KAKOWFEJO+6KhGVnM2Ugr2rjB9K+DliEYEGBECAAYFAj7EUIgACgkQTqdK+cjz cCvXdgCfYOt8YtslYI8LfVjzSVPheixwmMYAn26TG6HROvvz27yf8JAyJu8ud4el =urZ5 -----END PGP PUBLIC KEY BLOCK-----
Si no colocamos la opcin -a, la salida sera binaria. Ahora tenemos que mandarla por mail o direccionar la salida a un archivo y enviarlo de alguna forma a la persona que queremos que me escriba mensajes cifrados usando mi clave pblica.
$ gpg -export [uid] $ gpg -import [archivo]
Con import tomamos la/las claves de un archivo y las agregamos a nuestro anillo de claves. Con la opcin -fingerprint, podemos ver la huella de la clave y verificar que sea correcta y se corresponda con su dueo.
$ gpg -fingerprint /home/pedro/.gnupg/pubring.gpg -----------------------------pub 1024D/C8F3702B 2003-05-16 Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar> Huella de clave = B124 FD41 717E 0761 5E7D B4E5 4EA7 4AF9 C8F3 702B sub 1024g/2BA33BAE 2003-05-16
Podemos agregar la opcin -a para que genere un archivo ascii (genera archivo.asc). Para descifrar el archivo:
$ gpg -o pepe -d pepe.asc
- 97 -
Usamos el -o para que la salida sea dirigida hacia all y -d para descifrar el mensaje. Para firmar un archivo o mail con nuestra clave usamos (el ej. genera archivo.txt.asc):
$ gpg -a -s archivo.txt
Ojo!!! el archivo .asc creado contiene la informacin y la firma, si queremos tener en un slo archivo la firma, sin la informacin usamos:
$gpg -a -b archivo.txt
Ejemplo:
$ gpg -v archivo.txt.asc gpg: cabecera de armadura: Version: GnuPG v1.2.1 (GNU/Linux) gpg: asumiendo que hay datos firmados en `archivo.txt' gpg: Firma creada el vie 16 may 2003 00:32:58 ART usando clave DSA ID C8F3702B gpg: Firma correcta de "Pedro prueba (El mejor usuario) <pedro@pedrito.com.ar>"
- 98 -
TALLERES
- 99 -
Vulnerabilidades comunes
Estas son las 4 vulnerabilidades ms comunes que buscan los hackers para explotar los servidores web. Errores de programacin en el cdigo del sistema operativo, permitiendo ejecutar comandos que corren el servidor web Vulnerabilidades en instalaciones por defecto (default) del sistema operativo y programas del servidor Servidores y sus programas no actualizados adecuadamente con los ltimos parches de seguridad Una pobre o inadecuadas plizas y procedimientos de seguridad Todas estas vulnerabilidades pueden ser explotadas porque los servidores web se encuentran en la zona desmilitarizada (Demilitarized Zone) o DMZ. El DMZ es un rea pblicamente accesible entre 2 dispositivos de filtrado de paquetes, como los Firewalls. Website Cloaking Es la habilidad de un servidor web para mostrar diferentes tipos de pginas web segn la direccin IP del usuario. Web Server defacement (desfiguracin) Es la habilidad del hacker para explotar una vulnerabilidad en el sistema operativo o programas del web server para alterar archivos del website y mostrar que el website ha sido hackeado.
Re direccionar usuarios a una URL diferente va URL poisoning (envenenamiento de URL) Web share no configurados Ataques usando extensiones del servidor web o servicios remotos
Metasploit Framework
Esta poderosa herramienta gratuita es usada para probar o hackear un sistema operativo o aplicaciones del servidor web. Los exploits pueden ser usados como plug-ins y se pueden llevar a cabo a travs de sistemas operativos Windows y Unix. Lo bueno y lo malo de Metasploit es que el atacante o hacker puede escribir sus propios exploits como tambin usar los ya existentes.
La principal herramienta que utilizar nuestro atacante ser la informacin que sin querer le estamos brindando. En el caso de un servidor web, es normal que se pueda ver el siguiente pie cuando intentamos acceder a una pagina que no se encuentra disponible.
Para ocultar esta informacin, tenemos que editar el archivo /etc/apache2/apache2.conf y agregar las siguientes directivas de seguridad que vienen deshabilitadas por omisin.
ServerTokens ProductOnly ServerSignature Off
Recordemos reiniciar nuestro servicio de Apache con el comando apache2ctl restart para comprobar los cambios. 3. Proteger los .htaccess Otra tarea que debemos realizar es proteger nuestros archivos .htaccess ya que estos pueden contener informacin importante sobre el funcionamiento de nuestro servidor web.
<Directory /> AllowOverride None </Directory>
4. Apagar las inclusiones Server Side Es importante que agreguemos la directiva -Includes dentro del tag <directory>
Options -Includes
5. Apagar la ejecucin CGI Si no estamos utilizando el modulo CGI, es recomendable apagarlo. Dentro del tag <directory> tenemos que agregar la directiva -ExecCGI
Options -ExecCGI
6. Limitar el acceso a determinados archivos Nuestros visitantes, no tienen que tener la posibilidad de ver los archivos de nuestro servidor. Para esto, podremos limitarlo utilizando el archivo .htaccess
<FilesMatch "\.(.*sql|.*~)$"> Order deny,allow Deny from all </FilesMatch>
Esto evitaria por ejemplo, que no se puedan acceder a los archivos .sql
- 102 -
APACHE MOD_SECURITY
Los que poseen un servidor web, saben lo complicado que es mantener el servidor seguro, ms aun cuando corremos pginas en PHP, Python, etc. No importa lo paranoico o prolijo que seamos, siempre hay puntos vulnerables y si revisamos los logs del servidor, seguro encontraremos cientos de ataques XSS, SQL Injection, etc. La idea de esta parte del taller es configurar Mod_Security en un servidor Apache, para que podamos repeler un alto nmero de estos ataques, sin estar volvindonos locos.
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
- 103 -
Ahora bajamos el pack de reglas ms actualizado y lo instalamos: (en este caso, al momento de armar este material, era el modsecurity-crs_2.2.5, pero tal como hicimos antes debemos validar en el sitio web http://sourceforge.net/projects/modsecurity/files/modsecurity-crs/0-CURRENT/ asi bajamos la ultima version actualizada.
# cd /etc/apache2/ # wget -O modsecurity-crs.tar.gz "http://downloads.sourceforge.net/project/mod-security/modsecurity-crs/0CURRENT/modsecurity-crs_2.2.5.tar.gz?r=http%3A%2F%2Fsourceforge.net %2Fprojects%2Fmod-security%2Ffiles%2Fmodsecurity-crs%2F0-CURRENT %2F&ts=1344909585&use_mirror=ufpr" # tar xzvf modsecurity-crs.tar.gz # mv modsecurity-crs_2.2.5 /etc/apache2/modsecurity_crs # rm -fr modsecurity-crs.tar.gz # chown root.root /etc/apache2/modsecurity_crs/ -R # cd /etc/apache2/modsecurity_crs # mv modsecurity_crs_10_config.conf.example modsecurity_crs_10_config.conf
Ahora ajustaremos la configuracion de mod-security para apuntar los archivos de logs a donde queremos, e incluir el pack de rules que acabamos de bajar. Para ello, editamos el archivo de configuracion:
# vim /etc/apache2/conf.d/modsecurity.conf
Y al final de todo el archivo, agregamos las siguientes lineas, que servirn para cargar todas las reglas del pack que bajamos:
Include /etc/apache2/modsecurity_crs/*.conf Include /etc/apache2/modsecurity_crs/base_rules/*.conf
Guardamos el archivo y salimos. A continuacion preparamos los logs que vamos a usar y seteamos los permisos necesarios:
# # # # touch touch chown chmod /var/log/apache2/modsec_debug.log /var/log/apache2/modsec_audit.log root.root /var/log/apache2/modsec_* 660 /var/log/apache2/modsec_*
Eso es todo, ahora podemos decirle a Apache que verifique si todo esta OK en la config:
# apache2ctl configtest
Si todo esta OK, veremos un hermoso: Syntax OK Si no es as y algo fall, deberemos revisar toda la configuracin.
Luego de reiniciar, podemos mirar el errorlog de Apache, para ver si efectivamente cargo el ModSecurity.
# tail /var/log/apache2/error.log
Eso es todo! Ya tenemos mod-security funcionando en nuestro Apache. Recuerden ingresar al sitio oficial de mod_security para estar actualizados con todos los updates y novedades que sacan semanalmente.
- 105 -
TALLER DE IPTABLES
Qu es un firewall
Un firewall es un dispositivo que filtra el trfico entre 2 o ms redes. El firewall puede ser un dispositivo fsico o un software sobre un sistema operativo. En general debemos verlo como una caja con 2 o ms interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexin determinada puede establecerse o no. Incluso puede ir ms all y realizar modificaciones sobre las comunicaciones, como el NAT. Esa sera la definicin genrica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una BIOS que filtra el trfico TCP/UDP/ICMP/../IP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red.
Esquema tpico de firewall para proteger una red local conectada a internet a travs de un router. El firewall debe colocarse entre el router (con un nico cable) y la red local (conectado al switch o al hub de la LAN)
Dependiendo de las necesidades de cada red, puede ponerse uno o ms firewalls para establecer distintos permetros de seguridad en torno a un sistema. Es frecuente tambin que se necesite exponer algn servidor a internet (como es el caso de un servidor web, un servidor de correo, etc..), y en esos casos obviamente en principio se debe aceptar cualquier conexin a ellos. Lo que se recomienda en esa situacin es situar ese servidor en lugar aparte de la red denominada DMZ o zona desmilitarizada.
Figura 2: esquema de firewall entre red local e internet con zona DMZ para servidores - 106 -
expuestos
En la zona desmilitarizada se pueden poner tantos servidores como se necesiten. Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a l, la red local sigue protegida por el firewall. Esta estructura de DMZ puede hacerse tambin con un doble firewall (aunque como se ve se puede usar un nico dispositivo con al menos tres interfaces de red). Sera un esquema como este:
Figura 3: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doble firewall(permetro)
Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como proteccin de internet en las empresas, aunque ah tambin suelen tener una doble funcin: controlar los accesos externos hacia dentro y tambin los internos hacia el exterior; esto ltimo se hace con el firewall o frecuentemente con un proxy (que tambin utilizan reglas, aunque de ms alto nivel). Tambin, en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o ms firewalls ya sea filtrando toda la instalacin o parte de ella:
- 107 -
Figura 4: esquema de firewall entre redes, en la que solo se filtra y no se hace NAT
Sea el tipo de firewall que sea, generalmente no tendr mas que un conjunto de reglas en las que se examina el origen y destino de los paquetes del protocolo tcp/ip. En cuanto a protocolos es probable que sean capaces de filtrar muchos tipos de ellos, no solo los tcp, tambin los udp, los icmp y otros protocolos vinculados a vpns. Este podra ser (en pseudolenguaje) un conjunto de reglas correspondiente al firewall de la figura 1: Politica por defecto ACEPTAR Todo lo que venga de la red local al firewall ACEPTAR Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR Todo lo que venga de ntp.nasa.gov al puerto udo 123 ACEPTAR Todo lo que venga de la red local y vaya al exterior ENMASCARAR Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR Todo lo que venga del exterior al puerto tcp 3389 DENEGAR Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR
En definitiva lo que se hace es: Habilita el acceso a puertos de administracin a determinadas IPs privilegiadas Enmascara el trafico de la red local hacia el exterior (NAT, una peticin de un pc de la LAN sale al exterior con la ip pblica), para poder salir a internet Deniega el acceso desde el exterior a puertos de administracin y a todo lo que este entre 1 y 1024.
1) Poltica por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegar lo que se diga explcitamente. 2) Poltica por defecto DENEGAR: todo esta denegado, y solo se permitir pasar por el firewall aquellos que se permita explcitamente.
Como es obvio imaginar, la primera poltica facilita mucho la gestin del firewall, ya que simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa; el resto no importa tanto y se deja pasar. Por ejemplo, si queremos proteger una mquina linux, podemos hacer un netstat -ln (o netstat -an, o netstat -puta | grep LISTEN), saber que puertos estn abiertos, poner reglas para proteger esos puertos y ya est.
Para qu vamos a proteger un puerto que realmente nunca se va a abrir? El nico problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son peligrosos. Si la poltica por defecto es ACEPTAR y no se protege explcitamente, estamos arriesgando nuestra seguridad. En cambio, si la poltica por defecto es DENEGAR, a no ser que lo permitamos explcitamente, el firewall se convierte en un autntico MURO impenetrable. El problema es que es mucho ms difcil preparar un firewall as, y hay que tener muy claro que es lo que se tiene que abrir sin caer en la tentacin de empezar a meter reglas super-permisivas. Esta configuracin de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mnimamente iptables pero al finalizar este modulo aprenders a trabajar con iptables sin mayores dificultades.
El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); despus de eso NO SE MIRARN MS REGLAS para ese paquete. Cul es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no sirvan de nada.
Qu es iptables
Iptables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4 de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de iptables no es como un servidor que lo iniciamos o
- 109 -
detenemos o que se pueda caer por un error de programacin (esto es una pequea mentira ya que ha tenido alguna vulnerabilidad que permite hacerle un DoS, pero nunca tendr tanto peligro como las aplicaciones que escuchan en determinado puerto TCP). Iptables esta integrado con el kernel, es parte del sistema operativo. Cmo se pone en marcha? Realmente lo que se hace es aplicar reglas. Para ello se ejecuta el comando iptables, con el que aadimos, borramos, o creamos reglas. Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de firewall. Entonces tenemos una mquina linux con soporte para iptables, tiene reglas aplicadas y empiezan a llegar/salir/pasar paquetes. Olvidemos cuantas tarjetas de red hay, que direcciones ip tiene la mquina y olvidemos si el paquete entra o sale. Las reglas de firewall estn a nivel de kernel, y al kernel lo que le llega es un paquete y unicamente tiene que decidir que hacer con l. El kernel lo que hace es, dependiendo si el paquete es para la propia maquina o para otra maquina, consultar las reglas de firewall y decidir que hacer con el paquete segn mande el firewall. Este es el camino que seguira un paquete en el kernel:
Figura 5: cuando un paquete u otra comunicacin llega al kernel con iptables se sigue este camino
Como se ve en el grfico, bsicamente se mira si el paquete esta destinado a la propia maquina o si va a otra. Para los paquetes (o datagramas, segn el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARD. INPUT,OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Pero antes de aplicar esas reglas es posible aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destino. Incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar los paquetes; son reglas poco conocidas y es probable que no las tengamos que utilizar. Por lo tanto tenemos tres tipos de reglas en iptables: MANGLE NAT: reglas PREROUTING, POSTROUTING FILTER: reglas INPUT, OUTPUT, FORWARD.
- 110 -
/sbin/iptables -A INPUT -i lo -j ACCEPT iptables iptables iptables iptables iptables iptables iptables iptables -A -A -A -A -A -A -A -A INPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT -s -s -s -p -p -p -p -p 195.65.34.234 -j ACCEPT 231.45.134.23 -p tcp --dport 3306 -j ACCEPT 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT tcp --dport 80 -j ACCEPT tcp tcp tcp tcp --dport --dport --dport --dport 20:21 -j DROP 3306 -j DROP 22 -j DROP 10000 -j DROP
Como pueden apreciar es un script de los ms simples, con unas pocas reglas con las que cerramos puertos al pblico a los que no tienen porque tener acceso, salvo el puerto 80. Pero cualquiera con algo de ojo se habr dado cuenta de que ni se filtran los protocolos UDP ni el ICMP. Como les comentaba anteriormente, este tipo de firewall es necesario hacer un netstat para ver que puertos estn abiertos, y salvo que un rootkit nos haya modificado los binarios, netstat nos dar la informacin precisa que necesitamos. Hay gente que prefiere realizarce un nmap as mismos.
Dependiendo de cmo lo ejecutemos quiz no nos muestre todos los puertos, ya que suele mirar los bien conocidos.
Imaginemos que hemos dado un repaso a nuestro sistema, y ahora tenemos mejor identificados los puertos tcp y udp abiertos. Pero por si acaso al final del script cerraremos el rango de puertos del 1 al 1024, los reservados tanto para tcp como udp.
- 111 -
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT iptables iptables iptables iptables -A -A -A -A INPUT INPUT INPUT INPUT -s -s -s -p 195.65.34.234 -j ACCEPT 231.45.134.23 -p tcp --dport 3306 -j ACCEPT 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 1:1024 -j DROP iptables -A INPUT -p udp --dport 1:1024 -j DROP iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP iptables -A INPUT -p udp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
Mucho ms facil, no? Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas a su sistema. Si se tiene miedo de perder el control de una mquina remota, pruebe el script en una mquina local y asegrese de que funciona como queremos.
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP /sbin/iptables -A INPUT -i lo -j ACCEPT
- 112 -
/sbin/iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -s 195.65.34.234 -j ACCEPT iptables -A OUTPUT -d 195.65.34.234 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 20:21 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 1024:65535 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A INPUT -s 211.95.64.39 -p udp -m udp --sport 53 -j ACCEPT /sbin/iptables -A OUTPUT -d 211.95.64.39 -p udp -m udp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -s 211.95.79.109 -p udp -m udp --sport 53 -j ACCEPT /sbin/iptables -A OUTPUT -d 211.95.79.109 -p udp -m udp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -s 130.206.3.166 -p udp -m udp --dport 123 -j ACCEPT /sbin/iptables -A OUTPUT -d 130.206.3.166 -p udp -m udp --sport 123 -j ACCEPT /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables -A -A -A -A -A INPUT INPUT INPUT INPUT INPUT -p -p -p -p -p tcp udp tcp tcp tcp -m -m -m -m -m tcp udp tcp tcp tcp --dport --dport --dport --dport --dport 1:1024 -j DROP 1:1024 -j DROP 1723 -j DROP 3306 -j DROP 5432 -j DROP
- 113 -
Qu es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascaramiento en iptables), con lo que se hara dos veces NAT en el firewall y en el router. Entre el router y el firewall lo normal es que haya una red privada (192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de las necesidades puede que los dos tengan IP pblica. El router se supone que hace un NAT completo hacia dentro, o sea que desde el exterior no se llega al router si no que de forma transparente se "choca" contra el firewall. Lo normal en este tipo de firewalls es poner la poltica por defecto de FORWARD en denegar (DROP), pero eso lo veremos ms adelante.
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
Pero como nuestro trabajo es asegurar la red y optimizar los recursos de ella, vamos a asegurarnos de que solamente se pueda navegar por internet, denegando el acceso a
- 114 -
/sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
Ahora para poder terminar de aprender y a fin de poder practicar les dejo algunos ejemplos que seguramente podrs aplicar y modificar facilmente para cualquier proposito.
Supongamos que este firewall tiene alguna funcin adicional: es un servidor proxy y adems es un servidor de correo. Darle funcionalidades de este tipo a un firewall no es recomendable, porque si no se protegen bien esos puertos o si no est actualizado el software pueden entrar en el firewall a base de exploits comprometiendo TODA la red. De todas formas muchas empresas no se pueden permitir o no quieren tener una mquina para cada cosa. Supongamos tambin que la empresa tiene representantes comerciales y que se conectan a internet desde sus notebooks o smartphones desde una ip dinmica. Ademas, el jefe de la empresa quiere acceder a la red local desde casa con una conexin ADSL. Ahora en el firewall deberiamos tener instalado un servidor SMTP, POP3, y una VPN.
- 115 -
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables iptables iptables iptables iptables ACCEPT iptables iptables -A -A -A -A -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j
-A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
Ahora queremos compartir algn servicio pero de un servidor que tenemos dentro de la red local, por ejemplo el IIS de un servidor Windows 2000, y adems permitir la gestin remota por Terminal Server para esta mquina para una empresa externa. En este caso lo que hay que hacer es un redireccin de puerto. Veamos la configuracin con las nuevas reglas de DNAT:
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables -F -X -Z -t nat -F
- 116 -
-P -P -P -t -t
INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80 iptables -t nat -A PREROUTING -s 221.23.124.181 -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.10.12:3389 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
Bueno ya tenemos montada la red, pero conviene insistir en que esta ltima configuracin, con las redirecciones y los servicios de correo funcionando en el firewall es bastante insegura. Qu ocurre si atacan al servidor IIS de la red local? El firewall no serviria de gran cosa, lo poco que podra hacer una vez se ha entrado en la red local es evitar escaneos hacia el exterior desde la mquina atacada, aunque para ello el firewall deberia tener una buena configuracin con denegacin por defecto.
- 117 -
Figura 7: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos
En este tipo de firewall hay que permitir: - Acceso de la red local a internet. - Acceso pblico al puerto tcp/80 y tcp/443 del servidor de la DMZ - Acceso del servidor de la DMZ a una BBDD de la LAN - Obviamente bloquear el resto de acceso de la DMZ hacia la LAN. Qu tipo de reglas son las que hay que usar para filtrar el trfico entre la DMZ y la LAN? Solo pueden ser las FORWARD, ya que estamos filtrando entre distintas redes, no son paquetes destinados al propio firewall.
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.3.2:443 /sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward - 118 -
iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.5 -d 192.168.3.2 -p tcp --sport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.3.2 -p tcp --sport 1024:65535 --dport 3389 -j ACCEPT iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.0/24 -p tcp --sport 3389 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
Vamos a ver: si las mquinas de la DMZ tienen una ip pblica hay que tener muchsimo cuidado de no permitir el FORWARD por defecto. Si en la DMZ hay ip pblica NO ES NECESARIO HACER REDIRECCIONES de puerto, sino que basta con enrutar los paquetes para llegar hasta la DMZ. Este tipo de necesidades surgen cuando por ejemplo tenemos dos mquinas con un servidor web (un apache y un IIS); A cul de las dos le redirigimos el puerto 80? No hay manera de saberlo, por eso se deben asignar IPs pblicas o en su defecto usar puertos distintos. Por tanto hay que proteger convenientemente toda la DMZ. Tampoco hara falta enmascarar la salida hacia el exterior de la DMZ, si tiene una ip pblica ya tiene una pata puesta en internet; obviamente hay que decirle al router como llegar hasta esa ip pblica. As podra ser esta red:
Figura 8: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs pblicas
- 119 -
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables iptables iptables iptables iptables iptables iptables iptables iptables -F -X -Z -t nat -F -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 80 -j ACCEPT iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 443 -j ACCEPT iptables -A FORWARD -d 212.194.89.150/30 -j DROP iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.5 -d 212.194.89.152 -p tcp --sport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -d 212.194.89.152 -p tcp --sport 1024:65535 --dport 3389 -j ACCEPT iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -p tcp --sport 3389 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -j DROP iptables -A INPUT -s 212.194.89.152 -i eth2 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
Por qu hay que explicitar la abertura en uno y otro sentido? Porque la tercera regla cierra todo lo que va de la DMZ a la red local. Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ y que a su vez pueda volver a la LAN. Esto de tener que especificar la abertura en uno y otro sentido ser el pan de cada da en un iptables con poltica DROP por defecto: mejor proteccin pero ms trabajo. Por qu se explicita el puerto de origen/destino 1024:65535 en la primera y segunda regla? Imaginemos que un atacante logra acceso a la mquina de la DMZ. Si no especificamos el puerto de destino en esas dos reglas, el atacante puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp/3389, cosa fcil para un atacante que sepa algo de C o que tenga el programa pertinente a mano. De todas formas el atacante tendra que saber que existe ese tipo de reglas, si es listo probara con puertos de gestin o con puertos netbios. El problema es que se deja un vnculo con la LAN para administrarlo remotamente o para establecer relaciones de confianza y ah es donde reside el peligro.
Es mucho ms simple aplicar DROP por defecto cuando el firewall es en la propia mquina. Si recuerdan, al iniciar este modulo armabamos nuestro primer firewall. Ahora lo realizaremos de nuevo pero utilizando DROP.
#!/bin/sh echo -n Aplicando Reglas de Firewall... iptables -F iptables -X iptables -Z
- 121 -
iptables -t nat -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -s 195.65.34.234 -j ACCEPT iptables -A OUTPUT -d 195.65.34.234 -j ACCEPT iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT iptables -A OUTPUT -d 231.45.134.23 -p tcp --sport 3306 -j ACCEPT iptables -A INPUT -s 80.37.45.194 -p tcp --dport 20:21 -j ACCEPT iptables -A OUTPUT -d 80.37.45.194 -p tcp --sport 20:21 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 1:1024 iptables -A INPUT -p udp --dport 1:1024 iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP iptables -A INPUT -p udp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n"
- 122 -
NMAP
La herramienta para escanear puertos por excelencia, rechace imitaciones. Es una herramienta de consola rpida, efectiva y con multitud de opciones. Podemos usarla desde mquinas ajenas a nuestra red para comprobar si realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que "visin" pueden tener los hackers de nuestro sistema.
SHELL
En el propio script del firewall podemos aadir algunas opciones para descubrir fallos de sintaxis en las reglas. Claro, imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el script. Cul es? Es probable que el mensaje de error no aclare lo suficiente, por eso se puede aadir algo as al final de cada regla:
... iptables -A INPUT -s 195.55.234.2 -j ACCEPT && echo " regla-21 ok" iptables -A INPUT -s 213.62.89.145 -j ACCEPT && echo " regla-22 ok" ...
- 123 -
TALLER DE SNORT
Snort es un potente IDS/IPS (Intrusion Detection System/Intrusion Prevention System) que se ha convertido en un estndar en el campo de la seguridad de sistemas informticos. Es una herramienta que utiliza una filosofa muy similar a IPTables, ya que utiliza reglas sobre los paquetes que viajan en una red, sin embargo, dependiendo del modo de ejecucin va un poco mas all, permitiendo tomar decisiones sobre la informacin intercambiada y la deteccin de posibles ataques sobre peticiones que aunque aparentemente son legitimas, pueden encajar en algn patrn de ataque. Antes de profundizar sobre los modos y configuracin de Snort es necesario conocer el procedimiento de instalacin, que en algunos casos no resulta tan sencillo como se espera, de hecho es un poco complejo principalmente por la cantidad de paquetes que se deben instalar, sin embargo se intenta indicar las pautas generales para conseguir instalar Snort en plataformas Debian (Lenny, Squeeze).
Ahora con los repositorios indicados se puede instalar la clave GPG necesaria, para esto, ubicarse en el directorio /usr/src desde una consola, obtener la clave e instalarla
/usr/src# wget http://www.dotdeb.org/dotdeb.gpg /usr/src# cat dotdeb.gpg | apt-key add
Por otro lado, para que Snort funcione correctamente es necesario tener por un lado, algunas libreras instaladas en la maquina y por otro lado algunas herramientas y software del que depende Snort para su instalacin y posterior configuracin, en concreto se requiere, Apache, MySQL, gcc, libssl, flex, entre otras. Se puede ejecutar el siguiente comando APT para cumplir con todas las dependencias e instalar el software necesario, (Para MySQL se solicitar la contrasea del usuario Root, ser necesario ingresarla para que posteriormente se pueda ingresar en la base de datos)
/usr/src# apt-get update /usr/src# apt-get install apache2 libapache2-mod-php5 libwww-perl mysqlserver mysql-common mysql-client php5-mysql libnet1 libnet1-dev libpcre3 libpcre3-dev autoconf libcrypt-ssleay-perl libmysqlclient-dev php5-gd phppear libphp-adodb php5-cli libtool libssl-dev gcc-4.4 g++ automake gcc make flex bison apache2-doc ca-certificates vim
- 124 -
Cabe anotar, que si ya se dispone de un servidor Apache configurado con MySQL y PHP los paquetes correspondientes a dicho software pueden ser omitidos. Posteriormente se procede a instalar otras libreras que no se encuentran incluidas en los repositorios y que hay que instalar de forma manual, en concreto, dichas libreras son: DAQ, libpcap, libdnet. En todos los casos el directorio donde se encontrar posicionada la consola ser /usr/src/ DAQ
/usr/src# wget http://www.snort.org/dl/snort-current/daq-0.5.tar.gz /usr/src# tar -zxf daq-0.5.tar.gz && cd daq-0.5
NOTA IMPORTANTE: En sistemas en Debian 6.0 (squeeze), es necesario parchear manualmente el archivo
vim /usr/src/daq-0.5/os-daq-modules/daq_pcap.c
Cambiando la linea:
context->buffer_size = strtol(entry->key, NULL, 10);
Por la linea:
context->buffer_size = strtol(entry->value, NULL, 10);
LIBPCAP
/usr/src# wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz /usr/src# tar -zxf libpcap-1.1.1.tar.gz && cd libpcap-1.1.1 /usr/src/libpcap-1.1.1# ./configure --prefix=/usr -enable-shared /usr/src/libpcap-1.1.1# make && make install
LIBDNET
/usr/src# wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz /usr/src# tar -zxf libdnet-1.12.tgz && cd libdnet-1.12 /usr/src/libdnet-1.12# ./configure prefix=/usr enable-shared /usr/src/libdnet-1.12# make && make install
Despus de ejecutar todos los pasos anteriores se puede comenzar con la instalacin de Snort en un sistema GNU/Linux basado en Debian, nuevamente desde el directorio /usr/src se ejecutan los siguientes comandos:
- 125 -
/usr/src# wget http://www.snort.org/dl/snort-current/snort-2.9.0.5.tar.gz -O snort-2.9.0.5.tar.gz /usr/src# tar -zxf snort-2.9.0.5.tar.gz && cd snort-2.9.0.5 /usr/src/snort-2.9.0.5#./configure --with-mysql --enable-dynamicplugin --enable-perfprofiling --enable-ipv6 --enable-zlib --enable-reload /usr/src/snort-2.9.0.5# make && make install
Con los pasos anteriores se ha instalado correctamente Snort en el sistema, ahora se debe proceder a configurar el servicio para que pueda ser ejecutado fcilmente, para esto se ejecutan los siguientes comandos desde consola
/usr/src/snort-2.9.0.5# mkdir /etc/snort /etc/snort/rules /var/log/snort /var/log/barnyard2 /usr/local/lib/snort_dynamicrules /usr/src/snort-2.9.0.5# groupadd snort && useradd -g snort snort /usr/src/snort-2.9.0.5# chown snort:snort /var/log/snort /var/log/barnyard2 /usr/src/snort-2.9.0.5# cp /usr/src/snort-2.9.0.5/etc/*.conf* /etc/snort /usr/src/snort-2.9.0.5# cp /usr/src/snort-2.9.0.5/etc/*.conf* /etc/snort
Posteriormente es necesario establecer las opciones de configuracin necesarias en el archivo /etc/snort/snort.conf Instalar BARNYARD con los siguientes pasos:
/usr/src# wget http://www.securixlive.com/download/barnyard2/barnyard21.9.tar.gz /usr/src# tar -zxf barnyard2-1.9.tar.gz && cd barnyard2-1.9 /usr/src/barnyard2-1.9# ./configure --with-mysql /usr/src/barnyard2-1.9# make && make install /usr/src# mv /usr/local/etc/barnyard2.conf /etc/snort
por
output alert_fast
Establecer las variables de configuracin de Snort, Linea 39: ipvar HOME_NET 192.168.1.0/24 Linea 42: ipvar EXTERNAL_NET !$HOME_NET Linea 80: var RULE_PATH ./rules (aqu se indica el directorio donde se encuentran ubicados los archivos de reglas)
- 126 -
Lineas 186-190: Comentar todas las entradas correspondientes a preprocessor normalize_* Linea 366: Configuracin adicional sobre tipos de instalacin, establecer la siguiente linea: output unified2: filename snort.log, limit 128 Linea 393: A partir de esta linea se incluyen los archivos de reglas para Snort, en este caso concreto se comentarn todas las inclusiones, dejando solamente la primera (local.rules).
Crear una regla de pruebas para verificar el funcionamiento del sistema, crear y editar el archivo /etc/snort/rules/local.rules incluyendo las siguientes lineas:
alert icmp any any -> $HOME_NET any (msg:ICMP test; sid:10000001;)
Probar Snort.
snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
Ahora se procede a configurar la base de datos MySQL y con esto en mente, la primera instruccin que se llevar a cabo ser crear un usuario Snort con los privilegios necesarios.
/usr/local/bin/log# mysql -u root -p mysql> create database snort ; mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost; mysql> SET PASSWORD FOR snort@localhost=PASSWORD(snort); mysql> exit
Ahora se procede a crear la base de datos partiendo del esquema existente en Snort tras su instalacin, el nombre de esta base de datos ser snort.
/tmp# mysql -u root -p < /usr/src/snort-2.9.0.5/schemas/create_mysql snort /tmp# mysql -u root -p mysql> use snort mysql> show tables ;
Validamos que se hayan creados las tablas correspondientes en nuestra base de datos. Por ultimo es necesario configurar el servidor Apache con PHP para que todo el circuito de configuracin quede definido, para esto se ejecutan los siguientes comandos Editar el archivo /etc/php5/apache2/php.ini y cambiar la variable error_reporting con el siguiente valor:
error_reporting = E_ALL & ~E_NOTICE
/# /# /# /# /#
cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled a2enmod ssl pear config-set preferred_state alpha pear install Image_Color Image_Canvas Image_Graph /etc/init.d/apache2 restart
- 127 -
Se procede a instalar BASE (Basic Analysis and Security Engine). Se trata de una aplicacin web que permite realizar el anlisis de los paquetes capturados por snort.
/usr/src# wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base1.4.5.tar.gz /usr/src# tar -zxf base-1.4.5.tar.gz /usr/src# cp -r base-1.4.5 /var/www/base /usr/src# chmod 777 /var/www
Ahora desde el navegador web, apuntar a https://<DIRECCION_LOCAL>/base Dado que se trata de la primera vez que se ejecuta la aplicacin web, se procede a iniciar el proceso de configuracin que consta de 5 pasos
Paso 1
Seleccionar el lenguaje de la eleccin del usuario Ruta de adodb: /usr/share/php/adodb
Paso 2
Definir las caractersticas de conexin a la base de datos MySQL creada y configurada en pasos anteriores.
Paso 3
Definir los valores de autenticacin del sistema BASE, estos valores sern utilizados posteriormente para utilizar BASE.
Paso 4
Creacin de las tablas del sistema BASE, en este punto, las tablas que se van a crear van a permitir extender las funcionalidades de Snort empleado BASE. Presionar sobre Create BASE AG
Paso 5
Si hasta este punto la configuracin ha sido correcta, se debe ensear la interfaz de autenticacin de usuario.
Una vez finalizados los pasos anteriores se tiene Snort configurado y preparado para su ejecucin con todas las dependencias necesarias.
- 128 -