Nada más volver de mis vacaciones navideñas, más concretamente en la segunda semana del mes de enero empecé a ver cierto movimiento por redes sociales con el hashtag #LocalPotato, y es que los investigadores de seguridad Antonio Cocomazzi (@splinter_code) y Andrea Pierini (@decoder_it) habrían identificado un nuevo vector para escalar privilegios en los sistemas operativos Windows, esta vulnerabilidad afecta a un abultado número de versiones y decidieron bautizarla como una nueva patata, en este caso LocalPotato.
Según cuentan los propios investigadores, está vulnerabilidad fue reportada a Microsoft quien después de algunas validaciones y contrastaciones la asumió y se puso manos a la obra en su mitigación y parcheo. Que por cierto, se liberó en el boletín de los martes de este Enero.
Como parte de la divulgación responsable se acordó no liberar mayores detalles de la vulnerabilidad hasta pasado un mes, y dicho y hecho, el resto de mortales nos tuvimos que esperar hasta este pasado viernes 10 de Febrero para obtener todos los detalles de esta ingeniosa técnica para conseguir elevar privilegios desde un usuario raso (sin privilegios).
Como lo he comentado en anteriores ocasiones para conocer fielmente todos los detalles técnicos de la vulnerabilidad es mejor que vayan al post oficial de los investigadores (os lo dejo en las referencias), yo aquí me centraré en mostraros un vector de explotacion que se me ha ocurrido hacer mientra realizaba mis pruebas de laboratorio, espero que os sea de provecho.
Partimos con un acceso al host objetivo bajo un usuario con privilegios mínimos, en este caso tengo el usuario llamado lowuser
:
Por otro lado, para esta prueba partiré de un host que cuenta con las «archiconocidas» Shadow Copies activadas, obviamente este escenario es propicio y podría ser concordante con la realidad y si no lo fuera, tendremos que ser creativo y extrapolar dicha técnica. Quedaros principalmente con la idea de que esta explotación en principio nos servirá para copiar y pegar ficheros tanto privilegiados, como escribir sobre directorios restringidos (privilegiados), por ejemplo en C:\Windows\System32
.
Por lo tanto y a modo de validar nuestros privilegios actuales, intentemos listar las shadows copies mediante nuestro usuario lowuser
:
vssadmin list shadows
En contra, si lo hacemos con un usuario administrador el resultado será de extremadamente opuesto:
vssadmin list shadows
Bien, intentemos poner en marcha el exploit de LocalPotato simplemente mediante los argumentos obligatorios:
LocalPotato.exe -i \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM -o \Users\lowuser\Downloads\LocalPotato\SAM.copy
El resultado no es el esperado, dado que el valor de CLSID no nos es válido para este entorno. Hemos tomado un CLSID por defecto.
Volviendo al post original, nos detendremos sobre este párrafo que será bastante revelador:
Del cual el valor del primer CLSID si que nos será válido en nuestro entorno, este corresponde con el servicio ActiveX Installer (AxInstSv).
Lanzaremos una vez más nuestro exploit realizando las modificaciones respectivas:
LocalPotato.exe -i \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM -o \Users\lowuser\Downloads\LocalPotato\SAM.copy -c {90F18417-F0F1-484E-9D3C-59DCEEE5DBD8}
Y genial, este resultado si que nos gustará recibir, sobre todo por lo que implica y propicia a partir de ahora: obtener los usuarios y sus hashes NTLM, esto a través del fichero SAM y SYSTEM:
Nos llevaremos estos ficheros a nuestro equipo de atacante, en este caso lo hago a través de smbserver de Impacket y mediante la utilidad secretsdump, también de Impacket, obtendré los hashes NTLM vinculados al objetivo:
Por último podría validar que estas credenciales (usuario + hash) me sirven para conectar al host objetivo. La validación lo haré, por ejemplo con CME (CrackMapExec):
Que evidentemente me indicará que puedo acceder al host objetivo mediante PtH (Pass-the-Hash) y demostrar la escalada de privilegios (EoP). A partir de aquí, lo que tu imaginación alcance!
Referencias
- https://www.localpotato.com/
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-21746
- https://www.localpotato.com/localpotato_html/LocalPotato.html
- https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/
- https://github.com/decoder-it/LocalPotato
- https://twitter.com/decoder_it/status/1612883878322278402
- https://twitter.com/splinter_code/status/1624087287599443980