Windows
Última actualización
Última actualización
En esta tarea, asumimos que tiene acceso a cmd
un host de Microsoft Windows. Es posible que haya obtenido este acceso explotando una vulnerabilidad y obteniendo un shell o un shell inverso. Es posible que también haya instalado una puerta trasera o haya configurado un servidor SSH en un sistema que aprovechó. En todos los casos, es necesario cmd
ejecutar los siguientes comandos.
En esta tarea, nos centramos en enumerar un host de MS Windows. Para enumerar MS Active Directory, le recomendamos que consulte la sala . Si está interesado en una escalada de privilegios en un host de MS Windows, le recomendamos la sala
Le recomendamos que haga clic en " Iniciar AttackBox " y " Iniciar máquina " para que pueda experimentar y responder las preguntas al final de esta tarea.
Un comando que puede darnos información detallada sobre el sistema, como su número de compilación y parches instalados, sería systeminfo
. En el siguiente ejemplo, podemos ver qué revisiones se han instalado.
Puede verificar las actualizaciones instaladas usando wmic qfe get Caption,Description
. Esta información le dará una idea de la rapidez con la que se parchean y actualizan los sistemas.
Puede verificar los servicios de Windows instalados e iniciados usando net start
. Espere obtener una lista larga; el resultado a continuación ha sido recortado.
Si solo está interesado en las aplicaciones instaladas, puede emitir wmic product get name,version,vendor
. Si ejecuta este comando en la máquina virtual adjunta, obtendrá algo similar al siguiente resultado.
Para saber quién eres, puedes correr whoami
; además, para saber de qué eres capaz, es decir, tus privilegios, puedes utilizar whoami /priv
. Se muestra un ejemplo en la salida del terminal a continuación.
Además, puedes utilizarlo whoami /groups
para saber a qué grupos perteneces. La salida del terminal a continuación muestra que este usuario pertenece, NT AUTHORITY\Local account and member of Administrators group
entre otros grupos.
Puede ver los usuarios ejecutando net user
.
Puede descubrir los grupos disponibles net group
si el sistema es un controlador de dominio de Windows o net localgroup
no, como se muestra en la terminal a continuación.
Puede enumerar los usuarios que pertenecen al grupo de administradores locales usando el comando net localgroup administrators
.
Úselo net accounts
para ver la configuración local en una máquina; además, puedes utilizarlo net accounts /domain
si la máquina pertenece a un dominio. Este comando ayuda a conocer la política de contraseñas, como la longitud mínima de la contraseña, la antigüedad máxima de la contraseña y la duración del bloqueo.
Puede utilizar el ipconfig
comando para conocer la configuración de red de su sistema. Si desea conocer todas las configuraciones relacionadas con la red, puede usar ipconfig /all
. La salida del terminal a continuación muestra la salida cuando se usa ipconfig
. Por ejemplo, podríamos haberlo utilizado ipconfig /all
si quisiéramos aprender los servidores DNS.
En MS Windows, podemos utilizarlo netstat
para obtener información diversa, como en qué puertos está escuchando el sistema, qué conexiones están activas y quién las está usando. En este ejemplo, utilizamos las opciones -a
para mostrar todos los puertos de escucha y conexiones activas. Nos -b
permite encontrar el binario involucrado en la conexión, mientras que -n
se utiliza para evitar resolver direcciones IP y números de puerto. Finalmente, -o
muestre el ID del proceso (PID).
En el resultado parcial que se muestra a continuación, podemos ver que netstat -abno
el servidor está escuchando en los puertos TCP 22, 135, 445 y 3389. Los procesos sshd.exe
, RpcSs
y TermService
están en los puertos 22
, 135
y 3389
, respectivamente. Además, podemos ver dos conexiones establecidas con el servidor SSH como indica el estado ESTABLISHED
.
Podría pensar que puede obtener un resultado idéntico escaneando el puerto del sistema de destino; sin embargo, esto es inexacto por dos razones. Es posible que un firewall esté impidiendo que el host de escaneo llegue a puertos de red específicos. Además, el escaneo de puertos de un sistema genera una cantidad considerable de tráfico, a diferencia de netstat
, que no genera ruido.
Finalmente, vale la pena mencionar que el uso arp -a
le ayuda a descubrir otros sistemas en la misma LAN que se comunicaron recientemente con su sistema. ARP significa Protocolo de resolución de direcciones; arp -a
muestra las entradas ARP actuales, es decir, las direcciones físicas de los sistemas en la misma LAN que se comunicaron con su sistema. A continuación se muestra un resultado de ejemplo. Esto indica que estas direcciones IP se han comunicado de alguna manera con nuestro sistema; la comunicación puede ser un intento de conexión o incluso un simple ping. Tenga en cuenta que 10.10.255.255
no representa un sistema ya que es la dirección de transmisión de subred.
Mientras cubrimos la enumeración, es una buena idea tocar DNS, SMB y SNMP.
Server Message Block (SMB) es un protocolo de comunicación que proporciona acceso compartido a archivos e impresoras. Podemos comprobar las carpetas compartidas usando net share
. A continuación se muestra un ejemplo del resultado. Podemos ver que C:\Internal Files
se comparte bajo el nombre Internal .
El Protocolo simple de administración de red (SNMP) fue diseñado para ayudar a recopilar información sobre diferentes dispositivos en la red. Le permite conocer varios eventos de la red, desde un servidor con un disco defectuoso hasta una impresora sin tinta. En consecuencia, SNMP puede contener una gran cantidad de información para el atacante. Una herramienta sencilla para consultar servidores relacionados con SNMP es snmpcheck
. Puede encontrarlo en AttackBox en el /opt/snmpcheck/
directorio; la sintaxis es bastante simple: /opt/snmpcheck/snmpcheck.rb 10.10.97.78 -c COMMUNITY_STRING
.
Si desea realizar la instalación snmpcheck
en su máquina Linux local, considere los siguientes comandos.
Todos estamos familiarizados con las consultas del Sistema de nombres de dominio (DNS) donde podemos buscar registros A, AAAA, CName y TXT, entre otros. Si desea repasar sus conocimientos de DNS, le sugerimos que visite la sala Si podemos obtener una “copia” de todos los registros que un servidor DNS es responsable de responder, podríamos descubrir hosts que no sabíamos que existían.
Una forma sencilla de intentar la transferencia de zona DNS es mediante el dig
comando. Si desea obtener más información sobre dig
comandos similares, le sugerimos consultar la sala . Dependiendo de la configuración del servidor DNS, la transferencia de zona DNS puede estar restringida. Si no está restringido, debería poder lograrse usando dig -t AXFR DOMAIN_NAME @DNS_SERVER
. El -t AXFR
indica que estamos solicitando una transferencia de zona, mientras que @
precede al DNS_SERVER
que queremos consultar respecto de los registros relacionados con el especificado DOMAIN_NAME
.