La suplantación de identidad es uno de los riesgos más importantes que encontramos en nuestra vida digital moderna.
Básicamente consiste en un engaño en donde por medio de una acción alguien se hace pasar por otra persona para llevar a cabo algo.
Hablamos de Suplantación de Identidad en WordPress
La suplantación de Identidad más conocida es el caso de Phishing. Se trata de correos recibidos que intentan adoptar perfiles falsos de Bancos, Compañías Telefónicas, etc, con el fin de recopilar información o sustraer datos sensibles.
Sin embargo, el Phishing no es el único tipo de engaño para suplantar una cuenta digital, y en este artículo te propongo llevar adelante una Prueba de Concepto (PoC) para comprender los riesgos de una mala planificación y cómo puedes llegar a mitigarla.
Tabla de contenidos
Prueba de Concepto en WordPress
Para realizar una suplantación de identidad, vamos a trabajar con una cuenta de usuario registrado en WordPress, con los privilegios bajos, como por ejemplo la de suscriptor, que solo cuenta con permisos para publicar comentarios.
Necesitamos preparar un escenario de trabajo, que puede ser alguna implementación que tengamos que auditar o simplemente un pequeño proyecto en WordPress de prueba instalado en un servidor local ya que estas prácticas no es recomendado realizarlas en tu Hosting.
El primer requisito que necesitamos, es utilizar la última actualización de WordPress en la rama 4.8.x, que a día de la fecha se trata de la versión 4.8.7 publicada el 5 de Julio del 2018. Luego, más adelante, vamos a ver que ocurrió a partir del lanzamiento de WordPress 4.9
Las estadísticas de W3Techs indican que 3 de cada 10 webs que se encuentran creadas con WordPress, utilizan una versión menor a la rama 4.9.x por lo cuál el impacto que tiene esta funcionalidad mal implementada es muy alta.
Por otro lado, para que cualquier usuario tenga la posibilidad de realizar un comentario dentro de la web, la misma requiere que tenga la capacidad de que los usuarios se puedan registrar.
Normalmente, esta es una opción que se encuentra en el menú de administración Ajustes > Generales y un check con la leyenda “Cualquiera puede registrarse”.
A continuación podemos indicar cuál es el perfil que podemos adoptar para este nuevo usuario que se va a registrar. Este tipo de configuraciones es más común de lo que se cree, y muchas webs la utilizan para recopilar una Lista de Usuarios que comentan en su web, Listas de Correo, etc.
Haz clic en la imagen para ampliarla
Es más, muchos proyectos en la web, como estrategia para obtener más usuarios registrados, agregan una configuración que indica que no es posible realizar un comentario hasta que el usuario no se encuentre registrado.
Retomando nuestro ejemplo, suponemos que tenemos registrado un usuario cuyo username es “suscriptor” y su email “suscriptor@miweb.com”. Para este punto no hay ningún dato especial, de hecho se realiza con el usuario de menor privilegios posibles.
Con el usuario “suscriptor” iniciamos sesión dentro de WordPress. Luego nos dirigimos a cualquiera de los Post activos y publicamos un comentario, donde propongo publicar el siguiente texto “Comentario con la identidad original”.
Aprovechando que tenemos una sesión dentro de WordPress, nos dirigimos a “Editar mi Perfil”. Aquí puedes ver que es el único lugar dentro del Dashboard de administración que un usuario con este perfil puede realizar.
Para iniciar el engaño, donde se encuentra el campo de nombre podemos agregar “Usuario”, en el campo Apellido cambiarlo por “Falso”, en el listado que dice “Mostrar este nombre públicamente” puedes escoger la combinación de Nombre + Apellido para notar aún más el cambio y aprovechar para que el ataque sea más creíble, y finalmente en el campo “Correo electrónico” cuya restricción es de carácter obligatorio, agregar cualquier cadena de caracteres que contemple las restricciones de un correo electrónico típico.
Por ejemplo, un ‘string’ alfanumérico que contenga “@” y que seguramente corresponderá a un dominio. Puedes utilizar “info@tudominio.com”.
Haz clic en la imagen para ampliarla
En este apartado, cuando mencionamos la palabra, “Cualquier correo electrónico” hacemos mucho énfasis en este punto, por que da igual lo que se agregue allí, no será validado por ningún mecanismo ni tendrá una restricción extra, simplemente se cambia de correo y listo.
s posible que en muchos casos al realizar este cambio de correo electrónico se pierda la sesión con la que nos encontramos autenticados, pero no pasa nada, nos volvemos a autenticar con las mismas credenciales del usuario “suscriptor” y continuamos con la prueba.
Ahora bien, si fueron más observadores, habrás notado que ahora al ingresar su nombre no es más suscriptor sino “Usuario Falso” y qué crees que va a ocurrir cuando quieran escribir un comentario? …
Efectivamente, va a ser posible publicar un comentario con una Identidad Digital Falsa o suplantada a nombre de otra persona, en este ejemplo “Usuario Falso” y con su nuevo correo electrónico “info@otraweb.com”.
Para continuar con la demostración, podemos publicar por ejemplo “Comentario con Suplantación de Identidad” y le pulsamos sobre el botón de Comentar.
A partir de ahora, bajo la mirada de cualquier persona que visite la web y que lea los comentarios puedes comprobar que se trata de dos identidades diferentes las que publicaron, es más si se muestran los correos electrónicos confirmarán esa hipótesis.
Para finalizar esta prueba de concepto y limpiar los campos que modificamos anteriormente, basta con quitar la información en los campos de Nombre y Apellido o cambiarla por la que estaba al principio, lo mismo con el Nombre que muestra WordPress y finalmente escribimos el primer correo electrónico.
¿Volvemos a realizar las pruebas? Siempre es muy interesante poder jugar con este tipo de “funcionalidades” y configuraciones, en entornos controlados de pruebas siempre es imprescindible probar la mayor cantidad de combinaciones posibles de configuraciones, que a priori no parecerían importantes, pero que sin embargo tienen un alcance mayor cuando las llevamos al extremo.
Podemos ir al mismo post donde previamente publicamos nuestros comentarios y escribir por ejemplo “Nuevo comentario con la Identidad original” y pulsamos sobre el botón de Comentar.
¿Por qué WordPress muestra esa información?
Me imagino que te estarás preguntando al igual que me preguntaba yo, ¿Cuál es la razón por la que WordPress muestra esta información, tanto la auténtica como la suplantada? Como todo debería tener una explicación, la razón es la siguiente:
Por cada comentario que un usuario realice, ya sea que se encuentre autenticado en WordPress como uno invitado, y cuando hablo de invitado es que no tiene ningún registro en la tabla de usuario, genera un registro de información sobre la tabla “wp_comments” de la base de datos que tiene registro de toda la actividad de WordPress.
Allí almacena un identificador único para cada comentario en “comment_ID”, además el identificador de cada Post en el campo “comment_post_id” y a partir de aquí almacena información como el nombre del autor de comentario “comment_author”, correo electrónico en “comment_author_email”, y más información, como la dirección IP, fecha, estado del comentario, etc. Finalmente como último campo el identificador del usuario en “user_id”.
Como pudiste observar, WordPress registra todo, pero al momento de visualizar la información muestra los datos asociados al registro, allí es donde ocurre el error, ya que como vimos en la anterior prueba, tuvimos la posibilidad de manipular a gusto la información que asocia a una Identidad Digital y que luego finaliza mostrándose en vez de realizar una query con los datos que se encuentran asociados al user_id.
Finalmente, cuando un usuario administrador puede ver la lista de todos los comentarios publicados, los cambios que hicimos con la cuenta digital es casi imperceptibles.
¿Qué ocurrió a partir de WordPress 4.9?
Quienes estamos muy pendientes del día a día en las novedades de WordPress, recordamos a mediados de Noviembre del 2017 se publicaba la versión estable de WordPress 4.9 llamada “Tipton”.
Para esta versión, se añadieron un montón de mejoras y nuevas funcionalidades en el “core” buscando siempre mejorar la experiencia de usuario al administrar la plataforma.
Y es aquí, a partir de esta versión donde se propone e implementa una aproximación a la solución de Suplantación de Identidad en la publicación de los comentarios.
Si bien aún es posible manipular los campos propios de cada perfil de usuario, ahora WordPress solicita la verificación del correo al cual se quiere modificar.
Haz clic en la imagen para ampliarla
Por lo cuál para modificar el correo electrónico es necesario ingresar un correo válido, ya que es allí donde se enviará un hash de activación tipo MD5, que en algún momento buscaremos los mecanismos para verificar su composición o realizar ataques de fuerza bruta basado en hash sobre la url de validación, pero eso será en otra ocasión, donde busquemos caminos alternativos para saltar esta verificación y llevarla al extremo.
De esta manera, aún es posible realizar o suplantar identidad, solo que a partir de esta versión y especialmente de la rama 4.9.x estos controles ya fueron implementados por medio del issue #42967 (https://core.trac.wordpress.org/ticket/42967) donde se exponía este tipo de problemáticas catalogado como un componente de seguridad y que casualmente es en esta rama donde se le da solución.
Por otro lado, su implementación era casi inminente ya que también se comenzaba a hablar sobre la adecuación para el cumplimiento de la Ley RGPD.
¿Cómo se puede mejorar la seguridad?
Con este pequeño y simple ejemplo, podemos ver cómo es posible aprovecharnos de una funcionalidad para otros fines, como el Black SEO y otras cosas que mejor no mencionar o dar tantas ideas.
Pero a su vez, es muy importante conocer esta problemática, ya que en muchas oportunidades dejamos las configuraciones de WordPress por defecto y la verdad es que no siempre deberíamos dejar que los usuarios se registren. En muchos proyectos incluso no se requiere de la utilización de comentarios, etc.
Lo importante en este punto es que antes de llevar las ideas directamente a un proyecto en WordPress, nos tomemos el tiempo necesario para saber con detalle cuales son las características que realmente va a utilizar el proyecto.
Por otro lado, sabiendo que existe una solución parcial a esta problemática basada en la rama de actualización 4.9.x ¿Vas a continuar trabajando con tu versión vulnerable a estas pruebas de concepto?
En Webempresa tenemos publicados muchos tutoriales de cómo es posible realizar una actualización de versiones, ya sea automática o manual y siempre alentamos a mantenerlo actualizado, por la importancia y los riesgos que ameritan.
El Doble Factor de Autenticación, ¿es necesario? Siempre que se pueda aplicar una medida de seguridad extra al usuario lo vamos a estar dotando de confianza y saber que protegemos su identidad digital.
Al final es necesario saber que todas estas implementaciones tenemos que ir incorporandolas a nuestra vida digital. Al principio nos parecía extraño o tedioso tener que verificar si una URL tiene el “candadito” o es https. Con el pasar del tiempo adoptamos esa medida de seguridad y hoy es una verificación que todos realizamos. Con el caso del Doble Factor de Autenticación va a pasar igual.
Por esa razón, los clientes de Webempresa ya tienen la posibilidad de utilizar CiberProtector, que además de todas las características que incorpora como VPN, Generador de contraseñas, Administrador de Claves, ahora tiene la capacidad de ser un Doble Factor de Autorización.
Haz clic en la imagen para ampliarla
Vídeo de la Prueba de Concepto
En el siguiente vídeo te muestro de forma general una prueba de concepto basada en la suplantación de identidad en comentarios en WordPress..
¿Por qué es importante utilizar 2FA?
¿Alguna vez escuchaste hablar de la autenticación de dos factores o como también se conoce 2FA? En principio se trata de una medida de seguridad adicional al momento de iniciar sesión.
En este punto, no basta con saber o ingresar correctamente un usuario asociado a su contraseña, sino que además el usuario debe demostrar al sistema que tiene algo que lo identifica, por ejemplo un token o un código de verificación en su teléfono móvil.
Lo interesante de esta medida de protección es que no está basada solo en usuario y contraseña, sino que incorpora diferentes alternativas que van a hacer que el día de mañana se incremente la confianza en el proyecto web simplemente por utilizar nuevas alternativas de protección.
Conclusiones
Las buenas prácticas nos dicen que el orden de las acciones son “Planificar y luego Ejecutar” no al revés.
WordPress incorpora muchas bondades y acelera el modelo de diseño, desarrollo e implementación. Por esa razón tenemos que tomarnos el tiempo de probar funcionalidades y comportamientos de las que el día de mañana vamos a utilizar.
Esta prueba de concepto de suplantar identidades digitales en la publicación de comentarios no es un tema menor, que en este momento se encuentra en una fase de solución pero así como estos temas podemos encontrar otras funcionalidades interesantes.
Si queremos generar una marca a nuestros usuarios/clientes y las nuestras propias por medio de la implementación de WordPress como sitio web de cara a Internet, es indispensable comenzar a utilizar diferentes mecanismos de seguridad para cuidar y fortificar las cuentas digitales de nuestros usuarios.
¿Te ha resultado útil este artículo?
Ingeniero en Computación, Analista de Sistemas y Técnico en Informática Certificado en Tecnologías MikroTik MTCNA.
Diplomado en Ethical Hacking por la UTN de Buenos Aires. Autor del libro “Máxima Seguridad en WordPress” Editorial 0xWORD y Autor de WPHardening