Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

Mostrando las entradas con la etiqueta cifrado. Mostrar todas las entradas
Mostrando las entradas con la etiqueta cifrado. Mostrar todas las entradas

miércoles, 13 de diciembre de 2017

Rompiendo la criptografía sin herramientas.



Rompiendo la criptografía sin herramientas.

Cómo ya sabemos hay muchas herramientas para descifrar los mensajes encriptados , pero la criptografía no se aplica solo para mensajes, también el cifrado se puede implementar en muchas áreas cómo es la parte de estenografía. Los mensajes cifrados, ya sea audio, video, imágenes o contraseñas de administración en sitios web, se puede implementar para comunicación segura pero en este post hablaremos sobre como descifrar los mensajes que estén en archivos multimedia o en formato texto pero de una forma pasiva, es decir, sin el uso de herramientas automatizadas.

Lo primero que hay que hacer es identificar qué clase de cifrado es y que exactamente hay que hacer. Estos son algunos ejemplos:

1. Comenzaremos con base 64, pero supongamos que en la descripción de un texto les coloquen: (64 esab).

Cómo pueden notar dice base 64 al revés pero es fácil identificar cuando es base 64 ya que se suele ver lo que es mayúsculas y el signo ‘=’, por ejemplo un mensaje en base 64 se vería de esta forma:
SG9sYSBTZWN1cml0eSBIYWNrIExhYnMsIGVzdG8gZXMgYmFzZSA2NA==
Es identificable porque compone de mayúsculas, minúsculas, números y termina en =.

Una vez ya reconocido que es base 64 se procede a buscar en el navegador: “decode base 64” y encontramos muchas opciones online cómo:

- https://www.base64encode.org/
Esta es una de ellos pero hay muchas más. Puedes hacer la prueba con el hash dejado en el ejemplo de arriba.

2. Binarios: Todos sabemos que los binarios se componen de 0 y 1 quiere decir apagado (0) y encendido (1), por ende es identificable cuando es en binario así que solo sería buscar algún traductor de binario. Ejemplo:
01100101 01110011 01110100 01101111 00100000 01100101 01110011 00100000 01110101 01101110 00100000 01101101 01100101 01101110 01110011 01100001 01101010 01100101 00100000 01100101 01101110 00100000 01100010 01101001 01101110 01100001 01110010 01101001 01101111 

Así se ve un mensaje en binario y al buscar en nuestro navegador: “convert from binary” encontramos muchas opciones cómo la siguiente:

- http://www.traductorbinario.com/ - Puedes hacer la prueba con el texto dejado en el ejemplo.

Seguimos los mismos pasos con las partes sencillas como son los cifrados hexadecimal, decimal, octal, ASCII, etc. El paso Así se ve un mensaje en binario y al buscar en nuestro navegador: “convert from binary” encontramos muchas opciones cómo la siguiente:

- http://www.traductorbinario.com/ - Puedes hacer la prueba con el texto dejado en el ejemplo.

Seguimos los mismos pasos con las partes sencillas como son los cifrados hexadecimal, decimal, octal, ASCII, etc. El paso principal es identificar el cifrado, pero no siempre tendrán situaciones sencillas como es cifrados así habrán mas difíciles como es una mezcla distorsionada de diferentes cifrado donde habrá que identificar cuales se implementan y como. Por ejemplo:


( 0:3:0c:20:0f)AAPTFGHKO
Para descifrar algo así, primero habría que convertir en ASCII la parte de las letras (AAPTFGHKO), luego poner el orden de la  parte del paréntesis empezando desde el 3 0c 20 0f y calcular el decimal o hexadecimal según sea el caso, podemos utilizar estas opciones online:
- https://www.dcode.fr/ascii-code

Esto es lo que podría utilizar para resolver un mensaje mezclado, ahí vemos ASCII y hexadecimal. Sería más complicado identificar exactamente que cifrado sería ya que está mezclado. Otro ejemplo puede ser:

Un binario y un base 64 intercalados y tendrían que dividir ambos y descifrarlos (quien dijo que en esto no se vería matemáticas).


Esto sobre las mezclas de palabras sin ningún tipo de cifrado conocido para hacer llegar un mensaje de una forma segura o guardar algo de una forma que solo el que la haya compuesto sepa que quiere decir se puede encontrar ayuda para descifrar esos mensajes con:

Ejemplo de algo parecido: (eeeiiilmmnnorstv=inverosímilmente)
Podemos aplicarlos con los hash, primero es identificarlos y luego decifrarlos, lo podemos aplicar a MD5 y cualquier  otro hash. La mayoría de los usuarios administrativos de sitios web como es el login administrador en muchos casos vienen encriptadas bajo el algoritmo MD5, para estos casos las herramientas si son favorables y para este caso una muy buena es: 

Si quieren identificar si el hash que deseas desencriptar ya ha sido crackeado pueden consultar esta pagina: 

También podemos implementarlo con los hash SHA1, se puede usar: https://hashkiller.co.uk/sha1-decrypter.aspx
Para las imágenes y archivos se puede utilizar lo que son los hexdump que es un visualizador de hexadecimal: 

Adicional a esto se puede usar la implementación de scripts para descifrar ya sea en PHP, python , perl y otros lenguajes. Existen muchas formas de descifrar archivos sin necesidad de herramientas, tanto de una forma sencilla cómo la explicada a lo largo de este post que es una forma pasiva que consiste en dos partes básicamente: identificación del cifrado y uso del navegador para descifrarlo 
También están las herramientas (más adelante hare un post de las herramientas y scripts más útiles al momento de encriptar/desencriptar), así cómo los ataques de diccionario o fuerza bruta y los scripts programados.

Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

Esteganografía: Camuflando información en archivos.


Esteganografía literalmente significa escritura encubierta, es la técnica que permite ocultar ya sea mensajes u objetos dentro de otros, los cuales son denominados portadores de tal manera que no sea posible percibir su existencia a simple vista, lo cual hace que sea casi imposible de detectar y que aunque sea interceptado y se tenga conocimiento de la información que posee no se puede saber cómo acceder a ella ni que contiene. Esto hace de la esteganografía una técnica muy valiosa tanto para los espías, como para activistas, militares, gobiernos e incluso terrorismo, ya que juega con la ventaja de que es más o menos invisible (difícil darse cuenta de su existencia), puede ser enviada por canales poco seguros (como internet) y resulta muy complicado demostrar ante un juez que estamos ante una comunicación oculta sin conocer los elementos que la forman.

Hagamos de cuenta que  pegamos dos hojas de papel y en medio de ellas va una cinta con un mensaje oculto y esto solo lo conoce la persona a quien va dirigido. El mensaje puede ser interceptado y robado por un intermediario, pero este (que probablemente espera un mensaje escrito en las hojas) no encontrará nada debido a que el mensaje va dentro de un portador, en este caso el papel. Además podemos añadirle una capa extra de seguridad si lo escribimos en un tipo específico de lenguaje o código. A continuación un gráfico referente a cómo funciona la esteganografía:


Técnicas de esteganografía.

 1. Esteganografía pura: No existe estego-clave, y por tanto, se presupone que el guardían (quien intercepta el paquete) es incapaz de reconocer una información oculta mediante estego de un mensaje normal. Se aplica entonces seguridad basada en la oscuridad, es decir, se oculta un mensaje o información X en un portador Y de tal modo que el guardían no pueda reconocer que existe información oculta dentro.

2. Esteganografía de clave secreta: En este caso, la estego-función depende de una clave que deben conocer tanto el emisor como el receptor.

Además, dentro de estas dos categorías, y atendiendo ya a los canales utilizados, podemos hablar de:

 *  Esteganografía en texto: Ofuscar información en texto, de manera que algunas (o todas) las palabras del mismo, sirvan para descifrar el mensaje. Hay varias técnicas, pero la mayoría se basan en aplicar algún algoritmo que permita elegir diferentes estados (por ejemplo, un 0 o un 1) según diferentes palabras (coche = 0, gato=1), en un orden específico. Así, cuando en el texto aparezca por primera vez coche, entendemos que habrá un 0, y si en vez de coche apareciera gato, sería un 1. Seguiremos leyendo y poco a poco obtendremos el resto del mensaje oculto. De ahí que estas técnicas se suelan apoyar en generación de semántica (para dar sentido a las frases). Tenemos por ejemplo spammimic, una herramienta muy antigua encargada de codificar mensajes en supuestos mensajes de spam (los típicos mensajes de spam que vemos en foros y blogs). Simplemente dices el mensaje a ocultar, y spammimic genera el texto de spam, que el emisor colocaría en una fuente conocida, y el receptor recuperaría para hacer el proceso contrario. Cualquier guardián que viera el mensaje solo vería un spam más, sin darse cuenta de que hay información oculta.

* Esteganografía en sistemas operativos y ficheros: Consiste en ofuscar información apoyándose en las restricciones propias del canal utilizado. Un ejemplo muy utilizado hace algunos años y sencillo de aplicar era el de dividir el disco duro de un ordenador en bloques por ejemplo de 256, cuando Windows como mínimo permitía 512. Al hacerlo de esta manera, se le engañaba, por lo que para cada bloque, Windows utilizaba 256, y el emisor tenía otros 256 para ocultar información, que podía recuperar con herramientas específicas. También resulta bastante sencillo ofuscar información utilizando ADS en NTFS. En NTFS un fichero está construido por varios flujos (uno para los permisos del archivo, otro para datos del usuario,..). Herramientas como LADS o crucialADS permiten recopilar este tipo de archivos.

 * Esteganografía en formato de ficheros: Ofuscamos información en las limitaciones propias del fichero, o de los elementos de control de los sistemas encargados de leer el fichero. La más conocida y sencilla es la Técnica de Final de Fichero (EOF), que aprovecha el poco control a la hora de leer un fichero para ocultar información al final del mismo. La mayoría de sistemas solo leen la información necesaria, por lo que se puede agregar contenido adicional que pasará desapercibido.

* Esteganografía hardware: Aprovechar, de nuevo, las limitaciones (o fallos de seguridad) de un elemento físico para ofuscar información dentro de él. Y aquí el mejor ejemplo es el uso de malware en BIOS (BadBIOS) que sacudió internet entera y el BadUSB, que básicamente siguen el mismo principio.

 * Esteganografía en tecnologías web: Aprovechar la propia arquitectura del lenguaje de maquetado para ofuscar información. Como bien sabe, HTML no distingue entre mayúsuculas y minúsculas, por lo que para el navegador <br> sería lo mismo que <Br>, que <bR> o que <BR>. Y ahí tenemos varias alternativas distintas que funcionan de la misma manera.

* Esteganografía en protocolos de comunicación: Semejante a las técnicas aplicadas en el formato de ficheros, pero con el formato de los protocolos (por ejemplo, ocultando información en cabeceras UDP).

* Esteganografía en contenido multimedia: Tanto en imágenes como en sonido o vídeo. Las técnicas aplicadas en esteganografía de imágenes son muy parecidas a las aplicadas en sonido (basadas normalmente en ocultar información de poco peso en elementos muy pequeños del sistema de archivos multimedia, por ejemplo a nivel de pixeles en imágenes). En vídeo encontramos técnicas cruzadas de los dos anteriores, con algunas nuevas en las que interfiere movimientos específicos (guardar información cuando una zona cambie bruscamente de tonalidad) o en ejes críticos (subidas de volumen o espacios que cumplan x particularidad).

A continuación les dejamos un vídeo hecho por Security Hack Labs:



Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

jueves, 15 de junio de 2017

Instalación y configuración de I2P (Invisible Internet Project) en Sistemas GNU/Linux.


El proyecto I2P (Invisible Internet Protocol) nació en el año 2003 de la mano de un grupo de hackers, desarrolladores y arquitectos del software con la finalidad de crear una red virtual privada que no pudiera ser censurada y contara con buenos niveles de protección y seguridad. El funcionamiento de I2P es similar al de conocidas redes como Tor el cual consiste en enrutar el tráfico de la red por varios puntos utilizando cadenas de proxys, sin embargo aunque posea similitudes con otras redes, la red I2P está basada en el concepto de túneles entrantes y salientes, lo cual ofrece facilidad para la adaptación de programas preexistentes a la red I2P. Cada túnel está compuesto por una secuencia de nodos padres, los cuales transportan la información en un sentido unidireccional. La red I2P no se molesta por el anonimato o por ocultar a sus usuarios como las demás, todo usuario puede ser visto por los demás usuarios pero nunca saber lo que envía, hace, su contenido y con quien se comunica. De esta manera aunque no sea su finalidad, brinda un gran nivel de anonimato al momento de establecer comunicaciones con otros usuarios I2P.

I2P está escrito en Java y es complementado con modulos escritos en C y C++, lo que lo hace multiplataforma y compatible con casi todos los sistemas operativos actuales. I2P facilita al usuario la creación de servidores HTTP, FTP, SSH o SMB sin necesidad de que este posea conocimientos avanzados, estos servicios se ejecutarán de forma anonima dentro de la red.

INSTALACIÓN.

Para realizar la instalación de I2P necesitamos descargar el paquete .jar desde https://geti2p.net/en/download#unix y luego usar la orden $java -jar i2pinstall_version.jar -console desde nuestra terminal de comandos.

Descarga.


 Instalación desde la línea de comandos.


Importante: Crear una carpeta llamada "i2p" dentro de /home/$user y realizar este proceso con un usuario diferente a #root.

Durante este proceso el instalador te preguntará tres cosas, aunque dos son obvias. La primera es si deseas iniciar el proceso de instalación, para ello escribes "1" y das enter, la segunda la ruta de instalación allí debes elegir una ruta dentro del sistema donde el usuario que se está utilizando tenga permisos de lectura/escritura/ejecución, la ruta más conveniente es /home/$user/i2p y la tercera pregunta es si realmente deseas realizar la instalación, repetimos los pasos de la primera. Ya hecho esto empezará el proceso de instalación y si todo sale bien nos mostrara al final un mensaje [ Console installation done ]. La instalación mostrada en el screenshot, fue realizada con Java versión "1.8.0_131".

[shl@SecHackLabs Descargas]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Luego de realizada esta operación, debemos ir a la carpeta /home/$user/i2p y ejecutar el siguiente comando $sudo sh i2proute install y esperar a que finalize, seguido de esto abrimos el script i2proute con nuestro editor de texto favorito y desmarcamos la línea que dice RUN_AS_USER= y luego del = colocamos el nombre de nuestro usuario, en nuestro caso shl, lo cual quedaría así: RUN_AS_USER=shl, lo guardamos, salimos y ejecutamos $sh i2proute restart, e ingresamos a la siguiente dirección en nuestro navegador http://127.0.0.1:7657 y debe aparecernos esto en nuestro navegador.


Verificamos que los servicios que necesitemos, dependiento de lo que queramos estén activos abriendo la siguiente dirección http://127.0.0.1:7657/i2ptunnelmgr.


Más abajo tenemos la opción de iniciar otros servicios alternativos.


Para tener un mejor rendimiento del servicio, es altamente recomendable configurar el ancho de banda en http://127.0.0.1:7657/config, y ajustando los parámetros de salida/entrada de acuerdo a nuestra velocidad de internet teniendo en cuenta el tope máximo que allí referencian. Cabe aclarar que el valor debe ser dado en KiloBytes (Kb)


En la parte inferior damos en "Guardar cambios" y con eso estará todo listo.


CONFIGURACIÓN DEL NAVEGADOR PARA ABRIR ENLACES .I2P.

Llegamos al momento que todos esperábamos, luego de tener instalado I2P e iniciado el servicio ¿Como hago para navegar dentro de la red i2p? Sencillo, lo primero que debes hacer es configurar el proxy de tu navegador de la siguiente manera: Para conexiones HTTP - servidor proxy: 127.0.0.1 puerto. 4444, para conexiones HTTPS - servidor proxy: 127.0.0.1 puerto: 4445, si usas Mozilla Firefox, debe quedar así:
Y listo! Ahora podremos abrir direcciones .i2p en nuestro navegador tales como son:









Con esto damos por concluído este post, en otro post explicaremos el uso de otros protocolos i2p tales como IRC, FTP y similares. Esperamos que sea de su agrado, si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.