Por el contrario, Twitter sí que está poniendo freno a esto, y aunque de vez en cuando se cuela una campaña de estas características, todas las denuncias que yo he puesto, las han ejecutado a la primera y los han eliminado ipso facto.
“Les estamos pidiendo que, mediante la autorregulación, se comprometan a que sus redes o páginas no sirvan de vehículo de difusión de engaños y posibles delitos a cambio de aumentar sus ingresos. Pero si no lo hacen, si no asumen su responsabilidad, nosotros ejerceremos la nuestra proponiendo al Gobierno que analice una nueva regulación en España, para prohibir y sancionar este tipo de prácticas”.
Y no puedo estar más de acuerdo. Es una pena lo fácil que es para un Falso Broker es parecer una entidad regulada y de confianza usando campañas de Ads que los sacan junto a noticias serias de medios generalistas, solo por el hecho de venir de una plataforma de anuncios como Google, Facebook u otra similar.
El miércoles y el jueves de esta semana me encontré con dos campañas promocionadas de malvertising en Twitter con estafas de Falsos Brokers de BitCoin que además utilizaban la imagen del CEO de Google, Sundar Pichai, para convencer a los ingenuos. Nada nuevo bajo el sol, solo que aprovechaban la previa de la cena de Nochebuena para acelerar, ya que si tenían a víctimas nuevas capturadas, podrían hacer de altavoz durante la cena, ya que estarían en el momento todavía de ver cómo suben las ganancias de las nuevas víctimas.
Figura 1: Los cuentos de la lechera de BitCoin que usan
Vaya por delante que no estoy demonizando las criptomonedas, ni los BitCoins, ni la Web 3.0, que hasta nosotros llevamos un tiempo trabajando en ese concepto, como es el caso de Movistar Tokens, donde se premian con Tokens a los usuarios. Y por supuesto, si sabes qué es lo que estás haciendo, y cómo lo estás haciendo, puedes invertir en cualquier criptomoneda, pero sabiendo dónde y cómo, y no con estas campañas de Falsos Brokers.
¿El problema? Pues que para mucha gente que no entiende qué son las criptomonedas, cómo funcionan, cómo se compran y cómo se gestionan, acaban cayendo como moscas en estas estafas de los Falsos Brokers, que además se lo curran usando imágenes de personas famosas, cómo el caso de Sundar Pichai, CEO de Google, que os contaba al principio que ha sucedido esta semana.
Figura 4: Estafa con la imagen de El Mundo, ABC, El País, etc...
En esta ocasión, hablé con el equipo de Twitter, y ellos rápidamente quitaron las campañas y eliminaron las cuentas que estaban utilizando dentro su red para difundir la web de los Falsos Brokers de BitCoins, y en cuestión de minutos ya estaban todas eliminadas. Pero seguro que vuelven, con anuncios en medios tradicionales, con campañas en redes sociales, mensajes en foros, con cualquier forma de pesca para conseguir víctimas propicias.
Figura 6: Misma historia del taxista pero en Australia
Lo curioso ha sido que, buscando información sobre las campañas que utilizan, me he topado en uno de los dominios que utilizan para hacer las Fake News, con "Los Cuentos de Habichuelas Mágicas con BitCoins" que utilizan, y me han sorprendido las historias. Todas maravillosas de gente normal, que se forra por ser más listo que los demás. Lo que muestran claramente es que, el perfil de personas que buscan es gente trabajadora, con poco conocimiento de informática, y que haya oído cosas de los BitCoins.
Figura 7: Un jubilado de Zaragoza se encuentra un móvil. Lo desbloquea.
Descubre una plataforma de BitCoins... y se forra.
Taxistas, inmigrantes, jubilados, pequeños empresarios y autónomos, etcétera. Personas normales que se topan con la "habichuela mágica" del BitCoin y se forran. Y el mismo presentador - que parece sacado de Los Simpsons -, cuenta todas las historias para captar a los pobres incautos.
Figura 8: El mismo presentador. Historia distinta
La verdad es que las historias son de tanta fantasía que parece mentira que funcionen, pero lo cierto es que buscan eso, personas que quieran creer en eso. Da bastante miedo ver cómo de metido en Internet están estas estafas, y la cantidad de personas que acaban viendo cómo sus ahorros desaparecen.
Figura 9: La misma historia con una azafata
No os pongo más que una historia más que he encontrado, pero como veis este sitio está focalizado en Australia y en España, y las campañas de Fake News no son con famosos, sino con gente normal, así que mucho cuidado con estos, que además usan logos, referencias, y datos de medios de comunicación populares para hacer que parezcan más reales las historias.
Figura 10: Un hombre tuvo que contar su secreto de las inversiones en BitCoins
cuando le pillaron con 461.000 USD en el aeropuerto. Su gran secreto...bye!
Y esto es todo por hoy. Recordad, no se trata de demonizar las criptomonedas, sino de que tengáis cuidado con vuestros familiares y amigos si no entienden. Y si tienes un Euro o un Dólar en una plataforma de brokers de BitCoin, asegurados que podéis sacar dinero probándolo. Si no... malo.
Hace ya varias semanas apareció la nueva actualización de WhatsApp conlos famosos “Estados”. La experiencia nos ha dicho que con cada nueva modificación del código y con la ampliación de funciones, suelen venir nuevas posibilidades de encontrar fallos o de desarrollar hacks. Así que me puse a revisar esta característica para ver si existían nuevas formas de espiar WhatsApp o había que tomar nuevas medidas para fortificar la seguridad y privacidad de WhatsApp.
Figura 1: Ataque de Growth Hacking con WhatsApp Status
Después de informarme un poco acerca de los estados veo que es exactamente idéntico a Instagram, Facebook o bueno, a Snapchat. La idea de esta opción de los Estados es que puedes poner un mensaje público que sea parte de tu contacto en la agenda de contactos de WhatsApp de todos aquellos que te tengan en ella.
Figura 2: WhatsApp Status
Es decir, tu configuras tu estado y éste es parte de la lista de estados que verán todas las personas que te tengan añadido en su agenda. Es decir, si alguien te tiene añadido en su agenda, entonces tu estado aparecerá en su lista de estados. Y esto abre una posibilidad muy curiosa para hacer un ataque de Growth Hakcing con la lista de estados si somos capaces de inyectar en un teléfono en la agenda de contactos, para aparecer siempre el primero en la lista de estados.
PoC: Una app que te inyecta un contacto falso
Para probar esta hipótesis decidí hacer una aplicación Android muy simple que al instalarse, pide los permisos que necesita para poder inyectarte un contacto en la agenda, como cualquier otra aplicación de Android que solicita este permiso. Es más, si solicitas muchos permisos tal vez éste pase desapercibido.
Figura 3: La app solo añade un contacto para hacer el spam de estados en WhatsApp
La app como PoC lo único que hace es solicitar los permisos y añadir un contacto a la agenda cuando se da al botón. Es más, si solicitas muchos permisos tal vez este pase desapercibido. Este es el código necesario para agregar un nuevo contacto a la agenda.
Figura 4: Código de la app para añadir un contacto cuando se pulsa al botón
Cuando se instala la aplicación automáticamente se guarda un número de teléfono en la agenda del dispositivo (en la PoC, lo he puesto haciendo clic a un botón) mi número de teléfono, el de mi empresa, el de la tienda de mi barrio…cualquiera que quiera utilizarse para luego hacer spam a través de los estados de WhatsApp. En el siguiente vídeo se puede ver cómo funciona el proceso completo.
Figura 5: PoC de Inyectar estados creando un contacto en la agenda con una app
Como se ha dicho antes, al estar en la agenda de contactos del usuario de WhatsApp, bastaría con añadir nuevos estados periódicamente asociados a la cuenta de WhatsApp que ha sido inyectada como contacto, y todas las personas que hayan sido "inyectadas" con este número de teléfono verán el "spam" vía estado de WhatsApp.
Apps que automaticen el "spam"
Si el usuario está - o lo peor - o si alguna vez ha sido parte de la agenda telefónica del usuario, entonces se verá el estado. Luego incluso podríamos hacer un “suicide” a ese mismo usuario, eliminarlo de la agenda y esas personas seguirán viendo mi estado.
Figura 6: Estados visualizado para un contacto que ya ha sido eliminado de la agenda
Y además, la app podría crear y borrar el contacto periódicamente, para evitar ser descubierto de dónde está apareciendo. Mirando en el Big Data de apps de Tacyt, se puede ver que hay más de 96.000 apps en GooglePlay que tienen el permiso de crear contactos en la agenda.
Figura 7: Apps de Android en Google Play descubiertas en Tacyt con permiso para modificar la agenda de contactos
Normalmente la gente tiene un serio problema con las redes sociales y Whatsapp, se está convirtiendo en una, la gente tiene la necesidad de compartir su vida a sus contactos, y ¿Por qué iba a tener yo alguien ajeno a mi vida? Van a aceptar todos los estados y van a enviar todos los estados a todo el mundo.
Growth Hacking
Si se oculta el código mostrado en la app de la PoC en alguna app más o menos popular con miles y miles de instalaciones se podría hacer una campaña de marketing para Growth Hacking en cuestión de segundos, o cobrar por ello a terceros ofreciéndole este servicio completamente “legal” porque el usuario, en definitiva, ha aceptado la instalación de la app con estos permisos.
Esto tendría mucho valor, teniendo en cuenta que además, a día de hoy, todavía no existen anuncios en WhatsApp, con lo que una app se podría adelantar al negocio de la compañía vendiendo este servicio desde un buen número de apps.
¿Cómo evitar caer en este ataque de Growth Hacking?
Tenemos diferentes opciones, y la primera pasa por lo que ya sabemos, que es asegurarnos de que apps instalamos en nuestros dispositivos y qué permisos les damos para qué las apps que accedan a nuestra agenda y la puedan modificar sean solo las que deben.
Figura 9: Ajustes de Privacidad de Estados en WhatsApp
La segunda opción sería bloquear al usuario que nos apareciera en los estados de WhatsApp de forma indeseada, y la última, configurar las opciones de "Privacidad de Estados" para que los estados solo sean compartidos con algunas personas, pero yo pero personalemente desactivaría este servicio, porque los estados de los usuarios de tu agenda seguirán pudiendo inyectar estados.
Otra de las fuentes de información que pueden ser más que útiles dentro de las apps que se suben a lo markets, son las credenciales que se utilizan para acceder a APIs de terceros. Es decir, cada vez que una app de un dispositivo móvil requiere los servicios de una API remota de pago - o que necesita autenticación - tiene que desarrollarse un modelo de autenticación seguro, y esto no siempre se consigue.
Figura 1: Dorking & Pentesting con Tacyt: Las APIs de Terceros
Ya en el pasado, con la publicación del estudio de Play Drone, vimos como muchas apps cuentan con Tokens de Acceso a servicios de terceros hardcodeados en las aplicaciones. De hecho, hay que evitar justo y buscar una alternativa que permita que la app pueda disfrutar de las funcionalidades de las API para hacer un mashup pero sin exponer las credenciales.
Figura 2: Tokens de Acceso descubiertos en apps de Google Play con Play Drone
Yo os dejé una idea de cómo se podría resolver esto en el artículo de "No pongas tus tokens OAuth en tus apps para Android". Además, debes tener en cuenta cuándo necesitas que una app haga algo en tu cuenta y cuando lo que se necesita es hacer algo en la cuenta de un usuario a través de la API, donde deberás hacer un proceso de autorización implícito, como vamos a ver más adelante.
Las API Keys y los accesos
Cuando el sitio en cuestión que ofrece los servicios a las apps remotamente lo hace vía una API Key, eso significa que el desarrollador está exponiendo un Token de Acceso en el código de la app para acceder a las funciones. Al final, esa API Key no deja de ser un Shared Secret, al igual que más o menos lo son las Application Passwords que se usan en sistemas de autenticación que cuenta con un 2FA. Si el API Key queda comprometida, el atacante podrá hacer uso de las funciones, pero nunca podrá poner en riesgo la cuenta. Es una situación de abuso que debe controlarse con otros sistemas de detección y respuesta.
Figura 3: API Key de un SDK hardcodeado en una app de Android
Las API Key, para nosotros, son un elemento de correlación más que nos ayuda a localizar relaciones entre apps en función de cuáles utilizan los mimos valores. Esto ayuda no solo a detectar identidades ocultas, sino también a saber si alguien está abusando del código legítimo de alguien.
Las APIs autenticadas
Por otro lado, si los accesos a las APIs de terceros hay que hacerlo mediante procesos de autenticación, entonces puede que sea más peligroso utilizarlas en apps, ya que obligará a los desarrolladores a exponer sus usuarios y contraseñas en el código. Este problema se produce habitualmente cuando una API está pensada para ser utilizada en entornos de servidor, como por ejemplo una aplicación web que tira de una API que está en otro servidor web.
Figura 4: Un acceso a los servicios de PathFinder hardcodeado en apps
Ahí, el el desarrollador no expone sus credenciales de acceso a la API porque se encuentran protegidas en el backend y solo debe asegurarse de que la conexión end-to-end vaya bien cifrada. Sin embargo, cuando una API para entornos web se usa en entornos móviles, las credenciales quedan expuestas y con ello puede que toda la cuenta.
Figura 5: Otro acceso en otra app con credenciales de PathFinder
Buscando por cadenas en los enlaces de las apps como login.pass o user.password, es fácil localizar apps utilizando este tipo de APIs pensadas para entornos web. En este caso se puede ver, por ejemplo, URLs de las API de PathFinder en las que se introduce el usuario y la contraseña por parámetros.
Figura 6: Credenciales de acceso a Schenker en enlaces de la app
Esto pasa con muchas APIs de este tipo. Este es otro caso de una app que utiliza la API de Schenker para acceder a información que luego utiliza para su funcionalidad. Por supuesto, lo que deberían hacer los dueños de estas API es cambiar el modelo y permitir que los usuarios de sus API generen API Keys para sus apps asociadas a sus credenciales.
Los WebServices
A este tema ya le dediqué una entrada tiempo atrás. Se trata de apps que utilizan en el backendWebServices que le dan la funcionalidad al sistema. Estos pueden ser del mismo desarrollador o de un tercero. En cualquier caso, la exposición de un API vía llamadas a WebServices con toda la información pública permite que alguien pueda hacer uso de las llamadas para manipular todo el servicio.
Figura 7: Un WebService en el backend
En el ejemplo de arriba se puede ver un WebService descubierto por un enlace en una app que permite llamar a las funciones hasta de recuperar información de un usuario y obtener el hash de la password que está utilizando.
Los Client ID Secret
Cuando se trata de autorización de APIs de servicios de redes sociales como Twitter, Facebook o Instagram y se quiere que un usuario autorice a la app a hacer algo en las cuenta del usuario a través de la API de la red social pertinentente, se debe utilizar la autorización implicita - o client side -. Esto lo explican muy bien en la web de Instagram donde se deja claro que no se debe almacenar nunca el Client Secret en la app.
Figura 8: Autorización implícita en Client-Side
El Client Secret se utiliza cuando se hace uso de la autorización explícita, diseñada para entornos Server Side como servidores web. Es decir, lo mismo que os explicaba en el apartado de las APIs de terceros. Sin embargo, una búsqueda por la cadena de client_secret y se puede ver que hay miles de apps que los almacenan directamente en las URLs. El resto es negociar una autenticación manual del Access_Token de la cuenta y poder, por ejemplo, crear un servicio automático de followers de cualquiera de estas redes usando esos valores, o manipular la cuenta de otras formas como publicar posts virales para distribuir malware.
Figura 9: Tres enlaces extraídos de 3 apps de Android con los valores de client_secret hardcodeados. Hay miles.
Por supuesto, si tienes una app de tu empresa que hace uso de estos servicios, revisa cómo se han configurado las conexiones. Un simple fallo en la implementación del sistema de autenticación y puedes generar un problema. En la siguiente parte vamos a entrar más aún en la parte de pentesting, así que espero que hayáis repasado vuestros conocimientos de SQL Injection, LDAP Injection y Command Injection.
Hace tiempo atrás hablaba acerca de los peligros que se pueden ocasionar al dar permisos a una aplicación en Facebook y sobre cómo una aplicación puede quedar vulnerable al contener el dominio de la misma un bug de XSS, ya que podría permitir a un tercero poder redireccionar un Access_Token a otro sitio. Siguiendo con este mismo tema, es decir, el de los permisos que se les dan a las distintas aplicaciones, hoy os vengo a contar un caso de una aplicación en particular de Instragram, en la que muchos usuarios han confiado, y le han dado los permisos necesarios para realizar las acciones básicas como dar me gusta, empezar a seguir a un usuario, dejar de seguir a otro, comentar etc...
Figura 1: Growth Hacking en Instagram: Cómo robarle followers a las apps
Una mala gestión de la seguridad en las apps de Instagram podría permitirte ser popular en Instagram sin ni si quiera postear fotos sexy.
Growth Hacking en servicios online
Las técnicas de Growth Hacking se hicieron populares tiempo atrás desde que algunas personas como Mark Zuckerberg, aprovecharon sus conocimientos de hacking para hacer popular sus servicios. Esto lo hizo en sus inicios el creador de Facebook para conseguir que sus portales tuvieran datos de los estudiantes a los que iba dirigido su servicio. Desde entonces, hay muchos que han buscado cómo hacer popular servicios en la red, como el caso de la empresa que vendía Likes de Facebook y que llegó a cambiarse el nombre por el de Mark Zuckerberg, o los que se dedican a vender followers en Twitter. Por supuesto, los equipos de seguridad de Twitter, Facebook, etcétera, intentan detectar este tipo de prácticas y bloquearlas.
Figura 2: El "empresario" que vendía likes que se cambió el nombre a Mark Zuckerberg
Por supuesto, muchos de esos crecimientos no valen nada más que para alimentar el ego o hacer un marketing, pero también sirven para manipular índices de popularidad y salir en otras recomendaciones que puedan atraer más followers reales. Todo cuenta cuando se quiere obtener la máxima difusión de algo en todas las redes. En el caso de hoy, vamos a ver un ejemplo en el que se puede ver cómo un fallo de seguridad en las apps de Instagram pueden hacer que cualquiera se aproveche de ellas, y los usuarios que han dado confianza a las apps acaben siguiendo a gente que no desean.
Un ejemplo de Growth Hacking en Instagram por culpa de una app
El desarrollador de esta app de Instagram en concreto, parece que se ha olvidado que un Access_Token entregado desde una cuenta de Instagram es un código de acceso que se genera cuando un usuario le da permiso a una aplicación para realizar determinadas acciones y que si alguien ajeno a la aplicación consiguiera tal código, éste podría realizar esas acciones a su gusto, tomando control sobre las acciones permitidas por ese usuario.
Realizando unas investigaciones, se me cruzó la idea de que haciendo un poco de Hacking con Buscadores, podría llegar a generar una búsqueda con parte de la query que se utiliza cuando se quiere obtener ciertos datos con un Access_Token desde una API. Como era de esperar, la búsqueda arrojó bastantes resultados pero no solo eso… En los resultados obtenidos se pueden ver Access_Tokens en texto plano, todos indexados por Google y todos provenientes de un sitio en particular, algo bastante curioso.
Figura 3: Access_Tokens en los resultados de Google
Está claro que Instagr.in tiene problemas con la indexación en los buscadores al igual que le pasó a Facebook. Ingresé en algunos de los enlaces mostrados en los resultados de la búsqueda de Google - que como veis hay millones, y echándole un ojo al código de fuente pude localizar en el parámetro next_url de una de ellos un Access_Token. Lo curioso recargando la pagina aparecía otro distinto al anterior. Es decir, era como si dinámicamente se mostrase un Acces_Token distinto cada vez que se realiza una petición al sitio.
Figura 4: Access_Token de Instagram en el código fuente en el parámetro next_url
El único detalle es que no se obtiene el Access_Token del perfil el cual se navega, sino más bien uno aleatorio, o al menos eso es lo que parece. En cualquier caso, solo quedaba comprobar que estos códigos de Access_Token fueran validos y que no hubieran expirado o sido cancelados aún.
Figura 5: Validación del Access_Token en el API de Instagram para desarrolladores
Para ello me dirigí a la API para desarrolladores de Instagram, e hice un GET con el Access_Token obtenido sobre alguna de las acciones permitidas, devolviéndoseme como resultado un OK de parte de la API, pudiendo así, si hubiese querido, realizar acciones con la cuenta de quien fuera el usuario correspondiente a tal Access_Token. Esto es igual de malo, que cuando las apps llevan los tokens de las cuentas hardcodeados.
Prueba de Concepto de Growth Hacking con Instagram
Conociendo esto, se podría hacer un script que pida el código HTML de la pagina y una vez obtenido se la extraiga de ella el valor mostrado de Access_Token y así ir almacenando códigos en una base de datos. Luego, quien sabe, tal vez ofrecer un servicio de seguidores de Instagram, lanzar un mensaje masivo, darle presencia a algún perfil, etcétera. He hecho un pequeño vídeo de prueba con este script en el que se puede ver cómo una cuenta, sin ningún comentario, va siguiente de Followers.
Figura 6: Prueba de Concepto de Growth Hacking en Instagram
Con esto visto, se podría hacer un proceso para construir una base de datos en la que se averigüe a quién pertenece cada Access_Token. Basta con crear una cuenta en Instagram sin ningún follower, usar el Access_Token para seguir a la cuenta y ver quién es el nuevo follower de esa cuenta. Hecho esto, se podría tener bien segmentada la base de datos con las propiedades de todas las cuentas que tal vez como tú, tus amigos o personas de empresas, han confiado los permisos de su cuenta a este tipo de aplicaciones. Ten cuidado con las aplicaciones que aceptas en Instagram o en cualquier otra de tus identidades. Autor: Ariel Ignacio La Cono Email: msignataur@hotmail.com Twitter: @IgnacioLaCono