Reviving My Early Days and Looking Ahead -> [THE BEGINNINGS]

Recently, I have decided to revive my old blog by re-publishing my early cybersecurity posts as a tribute to where it all began. These posts, all in Spanish and flagged with ”[THE BEGINNINGS]” in their titles, were originally hosted on https://dan1t0.wordpress.com (El Rincón de dan1t0) back in 2010. At that time, I simply shared small tips and personal experiences that helped me take my first steps in IT security.

Reading these entries now, I am amazed at how far I’ve come. They remind me of my humble beginnings as a security auditor and ethical hacker. For sentimental reasons—and to preserve this important legacy—I am keeping these posts alive.

Below are the articles I’m referring to:

  • [THE BEGINNINGS] Tipos de ataques Denial-of-Service
  • [THE BEGINNINGS] Wireshark: Instalación en Mac OS y manual de uso
  • [THE BEGINNINGS] Análisis de redes: Enumeración de sistemas Windows
  • [THE BEGINNINGS] Qué es y cómo funciona un escaneo de puertos Idle
  • [THE BEGINNINGS] Seguridad: comprometiendo un switch (Parte 1 de 2)
  • [THE BEGINNINGS] Manifiesto por una Red Neutral
  • [THE BEGINNINGS] Seguridad: comprometiendo un switch (Parte 2 de 2)
  • [THE BEGINNINGS] GNS3: Instalación y configuración básica
  • [THE BEGINNINGS] Tips: Jailbreak iPad 4.2.1 Untethered Greenpois0n
  • [THE BEGINNINGS] Scapy: Construyendo un paquete UDP
  • [THE BEGINNINGS] ZAP y proxys Web: Analizar el trafico durante la navegación
  • [THE BEGINNINGS] RFI/LFI: ¿y ahora qué?
  • [THE BEGINNINGS] Configuración fácil y rápida de OpenVPN en MacOS X
  • [THE BEGINNINGS] DoS sobre renegociación SSL/TLS (CVE-2011-1473)
  • [THE BEGINNINGS] pySIM-Reader: Accediendo a una tarjeta SIM
  • [THE BEGINNINGS] Tools y Contribuciones

In this post, I explain my journey of reviving my blog by bringing these early entries back into the spotlight as a reminder of my progress over the years. Moving forward, the content here will focus on current cybersecurity topics, but I felt it was important to preserve these legacy posts for both sentimental and historical reasons.

Happy Hacking!

[THE BEGINNINGS] Tools y Contribuciones

En esta sección iré publicando una serie de enlaces a herramientas creadas por mi y contribuciones en diferentes blogs, espero que os sea de utilidad y vaya creciendo poco a poco. Todo esta licenciado bajo GPLv3

Herramientas:

  • BascicAuthBF: Easy tool to bruteforce HTTP Basic access authentication like tomcat, CISCO, etc GitHub Updated: 2025: The project was recently moved from BitBucket

Posts:

[THE BEGINNINGS] pySIM-Reader: Accediendo a una tarjeta SIM

La herramienta de la que vamos a hablar hoy, hace unos años tenía más sentido que ahora, ya que con los nuevos móviles y smartphones la tarjeta SIM ha quedado relegada a un segundo plano, en la actualidad prácticamente solo sirve de interacción con el operador. Ya podréis haceros a la idea de que hablamos de una herramienta que sirve para explorar la tarjeta SIM de un móvil en busca de datos. Para ello utilizaremos el software escrito en Python llamado pySIM.

Para ello necesitamos primero el hardware, en este caso hay dos posibilidades, una de ellas es la que comenta la web y otra encontrada por mí de pura suerte. El software del que hablamos se conecta a la tarjeta a través de un dispositivo por un puerto serial, pues bien, en la ya conocida web de DealExtreme encontramos un lector de tarjetas SIM por menos de 3€ que para funcionar necesita un driver USB-2-Serial windows Mac OS X y que funciona correctamente con pySIM-Reader. Y la otra opción más divertida y la que en un principio hice yo es comprarlo y montarlo yo mismo, es más caro, pero la satisfacción de hacerlo y que funcione para algunos es más gratificante.

Por otro lado para hacerlo funcionar depende del sistema operativo, en Windows podemos descargar el ejecutable de aquí, para Linux y Mac OS X necesitamos tener instalado Python, pySerial (librería para interactuar con un puerto serial [COM] y wxPhyton (librerías de Python para generar entornos gráfico), además del código del programa. Para que funcione correctamente en Mac OS X os recomiendo MacPort con Python 2.6 y instalar wxPhyton y pySerial desde MacPort también, a mi de otra forma me dio muchos problemas.

Interfaz pySIM

Para hacerlo funcionar puedes conectarlo a través de un conversor USB-Serial y al abrir el pySIM-Reader te pedirá que le digas el dispositivo, en Mac OS X y Linux os puede pasar que el dispositivo creado no sea el que aparece en la ventana del programa, mi solución fué hacer un ln entre el dispositivo real creado en /dev/ y el que te reconoce el programa, si os contáis directamente por cable serie puede que no tengáis este problema.

Creando el link al dispositivo requerido:

El programa tiene un pero muy grande y de cierto modo es lógico, y es que para extraer los datos de la SIM hay que facilitar el código SIM, por lo que solo podemos extraer información de nuestra SIM o en el caso de que tenga deshabitado el PIN, pero evidentemente al ser el software OpenSource podemos acceder al código y entender a un bajo nivel como accede al chip.

Informacion incial del programa (izquierda) y de la SIM (derecha):

El software permite entre otras cosas:

  • Agenda:
    • Mostrar Agenda
    • Modificar Agenda
    • Mostrar última llamada
    • Hacer/Restaurar backup de Agenda
  • SMS:
    • Mostrar SMS
    • Hacer/Restaurar backup de SMS
  • SIM:
    • Mostrar información de la SIM (no necesita PIN)
    • Cambiar el PIN
    • Habilitar/Deshabilitar el PIN

Petición de código PIN:

El programa accede a la SIM de una forma más o menos sencilla de entender, la SIM funciona como una memoria de tamaño fijo (64K por ejemplo) la cual está dividida en sectores o partes y cada parte tiene habilitada varios espacios de memoria fijos en los que se almacena la información. De esta forma el programa, de acuerdo con la RFC de la arquitectura de una tarjeta SIM, sabe que si accede a la posición X,N accede por ejemplo a un registro que guarda un número de teléfono y si accede a X,N+1 accedería a el número de teléfono siguiente almacenado. Podemos decir que está estructurada en una especie de matriz.

pySIM recorriendo la estructura interna de la SIM:

Para poder acceder a esta matriz hay que conocer el PIN, ya que entre los datos y la petición del teléfono o el lector existe un microprocesador que es el que se encarga de comunicar ambos lados. Este programa con sus limitaciones puede ser interesante si por ejemplo lo usamos para hacer un forense a un móvil de empresa que conocemos el código PIN.

Os enseño una foto del resultado una vez soldado:

[THE BEGINNINGS] DoS sobre renegociación SSL/TLS (CVE-2011-1473)

Siempre que hablamos de conexión segura en internet solemos hablar de HTTPS, la diferencia básica entre HTTP y HTTPS es que mediante el protocolo HTTP la información viaja en plano por lo que cualquier intermediario puede husmear nuestra información cosa que no nos interesa, a raíz de la necesidad de mayor seguridad nació HTTPS que añade una capa de cifrado en la comunicación de nuestros datos en la capa de transporte, este cifrado se realiza a través del estándar SSL/TLS. Netscape desarrolló en 1996 SSLv3 que más tarde sirvió para asentar las bases del desarrollo del estándar TLSv1.0, la versión actual es TLSv1.1. En el post de hoy intentaremos explicar como realizar un ataque de denegación de servicio aprovechando que un sitio acepte la renegociación SSL/TLS.

Normalmente cuando alguien desarrolla una web en la que se necesita un nivel de seguridad, ya sea por un login, o por que se realizan tareas delicadas como operaciones bancarias, intranet de una empresa o compras online; es necesario implementar HTTPS, como ya hemos comentado hay diferentes versiones de SSL/TLS y muchas veces las versiones antiguas de los navegadores no son compatibles con las versiones más nuevas de los protocolos de cifrado que HTTPS puede implementar, estas versiones antiguas tienen problemas como niveles de cifrado débiles para la actualidad, menores de 128bits o como en el caso que nos ocupa, tener activada la renegociación de la conexión puede hacer que seamos víctimas de un ataque DoS. En muchas ocasiones esto es permitido por las webs para que sus clientes no tengan problemas de acceso, y puedan navegar aunque estén usan un protocolo de cifrado de hace 10 años. O simplemente por un despiste del desarrollador del sitio.

Para poder explicar como funciona este ataque D.o.S. es importante primero entender como funciona el handshake de HTTPS:

En la primera parte se establece la versión del protocolo sobre la que se trabajará; se establece un id de sesión; el servidor envía su cipher suite que es una lista de protocolos, versiones y métodos de cifrados que acepta; se decide el método de compresión y se intercambian una serie de valores aleatorios.

  • Este paso es opcional, el servidor envía su certificado y la verificación del mismo.

  • Este paso va de la mano del paso 2, el cliente responde al servidor con su certificado y la verificación del mismo.

  • En este paso se produce el intercambio final de los certificados del cliente y servidor y de sus espeficaciónes correspondientes. A partir de ahora la comunicación cliente-servidor es cifrada.

La base de este ataque se encuentra en el consumo de recursos que le supone al servidor en relación con el cliente, para que nos hagamos una idea un servidor puede negociar entre 150-300 handshakes por segundo (según la potencia del mismo), mientras que un cliente puede solicitar hasta 1000 handshakes por segundo, por lo que no es necesario una botnet ni un súper ordenador para realizar este ataque. Pero para que este ataque surta el efecto deseado el servidor tiene que tener habilitada la renegociación de SSL/TLS. Como podemos observar, es fácil darse cuenta de por donde van los tiros en este ataque, pedir N peticiones de renegociación de cifrado a nuestro servidor víctima.

Hay varia formas de detectar esta vulnerabilidad, si usamos Nessus existe un plugin (ID53491), aunque también se puede comprobar de forma manual con el comando openssl:

openssl s_client -connect IP:PUERTO
HEAD / HTTP/1.0
R
RENEGOTIATING

Si nos devuelve RENEGOTIATING podemos tener claro que el servidor es vulnerable:

Los chicos de www.thc.org The Hackers Choice< han desarrollado una herramienta para poder explotar esta vulnerabilidad a fondo, la podeis encontrar aqui.

Para prevenir este tipo de ataques y otros como MiTM es muy importante tener siempre desactivadas las versiones mas desfasadas de los protocolos de cifrado, tener el software siempre actualizado, las últimas versiones de Apache no son vulnerables y tiene la renegociación SSL desactivada, al igual que las últimas versiones de Microsoft IIS. Por otro lado también es interesante implementar reglas de forma que una determinada IP tenga un número máximo de renegociaciones SSL por segundo, por ejemplo 5, ya que muchas veces como en el caso de querer que los clientes tengan que autenticarse en ciertas paginas con certificados X509 es necesaria tener activada la renegociación.

Es importante comentar que el fallo no está en el protocolo en si, sino en la opción de renegociación de la conexión cifrada.


Fuentes:

[THE BEGINNINGS] Configuración fácil y rápida de OpenVPN en MacOS X

Desde hace un tiempo me he estado pegando con distintos clientes para OpenVPN en MacOS X y la verdad he probado varios como Tunnelblick que es el cliente recomendado por OpenVPN en MacOS X con interfaz gráfica. Pero la verdad es que últimamente me estoy aficionando más a la terminal así que en este post pasaré a explicar de una forma muy sencilla la instalación y conexión contra un servidor OpenVPN desde un MacOS X.

Primero comentar que hay dos formas de instalar el cliente. Por un lado podemos descargar el código fuente de OpenVPN desde aquí y posteriormente necesitaremos instalar TUNTAP, que es una extensión del kernel que se comporta como un demonio que permite la creación de interfaces virtuales de red, podéis descargar el código fuente desde aquí. Luego habría que compilar los programas y crear nuestra VPN. Pero hay una forma más sencilla que es la que pasaré a contar. Para ello previamente necesitaremos tener instalado en nuestro sistema MacPorts.

Lo primero es instalar con MacPorts los dos paquetes necesarios, para ello simplemente abrimos un terminal y escribimos:

$ sudo port install openvpn2  #instalamos el primer paquete
$ sudo port install tuntaposx  #instalamos el segundo paquete

Una vez instalados los dos paquetes primero deberemos arrancar el demonio tuntaposx para que openvpn2 pueda crear las interfaces tun, para ello:

sudo port load tuntaposx #cargamos el modulo del kernel

Llegados a este punto es necesario tener los archivos de configuración de la VPN a la que queramos conectar, para ello debemos contar con un archivo de configuración y una serie de keys que nos debe de generar previamente el administrador de la red, para cargar la VPN, tan fácil como:

sudo openvpn2 MiConf.conf & #arrancamos la VPN

Si el proceso se realizo correctamente ya deberíamos tener levantada nuestra conexión OpenVPN (podemos comprobarlo escribiendo en el terminal sudo ifconfig y ver si existe alguna red del tipo tunX.

Si tuviéramos que crear alguna ruta para llegar algún equipo de la VPN ahora seria el momento, para ello utilizaríamos el comando route -n.

Por último una vez queramos acabar con la conexión OpenVPN simplemente debemos matar el proceso (con un sudo kill -9 [PID-openvpn2] devuelto al ejecutar el openvpn2) y bajamos el demonio tuntap, para ello simplemente escribimos:

sudo port unload tuntaposx #bajamos el modulo

Page 2 of 5