You are on page 1of 22
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 yashika Po 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. enumprivs ce 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 creer Obtener 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. saenumsid rpcclient $> 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 builtin rpcclient $> 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 netshareenumall netshareenum 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 una contrasefia 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 querydispinfo Change 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 @xa4f oe 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-0 Paci 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 SeCreateTokenPrivielge SETS 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. ~>ro tambié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

You might also like