martes, 11 de junio de 2013

DEFENSA OFENSIVA POR OSCURIDAD -PORT KNOCKING IV Michael Rash Vs Moxie

Fwknop versus Knockknock

En la primera parte hablé de manera consciente sobre Kwknop y como implementarlo. Se dejó claro que el resto de las implementaciones son inseguras y vulnerables a esquemas Man In The Middle .

Fwknop 

Por esa inseguridad, es por lo que instalamos Fwknop de Michael Rash como mitigación a los ataques "Man In The Middle" .

Esta herramienta implementa Single Packet Authorization (SPA), conocido como técnica de port-knocking de paquete único. 

En este caso, toda la secuencia -o contraseña- se encuentra dentro de un único paquete cifrado, evitando así la captura de los datos y no teniendo el problema de pérdida parcial de paquetes. 

Otras funcionalidad de fwknop es que aumenta la seguridad, como la inclusión de la IP de origen dentro del paquete cifrado, lo que dificulta un ataque Man in the Middle, así como el soporte para usar criptografía de clave pública.



Todas las implementaciones de PK / SPA tienen tres objetivos principales: 

1) la implementación de una política de firewall por defecto-drop para un servicio (como SSHD) con el fin de protegerse contra las exploraciones, las vulnerabilidades potenciales, y la fuerza bruta de contraseñas  

                        

2) La monitorización pasiva  de los paquetes construidos y  especialmente la información de autenticación del cliente PK / SPA

       

3) la reconfiguración dinámica del firewall para permitir el acceso temporal a la "protección"

                        


Muchas personas no quieren Instalar Perl, Python, Ruby en Servidor de Seguridad de la OTAN por ejemplo . Esta herramienta está escrita en Lenguaje C .Tanto el Cliente y el Servidor fwknop estan en C - No existe la necesidad de  perl, python, o cualquier Otro Lenguaje interpretado.

Bien.. hasta aquí solo he explicado sin hacer crítica de ella y a priori, esta herramienta es la existente como la única alternativa?

Evidentemente no .. 

Knockknock



Veamos que dice Moxie a todo esto que he dicho...

Exactamente, Moxie establece los "por qué" de su "NO" a las implementaciones "normales" de Port-Knocking



No quiere algo escrito en un lenguaje inseguro?.Debe ser una aplicación muy pequeña, y los requisitos de funcionamiento debe ser mínimoS.
No quiere algo que se ejecuta en el kernel.
No quiere un nuevo servicio que se una a un puerto.
No quiere algo que utiliza libpcap e inspecciona cada paquete.
No quiere algo que utiliza UDP.
No quiere algo que genera evidentes peticiones dejando a un atacante saber exactamente qué puerto está a punto de abrirse.
No quiere algo que requiere que más de un paquete se mueve por la red.
No quiero algo que utiliza la criptografía "a medias"



Por lo tanto antes tales motivaciones Moxie creo KnockKnock

Cómo funciona knockknock:

Los Servidores ejecutan la aplicación en python 'knockknock-daemon', y los clientes de los puertos abiertos en esos servidores están ejecutando la aplicación python 'knockknock'

Si desea abrir un puerto de un cliente, se ejecuta 'knockknock', que envía un paquete SYN al servidor. 



La IP del paquete y las cabeceras TCP están codificados para representar a una solicitud cifrada segura IND-CCA y para abrir un puerto se especifica la dirección IP de origen.

Los campos de este paquete se registran en kern.log y son procesados ​​por 'knockknock-daemon ", que los validará

               

Se conecta desde el cliente hasta el puerto, ahora abierto en el servidor.

El puerto se cierra detrás de ti y no permite ninguna conexión nueva.

Escrito en Python

La solicitud se cifra con AES en modo CTR, con un HMAC-SHA1 utilizando el paradigma de "authenticate-then-encrypt"



Protege contra evesdropping, ataques de repetición, y todas las formas conocidas de criptoanálisis.



El protocolo de comunicación es un sistema de cifrado seguro IND-CCA simple 


Knockknock-daemon necesita privilegios de root para ajustar las reglas de iptables, que emplea la separación de privilegios para aislar el código que realmente se ejecuta como root a ~ 15 líneas.




Pero según Moxie, aunque la base de código es muy pequeño y muy simple, la única parte del código que realmente ejecuta con privilegios de root es aún más pequeño y aún más simple.disminuyendo el riesgo





El código knockknock-daemon es muy simple, y está escrito en Python un lenguaje de "seguro" para Moxie.

Bien, una vez vistos, la cuestión sería.. Quien tiene razón ?

@michaelrash No quiere Python y Perl porque no lo considera lo suficientemente seguro para entornos corporativos grandes y aboga por C

Para @Moxie C es inseguro y no quiere nada que haga "cosas desconocidas" en su código.

Bueno PUES NI C es inseguro, NI Python TAMPOCO ... Aunque personalmente pienso que decir que C no es conveniente, me parece cuanto menos ridículo. 

Esa es la opinión personal de Moxie que ha desarrollado su herramienta en otro lenguaje .. 

Pero OBJETIVAMENTE, no se donde encuentra Moxie los "problemas que alude" de "lenguajes desconocidos" al hablar de esto.

Una u otra, eso va en vosotros ... Ninguna es mejor que la otra, son diferentes y esas diferencia viene planteada básicamente por el lenguaje de desarrollo, peor vamos, que ninguna de las dos agaunta el Knock-Out .

Ambos evitan el esquema de Man In The Middle .. Asi que, la decisión es vuestra .. Yo tengo la mía ya tomada hace mucho tiempo.

Un saludo

Juan Carlos García @secnight

Live Free Or Die Hacking 














5 0verl0ad Labs: DEFENSA OFENSIVA POR OSCURIDAD -PORT KNOCKING IV Michael Rash Vs Moxie Fwknop versus Knockknock En la primera parte hablé de manera consciente sobre Kwknop  y como implementarlo. Se dejó claro que el resto d...

No hay comentarios:

< >