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:
- Reconocimiento: el intruso selecciona el objetivo, lo investiga e intenta identificar las vulnerabilidades en la red objetivo.
- Armamento: el intruso crea un arma de malware de acceso remoto, como un virus o un gusano, adaptada a una o más vulnerabilidades.
- 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]).
- Explotación: se activa el código del programa del arma de malware, que toma medidas en la red objetivo para aprovechar la vulnerabilidad.
- Instalación: el arma de malware instala un punto de acceso (por ejemplo, «puerta trasera») que puede utilizar un intruso.
- Comando y control: el malware permite al intruso tener acceso persistente «con las manos en el teclado» a la red de destino.
- 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. |
- 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
- 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.
- 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]
[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:
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/


