Ciberseguridad con Go - Parte 1

Ciberseguridad con Go - Parte 1

La Seguridad Informática o Ciberseguridad se ha vuelto una preocupación crítica para individuos y organizaciones por igual. La necesidad de desarrollar aplicaciones y herramientas seguras, eficientes y confiables ha llevado a la búsqueda constante de tecnologías que puedan cumplir con estos requisitos.

En este contexto, el lenguaje de programación Go ha emergido como una opción prometedora debido a su combinación de simplicidad, rendimiento y características de seguridad integradas.

Go: Una breve descripción

Figura 1. Intro Go. Fuente: OpenWebinars.


Go ha experimentado una rápida adopción en una amplia gama de campos, destacando especialmente en el de la Seguridad Informática. Gracias a su sintaxis clara y concisa, Go es un aliado accesible y amigable que acelera significativamente el proceso de desarrollo.

Un elemento distintivo es su compilador, capaz de generar binarios altamente optimizados y eficientes, una característica crítica al crear aplicaciones de seguridad que demandan respuestas ágiles y una administración óptima de recursos.

Ventajas de Go en Seguridad Informática

Rendimiento y Eficiencia: En el ámbito de la seguridad informática, la velocidad es esencial. Go ofrece un rendimiento excepcional debido a su compilador altamente optimizado y a la ausencia de una máquina virtual. Esto permite la creación de herramientas que pueden analizar grandes volúmenes de datos en tiempo real, identificando amenazas potenciales de manera eficiente.

Concurrencia: Go incorpora goroutines y canales, lo que facilita la creación de programas concurrentes y paralelos. Esto es esencial en aplicaciones de seguridad que deben manejar múltiples tareas simultáneamente, como análisis de tráfico de red o monitoreo de eventos.

Seguridad Integrada: Go se esfuerza por evitar vulnerabilidades comunes al tener en cuenta aspectos de seguridad en su diseño. Por ejemplo, su sistema de tipos fuertes y su manejo de punteros ayudan a prevenir errores de programación que podrían llevar a vulnerabilidades.

Bibliotecas Estándar: Go cuenta con una biblioteca estándar rica y bien documentada que incluye paquetes para el cifrado, la autenticación, la comunicación segura y más. Esto permite a los desarrolladores de seguridad construir aplicaciones sólidas sobre bases confiables.

Casos de uso en Seguridad Informática

Herramientas de Análisis de Vulnerabilidades: Go se utiliza para desarrollar herramientas que escanean aplicaciones en busca de posibles vulnerabilidades, facilitando la detección temprana y el parcheo.

Gosec

Figura 2. Gosec. Fuente: GitHub/Securego.


Gosec es una herramienta de análisis estático de código (SAST) escrita en Go. Se utiliza para identificar posibles problemas de seguridad en el código fuente de aplicaciones escritas en Go, como vulnerabilidades de inyección de SQL, problemas de autorización incorrecta y más.

Instalación de Gosec

Antes de empezar, asegúrate de tener Go instalado en tu sistema. En este caso, cabe resaltar que se usa el sistema operativo Kali Linux. Luego, puedes instalar Gosec ejecutando el siguiente comando en tu terminal:

Figura 3. Instalación de Go. Fuente: Bladimir Peláez.

Figura 4. Instalación de Gosec. Fuente: Bladimir Peláez.


Para verificar que Gosec ha sido instalado con éxito, inserta el siguiente comando:

Figura 5. Verificar Gosec. Fuente: Bladimir Peláez.


Con lo anterior, hemos comprobado que Gosec ya se encuentra instalado correctamente en nuestro sistema.

Ejemplo 1: Escaneo de un Archivo Simple con Gosec

Creamos un archivo de código Go llamado ejemplo1.go y, para uso demostrativo, le agregamos el siguiente contenido:

Figura 6. Ejemplo1. Fuente: Bladimir Peláez.


Creamos un segundo archivo llamado ejemplo2.go y, a continuación, ejecutamos el siguiente comando:

Figura 7. Ejemplo 2. Fuente : Bladimir Peláez.


Figura 8. Gosec ejecución I. Fuente : Bladimir Peláez.

Figura 9. Gosec ejecución II. Fuente : Bladimir Peláez.


En el primer ejemplo, Gosec analizará el archivo y mostrará los problemas de seguridad potenciales que encuentra (como almacenar contraseñas en texto plano), mientras que en el segundo ejemplo pondrá la lupa en la conexión a la base de datos sin cifrar. Cabe resaltar que Gosec no recibe un archivo como argumento, sino más bien una carpeta, es decir, en este caso se utilizó el parámetro ./ ; Lo que quiere decir que le estamos diciendo que haga el escaneo en la ruta actual.

Herramientas de Enumeración en Aplicaciones Web y Servidores con Go

Gobuster

Figura 10. Gobuster. Fuente: www.kali.org.


En el vasto paisaje digital de aplicaciones web y servidores, a menudo se presentan desafíos para identificar recursos ocultos o directorios sensibles que pueden ser explotados por atacantes malintencionados. Aquí es donde entra en juego Gobuster, una herramienta que facilita la búsqueda exhaustiva de recursos al escanear el objetivo seleccionado con distintos patrones y palabras clave.

Características de Gobuster

Enumeración de Directorios y Archivos: Gobuster se especializa en la enumeración de directorios y archivos en un objetivo específico. Esto es esencial para identificar puntos de entrada potenciales que podrían ser objeto de ataques.

Diversidad de Ataques: La herramienta permite configurar diversos modos de ataque, como la fuerza bruta basada en diccionario, que prueba combinaciones de palabras clave predefinidas para encontrar recursos ocultos. También es posible especificar el tamaño de las palabras clave, lo que amplía aún más las posibilidades de descubrimiento.

Soporte para Protocolos: Gobuster no se limita solo a aplicaciones web. Puede trabajar con diversos protocolos, incluyendo HTTP, HTTPS, FTP y más, lo que amplía su alcance para la enumeración en una variedad de contextos.

Personalización de Requisitos: La herramienta permite personalizar criterios como la extensión de archivos, códigos de estado HTTP específicos y tiempo de espera entre solicitudes. Esto permite afinar los resultados y reducir el ruido en la salida.

Uso Práctico de Gobuster en la Seguridad Informática

Ejemplo 1. Descubrimiento de Directorios Ocultos en una Aplicación Web con Gobuster

Supongamos que  evalúas la seguridad en una aplicación web en el dominio http://testphp.vulnweb.com. Quieres asegurarte de que no haya directorios ocultos o recursos sensibles que no sean visibles para los usuarios normales. Puedes usar Gobuster para escanear en busca de directorios que podrían haberse pasado por alto.

1- Instala Gobuster en Kali Linux con el siguiente comando:

Figura 11. Instalar Gobuster. Fuente: www.kali.org.


2- Abre tu terminal y ejecuta el siguiente comando para iniciar un escaneo con Gobuster:

Figura 12. Escaneo con Gobuster. Fuente: Bladimir Peláez.


En el comando anterior:

  • dir indica que deseas realizar un escaneo de directorios.
  • -u http://testphp.vulnweb.com especifica la URL objetivo que deseas escanear.
  • -w /usr/share/wordlists/fasttrack.txt proporciona la ruta al archivo de diccionario que Gobuster utilizará para las pruebas. Un diccionario es una lista de palabras clave que Gobuster probará para encontrar directorios.

Gobuster comenzará a escanear la URL proporcionada utilizando las palabras clave del diccionario. Verás que Gobuster mostrará en la terminal los directorios que encuentra en el servidor. Por ejemplo, si el diccionario contiene palabras como admin, secret, backup, etc., Gobuster intentará acceder a directorios como http://testphp.vulnweb.com/admin, etc.

Figura 13. Resultados de Escaneo Gobuster. Fuente: Bladimir Peláez.


En la imagen anterior observa los resultados del escaneo. Gobuster te mostrará los códigos de respuesta HTTP para cada solicitud realizada. Presta atención a los códigos de respuesta 200 (OK) y 301 (redirección), ya que podrían indicar la presencia de un directorio o recurso oculto.

En este contexto, el lenguaje de programación Go emerge como un aliado confiable. Su combinación de eficiencia, concurrencia y enfoque en la seguridad lo convierten en una herramienta poderosa para desarrollar aplicaciones y herramientas resistentes y ágiles. Go no solo simplifica el proceso de desarrollo, sino que también aborda vulnerabilidades potenciales desde su diseño.

Hasta este punto hemos abordado algunos temas sobre qué es Go y cuán eficiente es su uso en seguridad informática, además de algunos ejercicios prácticos enfocados desde un punto ético. Damos por concluida la primera parte de Ciberseguridad con Go.

¡Hasta luego!

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.