En esta capsula realizada en laboratorio veremos un ejemplo de como mitigar un UAC Bypass por medio de agentes de control dinámicos escritos en Python.

¡Entramos en materia!

Para ello vamos a utilizar el Debugger Registry Key y navegando un poco por las MSDN de Microsoft encontramos el siguiente enlace:

https://technet.microsoft.com/fi-fi/library/a329t4ed(v=vs.85).aspx

«Sometimes, you may need to debug the startup code for an application that is launched by another process. Examples include services and custom setup actions. In these scenarios, you can have the debugger launch and automatically attach when your application starts.»

¡Perfecto!, esto nos permite ejecutar en el lugar del debugger otro código que verifique si el binario se ejecuta de manera legítima. Creamos la clave en el registro con el valor del binario que queremos monitorizar.

El resultado final es la ejecución de un programa desde cualquier parte del sistema operativo detectando cuando se ejecuta un binario concreto sin sobrecarga para el equipo y comprobar si el binariose ejecuta de forma legítima.

Los siguentes pasos son bastante sencillos utilizando los siguientes códigos escritos en Python que nos brinda el equipo de Santiago Hernández para la implementación del servicio y del agente:

Al final tenemos una forma de comprobar el estado de diferentes estructuras del sistema operativo antes de la ejecución de un binario. En nuestro caso comprobamos si existen ramas peligrosas en el registro de Windows.