👿
Hacking en SCADA - [CPICS]
Comprar cursoYouTubeTwitterLinkedIn
  • La Biblia del Hacking en ICS/SCADA
    • Advertencia
    • Conoce a tu academia
    • Conoce a tu instructor #1
    • Conoce a tu instructor #2
  • Fundamentos de SCADA
    • Introducción a SCADA
      • Unidades Terminales Remotas (RTU)
      • Interfaz Hombre-Máquina (HMI)
      • Comunicaciones de Red
      • Controladores Lógicos Programables (PLC)
    • IT vs OT
    • La importancia de conocer pentesting en IT para una auditoria en SCADA
    • Aplicaciones Típicas de SCADA en Diferentes Industrias
      • Industria de la Energía
      • Gestión de Agua y Aguas Residuales
      • Industria Manufacturera
      • Transporte
      • Petróleo y Gas
    • Arquitectura de Sistemas SCADA
      • Características de Diseño
      • Tecnologías Emergentes
    • Redes y Comunicaciones en SCADA
    • Diferencias entre SCADA, DCS y otros sistemas de control industrial
    • Protocolos comunes
      • Modbus
      • DNP3 (Distributed Network Protocol)
      • OPC (OLE for Process Control)
      • IEC 60870-5-104
    • Hardware Específico en SCADA
    • Software de Gestión y Monitorización en SCADA
    • Ciberseguridad en el Modelo de Purdue
  • Aspectos Legales y Éticos del Pentesting en SCADA
    • Normativas y estándares de cumplimiento en SCADA
    • ICS Cyber Kill Chain
    • MITRE en ICS
  • Vulnerabilidades en Sistemas SCADA
    • Tipos comunes de vulnerabilidades
      • Vulnerabilidades de Software y Firmware
      • Problemas de Configuración y Seguridad de Red
      • Falta de Autenticación y Control de Acceso
      • Vulnerabilidades de Comunicaciones
      • Ataques Físicos y de Ingeniería Social
      • Falta de Conciencia y Formación en Seguridad
    • Análisis de casos históricos de brechas de seguridad
      • Stuxnet (2010)
    • ERP como Vectores de ataque inicial
    • Herramientas automatizadas
  • Herramientas y técnicas
    • OSINT en SCADA
      • Utilizando Shodan para SCADA
    • Logins vulnerables a fuerza bruta
      • Hydra una gran herramienta
    • Profundizando en Modbus
      • Historia y evolucion de Modbus
      • Man-In-The-Middle
      • Modbus TLS posibles vulnerabilidades
    • Instalacion de ControlThings
    • Uso de Nmap en SCADA
    • Puertos comunes en ICS/SCADA Devices
    • Utilizando Nmap
      • DNS en SCADA
      • Enumeracion con s7-enumerate.nse
    • Enumeracion con plcscan
    • ARP-SCAN en SCADA
    • ARP Spoofing
      • Wireshark en SCADA
    • Introducción al Uso de Metasploit en SCADA
      • Auxiliary Module modbusdetect
      • Auxiliary Module modbus_findunitid
    • Uso de protocolos inseguros en SCADA
      • Uso de protocolos inseguros
    • Credenciales por defecto
      • ScadaBR - Default Credentials
    • Credenciales debiles o suceptibles a fuerza bruta
    • Python en SCADA
    • Inyeccion Maliciosa de comandos Modbus
      • Utilizando MBTGET
      • Utilizando Metasploit
        • Auxiliary Module modbus_client
      • Utilizando Python
    • Simulacion de StuxNet
      • OpenPLC Server: Subida de Archivo Malicioso .st para Controlar Parámetros de Planta
  • Buffer Overflow
    • Buffer Overflow en SCADA
    • Teoria del Buffer Overflow
      • Buffer Overflow en Windows
      • Buffer Overflow en Linux
    • Tipos de Protecciones contra Buffer Overflow
    • Explotacion del Buffer Overflow
      • Spiking
      • Fuzzing
      • Finding the Offset
      • Overwriting The EIP
      • Finding the Bad Charaters
      • Finding The Right Module
      • Generating Shellcode and Gaining Shell
  • Muchas Gracias
    • 🛡️ ¡Muchísimas Gracias por Participar! 🛡️
    • Importante
Con tecnología de GitBook
En esta página
  • 1. Spiking
  • 2. Fuzzing
  • 3. Finding the Offset
  • 4. Overwriting the EIP
  • 5. Finding the Bad Characters
  • 7. Generating Shellcode
  • 8. Gaining Shell

¿Te fue útil?

  1. Buffer Overflow

Explotacion del Buffer Overflow

AnteriorTipos de Protecciones contra Buffer OverflowSiguienteSpiking

Última actualización hace 11 meses

¿Te fue útil?

1. Spiking

Spiking es una técnica de prueba automatizada utilizada para identificar vulnerabilidades de buffer overflow en aplicaciones. Se basa en el envío de datos malformados o inesperados a la aplicación objetivo para observar cómo responde.

  • Herramientas: La herramienta "SPIKE" es comúnmente utilizada para esta técnica.

  • Proceso:

    • Se envían cadenas de caracteres de longitud variable y contenido inesperado a diferentes puntos de entrada de la aplicación.

    • Se monitorean las respuestas de la aplicación en busca de comportamientos anómalos, como fallos de segmentación o cierres inesperados, que indiquen una posible vulnerabilidad de buffer overflow.

2. Fuzzing

Fuzzing es una técnica similar a spiking, pero más exhaustiva y automatizada, que envía una gran cantidad de entradas aleatorias a la aplicación para encontrar fallos.

  • Herramientas: Fuzzers como Peach, Sulley, y el built-in fuzzer de Burp Suite pueden ser utilizados.

  • Proceso:

    • Se define un conjunto de datos de prueba que incluye entradas válidas e inválidas.

    • El fuzzer envía estas entradas al programa, monitoreando la aplicación en busca de fallos.

    • Los fallos observados se analizan para identificar puntos donde el programa no maneja correctamente los datos de entrada, lo que puede indicar un buffer overflow.

3. Finding the Offset

Finding the Offset implica determinar la posición exacta en la que el buffer overflow sobrescribe el registro de instrucción (EIP).

  • Herramientas: Metasploit Framework, pattern_create y pattern_offset.

  • Proceso:

    • Generar un patrón único y largo usando herramientas como pattern_create.rb.

    • Enviar este patrón a la aplicación hasta que ocurra el fallo.

    • Verificar el valor del EIP después del fallo. Usar pattern_offset.rb para encontrar la posición exacta del patrón que sobrescribió el EIP.

    • El valor devuelto es el offset, que indica cuántos bytes desde el inicio del buffer hasta el EIP.

4. Overwriting the EIP

Overwriting the EIP es el proceso de sobrescribir el registro de instrucción (EIP) con una dirección de memoria controlada.

  • Proceso:

    • Usar el offset encontrado para enviar una cadena de caracteres que sobrescriba el EIP.

    • La nueva cadena debe contener el payload seguido de la dirección de retorno controlada que redirige la ejecución a nuestro shellcode.

5. Finding the Bad Characters

Finding the Bad Characters implica identificar los caracteres que causan problemas cuando se incluyen en el shellcode.

  • Proceso:

    • Enviar una cadena de prueba que incluya todos los posibles caracteres (0x00-0xFF).

    • Analizar la respuesta de la aplicación y la memoria para ver si algún carácter causa truncamiento o comportamientos anómalos.

    • Excluir los caracteres problemáticos del shellcode.

6. Finding the Right Module

Finding the Right Module es encontrar un módulo (DLL o ejecutable) que no esté protegido por técnicas de seguridad como ASLR (Address Space Layout Randomization) o DEP (Data Execution Prevention).

  • Herramientas: mona.py y !mona modules en Immunity Debugger.

  • Proceso:

    • Ejecutar el comando !mona modules para listar todos los módulos cargados.

    • Identificar los módulos sin ASLR y sin DEP que pueden ser utilizados para redirigir el flujo de ejecución al shellcode.

7. Generating Shellcode

Generating Shellcode implica crear un payload que, una vez ejecutado, proporcione acceso al sistema o ejecute un comando específico.

  • Herramientas: msfvenom en Metasploit Framework.

  • Proceso:

    • Definir el tipo de payload, por ejemplo, un reverse shell o un bind shell.

    • Generar el shellcode excluyendo los bad characters identificados previamente.

    • Incluir opciones como la codificación para evadir detección por antivirus.

8. Gaining Shell

Gaining Shell es el proceso final donde se explota la vulnerabilidad para obtener acceso al sistema.

  • Proceso:

    • Inyectar el shellcode en la memoria a través del buffer overflow.

    • Sobrescribir el EIP para redirigir la ejecución al shellcode.

    • Establecer la conexión (reverse shell) o escuchar en el puerto especificado (bind shell).

    • Una vez que el shellcode se ejecuta correctamente, se obtiene acceso al sistema comprometido.

Spiking
Fuzzing
Finding the Offset
Overwriting The EIP
Finding the Bad Charaters
Generating Shellcode and Gaining Shell