Issuu on Google+

Spanish Developers Community número 7 ­ diciembre 2013


ÍNDICE

CONTENIDOS PRINCIPALES Acerca de 01. Editorial 02. Consejos para hacer tu wifi más segura 03. ¿Qué condiciones debe cumplir tu contraseña para que sea más segura? 04. Las mejores aplicaciones de hacking y seguridad en linux 05. Protocolo SSH 06. DES base 64 ­ Programacion en Java

Spanish

Developers Community es una iniciativa sin ánimo de lucro, dedicada al fomento y difusión del software basado en licencias GPL, Programación de lenguajes de programación, Sistemas Operativos Linux / Android e iOS así como diseño gráfico y redes sociales. Alcanzar nuestro objetivo de una función docente y con la intención de que estos conocimientos puedan aplicarse de una manera práctica en las actividades cotidianas de los estudiantes universitarios, empresarios y autónomos . Spanish developers community se basa en la colaboración desinteresada de profesionales y estudiantes que comparten sus saber­hacer, sus conocimientos teóricos y prácticos con la comunidad informá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:

spanishdevcommunity@gmail.com Colabora en nuestros proyectos Puedes ayudarnos en los proyectos de canal de youtube, blogs, página web, redes sociales y página web.

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

Contactar Puedes contactar conmigo para enviarnos cualquier duda que tengas en el correo electrónico:

antoniogarciaprats@gmail.com

Depósito Legal J 368­2013

diseño de portada: Antonio García 2

© 2013 - www.spanishdeveloperscommunity.es


Editorial

Buscamos en este número procurar profundizar un poco más en el mundo de la seguridad en las redes y la criptografía. En este numero especial trataremos de forma básica algunos temas relacionados con las redes sociales, tales como cuáles son las principales técnicas para que tu red inhalambrica sea lo más segura posible. Además muchos de los usuarios de ordenadores no tienen en cuenta tomar las precauciones necesarias a la hora de escribir una clave o contraseña lo suficientemente segura. Realizaremos un viaje a través de las mejores aplicaciones en linux a propósito hackear y aplicar seguridad en redes. Aprenderemos qué es SSH y para qué sirve. Por último, veremos cómo se implementa en Java un algoritmo de cifrado simétrica.

Antonio García Prats

© 2013 - www.spanishdeveloperscommunity.es

3


Consejos para hacer tu

wifi

mĂĄs segura 4

Š 2013 - www.spanishdeveloperscommunity.es


A pesar de que las conexiones WiFi son de las más utilizadas en la actualidad ninguna de estas redes son 100% seguras, pero si se aplica una buena configuración podemos lograr que sean muy fiables, y por tanto disminuir la probabilidad de que alguien nos pueda robar nuestra señal para visitar páginas web o con otros fines más maliciosos. Para poder ayudaros a la hora de proteger vuestra señal WiFi, en acens os hemos preparado un listado de 7 consejos que os permitirá disfrutar de una conexión más segura, y de esta forma evitar que alguien se pueda adueñar de nuestro ancho de banda.

Una dirección MAC es un código único que sirve para identificar a cada uno de los dispositivos que se pueden conectar a Internet. Los router suelen tener un apartado para filtrar aquellas direcciones MAC a las que queremos dar permiso para que se conecten, impidiendo que otros dispositivos puedan navegar por nuestra red.

5.­ Hacer uso de cortafuegos Si nuestro router o sistema operativo nos ofrece un Firewall sería conveniente activarlo. De esta forma pondremos otra barrera más para acceder a nuestra red WiFi.

1.­ Cambiar la clave por defecto de la conexión 6.­ Adjudicar direcciones IP a los equipos WiFi en el router Para que un dispositivo pueda navegar por Internet es necesario que tenga asignado una dirección IP. Esta asignación de direcciones la suele hacer de forma automática el router para facilitar que cualquier dispositivo pueda hacer uso de la red.

Cuando uno recibe un router inalámbrico por parte de una proveedora de red, éste viene configurado con una serie de parámetros predefinidos. Entre ellos suele estar la contraseña de acceso a la red, por lo que el primer paso que tenemos que hacer nada más recibir este dispositivo, es acceder a él y cambiar esta clave. Para dificultar el acceso, se puede configurar el router para indicar qué direcciones IP son las que podrán 2.­ Utilizar contraseñas con cifrado WPA navegar. Una vez hecho esto, tendrás que asignarle una de las direcciones IP permitidas en el router a cada uno Sobre los tipos de encriptación de las contraseñas ya de los equipos. hablamos en el White Paper: ‘Sistemas de seguridad en redes inalámbricas: WEP, WAP y WAP2’, donde vimos 7.­ Desconectar el router cuando no lo cuál es el sistema más fiable a la hora de configurar utilicemos nuestro router. Siempre que nuestro dispositivo nos lo permita, tenemos que hacer uso de claves WPA o WPA2 La mayoría de los usuarios tiene siempre encendido el que son más seguras y más difíciles de hackear. router, lo que están permitiendo que si alguien tiene las claves pueda navegar libremente por la red en cualquier 3.­ Ocultar el nombre de nuestro SSID momento. Siempre que no estemos navegando, es muy recomendable desenchufar el router. El SSID es el identificador de nuestra red, es decir, el nombre que muestra nuestra conexión cuando nos Siguiendo estos simples consejos que os hemos contado queremos conectar a ella (ejemplo de este tipo de en acens podréis disfrutar de una conexión WiFi mucho nombre puede ser WLAN_XXX). Ocultando esta más segura. información lograremos que nuestra red no aparezca en el listado de redes localizadas, y por tanto estaremos impidiendo que se conecten a ella. Si optamos por esta opción, al no aparecer en el listado, a la hora de conectarnos desde nuestros equipos tendremos que elegir la opción de “otras conexiones” que tienen todos los sistemas operativos en su menú WiFi e introducir ahí el SSID elegido y la contraseña.

4.­ Activar el filtrado de direcciones MAC

© 2013 - www.spanishdeveloperscommunity.es

5


¿Qué condiciones debe cumplir tu

contraseña para que sea más segura?

La primera medida de seguridad a la que se tiene que enfrentar un atacante es la contraseña de la red, ya sea por un método u otro, al final tiene que conseguirla. Por este motivo es de vital importancia que dicha contraseña sea lo más compleja posible, de modo que el tiempo que tenga que invertir para averiguarla sea máximo para que desista en su intento.

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

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

Condiciones que debe cumplir una buena Carretera sin curvas Cuando necesitemos elegir una contraseña, debemos contraseña utilizar el mayor número de caracteres posible, pero no Una buena contraseña debe cumplir los siguientes tiene por qué ser un galimatías sin sentido. Los galimatías son muy complicados de recordar, sin requisitos: embargo, una frase larga con algunas modificaciones resulta muy sencillo y puede resultar igual de segura. Debe tener letras en mayúsculas y minúsculas. Debe tener números.

Veamos un ejemplo: la carretera era muy aburrida porque no tenia curvas

Debe tener símbolos (siempre que sea posible). No puede estar relacionada con nosotros.

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

La tenemos que elegir nosotros

LaCarr3t3raEraMUYAburridaPorQueNOt3niaCurvaS.

Hoy en día todos los routers vienen completamente configurados para hacernos la vida mucho más fácil, conectas y funciona. Incluso poseen contraseñas que cumplen con todos los requisitos que hemos mencionado anteriormente, el único problema de dicha contraseña es que no la hemos elegido nosotros, por tanto no podemos garantizar que nadie más la conozca.

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 porque recordamos la frase y segura porque cumple todos los requisitos que explicamos anteriormente.

6

© 2013 - www.spanishdeveloperscommunity.es


Protocolos

de seguridad en redes inhalambricas 1 Introducción a WEP, WPA y WPA2 La seguridad es un aspecto que cobra especial relevancia cuando hablamos de redes inalámbricas. Para tener acceso a una red cableada es imprescindible una conexión física al cable de la red. Sin embargo, en una red inalámbrica desplegada en una oficina un tercero podría acceder a la red sin ni siquiera estar ubicado en las dependencias de la empresa, bastaría con que estuviese en un lugar próximo donde le llegase la señal. Es más, en el caso de un ataque pasivo, donde sólo se escucha la información, ni siquiera se dejan huellas que posibiliten una identificación posterior.

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

Conscientes de este problema, el IEEE [1] publicó un mecanismo opcional de seguridad, denominado WEP, en la norma de redes inalámbricas 802.11 [2]. Pero WEP, desplegado en numerosas redes WLAN, ha sido roto de distintas formas, lo que lo ha convertido en una protección El canal de las redes inalámbricas, al contrario que en las inservible. © 2013 - www.spanishdeveloperscommunity.es

7


aumento de mantenimiento por parte del administrador de la Para solucionar sus deficiencias, el IEEE comenzó el red, lo que conlleva, en la mayoría de ocasiones, que la clave desarrollo de una nueva norma de seguridad, conocida como se cambie poco o nunca. 802.11i [3], que permitiera dotar de suficiente seguridad a las redes WLAN. El algoritmo de encriptación utilizado es RC4 con claves (seed), según el estándar, de 64 bits. Estos 64 bits están El problema de 802.11i está siendo su tardanza en ver la luz. formados por 24 bits correspondientes al vector de Su aprobación se espera para junio de 2004. Algunas inicialización más 40 bits de la clave secreta. Los 40 bits son empresas en vistas de que WEP (de 1999) era insuficiente y los que se deben distribuir manualmente. El vector de de que no existían alternativas estandarizadas mejores, inicialización (IV), en cambio, es generado dinámicamente y decidieron utilizar otro tipo de tecnologías como son las debería ser diferente para cada trama. El objetivo perseguido VPNs para asegurar los extremos de la comunicación (por con el IV es cifrar con claves diferentes para impedir que un ejemplo, mediante IPSec). La idea de proteger los datos de posible atacante pueda capturar suficiente tráfico cifrado con usuarios remotos conectados desde Internet a la red la misma clave y terminar finalmente deduciendo la clave. corporativa se extendió, en algunos entornos, a las redes Como es lógico, ambos extremos deben conocer tanto la WLAN. De hecho, como hemos comentado antes, ambos clave secreta como el IV. Lo primero sabemos ya que es canales de transmisión deben considerarse inseguros. Pero la conocido puesto que está almacenado en la configuración de tecnología VPN es quizás demasiado costosa en recursos cada elemento de red. El IV, en cambio, se genera en un para su implementación en redes WLAN. extremo y se envía en la propia trama al otro extremo, por lo que también será conocido. Observemos que al viajar el IV No ajena a las necesidades de los usuarios, la asociación de en cada trama es sencillo de interceptar por un posible empresas Wi­Fi [4] decidió lanzar un mecanismo de atacante. seguridad intermedio de transición hasta que estuviese disponible 802.11i, tomando aquellos aspectos que estaban El algoritmo de encriptación de WEP es el siguiente: suficientemente avanzados del desarrollo de la norma. El resultado, en 2003, fue WPA [5]. Se calcula un CRC de 32 bits de los datos. Este CRC­32 es el método que propone WEP para garantizar la integridad de los Este artículo analiza las características de los mecanismos de mensajes (ICV, Integrity Check Value). seguridad WEP, WPA y WPA2 (IEEE 802.11i). En el Se concatena la clave secreta a continuación del IV formado momento de escribir estas líneas, WPA2 todavía no ha visto el seed. la luz por lo que la documentación relacionada es todavía El PRNG (Pseudo­Random Number Generator) de RC4 muy escasa. genera una secuencia de caracteres pseudoaleatorios (keystream), a partir del seed, de la misma longitud que los 2 WEP bits obtenidos en el punto 1. Se calcula la O exclusiva (XOR) de los caracteres del punto 2.1 Características y funcionamiento 1 con los del punto 3. El resultado es el mensaje cifrado. Se envía el IV (sin cifrar) y el mensaje cifrado dentro del WEP (Wired Equivalent Privacy, privacidad equivalente al campo de datos (frame body) de la trama IEEE 802.11. cable) es el algoritmo opcional de seguridad incluido en la El algoritmo para descifrar es similar al anterior. Debido a norma IEEE 802.11 [2]. Los objetivos de WEP, según el que el otro extremo conocerá el IV y la clave secreta, tendrá estándar, son proporcionar confidencialidad, autentificación entonces el seed y con ello podrá generar el keystream. y control de acceso en redes WLAN [2, §6.1.2]. Estudiamos Realizando el XOR entre los datos recibidos y el keystream a continuación las principales características de WEP. se obtendrá el mensaje sin cifrar (datos y CRC­32). A continuación se comprobara que el CRC­32 es correcto. WEP utiliza una misma clave simétrica y estática en las estaciones y el punto de acceso. El estándar no contempla 2.2 Debilidad del vector de inicialización ningún mecanismo de distribución automática de claves, lo que obliga a escribir la clave manualmente en cada uno de La implementación del vector de inicialización (IV) en el los elementos de red. Esto genera varios inconvenientes. Por algoritmo WEP tiene varios problemas de seguridad. un lado, la clave está almacenada en todas las estaciones, Recordemos que el IV es la parte que varía de la clave (seed) aumentando las posibilidades de que sea comprometida. Y para impedir que un posible atacante recopile suficiente por otro, la distribución manual de claves provoca un

8

© 2013 - www.spanishdeveloperscommunity.es


información cifrada con una misma clave.

Sin embargo, podemos llegar a más y deducir la clave secreta. 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 necesitamos recopilar suficientes IVs y sus keystreams asociados obtenidos por el procedimiento anterior.

Sin embargo, el estándar 802.11 no especifica cómo manejar el IV. Según [2, §8.2.3] se indica que debería cambiarse en cada trama para mejorar la privacidad, pero no obliga a ello. Queda abierta a los fabricantes la cuestión de cómo variar el IV en sus productos. La consecuencia de esto es que buena parte de las implementaciones optan por una solución 2.3 Otras debilidades de WEP sencilla: cada vez que arranca la tarjeta de red, se fija el IV a 0 y se incrementa en 1 para cada trama. Y esto ocasiona que WEP también adolece de otros problemas [6, 8] además de los primeras combinaciones de IVs y clave secreta se repitan los relacionados con el vector de inicialización y la forma de muy frecuentemente. Más aún si tenemos en cuenta que cada utilizar el algoritmo RC4. estación utiliza la misma clave secreta, por lo que las tramas con igual clave se multiplican en el medio. Entre los objetivos de WEP, como comentamos más arriba, se encuentra proporcionar un mecanismo que garantice la Por otro lado, el número de IVs diferentes no es demasiado integridad de los mensajes. Con este fin, WEP incluye un elevado (2^24=16 millones aprox.), por lo que terminarán CRC­32 que viaja cifrado. Sin embargo, se ha demostrado repitiéndose en cuestión de minutos u horas [6]. El tiempo [6] que este mecanismo no es válido y es posible modificar será menor cuanto mayor sea la carga de la red. Lo ideal una parte del mensaje y a su vez el CRC, sin necesidad de sería que el IV no se repitiese nunca, pero como vemos, esto conocer el resto. Esto permitiría, por ejemplo, modificar es imposible en WEP. La cantidad de veces que se repite un algún número de la trama sin que el destino se percatara de mismo IV dependerá de la implementación elegida para ello. En lugar del algoritmo de CRC se recomienda como variar el IV por el fabricante (secuencial, aleatoria, etc.) y de ICV (Integrity Check Value) un algoritmo diseñado para tal la carga de la red. Observemos que es trivial saber si dos fin como SHA1­HMAC [9]. tramas han sido cifradas con la misma clave, puesto que el IV se envía sin cifrar y la clave secreta es estática. El estándar IEEE 802.11 incluye un mecanismo de autentificación de las estaciones basado en un secreto La longitud de 24 bits para el IV forma parte del estándar y compartido [2, §8.1]. Para ello se utiliza la misma contraseña no puede cambiarse. Bien es cierto que existen de WEP en la forma que describimos a continuación. Una implementaciones con claves de 128 bits (lo que se conoce estación que quiere unirse a una red, solicita al punto de como WEP2), sin embargo, en realidad lo único que se acceso autentificación. El punto de acceso envía un texto en aumenta es la clave secreta (104 bits) pero el IV se conserva claro a la estación y ésta lo cifra y se lo devuelve. El punto con 24 bits. El aumento de la longitud de la clave secreta no de acceso finalmente descifra el mensaje recibido, soluciona la debilidad del IV. comprueba que su ICV es correcto y lo compara con el texto que envió. ¿Qué podemos hacer una vez hemos capturado varias tramas con igual IV, es decir, con igual keystream? Necesitamos El mecanismo anterior de autentificación de secreto conocer el mensaje sin cifrar de una de ellas. Haciendo el compartido tiene el problema de enviar por la red el mismo XOR entre un mensaje sin cifrar y el mismo cifrado, nos dará texto sin cifrar y cifrado con la clave WEP (esta clave el keystream para ese IV. Conociendo el keystream asociado coincide con la utilizada para asegurar la confidencialidad). a un IV, podremos descifrar todas las tramas que usen el El estándar es consciente de esta debilidad y aconseja no mismo IV. El problema es entonces conocer un mensaje sin utilizar el mismo IV para el resto de transmisiones. Sin cifrar, aunque esto no es tan complicado, porque existen embargo, tanto si las implementaciones repiten ese IV como tráficos predecibles o bien, podemos provocarlos nosotros sino, el mecanismo ofrece información que podría ser (mensajes ICMP de solicitud y respuesta de eco, aprovechada para romper la clave WEP utilizando las confirmaciones de TCP, etc.) [6]. debilidades del vector de inicialización explicadas más arriba [8]. Con lo que hemos descrito no podemos deducir la clave secreta, aunque sí es posible generar una tabla con los IVs de WEP no incluye autentificación de usuarios. Lo más que los que sabemos su keystream, la cual permitirá descifrar incluye es la autentificación de estaciones descrita (podrán cualquier mensaje que tenga un IV contenido en la tabla [6]. entrar aquellas estaciones que en su configuración tengan © 2013 - www.spanishdeveloperscommunity.es

9


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

Sin embargo, la solución preferida por las empresas como alternativa a WEP ha sido la utilización de VPNs, de la misma manera que se haría si los usuarios estuviesen conectados remotamente a la oficina. La tecnología de VPNs está suficiente probada y se considera segura, aunque no ha sido diseñada específicamente para redes WLAN. Tiene Entre la larga lista de problemas de seguridad de WEP se como inconveniente la falta de interoperatibilidad entre encuentra también la ausencia de mecanismos de protección dispositivos de distintos fabricantes. contra mensajes repetidos (replay). Esto permite que se capture un mensaje y se introduzca en la red en un momento Los mecanismos diseñados específicamente para redes posterior. El paquete podría ser, por ejemplo, el que contiene WLAN para ser los sucesores de WEP son WPA [5] y WPA2 la contraseña de un usuario para utilizar un determinado (IEEE 802.11i) [3]. El primero es de 2003 y el segundo se servicio. espera para 2004. Se estudian a continuación. Todos los problemas comentados unidos a las características propias de WEP como es la distribución manual de claves y la utilización de claves simétricas, hacen que este sistema no sea apropiado para asegurar una red inalámbrica. El estudio de N. Borisov, I. Goldberg y D. Wagner [6] explica razonadamente que ninguno de los objetivos planteados por WEP se cumplen.

2.4 Alternativas a WEP Las vulnerabilidades explicadas de WEP son motivos más que suficientes para utilizar otros mecanismos de seguridad en redes WLAN. Aunque no forma parte del estándar, los fabricantes de productos Wi­Fi decidieron ofrecer la posibilidad de utilizar claves del doble de longitud (de 64 bits a 128 bits). WEP utilizado con claves de 128 bits es lo que se conoce generalmente como WEP2. Sin embargo, debemos observar que la longitud del vector de inicialización sigue siendo de 24 bits (las tramas IEEE 802.11 no contemplan un mayor número de bits para enviar el IV), por lo que lo único que se ha aumentado es la clave secreta (de 40 bits a 104 bits). Debido a que la longitud del IV y su forma de utilizarlo no varían, las debilidades del IV pueden seguir siendo aprovechadas de la misma manera. WEP2 no resuelve los problemas de WEP [6].

3 WPA WPA (Wi­Fi Protected Access, acceso protegido Wi­Fi) es la respuesta de la asociación de empresas Wi­Fi a la seguridad que demandan los usuarios y que WEP no puede proporcionar. El IEEE tiene casi terminados los trabajos de un nuevo estándar para reemplazar a WEP, que se publicarán en la norma IEEE 802.11i a mediados de 2004. Debido a la tardanza (WEP es de 1999 y las principales vulnerabilidades de seguridad se encontraron en 2001), Wi­Fi decidió, en colaboración con el IEEE, tomar aquellas partes del futuro estándar que ya estaban suficientemente maduras y publicar así WPA. WPA es, por tanto, un subconjunto de lo que será IEEE 802.11i. WPA (2003) se está ofreciendo en los dispositivos actuales. WPA soluciona todas las debilidades conocidas de WEP y se considera suficientemente seguro. Puede ocurrir incluso que usuarios que utilizan WPA no vean necesidad de cambiar a IEEE 802.11i cuando esté disponible.

3.1 Características de WPA

Las principales características de WPA son la distribución dinámica de claves, utilización más robusta del vector de inicialización (mejora de la confidencialidad) y nuevas Otra variante de WEP utilizada en algunas implementaciones técnicas de integridad y autentificación. es WEP dinámico. En este caso se busca incorporar mecanismos de distribución automática de claves y de WPA incluye las siguientes tecnologías: autentificación de usuarios mediante 802.1x/EAP/RADIUS. Requiere un servidor de autentificación (RADIUS IEEE 802.1X. Estándar del IEEE de 2001 [10] para normalmente) funcionando en la red. En el caso de que la proporcionar un control de acceso en redes basadas en misma clave (clave secreta + WEP) no se utilice en más de puertos. El concepto de puerto, en un principio pensado para una trama, este mecanismo sería suficiente para compensar las ramas de un switch, también se puede aplicar a las las principales debilidades de WEP. distintas conexiones de un punto de acceso con las

10

© 2013 - www.spanishdeveloperscommunity.es


estaciones. Las estaciones tratarán entonces de conectarse a un puerto del punto de acceso. El punto de acceso mantendrá el puerto bloqueado hasta que el usuario se autentifique. Con este fin se utiliza el protocolo EAP [11] y un servidor AAA (Authentication Authorization Accounting) como puede ser RADIUS (Remote Authentication Dial­In User Service) [12]. Si la autorización es positiva, entonces el punto de acceso abre el puerto. El servidor RADIUS puede contener políticas para ese usuario concreto que podría aplicar el punto de acceso (como priorizar ciertos tráficos o descartar otros). EAP. EAP, definido en la RFC 2284 [11], es el protocolo de autentificación extensible para llevar a cabo las tareas de autentificación, autorización y contabilidad. EAP fue diseñado originalmente para el protocolo PPP (Point­to­Point Protocol) [13], aunque WPA lo utiliza entre la estación y el servidor 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 clave para cada trama [4]. MIC (Message Integrity Code) o Michael. Código que verifica 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 de longitud (48 bits) y especificando reglas de secuencia que los fabricantes deben implementar. Los 48 bits permiten generar 2 elevado a 48 combinaciones de claves diferentes, lo cual parece un número suficientemente elevado como para tener duplicados. El algoritmo utilizado por WPA sigue siendo RC4. La secuencia de los IV, conocida por ambos extremos de la comunicación, se puede utilizar para evitar ataques de repetición de tramas (replay).

un servidor RADIUS funcionando en la red, aunque también podrí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 modo indicado para las empresas. Requiere un servidor configurado 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. No requiere un servidor AAA, sino que se utiliza una clave compartida en las estaciones y punto de acceso. Al contrario que en WEP, esta clave sólo se utiliza como punto de inicio para 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 proporcionar seguridad en redes WLAN. Se espera que esté concluido todo el proceso de estandarización para mediados de 2004. Wi­Fi [4] está haciendo una implementación completa del estándar en la especificación WPA2. Sus especificaciones no son públicas por lo que la cantidad de información disponible en estos momentos es realmente escasa. WPA2 incluye el nuevo algoritmo de cifrado AES (Advanced Encryption Standard), desarrollado por el NIS [14]. Se trata de un algoritmo de cifrado de bloque (RC4 es de flujo) con claves de 128 bits. Requerirá un hardware potente para realizar sus algoritmos. Este aspecto es importante puesto que significa que dispositivos antiguos sin suficientes capacidades de proceso no podrán incorporar WPA2.

Para la integridad de los mensajes (ICV), se ha eliminado el CRC­32 que se demostró inservible en WEP y se ha incluido Para el aseguramiento de la integridad y autenticidad de los un nuevo código denominado MIC. mensajes, WPA2 utiliza CCMP (Counter­Mode / Cipher Block Chaining / Message Authentication Code Protocol) en Las claves ahora son generadas dinámicamente y distribuidas lugar de los códigos MIC. de forma automática por lo que se evita tener que modificarlas manualmente en cada uno de los elementos de Otra mejora respecto a WPA es que WPA2 incluirá soporte red cada cierto tiempo, como ocurría en WEP. no sólo para el modo BSS sino también para el modo IBSS (redes ad­hoc). Para la autentificación, se sustituye el mecanismo de autentificación de secreto compartido de WEP así como la posibilidad de verificar las direcciones MAC de las estaciones por la terna 802.1X / EAP / RADIUS. Su inconveniente es que requiere de una mayor infraestructura: © 2013 - www.spanishdeveloperscommunity.es

11


las mejores aplic hacking y se

L

12

Š 2013 - www.spanishdeveloperscommunity.es


Linux es el sistema operativo de los hackers por excelencia. Esto es así no porque sea “complicado” de usar 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 configurarlo como quieras. Lo puedes usar en contraseñas encriptadas para Unix (DES, MD5 ó Blowfish), Kerberos AFS y Windows. Tiene módulos adicionales para incluir hashes de contraseñas badadas en MD4 y almacenadas en LDAP, MySQL y otros.

caciones de eguridad en

Linux

2. Nmap: ¿quién no conoce Nmap?, sin duda el mejor programa para se seguridad para redes. Puedes usarlo para encontrar ordenadores y servicios en una red. Se usa sobre todo para escanear puertos, pero esta 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 de red remota). Funciona en Windows y Mac OS X también. 3. Nessus: herramienta para encontrar y analizar vulnerabilidades de software, como aquellas que puedan ser utilizadas para controlar o acceder a los datos del equipo remoto. También localiza passwords por defecto, parches no instalados, etc. 4. chkrootkit: básicamente es un shell script para permitir descubrir rootkits instalados en nuestro sistema. El problema es que muchos rootkits actuales detectan la presencia de programas como este para no ser detectados. 5. Wireshark: sniffer de paquetes, se utiliza para analizar el tráfico de red. Es parecido a tcpdump (luego hablamos de él) pero con una GUI y más opciones de ordenación y filtro. Coloca la tarjeta en modo promiscuo 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 la escucha) , asociar una shell a ese puerto y forzar conexiones UDP/TCP (útil para rasteo de puertos o transferecias bit a bit entre dos equipos). 7. Kismet: sistema de detección de redes, sniffer de paquetes y de intrusión para redes inalámbricas 802.11. 8. hping: generador y analizador de paquetes para el protocolo TCP/IP. En las últimas versiones se pueden usar scripts basados en el lenguaje Tcl y también implementa un motor de strings (cadenas de texto) para describir los paquetes TCP/IP, de esta manera es más fácil de entenderlos además de poder manipularlos de una manera bastante fácil. 9. Snort: es un NIPS: Network Prevention System y un NIDS: Network Intrusion Detetection, capaz de analizar redes IP. Se usa sobre todo para detectar ataques como buffer overflows, acceso a puertos abiertos, ataques web, etc. 10. tcpdump: herramienta de debugging que se ejecuta desde la línea de comandos. Permite ver los paquetes 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 y permite hacer pruebas de penetración contra sistemas remotos. Tiene también un framework para realizar tus propias herramientas y está tanto para Linux como para Windows. Existen muchos tutoriales por la red donde explican cómo utilizarlo.

© 2013 - www.spanishdeveloperscommunity.es

13


protocolo

SSH

14

Š 2013 - www.spanishdeveloperscommunity.es


Protocolo SSH SSH™ (o Secure SHell) es un protocolo que facilita las comunicaciones seguras entre dos sistemas usando una arquitectura cliente/servidor y que permite a los usuarios conectarse a un host remotamente. A diferencia de otros protocolos de comunicación remota tales como FTP o Telnet, SSH encripta la sesión de conexión, haciendo imposible que alguien pueda obtener contraseñas no encriptadas. SSH está diseñado para reemplazar los métodos más viejos y menos seguros para registrarse remotamente en otro sistema a través de la shell de comando, tales como telnet o rsh. Un programa relacionado, el scp, reemplaza otros programas diseñados para copiar archivos entre hosts como rcp. Ya que estas aplicaciones antiguas no encriptan contraseñas entre el cliente y el servidor, evite usarlas mientras le sea posible. El uso de métodos seguros para registrarse remotamente a otros sistemas reduce los riesgos de seguridad tanto para el sistema cliente como para el sistema remoto.

Características de SSH El protocolo SSH proporciona los siguientes tipos de protección: Después de la conexión inicial, el cliente puede verificar que se está conectando al mismo servidor al que se conectó anteriormente. El cliente transmite su información de autenticación al servidor usando una encriptación robusta de 128 bits. Todos los datos enviados y recibidos durante la sesión se transfieren por medio de encriptación de 128 bits, lo cual los hacen 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áficas sobre una red.

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

¿Por qué usar SSH? Los usuario nefarios tienen a su disposición una variedad de herramientas que les permiten interceptar y redirigir el tráfico de la red para ganar acceso al sistema. En términos generales, estas amenazas se pueden catalogar del siguiente modo: Intercepción de la comunicación entre dos sistemas — En este escenario, existe un tercero en algún lugar de la red entre entidades en comunicación que hace una copia de la información que pasa entre ellas. La parte interceptora puede interceptar y conservar la información, o puede modificar la información y luego enviarla al recipiente al cual estaba destinada. Este ataque se puede montar a través del uso de un paquete sniffer — una utilidad de red muy común. Personificación de un determinado host — Con esta estrategia, un sistema interceptor finge ser el recipiente a quien está destinado un mensaje. Si funciona la estrategia, el sistema del usuario no se da cuenta del engaño y continúa la comunicación con el host incorrecto. Esto se produce con técnicas como el envenenamiento del DNS [2] o spoofing de IP (engaño de direcciones IP) [3]. Ambas técnicas interceptan información potencialmente confidencial y si esta intercepción se realiza con propósitos hostiles, el resultado puede ser catastrófico.

Si se utiliza SSH para inicios de sesión de shell remota y Ya que el protocolo SSH encripta todo lo que envía y recibe, se para copiar archivos, se pueden disminuir estas amenazas a puede usar para asegurar protocolos inseguros. El servidor SSH la seguridad notablemente. Esto es porque el cliente SSH y el puede convertirse en un conducto para convertir en seguros los servidor usan firmas digitales para verificar su identidad. Adicionalmente, toda la comunicación entre los sistemas protocolos inseguros mediante el uso de una técnica llamada cliente y servidor es encriptada. No servirán de nada los reenvío por puerto, como por ejemplo POP, incrementando la intentos de falsificar la identidad de cualquiera de los dos seguridad del sistema en general y de los datos. lados de la comunicación ya que cada paquete está cifrado por medio de una llave conocida sólo por el sistema local y Red Hat Enterprise Linux contiene el paquete general de OpenSSH (openssh) así como también los paquetes del servidor el remoto. © 2013 - www.spanishdeveloperscommunity.es

15


16

Š 2013 - www.spanishdeveloperscommunity.es


DES base 64

programación en Java Data Encryption Standard (DES) es un algoritmo de cifrado, es decir, un método para cifrar información, escogido como FIPS en los Estados Unidos en 1976, y cuyo uso se ha propagado ampliamente por todo el mundo. El algoritmo fue controvertido al principio, con algunos elementos de diseño clasificados, una longitud de clave relativamente corta, y las continuas sospechas sobre la existencia de alguna puerta trasera para la National Security Agency (NSA). Posteriormente DES fue sometido a un intenso análisis académico y motivó el concepto moderno del cifrado por bloques y su criptoanálisis. Base 64 es un sistema de numeración posicional que usa 64 como base. Es la mayor potencia de dos que puede ser representada usando únicamente los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificación de correos electrónicos, PGP y otras aplicaciones. Todas las variantes famosas que se conocen con el nombre de Base64 usan el rango de caracteres A­Z, a­z y 0­9 en este orden para los primeros 62 dígitos, pero los símbolos escogidos para los últimos dos dígitos varían considerablemente de unas a otras. Otros métodos de codificación como UUEncode y las últimas versiones de binhex usan un conjunto diferente de 64 caracteres para representar 6 dí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” ­

© 2013 - www.spanishdeveloperscommunity.es

17


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");

18

© 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; } }

Š 2013 - www.spanishdeveloperscommunity.es

19



Spanish Developers Community