Descripción del Programa
Este proyecto es una herramienta para escanear configuraciones de Remote Desktop Protocol (RDP) en máquinas Windows que tienen habilitada la Autenticación a Nivel de Red (NLA, por sus siglas en inglés).
¿Qué hace el programa?
- Escaneo de Configuración RDP con NLA: Este escáner revisa las configuraciones de RDP para determinar si la NLA está habilitada o no.
- Detección de Configuraciones Vulnerables: Identifica configuraciones de RDP que pueden ser vulnerables o incorrectas, potencialmente permitiendo accesos no autorizados.
- Cierre de Conexiones RDP: Tiene la capacidad de cerrar conexiones RDP si se detectan configuraciones que no cumplen con los estándares de seguridad, específicamente si la NLA no está configurada correctamente.
Uso Principal
- Administradores de Sistemas: Ayuda a los administradores de sistemas a asegurarse de que las configuraciones de RDP en sus redes sean seguras.
- Auditorías de Seguridad: Puede ser utilizado durante auditorías de seguridad para verificar la configuración de RDP y detectar posibles puntos débiles.
Funcionalidades Clave
- Escaneo Rápido y Eficiente: Permite escanear rápidamente múltiples hosts para verificar su configuración de NLA.
- Automatización del Proceso de Cierre: Automatiza el cierre de conexiones inseguras, lo cual ayuda a mantener la seguridad de la red sin intervención manual constante.
Cómo Usarlo
- Clonar el Repositorio: Clonar el repositorio desde GitHub a tu máquina local.
- Ejecutar el Escáner: Ejecutar el script proporcionado para iniciar el escaneo de las configuraciones de RDP en la red.
- Analizar Resultados: Revisar los resultados del escaneo para identificar configuraciones inseguras.
- Cerrar Conexiones Inseguras: Utilizar las funciones del script para cerrar automáticamente las conexiones inseguras detectadas.
Este programa es una herramienta valiosa para mejorar la seguridad en entornos que utilizan RDP, asegurando que la NLA esté correctamente configurada para proteger contra accesos no autorizados.
link del programa /RDP-NLA-Closing-Scanner
Explicación Paso a Paso del Programa
El archivo que has subido parece ser parte del código del programa. A continuación te explico cómo funciona cada parte del script:
- Importación de Librerías:
import os
import signal
import socket
import subprocess
import cv2
import psutil
import pyautogui
import time
Estas librerías se utilizan para diversas tareas, como la manipulación de imágenes, manejo de sockets, automatización de la GUI, y gestión de procesos del sistema.
- Captura de Pantalla:
def capture_screenshot():
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')
Esta función captura la pantalla actual y guarda la imagen como screenshot.png
.
- Búsqueda de una Imagen en la Pantalla:
def find_image_on_screen(target_image_path, threshold=0.8):
capture_screenshot()
screenshot = cv2.imread('screenshot.png')
target_image = cv2.imread(target_image_path)
screenshot_gray = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY)
target_image_gray = cv2.cvtColor(target_image, cv2.COLOR_BGR2GRAY)
result = cv2.matchTemplate(screenshot_gray, target_image_gray, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
if max_val >= threshold:
target_w, target_h = target_image_gray.shape[::-1]
center_x = max_loc[0] + target_w // 2
center_y = max_loc[1] + target_h // 2
return center_x, center_y
else:
return None
Esta función encuentra la posición de una imagen objetivo en la pantalla utilizando la técnica de template matching.
- Clic en una Posición Específica:
def click_position(position):
x, y = position
pyautogui.moveTo(x, y)
pyautogui.click()
Esta función mueve el cursor a una posición específica y realiza un clic.
- Verificación de Puerto Abierto:
def check_port(rdpaddress, timeout=1):
host, port = rdpaddress.split(":")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
try:
sock.connect((host, int(port)))
except (socket.timeout, socket.error):
return False
finally:
sock.close()
return True
Esta función verifica si un puerto específico en una dirección RDP está abierto.
- Chequeo Automático de Configuraciones RDP:
Default = open("Default.rdp", "r", encoding="utf-8").read()
def AutoCheck():
file = open("RDPList.txt", "r", encoding="utf-8")
result = open("result.txt", "w", encoding="utf-8")
result.write("\n")
while (line := file.readline()):
rdpaddress = line[:-1]
if not check_port(rdpaddress):
print(f"Port closed for {rdpaddress}")
Esta función lee una lista de direcciones RDP desde RDPList.txt
, verifica cada una para ver si el puerto está abierto, y guarda los resultados en result.txt
.
Pasos Generales del Programa:
- Preparación:
- Importa las librerías necesarias.
- Define funciones para capturar la pantalla, encontrar imágenes en la pantalla, y realizar clics en posiciones específicas.
- Verificación de Conexiones RDP:
- Define una función para verificar si los puertos RDP están abiertos en una lista de direcciones.
- Define una función
AutoCheck
que lee una lista de direcciones RDP, verifica cada una y guarda los resultados.
- Ejecución:
- Ejecuta la función
AutoCheck
para realizar el escaneo y guardado de los resultados.
Este script está diseñado para automatizar la verificación de configuraciones de RDP y detectar configuraciones inseguras de manera eficiente.
Cómo Un Atacante Usa Este Programa Paso a Paso
- Preparación del Entorno:
- Clonación del Repositorio: El atacante clona el repositorio desde GitHub.
sh git clone https://github.com/0xCaner/RDP-NLA-Closing-Scanner.git cd RDP-NLA-Closing-Scanner
- Instalación de Dependencias: Instala las librerías necesarias usando
pip
.sh pip install -r requirements.txt
- Configuración del Escáner:
- Edición de la Lista de Direcciones RDP: El atacante edita el archivo
RDPList.txt
para incluir las direcciones IP y puertos de las máquinas que desea escanear.plaintext 192.168.1.10:3389 192.168.1.11:3389
- Ejecución del Escaneo:
- Inicia el Escaneo: El atacante ejecuta el script para iniciar el escaneo.
sh python scanner.py
- Revisión de Resultados: El atacante revisa el archivo
result.txt
para ver cuáles máquinas tienen configuraciones RDP vulnerables (puerto abierto y NLA deshabilitada).
Qué Puede Hacer el Atacante si Encuentra una Máquina Vulnerable
- Acceso Inicial:
- Conexión RDP: El atacante se conecta a la máquina usando RDP, aprovechando que la NLA está deshabilitada, lo cual le permite eludir algunos controles de autenticación.
sh mstsc /v:192.168.1.10
- Escalamiento de Privilegios:
- Exploración de la Máquina: Una vez dentro, el atacante puede explorar la máquina en busca de vulnerabilidades locales o configuraciones débiles para escalar privilegios y obtener acceso de administrador.
- Establecimiento de Persistencia:
- Creación de Usuarios Maliciosos: El atacante puede crear cuentas de usuario adicionales con permisos elevados para asegurar el acceso futuro.
sh net user maluser Password123 /add net localgroup administrators maluser /add
- Instalación de Backdoors: Puede instalar software de backdoor para mantener el acceso incluso si la vulnerabilidad RDP se corrige.
sh copy backdoor.exe C:\Windows\System32\
- Exfiltración de Datos:
- Robo de Información Sensible: El atacante puede buscar y exfiltrar información sensible como credenciales, datos personales, o archivos importantes.
sh copy C:\Users\victim\Documents\*.docx D:\exfiltrated
- Movilidad Lateral:
- Ataques en la Red: Utilizando la máquina comprometida, el atacante puede realizar ataques hacia otras máquinas en la misma red, extendiendo su control.
sh net use Z: \\192.168.1.11\sharedfolder /user:domain\user password
Peligros y Consecuencias
- Robo de Información:
- Exposición de Datos: Información sensible, confidencial o personal puede ser robada y utilizada para extorsión, fraude o venta en el mercado negro.
- Interrupción de Servicios:
- Destrucción de Datos: El atacante puede borrar archivos críticos o instalar malware destructivo, interrumpiendo operaciones.
- Despliegue de Ransomware: El atacante puede cifrar los datos de la máquina y exigir un rescate para restaurarlos.
- Daño a la Reputación:
- Pérdida de Confianza: Las víctimas pueden perder la confianza de clientes, socios y el público en general si se expone la brecha de seguridad.
- Consecuencias Legales: Puede haber implicaciones legales y regulatorias significativas, incluyendo multas y demandas.
- Control Remoto y Uso Malicioso:
- Botnets y Ataques Distribuidos: Las máquinas comprometidas pueden ser añadidas a una botnet y utilizadas para realizar ataques DDoS (Denegación de Servicio Distribuida).
- Acceso Continuo: El atacante puede mantener acceso a largo plazo, permitiéndole realizar actividades maliciosas continuas sin ser detectado.
En resumen, el uso de este programa por un atacante puede tener consecuencias devastadoras, desde el robo de datos hasta la interrupción de servicios y daños significativos a la reputación y operaciones de la víctima.
Para protegerte de ataques que explotan configuraciones inseguras de RDP y NLA, puedes seguir estas mejores prácticas de seguridad:
1. Asegura tu Configuración RDP
- Habilita la Autenticación a Nivel de Red (NLA):
Asegúrate de que NLA esté habilitada en todas las máquinas que utilizan RDP.
# Abre el editor de directivas de grupo (gpedit.msc)
# Navega a: Configuración del equipo > Plantillas administrativas > Componentes de Windows > Servicios de Escritorio remoto > Host de sesión de Escritorio remoto > Seguridad
# Activa: "Requerir autenticación de usuario para conexiones remotas mediante Autenticación a nivel de red"
- Usa Puertos No Estándar:
Cambia el puerto RDP predeterminado (3389) por uno diferente para dificultar su detección.
# Modifica el registro
regedit
# Navega a: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber
# Cambia el valor del puerto
2. Implementa Autenticación y Autorización Robustas
- Autenticación Multifactor (MFA):
Implementa MFA para añadir una capa extra de seguridad.
# Configura MFA a través de tu proveedor de servicios o utilizando herramientas como Azure MFA.
- Políticas de Contraseña Fuertes:
Asegúrate de que todas las cuentas utilizan contraseñas seguras y complejas.
# Usa herramientas como Group Policy Management para establecer políticas de contraseña.
3. Restricciones y Filtrado de Acceso
- Firewall y Listas Blancas de IP:
Configura el firewall para permitir solo conexiones desde direcciones IP específicas.
# Configura el Firewall de Windows para permitir solo direcciones IP específicas
netsh advfirewall firewall add rule name="Allow RDP from specific IP" dir=in action=allow protocol=TCP localport=3389 remoteip=<Your IP>
- Acceso VPN:
Permite el acceso RDP solo a través de una conexión VPN segura.
# Configura un servidor VPN y asegura que el acceso RDP solo esté permitido a través de la VPN.
4. Monitoreo y Respuesta a Incidentes
- Registros y Auditorías:
Activa la auditoría de accesos RDP y revisa regularmente los registros de eventos.
# Configura la auditoría de eventos
gpedit.msc
# Navega a: Configuración del equipo > Configuración de Windows > Configuración de seguridad > Directivas locales > Directiva de auditoría
# Configura la auditoría para "Iniciar sesión" y "Acceso de objeto"
- Soluciones de Monitoreo:
Utiliza soluciones de monitoreo y detección de intrusiones (IDS/IPS) para alertarte sobre accesos no autorizados.
# Implementa herramientas como Snort, Suricata o soluciones comerciales como Splunk o ArcSight.
5. Actualización y Mantenimiento
- Actualizaciones de Seguridad:
Mantén todos tus sistemas y software actualizados con los últimos parches de seguridad.
# Configura actualizaciones automáticas en Windows Update
settings -> Update & Security -> Windows Update -> Advanced options -> Enable "Automatically download updates, even over metered data connections."
- Endurecimiento del Sistema:
Sigue las guías de endurecimiento del sistema para asegurar configuraciones y reducir la superficie de ataque.
# Usa guías como las de CIS Benchmarks para endurecer tus sistemas.
Resumen
Para protegerte contra ataques que explotan configuraciones inseguras de RDP y NLA, asegúrate de:
- Habilitar NLA y cambiar el puerto predeterminado de RDP.
- Implementar autenticación multifactor y políticas de contraseña fuertes.
- Utilizar firewalls, listas blancas de IP y VPN para restringir el acceso.
- Configurar auditorías, monitoreo de eventos y soluciones de detección de intrusiones.
- Mantener tus sistemas actualizados y seguir las mejores prácticas de endurecimiento del sistema.
Aplicando estas medidas de seguridad, puedes reducir significativamente el riesgo de ser víctima de ataques RDP.