Pentesting con GO
Tiempo de lectura estimado: 5 minutos
Esta conferencia magistral pertenece al Módulo 9 “Pentesting” de C1b3rWall Academy 2021/2022. El objetivo de la misma es mostrar las bondades del programa GO frente a otros para hacer pentesting
Por qué usar GO
GO Es un programa multipropósito de fácil sintaxis y tiene una eficiencia comparable con C. Cuenta con una gran librería estándar y una fuerte concurrencia y multiprocesos desde su concepción, además de compilación cruzada.
Cuando estamos haciendo pentesting, a veces necesitamos performance y pensar en grande. Buscamos un equilibrio entre scripting y aplicaciones más grandes, así como cross-compiling. Además, su librería estándar permite bases de datos, protocolos de redes, criptografía y codificación de datos (JSON, XML, hex, Base64…)
Reverse shell
Los puntos clave a analizar en este código son la compilación cruzada y la sintaxis expresiva. A la hora de compilar lo único que hay que hacer es añadir el sistema operativo de destino.
En líneas generales, lo que hacemos es establecer una conexión con un tiempo de espera máximo bajo el protocolo TCP a una IP y un puerto concretos. Puedes obtener el código de esta herramienta aquí.
Reverse DNS lookup
Vamos a poner la velocidad a prueba utilizando goroutines haciendo uso de la librería estándar. Al ejecutarlo podemos observar que su velocidad es superior a la de un .batch, por ejemplo. Puedes obtener el código aquí.
Port scanner
El objetivo es comparar el tiempo de ejecución de goroutines con respecto a la ejecución lineal (ir probando cada puerto de manera secuencial). Observamos la diferencia entre 22 segundos y 500 milisegundos a partir de una sintaxis muy sencilla. Puedes obtener el código aquí.
HTTP directory fuzzer
Una de las mejores herramientas para hacer directory fuzzer en sitios web es gobuster, por su rapidez y eficacia. Crearemos tipos de datos (struct) y veremos cómo se leen los archivos. Esta vez utilizaremos una librería externa que nos permitirá imprimir en color el resultado de las funciones. Puedes obtener el código aquí.
Conclusiones
- Go es fácil de codificar y nos proporciona soluciones escalables.
- Es rápido en su ejecución.
- Muchas herramientas de pentesting se están construyendo en este lenguaje
Todas las herramientas están explicadas con detalle en la versión en vídeo de esta masterclass.
¿Todavía no formas parte de C1b3rWall Academy? El contenido es gratuito, únete a otras 30.000 personas desde este enlace.
Si te interesa este tema, puedes consultar la información y cursar el Máster en Ciberseguridad o ver la oferta de másteres desde aquí.
Ponente: Carlos Azúa
Consultor de ciberseguridad en Dreamlab Technologies especializado en pentesting y desarrollo de software. Cuenta con algunas certificaciones y cursos como eWAPTX, PACSP, eCPPT, CEH o Penetration testing with golang.
¿Cuál es tu reacción?