Articulos de hacking
Blog de Raj Chandel
Menu
# Hogar » Equipo Rojo » Enumeracién de Active Directory: RPCClient
Equipo Rojo
Enumeracién de Active Directory: RPCClient
Mayo 9, 2021 Por Raj Chandel
En este articulo, nos vamos a centrar en la enumeracién del Dominio a través de los canales
‘SMB y RPC. La herramienta que utilizaremos para todas las enumeraciones y
manipulaciones serd rpcclient. El articulo se centra en Red Teamers, pero Blue Teamers y
Purple Teamers también pueden usar estos comandos para probar las configuraciones de
seguridad que implementaron.
Tabla de contenido
+ Introduccién
+ Registro e informacién del servidor
+ Consulta de informacién de dominio
+ Enumeracién de usuarios de dominio
+ Enumeracién de grupos de dominio
+ Consultas de grupo
+ Consultas de usuario
+ Enumeracién de privilegios
+ Obtener informacién de contrasefia de dominio
+ Obtener informacién de contrasefia de dominio de usuario
+ Enumeracién de SID desde LSA
+ Creacién de usuario de dominio
+ Nombres de biisqueda
+ Enumeracién de grupos de alias+ Eliminar usuario de dominio
+ Net Share (enumeracién)
+ Net Share Obtener informacién
+ Enumeracién de dominios
+ Enumeracién de grupos de dominio
+ Mostrar informacién de consulta
+ Cambiar contrasefia de usuario
+ Crear grupo de dominios
+ Eliminar grupo de dominios
+ Busqueda de domi
+ Busqueda SAM
+ Busqueda sid
+ Consulta LSA
+ LSA Crear Cuenta
+ Enumeracién de privilegios LSA
+ Enumeracién de privilegios de grupo LSA
+ Enumeracién de privilegios de cuenta LSA
* Objetos de seguridad de consulta LSA
+ Conclusién
Introduccion
RPC 0 Remote Procedure Call es un servicio que ayuda a establecer y mantener la
comunicacién entre diferentes aplicaciones de Windows. El servicio RPC funciona en los
protocolos RPC que forman una comunicacién entre procesos de bajo nivel entre diferentes
aplicaciones. En esta comunicacién, el proceso secundario puede realizar solicitudes de un
proceso padre, La relacién hijo-padre aqui también se puede representar como relacién
cliente y servidor, RPC se basa en las tecnologias COM y DCOM de Microsoft. En general, el
rpcclient también se puede usar para conectarse al protocolo SMB. rpcclient es una parte de
la suite Samba en distribuciones Linux. El rpcclient se disefié para realizar tareas de
depuracién y solucién de problemas en una configuracién de Windows Samba. Durante ese
tiempo, los disefiadores del rpcclient podrian no tener ni idea de la importancia de esta
herramienta como herramienta de prueba de penetracién. Existen varios métodos para
conectarse a un servicio RPC remoto. Sin embargo, para esta demostracién en particular,
estamos utilizando rpcclient
Registro e informacion del servidor
Para comenzar la enumeracién, es necesario establecer una conexién. Esto se puede heer
proporcionando el nombre de usuario y la contrasefia seguidos de la direccién IP ded, *del ser
lor. Después de establecer la conexién, para obtener la comprensién de varios
comandos que se pueden usar, puede ejecutar la ayuda. Uno de los primeros comandos de
enumeracién que se muestran aqui es el comands srvinfo. Se puede usar en el shell rpcclient
que se generé para enumerar informacién sobre el servidor. Se puede observar que la
versién del sistema operative parece ser 10.0. Eso reduce la versién que el atacante podria
estar viendo a Windows 10, Windows Server 2016 y Windows Server 2019. Obtén més
informacién sobre las versiones del sistema operativo.
rpcclient -U Administrator%Ignite@123 192.168.1.172
Sachi seupke bee Ee CYes CL ese te)
a)
Wk s arCeerCa ly
Consulta de informacién de dominio
El siguiente comando que se puede utilizar a través de rpcclient es querydominfo. Este
comando recupera el dominio, el servidor, los usuarios del sistema y otra informacién
relevante. De la demostracién, se puede observar que el dominio que se esté enumerando es
IGNITE, Cuenta con un total de 67 usuarios. Hubo una desactivacién forzada del cierre de
sesién en el servidor y otra informacién importante.
querydominfo
eras
a ae
iar ten)
ise
Enumeracién de usuarios de dominio
Otro comando a utilizar es el enumdomusers. El nombre se deriva de la enumeracién de
usuarios de dominio. Al ejecutar esto en el shell rpcclient, extraerd los nombres de usuario
con su RID. RID es un sufijo del SID largo en formato hexadecimal. En esta demostrac’especifica, hay un montén de usuarios que incluyen Administrador, yashika, aarti, raj, Pavan,
ete.
enumdomusers
ee ee ee
ects es mr Ce Cer]
picts SCH Clstzy)
Scat amstocreta)
[Defaultaccount] rid: [0*1f7]
Tepout cy eecH tL ea]
cosmestatr |
icoraseieet
er epe STAs
sche]
Enumeracién de grupos de dominio
Dado que realizamos la enumeracién en diferentes usuarios, es justo extender esto a varios
grupos también. La informacién del grupo ayuda al atacante a planificar su camino hacia el
administrador 0 el acceso elevado. Las politicas que se aplican en un Dominio también son
dictadas por los diversos grupos que existen. Muchos grupos se crean para un servicio
especifico. Por lo tanto, también es una buena manera de enumerar qué tipo de servicios
podran estar ejecutdndose en el servidor, esto se puede hacer usando enumdomgroup. El
nombre se deriva de la enumeracién de grupos de dominios. Al ejecutar esto en el shell
rpcclient, extraerd los grupos con su RID.
enumdomgroups
Se
Be eel e LSC SMC Ee Lear a
Per un ue Cre 1]
perce a B say
aac est Eres
TUES estes Ce)
PoUrsesCHds
rs] rid: [0*209]
Peer rs] rid: [0x20a]
Veco e CT
r[Key Admins] rid
AGEL m Fs msC CLL lal
Pose mst yes)Consultas de grupo
Después de enumerar grupos, es posible extraer detalles sobre un grupo en particular de la
lista, Esta informacién incluye el nombre del grupo, la descripcién, os atributos y el némero
de miembros de ese grupo. Es posible dirigirse al grupo utilizando el RID que se extrajo
mientras se ejecuta el enumdomgroup. Para la demostracién aqui, se utilizé RID 0x200 para
encontrar que pertenece a los grupos de administradores de dominio. Este grupo constituye
7 atributos y 2 usuarios son miembros de este grupo.
querygroup @x2ee
rpcclient $> querygroup 0»200
ocr mea UGS
Pease sti
Cre Nssstis
ficou
Consultas de usuario
La capacidad de enumerar individualmente no se limita a los grupos, sino que también se
extiende a los usuarios, Para enumerar un usuario concreto de rpcclient, se debe utilizar el
comando queryuser. Cuando se proporciona el nombre de usuario, extrae informacién como
el nombre de usuario, el nombre completo, la unidad de inicio, la ruta del perfil, la descripcién,
la hora de inicio de sesién, la hora de cierre de sesi6n, la hora de configuracién de la
contrasefia, la frecuencia de cambio de contrasefia, RID, grupos, etc. En la demostracién, se
puede observar que el usuario ha almacenado sus credenciales en la Descripcién. Por lo
tanto, las credenciales se enumeraron correctamente y la cuenta se puede tomar ahora
queryuser yashikaPo eer
eta cena
in eS)
eee
Dir pri
ees
eras
Pearse
eesti
rs
aac trae
Logon Time
er
eee ae
ee meant
eee rca
Peer teats iar
rar ieee es
Peer re
Poteet eye
b_info : Pecccrrety
peewee
logon_divs:
bad_password_count: exoan00000
peeriieet eT)
Perret |
perce)
Enumeracién de privilegios
Después de los detalles del usuario y los detalles del grupo, otra informacién que puede
ayudar a un atacante que ha conservado el punto de apoyo inicial en el dominio son los
privilegios. Estos privilegios pueden ayudar al atacante a planear la elevacién de privilegios
en el dominio. Los privilegios se pueden enumerar mediante el comando enumprivs en
rpcclient. En la demostracién, se puede observar que al usuario actual se le han asignado 35
privilegios.
enumprivsce
ECL LTS}
Stance
Tineost ences
ony
0:8
easter
reer ea rt aeh
Preienras
Sian
Neuen eerni ues se pats
Poasaiioen
Sec ecretuas hee
Wataast
Pelee ent
eReLabi
enc
Seu et
teSymbol
(oxo
(ny
0x8)
:0x5)
@:9 (@x0:0%9)
cn
cn
coy)
con
ee
ees)
x15)
rr
Cr)
Byer
ereep)
x1a)
227 (0x0:
Cre
eeth)
120 (0:
Err)
1 (0x0:
axb)
(@*0:0xd)
14 (0x0: 0xe)
Er)
0x10)
0*1b)
Cis)
0x10)
PeSmCLOH
Obtener informacion de contrasefia de dominio
Para enumerar las propiedades de contrasefia en el dominio, se puede usar el comando
getdompwinfo. Esto se hace a partir de las palabras obtener informacién de contrasefia de
dominio. Esto ayudard a obtener la informacién, como el tipo de directivas de contrasefia que
ha aplicado el administrador en el dominio. Es posible enumerar la longitud minima de la
contrasefia y la aplicacién de reglas de contrasefia complejas. Si este tipo de caracteristicas
no estdn habilitadas en el dominio, entonces es posible forzar brutamente las credenciales en
el dominio.
getdompwinfo
Ericae tae ere
ErUierect (os metas eg
ees Cee
Peres meiess
creerObtener informacién de contrasefia de dominio de usuario
En el comando anterior, usamos el getdompwinfo para obtener las propiedades de
contrasefia del dominio administrado por las directivas. Pero también es posible obtener las
propiedades de contrasefia de usuarios individuales utilizando el comando getusrdompwinfo
con el RID del usuario. En la demostracién, se enumeré al usuario con rid 0x1f4 con respecto
asus propiedades de contrasefia.
getusrdompwinfo @x1f4
sg
POEs iS LARD)
Perso BT eee)
Tomeunatand
NON_CHANGE
LEAR_CHANGE
Seta
al
eras
Enumeracion de SID desde LSA
Alaprender sobre varios tipos de compromisos que se pueden realizar utilizando Mimikatz,
sabemos que el SID de un usuario es el identificador de seguridad que se puede usar para
muchos privilegios de elevacién y ataques de tickets de acufiacién, Se puede enumerar a
través de rpcclient utilizando el comando Isaenumsid. En ja demostracién, se puede observar
que Isaenumsid ha enumerado 20 SID dentro de la Autoridad de Seguridad Local o LSA.
saenumsidrpcclient $> lsaenumsid
eres
Smet eee eee)
CPpU ber ery steer Yet s
Woy re setePLy eres
Creel Yee cE TParee
io de dominio
Creacion de usuari
Si bien tiene algunos privilegios, también es posible crear un usuario dentro del dominio
utilizando el rpcclient. Se puede hacer con la ayuda de! comando createdomuser con el
nombre de usuario que desea crear como pardmetro. En la demostracién, se crea un hacker
de usuario con la ayuda de un createdomuser y luego se le proporciona una contrasefia
utilizando el comando setuserinfo2. Por fin, se puede verificar utilizando el comando
enumdomusers.
createdomuser hacker
setuserinfo2 hacker 24 Password@1
enumdomusers
ea
Lient $> setuserinf
Coss
r:{Guest] rid: [0x1f5]
Seta estHCrtis|
r:[DefaultAccount] rid:
SCLC oMeC HCL oss
ethers)
SSpeSC HC esa)
Set Hrs]
Pc eeCat ns
ae AG
r:[jeenali] rid: [0x83]Nombres de busqueda
También podemos comprobar si al usuario que hemos creado se le ha asignado un SID o no
utilizando el comando lookupnames en el rpcclient. Al igual que con el |saenumsid, fue
posible extraer el SID, pero no fue posible saber qué usuario tiene ese SID. Este problema se
resuelve utilizando nombres de busqueda, tras los cuales al proporcionar el nombre de
usuario, el SID de ese usuario en particular se puede extraer con facilidad.
lookupnames hacker
Enumeracién de grupos de alias
El siguiente comando que se puede utilizar es enumalsgroups. Enumera grupos de alias en el
dominio. El alias es un nombre alternativo que se puede utilizar para hacer referencia a un
objeto o elemento. Cuando se usa con el parémetro incorporado, muestra todos los grupos
integrados por sus nombres de alias como se muestra a continuacién.
enumalsgroups builtinrpcclient $> enunalsgroups builtin
ort sec Hrs
1]
Circo mesh Cresrs]
ea ese Cee)
Poca es SCC LLeal
Replicator] rid
Cre ess eC HC Lsrlp
Network Configuration dperators]
Tasch
Crees
] rid: [0x238
esr
ice
Certificate Service DCOM A
Remote Access S
(oem suns
roe
Eliminar usuario de dominio
La capacidad de manipular a un usuario no termina con la creacién de un usuario o el
cambio de la contrasefia de un usuario. Si se asignan los privilegios adecuados, también es
posible eliminar un usuario utilizando el rpcclient, El comando deletedomuser se utiliza para
realizar esta accién.
deletedomuser hacker
Net Share (enumeracién)
Cuando se trata de SMB, un atacante estd obligado a ser tratado con los recursos
compartidos de red en el dominio. La mayorfa de las oficinas corporativas no quieren que sus
empleados usen memorias USB u otros medios para compartir archivos y datos entre ellos.
Por lo tanto, generalmente configuran un recurso compartido de red. Hay ocasiones en las
que estas carpetas compartidas pueden contener informacién confidencial 0 confidencial
que se puede utilizar para comprometer el objetivo. Para enumerar estos recursos
compartidos, el atacante puede usar netshareenum en el rpcclient, Sidesea enumerar
los recursos compartidos, utilice netshareenumallnetshareenum
netshareenumall
eS cc
vr
See aa
Pe eee rar
Peery
Pearce age)
eat
ora
Peery
footy
ag
ay
passwort (cin e8)
netnane: Confidential
aaa
ora \confidential
ren (autt)
Lient $ netshareenumall
netnane: ADMINS
Set
ora
rere
eae
\Confidentia
Ceeeree aman)
Carlee
carl
Creed
Pear oars
aa
cei
Net Share Obtener informacion
Aligual que con los comandos anteriores, el comando de enumeracién de recursos
compartidos también viene con la caracteristica para apuntar a una entidad especifica. El
comando netsharegetinfo sequido del nombre del recurso compartido que estd intentando
enumerar extraeré detalles sobre ese recurso compartido en particular, Este detalle ine’ la
ruta del recurso compartido, comentarios, indicard si el recurso compartido tiene unacontrasefia para el acceso, indicaré el numero de usuarios que acceden al recurso
compartido y qué tipo de acceso estd permitido en el recurso compartido,
netsharegetinfo Confidential
Enumeracion de dominios
En los escenarios en los que existe la posibilidad de varios dominios en la red, el atacante
puede usar enumdomains para enumerar todos los dominios que podrian implementarse en
esa red, En la demostracién presentada, hay dos dominios: IGNITE y Builtin.
enumdomains
eos
ec ame tLe CC)|
GELee etree ty Metra Cre))
Enumeracién de grupos de dominio
A continuacién, tenemos dos comandbs orientados a consultas. Estos comandos pueden
enumerar los usuarios y grupos de un dominio. Dado que ya realizamos la enumeracién de
dichos datos antes en el articulo, enumeraremos usando enumdomgroup y enumdomusers y
los comandos orientados a consultas en esta demostracién. Al usar el enumdomgroup vemos
que tenemos diferentes grupos con sus respectivos RID y cuando este RID se usa con los
queryusergroups revela informacién sobre ese titular 0 RID en particular. En el caso de
queryusergroups, se enumerard el grupo. Cuando se utiliza querygroupmem, revelaré
informacién sobre ese miembro del grupo especifico de ese RID en particular.enumdomgroups
enumdomusers
queryusersgroups @x44f
querygroupmem @x201
Eitict e
eee Cea
siesta)
Pan ce ime erieesmecncs
Peat Ce Cnmest htt a)
group:[Enterprise Admins] rid:[0x2
group:[Group Pe
See aeueun:
Cloneable Domain Controllers] rid: [0
petra Leila
Pra COmU rims acs]
St MUU e mest ak.
:[DnsUpdateProxy] rid:[@x44e]
beeen ca
Prncrcts)
Tid: [0x45: =
Sees te
Pi eer Le eer bases ls
ree
cclient $ []
Mostrar informacion de consulta
A partir del comando enumdomusers, fue posible obtener los usuarios del dominio as{ como
el RID. Esta informacién se puede elaborar utilizando el querydispinfo. Esto ampliard la
cantidad de informacién sobre los usuarios y sus descripciones
querydispinfoChange Password of User
As from the previous commands, we saw that it is possible to create a user through rpcclient.
Depending on the user privilege it is possible to change the password using the chgpasswd
command.
chgpasswd raj Password@1 Password@987
Create Domain Group
After creating the users and changing their passwords, it's time to manipulate the groups.
Using rpcclient it is possible to create a group. The createdomgroup command is to be used
to create a group. It accepts the group name as a parameter. After creating the group,
possible to see the newly created group using the enumdomgroup command
createdomgroup newgroup
enumdomgroups
ee
eee eee
fae Cte omer
eats Admins] rid
ft esis
up
ib
up
Delete Domain Group
The manipulation of the groups is not limited to the creation of a group. If the permissions
allow, an attacker can delete a group as well. The command to be used to delete a group
using deletedomgroup. This can be verified using the enumdomgroups command.deletedomgroup newgroup
enumdomgroups
rid:[0x1f2]
We have enumerated the users and groups on the domain but not enumerated the domain
itself. To extract information about the domain, the attacker can provide the domain name as
a parameter to the command lookupdomain as demonstrated.
lookupdomain ignite
Reais nape sa Gon PUT
SAM Lookup
Since the user and password-related information is stored inside the SAM file of the Server. It
is possible to enumerate the SAM data through the rpcclient as well. When provided with the
username to the samlookupnames command, it can extract the RID of that particular user. If
used the RID is the parameter, the samlookuprids command can extract the username
relevant to that particular RID.
samlookupnames domain raj
samlookuprids domain @xa4foe
ri SC SCS nL Ta
FStm yao
cases
oa
SID Lookup
The next command to demonstrate is lookupsids. This command can be used to extract the
details regarding the user that the SID belongs. In our previous attempt to enumerate SID, we
used the Isaenumsid command. That command reveals the SIDs for different users on the
domain. To extract further information about that user or in case during the other
enumeration the attacker comes into the touch of the SID of a user, then they cause to use
the lookupsids command to get more information about that particular user. In the
demonstration, it can be observed that the SID that was enumerated belonged to the
Administrator of the Builtin users.
lsaenumsid
SC sPast EYL)
ate ee ee ere
- 4 BUILTIN\ Administ
presen ae ai
LSA Query
The next command that can help with the enumeration is Isaquery. This command can help
with the enumeration of the LSA Policy for that particular domain. In the demonstration, it
can be observed that a query was generated for LSA which returned with information such
as Domain Name and SID. Similarly to enumerate the Primary Domain Information such as
the Role of the machine, Native more of the Domain can be done using the dsroledom
command as demonstrated.Isaquery
dsroledominfo
512470540-2741904;
in is in
Lient $
LSA Create Account
Un atacante puede crear un objeto de cuenta basado en el SID de ese usuario. Para esta
demostracién en particular, primero necesitaremos un SID. Esto se puede extraer utilizando el
comando lookupnames utilizado anteriormente. Pasar el SID como parémetro en el comando
Isacreateaccount nos permitiré como atacante crear un objeto de cuenta como se muestra en
la imagen a continuacién.
lookupnames raj
lsacreateaccount S-1-5-21-3232368669-251247054@-2741904768-1103
eee |
Enumeracion de privilegios de grupo LSA
Durante nuestras demostraciones anteriores, pudimos enumerar los permisos y privilegios de
los usuarios y grupos en funcién del RID de ese usuario en particular. También es posible
realizar una enumeracién con respecto a los privilegios para un grupo o un usuario en
funcién de su SID. Para hacer esto primero, el atacante necesita un SID. Esto se puede
obtener ejecutando el comando Isaenumsid. En la siguiente demostracién, el atacante elige el
SID S-1-1-0 para enumerar. Cuando se pasé como pardmetro en el comando lookupsids, el
atacante pudo saber que esto pertenece al grupo Todos. Ademds, cuando el atacante utilizd
el mismo SID como parémetro para Isaenumprivaccount, pudo enumerar los niveles de
privilegios como alto, bajo y atributo. A continuacién, el atacante utilizé el SID para enumerar
los privilegios mediante el comando Isaenumacctrights, Este comando fue capaz de
enumerar dos privilegios especificos como SeChangeNotiftyPrivielge y El privilegio
SeNetworkLogonRight.Isaenumsid
lookupsids S-1-1-0
Isaenumacctrights S-1-1-0
70540-2741904768-1103
ator emo Cree eee ra
La capacidad de interactuar con privilegios no termina con la enumeracién con respecto al
SID o privilegios. También es posible manipular los privilegios de ese SID para hacerlos,
vulnerables a un privilegio en particular o eliminar el privilegio de un usuario por completo.
Para demostrar esto, el atacante primero usé el comando Isaaddpriv para agregar el
SeCreateTokenPrivielge al SID y luego usé el comando Isadelpriv para quitar ese privilegio de
ese grupo también. Todo esto se puede observar en el uso del comando Isaenumprivaccount
lsaaddpriv S-1-1-@ SeCreateTokenPrivilege
lsaenumprivsaccount $-1-1-0
lsadelpriv S-1-1-@ SeCreateTokenPrivilege
Isaenumprivsaccount $-1-1-0Paci eeu sete
| found 2 privileges or SID S-1-
Enumeracién de privilegios de cuenta LSA
En la demostracién anterior, el atacante pudo proporcionar y quitar privilegios a un grupo.
También es posible agregar y eliminar privilegios a un usuario especifico. El comando
\saaddacctrights se puede utilizar para agregar privilegios a un usuario en funcién de su SID.
EI SID se recuperé mediante el comando lookupnames. Después de verificar que el privilegio
se agregé mediante el comando Isaenumprivaccount, eliminamos los privilegios del usuario
mediante el comando Isaremoveacctrights.
lookupnames raj
Isaaddacctrights S-1-5-21-3232368669-2512470540-2741904768-1103 SeCreateTok
Lsaenumprivsaccount S-1-5-21-3232368669-2512470540-2741904768-1103
lsaremoveacctrights S-1-5-21-3232368669-2512470540-2741904768-1103 SeCreate
1saenumprivsaccount S-1-5-21-3232368669-2512470540-2741904768-1103
a
peeecte
Seat a
—
aa
foe
After manipulating the Privileges on the different users and groups it is possible to enumerate
the values of those specific privileges for a particular user using the Isalookupprivvalue
command
lsalookupprivvalue SeCreateTokenPrivielgeSETS
LSA Query Security Objects
The next command to observe is the Isaquerysecobj command. This command is made from
LSA Query Security Object. This command helps the attacker enumerate the security objects
or permissions and privileges related to the security as demonstrated below.
Lsaquerysecobj
Tarr
perrreen res
ese Bo eel ei ean
eee
S DENIED (1)
Ststal eee)
eames unenCE Un
S-1
ACCESS ALLOWED (@) flags: 0x00
Ctr
Rear eer CO mace eee TCT)
ecm ae
ELSE ee Le
Eee Cae
Rees REo COE ae
erat ree eC)
Conclusién
En este articulo, pudimos enumerar una amplia gama de informacién a través del canal SMB
y RPC dentro de un dominio utilizando la herramienta rpcclient. Este articulo puede servir
como referencia para los activistas del Equipo Rojo para atacar y enumerar el dominio. ~>rotambién puede ser util para que el Equipo Azul comprenda y pruebe las medidas aplicadas
en el dominio para proteger la Red y sus usuarios.
Autor:
avandeep Singh es escritor técnico, investigador y probador de penetracién. Puede
ser contactado en Twitter y Linkedin
f FACEBOOK (EN INGLES. v TWITTER @ PINTEREST LINKEDIN
«PREVIOUS POST NEXT POST >
Una guia para principiantes sobre el Escalada de privilegios de Windows:
desbordamiento de bufer DnsAdmins a DomainAdmin
Buscar. Buscar