Lo que necesito para mi carrera como Pentester - Parte 1

Lo que necesito para mi carrera como Pentester - Parte 1

En el artículo anterior hice un acercamiento detallado a la carrera de Pentester en la práctica, donde se explicaron los tipos de tecnologías, la información necesaria y la ejecución del análisis de seguridad.

Ahora, abordaré cuáles son los conocimientos mínimos para iniciarse en esta carrera tan bien remunerada y abundante en el mercado laboral.


Requisitos Mínimos

Linux

Aproximadamente el 80 % de los servidores en Internet funcionan con Linux, es decir, para entender los aspectos de seguridad de un servidor es fundamental un conocimiento decente sobre ese sistema operativo. Por lo tanto, es muy recomendable estudiar y utilizar una distribución de Linux. El más querido en el área es Kali Linux, que fue creado por Offensive Security, basado en Debian, se enfoca en Infosec y tiene varias herramientas útiles ya instaladas.

Guía Foca fue mi primer libro sobre Linux y es mi favorito. No es necesario leerlo completo, solo los capítulos principales relacionados con Infosec:

  • Intermedio: 1, 2, 4 (opcional), 7 al 15, 18, 20, 21, 25, 27;
  • Avanzado: 1, 2, 4, 10, 11 14, 15, 19, 20, 21;
  • Seguridad (WIP): 1 al 4.

Programación


Si todas las aplicaciones están hechas de código, entonces, ¿cómo entender su seguridad sin saber programar? ¡Imposible!

Un Pentester no necesita ser un gran programador (o programadora), pero es necesario saber un mínimo de revisión de código y ser capaz de crear scripts/exploits dirigidos al análisis.

Hay muchos lenguajes de programación, pero para el área de Seguridad Ofensiva, estos son los los más importantes:

C/C++

De los lenguajes clásicos, C y C++ se consideran los fundamentos más importantes y aprenderlos es crucial en el campo de la tecnología de la información, ya que otros lenguajes, como JavaScript, Python, C# y Java, se originaron a partir de ellos.

Además, C y C++ están presentes en los sistemas operativos, en los estudios de Ingeniería Inversa y en la explotación de binarios (archivos ELF), como la explotación del Kernel.

Un pequeño ejemplo de código C vulnerable a Buffer Overflow:


Python

Python, uno de los lenguajes más prácticos, es excelente para desarrollar exploits muy variados. La mayoría de los scripts de Infosec están en este idioma. Python tiene varias bibliotecas, como Selenium o requests, enfocadas a ataques de automatización. Incluso BurpSuite, la herramienta de proxy más utilizada en Pentest, puede transformar solicitudes en scripts de Python.

Importando la solicitud anterior a un script de Python usando BurpSuite:

Shell Script (Bash Scripting)


Como parte del estudio de Linux, Shell Scripting es una forma de combinar y automatizar el intérprete de comandos del sistema operativo. Al igual que Python, los scripts de Bash son frecuentes tanto para CVE PoC como para escenarios relacionados con servidores Linux. Por lo tanto, entenderlos es fundamental.

Hay miles de formas de aprender a programar: universidad, YouTube, libros, cursos online, documentación… ¡en fin! En ese sentido, siéntete libre de elegir tu metodología de aprendizaje. Como sugerencia, separé algunos materiales de estudio interesantes:

(YouTube) Curso de Python: Curso Python #01 - Seja um Programador
(YouTube) Curso de Bash: Intensivo de Programação em Bash #1: Introdução
(YouTube) Curso de C: Programação em C - Aula 4 - Hello World - eXcript
(CodeCamp) Curso de Python (Eng): Python Crash Course
(Ejercicio) Plataforma de estudio de programación: beecrowd

Contraseñas y Criptografía


El almacenamiento inseguro de contraseñas sigue siendo muy común en muchas empresas, y cuando ocurre una fuga de base de datos, el nivel de criticidad depende completamente de cómo se almacenaron.

No es necesario tener un conocimiento profundo de criptografía para trabajar como Pentester, solo es necesario tener un conocimiento general de cada tema.

Funciones Hash criptográficas

Es extremadamente importante comprender cuáles funciones Hash son seguras y cuáles deben evitarse, comprender cómo usar buenos algoritmos para almacenar contraseñas, como bcrypt, y advertir contra el uso de SHA1, MD4, MD5 y otros Hash inseguros.

Encodes

Los Encodes son algoritmos presentes en casi todos los sistemas, principalmente en base64. La información sensible suele estar codificada en este algoritmo y es fundamental saber identificarla.

Vale la pena mencionar que muchas personas piensan erróneamente que las encodes son encriptación y no lo son, ya que no hay contraseña en el proceso de encriptación.

Contraseñas Linux


En los sistemas Linux más antiguos, las contraseñas se almacenaban en el directorio /etc/passwd. Actualmente, este archivo solo enumera la información del usuario del sistema y la información de la contraseña se almacena en /etc/shadow, donde solo los usuarios administrativos tienen acceso.

En este archivo, las contraseñas siguen el formato de un usuario, el tipo de Hash, la contraseña Hash y otra información de la contraseña, como la fecha de caducidad:

Cabe destacar que se utilizan cuatro tipos de Hash, 1 para MD5, 2 para Blowfish, 5 para SHA-256 y 6 para SHA-512.

Contraseñas Windows


Las contraseñas de Windows se encuentran en la base de datos denominada Security Account Manager (SAM), ubicada en C:\Windows\System32\Config\SAM. Este archivo almacena las contraseñas en formato Hash LM/NTLM.

También existe un servicio llamado Local Security Authority Server Service (LSASS), responsable de la política de seguridad del sistema, donde también es posible obtener contraseñas.

Herramientas para descifrar contraseñas


Durante un análisis de seguridad donde es posible obtener un Hash, es bastante interesante intentar descifrarlo para obtener la contraseña. Para ello, John y Hashcat son excelentes herramientas en este proceso.

Cabe destacar que se instalan de forma nativa en Kali Linux y son fáciles de usar. También es posible romper un Hash (principalmente los más débiles, como MD5) usando herramientas en línea, como: HashKiller, CrackStation o Hashes. Estos sitios tienen bases de datos que van desde miles de millones hasta billones de contraseñas, a menudo de filtraciones, por lo que son muy útiles.

Criptografía Simétrica y Asimétrica


La Criptografía Asimétrica, basada en claves públicas y privadas, está presente en los principales protocolos de comunicación segura de Internet, como Transport Layer Security (TLS), encargado de cifrar todas las solicitudes HTTPS, cifrar y descifrar, se puede encontrar en protocolos como WPA/WPA2 utilizado en redes Wi-Fi, cifrado de archivos en sistemas operativos, en VPN y otras situaciones.

Los más comunes son el Advanced Encryption Standard (AES) y el Triple Data Encryption Standard (3DES).

Protocolos de Red


Comprender cómo funcionan las redes informáticas y sus protocolos es esencial para una persona analista de seguridad. Antes de comenzar con la lista de protocolos, es necesario entender que todos ellos encajan en ciertos modelos que dictan las reglas de funcionamiento:

TCP/IP, acrónimo de los protocolos TCP (Transmission Control Protocol) e IP (Protocolo de Internet), responsable de enviar y recibir datos a través de Internet. Esta pila de protocolos se divide en 5 capas (en referencia a RFC1392):

  • 5° Capa - Aplicación: Servicio específico de comunicación de datos en un nivel de proceso-a-proceso. Ejemplo: HTTP, HTTPS, FTP, DNS.
  • 4° Capa - Transporte: Manejo del transporte de paquetes para garantizar el éxito en el envío y recepción de datos. Ejemplo: TCP y UDP.
  • 3° Capa - Red (Internet): Direccionamiento IP de origen y destino. Ejemplo: IP, ICMP, NAT.
  • 2° Capa - Enlace (Vinculación): Verificación y corrección de los datos recibidos del medio físico. Ejemplo: Ethernet, Wi-Fi.
  • 1° Capa - Física: Especificación de los dispositivos como hubs y medios de transmisión, como los cables de red.

El modelo OSI es bastante similar, con la diferencia de que la Capa de Aplicación se divide en 3 partes: Aplicación, Presentación y Sesión.

Con WireShark es posible interceptar el tráfico de red y ver en la práctica cómo viajan todas estas capas:

Ahora daremos una mirada a los principaless protocolos:

IP


El Protocolo de Internet (IP) es parte de la capa de Internet y es uno de los protocolos más importantes en la web. Los destinatarios de los mensajes se determinan mediante los campos de dirección IP.

TCP/UDP


El protocolo TCP (Transmission Control Protocol) es el más utilizado en la capa de transporte para aplicaciones web. En resumen, para establecer una conexión, se utiliza un three-way handshake o apretón de manos de tres vías.

Debido a la demora involucrada en el handshake o protocolo de enlace TCP, UDP (User Datagram Protocol) resulta ser más rápido, pero menos seguro. Este protocolo es el más utilizado en software de Streaming y VoIP (Voice over Internet Protocol) como Discord, Skype, Twitch y Netflix.

TLS/SSL

Transport Layer Security (TLS) y su predecesor Secure Sockets Layer (SSL), son protocolos de seguridad diseñados para proporcionar comunicaciones seguras a través de una red. Ambos están entre la capa de aplicación y sirven para cifrar las capas superiores.

HTTP/HTTPS

Hypertext Transfer Protocol [Secure] (HTTP[S]) son protocolos básicos de comunicación web y la diferencia entre ellos es que HTTPS usa TLS/SSL para cifrar la comunicación. Es esencial tener pleno conocimiento de sus ocho métodos: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS y CONNECT.

También es necesario conocer los encabezados principales de solicitud y respuesta, así como el código de estado (códigos de retorno):

  • 1xx: Informational (Información).
  • 2xx: Success (Éxito).
  • 3xx: Redirect (Redireccionamento).
  • 4xx: Client Error (Error de cliente).
  • 5xx: Server Error (Error de servidor).

SSH


Secure Shell (SSH) es un protocolo de red encriptado para operar servicios de red de forma segura, su uso principal es obtener un shell en un servidor para ejecutar comandos de forma remota.


FTP


File Transfer Protocol (FTP) no es más que un protocolo de transferencia de archivos, donde se puede acceder a un Servidor FTP tanto desde el terminal como desde los navegadores.

Estas son solo algunas de las miles de siglas presentes en el día a día de un Pentester. Cuantos más conocimientos en redes informáticas, mejor, y, para eso, he separado una pequeña lista de reproducción de este contenido como material de estudio: https://www.youtube.com/playlist?list=PLucm8g_ezqNpGh95n-OdEk06ity7YYfvU


Continuación

En el próximo artículo, cubriremos más conocimientos necesarios para comenzar una carrera como Pentester, las principales certificaciones en el área y algunas de las mejores plataformas de estudio de seguridad ofensiva.

¡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.