Como medio de comunicación siempre hemos buscado ser un espacio de encuentro que ayude al desarrollo de las tecnologías de la información en el país. Es con este objetivo que, a partir de esta publicación, comenzaremos a difundir, procedimientos, white papers y una serie de documentos técnicos que faciliten el acceso a la información.

El estreno de esta sección llamada “Investigación & Documentación”, la realizaremos con un documento realizado por el CSIRT de Gobierno.

Puedes acceder al documento completo en: https://www.csirt.gob.cl/estadisticas/el-comando-de-la-semana-no-27/

Una de las tareas regulares que un encargado de ciberseguridad es apoyar la obtención de evidencias e indicadores de compromiso sobre incidentes o artefactos que puedan encontrarse en los sitios de un cibersuceso. Uno de los elementos más habitauales por el volumen que representa dentro del total de eventos son los phishing o correos electrónicos adulterados o que intentan suplantar a un usuario.​

Conocer esta metodología de recopilación y análisis de información ayuda a los analista de ciberseguridad tanto a enriquecer los antecedentes de un incidente, llegando eventualmente a encontrar información de los perpetradores o sus redes sociales, como a poder someter a prueba la información existente en Internet de las personas o la institución a la que representan, con el objetivo de advertir los riesgos que esto implica.

En este sentido es importante tener en perspectiva el concepto de Cyber Kill Chain.

La Cyber Kill Chain, es una secuencia de los pasos que en general siguen los ciberdelincuentes cuando atacan nuestros sitios o sistemas expuestos en Internet:

  1. Reconocimiento: el intruso selecciona el objetivo, lo investiga e intenta identificar las vulnerabilidades en la red objetivo.
  2. Armamento: el intruso crea un arma de malware de acceso remoto, como un virus o un gusano, adaptada a una o más vulnerabilidades.
  3. Entrega: el intruso transmite el arma al objetivo (por ejemplo, a través de archivos adjuntos de correo electrónico, sitios web o unidades USB[1]).
  4. Explotación: se activa el código del programa del arma de malware, que toma medidas en la red objetivo para aprovechar la vulnerabilidad.
  5. Instalación: el arma de malware instala un punto de acceso (por ejemplo, «puerta trasera») que puede utilizar un intruso.
  6. Comando y control: el malware permite al intruso tener acceso persistente «con las manos en el teclado» a la red de destino.
  7. Acciones sobre el objetivo: el intruso toma medidas para lograr sus objetivos, como la exfiltración de datos, la destrucción de datos o el cifrado para obtener un rescate.
Ilustración 1 Cyber Kill Chain by Lockheed Martin

En ese contexto se inserta la herramienta que les presentamos en esta edición del “Comando de la Semana”.

¿Qué es Nuclei?

Nuclei es una herramienta que permite ejecutar pruebas de pentesting sobre aplicaciones web y otros servicios. Pero lo que la convierte en una utilidad realmente interesante es su capacidad de reducir al máximo los falsos positivos. Para conseguir ésto, funciona con un modelo basado en plantillas en las que es necesario declarar cómo se deben realizar las peticiones y qué debería haber en la respuesta devuelta por el servidor para determinar que existe una vulnerabilidad, mala configuración o fuga de información.

El binario de Nuclei por si solo «no hace nada», es decir, la potencia de la herramienta se encuentra en las plantillas que se le pasan por parámetro a dicho binario. Se trata de una utilidad que dadas sus capacidades y facilidad de uso, se puede integrar perfectamente en un pipeline orientado al DevSecOps.

Para crear las plantillas no hace falta aprender un lenguaje de programación ni nada parecido, basta con conocer la sintaxis de una estructura YAML y las posibles secciones/palabras reservadas que componen una plantilla válida.

Ejemplo de una regla YARA:

rule silent_banker : banker { meta: description = «This is just an example» thread_level = 3 in_the_wild = true   strings: $a = {6A 40 68 00 30 00 00 6A 14 8D 91} $b =  /[0-9a-f]{32}/ $c = «UVODFRYSIHLNWPEJXQZAKCBGMT»   condition: $a or $b or $c }
NOTA IMPORTANTE 1: Dado que es relevante un buen manejo de los comandos básicos de Linux, tanto para posteriores manejos de los datos o archivos como para usos de la información resultante de la ejecución de los comandos, es que el comité editorial decidió que se incluya en esta edición y en las subsiguientes un anexo de comandos Linux que son de utilidad para moverse en este sistema operativo. Se sugiere dominarlos todos para facilitar el acceso y manipulación de la información. En futuras ediciones se irán incorporando nociones más avanzadas sobre el uso de estos comandos para procesamiento de archivos, procesos, y de sus usos en scripting.   Vea anexo I: Comandos básicos de Linux   NOTA IMPORTANTE 2: Dado que un altísimo porcentaje de los equipos de usuarios y servidores operando en un entorno Windows, el comité editorial ha decidido ir incorporando “tips” para este entorno computacional.    Vea anexo II: Comandos o aplicativos básicos para Windows: TCPView   Bonus Track: Ejemplos muy básicos y simples del clásico “Hello, World!” escrito en diferentes lenguajes. El objetivo es despertar su curiosidad por estos lenguajes y ojalá se entusiasme y emprenda la cruzada de aprenderlo en profundidad, para luego aplicarlo en su quehacer cotidiano y dentro de lo posible comparta sus conocimientos con la comunidad.  


  1. PASO A PASO

PASO 1: UN ENTORNO ADECUADO PARA TRABAJAR.

Primero debe contar con una distribución de Kali[2] Linux funcionando ya sea en una máquina física o en una máquina virtual[3][4].

Instalación de Kali Linux

La instalación de Kali Linux (arranque único) en su computadora es un proceso sencillo. Esta guía cubrirá la instalación básica (que se puede realizar en una máquina virtual invitada o sobre un equipo entero), con la opción de cifrar la partición. En ocasiones, es posible que tenga datos confidenciales que preferiría cifrar con Full Disk Encryption (FDE). Durante el proceso de instalación, puede iniciar una instalación cifrada LVM en el disco duro o en las unidades USB.

Primero, necesitará hardware de computadora compatible. Kali Linux es compatible con plataformas amd64 (x86_64 / 64-Bit) e i386 (x86 / 32-Bit). Siempre que sea posible, el fabricante recomienda utilizar las imágenes amd64. Los requisitos de hardware son mínimos como se enumeran en la sección siguiente, aunque un mejor hardware naturalmente proporcionará un mejor rendimiento. Debería poder usar Kali Linux en hardware más nuevo con UEFI y sistemas más antiguos con BIOS.

Las imágenes i386, de forma predeterminada, utilizan un kernel PAE, por lo que puede ejecutarlas en sistemas con más de 4 GB de RAM.

En el ejemplo que se menciona más adelante, se instalará Kali Linux en una nueva máquina virtual invitada, sin ningún sistema operativo existente preinstalado.

Requisitos del sistema

Los requisitos de instalación para Kali Linux variarán según lo que le gustaría instalar y su configuración. Para conocer los requisitos del sistema:

En el extremo inferior, puede configurar Kali Linux como un servidor Secure Shell (SSH) básico sin escritorio, utilizando tan solo 128 MB de RAM (se recomiendan 512 MB) y 2 GB de espacio en disco.

En el extremo superior, si opta por instalar el escritorio Xfce4 predeterminado y el kali-linux-default metapaquete, realmente debería apuntar a al menos 2 GB de RAM y 20 GB de espacio en disco.

Cuando se utilizan aplicaciones que consumen muchos recursos, como Burp Suite, recomiendan al menos 8 GB de RAM (¡e incluso más si se trata de una aplicación web grande!) O utilizar programas simultáneos al mismo tiempo.

Requisitos previos de instalación[5]

Esta la guía se harán las siguientes suposiciones al instalar Kali Linux:

  • Usando la imagen del instalador de amd64.
  • Unidad de CD / DVD / soporte de arranque USB.
  • Disco único para instalar.
  • Conectado a una red (con DHCP y DNS habilitados) que tiene acceso a Internet saliente.

Preparación para la instalación

  • Descarge Kali Linux[6] (el fabricante recomienda[7] la imagen marcada como Instalador).
  • Grabe[8] la ISO de Kali Linux en un DVD o una imagen de Kali Linux Live en una unidad USB. (Si no puede, consulte la instalación en red[9] de Kali Linux).
  • Realice una copia de seguridad de la información importante del dispositivo en un medio externo.
  1. Asegúrese de que su computadora esté configurada para arrancar desde CD / DVD / USB en su BIOS / UEFI.

Un vez que tiene preparado todos los materiales y el entorno para comenzar la instalación siga los pasos indicados en la sección “Kali Linux Installation Procedure” del siguiente enlace:

  https://www.kali.org/docs/installation/hard-disk-install/  

Otras distribuciones que puede considerar son las siguientes:

Nombre Link Descripción
ARCHSTRIKE https://archstrike.org/ Distribución linux con foco en ciberseguridad.
BACKBOX
Homepage
Distribución de Linux orientada a pruebas de penetración y evaluación de seguridad que proporciona un conjunto de herramientas de análisis de redes y sistemas.
BLACKARCH http://blackarch.org/ Herramientas para pruebas de penetración basada en Arch Linux.
BLACKBUNTU
BlackBuntu
Es una distribución GNU / Linux basada en Ubuntu y diseñada con Pentest, Seguridad y Desarrollo en mente para la mejor experiencia.
BUGTRAQ
Bugtraq
Distribución GNU / Linux destinada a análisis forense digital, pruebas de penetración, laboratorios de malware y análisis forense.
CAINE http://www.caine-live.net/ CAINE (Computer Aided INvestigative Environment) es una distribución GNU / Linux italiana creada como un proyecto de Digital Forensics.
CYBORG HAWK LINUX
Cyborg Hawk
Distribución de Linux basada en la plataforma Ubuntu con el último kernel para profesionales de la seguridad cibernética.
DEFT LINUX http://www.deftlinux.net/ DEFT es un sistema operativo Linux creado especialmente para profesionales y expertos de seguridad que necesiten un ecosistema para analizar datos, redes y dispositivos y poder recopilar de ellos la mayor cantidad de información posible.
DRACOS LINUX https://dracos-linux.org/ Dracos Linux es un sistema operativo de código abierto que proporciona pruebas de penetración.
FEDORA SECURITY LAB https://labs.fedoraproject.org/en/security/ Entorno de prueba seguro para trabajar en auditoría de seguridad, análisis forense, rescate de sistemas y enseñanza de metodologías de prueba de seguridad en universidades y otras organizaciones.
GNACK TRACK LINUX
GnackTrack
Distribución de Linux basada en Ubuntu que proporciona un conjunto de pruebas de penetración.
JONDO https://anonymous-proxy-servers.net/en/jondo-live-cd.html Entorno seguro y preconfigurado para navegación anónima.
KALI https://www.kali.org/ Distribución de Linux de código abierto basada en Debian orientada a diversas tareas de seguridad de la información, como pruebas de penetración, investigación de seguridad, informática forense e ingeniería inversa.
LIVE HACKING DVD http://www.livehacking.com/live-hacking-cd/download-live-hacking/ Distribución de Linux basada en Ubuntu que proporciona un conjunto de pruebas de penetración.
MATRIUX http://matriux.sourceforge.net/ Distribución de seguridad con todas las funciones que consta de un montón de herramientas poderosas, de código abierto y gratuitas que se pueden utilizar para varios propósitos, incluidos, entre otros, pruebas de penetración, piratería ética, administración de sistemas y redes, investigaciones forenses cibernéticas, pruebas de seguridad, análisis de vulnerabilidades y mucho más.
MOKI https://github.com/moki-ics/moki Modificación de Kali para incorporar varias herramientas ICS / SCADA esparcidas por Internet, para crear un Kali Linux personalizado dirigido a profesionales de pentesting ICS / SCADA.
NETWORK SECURITY TOOLKIT (NST) https://sourceforge.net/projects/nst/files/ Un kit de herramientas de monitoreo y análisis de seguridad de red para distribución de Linux.
NODEZERO https://sourceforge.net/projects/nodezero/ Linux basado en Ubuntu diseñado como un sistema completo que también se puede utilizar para pruebas de penetración.
PENTOO https://pentoo.org/ Live CD y Live USB diseñado para pruebas de penetración y evaluación de seguridad. Basado en Gentoo Linux, Pentoo se proporciona como livecd instalable de 32 y 64 bits.
PARROT SECURITY OS https://www.parrotsec.org/ Distribución GNU / Linux basada en Debian y diseñada pensando en la seguridad y la privacidad.
SAMURAI WEB TESTING FRAMEWORK https://www.samuraiwtf.org/ Linux completo para su uso en la formación de seguridad de aplicaciones. Es gratuito y de código abierto, distribuido como VM preconstruidas y como código fuente. La fuente consta de un Vagrantfile, activos estáticos y scripts de compilación. Durante el proceso de construcción, recupera una variedad de herramientas y objetivos de entrenamiento.
SECURITY ONION 2 https://securityonionsolutions.com/ Distribución de Linux de código abierto y gratuito para la búsqueda de amenazas, la supervisión de la seguridad empresarial y la gestión de registros. ¡El asistente de configuración fácil de usar le permite crear un ejército de sensores distribuidos para su empresa en minutos! Security Onion incluye Elasticsearch, Logstash, Kibana, Suricata, Zeek (antes conocido como Bro), Wazuh, Stenographer, TheHive, Cortex, CyberChef, NetworkMiner y muchas otras herramientas de seguridad.
TAILS https://tails.boum.org/ Sistema operativo portátil que protege la privacidad.
QUBES OS https://www.qubes-os.org/ Sistema operativo gratuito y de código abierto orientado a la seguridad para la informática de escritorio de un solo usuario. Qubes OS aprovecha la virtualización basada en Xen para permitir la creación y gestión de compartimentos aislados llamados qubes.
WIFISLAX https://www.wifislax.com/ Linux para auditorías Wireless.
DEMONLINUX https://demonlinux.com Distribución de Debian Linux con tema de prueba de penetración.


KALI FOR WINDOWS

Alternativamente a los usuarios de Microsoft Windows 10 u 11, pueden optar por instalar KALI como un subsistema dentro de Windows, lo que les permitirá utilizar toda la potencia de línea de comando de KALI sin salirse de su ambiente Windows.

Para que esto funcione correctamente se deben instalar los siguientes módulos desde el “Microsoft Store”:

Desde su Windows acceda al store de aplicaciones que ofrece Microsoft y busque primero WSL y luego Kali Linux.

Primero:

Instalar el “Microsoft Subsystem Linux Preview” (o equivalente si deja de se preview):

Segundo: Instalar “Kali Linux”:

Una vez que se ha instalado Kali Linux, se deben configurar un usuario distinto a root en la primera ejecución.

Luego de esto se debe actualizar con el siguiente comando, convirtiéndose en usuario root previamente:

# sudo su –
# apt update && apt full-upgrade

Luego de que se hayan actualizado los paquetes puede probar los comandos de kali-tools e irlos instalandos caso a caso, como por ejemplo NMAP.

Inicialmente NMAP no esta instalado:

Razón por la cual lo debe instalar con el siguiente comando (selecciones “Y” cuando se le pregunte):

# apt install nmap

Una vez finalizada la instalación del comando especifico, puede comenzar a utilizarlo:

Explore que comandos están preinstalados y cuales debe ir agregando para que tenga su biblioteca de comandos lista para sus análisis de vulnerabilidades y escaneos de ciberseguridad.

Por ejemplo para el caso del boletín presente, instale manualmente “masscan”:

Previamente instale pcaputils: “#apt install pcaputils”.

Al finalizar la instalación estará en condiciones de utilizar “masscan” dentro de una consola que esta siendo ejecutada dentro de “Microsoft Windows 10 o Microsoft Windows 11”.

PASO 2: INSTALAR EL COMANDO.

Una vez que se cuenta con este sistema operativo de manera funcional podemos instalar los comandos; algunos ya vienen preinstalados en la distribución KALI[10], pero si no fuere así puede instalarlos con los siguientes comandos, previamente tomando privilegios de usuario “root”:

Si el comando no estuviere pre-instalado en la distribución KALI, proceda con la siguiente instrucción:

a: Verifique que el lenguaje GO está instalado.

b.- Instalelo vía comando:

  go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest

  Después de unos minutos de descargar múltiples archivos:    


PASO3: VERIFICAR SU INSTALACIÓN.

Una vez que se ha instalado podemos verificar y explorar las múltiples opciones que ofrece para su ejecución:

En una consola de su KALI, dentro del directorio donde quedó instalada la aplicación, ejecute el comando para que muestre la ayuda: “nuclei -h”.

El listado completo de la ayuda que ofrece la herramienta para sus operadores:

Nuclei is a fast, template based vulnerability scanner focusing on extensive configurability, massive extensibility and ease of use.   Usage:   nuclei

[flags]

Flags:

TARGET:

   -u, -target string[]  target URLs/hosts to scan

   -l, -list string      path to file containing a list of target URLs/hosts to scan (one per line)

TEMPLATES:

   -t, -templates string[]  template or template directory paths to include in the scan

   -nt, -new-templates      run only new templates added in latest nuclei-templates release

   -w, -workflows string[]  workflow or workflow directory paths to include in the scan

   -validate                validate the passed templates to nuclei

   -tl                      list all available templates

FILTERING:

   -tags string[]                    execute a subset of templates that contain the provided tags

   -itags, -include-tags string[]    tags from the default deny list that permit executing more intrusive templates

   -etags, -exclude-tags string[]    exclude templates with the provided tags

   -it, -include-templates string[]  templates to be executed even if they are excluded either by default or configuration

   -et, -exclude-templates string[]  template or template directory paths to exclude

   -s, -severity value[]             Templates to run based on severity. Possible values: info, low, medium, high, critical

   -es, -exclude-severity value[]    Templates to exclude based on severity. Possible values: info, low, medium, high, critical

   -a, -author string[]              execute templates that are (co-)created by the specified authors

OUTPUT:

   -o, -output string            output file to write found issues/vulnerabilities

   -silent                       display findings only

   -nc, -no-color                disable output content coloring (ANSI escape codes)

   -json                         write output in JSONL(ines) format

   -irr, -include-rr             include request/response pairs in the JSONL output (for findings only)

   -nm, -no-meta                 don’t display match metadata

   -nts, -no-timestamp           don’t display timestamp metadata in CLI output

   -rdb, -report-db string       local nuclei reporting database (always use this to persist report data)

   -me, -markdown-export string  directory to export results in markdown format

   -se, -sarif-export string     file to export results in SARIF format

CONFIGURATIONS:

   -config string              path to the nuclei configuration file

   -rc, -report-config string  nuclei reporting module configuration file

   -H, -header string[]        custom headers in header:value format

   -V, -var value              custom vars in var=value format

   -r, -resolvers string       file containing resolver list for nuclei

   -sr, -system-resolvers      use system DNS resolving as error fallback

   -passive                    enable passive HTTP response processing mode

   -ev, -env-vars              enable environment variables to be used in template

INTERACTSH:

   -iserver, -interactsh-server string  interactsh server url for self-hosted instance (default «https://interactsh.com»)

   -itoken, -interactsh-token string    authentication token for self-hosted interactsh server

   -interactions-cache-size int         number of requests to keep in the interactions cache (default 5000)

   -interactions-eviction int           number of seconds to wait before evicting requests from cache (default 60)

   -interactions-poll-duration int      number of seconds to wait before each interaction poll request (default 5)

   -interactions-cooldown-period int    extra time for interaction polling before exiting (default 5)

   -ni, -no-interactsh                  disable interactsh server for OAST testing, exclude OAST based templates

RATE-LIMIT:

   -rl, -rate-limit int          maximum number of requests to send per second (default 150)

   -rlm, -rate-limit-minute int  maximum number of requests to send per minute

   -bs, -bulk-size int           maximum number of hosts to be analyzed in parallel per template (default 25)

   -c, -concurrency int          maximum number of templates to be executed in parallel (default 25)

OPTIMIZATIONS:

   -timeout int               time to wait in seconds before timeout (default 5)

   -retries int               number of times to retry a failed request (default 1)

   -mhe, -max-host-error int  max errors for a host before skipping from scan (default 30)

   -project                   use a project folder to avoid sending same request multiple times

   -project-path string       set a specific project path

   -spm, -stop-at-first-path  stop processing HTTP requests after the first match (may break template/workflow logic)

   -stream                    Stream mode – start elaborating without sorting the input

HEADLESS:

   -headless            enable templates that require headless browser support

   -page-timeout int    seconds to wait for each page in headless mode (default 20)

   -sb, -show-browser   show the browser on the screen when running templates with headless mode

   -sc, -system-chrome  Use local installed chrome browser instead of nuclei installed

DEBUG:

-debug                     show all requests and responses

-debug-req                 show all sent requests

-debug-resp                show all received responses

-proxy, -proxy-url string  URL of the HTTP proxy server

-proxy-socks-url string    URL of the SOCKS proxy server

-tlog, -trace-log string   file to write sent requests trace log

-version                   show nuclei version

-v, -verbose               show verbose output

-vv                        display templates loaded for scan

-tv, -templates-version    shows the version of the installed nuclei-templates

UPDATE:

-update                        update nuclei engine to the latest released version

-ut, -update-templates         update nuclei-templates to latest released version

-ud, -update-directory string  overwrite the default directory to install nuclei-templates

-duc, -disable-update-check    disable automatic nuclei/templates update check

STATISTICS:

-stats                    display statistics about the running scan

-sj, -stats-json          write statistics data to an output file in JSONL(ines) format

-si, -stats-interval int  number of seconds to wait between showing a statistics update (default 5)

-m, -metrics              expose nuclei metrics on a port

-mp, -metrics-port int    port to expose nuclei metrics on (default 9092)

PASO 4: PONERLO EN MARCHA PARA VERIFICAR NUESTRA INFRAESTRUCTURA.

Un ejemplo de ejecución básica para nuestros primeros pasos:

Probaremos el comando con nuestro KALI en un ataque a un sitio web determinado:

NUCLEI Lo primero siempre es verificar que está actualizada la herramienta y sus bases de datos asociadas:   Nuclei –ut   Primero la ejecución más básica:   Nuclei –u https://www.csirt.gob.cl     El escaneo completo de este ejemplo:   # nuclei -u https://www.csirt.gob.cl                        __     _    ____  __  _______/ /__  (_)   / __ \/ / / / ___/ / _ \/ /  / / / / /_/ / /__/ /  __/ / /_/ /_/\__,_/\___/_/\___/_/   2.7.3                   projectdiscovery.io   [WRN] Use with caution. You are responsible for your actions. [WRN] Developers assume no liability and are not responsible for any misuse or damage. [INF] Using Nuclei Engine 2.7.3 (latest) [INF] Using Nuclei Templates 9.0.9 (latest) [INF] Templates added in last update: 47 [INF] Templates loaded for scan: 3541 [INF] Templates clustered: 611 (Reduced 560 HTTP Requests) [2022-07-08 16:44:28]

[tech-detect:google-tag-manager]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:28]

[tech-detect:youtube]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:28]

[tech-detect:owl-carousel]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:28]

[tech-detect:font-awesome]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:28]

[tech-detect:bootstrap]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:28]

[tech-detect:jsdelivr]

[http] [info] https://www.csirt.gob.cl

[INF] Using Interactsh Server: oast.pro

[2022-07-08 16:44:30] [http-missing-security-headers:content-security-policy]

[http]

[info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:x-frame-options]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:access-control-allow-credentials]

[http]

[info]

https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:access-control-allow-headers]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:cross-origin-embedder-policy]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:access-control-max-age]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:permission-policy]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:access-control-allow-methods]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:cross-origin-resource-policy]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:access-control-allow-origin]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:access-control-expose-headers]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:x-content-type-options]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30] [http-missing-security-headers:x-permitted-cross-domain-policies]

[http]

[info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:referrer-policy]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:30] [http-missing-security-headers:clear-site-data]

[http]

[info] https://www.csirt.gob.cl

[2022-07-08 16:44:30]

[http-missing-security-headers:cross-origin-opener-policy]

[http] [info] https://www.csirt.gob.cl

[2022-07-08 16:44:40]

[ssl-dns-names]

[ssl] [info] https://www.csirt.gob.cl

[concienciadigital.gob.cl,nic.gob.cl,subinterior.gob.cl,*.minterior.gov.cl,www.concienciadigital.gob.cl,*.csirt.gob.cl,www.ciberseguridad.gob.cl,ciberseguridad.gob.cl,csirt.gob.cl,indicadores.ciberseguridad.gob.cl,reportes.ciberseguridad.gob.cl,ws.diariooficial.interior.gob.cl,www.boletinoficialdemineria.cl,interior.gob.cl,*.interior.gob.cl,cecipu.gob.cl,wspagos.diariooficial.interior.gob.cl,www.diarioficial.cl,pagos.diarioficial.cl,www.cecipu.gob.cl,www.diariooficial.interior.gob.cl,www.subinterior.gob.cl,*.extranjeria.gob.cl,*.interior.gov.cl,boletinoficialdemineria.cl]

[2022-07-08 16:44:45]

[options-method]

[http] [info] https://www.csirt.gob.cl [OPTIONS, GET, HEAD, POST]

[2022-07-08 16:44:53]

[tls-version]

[ssl] [info] https://www.csirt.gob.cl [TLS12]

┌──(root?V)-[~]

Otro ejemplo es realizar el escaneo solo con los templates tengan etiquetas del tipo CVE:

nuclei -u https://www.csirt.gob.cl -tags cve

Otros ejemplos que puede utilizar y explorar para afinar los resultados focalizando su análisis:

1) Plantillas ( -t/templates)

De manera predeterminada, todas las plantillas (excepto la lista de núcleos ignorados) se ejecutan desde la ruta de instalación de la plantilla predeterminada.

nuclei -u https://example.com

El directorio de plantillas personalizadas o el directorio de plantillas múltiples se puede ejecutar de la siguiente manera,

nuclei -u https://example.com -t cves/ -t exposures/

De manera similar, las plantillas se pueden ejecutar contra la lista de URL.

nuclei -list http_urls.txt

2) Flujos de trabajo ( -w/workflows)

nuclei -u https://example.com -w workflows/

De manera similar, los flujos de trabajo se pueden ejecutar contra la lista de URL.

nuclei -list http_urls.txt -w workflows/wordpress-workflow.yaml

Filtros de núcleos

El motor Nuclei admite tres filtros básicos para personalizar la ejecución de la plantilla.

Etiquetas ( -tags)

Filtro basado en el campo de etiquetas disponible en la plantilla.

Gravedad ( -severity)

Filtro basado en el campo de gravedad disponible en la plantilla.

Autor ( -author)

Filtro basado en el campo de autor disponible en la plantilla.

De manera predeterminada, los filtros se aplican en la ruta instalada de las plantillas y se pueden personalizar con la entrada manual de la ruta de la plantilla.

Por ejemplo, el siguiente comando ejecutará todas las plantillas instaladas en el ~/nuclei-templates/directorio y tiene cveetiquetas.

nuclei -u https://example.com -tags cve

Y este ejemplo ejecutará todas las plantillas disponibles en el ~/nuclei-templates/exposures/directorio y tiene una configetiqueta.

nuclei -u https://example.com -tags config -t exposures/

Los filtros múltiples funcionan junto con la condición Y, el siguiente ejemplo ejecuta todas las plantillas con cveetiquetas Y tiene la gravedad criticalO Y como autor de la plantilla.highgeeknik

nuclei -u https://example.com -tags cve -severity critical,high -author geeknik

Del mismo modo, todos los filtros también son compatibles con los flujos de trabajo.

nuclei -w workflows/wordpress-workflow.yaml -severity critical,high -list http_urls.

Algunas imágenes complementarias con pruebas sobre un servidor vulnerable:

AVISO IMPORTANTE:   Tenga en consideración que a partir del 20 de junio de 2022 ha entrado en vigencia la Ley N° 21.459[11], que establece normas sobre delitos informáticos, deroga la ley n° 19.223 y modifica otros cuerpos legales con el objeto de adecuarlos al convenio de budapest. Destacamos en particular se destaca el artículo 2:   Acceso ilícito. El que, sin autorización o excediendo la autorización que posea y superando barreras técnicas o medidas tecnológicas de seguridad, acceda a un sistema informático será castigado con la pena de presidio menor en su grado mínimo o multa de once a veinte unidades tributarias mensuales.     Si el acceso fuere realizado con el ánimo de apoderarse o usar la información contenida en el sistema informático, se aplicará la pena de presidio menor en sus grados mínimo a medio. Igual pena se aplicará a quien divulgue la información a la cual se accedió de manera ilícita, si no fuese obtenida por éste.     En caso de ser una misma persona la que hubiere obtenido y divulgado la información, se aplicará la pena de presidio menor en sus grados medio a máximo.   Tenga presente que al utilizar estas herramientas usted DEBE, según lo indicado el artículo 16, contar con una autorización expresa de los dueños de los activos sometidos a la o las pruebas:   Artículo 16.- Autorización e Investigación Académica. Para efectos de lo previsto en el artículo 2° se entenderá que cuenta con autorización para el acceso a un sistema informático, el que en el marco de investigaciones de vulnerabilidad o para mejorar la seguridad informática, acceda a un sistema informático mediando la autorización expresa del titular del mismo. De no cumplir estas condiciones de la legislación vigente puede exponerse a las sanciones penales que la misma ley indica.  

La interfaz de comando muestra los hallazgos que amplían la superficie de ataque,  los que pueden ser utilizados en subsecuentes análisis que van profundizando la información que está expuesta respecto de nuestros sitios y sistemas en Internet.

Es importante tener en consideración que la seguridad debe estar presente en TODOS los activos, pues los ciberdelincuentes buscarán aquellos más débiles para actuar y lograr sus objetivos: exfiltrar datos, destruir los sistemas, encriptar información para cobrar un rescate posteriormente, interceptar información confidencial, robar propiedad intelectual o propiedad industrial, introducir ransomware, cryptojacking[12] entre otras acciones delictivas posibles. Siempre considere que, aunque su información esté encriptada, igualmente es de interés para los ciberdelincuentes, pues la pueden vender a otros Estados interesados en acumular esta información para que en un futuro no muy lejano cuando tengan la capacidad, la desencripten (se sugiere estudiar los impactos y riesgos de la computación cuántica).

Tenga presente que es importante que estas pruebas deben ser coordinadas con el equipo de operaciones y en ambientes que estén bajo supervisión.

Antes de proceder a aplicar estos comandos revise sus políticas de seguridad de la información interna, sus códigos de ética, los NDA que haya suscrito y las cláusulas de confidencialidad de su contrato de trabajo.

Defina horarios especiales o ambientes de “test o QA” equivalentes a los de “producción”, para mitigar los posibles efectos perjudiciales en los dispositivos de seguridad, el sitio o el sistema web.

Use la información obtenida para visualizar sus activos desde la perspectiva de un externo e identifique vulnerabilidades a mitigar o datos/directorios a proteger.

Estudie las múltiples opciones de los comandos ilustrados en esta ficha, entienda el significado de sus diferentes parámetros con el objetivo de obtener resultados específicos, para diferentes escenarios de ataques o redirigir la salida a un archivo, para su inclusión en informes posteriores.

Tenga presente que para el procesamiento y análisis de los datos es relevante que vaya perfeccionando su manejo de LINUX y comandos PowerShell[13] (si es un usuario de windows).

En próximas ediciones se irán reforzando estos aspectos para facilitar el manejo de los datos y resultados obtenidos, logrando así una mejor comunicación con sus equipos TIC y con el CSIRT de Gobierno.

En caso de cualquier inquietud no dude en consultarnos a soc-csirt@interior.gob.cl.

Si encuentra algún error en el documento también es importante que nos lo comunique para introducir las correcciones pertinentes en las versiones futuras de esta ficha.

Anexo I: Comandos Básicos de Linux: GREP o EGREP

Grep es una de las herramientas más usadas en la línea de comandos de GNU/Linux. A pesar de ser una herramienta muy simple, permite realizar gran cantidad de operaciones. Se usa especialmente junto con las tuberías, para poder localizar puntos concretos en la salida de un comando previo, etc. Pero también existe una herramienta conocida como egrep que equivale a ejecutar grep con la opción -E.

La e proviene de «Extended regex», que es lo que activa la opción -E y lo que tiene en egrep por defecto sin necesidad de usar esa opción. Es decir, que podrá usar las expresiones regulares extendidas.

Puede buscar una línea o palabra concreta en uno o varios archivos, como también sucede con grep. Por ejemplo, imagine que quiere buscar la palabra ubuntu en un archivo llamado snap.txt y también en todos los .txt del directorio actual:

  • egrep ubuntu snap.txt
  • egrep ubuntu *.txt

La búsqueda puede ser también recursiva para buscar en todo el contenido del directorio actual:

  • egrep -r «hola mundo» *

Hasta aquí se buscaban palabras o cadenas exactas, es decir, teniendo en cuenta mayúsculas y minúsculas (case-sensitive), pero si quiere hacerlo en modo case-insensitive, sin importar si son mayúculas o minúsculas, puedes usar lo siguiente (si agrega w busca solo coincidencias completas):

  • egrep -i «ejemplo» documento.txt
  • egrep -iw «ejemplo» documento.txt

También puede mostrar, no las coincidencias, sino los nombres de archivos donde se han encontrado esas coincidencias:

  • egrep -l hola *.txt

Mostrar solo el patrón o palabra buscada dentro de un documento:

  • egrep -o printf hola.c

Puede combinar varias de las opciones vistas anteriormente, o las puede complementar con otras opciones como -A n y -B n, siendo n el número de líneas que quiere mostrar antes (Before) y después (After) de la coincidencia o ambas a la vez (C), para que así pueda ver lo que rodea a dicha coincidencia:

  • egrep -A 2 «printf» hola.c
  • egrep -B 2 «printf» hola.c
  • egrep -C 2 printf hola.c

Suprimir las líneas que contienen una coincidencia y solo mostrar las que no coinciden:

  • egrep -v «dos» números.doc

O si lo prefiere, puede usar varias palabras o coincidencias con -e. Por ejemplo:

  • egrep -v -e «uno» -e «dos» -e «tres» números.txt

Si usa -c se pueden solo contar el número de coincidencias, o invertirlo con -v para que muestre el número de líneas no coincidentes. Por ejemplo:

  • egrep -c «include» main.c
  • egrep -v -c «include» main.c

E incluso mostrar el número de línea donde se ha producido la coincidencia, y también la posición que ocupa respectivamente:

  • egrep -n «void» hola.c
  • egrep -o -b «printf» hola.c

Y junto con las expresiones regulares se pueden ampliar sus capacidades. Por ejemplo, buscar una línea que comience por Hola y termine por adios, o que comience por Hola seguida de lo que sea y luego aparezca la coincidencia adiós respectivamente:

  • egrep ‘^Hola.*adiós$’ ejemplo.txt
  • egrep «Hola.*adiós» ejemplo.txt

Puede también buscar rangos alfanuméricos, o valores concretos, como por ejemplo para localizar ciertas IPs:

  • cat /etc/networks | egrep «192.168.1.[5-9]»
  • cat /etc/networks | egrep «192.168.[1-3].[5-9]»
  • cat /etc/networks | egrep «192.168.1.[0-3]|[5-9]»
  • egrep 192.168.4.[10,40] networks

Si lo prefiere, puede usar otras expresiones regulares para hacer búsquedas más concretas. Por ejemplo | para buscar una coincidencia o la otra:

  • egrep -i ‘^(printf|scanf)’ hola.c

Incluso puede localizar mayúsculas, minúsculas, caracteres alfabéticos solo, o alfanuméricos, etc., usando otras expresiones como: [:alnum:], [:alpha:], [:digit:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], etc. Por ejemplo, para buscar mayúsculas:

  • egrep [[:upper:]] diccionario

Un listado otros comandos muy útiles que deben ser dominados por aquellos que quieran moverse con soltura por el entorno Linux:

  • ls – ver el contenido del directorio (lista)
  • pwd – ruta del directorio actual
  • cd – cambiar directorio
  • mkdir – crea un nuevo directorio
  • mv – mover archivos / renombrar archivos
  • cp – copiar archivos
  • rm – eliminar archivos
  • touch – cree un nuevo archivo en blanco
  • rmdir – eliminar directorio
  • cat –  muestra el contenido del archivo en la terminal
  • clear – ventana de terminal clara
  • echo – mover datos a un archivo
  • less: lea el archivo de texto una pantalla a la vez
  • man – muestra el manual de comandos de Linux
  • sudo: le permite realizar tareas que requieren permisos administrativos o de raíz
  • top – administrador de tareas en la terminal
  • tar: se utiliza para archivar varios archivos en un tarball
  • grep – usado para buscar palabras en archivos específicos
  • head: vea las primeras líneas de cualquier archivo de texto
  • tail – ver las últimas líneas de cualquier archivo de texto
  • diff – compara el contenido de dos archivos línea por línea
  • kill: se utiliza para eliminar programas que no responden
  • jobs –  muestra todos los trabajos actuales junto con sus estados
  • sort – es una utilidad de línea de comando para ordenar líneas de archivos de texto
  • df – información sobre el disco del sistema
  • du – comprobar cuánto espacio ocupa un archivo o directorio
  • zip – para comprimir sus archivos en un archivo zip
  • unzip – para extraer los archivos comprimidos de un archivo zip
  • ssh: una conexión cifrada segura entre dos hosts en una red insegura
  • cal – muestra el calendario
  • apt: herramienta de línea de comandos para la interacción con el sistema de empaquetado
  • alias accesos directos personalizados que se utilizan para representar un comando
  • w – información del usuario actual
  • whereis: se utiliza para ubicar los archivos binarios, de origen y de página del manual
  • whatis: se utiliza para obtener una descripción de la página del manual de una línea
  • useradd – usado para crear un nuevo usuario
  • passwd: se usa para cambiar la contraseña del usuario actual
  • whoami – imprimir usuario actual
  • uptime – de actividad: imprime la hora actual cuando se inicia la máquina
  • free – imprimir información de espacio libre en disco
  • history – imprime el historial de comandos usados
  • uname – imprime información detallada sobre tu sistema Linux
  • ping: para verificar el estado de conectividad a un servidor
  • chmod – para cambiar los permisos de archivos y directorios
  • chown – para cambiar la propiedad de archivos y directorios
  • ​​​​find – el uso de búsqueda busca archivos y directorios
  • locate – se utiliza para localizar un archivo, al igual que el comando de búsqueda en Windows
  • ifconfig – imprimir cosas de dirección IP
  • ip a – similar a ifconfig pero con la letra más corta
  • finger le brinda un breve volcado de información sobre un usuario

Anexo II: Comandos o aplicativos básicos para Windows: TCPView

En esta segunda versión de comandos o aplicativos para Windows mencionaremos el aplicativo “TCPview de la suite SYSINTERNALS”.

TCPView es un programa de Windows que le mostrará listados detallados de todos los puntos finales TCP y UDP en su sistema, incluidas las direcciones locales y remotas y el estado de las conexiones TCP. En Windows Server 2008, Vista y XP, TCPView también informa el nombre del proceso propietario del endpoint. TCPView proporciona un subconjunto más informativo y convenientemente presentado del programa Netstat que se envía con Windows. La descarga de TCPView incluye Tcpvcon, una versión de línea de comandos con la misma funcionalidad.

Este programa puede descargarlo desde:

https://download.sysinternals.com/files/TCPView.zip

Cuando inicie TCPView, enumerará todos los puntos finales TCP y UDP activos, resolviendo todas las direcciones IP en sus versiones de nombre de dominio. Puede utilizar un botón de la barra de herramientas o un elemento de menú para alternar la visualización de los nombres resueltos. TCPView muestra el nombre del proceso que posee cada punto final, incluido el nombre del servicio (si corresponde).

De forma predeterminada, TCPView se actualiza cada segundo, pero puede utilizar el elemento de menú Opciones | Frecuencia de actualización para cambiar la frecuencia. Los puntos finales que cambian de estado de una actualización a la siguiente se resaltan en amarillo; los que se eliminan se muestran en rojo y los nuevos puntos finales se muestran en verde.

Puede cerrar las conexiones TCP / IP establecidas (aquellas etiquetadas con un estado de ESTABLECIDO) seleccionando Archivo | Cerrar conexiones, o haciendo clic con el botón derecho en una conexión y eligiendo Cerrar conexiones en el menú contextual resultante.

Puede guardar la ventana de salida de TCPView en un archivo usando el elemento del menú Guardar.

Nota adicional para “tcpvcon”:

Con estos tips básicos buscamos incentivarlo a explorar estas herramientas y sus múltiples usos para ciberseguridad.

“HOLA, MUNDO” EN OTROS LENGUAJES

RUST:

fn main() {     println!(«Hello World!»); }

CLOJURE

(ns clojure.examples.hello    (:gen-class)) (defn hello-world []    (println «Hello, World!»)) (hello-world)

TYPESCRIPT

let message: string = ‘Hello, World!’; console.log(message);

ELIXIR

IO.puts(«Hello, World!»)

JULIA

print(«Hello World!»)

PYTHON:

print(‘Hello, world!’)

DART

void main() {   print(‘Hello, World!’); }

SWIFT

import UIKit   var str = «Hello, World!»

NODE JS

// server.js ‘use strict’; const http = require(‘http’); const server = http.createServer(function (req, res) {     res.writeHead(200, {‘content-type’: ‘text/plain’});     res.end(‘Hello, World!’); }); server.listen(8000);

GO

package main import «fmt» func main() {     fmt.Println(«Hello, World!») }

F#

#light   let main =     printfn «Hello, World!»   do main

C#

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;   namespace ConsoleApp1 {     class Program     {         static void Main(string[] args)         {             Console.WriteLine(«Hello, World!»);               Console.ReadLine();         }     } }

Kotlin

fun main(args: Array<String>) {     println(«Hello World») }

JavaScript

<!DOCTYPE HTML> <html> <body>   <p>Before the script…</p>   <script>     alert( ‘Hello, world!’ );   </script>   <p>…After the script.</p> </body> </html>

Crystal

puts «Hello World»  

BASH

#!/bin/bash echo «Hello World»

LISP

CL-USER> (defun hello ()            (format t «Hello, World!~%»)) HELLO CL-USER> (hello) Hello, World! NIL CL-USER>

ERLANG

-module(primer).    -export([hello_world/0]).      hello_world() ->           «hello world».

RUBY

ruby -e ‘print «Hola Mundo\n»‘

[1] https://es.wikipedia.org/wiki/Universal_Serial_Bus

[2] https://www.kali.org/downloads/

[3] https://my.vmware.com/en/web/vmware/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/16_0

[4] https://www.virtualbox.org/wiki/Downloads

[5] Dependiendo del tipo de instalación que seleccione, se pueden borrar todos los datos existentes en el disco duro, así que haga una copia de seguridad de la información importante del dispositivo en un medio externo.

[6] https://www.kali.org/docs/introduction/download-official-kali-linux-images/

[7] https://www.kali.org/docs/introduction/what-image-to-download/#which-image-to-choose

[8] https://www.kali.org/docs/usb/live-usb-install-with-windows/

[9] https://www.kali.org/docs/installation/network-pxe/

[10] https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/

[11] https://www.bcn.cl/leychile/navegar?idNorma=1177743

[12] https://www.eset.com/es/caracteristicas/cryptojacking/

[13] https://devblogs.microsoft.com/scripting/table-of-basic-powershell-commands/

Share.
Exit mobile version