desarollando inventos para la industria - cybercamp.es · dispositivos industriales scada...

48
#CyberCamp18 Desarollando i NV en T os para la industria Aarón Flecha Menéndez

Upload: others

Post on 13-Oct-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

  • #CyberCamp18

    D e s a r o l l a n d o i N V e n T o s p a r a l a i n d u s t r i a

    Aarón Flecha Menéndez

  • #CyberCamp18

    2

    Índice

    1. Introducción a los NVT

    2. Dispositivos Industriales

    3. ¿Cómo crear un NVT?

    4. NVT industriales

    5. DEMOS

  • #CyberCamp18

    Aarón Flecha Menéndez

    Ingeniería Técnica Informática de Sistemas

    Experto Universitario en Ciberseguridad Industrial

    GICSP (Global Industrial Cyber Security Professional)

    Máster Interuniversitario Seguridad de las Tecnologías de la

    Información y de las Comunicaciones

    Consultor de Ciberseguridad industrial en S21sec | Nextel

    1. Presentación

    https://es.linkedin.com/in/aar%C3%B3n-flecha-men%C3%A9ndez-76773232https://es.linkedin.com/in/aar%C3%B3n-flecha-men%C3%A9ndez-76773232

  • #CyberCamp18

    Introducción a los NVT

  • #CyberCamp18

    5

    ¿Qué es un NVT?

    Los NVT (Network Vulnerability Tests) son scripts escritos en lenguaje

    NASL (Nessus Attack Scripting Language) que permiten verificar la

    existencia de vulnerabilidades dentro de una red.

    El uso del lenguaje de scripting NASL tiene sus razones:

    Fue diseñado con el propósito específico para los NVT.

    Ahorro en tiempo con respecto otros lenguajes de scripting.

    Control del código desarrollado (evita código malicioso).

    Introducción a los NVT

  • #CyberCamp18

    6

    ¿Por qué usar NVT?

    Introducción a los NVT

    • FAT (Factory Aceptance Test)

    • SAT (Site Aceptance Test)

    Ejecución de pruebas antes y después de realizar la instalación de los dispositivos:

    Reducción de los tiempos en el análisis de vulnerabilidades que poseen los dispositivos

    • Automatizar la ejecución de pruebas para encontrar o descartar vulnerabilidades

    • Creación de procedimientos para dispositivos concretos, fabricantes, etc.

    • Pruebas de estrés y fuzzing

  • #CyberCamp18

    7

    ¿Quién los utiliza?

    Introducción a los NVT

    Número de NVT ≈ 65153

    https://secinfo.greenbone.net/omp?cmd=get_info&info_type=nvt&token=guest

    https://secinfo.greenbone.net/omp?cmd=get_info&info_type=nvt&token=guest

  • #CyberCamp18

    8

    ¿Quién los utiliza?

    Introducción a los NVT

    Número de NVT ≈ 101434

    https://www.tenable.com/plugins/search

    https://www.tenable.com/plugins/search

  • #CyberCamp18

    9

    Introducción a los NVT

    Scan Targets

    OpenVAS

    Scanner

    NVT

    OpenVAS

    Manager

    CLIENTS

    Greenbone Security AssistantOpenVas CLI Greenbone Security Desktop

    SERVICES

    DATA

    OpenVAS

    Administrator

    Results, Configs

  • #CyberCamp18

    10

    Preparar entorno de desarrollo para NVT

    https://github.com/tenable/notepadpp-nasl

    https://github.com/tenable/sublimetext-nasl

    https://github.com/tenable/vim-nasl

    https://github.com/tenable

    Más opciones:

    https://www.nano-editor.org/

    Introducción a los NVT

    https://github.com/tenable/notepadpp-naslhttps://github.com/tenable/sublimetext-naslhttps://github.com/tenable/vim-naslhttps://github.com/tenablehttps://www.nano-editor.org/

  • #CyberCamp18

    Dispositivos Industriales

  • #CyberCamp18

    12

    Dispositivos industriales

    PLC

    Programmable Logic Controller

    Permite automatizar procesos

    gracias a su programación.

    Poseen salidas y entradas

    digitales o analógicas.

    RTU

    Remote Terminal Unit

    Permiten obtener señales

    de los procesos y enviar

    la información a un sitio

    remoto donde se procese.

    HMI

    Human Machine Interface

    Muestran información del estado

    de los procesos para que los

    operadores coordinen y controlen

    las acciones a realizar.

    En ocasiones permiten realizar

    acciones para ajustar el proceso o

    modificar variables del mismo.

  • #CyberCamp18

    13

    Dispositivos industriales

    SCADA

    Supervisory Control And Data

    Acquisition

    Realiza acciones de

    supervisión, control y

    gestión de información en

    tiempo real.

    Permiten una

    centralización de señales

    generadas por uno o

    varios procesos

    industriales (control de

    alertas).

    Se comunica con multitud

    de dispositivos ubicados

    en la red de control (PLC,

    RTU, HMI, etc.)

  • #CyberCamp18

    14

    Dispositivos industriales

  • #CyberCamp18

    15

    Dispositivos industriales

    RED CORPORATIVA

    RED SUPERVISIÓN

    OperadorServidor SCADA

    Servidor de

    aplicaciones

    Estación

    de

    Ingeniería

    RED CONTROL

    PLC

    RTU

    RED CAMPO

    SensorActuador

  • #CyberCamp18

    ¿Cómo crear un NVT?

  • #CyberCamp18

    17

    ¿Cómo crear un NVT?

    Knowledge Base

    (KB)

    NVT 1 NVT 2

    Los NVT no pueden

    utilizar la información

    que introducen en la

    KB en el propio NVT

    get_kb_item ()

    set_kb_item ()

    get_kb_list ()

    replace_kb_item ()

  • #CyberCamp18

    18

    ¿Cómo crear un NVT?

    Documentación

    http://michel.arboi.free.fr/nasl2ref/nasl2_reference.pdf

    Consejos que me parecen muy útiles:

    Mirar bien si ya existe un NVT en el que podamos basar nuestro NVT de desarrollo

    propio.

    Incluir todas las dependencias y requerimientos de nuestro código.

    Tener claro el QoD a asignar a nuestro NVT.

    Utilizar un template actualizado para desarrollar alguna partes comunes a todos los

    NVT.

    Utilizar herramientas como wireshark o proxies de navegación web (BurpSuite, ZAP,

    etc.) para entender mejor las comunicaciones y reproducirlas de forma correcta.

    http://www.openvas.org/compendium/openvas-compendium.html

    Más información: https://community.greenbone.net/t/vt-development/226

    http://michel.arboi.free.fr/nasl2ref/nasl2_reference.pdfhttp://www.openvas.org/compendium/openvas-compendium.htmlhttps://community.greenbone.net/t/vt-development/226

  • #CyberCamp18

    19

    ¿Cómo crear un NVT?

    Información a tener en cuenta:

    Herramientas a tener en cuenta para desarrollar:

    Asignación del OID (identificador del NVT):

  • #CyberCamp18

    20

    ¿Cómo crear un NVT?

    Más información a tener en cuenta:

    Conocer las librerías que podemos utilizar:

    Más herramientas que nos facilitarán la vida:

    http://www.openvas.org/src-doc/openvas-libraries/index.html

    https://regex101.com/

    Herramientas para protocolos de comunicación

    (snmpwalk o snmpget para SNMP)

    http://www.openvas.org/src-doc/openvas-libraries/index.htmlhttps://regex101.com/

  • #CyberCamp18

    21

    ¿Cómo crear un NVT?

  • #CyberCamp18

    22

    ¿Cómo crear un NVT?

    Estos serán tus fieles amigos:

    https://kaitai.io/ https://www.lua.org/pil/

    Y muchos más …

    https://kaitai.io/https://www.lua.org/pil/

  • #CyberCamp18

    23

    ¿Cómo crear un NVT?

    Intérprete:

  • #CyberCamp18

    24

    ¿Cómo crear un NVT?

    Calidad de detección en los NVT (QoD)

    Más común en entornos industriales:

  • #CyberCamp18

    25

    ¿Cómo crear un NVT?

    Scripting con nmap, algunos ejemplos:

    nmap --script bacnet-info -sU -p 47808

    nmap --script modbus-discover.nse --script-args='modbus-discover.aggressive=true' -p 502

    nmap --script s7-info.nse -p 102

    nmap --script enip-info -sU -p 44818

  • #CyberCamp18

    26

    ¿Cómo crear un NVT?

    Firmar un NVT

    Los NVTs en OpenVAS se firman con la herramienta GnuPG

    1. Crear un par de claves y comprobar que se han creado bien:

    2. Firmar un archivo con GPG mediante una firma separada en ASCII y comprobar su integridad:

    Comprobar que el NVT no ha sido alterado

    aaron@cybercamp:~# gpg --gen-keyaaron@cybercamp:~# gpg –k

    aaron@cybercamp:~# gpg -u --armor --detach-sign aaron@cybercamp:~# gpg –k

    aaron@cybercamp:~# gpg --homedir=/etc/openvas/gnupg --verify /var/lib/openvas/plugins/XXXXX.nasl.asc/var/lib/openvas/plugins/XXXXX.nasl

    aaron@cybercamp:~#

  • #CyberCamp18

    27

    ¿Cómo crear un NVT?

    Puntos a tener en cuenta para el desarrollo de NVT industriales

    Posibilidad de enviar tramas malformadas para pruebas de estrés.

    Servicios inestables que no responden a ciertas peticiones.

    Uso del mismo NVT para el escaneo de una red entera.

    Cuando usemos OpenVAS o Nessus, no utilizar todas las familias de plugins con

    todos los plugins seleccionados bajo ningún concepto en entornos industriales.

    Tiempo de vida de un socket y de la propia comunicación.

    La disponibilidad es lo primero en la industria. Si desarrollamos un NVT que afecte a la

    disponibilidad de un dispositivo es importante tener cuidado en el caso de utilizarlo

    como herramienta de auditoria. Mejor usar laboratorios!!!

  • #CyberCamp18

    28

    ¿Cómo crear un NVT?

    Logs que nos pueden ayudar:

    Logs de gsad

    Logs de openvasmd

    Logs de openvassd.messages

    Logs de openvassd.dump

    http://www.openvas.org/compendium/usr-local-var-log-openvas.html

    Errores de escaneos y mensajes (display)

    Información sobre

    escaneos (objetivos, hora

    de lanzamiento)

    http://www.openvas.org/compendium/usr-local-var-log-openvas.html

  • #CyberCamp18

    NVT Industriales

  • #CyberCamp18

    30

    NVT industriales

    Fabricantes:

    https://vulners.com/openvas/OPENVAS:1361412562310108345 Siemens:

    Siemens SIMATIC CP Device

    Detection (FTP)

    https://vulners.com/openvas/OPENVAS:1361412562310108345

  • #CyberCamp18

    31

    NVT industriales

    Fabricantes:

    https://vulners.com/openvas/OPENVAS:1361412562310106746 Schneider Electric:

    Schneider Electric homeLYnk

    Command Injection Vulnerability

    https://vulners.com/openvas/OPENVAS:1361412562310106746

  • #CyberCamp18

    32

    NVT industriales

    Comunicaciones:

    https://vulners.com/openvas/OPENVAS:1361412562310106850

    EtherNet/IP:

    EtherNet/IP Detection

    https://vulners.com/openvas/OPENVAS:1361412562310106850

  • #CyberCamp18

    33

    NVT industriales

    Comunicaciones:

    https://vulners.com/openvas/OPENVAS:1361412562310106850 EtherNet/IP:

    EtherNet/IP Detection

    https://vulners.com/openvas/OPENVAS:1361412562310106850

  • #CyberCamp18

    DEMO

  • #CyberCamp18DEMO 1

  • #CyberCamp18DEMO 1

    Function code 43 / 14 (0x2B / 0x0E)

    Read Device Identification

  • #CyberCamp18DEMO 1

  • #CyberCamp18DEMO 1

  • #CyberCamp18

    Más información: https://www.incibe-cert.es/blog/snmp-tan-simple-el-nombre-indica

    https://www.incibe-cert.es/blog/snmp-tan-simple-el-nombre-indica

  • #CyberCamp18DEMO 1

  • #CyberCamp18DEMO 1

  • #CyberCamp18DEMO 1

    "88111222" && "Technodrome“ && product:"Conpot"

    https://www.shodan.io/search?query="88111222"+%26%26+"Technodrome"%26%26+product:"Conpot"

  • #CyberCamp18DEMO 2

  • #CyberCamp18DEMO 2

  • #CyberCamp18DEMO 3 – Caso práctico

  • #CyberCamp18DEMO 3 – Caso práctico

    https://help.codesys.com/api-content/2/codesys/3.5.13.0/en/_cds_f_data_acquiring_with_trace/

    https://www.codesys.com/fileadmin/data/customers/security/2018/Advisory2018-07_CDS-

    58896.pdf

    https://help.codesys.com/api-content/2/codesys/3.5.13.0/en/_cds_f_data_acquiring_with_trace/https://www.codesys.com/fileadmin/data/customers/security/2018/Advisory2018-07_CDS-58896.pdf

  • #CyberCamp18DEMO 3 – Caso práctico

  • #CyberCamp18

    GRACIAS

    ÍndicePresentaciónIntroducción a los NVTDispositivos IndustrialesDEMO