EL ENTORNO
NOTA: No es mi intención sacar aquí ningún tipo de conclusiones. Simplemente, hice algunas pruebas y los resultados me parecieron interesantes. Repetí varias veces las pruebas, por si acaso, pero no sé si a ti te funcionarán igual. Si decides hacer comprobaciones, me gustaría que compartieras cómo quedó la cosa.
La última vez quizá dejé a alguien
con la miel en los labios. Empecé a hablar de Seguridad y, acto
seguido, concluí el post. Retomemos el tema.
Como dije, me puse a hacer pruebas con eso de las URI de tipo "data". Si llegaste hasta aquí saltando de enlace en enlace y no sabes qué eso de una "URI de tipo data", te adelanto que es una forma de incrustar dentro de un documento HTML una cosa tal como una imagen o un documento. De guardarla DENTRO del propio documento HTML, no en otro fichero aparte. Repito una vez más las referencias que doy siempre:
Para las pruebas utilicé un viejo (¡quién lo habría dicho en su
momento!) pero aún solvente equipo con CPU Core(TM)2Duo T9300 y 4 GB
de RAM, Windows Vista Business Service Pack 2 y Microsoft Security
Essentials actualizado. En él tengo instalado VirtualBox y un
BackTrack virtualizado que se come
512 MB de RAM y con el que suelo hacerle puñeterías a otras
máquinas virtuales.
http://en.wikipedia.org/wiki/Data_URI_scheme y, barriendo para casa:
y
|
Y hoy, quizá, también a la máquina real.
En el BackTrack, cuya IP de hoy es
192.168.27.100, tengo un fichero “con premio”. Un PDF malicioso
que, como pude comprobar, es detectado por el antivirus.
ENDATANDO EL FICHERO
Para jugar con él, creé un fichero
HTML que le referenciara. Le puse de nombre “capa1.htm” y su
contenido quedó así:
<object height="100%" width="100%" data="malicioso.pdf" type="application/pdf" |
Entonces, realicé la conversión mediante un
comando como
$ ruby poc.rb /var/www/capa1.htm /var/www/prueba1.htm |
El resultado, “prueba1.htm”,
contiene dentro los datos del PDF codificados en una URI de tipo
data:
Pero no me conformé con convertir una
sola vez a “data”. Así que creé otro fichero, “capa2.html”
con un iframe para contener a “capa1.htm”:
<iframe src="capa1.htm" width="100%" height="100%"></iframe> |
Y lo convertí también con:
$ ruby poc.rb /var/www/capa2.htm /var/www/prueba2.htm |
El programa “poc.rb” realiza la
conversión de forma recursiva, de modo que ahora tenemos el
documento PDF pasado a "data" e incrustado en un objeto y todo eso lo vuelto a convertir a "data".
Pero con dos iteraciones tampoco me
pareció suficiente e hice otro documento HTML que incrustara a
“capa2.htm” y lo llamé “capa3.htm”:
<iframe src="capa1.htm" width="100%" height="100%"></iframe> |
Y un “capa4.htm” que incluyera a
“capa3.htm”... y así hasta “capa10.htm”, que incluye una referencia a "capa9.htm". Y a todos ellos los pasé
por mi “prueba de concepto”. El último, "prueba10.htm" contiene el PDF pasado 10 veces por el procedimiento de conversión a "data". Suficiente por ahora.
¡A JUGAR!
Quería tener los diez ficheros
obtenidos así como el documento PDF original en el PC. Así que
desactivé momentáneamente la protección en tiempo real del
antivirus...
… y me los descargué a una carpeta:
… para a continuación pasarle un
análisis en busca de amenazas. "A ver qué me encuentra el Security
Essentials":
… Y no tardó en cantar:
Pero cuando terminó y me preocupé por
ver en qué ficheros había detectado los problemas...
… ¡sólo en dos de ellos! En el PDF
original y en el HTML para el que sólo había realizado la conversión a data una
única vez. A pesar de que le había dicho al antivirus que eliminara
el "virus", seguía teniéndolo nueve veces en mi sistema.
Reactivé la protección en tiempo
real, que aunque no sea suficiente para garantizar nada por sí sola (diría un matemático que es "condición necesaria, pero no suficiente"),
siempre algo ayuda y me quedé pensando...
En realidad, no tengo del todo claro hasta qué punto sería bueno o malo que un antivirus mirara los documentos codificados como "data" en busca de documentos codificados como "data", en busca de documentos codificados como "data", en busca de documentos codificados como "data", en busca de...
Si lo hiciera, quizá habría malware que, para evitar ser detectado, llenaría carpetas de ficheros con documentos codificados como "data" de forma iterativa cien o doscientas veces. Señuelos con que entretener un buen rato al antivirus mientras "uno hace su trabajo".
En realidad, no tengo del todo claro hasta qué punto sería bueno o malo que un antivirus mirara los documentos codificados como "data" en busca de documentos codificados como "data", en busca de documentos codificados como "data", en busca de documentos codificados como "data", en busca de...
Si lo hiciera, quizá habría malware que, para evitar ser detectado, llenaría carpetas de ficheros con documentos codificados como "data" de forma iterativa cien o doscientas veces. Señuelos con que entretener un buen rato al antivirus mientras "uno hace su trabajo".
Pero, por otro lado, si yo fuera un %#”!~@@!!! de esos que
hay por ahí, podría pensar en utilizar esto para muchas cosas. Aparte de ocultar una copia de mi malware, o de otros elementos maliciosos, de forma que no lo encuentren, claro.
Cosas como alojar contenidos no autorizados en los sistemas de almacenamiento corporativos o en servidores webs ajenos. O compartir en redes P2P cosas que no quiero que sean detectadas fácilmente por sistemas automáticos de control.
Cosas como alojar contenidos no autorizados en los sistemas de almacenamiento corporativos o en servidores webs ajenos. O compartir en redes P2P cosas que no quiero que sean detectadas fácilmente por sistemas automáticos de control.
O, en un caso de robo y fuga de
información confidencial, para tratar de enviar un
archivo sin ser detectado, codificándolo varias veces a “data” y poniéndolo como destino de un hiperenlace en un correo redactado en formato
HTML.
O... ¿Se te ocurre alguna cosa más?
Alguna, seguro que sí.
Y... ¿Has probado tus sistemas de
protección a ver si detectan cosas como éstas?
La próxima vez os cuento algunas
pruebas más que hice.