Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Página 1 de 45
11 de enero de 2022 Ficha N° 26 HASHCAT CSIRT DE GOBIERNO
Comando de la semana “HASHCAT”
I. CONTEXTO
Este documento, denominado en esta oportunidad, “HASHCAT", tiene como objetivo ilustrar sobre
una herramienta que puede ser de utilidad para el lector, a objeto de ir potenciando las
capacidades locales de autochequeo, detección simple de vulnerabilidades que están expuestas a
internet en sus sitios o sistemas web y, a su vez, la obtención de una verificación de la subsanación
de aquellas que se les han sido reportadas, facilitando la interacción con el CSIRT de Gobierno.
El objetivo no es reemplazar una auditoria de código o evaluación de vulnerabilidades, sino que
establecer capacidades básicas de chequeo y obtención de información de manera rápida para
temas específicos, como por ejemplo la verificación de la subsanación de alertas o vulnerabilidades
reportadas por “CSIRT GOB CL”.
Todas estas herramientas, al contar con la posibilidad de ser usadas desde una línea de comando,
permiten en algún grado la integración dentro de scripts o programas escritos en lenguajes que
facilitan la automatización, tales como PERL, AWK, Shell Scripting1, Expect, Python, C, C#, C++,
Golang, JavaScript, PowerShell, Ruby, Java, PHP, Elixir, Elm, Go, Dart, DLang, Pony, TypeScript,
Kotlin, Nim, OCaml, Q#2, Reason, Rust (RustyBuer) y Swift, entre otros, con miras a automatizar
estas actividades y así poder invertir el tiempo de los especialistas o analistas en el estudio e
investigación de los datos, para encontrar los problemas relevantes y descartar los falsos positivos.
Es importante que conozca al menos lo básico de los lenguajes más nuevos o no convencionales,
pues se ha detectado que los desarrolladores de malware van incorporándolos como estrategia de
ofuscación, para dificultar la detección y análisis que proveen las soluciones de seguridad.
Solo a modo de curiosidad se comparte un gráfico en el que se muestra el resultado de una
encuesta entre muchos desarrolladores, dejando ver que lenguajes son más queridos, temidos
(primer gráfico) y luego cuales son los más preferidos3 (segundo gráfico).
1 https://scis.uohyd.ac.in/~apcs/itw/UNIXProgrammingEnvironment.pdf 2 https://github.com/Microsoft/QuantumKatas/ 3 https://insights.stackoverflow.com/survey/2021#most-loved-dreaded-and-wanted-language-love-dread
Página 2 de 45
Al final de este documento se presenta, a modo de curiosidad, el tradicional “Hola, Mundo” escrito
en algunos de estos lenguajes, con el objetivo de motivar al lector a conocerlos, estudiarlos y
aplicarlos a sus entornos de trabajo.
Página 3 de 45
Página 4 de 45
II. INTRODUCCIÓN
Una de las tareas regulares que un encargado de ciberseguridad debe realizar es el análisis de
contraseñas a través de su hash4. En este contexto puede verse enfrentado a la necesidad de
intentar obtener una contraseña por comparación contra diccionarios de hashs o algún mecanismo
de fuerza bruta. Esta tarea que parece simple, pero que exige un alto poder computacional para
poder obtener resultados en tiempos razonables. En esta línea, las herramientas que puedan
utilizar de mejor manera el poder de cómputo de las diferentes CPU5 que dispone un computador
(CPU de la tarjeta madre o GPU6) son las que resultan prácticas para nuestros analistas de
ciberseguridad. En esta oportunidad nos referiremos a Hashcat.
Conocer esta información es importante, pues es lo que un hacker está haciendo en sus primeros
pasos para llevar adelante un ataque en etapas posteriores.
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 USB7).
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. 4 https://es.wikipedia.org/wiki/Funci%C3%B3n_hash 5 https://es.wikipedia.org/wiki/Unidad_central_de_procesamiento 6 https://es.wikipedia.org/wiki/Unidad_de_procesamiento_gr%C3%A1fico 7 https://es.wikipedia.org/wiki/Universal_Serial_Bus
Página 5 de 45
En este contexto se inserta la herramienta que les presentamos en esta edición del “comando de la
semana”: BING-IP2HOSTS.
Ilustración 1 Cyber Kill Chain by Lockheed Martin
Página 6 de 45
¿Qué es HASHCAT?
HASHCAT es un “cracker” de contraseñas, que cuenta con al menos las siguientes características:
El descifrador de contraseñas más rápido del mundo
El primer y único motor de reglas en el núcleo del mundo
Gratuito
Código abierto (licencia MIT)
Multi-OS (Linux, Windows y macOS)
Multi-Plataforma (CPU, GPU, APU, etc., todo lo que viene con un tiempo de ejecución
OpenCL)
Multi-Hash (Descifrando múltiples hashes al mismo tiempo)
Multi-Devices (Utilización de múltiples dispositivos en el mismo sistema)
Multi-Device-Types (Utilizando tipos de dispositivos mixtos en el mismo sistema)
Admite la función de cerebro candidato a contraseña
Soporta redes de cracking distribuidas (usando overlay)
Admite la pausa/reanudación interactiva
Soporta sesiones
Soporta la restauración
Admite la lectura de candidatos a contraseña desde un archivo y desde la entrada estándar
Soporta hex-salt y hex-charset
Admite el ajuste automático del rendimiento
Admite cadenas de markov de ordenación automática del espacio de claves
Sistema de evaluación comparativa integrado
Vigilancia térmica integrada
Más de 350 tipos de hash implementados teniendo en cuenta el rendimiento
La suite de herramientas que componen hashcat incluye a las siguientes:
Hashcat: la utilidad de recuperación de contraseñas más rápida y avanzada del mundo.
Hashcat-utils: Pequeñas utilidades que son útiles en el descifrado avanzado de contraseñas.
Maskprocessor: Generador de palabras de alto rendimiento con un juego de caracteres
configurable por posición.
Statsprocessor - Generador de palabras basado en cadenas de markov por posición.
Princeprocessor: Generador de candidatos de contraseña independiente que utiliza el
algoritmo PRINCE.
Kwprocessor: Generador avanzado de teclado con recorridos, mapas de teclas y rutas
configurables.
Página 7 de 45
Soporta al menos los siguientes modos de ataque:
Ataque de diccionario: Probar todas las palabras de una lista; también llamado modo
"directo" (modo de ataque 0, -a 0).
Ataque combinador: Concatenación de palabras de varias listas de palabras (modo 1)
Ataque de fuerza bruta y ataques Máscara - tratar todos los caracteres de juegos de
caracteres dado, por posición (modo 3).
Ataque híbrido: Combinación de listas de palabras + máscaras (modo 6) y máscaras + listas
de palabras (modo 7); puede también ser hecho con reglas.
Ataque de asociación: Utilice un nombre de usuario, un nombre de archivo, una pista o
cualquier otra información que pueda haber influido en la generación de la contraseña para
atacar un hash específico.
Ataque basado en reglas: Aplicar reglas a palabras de listas de palabras; se combina con
ataques basados en listas de palabras (modos de ataque 0, 6 y 7).
Ataque de caso de alternancia - caso de alternancia de personajes; ahora cumplido con
reglas.
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.
Página 8 de 45
PASO A PASO
PASO 1: UN ENTORNO ADECUADO PARA TRABAJAR
Primero debe contar con una distribución de Kali8 Linux funcionando, ya sea en una máquina física
o en una máquina virtual910.
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
8 https://www.kali.org/downloads/ 9 https://my.vmware.com/en/web/vmware/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/16_0 10 https://www.virtualbox.org/wiki/Downloads
Página 9 de 45
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ón11
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 Linux12 (el fabricante recomienda13 la imagen marcada como Instalador).
11 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. 12 https://www.kali.org/docs/introduction/download-official-kali-linux-images/ 13 https://www.kali.org/docs/introduction/what-image-to-download/#which-image-to-choose
Página 10 de 45
Grabe14 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 red15 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/
14 https://www.kali.org/docs/usb/live-usb-install-with-windows/ 15 https://www.kali.org/docs/installation/network-pxe/
Página 11 de 45
Otras distribuciones que puede considerar son las siguientes:
Nombre Link Descripción ARCHSTRIKE https://archstrike.org/ Distribución linux con foco en ciberseguridad.
BACKBOX https://www.backbox.org/ 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 https://archiveos.org/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 https://archiveos.org/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
https://archiveos.org/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
https://archiveos.org/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
Página 12 de 45
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.
Página 13 de 45
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 debn 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.
Página 14 de 45
Primero:
Instalar el “Microsoft Subsystem Linux Preview” (o equivalente si deja de se preview):
Segundo: Instalar “Kali Linux”:
Página 15 de 45
Una vez que se ha instalado Kali Linux, se debe 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
instalarlos caso a caso, como por ejemplo NMAP.
Página 16 de 45
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
Página 17 de 45
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”.
Página 18 de 45
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”.
Página 19 de 45
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 KALI16, 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:
# apt install hashcat Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado... Hecho hashcat ya está en su versión más reciente (6.1.1+ds1-1). fijado hashcat como instalado manualmente. Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios. baobab caribou cryptsetup-run folks-common gccgo-10 gir1.2-caribou-1.0 gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0 gir1.2-gtkclutter-1.0 gir1.2-handy-0.0 gir1.2-mutter-8 gnome-characters gnome-contacts gnome-core gnome-font-viewer gnome-logs gnome-online-miners gnome-tweak-tool golang-1.15-go golang-1.15-src golang-1.16-go golang-1.16-src gstreamer1.0-packagekit ksysguardd libamtk-5-0 libamtk-5-common libavif12 libavif9 libcamel-1.2-62 libcaribou-common libcaribou0 libdap27 libdapclient6v5 libdav1d4 libedataserver-1.2-25 libedataserverui-1.2-2 libepsilon1 libextutils-pkgconfig-perl libfolks-eds26 libfolks26 libgdal28 libgeos-3.9.0 libgeos-3.9.1 libgeos3.10.0 libgfbgraph-0.2-0 libgo-10-dev libgo16 libgupnp-1.2-0 libhandy-0.0-0 libidn11 libkdecorations2private7 libkdecorations2private8 libkf5sysguard-bin libksignalplotter9 libkwineffects12a libkwinglutils12 libkwinxrenderutils12 libmusicbrainz5-2 libmusicbrainz5cc2v5 libmutter-8-0 libnetcdf18 libntfs-3g883 libomp-11-dev libomp5-11 libpcre2-posix2 libplacebo72 libproj19 libqalculate20 libqalculate20-data libqt5script5 libquvi-0.9-0.9.3 libquvi-scripts-0.9 libstd-rust-1.48 libstd-rust-1.49 libstd-rust-1.50 libtepl-5-0 libtracker-control-2.0-0 libtracker-miner-2.0-0 libtracker-sparql-2.0-0 liburcu6 liburing1 libx265-192 libxmlb1 libyara4 libzapojit-0.0-0 lua-bitop lua-expat lua-json lua-socket
16 https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/
Página 20 de 45
python3-editor python3-exif python3-gevent python3-gevent-websocket python3-greenlet python3-ipython-genutils python3-jupyter-core python3-m2crypto python3-nbformat python3-parameterized python3-plotly python3-pylnk python3-stem python3-zope.event r-cran-freetypeharfbuzz r-cran-gdtools rust-gdb x11proto-xext-dev Utilice «apt autoremove» para eliminarlos. 0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
El proceso:
Página 21 de 45
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: “dnsrecon -h”.
El despliegue total de la ayuda es la siguiente:
# hashcat -h
hashcat (v6.1.1) starting...
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...
- [ Options ] -
Options Short / Long | Type | Description | Example
================================+======+======================================================+=======================
-m, --hash-type | Num | Hash-type, see references below | -m 1000
-a, --attack-mode | Num | Attack-mode, see references below | -a 3
-V, --version | | Print version |
-h, --help | | Print help |
--quiet | | Suppress output |
--hex-charset | | Assume charset is given in hex |
--hex-salt | | Assume salt is given in hex |
--hex-wordlist | | Assume words in wordlist are given in hex |
--force | | Ignore warnings |
--status | | Enable automatic update of the status screen |
--status-json | | Enable JSON format for status output |
--status-timer | Num | Sets seconds between status screen updates to X | --status-timer=1
--stdin-timeout-abort | Num | Abort if there is no input from stdin for X seconds | --stdin-timeout-
abort=300
Página 22 de 45
--machine-readable | | Display the status view in a machine-readable format |
--keep-guessing | | Keep guessing the hash after it has been cracked |
--self-test-disable | | Disable self-test functionality on startup |
--loopback | | Add new plains to induct directory |
--markov-hcstat2 | File | Specify hcstat2 file to use | --markov-
hcstat2=my.hcstat2
--markov-disable | | Disables markov-chains, emulates classic brute-force |
--markov-classic | | Enables classic markov-chains, no per-position |
-t, --markov-threshold | Num | Threshold X when to stop accepting new markov-chains | -t 50
--runtime | Num | Abort session after X seconds of runtime | --runtime=10
--session | Str | Define specific session name | --session=mysession
--restore | | Restore session from --session |
--restore-disable | | Do not write restore file |
--restore-file-path | File | Specific path to restore file | --restore-file-
path=x.restore
-o, --outfile | File | Define outfile for recovered hash | -o outfile.txt
--outfile-format | Str | Outfile format to use, separated with commas | --outfile-format=1,3
--outfile-autohex-disable | | Disable the use of $HEX[] in output plains |
--outfile-check-timer | Num | Sets seconds between outfile checks to X | --outfile-check=30
--wordlist-autohex-disable | | Disable the conversion of $HEX[] from the wordlist |
-p, --separator | Char | Separator char for hashlists and outfile | -p :
--stdout | | Do not crack a hash, instead print candidates only |
--show | | Compare hashlist with potfile; show cracked hashes |
--left | | Compare hashlist with potfile; show uncracked hashes |
--username | | Enable ignoring of usernames in hashfile |
--remove | | Enable removal of hashes once they are cracked |
--remove-timer | Num | Update input hash file each X seconds | --remove-timer=30
--potfile-disable | | Do not write potfile |
--potfile-path | File | Specific path to potfile | --potfile-path=my.pot
--encoding-from | Code | Force internal wordlist encoding from X | --encoding-from=iso-
8859-15
--encoding-to | Code | Force internal wordlist encoding to X | --encoding-to=utf-32le
--debug-mode | Num | Defines the debug mode (hybrid only by using rules) | --debug-mode=4
--debug-file | File | Output file for debugging rules | --debug-file=good.log
--induction-dir | Dir | Specify the induction directory to use for loopback | --induction=inducts
--outfile-check-dir | Dir | Specify the outfile directory to monitor for plains | --outfile-check-dir=x
--logfile-disable | | Disable the logfile |
--hccapx-message-pair | Num | Load only message pairs from hccapx matching X | --hccapx-message-pair=2
--nonce-error-corrections | Num | The BF size range to replace AP's nonce last bytes | --nonce-error-
corrections=16
--keyboard-layout-mapping | File | Keyboard layout mapping table for special hash-modes | --keyb=german.hckmap
--truecrypt-keyfiles | File | Keyfiles to use, separated with commas | --truecrypt-keyf=x.png
--veracrypt-keyfiles | File | Keyfiles to use, separated with commas | --veracrypt-keyf=x.txt
--veracrypt-pim-start | Num | VeraCrypt personal iterations multiplier start | --veracrypt-pim-
start=450
--veracrypt-pim-stop | Num | VeraCrypt personal iterations multiplier stop | --veracrypt-pim-stop=500
-b, --benchmark | | Run benchmark of selected hash-modes |
--benchmark-all | | Run benchmark of all hash-modes (requires -b) |
--speed-only | | Return expected speed of the attack, then quit |
--progress-only | | Return ideal progress step size and time to process |
-c, --segment-size | Num | Sets size in MB to cache from the wordfile to X | -c 32
--bitmap-min | Num | Sets minimum bits allowed for bitmaps to X | --bitmap-min=24
--bitmap-max | Num | Sets maximum bits allowed for bitmaps to X | --bitmap-max=24
--cpu-affinity | Str | Locks to CPU devices, separated with commas | --cpu-affinity=1,2,3
--hook-threads | Num | Sets number of threads for a hook (per compute unit) | --hook-threads=8
--example-hashes | | Show an example hash for each hash-mode |
--backend-ignore-cuda | | Do not try to open CUDA interface on startup |
--backend-ignore-opencl | | Do not try to open OpenCL interface on startup |
Página 23 de 45
-I, --backend-info | | Show info about detected backend API devices | -I
-d, --backend-devices | Str | Backend devices to use, separated with commas | -d 1
-D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1
-O, --optimized-kernel-enable | | Enable optimized kernels (limits password length) |
-w, --workload-profile | Num | Enable a specific workload profile, see pool below | -w 3
-n, --kernel-accel | Num | Manual workload tuning, set outerloop step size to X | -n 64
-u, --kernel-loops | Num | Manual workload tuning, set innerloop step size to X | -u 256
-T, --kernel-threads | Num | Manual workload tuning, set thread count to X | -T 64
--backend-vector-width | Num | Manually override backend vector-width to X | --backend-vector=4
--spin-damp | Num | Use CPU for device synchronization, in percent | --spin-damp=10
--hwmon-disable | | Disable temperature and fanspeed reads and triggers |
--hwmon-temp-abort | Num | Abort if temperature reaches X degrees Celsius | --hwmon-temp-abort=100
--scrypt-tmto | Num | Manually override TMTO value for scrypt to X | --scrypt-tmto=3
-s, --skip | Num | Skip X words from the start | -s 1000000
-l, --limit | Num | Limit X words from the start + skipped words | -l 1000000
--keyspace | | Show keyspace base:mod values and quit |
-j, --rule-left | Rule | Single rule applied to each word from left wordlist | -j 'c'
-k, --rule-right | Rule | Single rule applied to each word from right wordlist | -k '^-'
-r, --rules-file | File | Multiple rules applied to each word from wordlists | -r rules/best64.rule
-g, --generate-rules | Num | Generate X random rules | -g 10000
--generate-rules-func-min | Num | Force min X functions per rule |
--generate-rules-func-max | Num | Force max X functions per rule |
--generate-rules-seed | Num | Force RNG seed set to X |
-1, --custom-charset1 | CS | User-defined charset ?1 | -1 ?l?d?u
-2, --custom-charset2 | CS | User-defined charset ?2 | -2 ?l?d?s
-3, --custom-charset3 | CS | User-defined charset ?3 |
-4, --custom-charset4 | CS | User-defined charset ?4 |
-i, --increment | | Enable mask increment mode |
--increment-min | Num | Start mask incrementing at X | --increment-min=4
--increment-max | Num | Stop mask incrementing at X | --increment-max=8
-S, --slow-candidates | | Enable slower (but advanced) candidate generators |
--brain-server | | Enable brain server |
--brain-server-timer | Num | Update the brain server dump each X seconds (min:60) | --brain-server-timer=300
-z, --brain-client | | Enable brain client, activates -S |
--brain-client-features | Num | Define brain client features, see below | --brain-client-
features=3
--brain-host | Str | Brain server host (IP or domain) | --brain-host=127.0.0.1
--brain-port | Port | Brain server port | --brain-port=13743
--brain-password | Str | Brain server authentication password | --brain-
password=bZfhCvGUSjRq
--brain-session | Hex | Overrides automatically calculated brain session | --brain-
session=0x2ae611db
--brain-session-whitelist | Hex | Allow given sessions only, separated with commas | --brain-session-
whitelist=0x2ae611db
- [ Hash modes ] -
# | Name | Category
======+==================================================+======================================
900 | MD4 | Raw Hash
0 | MD5 | Raw Hash
100 | SHA1 | Raw Hash
1300 | SHA2-224 | Raw Hash
1400 | SHA2-256 | Raw Hash
10800 | SHA2-384 | Raw Hash
1700 | SHA2-512 | Raw Hash
17300 | SHA3-224 | Raw Hash
17400 | SHA3-256 | Raw Hash
Página 24 de 45
17500 | SHA3-384 | Raw Hash
17600 | SHA3-512 | Raw Hash
6000 | RIPEMD-160 | Raw Hash
600 | BLAKE2b-512 | Raw Hash
11700 | GOST R 34.11-2012 (Streebog) 256-bit, big-endian | Raw Hash
11800 | GOST R 34.11-2012 (Streebog) 512-bit, big-endian | Raw Hash
6900 | GOST R 34.11-94 | Raw Hash
5100 | Half MD5 | Raw Hash
18700 | Java Object hashCode() | Raw Hash
17700 | Keccak-224 | Raw Hash
17800 | Keccak-256 | Raw Hash
17900 | Keccak-384 | Raw Hash
18000 | Keccak-512 | Raw Hash
21400 | sha256(sha256_bin($pass)) | Raw Hash
6100 | Whirlpool | Raw Hash
10100 | SipHash | Raw Hash
21000 | BitShares v0.x - sha512(sha512_bin(pass)) | Raw Hash
10 | md5($pass.$salt) | Raw Hash, Salted and/or Iterated
20 | md5($salt.$pass) | Raw Hash, Salted and/or Iterated
3800 | md5($salt.$pass.$salt) | Raw Hash, Salted and/or Iterated
3710 | md5($salt.md5($pass)) | Raw Hash, Salted and/or Iterated
4110 | md5($salt.md5($pass.$salt)) | Raw Hash, Salted and/or Iterated
4010 | md5($salt.md5($salt.$pass)) | Raw Hash, Salted and/or Iterated
21300 | md5($salt.sha1($salt.$pass)) | Raw Hash, Salted and/or Iterated
40 | md5($salt.utf16le($pass)) | Raw Hash, Salted and/or Iterated
2600 | md5(md5($pass)) | Raw Hash, Salted and/or Iterated
3910 | md5(md5($pass).md5($salt)) | Raw Hash, Salted and/or Iterated
4400 | md5(sha1($pass)) | Raw Hash, Salted and/or Iterated
20900 | md5(sha1($pass).md5($pass).sha1($pass)) | Raw Hash, Salted and/or Iterated
21200 | md5(sha1($salt).md5($pass)) | Raw Hash, Salted and/or Iterated
4300 | md5(strtoupper(md5($pass))) | Raw Hash, Salted and/or Iterated
30 | md5(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated
110 | sha1($pass.$salt) | Raw Hash, Salted and/or Iterated
120 | sha1($salt.$pass) | Raw Hash, Salted and/or Iterated
4900 | sha1($salt.$pass.$salt) | Raw Hash, Salted and/or Iterated
4520 | sha1($salt.sha1($pass)) | Raw Hash, Salted and/or Iterated
140 | sha1($salt.utf16le($pass)) | Raw Hash, Salted and/or Iterated
19300 | sha1($salt1.$pass.$salt2) | Raw Hash, Salted and/or Iterated
14400 | sha1(CX) | Raw Hash, Salted and/or Iterated
4700 | sha1(md5($pass)) | Raw Hash, Salted and/or Iterated
4710 | sha1(md5($pass).$salt) | Raw Hash, Salted and/or Iterated
21100 | sha1(md5($pass.$salt)) | Raw Hash, Salted and/or Iterated
18500 | sha1(md5(md5($pass))) | Raw Hash, Salted and/or Iterated
4500 | sha1(sha1($pass)) | Raw Hash, Salted and/or Iterated
130 | sha1(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated
1410 | sha256($pass.$salt) | Raw Hash, Salted and/or Iterated
1420 | sha256($salt.$pass) | Raw Hash, Salted and/or Iterated
22300 | sha256($salt.$pass.$salt) | Raw Hash, Salted and/or Iterated
1440 | sha256($salt.utf16le($pass)) | Raw Hash, Salted and/or Iterated
20800 | sha256(md5($pass)) | Raw Hash, Salted and/or Iterated
20710 | sha256(sha256($pass).$salt) | Raw Hash, Salted and/or Iterated
1430 | sha256(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated
1710 | sha512($pass.$salt) | Raw Hash, Salted and/or Iterated
1720 | sha512($salt.$pass) | Raw Hash, Salted and/or Iterated
1740 | sha512($salt.utf16le($pass)) | Raw Hash, Salted and/or Iterated
1730 | sha512(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated
19500 | Ruby on Rails Restful-Authentication | Raw Hash, Salted and/or Iterated
50 | HMAC-MD5 (key = $pass) | Raw Hash, Authenticated
Página 25 de 45
60 | HMAC-MD5 (key = $salt) | Raw Hash, Authenticated
150 | HMAC-SHA1 (key = $pass) | Raw Hash, Authenticated
160 | HMAC-SHA1 (key = $salt) | Raw Hash, Authenticated
1450 | HMAC-SHA256 (key = $pass) | Raw Hash, Authenticated
1460 | HMAC-SHA256 (key = $salt) | Raw Hash, Authenticated
1750 | HMAC-SHA512 (key = $pass) | Raw Hash, Authenticated
1760 | HMAC-SHA512 (key = $salt) | Raw Hash, Authenticated
11750 | HMAC-Streebog-256 (key = $pass), big-endian | Raw Hash, Authenticated
11760 | HMAC-Streebog-256 (key = $salt), big-endian | Raw Hash, Authenticated
11850 | HMAC-Streebog-512 (key = $pass), big-endian | Raw Hash, Authenticated
11860 | HMAC-Streebog-512 (key = $salt), big-endian | Raw Hash, Authenticated
11500 | CRC32 | Raw Checksum
14100 | 3DES (PT = $salt, key = $pass) | Raw Cipher, Known-Plaintext attack
14000 | DES (PT = $salt, key = $pass) | Raw Cipher, Known-Plaintext attack
15400 | ChaCha20 | Raw Cipher, Known-Plaintext attack
14900 | Skip32 (PT = $salt, key = $pass) | Raw Cipher, Known-Plaintext attack
11900 | PBKDF2-HMAC-MD5 | Generic KDF
12000 | PBKDF2-HMAC-SHA1 | Generic KDF
10900 | PBKDF2-HMAC-SHA256 | Generic KDF
12100 | PBKDF2-HMAC-SHA512 | Generic KDF
8900 | scrypt | Generic KDF
400 | phpass | Generic KDF
16900 | Ansible Vault | Generic KDF
12001 | Atlassian (PBKDF2-HMAC-SHA1) | Generic KDF
20200 | Python passlib pbkdf2-sha512 | Generic KDF
20300 | Python passlib pbkdf2-sha256 | Generic KDF
20400 | Python passlib pbkdf2-sha1 | Generic KDF
16100 | TACACS+ | Network Protocols
11400 | SIP digest authentication (MD5) | Network Protocols
5300 | IKE-PSK MD5 | Network Protocols
5400 | IKE-PSK SHA1 | Network Protocols
23200 | XMPP SCRAM PBKDF2-SHA1 | Network Protocols
2500 | WPA-EAPOL-PBKDF2 | Network Protocols
2501 | WPA-EAPOL-PMK | Network Protocols
22000 | WPA-PBKDF2-PMKID+EAPOL | Network Protocols
22001 | WPA-PMK-PMKID+EAPOL | Network Protocols
16800 | WPA-PMKID-PBKDF2 | Network Protocols
16801 | WPA-PMKID-PMK | Network Protocols
7300 | IPMI2 RAKP HMAC-SHA1 | Network Protocols
10200 | CRAM-MD5 | Network Protocols
4800 | iSCSI CHAP authentication, MD5(CHAP) | Network Protocols
16500 | JWT (JSON Web Token) | Network Protocols
22600 | Telegram Desktop App Passcode (PBKDF2-HMAC-SHA1) | Network Protocols
22301 | Telegram Mobile App Passcode (SHA256) | Network Protocols
7500 | Kerberos 5, etype 23, AS-REQ Pre-Auth | Network Protocols
13100 | Kerberos 5, etype 23, TGS-REP | Network Protocols
18200 | Kerberos 5, etype 23, AS-REP | Network Protocols
19600 | Kerberos 5, etype 17, TGS-REP | Network Protocols
19700 | Kerberos 5, etype 18, TGS-REP | Network Protocols
19800 | Kerberos 5, etype 17, Pre-Auth | Network Protocols
19900 | Kerberos 5, etype 18, Pre-Auth | Network Protocols
5500 | NetNTLMv1 / NetNTLMv1+ESS | Network Protocols
5600 | NetNTLMv2 | Network Protocols
23 | Skype | Network Protocols
11100 | PostgreSQL CRAM (MD5) | Network Protocols
11200 | MySQL CRAM (SHA1) | Network Protocols
8500 | RACF | Operating System
6300 | AIX {smd5} | Operating System
Página 26 de 45
6700 | AIX {ssha1} | Operating System
6400 | AIX {ssha256} | Operating System
6500 | AIX {ssha512} | Operating System
3000 | LM | Operating System
19000 | QNX /etc/shadow (MD5) | Operating System
19100 | QNX /etc/shadow (SHA256) | Operating System
19200 | QNX /etc/shadow (SHA512) | Operating System
15300 | DPAPI masterkey file v1 | Operating System
15900 | DPAPI masterkey file v2 | Operating System
7200 | GRUB 2 | Operating System
12800 | MS-AzureSync PBKDF2-HMAC-SHA256 | Operating System
12400 | BSDi Crypt, Extended DES | Operating System
1000 | NTLM | Operating System
122 | macOS v10.4, macOS v10.5, MacOS v10.6 | Operating System
1722 | macOS v10.7 | Operating System
7100 | macOS v10.8+ (PBKDF2-SHA512) | Operating System
9900 | Radmin2 | Operating System
5800 | Samsung Android Password/PIN | Operating System
3200 | bcrypt $2*$, Blowfish (Unix) | Operating System
500 | md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) | Operating System
1500 | descrypt, DES (Unix), Traditional DES | Operating System
7400 | sha256crypt $5$, SHA256 (Unix) | Operating System
1800 | sha512crypt $6$, SHA512 (Unix) | Operating System
13800 | Windows Phone 8+ PIN/password | Operating System
2410 | Cisco-ASA MD5 | Operating System
9200 | Cisco-IOS $8$ (PBKDF2-SHA256) | Operating System
9300 | Cisco-IOS $9$ (scrypt) | Operating System
5700 | Cisco-IOS type 4 (SHA256) | Operating System
2400 | Cisco-PIX MD5 | Operating System
8100 | Citrix NetScaler (SHA1) | Operating System
22200 | Citrix NetScaler (SHA512) | Operating System
1100 | Domain Cached Credentials (DCC), MS Cache | Operating System
2100 | Domain Cached Credentials 2 (DCC2), MS Cache 2 | Operating System
7000 | FortiGate (FortiOS) | Operating System
125 | ArubaOS | Operating System
501 | Juniper IVE | Operating System
22 | Juniper NetScreen/SSG (ScreenOS) | Operating System
15100 | Juniper/NetBSD sha1crypt | Operating System
131 | MSSQL (2000) | Database Server
132 | MSSQL (2005) | Database Server
1731 | MSSQL (2012, 2014) | Database Server
12 | PostgreSQL | Database Server
3100 | Oracle H: Type (Oracle 7+) | Database Server
112 | Oracle S: Type (Oracle 11+) | Database Server
12300 | Oracle T: Type (Oracle 12+) | Database Server
7401 | MySQL $A$ (sha256crypt) | Database Server
200 | MySQL323 | Database Server
300 | MySQL4.1/MySQL5 | Database Server
8000 | Sybase ASE | Database Server
1421 | hMailServer | FTP, HTTP, SMTP, LDAP Server
8300 | DNSSEC (NSEC3) | FTP, HTTP, SMTP, LDAP Server
16400 | CRAM-MD5 Dovecot | FTP, HTTP, SMTP, LDAP Server
1411 | SSHA-256(Base64), LDAP {SSHA256} | FTP, HTTP, SMTP, LDAP Server
1711 | SSHA-512(Base64), LDAP {SSHA512} | FTP, HTTP, SMTP, LDAP Server
10901 | RedHat 389-DS LDAP (PBKDF2-HMAC-SHA256) | FTP, HTTP, SMTP, LDAP Server
15000 | FileZilla Server >= 0.9.55 | FTP, HTTP, SMTP, LDAP Server
12600 | ColdFusion 10+ | FTP, HTTP, SMTP, LDAP Server
1600 | Apache $apr1$ MD5, md5apr1, MD5 (APR) | FTP, HTTP, SMTP, LDAP Server
Página 27 de 45
141 | Episerver 6.x < .NET 4 | FTP, HTTP, SMTP, LDAP Server
1441 | Episerver 6.x >= .NET 4 | FTP, HTTP, SMTP, LDAP Server
101 | nsldap, SHA-1(Base64), Netscape LDAP SHA | FTP, HTTP, SMTP, LDAP Server
111 | nsldaps, SSHA-1(Base64), Netscape LDAP SSHA | FTP, HTTP, SMTP, LDAP Server
7700 | SAP CODVN B (BCODE) | Enterprise Application Software (EAS)
7701 | SAP CODVN B (BCODE) from RFC_READ_TABLE | Enterprise Application Software (EAS)
7800 | SAP CODVN F/G (PASSCODE) | Enterprise Application Software (EAS)
7801 | SAP CODVN F/G (PASSCODE) from RFC_READ_TABLE | Enterprise Application Software (EAS)
10300 | SAP CODVN H (PWDSALTEDHASH) iSSHA-1 | Enterprise Application Software (EAS)
133 | PeopleSoft | Enterprise Application Software (EAS)
13500 | PeopleSoft PS_TOKEN | Enterprise Application Software (EAS)
21500 | SolarWinds Orion | Enterprise Application Software (EAS)
8600 | Lotus Notes/Domino 5 | Enterprise Application Software (EAS)
8700 | Lotus Notes/Domino 6 | Enterprise Application Software (EAS)
9100 | Lotus Notes/Domino 8 | Enterprise Application Software (EAS)
20600 | Oracle Transportation Management (SHA256) | Enterprise Application Software (EAS)
4711 | Huawei sha1(md5($pass).$salt) | Enterprise Application Software (EAS)
20711 | AuthMe sha256 | Enterprise Application Software (EAS)
12200 | eCryptfs | Full-Disk Encryption (FDE)
22400 | AES Crypt (SHA256) | Full-Disk Encryption (FDE)
14600 | LUKS | Full-Disk Encryption (FDE)
13711 | VeraCrypt RIPEMD160 + XTS 512 bit | Full-Disk Encryption (FDE)
13712 | VeraCrypt RIPEMD160 + XTS 1024 bit | Full-Disk Encryption (FDE)
13713 | VeraCrypt RIPEMD160 + XTS 1536 bit | Full-Disk Encryption (FDE)
13741 | VeraCrypt RIPEMD160 + XTS 512 bit + boot-mode | Full-Disk Encryption (FDE)
13742 | VeraCrypt RIPEMD160 + XTS 1024 bit + boot-mode | Full-Disk Encryption (FDE)
13743 | VeraCrypt RIPEMD160 + XTS 1536 bit + boot-mode | Full-Disk Encryption (FDE)
13751 | VeraCrypt SHA256 + XTS 512 bit | Full-Disk Encryption (FDE)
13752 | VeraCrypt SHA256 + XTS 1024 bit | Full-Disk Encryption (FDE)
13753 | VeraCrypt SHA256 + XTS 1536 bit | Full-Disk Encryption (FDE)
13761 | VeraCrypt SHA256 + XTS 512 bit + boot-mode | Full-Disk Encryption (FDE)
13762 | VeraCrypt SHA256 + XTS 1024 bit + boot-mode | Full-Disk Encryption (FDE)
13763 | VeraCrypt SHA256 + XTS 1536 bit + boot-mode | Full-Disk Encryption (FDE)
13721 | VeraCrypt SHA512 + XTS 512 bit | Full-Disk Encryption (FDE)
13722 | VeraCrypt SHA512 + XTS 1024 bit | Full-Disk Encryption (FDE)
13723 | VeraCrypt SHA512 + XTS 1536 bit | Full-Disk Encryption (FDE)
13771 | VeraCrypt Streebog-512 + XTS 512 bit | Full-Disk Encryption (FDE)
13772 | VeraCrypt Streebog-512 + XTS 1024 bit | Full-Disk Encryption (FDE)
13773 | VeraCrypt Streebog-512 + XTS 1536 bit | Full-Disk Encryption (FDE)
13731 | VeraCrypt Whirlpool + XTS 512 bit | Full-Disk Encryption (FDE)
13732 | VeraCrypt Whirlpool + XTS 1024 bit | Full-Disk Encryption (FDE)
13733 | VeraCrypt Whirlpool + XTS 1536 bit | Full-Disk Encryption (FDE)
16700 | FileVault 2 | Full-Disk Encryption (FDE)
20011 | DiskCryptor SHA512 + XTS 512 bit | Full-Disk Encryption (FDE)
20012 | DiskCryptor SHA512 + XTS 1024 bit | Full-Disk Encryption (FDE)
20013 | DiskCryptor SHA512 + XTS 1536 bit | Full-Disk Encryption (FDE)
22100 | BitLocker | Full-Disk Encryption (FDE)
12900 | Android FDE (Samsung DEK) | Full-Disk Encryption (FDE)
8800 | Android FDE <= 4.3 | Full-Disk Encryption (FDE)
18300 | Apple File System (APFS) | Full-Disk Encryption (FDE)
6211 | TrueCrypt RIPEMD160 + XTS 512 bit | Full-Disk Encryption (FDE)
6212 | TrueCrypt RIPEMD160 + XTS 1024 bit | Full-Disk Encryption (FDE)
6213 | TrueCrypt RIPEMD160 + XTS 1536 bit | Full-Disk Encryption (FDE)
6241 | TrueCrypt RIPEMD160 + XTS 512 bit + boot-mode | Full-Disk Encryption (FDE)
6242 | TrueCrypt RIPEMD160 + XTS 1024 bit + boot-mode | Full-Disk Encryption (FDE)
6243 | TrueCrypt RIPEMD160 + XTS 1536 bit + boot-mode | Full-Disk Encryption (FDE)
6221 | TrueCrypt SHA512 + XTS 512 bit | Full-Disk Encryption (FDE)
6222 | TrueCrypt SHA512 + XTS 1024 bit | Full-Disk Encryption (FDE)
Página 28 de 45
6223 | TrueCrypt SHA512 + XTS 1536 bit | Full-Disk Encryption (FDE)
6231 | TrueCrypt Whirlpool + XTS 512 bit | Full-Disk Encryption (FDE)
6232 | TrueCrypt Whirlpool + XTS 1024 bit | Full-Disk Encryption (FDE)
6233 | TrueCrypt Whirlpool + XTS 1536 bit | Full-Disk Encryption (FDE)
10400 | PDF 1.1 - 1.3 (Acrobat 2 - 4) | Documents
10410 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #1 | Documents
10420 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #2 | Documents
10500 | PDF 1.4 - 1.6 (Acrobat 5 - 8) | Documents
10600 | PDF 1.7 Level 3 (Acrobat 9) | Documents
10700 | PDF 1.7 Level 8 (Acrobat 10 - 11) | Documents
9400 | MS Office 2007 | Documents
9500 | MS Office 2010 | Documents
9600 | MS Office 2013 | Documents
9700 | MS Office <= 2003 $0/$1, MD5 + RC4 | Documents
9710 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #1 | Documents
9720 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #2 | Documents
9800 | MS Office <= 2003 $3/$4, SHA1 + RC4 | Documents
9810 | MS Office <= 2003 $3, SHA1 + RC4, collider #1 | Documents
9820 | MS Office <= 2003 $3, SHA1 + RC4, collider #2 | Documents
18400 | Open Document Format (ODF) 1.2 (SHA-256, AES) | Documents
18600 | Open Document Format (ODF) 1.1 (SHA-1, Blowfish) | Documents
16200 | Apple Secure Notes | Documents
15500 | JKS Java Key Store Private Keys (SHA1) | Password Managers
6600 | 1Password, agilekeychain | Password Managers
8200 | 1Password, cloudkeychain | Password Managers
9000 | Password Safe v2 | Password Managers
5200 | Password Safe v3 | Password Managers
6800 | LastPass + LastPass sniffed | Password Managers
13400 | KeePass 1 (AES/Twofish) and KeePass 2 (AES) | Password Managers
11300 | Bitcoin/Litecoin wallet.dat | Password Managers
16600 | Electrum Wallet (Salt-Type 1-3) | Password Managers
21700 | Electrum Wallet (Salt-Type 4) | Password Managers
21800 | Electrum Wallet (Salt-Type 5) | Password Managers
12700 | Blockchain, My Wallet | Password Managers
15200 | Blockchain, My Wallet, V2 | Password Managers
18800 | Blockchain, My Wallet, Second Password (SHA256) | Password Managers
23100 | Apple Keychain | Password Managers
16300 | Ethereum Pre-Sale Wallet, PBKDF2-HMAC-SHA256 | Password Managers
15600 | Ethereum Wallet, PBKDF2-HMAC-SHA256 | Password Managers
15700 | Ethereum Wallet, SCRYPT | Password Managers
22500 | MultiBit Classic .key (MD5) | Password Managers
22700 | MultiBit HD (scrypt) | Password Managers
11600 | 7-Zip | Archives
12500 | RAR3-hp | Archives
13000 | RAR5 | Archives
17200 | PKZIP (Compressed) | Archives
17220 | PKZIP (Compressed Multi-File) | Archives
17225 | PKZIP (Mixed Multi-File) | Archives
17230 | PKZIP (Mixed Multi-File Checksum-Only) | Archives
17210 | PKZIP (Uncompressed) | Archives
20500 | PKZIP Master Key | Archives
20510 | PKZIP Master Key (6 byte optimization) | Archives
14700 | iTunes backup < 10.0 | Archives
14800 | iTunes backup >= 10.0 | Archives
23001 | SecureZIP AES-128 | Archives
23002 | SecureZIP AES-192 | Archives
23003 | SecureZIP AES-256 | Archives
13600 | WinZip | Archives
Página 29 de 45
18900 | Android Backup | Archives
13200 | AxCrypt | Archives
13300 | AxCrypt in-memory SHA1 | Archives
8400 | WBB3 (Woltlab Burning Board) | Forums, CMS, E-Commerce
2611 | vBulletin < v3.8.5 | Forums, CMS, E-Commerce
2711 | vBulletin >= v3.8.5 | Forums, CMS, E-Commerce
2612 | PHPS | Forums, CMS, E-Commerce
121 | SMF (Simple Machines Forum) > v1.1 | Forums, CMS, E-Commerce
3711 | MediaWiki B type | Forums, CMS, E-Commerce
4521 | Redmine | Forums, CMS, E-Commerce
11 | Joomla < 2.5.18 | Forums, CMS, E-Commerce
13900 | OpenCart | Forums, CMS, E-Commerce
11000 | PrestaShop | Forums, CMS, E-Commerce
16000 | Tripcode | Forums, CMS, E-Commerce
7900 | Drupal7 | Forums, CMS, E-Commerce
21 | osCommerce, xt:Commerce | Forums, CMS, E-Commerce
4522 | PunBB | Forums, CMS, E-Commerce
2811 | MyBB 1.2+, IPB2+ (Invision Power Board) | Forums, CMS, E-Commerce
18100 | TOTP (HMAC-SHA1) | One-Time Passwords
2000 | STDOUT | Plaintext
99999 | Plaintext | Plaintext
21600 | Web2py pbkdf2-sha512 | Framework
10000 | Django (PBKDF2-SHA256) | Framework
124 | Django (SHA-1) | Framework
- [ Brain Client Features ] -
# | Features
===+========
1 | Send hashed passwords
2 | Send attack positions
3 | Send hashed passwords and attack positions
- [ Outfile Formats ] -
# | Format
===+========
1 | hash[:salt]
2 | plain
3 | hex_plain
4 | crack_pos
5 | timestamp absolute
6 | timestamp relative
- [ Rule Debugging Modes ] -
# | Format
===+========
1 | Finding-Rule
2 | Original-Word
3 | Original-Word:Finding-Rule
4 | Original-Word:Finding-Rule:Processed-Word
- [ Attack Modes ] -
# | Mode
===+======
0 | Straight
Página 30 de 45
1 | Combination
3 | Brute-force
6 | Hybrid Wordlist + Mask
7 | Hybrid Mask + Wordlist
- [ Built-in Charsets ] -
? | Charset
===+=========
l | abcdefghijklmnopqrstuvwxyz
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
d | 0123456789
h | 0123456789abcdef
H | 0123456789ABCDEF
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
a | ?l?u?d?s
b | 0x00 - 0xff
- [ OpenCL Device Types ] -
# | Device Type
===+=============
1 | CPU
2 | GPU
3 | FPGA, DSP, Co-Processor
- [ Workload Profiles ] -
# | Performance | Runtime | Power Consumption | Desktop Impact
===+=============+=========+===================+=================
1 | Low | 2 ms | Low | Minimal
2 | Default | 12 ms | Economic | Noticeable
3 | High | 96 ms | High | Unresponsive
4 | Nightmare | 480 ms | Insane | Headless
- [ Basic Examples ] -
Attack- | Hash- |
Mode | Type | Example command
==================+=======+==================================================================
Wordlist | $P$ | hashcat -a 0 -m 400 example400.hash example.dict
Wordlist + Rules | MD5 | hashcat -a 0 -m 0 example0.hash example.dict -r rules/best64.rule
Brute-Force | MD5 | hashcat -a 3 -m 0 example0.hash ?a?a?a?a?a?a
Combinator | MD5 | hashcat -a 1 -m 0 example0.hash example.dict example.dict
Página 31 de 45
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:
EJEMPLO 1
Decodificar el siguiente hash de la lista de ejemplos:
https://hashcat.net/wiki/doku.php?id=example_hashes
Es importante analizar el hash y utilizar el modo adecuado.
Usaremos el caso:
Hash-mode: 0
Hash: 8743b52063cd84097a65d1633f5c74f5
Puede crear el archivo con el hash de la siguiente manera:
# echo “8743b52063cd84097a65d1633f5c74f5” > crack1.hash
Previamente descargamos el diicionario “rockyou2021.txt” desde internet. Si no
lo tiene disponible puede utilizar otros diccionarios que tenga a la mano:
# find / -name wordlists
/usr/bin/wordlists
/usr/lib/python3/dist-packages/theHarvester/wordlists
/usr/share/metasploit-framework/data/wordlists
/usr/share/doc/wordlists
/usr/share/legion/wordlists
/usr/share/wordlists
/usr/share/amass/wordlists
/usr/share/fern-wifi-cracker/extras/wordlists
/usr/share/dirbuster/wordlists
/usr/share/dirb/wordlists
/etc/theHarvester/wordlists
Ahora está en condiciones de lanzar el ataque:
# hashcat -m 0 -a 0 -o cracked.txt crack1.hash
/root/RockYou2021/rockyou2021.txt
Al finalizar la carga de hashes indica algunos parámetros:
Dictionary cache built:
* Filename..: /root/RockYou2021/rockyou2021.txt
* Passwords.: 8459060239
* Bytes.....: 98378212907
* Keyspace..: 8459060239
* Runtime...: 27 mins, 43 secs
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
Si pedimos un status [s] indica lo siguiente:
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit => s
Página 32 de 45
Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: 8743b52063cd84097a65d1633f5c74f5
Time.Started.....: Fri Nov 26 16:24:11 2021 (3 mins, 13 secs)
Time.Estimated...: Fri Nov 26 17:03:23 2021 (35 mins, 59 secs)
Guess.Base.......: File (/root/RockYou2021/rockyou2021.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 3593.3 kH/s (0.46ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 0/1 (0.00%) Digests
Progress.........: 699244544/8459060239 (8.27%)
Rejected.........: 0/699244544 (0.00%)
Restore.Point....: 699244544/8459060239 (8.27%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: 240466leila -> 240472senya
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
Al finalizar el proceso:
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 8743b52063cd84097a65d1633f5c74f5
Time.Started.....: Fri Nov 26 16:24:11 2021 (23 mins, 31 secs)
Time.Estimated...: Fri Nov 26 16:47:42 2021 (0 secs)
Guess.Base.......: File (/root/RockYou2021/rockyou2021.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 3957.1 kH/s (0.40ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 5542395904/8459060239 (65.52%)
Rejected.........: 0/5542395904 (0.00%)
Restore.Point....: 5542387712/8459060239 (65.52%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: hashbrownie024 -> hasheem3393
Started: Fri Nov 26 15:55:53 2021
Stopped: Fri Nov 26 16:47:43 2021
(les destaco esto para que tengan noción de los tiempos involucrados)
En el archivo “cracked.txt” queda registrada la contraseña asociada al hash que
queríamos crackear:
# cat cracked.txt
8743b52063cd84097a65d1633f5c74f5:hashcat
En este caso la contraseña es “hashcat”.
Página 33 de 45
A continuación algunas imágenes del comando en acción:
Página 34 de 45
Al comenzar el proceso de búsqueda se activan multiples instancias de hashcat para trabajar
utilizando todo el poder de cómputo disponible:
Página 35 de 45
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, cryptojacking17, entre otras acciones delictivas posibles.
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.
17 https://www.eset.com/es/caracteristicas/cryptojacking/
Página 36 de 45
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 PowerShell18 (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 [email protected]
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.
18 https://devblogs.microsoft.com/scripting/table-of-basic-powershell-commands/
Página 37 de 45
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:
Página 38 de 45
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
Página 39 de 45
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
Página 40 de 45
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.
Página 41 de 45
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.
Página 42 de 45
“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!'); }
Página 43 de 45
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;
Página 44 de 45
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"
Página 45 de 45
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"'