Este artículo lo ayuda a comprender e identificar las indicaciones de un servidor Windows® comprometido. Este es un documento de muy alto nivel, que puede usar como recurso para rastrear un problema potencial en lugar de resolver un servidor comprometido.
Tipos de compromiso
Este artículo se ocupa de dos tipos de compromiso:nivel de aplicación y sistema o nivel de raíz. Estos son bastante graves y, a menudo, requieren un sólido plan de recuperación ante desastres para mitigarlos.
Compromiso a nivel de aplicación
Un compromiso a nivel de aplicación ocurre cuando un servicio o usuario de bajo nivel se ve comprometido. Los compromisos típicos en este grupo incluyen los siguientes problemas:
- Desfiguración del sitio
- Etiquetado FTP
- Manipulación de archivos FTP
- Inyección SQL
Este tipo de compromiso podría alterar los datos en el servidor. Sin embargo, nunca logran acceso administrativo o de nivel raíz en el servidor. En estos casos, es posible que pueda identificar y proteger la vulnerabilidad. Proteger la vulnerabilidad a nivel de aplicación podría implicar eliminar el acceso de escritura de un usuario web anónimo, eliminar virus de un servidor o proteger una aplicación a través de parches disponibles. Para reparar cualquier archivo alterado, debe restaurar desde la copia de seguridad.
Compromiso administrativo, de sistema o de nivel raíz
Este tipo de compromiso tiene lugar cuando un atacante obtiene acceso administrativo al sistema y puede incluir los siguientes problemas:
- Servicio comprometido ejecutándose como un
System
,LocalService
oAdministrative
usuario - Cuenta de usuario comprometida que tiene derechos administrativos
- Acceso a través de un usuario no administrativo a una ubicación restringida a usuarios administrativos (como directorios del sistema, etc.)
- Virus encontrado en el sistema o en el directorio administrativo
- Actividad de red saliente visiblemente maliciosa
- Inyección SQL (incluye ejecución de comandos)
Importante: Cuando un atacante obtiene este nivel de acceso, no puede determinar ninguna modificación que haya ocurrido durante el curso del compromiso.
Herramientas de Windows que puede usar para buscar un compromiso
- Lista de tareas: Herramienta de línea de comandos que brinda detalles sobre procesos y servicios en el sistema
- Administrador de tareas: Herramienta gráfica que proporciona detalles sobre procesos, estadísticas de recursos y actividad de red en el sistema
- Administrador de recursos: Herramienta gráfica similar a Taskmanager pero proporcionando más detalles sobre el uso de recursos
Explore un servidor comprometido
Para explorar una posible situación de compromiso, realice las siguientes tareas, descritas en esta sección:
- Identificar el compromiso
- Revisar los procesos
- Revisar los servicios
- Revisar a los usuarios
Identificar el compromiso
La utilización inesperada y sostenida del ancho de banda es a menudo un síntoma común. Debido a que los atacantes generalmente comprometen los sistemas con la intención de ejecutar un servicio de red en ellos, es posible que haya un servicio ejecutándose en el sistema, por lo que escuchar un puerto extraño podría indicar un servidor comprometido.
-
Para revisar las conexiones de red para TCP, ejecute el siguiente comando:
NetStat -naop 'TCP'
-
Para revisar las conexiones de red para UDP, ejecute el siguiente comando:
NetStat** -naop 'UDP'
-
Para contar conexiones específicas, ejecute uno de los siguientes comandos:
NetStat** -naop 'TCP' find /c ":<port>"
Revisar los procesos
Identifique cualquier proceso sospechoso. Es probable que un servidor comprometido tenga uno o más procesos maliciosos en ejecución. A veces puede identificarlos porque contienen errores tipográficos, gramaticales o una descripción sospechosa.
-
Para enumerar los procesos que se ejecutan en el sistema, ejecute el siguiente comando:
Tasklist /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"
-
Para obtener una lista de los procesos definidos como un servicio, ejecute el siguiente comando:
Tasklist /svc
-
Para mostrar una instantánea del proceso que se está ejecutando actualmente con el mismo resultado que la lista de procesos del administrador de tareas, ejecute el siguiente comando:
Get-Process
-
Para enumerar los procesos y con qué usuario se están ejecutando, ejecute uno de los siguientes comandos:
gwmi win32_process select Name, @{l="User name";e={$_.getowner().user}}
Revisar los servicios
Busque errores tipográficos, gramaticales o descripciones sospechosas. Si un servicio parece cuestionable, examine las propiedades y dependencias. Además, determine si el archivo es ejecutable. Utilice la GUI de servicios para ver los servicios en ejecución.
-
Para enumerar los servicios en ejecución, ejecute el siguiente comando:
get-service | where-object {$_.Status -eq "Running"}
Revisar a los usuarios
Para saber si un servidor está comprometido e identificar rápidamente una mala configuración, revise las cuentas de usuario básicas.
-
Para identificar cuentas de usuario desconocidas o con nombres inusuales enumerando usuarios configurados, ejecute el siguiente comando:
net user
-
Para identificar a los usuarios desconocidos en el grupo de administradores locales enumerando los administradores configurados, ejecute el siguiente comando:
net localgroup Administrators
-
Para ver si una cuenta de invitado está habilitada y en el grupo Administradores, ejecute el siguiente comando:
net user guest
Herramientas disponibles de Microsoft Sysinternals
Para obtener más información, consulte las siguientes fuentes:
- Documentación para Sysinternals
- Enlace en vivo a las herramientas internas del sistema
- Sophos AntiRootkit
Use la pestaña Comentarios para hacer cualquier comentario o hacer preguntas. También puede iniciar una conversación con nosotros.