20
Spanish Developers Community número 7 - diciembre 2013

Spanish Developers Community

Embed Size (px)

DESCRIPTION

número 7 - diciembre de 2013

Citation preview

Page 1: Spanish Developers Community

Spanish Developers Communitynúmero 7 ­ diciembre 2013

Page 2: Spanish Developers Community

ÍNDICECONTENIDOS PRINCIPALES

responsable del proyecto: Antonio García Prats

coordinación y comunicación: Antonio García

sitio web: www.spanishdeveloperscommunity.es

facebook: www.facebook.com/spanishdeveloperscommunity.es

twitter: @spanishdc

diseño de portada: Antonio García

2© 2013 - www.spanishdeveloperscommunity.es

Acerca de

Spanish Developers Community es unainiciativa sin ánimo de lucro, dedicada al fomento ydifusión del software basado en licencias GPL,Programación de lenguajes de programación,Sistemas Operativos Linux / Android e iOS así comodiseño gráfico y redes sociales.

Alcanzar nuestro objetivo de una función docente ycon la intención de que estos conocimientos puedanaplicarse de una manera práctica en las actividadescotidianas de los estudiantes universitarios,empresarios y autónomos .

Spanish developers community se basa en lacolaboración desinteresada de profesionales yestudiantes que comparten sus saber­hacer, susconocimientos teóricos y prácticos con la comunidadinformática en Internet.

Esta publicación digital se distribuye mensualmente

bajo una licencia Creative Commons

Colabora

¿Quieres colaborar con Spanish Developers

Community?. Tienes muchas formas de hacerlo:

Envía tu artículo Puedes enviarnos tu artículo a la

dirección de correo electrónico:

[email protected]

Colabora en nuestros proyectos Puedes

ayudarnos en los proyectos de canal de youtube,

blogs, página web, redes sociales y página web.

Contactar

Puedes contactar conmigo para enviarnos cualquier

duda que tengas en el correo electrónico:

[email protected]

Depósito Legal J 368­2013

01. Editorial02. Consejos para hacer tu wifi más segura03. ¿Qué condiciones debe cumplir tu contraseña para que sea más segura?04. Las mejores aplicaciones de hacking y seguridad en linux05. Protocolo SSH06. DES base 64 ­ Programacion en Java

Page 3: Spanish Developers Community

Editorial

3© 2013 - www.spanishdeveloperscommunity.es

Buscamos en este número procurar profundizar un poco más en el mundo dela seguridad en las redes y la criptografía.

En este numero especial trataremos de forma básica algunos temasrelacionados con las redes sociales, tales como cuáles son las principalestécnicas para que tu red inhalambrica sea lo más segura posible. Ademásmuchos de los usuarios de ordenadores no tienen en cuenta tomar lasprecauciones necesarias a la hora de escribir una clave o contraseña losuficientemente segura.

Realizaremos un viaje a través de las mejores aplicaciones en linux apropósito hackear y aplicar seguridad en redes. Aprenderemos qué es SSH ypara qué sirve.

Por último, veremos cómo se implementa en Java un algoritmo de cifradosimétrica.

Antonio García Prats

Page 4: Spanish Developers Community

4© 2013 - www.spanishdeveloperscommunity.es

Consejospara hacer tu wifi

más segura

Page 5: Spanish Developers Community

5© 2013 - www.spanishdeveloperscommunity.es

A pesar de que las conexiones WiFi son de las másutilizadas en la actualidad ninguna de estas redes son100% seguras, pero si se aplica una buenaconfiguración podemos lograr que sean muy fiables, ypor tanto disminuir la probabilidad de que alguien nospueda robar nuestra señal para visitar páginas web o conotros fines más maliciosos.

Para poder ayudaros a la hora de proteger vuestra señalWiFi, en acens os hemos preparado un listado de 7consejos que os permitirá disfrutar de una conexión mássegura, y de esta forma evitar que alguien se puedaadueñar de nuestro ancho de banda.

1.­ Cambiar la clave por defecto de la conexiónWiFi en el router

Cuando uno recibe un router inalámbrico por parte deuna proveedora de red, éste viene configurado con unaserie de parámetros predefinidos. Entre ellos suele estarla contraseña de acceso a la red, por lo que el primerpaso que tenemos que hacer nada más recibir estedispositivo, es acceder a él y cambiar esta clave.

2.­ Utilizar contraseñas con cifrado WPA

Sobre los tipos de encriptación de las contraseñas yahablamos en el White Paper: ‘Sistemas de seguridad enredes inalámbricas: WEP, WAP y WAP2’, donde vimoscuál es el sistema más fiable a la hora de configurarnuestro router. Siempre que nuestro dispositivo nos lopermita, tenemos que hacer uso de claves WPA o WPA2que son más seguras y más difíciles de hackear.

3.­ Ocultar el nombre de nuestro SSID

El SSID es el identificador de nuestra red, es decir, elnombre que muestra nuestra conexión cuando nosqueremos conectar a ella (ejemplo de este tipo denombre puede ser WLAN_XXX). Ocultando estainformación lograremos que nuestra red no aparezca enel listado de redes localizadas, y por tanto estaremosimpidiendo que se conecten a ella. Si optamos por estaopción, al no aparecer en el listado, a la hora deconectarnos desde nuestros equipos tendremos queelegir la opción de “otras conexiones” que tienen todoslos sistemas operativos en su menú WiFi e introducirahí el SSID elegido y la contraseña.

4.­ Activar el filtrado de direcciones MAC

Una dirección MAC es un código único que sirve paraidentificar a cada uno de los dispositivos que se puedenconectar a Internet. Los router suelen tener un apartadopara filtrar aquellas direcciones MAC a las quequeremos dar permiso para que se conecten, impidiendoque otros dispositivos puedan navegar por nuestra red.

5.­ Hacer uso de cortafuegos

Si nuestro router o sistema operativo nos ofrece unFirewall sería conveniente activarlo. De esta formapondremos otra barrera más para acceder a nuestra redWiFi.

6.­ Adjudicar direcciones IP a los equipos

Para que un dispositivo pueda navegar por Internet esnecesario que tenga asignado una dirección IP. Estaasignación de direcciones la suele hacer de formaautomática el router para facilitar que cualquierdispositivo pueda hacer uso de la red.

Para dificultar el acceso, se puede configurar el routerpara indicar qué direcciones IP son las que podránnavegar. Una vez hecho esto, tendrás que asignarle unade las direcciones IP permitidas en el router a cada unode los equipos.

7.­ Desconectar el router cuando no loutilicemos

La mayoría de los usuarios tiene siempre encendido elrouter, lo que están permitiendo que si alguien tiene lasclaves pueda navegar libremente por la red en cualquiermomento. Siempre que no estemos navegando, es muyrecomendable desenchufar el router.

Siguiendo estos simples consejos que os hemos contadoen acens podréis disfrutar de una conexión WiFi muchomás segura.

Page 6: Spanish Developers Community

6© 2013 - www.spanishdeveloperscommunity.es

¿Qué condiciones debe cumplir tu

contraseñapara que sea más

segura?

La primera medida de seguridad a la que se tiene queenfrentar un atacante es la contraseña de la red, ya seapor un método u otro, al final tiene que conseguirla. Poreste motivo es de vital importancia que dichacontraseña sea lo más compleja posible, de modo que eltiempo que tenga que invertir para averiguarla seamáximo para que desista en su intento.

Condiciones que debe cumplir una buenacontraseña

Una buena contraseña debe cumplir los siguientesrequisitos:

Debe tener letras en mayúsculas y minúsculas.

Debe tener números.

Debe tener símbolos (siempre que sea posible).

No puede estar relacionada con nosotros.

La tenemos que elegir nosotros

Hoy en día todos los routers vienen completamenteconfigurados para hacernos la vida mucho más fácil,conectas y funciona. Incluso poseen contraseñas quecumplen con todos los requisitos que hemosmencionado anteriormente, el único problema de dichacontraseña es que no la hemos elegido nosotros, portanto no podemos garantizar que nadie más la conozca.

Así que nada más recibir un dispositivo, lo primero quedebemos hacer es cambiar todas las claves del mismo.Para que no las olvidemos, podemos apuntarlas en unpapel pegado en la base del router.

Un galimatías no tiene por qué ser más seguroque una frase

Carretera sin curvasCuando necesitemos elegir una contraseña, debemosutilizar el mayor número de caracteres posible, pero notiene por qué ser un galimatías sin sentido. Losgalimatías son muy complicados de recordar, sinembargo, una frase larga con algunas modificacionesresulta muy sencillo y puede resultar igual de segura.

Veamos un ejemplo: la carretera era muy aburridaporque no tenia curvas

Ahora añadimos algunas modificaciones sencillas, peroque elevarán la dificultad a un atacante:

LaCarr3t3raEraMUYAburridaPorQueNOt3niaCurvaS.

Como vemos, hemos insertado algunas mayúsculas,sustituido las “e” por “3” y añadido un punto al final.Sigue siendo una contraseña fácil de recordar porquerecordamos la frase y segura porque cumple todos losrequisitos que explicamos anteriormente.

Page 7: Spanish Developers Community

7© 2013 - www.spanishdeveloperscommunity.es

Protocolosde seguridad en redes inhalambricas

1 Introducción a WEP, WPA y WPA2

La seguridad es un aspecto que cobra especial relevanciacuando hablamos de redes inalámbricas. Para tener acceso auna red cableada es imprescindible una conexión física alcable de la red. Sin embargo, en una red inalámbricadesplegada en una oficina un tercero podría acceder a la redsin ni siquiera estar ubicado en las dependencias de laempresa, bastaría con que estuviese en un lugar próximodonde le llegase la señal. Es más, en el caso de un ataquepasivo, donde sólo se escucha la información, ni siquiera sedejan huellas que posibiliten una identificación posterior.

El canal de las redes inalámbricas, al contrario que en las

redes cableadas privadas, debe considerarse inseguro.Cualquiera podría estar escuchando la informacióntransmitida. Y no sólo eso, sino que también se puedeninyectar nuevos paquetes o modificar los ya existentes(ataques activos). Las mismas precauciones que tenemospara enviar datos a través de Internet deben tenerse tambiénpara las redes inalámbricas.

Conscientes de este problema, el IEEE [1] publicó unmecanismo opcional de seguridad, denominado WEP, en lanorma de redes inalámbricas 802.11 [2]. Pero WEP,desplegado en numerosas redes WLAN, ha sido roto dedistintas formas, lo que lo ha convertido en una proteccióninservible.

Page 8: Spanish Developers Community

8© 2013 - www.spanishdeveloperscommunity.es

Para solucionar sus deficiencias, el IEEE comenzó eldesarrollo de una nueva norma de seguridad, conocida como802.11i [3], que permitiera dotar de suficiente seguridad a lasredes WLAN.

El problema de 802.11i está siendo su tardanza en ver la luz.Su aprobación se espera para junio de 2004. Algunasempresas en vistas de que WEP (de 1999) era insuficiente yde que no existían alternativas estandarizadas mejores,decidieron utilizar otro tipo de tecnologías como son lasVPNs para asegurar los extremos de la comunicación (porejemplo, mediante IPSec). La idea de proteger los datos deusuarios remotos conectados desde Internet a la redcorporativa se extendió, en algunos entornos, a las redesWLAN. De hecho, como hemos comentado antes, amboscanales de transmisión deben considerarse inseguros. Pero latecnología VPN es quizás demasiado costosa en recursospara su implementación en redes WLAN.

No ajena a las necesidades de los usuarios, la asociación deempresas Wi­Fi [4] decidió lanzar un mecanismo deseguridad intermedio de transición hasta que estuviesedisponible 802.11i, tomando aquellos aspectos que estabansuficientemente avanzados del desarrollo de la norma. Elresultado, en 2003, fue WPA [5].

Este artículo analiza las características de los mecanismos deseguridad WEP, WPA y WPA2 (IEEE 802.11i). En elmomento de escribir estas líneas, WPA2 todavía no ha vistola luz por lo que la documentación relacionada es todavíamuy escasa.

2 WEP

2.1 Características y funcionamiento

WEP (Wired Equivalent Privacy, privacidad equivalente alcable) es el algoritmo opcional de seguridad incluido en lanorma IEEE 802.11 [2]. Los objetivos de WEP, según elestándar, son proporcionar confidencialidad, autentificacióny control de acceso en redes WLAN [2, §6.1.2]. Estudiamosa continuación las principales características de WEP.

WEP utiliza una misma clave simétrica y estática en lasestaciones y el punto de acceso. El estándar no contemplaningún mecanismo de distribución automática de claves, loque obliga a escribir la clave manualmente en cada uno delos elementos de red. Esto genera varios inconvenientes. Porun lado, la clave está almacenada en todas las estaciones,aumentando las posibilidades de que sea comprometida. Ypor otro, la distribución manual de claves provoca un

aumento de mantenimiento por parte del administrador de lared, lo que conlleva, en la mayoría de ocasiones, que la clavese cambie poco o nunca.

El algoritmo de encriptación utilizado es RC4 con claves(seed), según el estándar, de 64 bits. Estos 64 bits estánformados por 24 bits correspondientes al vector deinicialización más 40 bits de la clave secreta. Los 40 bits sonlos que se deben distribuir manualmente. El vector deinicialización (IV), en cambio, es generado dinámicamente ydebería ser diferente para cada trama. El objetivo perseguidocon el IV es cifrar con claves diferentes para impedir que unposible atacante pueda capturar suficiente tráfico cifrado conla misma clave y terminar finalmente deduciendo la clave.Como es lógico, ambos extremos deben conocer tanto laclave secreta como el IV. Lo primero sabemos ya que esconocido puesto que está almacenado en la configuración decada elemento de red. El IV, en cambio, se genera en unextremo y se envía en la propia trama al otro extremo, por loque también será conocido. Observemos que al viajar el IVen cada trama es sencillo de interceptar por un posibleatacante.

El algoritmo de encriptación de WEP es el siguiente:

Se calcula un CRC de 32 bits de los datos. Este CRC­32 es elmétodo que propone WEP para garantizar la integridad de losmensajes (ICV, Integrity Check Value).Se concatena la clave secreta a continuación del IV formadoel seed.El PRNG (Pseudo­Random Number Generator) de RC4genera una secuencia de caracteres pseudoaleatorios(keystream), a partir del seed, de la misma longitud que losbits obtenidos en el punto 1.Se calcula la O exclusiva (XOR) de los caracteres del punto1 con los del punto 3. El resultado es el mensaje cifrado.Se envía el IV (sin cifrar) y el mensaje cifrado dentro delcampo de datos (frame body) de la trama IEEE 802.11.El algoritmo para descifrar es similar al anterior. Debido aque el otro extremo conocerá el IV y la clave secreta, tendráentonces el seed y con ello podrá generar el keystream.Realizando el XOR entre los datos recibidos y el keystreamse obtendrá el mensaje sin cifrar (datos y CRC­32). Acontinuación se comprobara que el CRC­32 es correcto.

2.2 Debilidad del vector de inicialización

La implementación del vector de inicialización (IV) en elalgoritmo WEP tiene varios problemas de seguridad.Recordemos que el IV es la parte que varía de la clave (seed)para impedir que un posible atacante recopile suficiente

Page 9: Spanish Developers Community

9© 2013 - www.spanishdeveloperscommunity.es

información cifrada con una misma clave.

Sin embargo, el estándar 802.11 no especifica cómo manejarel IV. Según [2, §8.2.3] se indica que debería cambiarse encada trama para mejorar la privacidad, pero no obliga a ello.Queda abierta a los fabricantes la cuestión de cómo variar elIV en sus productos. La consecuencia de esto es que buenaparte de las implementaciones optan por una soluciónsencilla: cada vez que arranca la tarjeta de red, se fija el IV a0 y se incrementa en 1 para cada trama. Y esto ocasiona quelos primeras combinaciones de IVs y clave secreta se repitanmuy frecuentemente. Más aún si tenemos en cuenta que cadaestación utiliza la misma clave secreta, por lo que las tramascon igual clave se multiplican en el medio.

Por otro lado, el número de IVs diferentes no es demasiadoelevado (2^24=16 millones aprox.), por lo que terminaránrepitiéndose en cuestión de minutos u horas [6]. El tiemposerá menor cuanto mayor sea la carga de la red. Lo idealsería que el IV no se repitiese nunca, pero como vemos, estoes imposible en WEP. La cantidad de veces que se repite unmismo IV dependerá de la implementación elegida paravariar el IV por el fabricante (secuencial, aleatoria, etc.) y dela carga de la red. Observemos que es trivial saber si dostramas han sido cifradas con la misma clave, puesto que elIV se envía sin cifrar y la clave secreta es estática.

La longitud de 24 bits para el IV forma parte del estándar yno puede cambiarse. Bien es cierto que existenimplementaciones con claves de 128 bits (lo que se conocecomo WEP2), sin embargo, en realidad lo único que seaumenta es la clave secreta (104 bits) pero el IV se conservacon 24 bits. El aumento de la longitud de la clave secreta nosoluciona la debilidad del IV.

¿Qué podemos hacer una vez hemos capturado varias tramascon igual IV, es decir, con igual keystream? Necesitamosconocer el mensaje sin cifrar de una de ellas. Haciendo elXOR entre un mensaje sin cifrar y el mismo cifrado, nos daráel keystream para ese IV. Conociendo el keystream asociadoa un IV, podremos descifrar todas las tramas que usen elmismo IV. El problema es entonces conocer un mensaje sincifrar, aunque esto no es tan complicado, porque existentráficos predecibles o bien, podemos provocarlos nosotros(mensajes ICMP de solicitud y respuesta de eco,confirmaciones de TCP, etc.) [6].

Con lo que hemos descrito no podemos deducir la clavesecreta, aunque sí es posible generar una tabla con los IVs delos que sabemos su keystream, la cual permitirá descifrarcualquier mensaje que tenga un IV contenido en la tabla [6].

Sin embargo, podemos llegar a más y deducir la clavesecreta. Una nueva vulnerabilidad del protocolo WEP [7]permite deducir la clave total conociendo parte de la clave(justamente, el IV que es conocido). Para ello necesitamosrecopilar suficientes IVs y sus keystreams asociadosobtenidos por el procedimiento anterior.

2.3 Otras debilidades de WEP

WEP también adolece de otros problemas [6, 8] además delos relacionados con el vector de inicialización y la forma deutilizar el algoritmo RC4.

Entre los objetivos de WEP, como comentamos más arriba,se encuentra proporcionar un mecanismo que garantice laintegridad de los mensajes. Con este fin, WEP incluye unCRC­32 que viaja cifrado. Sin embargo, se ha demostrado[6] que este mecanismo no es válido y es posible modificaruna parte del mensaje y a su vez el CRC, sin necesidad deconocer el resto. Esto permitiría, por ejemplo, modificaralgún número de la trama sin que el destino se percatara deello. En lugar del algoritmo de CRC se recomienda comoICV (Integrity Check Value) un algoritmo diseñado para talfin como SHA1­HMAC [9].

El estándar IEEE 802.11 incluye un mecanismo deautentificación de las estaciones basado en un secretocompartido [2, §8.1]. Para ello se utiliza la misma contraseñade WEP en la forma que describimos a continuación. Unaestación que quiere unirse a una red, solicita al punto deacceso autentificación. El punto de acceso envía un texto enclaro a la estación y ésta lo cifra y se lo devuelve. El puntode acceso finalmente descifra el mensaje recibido,comprueba que su ICV es correcto y lo compara con el textoque envió.

El mecanismo anterior de autentificación de secretocompartido tiene el problema de enviar por la red el mismotexto sin cifrar y cifrado con la clave WEP (esta clavecoincide con la utilizada para asegurar la confidencialidad).El estándar es consciente de esta debilidad y aconseja noutilizar el mismo IV para el resto de transmisiones. Sinembargo, tanto si las implementaciones repiten ese IV comosino, el mecanismo ofrece información que podría seraprovechada para romper la clave WEP utilizando lasdebilidades del vector de inicialización explicadas más arriba[8].

WEP no incluye autentificación de usuarios. Lo más queincluye es la autentificación de estaciones descrita (podránentrar aquellas estaciones que en su configuración tengan

Page 10: Spanish Developers Community

10© 2013 - www.spanishdeveloperscommunity.es

almacenada la clave WEP). El sistema de autentificacióndescrito es tan débil que el mejor consejo sería no utilizarlopara no ofrecer información extra a un posible atacante. Eneste caso tendríamos una autentificación de sistema abierto[2, §8.1], es decir, sin autentificación.

Entre la larga lista de problemas de seguridad de WEP seencuentra también la ausencia de mecanismos de proteccióncontra mensajes repetidos (replay). Esto permite que secapture un mensaje y se introduzca en la red en un momentoposterior. El paquete podría ser, por ejemplo, el que contienela contraseña de un usuario para utilizar un determinadoservicio.

Todos los problemas comentados unidos a las característicaspropias de WEP como es la distribución manual de claves yla utilización de claves simétricas, hacen que este sistema nosea apropiado para asegurar una red inalámbrica. El estudiode N. Borisov, I. Goldberg y D. Wagner [6] explicarazonadamente que ninguno de los objetivos planteados porWEP se cumplen.

2.4 Alternativas a WEP

Las vulnerabilidades explicadas de WEP son motivos másque suficientes para utilizar otros mecanismos de seguridaden redes WLAN.

Aunque no forma parte del estándar, los fabricantes deproductos Wi­Fi decidieron ofrecer la posibilidad de utilizarclaves del doble de longitud (de 64 bits a 128 bits). WEPutilizado con claves de 128 bits es lo que se conocegeneralmente como WEP2. Sin embargo, debemos observarque la longitud del vector de inicialización sigue siendo de24 bits (las tramas IEEE 802.11 no contemplan un mayornúmero de bits para enviar el IV), por lo que lo único que seha aumentado es la clave secreta (de 40 bits a 104 bits).Debido a que la longitud del IV y su forma de utilizarlo novarían, las debilidades del IV pueden seguir siendoaprovechadas de la misma manera. WEP2 no resuelve losproblemas de WEP [6].

Otra variante de WEP utilizada en algunas implementacioneses WEP dinámico. En este caso se busca incorporarmecanismos de distribución automática de claves y deautentificación de usuarios mediante 802.1x/EAP/RADIUS.Requiere un servidor de autentificación (RADIUSnormalmente) funcionando en la red. En el caso de que lamisma clave (clave secreta + WEP) no se utilice en más deuna trama, este mecanismo sería suficiente para compensarlas principales debilidades de WEP.

Sin embargo, la solución preferida por las empresas comoalternativa a WEP ha sido la utilización de VPNs, de lamisma manera que se haría si los usuarios estuviesenconectados remotamente a la oficina. La tecnología de VPNsestá suficiente probada y se considera segura, aunque no hasido diseñada específicamente para redes WLAN. Tienecomo inconveniente la falta de interoperatibilidad entredispositivos de distintos fabricantes.

Los mecanismos diseñados específicamente para redesWLAN para ser los sucesores de WEP son WPA [5] y WPA2(IEEE 802.11i) [3]. El primero es de 2003 y el segundo seespera para 2004. Se estudian a continuación.

3 WPA

WPA (Wi­Fi Protected Access, acceso protegido Wi­Fi) es larespuesta de la asociación de empresas Wi­Fi a la seguridadque demandan los usuarios y que WEP no puedeproporcionar.

El IEEE tiene casi terminados los trabajos de un nuevoestándar para reemplazar a WEP, que se publicarán en lanorma IEEE 802.11i a mediados de 2004. Debido a latardanza (WEP es de 1999 y las principales vulnerabilidadesde seguridad se encontraron en 2001), Wi­Fi decidió, encolaboración con el IEEE, tomar aquellas partes del futuroestándar que ya estaban suficientemente maduras y publicarasí WPA. WPA es, por tanto, un subconjunto de lo que seráIEEE 802.11i. WPA (2003) se está ofreciendo en losdispositivos actuales.

WPA soluciona todas las debilidades conocidas de WEP y seconsidera suficientemente seguro. Puede ocurrir incluso queusuarios que utilizan WPA no vean necesidad de cambiar aIEEE 802.11i cuando esté disponible.

3.1 Características de WPA

Las principales características de WPA son la distribucióndinámica de claves, utilización más robusta del vector deinicialización (mejora de la confidencialidad) y nuevastécnicas de integridad y autentificación.

WPA incluye las siguientes tecnologías:

IEEE 802.1X. Estándar del IEEE de 2001 [10] paraproporcionar un control de acceso en redes basadas enpuertos. El concepto de puerto, en un principio pensado paralas ramas de un switch, también se puede aplicar a lasdistintas conexiones de un punto de acceso con las

Page 11: Spanish Developers Community

11© 2013 - www.spanishdeveloperscommunity.es

estaciones. Las estaciones tratarán entonces de conectarse aun puerto del punto de acceso. El punto de acceso mantendráel puerto bloqueado hasta que el usuario se autentifique. Coneste fin se utiliza el protocolo EAP [11] y un servidor AAA(Authentication Authorization Accounting) como puede serRADIUS (Remote Authentication Dial­In User Service) [12].Si la autorización es positiva, entonces el punto de accesoabre el puerto. El servidor RADIUS puede contener políticaspara ese usuario concreto que podría aplicar el punto deacceso (como priorizar ciertos tráficos o descartar otros).EAP. EAP, definido en la RFC 2284 [11], es el protocolo deautentificación extensible para llevar a cabo las tareas deautentificación, autorización y contabilidad. EAP fuediseñado originalmente para el protocolo PPP (Point­to­PointProtocol) [13], aunque WPA lo utiliza entre la estación y elservidor RADIUS. Esta forma de encapsulación de EAP estádefinida en el estándar 802.1X bajo el nombre de EAPOL(EAP over LAN) [10].TKIP (Temporal Key Integrity Protocol). Según indica Wi­Fi, es el protocolo encargado de la generación de la clavepara cada trama [4].MIC (Message Integrity Code) o Michael. Código queverifica la integridad de los datos de las tramas [4].

3.2 Mejoras de WPA respecto a WEP

WPA soluciona la debilidad del vector de inicialización (IV)de WEP mediante la inclusión de vectores del doble delongitud (48 bits) y especificando reglas de secuencia que losfabricantes deben implementar. Los 48 bits permiten generar2 elevado a 48 combinaciones de claves diferentes, lo cualparece un número suficientemente elevado como para tenerduplicados. El algoritmo utilizado por WPA sigue siendoRC4. La secuencia de los IV, conocida por ambos extremosde la comunicación, se puede utilizar para evitar ataques derepetición de tramas (replay).

Para la integridad de los mensajes (ICV), se ha eliminado elCRC­32 que se demostró inservible en WEP y se ha incluidoun nuevo código denominado MIC.

Las claves ahora son generadas dinámicamente y distribuidasde forma automática por lo que se evita tener quemodificarlas manualmente en cada uno de los elementos dered cada cierto tiempo, como ocurría en WEP.

Para la autentificación, se sustituye el mecanismo deautentificación de secreto compartido de WEP así como laposibilidad de verificar las direcciones MAC de lasestaciones por la terna 802.1X / EAP / RADIUS. Suinconveniente es que requiere de una mayor infraestructura:

un servidor RADIUS funcionando en la red, aunque tambiénpodría utilizarse un punto de acceso con esta funcionalidad.

3.3 Modos de funcionamiento de WPA

WPA puede funcionar en dos modos:

Con servidor AAA, RADIUS normalmente. Este es el modoindicado para las empresas. Requiere un servidorconfigurado para desempeñar las tareas de autentificación,autorización y contabilidad.Con clave inicial compartida (PSK). Este modo estáorientado para usuarios domésticos o pequeñas redes. Norequiere un servidor AAA, sino que se utiliza una clavecompartida en las estaciones y punto de acceso. Al contrarioque en WEP, esta clave sólo se utiliza como punto de iniciopara la autentificación, pero no para el cifrado de los datos.

4 WPA2 (IEEE 802.11i)

802.11i [3] es el nuevo estándar del IEEE para proporcionarseguridad en redes WLAN. Se espera que esté concluidotodo el proceso de estandarización para mediados de 2004.Wi­Fi [4] está haciendo una implementación completa delestándar en la especificación WPA2.

Sus especificaciones no son públicas por lo que la cantidadde información disponible en estos momentos es realmenteescasa.

WPA2 incluye el nuevo algoritmo de cifrado AES (AdvancedEncryption Standard), desarrollado por el NIS [14]. Se tratade un algoritmo de cifrado de bloque (RC4 es de flujo) conclaves de 128 bits. Requerirá un hardware potente pararealizar sus algoritmos. Este aspecto es importante puestoque significa que dispositivos antiguos sin suficientescapacidades de proceso no podrán incorporar WPA2.

Para el aseguramiento de la integridad y autenticidad de losmensajes, WPA2 utiliza CCMP (Counter­Mode / CipherBlock Chaining / Message Authentication Code Protocol) enlugar de los códigos MIC.

Otra mejora respecto a WPA es que WPA2 incluirá soporteno sólo para el modo BSS sino también para el modo IBSS(redes ad­hoc).

Page 12: Spanish Developers Community

12© 2013 - www.spanishdeveloperscommunity.es

las mejores aplicaciones dehacking y seguridad en

Linux

Page 13: Spanish Developers Community

13© 2013 - www.spanishdeveloperscommunity.es

las mejores aplicaciones dehacking y seguridad en

Linux

Linux es el sistema operativo de los hackers por excelencia. Esto es así no porque sea “complicado” deusar sino por la enorme cantidad de herramientas de hacking y seguridad desarrolladas para este sistema.

1. John the Ripper: herramienta para cracking de contraseñas. Es una de las más conocidas y populares(también tiene versión Windows). Además de autodetectar el hash de las contraseñas, puedes configurarlocomo quieras. Lo puedes usar en contraseñas encriptadas para Unix (DES, MD5 ó Blowfish), KerberosAFS y Windows. Tiene módulos adicionales para incluir hashes de contraseñas badadas en MD4 yalmacenadas en LDAP, MySQL y otros.

2. Nmap: ¿quién no conoce Nmap?, sin duda el mejor programa para se seguridad para redes. Puedesusarlo para encontrar ordenadores y servicios en una red. Se usa sobre todo para escanear puertos, peroesta es sólo una de sus posibilidades. También es capaz de descubrir servicios pasivos en una red asícomo dar detalles de los ordenadores descubiertos (sistema operativo, tiempo que lleva conectado,software utilizado para ejecutar un servicio, presencia de un firewall ó incluso la marca de la tarjeta dered remota). Funciona en Windows y Mac OS X también.

3. Nessus: herramienta para encontrar y analizar vulnerabilidades de software, como aquellas que puedanser utilizadas para controlar o acceder a los datos del equipo remoto. También localiza passwords pordefecto, parches no instalados, etc.

4. chkrootkit: básicamente es un shell script para permitir descubrir rootkits instalados en nuestrosistema. El problema es que muchos rootkits actuales detectan la presencia de programas como este parano ser detectados.

5. Wireshark: sniffer de paquetes, se utiliza para analizar el tráfico de red. Es parecido a tcpdump (luegohablamos de él) pero con una GUI y más opciones de ordenación y filtro. Coloca la tarjeta en modopromiscuo para poder analizar todo el tráfico de la red. También está para Windows.

6. netcat: herramienta que permite abrir puertos TCP/UDP en un equipo remoto (después se queda a laescucha) , asociar una shell a ese puerto y forzar conexiones UDP/TCP (útil para rasteo de puertos otransferecias bit a bit entre dos equipos).

7. Kismet: sistema de detección de redes, sniffer de paquetes y de intrusión para redes inalámbricas802.11.

8. hping: generador y analizador de paquetes para el protocolo TCP/IP. En las últimas versiones sepueden usar scripts basados en el lenguaje Tcl y también implementa un motor de strings (cadenas detexto) para describir los paquetes TCP/IP, de esta manera es más fácil de entenderlos además de podermanipularlos de una manera bastante fácil.

9. Snort: es un NIPS: Network Prevention System y un NIDS: Network Intrusion Detetection, capaz deanalizar redes IP. Se usa sobre todo para detectar ataques como buffer overflows, acceso a puertosabiertos, ataques web, etc.

10. tcpdump: herramienta de debugging que se ejecuta desde la línea de comandos. Permite ver lospaquetes TCP/IP (y otros) que se están transmitiendo o recibiendo desde el ordenador.

11. Metasploit: esta herramienta que nos proporciona información sobre vulnerabilidades de seguridad ypermite hacer pruebas de penetración contra sistemas remotos. Tiene también un framework para realizartus propias herramientas y está tanto para Linux como para Windows. Existen muchos tutoriales por lared donde explican cómo utilizarlo.

Page 14: Spanish Developers Community

14© 2013 - www.spanishdeveloperscommunity.es

protocolo

SSH

Page 15: Spanish Developers Community

15© 2013 - www.spanishdeveloperscommunity.es

Protocolo SSH

SSH™ (o Secure SHell) es un protocolo que facilita lascomunicaciones seguras entre dos sistemas usando unaarquitectura cliente/servidor y que permite a los usuariosconectarse a un host remotamente. A diferencia de otrosprotocolos de comunicación remota tales como FTP o Telnet,SSH encripta la sesión de conexión, haciendo imposible quealguien pueda obtener contraseñas no encriptadas.

SSH está diseñado para reemplazar los métodos más viejos ymenos seguros para registrarse remotamente en otro sistema através de la shell de comando, tales como telnet o rsh. Unprograma relacionado, el scp, reemplaza otros programasdiseñados para copiar archivos entre hosts como rcp. Ya queestas aplicaciones antiguas no encriptan contraseñas entre elcliente y el servidor, evite usarlas mientras le sea posible. El usode métodos seguros para registrarse remotamente a otrossistemas reduce los riesgos de seguridad tanto para el sistemacliente como para el sistema remoto.

Características de SSH

El protocolo SSH proporciona los siguientes tipos deprotección:

Después de la conexión inicial, el cliente puede verificar que seestá conectando al mismo servidor al que se conectóanteriormente.

El cliente transmite su información de autenticación al servidorusando una encriptación robusta de 128 bits.

Todos los datos enviados y recibidos durante la sesión setransfieren por medio de encriptación de 128 bits, lo cual loshacen extremamente difícil de descifrar y leer.

El cliente tiene la posibilidad de reenviar aplicaciones X11 [1]desde el servidor. Esta técnica, llamada reenvío por X11,proporciona un medio seguro para usar aplicaciones gráficassobre una red.

Ya que el protocolo SSH encripta todo lo que envía y recibe, sepuede usar para asegurar protocolos inseguros. El servidor SSHpuede convertirse en un conducto para convertir en seguros losprotocolos inseguros mediante el uso de una técnica llamadareenvío por puerto, como por ejemplo POP, incrementando laseguridad del sistema en general y de los datos.

Red Hat Enterprise Linux contiene el paquete general deOpenSSH (openssh) así como también los paquetes del servidor

OpenSSH (openssh­server) y del cliente (openssh­clients).Consulte el capítulo titulado OpenSSH en el Manual deadministración del sistema de Red Hat Enterprise Linux paraobtener instrucciones sobre la instalación y el desarrollo deOpenSSH. Observe que los paquetes OpenSSH requieren elpaquete OpenSSL (openssl). OpenSSL instala variasbibliotecas criptográficas importantes, permitiendo queOpenSSH pueda proporcionar comunicaciones encriptadas.

¿Por qué usar SSH?

Los usuario nefarios tienen a su disposición una variedad deherramientas que les permiten interceptar y redirigir eltráfico de la red para ganar acceso al sistema. En términosgenerales, estas amenazas se pueden catalogar del siguientemodo:

Intercepción de la comunicación entre dos sistemas— Eneste escenario, existe un tercero en algún lugar de la red entreentidades en comunicación que hace una copia de lainformación que pasa entre ellas. La parte interceptora puedeinterceptar y conservar la información, o puede modificar lainformación y luego enviarla al recipiente al cual estabadestinada.

Este ataque se puede montar a través del uso de un paquetesniffer— una utilidad de red muy común.

Personificación de un determinado host— Con estaestrategia, un sistema interceptor finge ser el recipiente aquien está destinado un mensaje. Si funciona la estrategia, elsistema del usuario no se da cuenta del engaño y continúa lacomunicación con el host incorrecto.

Esto se produce con técnicas como el envenenamiento delDNS [2] o spoofing de IP (engaño de direcciones IP) [3].

Ambas técnicas interceptan información potencialmenteconfidencial y si esta intercepción se realiza con propósitoshostiles, el resultado puede ser catastrófico.

Si se utiliza SSH para inicios de sesión de shell remota ypara copiar archivos, se pueden disminuir estas amenazas ala seguridad notablemente. Esto es porque el cliente SSH y elservidor usan firmas digitales para verificar su identidad.Adicionalmente, toda la comunicación entre los sistemascliente y servidor es encriptada. No servirán de nada losintentos de falsificar la identidad de cualquiera de los doslados de la comunicación ya que cada paquete está cifradopor medio de una llave conocida sólo por el sistema local yel remoto.

Page 16: Spanish Developers Community

16© 2013 - www.spanishdeveloperscommunity.es

Page 17: Spanish Developers Community

17© 2013 - www.spanishdeveloperscommunity.es

DESbase 64

programación en JavaData Encryption Standard (DES) es un algoritmo de cifrado, es decir, un métodopara cifrar información, escogido como FIPS en los Estados Unidos en 1976, y cuyouso se ha propagado ampliamente por todo el mundo. El algoritmo fue controvertido

al principio, con algunos elementos de diseño clasificados, unalongitud de clave relativamente corta, y las continuas sospechassobre la existencia de alguna puerta trasera para la NationalSecurity Agency (NSA). Posteriormente DES fue sometido a unintenso análisis académico y motivó el concepto moderno delcifrado por bloques y su criptoanálisis.

Base 64 es un sistema de numeración posicional que usa 64como base. Es la mayor potencia de dos que puede serrepresentada usando únicamente los caracteres imprimibles deASCII. Esto ha propiciado su uso para codificación de correoselectrónicos, PGP y otras aplicaciones. Todas las variantesfamosas que se conocen con el nombre de Base64 usan el rangode caracteres A­Z, a­z y 0­9 en este orden para los primeros 62dígitos, pero los símbolos escogidos para los últimos dos dígitosvarían considerablemente de unas a otras. Otros métodos decodificación como UUEncode y las últimas versiones de binhexusan un conjunto diferente de 64 caracteres para representar 6dígitos binarios, pero éstos nunca son llamados Base64.

Algoritmo en Java para encriptar un String y luego convertirlo a Base64

Esta clase encripta una cadena con el algoritmo DES y luego la codifica en Base64

Creamos una clase que codificará y encriptará el mensaje “ClaseDESBase64.java” ­

Page 18: Spanish Developers Community

18© 2013 - www.spanishdeveloperscommunity.es

import java.io.UnsupportedEncodingException;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.spec.*;

import javax.crypto.*;

import javax.crypto.spec.DESKeySpec;

/**

* @author JF

* Esta clase Encripta una cadena y luego la convierte a Base64

*/

public class ClaseDESBase64 {

Cipher encrypt;

Cipher decrypt;

SecretKey key;

String keyTxt;

public ClaseDESBase64(String clave){

keyTxt = clave;

try{

encrypt = Cipher.getInstance("DES");

decrypt = Cipher.getInstance("DES");

if(keyTxt.equals("")){

SecretKey key =

KeyGenerator.getInstance("DES").generateKey();//Genera Clave automàtica

encrypt.init(Cipher.ENCRYPT_MODE,

key);//Con clave aleatoria

decrypt.init(Cipher.DECRYPT_MODE,

key);//Con clave aleatoria

}else{

KeySpec ks = new

DESKeySpec(keyTxt.getBytes("UTF8"));

SecretKeyFactory kf =

SecretKeyFactory.getInstance("DES");

SecretKey ky = kf.generateSecret(ks);

encrypt.init(Cipher.ENCRYPT_MODE, ky);

decrypt.init(Cipher.DECRYPT_MODE, ky);

}

}catch(InvalidKeySpecException ex){

}catch(UnsupportedEncodingException ex){

}catch(InvalidKeyException ex){

}catch(NoSuchAlgorithmException ex){

}catch(NoSuchPaddingException ex){

}

}

public String encriptar(String str){

try {

// Encode the string into bytes using utf-8

byte[] utf8 = str.getBytes("UTF8");

Page 19: Spanish Developers Community

19© 2013 - www.spanishdeveloperscommunity.es

// Encrypt

byte[] enc = encrypt.doFinal(utf8);

// Encode bytes to base64 to get a string

return new sun.misc.BASE64Encoder().encode(enc);

} catch (javax.crypto.BadPaddingException e) {

} catch (IllegalBlockSizeException e) {

} catch (UnsupportedEncodingException e) {

} catch (java.io.IOException e) {

}

return null;

}

public String desencriptar(String str) {

try {

// Decode base64 to get bytes

byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);

// Decrypt

byte[] utf8 = decrypt.doFinal(dec);

// Decode using utf-8

return new String(utf8, "UTF8");

} catch (javax.crypto.BadPaddingException e) {

} catch (IllegalBlockSizeException e) {

} catch (UnsupportedEncodingException e) {

} catch (java.io.IOException e) {

}

return null;

}

}

Page 20: Spanish Developers Community