A pesar de que la semana que viene es un tanto extraña por el puente de vacaciones en el que estamos inmersos, hay algunas actividades que van a tener lugar en esos días, y en concreto yo voy a participar en un evento que tendrá lugar en Londres. Esto es lo que tenemos por delante estos días.
Figura 1: Eventos, conferencias y cursos del 3 al 6 de Mayo
Yo estaré el miércoles día 3 de Mayo por vídeo-conferencia en el 5th CDO Forum que se hará en la reunión de Londres. Yo voy a hablar de Big Data, Information Security & Cognitive Intelligence en Telefónica. Ahí se va a dar un premio al CDO del año por ser el que más cambios ha llevado a su organización con su trabajo y yo he tenido el honor de ser nominado como uno de los finalistas, así que más que agradecido por ello.
En Barcelona, ese miércoles a las 19:00 tendrá lugar en el Mobile World Centre de Movistar una conferencia centrada en el Machine Learning en la que participarán nuestro compañero Alexandros Kartzoglou, Director Científico de Telefónica Research y José A. Rodríguez-Serrano jefe del equipo de ciencias de datos de BBVA Data & Analytics. Más info:
También el día 3 de Mayo, a las 19:00 en la FlagShip de Telefónica en Gran Vía, tendrá lugar una charla gratuita de Desarrollo de una asistente virtual con Watson. Tienes la información en el MeetUp de Bot Dev Madrid.
El día 4, con el Centro de Ciberseguridad Industrial, participaremos en un evento gratuito que tendrá lugar en Madrid, donde hablaremos de como se puede hacer el proceso de "Automatización de un Sistema de Gestión de la Ciberseguridad Industrial con SandaS GRC". Tienes información completa de la agenda del evento y el proceso de registro en la siguiente dirección web:
Figura 1: We are hiring at LUCA D3, 11Paths, 4th Platfom & AURA
Todos esos proyectos están en plena evolución, creciendo y a pleno rendimiento, así que hemos abierto unas decenas de nuevas posiciones para todos aquellos que adoréis crear tecnología. Desde puestos de Software Developer, hasta expertos en Natural Language Processing, pasando por Devops, Data Scientist, Security Analysts, etcétera. Este es un detalle resumen de las posiciones que tenemos abiertas para trabajar en nuestro equipo. Ten en cuenta que de algunas de estas posiciones buscamos a más de un hacker.
Figura 2: Resumen de posiciones abiertas
Todas estas posiciones, más las que se abren en otras áreas de Telefónica están en nuestro portal Jobs at Telefónica, donde puedes tener el detalle completo de cada uno de los puestos, y en esta URL en concreto tienes acceso a los roles que están en nuestra unidad.
Ya sabes que en nuestros equipos esto va de crear clavos, de hacer tecnología, y de pasárselo bien. Eso sí, te prometo que vas tener deadlines, que hacer deliveries, que lo que crees es para que sea utilizado, y que te vamos a pedir que lo hagas mucho mejor cada día. Si buscas un trabajo en el que no te vayas a ver retado y se te vaya a exigir que seas mejor cada día... este NO es tu sitio.
Figura 4: Vente a crear tecnología a la fábrica de caramelos
Tal vez el título de este artículo te ha dejado un poco extrañado, pero esto es exactamente lo que yo sentí cuando intenté comprobar cómo funciona el control de Siri sobre Facebook. O lo que es lo mismo, el control de Facebook con Siri. A ver si me explicó y os lo aclaro.
Figura 1: Y con Siri "sí, no, no, sí, sí" puedes controlar el acceso a tu cuenta de Facebook
En el artículo de ayer os contaba cómo en Siri, utilizando las opciones de App Support se podía decidir si queríamos que Siri pudiera leer y escribir mensajes de WhatsApp como mecanismo de protección de WhatsApp para poder evitar a los que quieren espiar WhatsApp. Hasta ahí todo tranquilo, pero si te fijas, en las opciones, también existe la posibilidad de activar o desactivar el App Support de Siri para Facebook.
Figura 2: Selector para que Siri tenga acceso o no a tu cuenta de Facebook
Y esto levantó un hilo en mi cabeza que me dejó pensativo. Algo no acababa de cuadrarme. El caso es que la integración de Facebook con iOS viene de mucho antes y recordé que en la parte de configuración de las Settings de iOS es posible configurar una cuenta de Facebook para interactuar con tu red social.
Figura 3: Configuración de cuenta de Facebook en iOS
Cuando la activas, el funcionamiento es bastante peculiar. Primero pones tu usuario y tu contraseña, te valida el servidor de Facebook y te manda un token que debes utilizar para autenticarte con Facebook desde iOS. Cuando lo haces, el resultado es que tienes una cuenta conectada a nivel de iOS para gestionar tus redes sociales.
Control a nivel de App o a nivel de iOS
Y ahora viene la prueba que hubo que hacer. Si se desactiva el App Support de Facebook en Siri, pero se configura la cuenta de Facebook en las Settings de iOS... ¿Qué pasará si le decimos a Siri que queremos postear algo en Facebook con el terminal bloqueado? Había que probarlo.
Figura 4: Pidiéndole a Siri desde el terminal bloqueado que haga un Post en Facebook
La realidad es que con el terminal bloqueado - sin poner el passcode - puedes pedirle a Siri que te haga un post en Facebook. Y darle el contenido del estado. Y llegado el momento final, pedir que lo envíe.... y lo envía para que se publique.
Figura 5: Estado posteado en Facebook desde Siri sin App Suport para Facebook
El resultado es tan sencillo como que al final se publica el estado. Esto quiere decir que si tienes configurada tu cuenta de Facebook a nivel de iOS, el botón de App Support para Facebook no acaba de ser demasiado útil para evitar que alguien utilice tu cuenta sea utiliza desde Siri con el terminal bloqueado.
Recientemente se ha añadido la capacidad a Siri en iOS de poder integrarse con aplicaciones, como por ejemplo Uber o WhatsApp. La idea es convertir a Siri en tu agente virtual en el smartphone al estilo de como es Alexa en Amazon Echo para el hogar. Esta integración permite, si tienes habilitado Siri con el terminal bloqueado, que cualquiera pueda leer tus mensajes de WhtasApp sin necesidad de tener el passcode, lo que abre más posibilidades a los amigos de espiar WhatsApp y que deberás tener en cuenta cuando quieras Proteger tu WhatsApp a prueba de balas.
Figura 1: Puedes controlar el acceso de Siri a WhatsApp pero...
Pero como he dicho antes, esta es una característica que debe ser habilitada explícitamente, y que si quieres utilizarla vas a recibir un mensaje como el que ves a continuación, donde se pide un Opt-in claro que debe hacerse con el terminal desbloqueado.
Figura 2: Activación de acceso de Siri a los mensajes de WhatsApp
Desde que sé que existe esta capacidad, yo siempre pruebo en los iPhone que me dejan los amigos, a ver si su Siri está activado con la pantalla bloqueada y tiene activada esta opción. Si es así, saldrá la pantalla de WhatsApp integrada en Siri y podrás enviar un mensaje.
Figura 3: Escribiendo un mensaje de WhartsApp con Siri
Los permisos de las apps que se pueden integrar con Siri - y que por tanto podrán leer los mensajes - se pueden configurar en en las opciones de App Support de Siri, tal y como ves en la pantalla.
Figura 4: Acceso de Siri a los mensajes de WhatsApp concedido
Sin embargo, lo que no puedes configurar en Siri es la posibilidad de quitar acceso al e-mail y a los mensajes SMS e iMessage, con el consiguiente acceso a la agenda completa.
Figura 5: Escribiendo un e-mail con Siri dede la pantalla bloqueada
Esto sigue igual. Si alguien accede a tu terminal iOS y tienes activado Siri, podrá enviar un correo electrónico a quién quiera solo con pedírselo amablemente.
Figura 6: El e-mail se envía con la pantalla bloqueada
Figura 7: Envío de mensaje con la pantalla bloqueada y acceso a agenda de contactos
Y, por supuesto, esto implica acceso a la agenda de contactos para poder saber quién está en tus contactos y cuáles son sus datos. Información que se puede extraer de tu terminal bloqueado con Siri de la que hablamos en detalle en el libro de Hacking iOS: iPhone & iPad.
Figura 1: Nuevo libro de 0xWord "Crime Investigation"
Llevábamos tiempo con ganas de contar las historias de peritaje forense en las que el caso se revolvió al final por los indicios extraídos de los activos informáticos, y Felipe Colorado ha escrito en forma de historia de misterio algunas de ellas. En total, dieciséis historias que cuentan casos como las del asesino en serie BTK, Stuxnet o la operación Aurora.
La lista de historias que forman parte de esta novela las tenéis en el índice, que os he subido a SlideShare. Como veis, son relatos basados en hechos reales que van desde el asesinato, hasta la ciberguerra internacional.
Si te gusta el mundo de la ciberseguridad, el análisis forense y las historias de misterio y espías en general, este es un libro que disfrutarás. Y, por supuesto, si eres un perito informático o quieres serlo, te encantará ver cómo se resuelven los diferentes casos.
Una de las opciones que se puede configurar a nivel de hipervínculo, de documento o de servidor web en los navegadores es el funcionamiento de la política para el HTTP Header "Referrer", para mejorar la seguridad de una aplicación web. Para entender en qué consiste esta política, primero hay que hacer un pequeño resumen de cómo funciona el campo HTTP Referrer que se envía desde los navegadores que cada vez que se hace clic en un hipervínculo de un documento HTML.
Figura 1: Pon una "Referrer Policy" y mejora la seguridad de tu aplicación web
La idea es que cuando se llega a un sitio al que llamaremos URI_destino, a través de hacer un clic en un enlace en un sitio al que llamaremos URI_origen, el navegador envía una cabecera HTTP al servidor URI_destino que se identifica como "Referrer" y donde se encuentra la dirección absoluta o relativa del URI_origen donde estaba el enlace que le llevó al lugar en que el navegador está ahora.
Esto puede ser muy útil o muy peligroso si no se controla, ya que se podrían enviar direcciones internas de sistemas privados, o direcciones URL de aplicaciones privilegiadas que necesitan de unas credenciales para entrar a sitios no deseados. El uso de esta cabecera no se creo pensando en los posibles riesgos de seguridad, sino como se recoge en el RFC del IETF, para que los administradores de los sitios pudieran hacer estadísticas, crear backlinks, etc...
Figura 3: Campo Referrer enviado desde el cliente con una URL completa
Sin embargo, tiene una fuerte implicación en la seguridad, y alguien podría plantear un ataque de CSRF (Cross-Site Request Forgery), XSPA (Cross-Site Port Attack), o simplemente de phishing, a través de las direcciones URL que quedaran filtradas en las cabeceras HTTP Referrer que envían los navegadores de Internet. Para mitigar esta problemática existen varias configuraciones distintas.
Políticas Referrer: Configuraciones
Como se puede ver a continuación, se pueden establecer diferentes políticas de seguridad para evitar que la URL con los parámetros y sus valores - donde pueden filtrarse nombres de usuarios, directorios privados, cookies de sesión o información sensible de una organización - acaben en las estadísticas de un sitio remoto o en las manos de un tercero.
Los valores que pueden configurarse en las políticas Referrer son los siguientes, y cada uno forzará un comportamiento diferente en el navegador.
- no-referrer: En este caso, no se enviará nunca el HTTP Header Referrer desde el cliente.
- no-referrer-when-downgrade: Este es el valor por defecto en muchos navegadores y consiste en que se envía Referrer con la URL de la web si el destino es igual o más seguro. Es decir, se envía cuando el hipervínculo va de una página HTTP a una página HTTP, cuando va de una página HTTP a una página HTTPs y cuando va de una página HTTPs a una página HTTPs, pero no cuando va de una página HTTPs a una página HTTP.
- origin: Con este modificador, el valor Referrer que se envía no especificará la dirección URL completa, y solo llevará en nombre del dominio y el protocolo. Es decir, se elimina el Path de la dirección URL de origen del hipervínculo.
Figura 5: Ejemplo con valor origin
- origin-when-cross-origin: En este caso, cuando el hipervínculo es dentro del mismo dominio, se envía la URL completa, y cuando el hipervínculo es a otro origen, se envía entonces solo el dominio y el protocolo de la URL, sin el Path.
Figura 6: Ejemplos de origin-when-cross-origin
- same-origin: Con este valor, el HTTP header Referrer se enviará cuando el hipervínculo sea dentro del mismo dominio y no se enviará cuando sea entre distintos dominios.
Figura 7: Ejemplos con same-origin
- strict-origin: Solo se envía en el Referrer el origen del hipervínculo (solo el dominio y el protocolo de la URL sin el path) a un destino más seguro. Nunca en un hipervínculo HTTPs-HTTP.
Figura 8: Ejemplos con strict-origin
- strict-origin-when-cross-origin: Se envía en Referrer la URL completa a un destino dentro del mismo dominio más seguro, y solo el dominio y el puerto a un destino igual o más seguro, pero nada a un destino menos seguro.
Figura 9: Ejemplos con strict-origin-when-cross-origin
- unsafe-URL: En este caso, se envía la URL completa a cualquier destino pero sin valores en los parámetros de la URL (para evitar el envío de nombres de usuarios, cookies de sesión o información sensible).
Políticas Referrer: Establecimiento de política
La primera forma de configurar el comportamiento del navegador con los campos Referrer es a nivel de documento HTML con el uso de una META Tag llamada Referrer donde se establece una política para todos los hipervínculos que se generen - tanto de forma estática como de forma dinámica - desde esa URL.
Figura 10: Algunos valores de la Meta Tag "referrer" en HTML
Añadir un código Javascript que configure la política de tu aplicación web que tú quieras sería algo como lo que tienes en la imagen siguiente, y te permitiría automatizarlo en todas las webs si lo introduces en alguna de las librerías que uses siempre.
Figura 11: Configuración de Meta Tag Referrer desde Javascript
Si no se ha establecido la política a nivel de META Tag, ésta se puede cambiar a nivel de hipervínculo en la etiqueta "A" con el atributo rel="noreferrer", que permitiría evitar en un enlace filtrar la URL de la ubicación del enlace actual.
Figura 12: atributo "noreferrer" en hipervínculos
Éste, como se puede ver en la imagen siguiente suele ir acompañado del modificador noopener que evita ataques de phishing en enlaces con target=_blank, como ya os conté hace tiempo, y que pueden ser muy peligrosos para la seguridad de tu sitio web.
Figura 13: HTTP Header Server-Side "Referrer-Policy"
Por último, y esto es algo que es bastante novedoso, se puede utilizar un HTTP Header llamado Referrer-Policy a nivel de servidor web, para que el propio servidor, sin necesidad de que una aplicación web manualmente lo configure, pueda establecer la política que considere adecuada.
Figura 14: HTTP Header Server-Side "Referrer Policy"
En la Figura 14 se puede ver cómo el servidor envía este Header para establecer cuál es la política que se quiere configurar en el navegador. Y utilizando el servicio de Security Headers puedes comprobar si un determinado sitio la está utilizando o no.
Figura 15: Referrer-Policy en Security Headers
Reflexiones finales
Lo importante de esto es que entiendas que cualquier enlace - ya sea dinámico o estático - que no tenga una política Referrer controlada puede ser un leak de información. Si tienes una aplicación web que permite a usuarios inyectar código HTML y generar hipervínculos, o tu aplicación genera enlaces a partir de información dinámica, y no tienes controlada la política Referrer a nivel de enlaces, documentos o servidor web, puedes estar abriendo la puerta a ataques que no te esperas.
Dentro del proceso de fortificación de una aplicación web debes tener en cuenta estas opciones, y por supuesto, si lo que estás haciendo es una auditoría de seguridad o un pentesting, deberías informar al cliente de cuál es el nivel de la política que tiene establecida. Nosotros en nuestro sistema de pentesting persistente Faast miramos con cariño la políticas políticas de fortificación, que van desde los Referrers, la configuración SRI, los filtros AntiXSS y Anti-ClickJacking, las fugas por Metadatos, etcétera, para reportar una alerta si no están controladas las opciones de fortificación.
El pasado viernes 14 de Abril - viernes santo en España - The Shadow Brokers publicó una gran cantidad de herramientas pertenecientes al Arsenal de la NSA. Se puede encontrar dichas herramientas en el repositorio de Github de misterch0c.
Figura 1: Hackear Windows 7 & Windows Server 2008 R2 con ternalblue y Doublepulsar de ShadowBroker usando Metasploit
Sheila formuló una pregunta interesante en su paper y es: ¿Por qué Eternalblue & Doublepulsar? La respuesta es sencilla, ya que entre los exploits que se publicaron, Eternalblue es el único que se puede utilizar para atacar sistemas Windows 7 y Windows Server 2008 R2 sin necesidad de autenticación. Por lo que, Eternalblue es el exploit que nos permitirá aprovecharnos de un fallo de seguridad en el protocolo SMB para que, posteriormente, Doublepulsar pueda inyectar remotamente, por ejemplo, una DLL, ya que existen otras posibilidades.
Dichoe esto, el pasado jueves mis compañeros Sheila y Claudio Caracciolo (@holesec) me preguntaron por la posibilidad de hacer una migración del exploit Eternalblue que es utilizado en Fuzzbunch en el leak a mi querido Metasploit. El gusto por la seguridad y por la tecnología nos puede y nos pusimos de forma rápida y ágil manos a la obra en ElevenPaths.
Tras revisar paso a paso el trabajo de Sheila, empecé a hacer mis pequeñas pruebas. El pasado jueves no sabíamos bien qué cosa hacía el exploit de Eternalblue, y observando Fuzzbunch vimos que lo único que hacen es lanzar el binario contra un target concreto. No tenemos el código del exploit para poder portarlo completamente. Entonces, el plan era migrar la configuración de los binarios y la ejecución de éstos para que desde Metasploit se pudiera hacer. Manos a la obra.
FuzzBunch: Loader de binarios
Analizando FuzzBunch te das cuenta que se genera una serie de ficheros XML asociados a un proyecto en curso y que esos ficheros XML son los que tienen los parámetros y opciones con las que se lanzan los binarios, en este caso, exploits o payloads. El primer objetivo era entender bien los archivos XML, ver qué era lo necesario y poder ejecutar el binario sin utilizar FuzzBunch.
De los tres ficheros XML que se generan, acabé viendo que el importante es el de InConfig o configuración de entrada, ya que es el que el exploit lee para poder ejecutarse. En la imagen siguiente puede verse como, al lanzar el binario por sí solo, no se encuentra el fichero XML de configuración y el exploit no es lanzado. Sin embargo, cuando le ponemos el fichero XML correctamente, el binario es lanzado con la configuración indicada en el archivo de configuración InConfig.
Figura 4: Ejemplo sn y con el fichero InConfig.xml
En la siguiente imagen, se puede ver el contenido del fichero InConfig.XML para Eternalblue. En él se indican los tipos de datos, las posibilidades y los valores que tienen los atributos o variables.
Figura 5: Contenido de InConfig.XML
Analizando esto llegamos a una conclusión: Podríamos hacer un módulo de Metasploit que implemente la configuración del XML de Eternalblue, posteriormente el de Doublepulsar que será muy similar, generar una DLL con el Payload que el usuario elija en Metasploit y lanzar ambos binarios, el exploit y el paylaod.
Otro problema: ¿Windows?
Por el camino surgió otro problema, y es que el exploit Eternalblue y Doublepulsar son binarios para Windows. Le pregunté a Sheila y ella me contestó "¿Quién utiliza Metaspoit en Windows?". Con la boca chica pensé en confesar que yo algunas veces (te toca torear en pelear en el campo de batalla que te toca), pero ella estaba en lo cierto, generalmente Metasploit se utiliza en sistemas Linux. Además, nosotros queríamos hacerlo con nuestro querido Kali Linux.
La respuesta aquí no se hizo esperar, nos tocaría tirar de Wine para que el módulo de Metasploit lo utilice y pueda lanzar los binarios con sus configuraciones. Hay que tener en cuenta que para que el módulo funcione correctamente en sistemas Kali Linux tenemos que tener instalado Wine con compatibilidad para binarios de 32 bits.
Figura 6: Uso del modulo auxiliary (cve-2017-010) en Metasploit
Si eres un personal de IT te recomendamos que apliques los parches de seguridad para esta vulnerabilidad lo antes posible las máquinas de tu empresa o dominio, ya que es una vulnerabilidad crítica que podría ser explotada por cualquiera, al no requerir la interacción por parte del usuario, solamente disponer de conectividad con la máquina.
Nuestro módulo para Metasploit: eternalblue_doublepulsar o eternal11
La historia del nombre del módulo nos daría para otro artículo entre Sheila y yo, pero baste decir que le pusimos eternal11. El algoritmo utilizado para este caso os lo dejo aquí en un sencillo pseudocódigo:
• Disponemos de un SKELETON del fichero XML de Eternalblue. Este SKELETON contiene una serie de palabras clave, por ejemplo %RPORT%, %RHOST%, %TIMEOUT%.
Figura 7: Skeleton.XML de Eternalblue
• Cada vez que invocamos la función exploit este fichero es copiado con el nombre Eternalblue-2.2.0.xml, el cual es el que utiliza el binario para leer los valores.
• Una vez copiado el fichero con el nombre original, se sustituye en el fichero las palabras clave por los valores que el usuario introduzca en los atributos de Metasploit. Por ejemplo, si el usuario configura RHOST apuntando a la dirección 10.0.0.10, el campo %RHOST% del fichero XML será sustituido por la dirección IP real. Así ocurre con todos los campos.
• Ocurre igual con el XML de Doublepulsar. Tenemos un SKELETON dónde se irán sustituyendo los valores, en este caso los valores personalizables son: %RHOST%, %RPORT%, %TIMEOUT%, %TARGETARCHITECTURE%, %DLLPAY%, %PROCESSINJECT%.
• A continuación, se genera una DLL con el Payload que se haya setteado con Set PAYLOAD. La DLL se almacenará dónde se indique en el atributo PathDLLInjection del módulo.
• Después, se lanzan los binarios: primero Eternalblue y después Doublepulsar.
El módulo desarrollado tiene las siguientes opciones avanzadas:
• TargetArchitecture: Podrá elegirse entre x86 y x64. Le indica a Doublepulsar la arquitectura dónde inyectará la DLL.
• PathEternalBlue: Indica la ruta dónde se encuentra el binario de Eternalblue. Hay que recordar que el sistema, si estamos en Linux, debe contar con Wine. Por otro lado, hay que tener cuidado con las dependencias que tiene el binario, librerías en x86 o x64, tienen que ser accesibles por el binario, y por Wine en el caso de Linux.
• PathDoublePulsar: Indica la ruta dónde se encuentra el binario de Doublepulsar.
• PathDLLInjection: Indica la ruta dónde se almacenará la DLL. Además, este path se incluirá en el XML de Doublepulsar para que el binario sepa de dónde cargarla.
• NameDLL. Nombre que se le dará a la DLL. Por defecto es eternal11.dll.
• ProcessInject: Proceso en el que se hará la inyección de la DLL.
Y por fin, cuando lancemos el módulo contra un sistema vulnerable al CVE-2017-010 de Windows 7 o Windows Server 2008R2 veremos algo parecido a esto que podéis ver en la imagen siguiente.
Figura 8: Explotación con éxito del módulo de eternal11 sobre un Windows vulnerable
Ha sido divertido pasar unas horas locas trabajando en esto e intentando hacer un módulo que pueda ayudar a auditar los sistemas Microsoft dónde Eternalblue sigue presente. En el siguiente vídeo tienes una demostración de este módulo funcionando.
Figura 9: PoC de explotación de Eternalblue y Doublepulsar con Metasploit
Y también la tienes disponible la PoC para los equipos Windows 7 y Windows Server 2008 R2 en versiones x64, que también funciona, como podéis ver en este vídeo.
Figura 10: PoC de explotación de Eternalblue y Doublepulsar con Metasploit sobre Windows 7 y Windows Server 2008 R2 en versiones x64.
Actualiza lo antes posible todos tus sistemas Microsoft Windows vulnerables y protégete de las amenazas que han surgido con este leak de exploits. Quiero agradecer el trabajo de mi compañera Sheila A. Berta y como viene en la descripción del módulo:
“** THIS IS AN INTEGRATION OF THE ORIGINAL EXPLOIT, IT'S NOT THE FULL PORTATION**”
Hoy día 23 de Abril se celebra en España el día del libro, coincidiendo con el día del idioma Español, y desde 0xWord nos vamos a sumar a la celebración de esta fecha con la publicación de un código promocional del 10%de descuento que vamos a activar durante las 24 horas de la jornada.
Figura 1: Cupón 10% descuente de 0xWord para comprar hoy en el "Día del Libro"
Es decir, desde las 00:00:00 horas hasta las 23:59:59 horas del día 23 de Abril en horario de España, tendrás la posibilidad de acceder a cualquier libro de 0xWord o 0xWord Pocket, pendrive de Cálico Electrónico o pack oferta, con un 10 % de descuento.
Figura 2: Cupón descuento para el día del libro "DIALIBRO2017"
Para ello, durante el proceso de compra debes introducir el código: DIALIBRO2017. Sin tilde, en mayúsculas, y todo junto, cuando vayas a hacer el pedido en la tienda de libros 0xWord, y recibirás inmediatamente el descuento.