Bien una vez dicho esto, hoy vengo a presentaros una
herramienta de pentesting llamada PowerUp bajo licencia GNU, herramienta
de PowerShell para ayudar con la elevación local de privilegios en los
sistemas Windows. Dicha herramienta nos permite encontrar métodos y
servicios
vulnerables y poder abusar de estos, así
como "secuestro" de DLL, configuraciones de registro vulnerables y
sobre todo y más importante las posibilades de escalabilidad de privilegios
dentro del sistema, la herramienta ha sido desarrollada por
@harmj0y , el código
de la herramienta esta
aquí.
Bien vamos a explicar los distintos métodos de los cuales se
compone esta herramienta:
Para probar la herramienta necesitamos el código, el cual se
encuentra
aquí:
Lo primero que necesitaremos hacer es copiar todo el código
en nuestro PowerShell, de la siguiente manera:
- Para los que no sepan como lanzar PowerShell o Instalarlo
etc, aqui hay un manual de cómo utilizarlo, solo necesitareis leer de la pg 12
a la 13 para poder seguir esto, aunque os recomiendo que saquéis tiempo para
leerlo entero ;-)
- Bien
una vez llegados a este punto en el que tengáis el PowerShell lanzado , solo
tendremos que copiar todo el código en la consola de PowerShell tal que así:
- Una vez introducido todo el código de la herramienta podemos
empezar a ver los distintos métodos en los que se compone:
Service Enumeration:
- Get-ServiceUnquoted: está función encuentra todos los
servicios no cotizados, que también tienen un espacio (es decir, el
modulo trusted_service_path.rb MSF). Si tienen algun servicio que hace
referencia a algo como C:\Herramientas\Herramientas
Personalizadas\estacioninformatica.exe, y tiene acceso de escritura al
directorio base C:\Herramientas\, dejando caer un ejecutable a
C:\Herramientas\herramientas.exe lo podrás ejecutar en ese programa, en
vez del servicio original. Esto es debido a la ambigüedad de algunas
funciones de la API de windows a las que hace referencia.
- Get-ServiceEXEPerms: esta función busca todos los servicios en los
que el usuario actual tiene permisos de escritura. Si se sustituye uno
de estos ejecutables nos permitira secuestrar un servicio actual
Get-ServicePerms: esta función enumera todos los servicios disponibles para abrir el servicio
para su modificación. Podremos cambiar la ruta binaria como por ejemplo
"net user password backdoor/add" y posteriormente reiniciar el servicio.
Service Abuse:
- Invoke-ServiceUserAdd: esta función detiene un servicio, lo
modifica, lo inicia, lo detiene y a continuación restaura la ruta
original exe, es decir, permite abusar de todo lo que se encuentra en
"Get-ServicePerms". Podremos detener un servicio, modificarlo para crear
un usuario y añadirlo al grupo de administradores locales y reiniciamos
el servicio, y se restaura la ruta binaria del servicio original
- Write-UserAddServiceBinary: esta función toma un
precompilado C# ejecutable, servicio y parches binarios con el nombre del
servicio, nombre de usuario, contraseña, nombre del grupo para agregar, a
continuación, el binario a la
ubicación
especificada, es decir, nos permite secuestrar servicios de
"Get-ServiceUnquoted", necesitaremos un servicio de C# precompilado y
los parches binarios con el nombre del servicio, le metemos el
usuario/contraseña y grupo y cuando se ejecute, el binario creara el
usuario con los parámetros establecidos.
- Write-ServiceEXE: esta función invoca
"WtireServicePSBinary" reemplaza el binario para el servicio
"VulnSVC" por uno que añade un usuario local con contraseña y el
grupo administrador, es decir, se puede utilizar para abusar de binarios
vulnerables que se encuentren en "GET-ServiceEXEPerms". Respaldaremos
el exe para un servicio establecido, después utilizaremos
"Write-UserAddServiceBinary" para reemplazar el ejecutable con uno que
crea y agrega un administrador local.
- Restore-ServiceEXE: esta función restaura la copia de
seguridad original del archivo por la ruta del servicio manipulado, la cual devolverá
true si se realizo correctamente o false en caso contrario. Con Restore-ServiceEXE podremos restaurr el ejecutable original
DLL Hijacking:
- Invoke-FindDLLHijack: esta
función comprueba todos los módulos cargados para cada proceso, y devuelve
lugares donde no existe un modulo cargado en la ruta de la base ejecutable, es
decir, busca servicios con posibles oportunidades de secuestro dll, si una
carpeta de la norma %PATH% tiene permisos de escritura por el usuario actual
pe: \Python27, podremos colocar un archivo DLL malicioso en determinados
lugares para escalar privilegios.
- Invoke-FindPathDLLHijack: esta función comprueba si el PATH actual
contiene cualquier directorio con permisos del usuario actual. Si existe, se
puede escribir, entonces comprueba la versión de Windows y envía un servicio
hijackable para la versión de windows correspondiente.
Registry Checks:
- Get-RegAlwaysInstallElevated: esta función comprueba si la clave del registro "
AlwaysInstallElevated" está habilitada, es decir, verificara el registro de windows para la
clave AlwaysInstallElevated, si se encuentra habilitada, los instaladores MSI
siempre se ejecutaran con privilegios elevados. hay un modulo de Metasploit
llamado: " always_install_elevated.rb"
que explota este mismo comportamiento, "Write-UserAddMSI" que escribirá
un archivo instalador MSI que cuando se ejecuta, pide una cuenta de usuario
para añadir al grupo de administradores locales.
- Get-RegAutoLogon: esta
función comprueba las credenciales de sesión automática en el registro
"DefaultUserName/DefaultPassword", es decir, comprobara si se ajusta
la clave del registro "AutoAdminLogon", y procederá a sacar las
credenciales en texto plano.
Misc. Checks:
- Get-UnattendedInstallFiles: esta función comprueba ubicaciones de instalaciones
desatendidas para obtener un archivo con credenciales de despliegue, es decir,
comprobara la existencia de varios archivos desatendidos sobrantes, que suelen
tener las credenciales administrativas en texto plano.
Helpers:
- Invoke-AllChecks: esta
función ejecuta todas las funciones que comprueban todas las opciones de
escalar privilegios del sistema, es decir, chequeara todo y nos mostrara un
informe con las opciones de escalar disponibles.
- Write-UserAddMSI: esta función escribe un instalador MSI
precompilado que solicita usuario/grupo. Esta función se puede utilizar para
abusar Get-RegAlwaysInstallElevated.
- Invoke-ServiceStart: esta función inicia un servicio
especificado, permitiendo marcarlo como deshabilitado.
- Invoke-ServiceStop: esta función para un servicio especificado,
el cual nos devolverá verdadero si la función tuvo éxito o falso en caso
contrario.
- Invoke-ServiceEnable: invoca un servicio y lo habilita.
- Invoke-ServiceDisable: esta función deshabilita/desactiva un servicio especificado
- Get-ServiceDetails: obtiene información detallada
acerca de un servicio
Como podéis observar nos brinda grandes oportunidades y si
le damos juego con la herramienta
Pyinstaller podremos hacer grandes cosas,
bien esta primera entrada es una introducción para poder centrarnos
posteriormente detalladamente en cada funcionalidad de dicha herramienta con
casos prácticos. Espero que os guste la herramienta y trasteéis con ella.
Aquí os dejo un libro y un artículo interesantes:
Bien antes de acabar volver a agradecer a
@n0ipr0cs esta oportunidad muchas
gracias ;-)
Un saludo desde el CPD (^_-)
Fuente: http://www.estacion-informatica.com/2014/05/herramienta-powerup.html