jueves, febrero 20, 2020

Skillpipe: Un CVE sobre cómo eliminar las marcas de agua

Desde tiempos remotos, la escritura ha sido un medio de comunicación útil para plasmar aquello que el individuo ha querido reflejar en determinados instantes del tiempo. Memorias, palabras con significado emotivo, invenciones y/o cosas que pueden no ser absorbidas por la mente durante cierta prolongación, por temor a que queden en un olvido finito o, por resultar en la pérdida de ideas que devastan su guion principal.

Figura 1: Skillpipe Un CVE sobre cómo eliminar las marcas de agua

Pero… ¿quién ha escrito que? Los hay que carecen de dueños, otros son firmados bajo pseudónimos, algunos son robados, etcétera. Para cerciorarse, técnicas esteganográficas aparecieron para lidiar con aquel control de autor, como vimos incluso en el mundo de los vídeo juegos robados de mala manera como nos contaban Fran Ramírez y Rafael Troncoso con el caso del código morse escondido por Atari para detectar copias piratas. Por supuesto, la esteganografía, y el estegonálisis son a día de hoy una disciplina del mundo del hacking ampliamente estudiada.

Figura 2: Libro de Esteganografía y Estegoanálisis

Proteger la propiedad intelectual de algo se lo conoce más cómo copyright, y protege los derechos intelectuales de un documento o de la persona que los posee por creación o por adquisición. En este artículo, nos centraremos en la marca de agua digital que genera Skillpipe, la plataforma que usa Microsoft para publicar sus cursos oficiales (MOC).

Docuemtación de MOCs con marcas de agua

Asistimos presencialmente a un centro autorizado para certificarnos de algún que otro MOC. Todo el material era electrónico y para poder leer la documentación asignada, solo podías hacerlo a través de Skillpipe. La herramienta empezó operando en modo: web, en formato app de smartphone y aplicación de escritorio. Posteriormente se anunció el fin de soporte para solamente usarse el modo web.

Empezamos a interactuar con el lector y nuestros deseos contemplaban ya la posibilidad de acceder de forma offline. Le preguntamos al formador por la mejor opción para lograr esa función. Se nos comentó que si bien era una opción alternativa, conllevaba algunos inconvenientes:
1. Deja marca de agua. 
2. Solo permite su impresión por módulos o capítulos.
El inconveniente de la marca de agua no nos parecía mal, siempre y cuando no se interponga en zonas que dificulten la lectura. Pero cuando probamos de imprimir a PDF, vimos que no podíamos seleccionar parte del texto. Como si hubiese una mezcla multimedia de foto en el elemento del copyright y esa fue nuestra primera preocupación. Siempre puede ir bien copiar alguna sección para apuntes de frases/palabras importantes y hacer el mítico “Copy & Paste”. Nos fijamos también que el documento pesaba bastante por ser un PDF, pero no le dimos demasiada importancia por ese entonces.

Figura 3: Comparación seleccionando todo el texto con y sin marca de agua

Sobre el punto 2 mencionado anteriormente la realidad es que puede ser molesto, pero solo hay que hacerlo una vez. No todo puede automatizarse o igual no merece su esfuerzo para un solo uso. Entonces aparecieron nuestras primeras preguntas para el formador:
- ¿No se puede hacer nada para que la marca de agua desaparezca o que me permita coger todo el texto bajo su formato en PDF? 
- No, no se puede…
El formador nos comprendía y nosotros no nos dimos por vencidos, así que indagamos, probamos, volver a probar y ver cómo podíamos encajar “las piezas” para darle otra forma a la situación. Después de juguetear, encontramos una manera de solventar nuestras inquietudes.

El siguiente vídeo data del año 2017 y muestra cómo poner el documento “a dieta” mediante eliminación de un nodo en código HTML. Al ser un método antiguo, es ya obsoleto y la parte de código a eliminar en la actualidad es distinto, esa parte la veremos después con “más pelos y señales acuáticas”.

Figura 4: SkillPipe - Eliminar Marca de Agua (Lector de Cursos usado por Microsoft)

Tras la visualización del vídeo, se puede observar cómo, haciendo uso de las Developer Tools del navegador -  Mozilla Firefox en este caso -, se elimina fácilmente el nodo <div class="”print_watermark_wrapper”"> , luego se imprime y… happy reading!

Notificando la Vulnerabilidad

Decidimos notificarlo mediante el soporte oficial, el cual se compone de un formulario en el que tienes que detallar lo que hayas descubierto. Como podéis ver en el mensaje de respuesta, nos dijeron que tomaban nota de nuestras preocupaciones y que no se contemplaba un cambio a corto plazo, pero fuimos invitados a participar en una encuesta. Dicho así ¿a quién no lo apetece hacer una?.

Figura 5: Respuesta de Microsoft Courseware Fulfillment Center

Claro está que la respuesta no nos convenció, por lo que decidimos insistir y notificar a Microsoft, al MSRC. Tuvimos una rápida respuesta que nos sometió a un bucle vicioso ya que nos mandaron de nuevo al soporte de Skillpipe.

La nueva Web App

En su versión 3.0 de la Web Reader (no recuerdo si la anterior era la 2), parece que los desarrolladores sí han hecho cosas para hacer que la marca no sea tan intrusiva, pero igual de fácil nos lo ponen para deshacernos de ella. Una gran diferencia, es la repetición de la misma, tres veces en lugar de seis por página.

Figura 6: Funcionalidad de impresión en Google Chrome

Otra diferencia, es la falta de la generación de una nueva pestaña a la hora de imprimir. Veamos cómo hacerlo en detalle para esta versión actual.

Quitando el agua a la marca para su secado
1. Accedemos a la plataforma www.skillpipe.com con nuestra cuenta autorizada. 
2. Escoger el curso que se quiere mantener offline. 
3. Escoger un módulo (recordad que solo podremos imprimir módulo a módulo si se quiere tener todo el libro entero). 
4. Abrimos las DevTools (para esta PoC usamos Chrome) con F12 y buscamos por el nodo #watermark. Luego, botón derecho – Delete element tal y como muestra la siguiente figura.
Figura 7: Chrome - DevTools - Eliminando el nodo de la marca de agua
5. Podemos cerrar la ventana de las DevTools. Imprimimos con la función que ofrece la plataforma, el botón se sitúa abajo – izquierda. Una cortina se expande, pulsar al único botón de imprimir de la sub-ventana para invocar el asistente de impresión del propio navegador.
Figura 8: Chrome - Print Wizzard - La marca de agua se ha ido

Hecho. El documento quedará ahora… ¡”limpio de todo pecado”!

¡Bonus Track!

Es un poco tedioso el estar repitiendo el proceso de borrado del código HTML cada vez que se quiere extraer un módulo a PDF, por eso decidimos buscar un método “Semi-Automático” que nos ayudara con esa tarea. No queríamos reinventar la rueda, siempre procuramos buscar antes por algo que exista, y pensamos en un acople rápido, es decir un add-on/extensión. Son fáciles de instalar, gratuitos en su mayoría y muy versátiles.

Entre varios de esos “cromos” añadimos a nuestra “colecciónAdblock Plus (ABP), utilizado mayormente para bloquear anuncios. No solo anuncios, también es capaz de bloquear, puedes personalizar tus filtros para atacar a otras partes de la web. Tras instalar la extensión, abrimos su configuración. Advanced – En MY FILTER LIST escribimos el siguiente filtro: skillpipe.com###watermark y lo añadimos con el botón + ADD

Figura 9: Abriendo la extensión ABP en Chrome

El filtro empleado, atacaría solo al web/dominio skillpipe.com. Las tres almohadillas (###) referencian al ID a ocultar, cuyo nombre es watermark en este caso. Con esto evitaríamos el paso 4 que vimos en el modo manual y ya no sería necesario hacer nada más, el nodo watermark seguirá vivo en el código sin sufrir alteración alguna.
Nota: Sí lo configuras antes de abrir un curso, no hará falta que refresques la página (para la activación del filtro).
Cuando sacamos algo a la luz, para dejar evidencias irrefutables, solemos documentar con un White Paper en inglés, hacer un vídeo y luchar por obtener un CVE ID.


Aquí podréis ver el vídeo en English (y subs 😉) incluidos ambos modos: El manual y el Semi-Automático (agradecimientos a Esther Martínez, la asistente de producción, hace que los vídeos salgan más pulidos):

Figura 11: Skillpipe - Remove the Watermark (Course Reader used by Microsoft)
using Ad Blocking [CVE-2020-9013]

Y por último el CVE se nos fue otorgado, que como veis tiene el CVE-2020-9013, así que todo realizado en forma y plazo.

Reflexiones Finales

Se ha demostrado que la marca de agua en contenido digital sigue siendo frágil y careciente de robustez. Nuestra principal intención no era infringir el copyright, sólo queríamos poder leer, disfrutar de nuestro contenido de una manera cómoda y confortable, sin forzar la vista ya que, las distorsiones generadas en su vertical no ayudan mucho al reposo de nuestros ojos. Probablemente no hubiéramos tenido la tentación de eliminar la marca de agua si ésta hubiera tenido características tales como: Ser imperceptible y no degradar el objeto que pretende proteger.

Usamos PDF Creator en la versión anterior de la Web App para la conversión del documento, pero tras probar el conversor PDF incorporado en Google Chrome, la marca de agua ya no molestaba tanto… Ni tampoco generaba extra de peso ¿significa eso de que PDF Creator es un mal software? No nos gusta quedarnos con ese “mal sabor de boca”, así implementamos la siguiente tabla proveniente de una batería de pruebas (el tamaño fue medido en bytes).

Figura 12: Tabla de tamaños de PDF

Quisimos saber si el comportamiento venía dado por el software “fabricante” de PDFs o si era cosa del navegador. Nótese en las pruebas, que el claro vencedor es Chrome, pero los mejores resultados en versión de sin marca de agua, son haciendo uso de Firefox en combinación de PDF Creator. Así despejamos la incógnita, la sinergia perfecta fue encontrada cómo en un ensayo de laboratorio.

Y ya, para despedirse, dejamos algunas preguntas al aire: ¿Es el PDF un formato inmaduro para tolerar marcas de agua digitales robustas? ¿Es la marca de agua un mecanismo útil para proteger documentos digitales? Este post (como el resto) residirá en su origen, mientras sea intocable frente a agentes externos maliciosos y se siga velando por el servicio del blog, la integridad quedará bien saldada.

Remember… Be Good, Be Hackers!

Autor: Gerard Fuguet (Contactar con Gerard Fuguet)


No hay comentarios:

Entrada destacada

ESET te consigue 100 Tempos de MyPublicInbox para consultar con los expertos de seguridad informática @eset_es @mypublicinbox1

La compañía de seguridad ESET , especializada en soluciones de seguridad personal y empresarial, ha puesto activa una campaña de concienciac...

Entradas populares