windows smartscreen

SmartScreen (ES) es una herramienta de protección ante phishing y malware presente en muchos productos de Microsoft, tales como Internet Explorer, Microsoft Edge y Outlook.com, y activo por defecto en Windows 8 y versiones posteriores.

Básicamente lo que ofrece es un sistema de filtrado que opera por debajo del producto para que cuando el usuario vaya a realizar una acción potencialmente peligrosa (abrir un email marcado como spam, descargar un documento que parece contener algún tipo de malware, instalar un programa que no cuenta con la certificación adecuada…), lo avisa o, dependiendo de la gravedad, directamente le impide realizarlo (o bien muestra una advertencia como la que aparece en la imagen superior, dando opción al usuario de seguir, o bien alerta de que lo que está haciendo es peligroso y muestra una única opción de cerrar la pestaña).

Microsoft no es ni de lejos el único que ha habilitado sistemas de este tipo. Prácticamente todos los antivirus actuales ofrecen algún filtro anti-malware/phishing, pero está claro que la posición predominante de Microsoft (es dueña del sistema operativo más utilizado en escritorio) le permite ya no solo estar disponible por defecto en millones de dispositivos (ergo, millones de laboratorios de prueba ante nuevas familias de phishing/malware), sino además operar con una base de datos (listas blancas y negras) y a un nivel (Microsoft es dueña del propio sistema operativo) al que ninguno otro puede llegar.

Por ello, es el principal dolor de cabeza de la industria del cibercrimen. Como bien decía Ramón Pinuaga en su charla «Authenticode para malotes» de la pasada RootedCon (ES), se calcula que SmartScreen bloquea 9 de cada 10 campañas de phishing mostrando una alerta. Por supuesto, luego el número de víctimas aumenta ya que un porcentaje significativo de ellas le dan a instalar el malware aún cuando el sistema le está recomendando que no lo haga. Pero un 90% de tasa de efectividad es mucho, de ahí que los malos (y también aquellos que se dedican al pentesting) busquen maneras creativas de bypasear el Authenticode (EN), el sistema de certificación que utiliza Microsoft para validar qué ejecutables pueden o no instalarse.

Algunos tips básicos sobre el funcionamiento de Authenticode

SmartScreen funciona bajo el paradigma de listas. Cuando queremos realizar una acción (por ejemplo, abrir un fichero descargado por primera vez), SmartScreen compara el certificado de ese fichero con sus listas, y si encuentra algún positivo peligroso mostrará la alerta correspondiente.

Por debajo de SmartScreen está Authenticode, un mecanismo de firma digital de codigo desarrollado por Microsoft, que nos permite comprobar la autenticidad y la integridad de ciertos ficheros.

Y para ello va a necesitar realizar una petición a los servidores de Microsoft, por lo que la primera estrategia que se nos vendría a la cabeza pasaría por hacer un DoS (puede ser selectivo, únicamente a las peticiones que salgan dirigidas a Microsoft) a la víctima para que ésta no se pueda conectar con sus servidores, y por tanto, no pueda cerciorarse de que en efecto el fichero está o no correctamente certificado.

Pero los chicos de Redmond ya han pensado en ello, y en caso de que el dispositivo no tenga capacidad para realizar la petición va a avisar al usuario de que no puede asegurar la seguridad de dicha acción. Es una pantalla soft (una recomendación, no una alerta), por lo que podría servir para según qué casos (por un lado no requiere validar el certificado con el que emitimos el binario, y por otro requiere que previamente encontremos un vector de ataque para el DoS), pero no parece la solución definitiva.

Tenemos, afortunada o desgraciadamente, otras vías.

4 maneras de bypasear la seguridad de SmartScreen

Existen según Ramón Pinuaga cuatro maneras, ordenadas de menor a mayor dificultad, y como cabría esperar, de menor a mayor tasa de éxito.

1.- Comprar el certificado

La primera es de cajón. Si lo que habitualmente echa para atrás un binario es que éste no va firmado, vamos a comprar un certificado para firmarlo.

El proceso es parecido a la compra de un SSL, aunque normalmente con un precio ligeramente mayor (unos 180 euros, 90 si lo hacemos por revendedores).

La validación a la hora de pedirlo suele ser poco estricta. Piden datos de una empresa, que podemos obtener públicamente, así que lo mismo cuela el utilizar los datos fiscales de una compañía más o menos grande.

El único aspecto un pelín más complejo es el referente al teléfono. Con los datos fiscales que les ofrecemos, buscan la compañía en los directorios de empresa, y de ahí sacan el teléfono al cual llamarán para concluir la compra. Puesto que presumiblemente el malo no será dueño de la compañía, lo que habitualmente hacen es buscarse sus tretas con ingeniería social para que llamen a otro número (perdone pero el teléfono de la compañía ha cambiado, el nuevo es este; es mejor que llame directamente a este teléfono ya que el que tenemos publicado en el directorio pertenece a una centralita…).

Un binario firmado tiene más papeletas de pasar el control de SmartScreen, pero no asegura que éste lo pase automáticamente. De hecho en la verificación se tienen en cuenta el número de descargas, si alguno de los usuarios han marcado con anterioridad el binario como potencialmente peligroso, la reputación de esa compañía/certificado…

2.- Robar un certificado

Sabedores de esto, la siguiente opción pasaría por «agenciarnos» un certificado que ya cuente con el beneplácito de Authenticode.

Y cómo no, los certificados más suculentos serían aquellos que vienen firmados por la propia Microsoft o por empresas de software muy habitual en oficinas y casas (ofimática, multimedia…).

Quizás el caso más sonado de robo de certificados fue el de Adobe en 2012 (ES), que descubrió que sus certificados estaban siendo utilizados para propagar malware en nombre de la propia compañía, pasando así automáticamente todos los controles de seguridad de SmartScreen (viene firmado por Adobe, no hay que hacer más preguntas).

Sobra decir que además de ilegal estamos hablando de un nivel de sofisticación solo al alcance de grandes grupos cibercriminales, y que es usado normalmente para APTs y malware avanzado.

Bajando a la tierra, lo que sí se puede hacer con unos recursos más modestos es probar suerte buscando firmas que hayan sido expuestas en plataformas de control de versiones como GitHub, o incluso leaks anteriores.

Una búsqueda rápida por Google bajo la query:

Site: github.com, filestyle: p12

Me muestra cerca de 72.000 resultados. Muchos de ellos serán falsos positivos, pero de ahí seguramente encontremos unos cuantos ficheros .p12, habitualmente utilizados para este tipo de firmas.

Faltaría, no obstante, romper la contraseña, y que en efecto esa firma siga contando con una buena reputación (seguramente no somos los primeros que lo han intentado), pero bueno, posible es.

Otra estrategia a colación de esto pasaría por aprovecharnos de la CA propia de la organización. La mayoría de organizaciones crean certificaciones propias para mantener actualizado su software, de forma que únicamente se pueden instalar binarios que tengan esa CA. Si somos capaces de hacernos con ellas, seremos capaces de firmar lo que queramos.

El sistema de actualización es, de hecho, un potencial vector de ataque. Hace tiempo había una vulnerabilidad que permitía hijackear el WSUS (EN/Windows update).

3.- Modificar un binario confiable

El hash de una firma se crea a partir de unas partes específicas del binario. Por supuesto, son las partes más interesantes para meter código, pero no son las únicas.

Mediante payloads fuera de la zona firmada en binarios confiables (como un exe de Chrome) es técnicamente posible incluir código malicioso que mantendrá el mismo hash de la firma, y por ende, pasará el control de SmartScreen.

Una estrategia habitual en este sentido pasa por cambiar el HTML que muestra el instalador (ya sabe, esas pantallas que nos van guiando a la hora de instalar un programa legítimo) para, por ejemplo, que instale otro msi. El usuario habrá descargado un instalador legítimo, pero a la hora de instalarlo, realmente le estamos forzando a instalar otro binario distinto.

4.- Colisión de hashes

De esto curiosamente hablábamos hace apenas una semana. MD5, SHA1…, son los algoritmos más utilizados a la hora de crear el hash con el que se firma el fichero.

Y como vimos, SHA1 es ya vulnerable a una colisión de hashes (dos ficheros distintos que tengan exactamente el mismo hash, y por ende, puedan hacer uso de la misma firma).

Presuponiendo que tengamos los conocimientos y recursos necesarios para hacerlo, esto abre la puerta a que cualquiera pueda autofirmar un malware o lo que le de la gana haciéndose pasar por una entidad reputada como Google o Microsoft.

En definitiva, aunque SmartScreen es una gran herramienta contra el fraude digital, no es la panacea.

Mantener en nuestras organizaciones una buena política de restricción de instalaciones y roles de permisos ayuda a minimizar el impacto del ransomware y demás campañas de phishing, ahí donde la propia tecnología flaquea.

Avisado queda :).

 

________

Puede ver más artículos de esta serie en #MundoHacker, donde tratamos en varios tutoriales las medidas para atacar y/o defenderse en el mundo digital.

Y si el contenido que realizo le sirve en su día a día, piense si merece la pena invitarme a lo que vale un café, aunque sea digitalmente.

hazme patrono pabloyglesias