Obtener datos de usuario en redes Windows sin privilegios
Imagine que alguien está atacando una red corporativa de Windows. Inicialmente, un atacante tiene pocos privilegios en el dominio o no los tiene en absoluto. Por lo tanto, buscará cuentas y servicios sin privilegios elevados, es decir, no en nombre de un administrador de dominio o local administrador Hablaremos sobre cómo se realiza el reconocimiento en el entorno de Active Directory.
Los ejemplos discutidos en este artículo se aplican a las siguientes versiones de Windows: 7, 8, 10, Server 2008, Server 2012 y Server 2016; otros no revisaron. Además, para que los ejemplos funcionen, el sistema debe tener PowerShell con los módulos especificados.
Toda la información se proporciona solo con fines informativos. Ni los editores ni el autor son responsables de los posibles daños causados por la información de este artículo.
Escaneo SPN
Cuando los privilegios necesitan ser elevados, los atacantes usualmente usan cuentas de servicio, ya que estas cuentas tienen más derechos, pero no existe una política estricta para cambiar la contraseña después de un período de tiempo específico. Es decir, si los compromete, puede pasar desapercibido durante mucho tiempo.
Nombres principales de servicio (SPN): identificadores de servicios que se ejecutan en una máquina de dominio. Sin conocerlos, no podrá buscar servicios que usen autenticación Kerberos. SPN es único dentro del bosque. Cuando se agrega una computadora a un dominio, el SPN del host se indica automáticamente en su cuenta, lo que permite que los servicios en esta máquina se inicien desde cuentas locales, como el Sistema local y el Servicio de red.
El escaneo SPN es lo primero que suele hacer un atacante o un pentester cuando busca servicios en un entorno de Active Directory. La principal ventaja de este método en comparación con el escaneo de puertos de red es que no requiere interacción con cada nodo de red para verificar los puertos de servicio. El escaneo SPN le permite descubrir servicios utilizando consultas LDAP a un controlador de dominio. Dado que las solicitudes SPN son un comportamiento de autenticación Kerberos normal, este método de escaneo es muy difícil de detectar, incluso casi irreal, a diferencia del escaneo de puertos.
Puede ejecutar el análisis SPN con un script de PowerShell.
El resultado del script para servidores Microsoft SQL
Quiero compartir con ustedes otra secuencia de comandos interesante que les mostrará todos los SPN para todos los usuarios y todas las computadoras.
$search = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$search.filter = "(servicePrincipalName=*)"
$results = $search.Findall()
foreach($result in $results){
$userEntry = $result.GetDirectoryEntry()
Write-host "Object Name = " $userEntry.name -backgroundcolor "yellow" -foregroundcolor "black"
Write-host "DN = " $userEntry.distinguishedName
Write-host "Object Cat. = " $userEntry.objectCategory
Write-host "servicePrincipalNames"
$i=1
foreach($SPN in $userEntry.servicePrincipalName)
{
Write-host "SPN(" $i ") = " $SPN $i+=1
}
Write-host ""
}
Resultado del script – Lista SPN
Recogida de datos
Recursos compartidos
Los entornos de Active Directory a menudo usan carpetas de red y servidores de archivos. Estos comandos muestran una lista de recursos compartidos en el host local, una lista de computadoras de red y una lista de bolas en la computadora remota:
> net share
> net view
> net view COMPUTER_NAME /all
Pero, ¿qué pasa si la política de seguridad prohíbe el uso de comandos de red? En este caso, seremos rescatados wmic
. La lista de recursos compartidos en el host local y la lista de recursos compartidos en la computadora remota se pueden ver usando los comandos
> wmic share get /format:list
> wmic /node: COMPUTER_NAME share get
Una herramienta útil para encontrar datos es PowerView. Detecta automáticamente los recursos de red y los servidores de archivos utilizando los comandos Find-DomainShare
y Get-DomainFileServer
.
Por cierto, PowerView está integrado en el marco de PowerShell Empire y está representado por dos módulos:
situational_awareness/network/powerview/share_finder
;situational_awareness/network/powerview/get_fileserver
.