Esto está basado en un hecho real y que creo podrías tener en cuenta para tu negocio/hogar. Es mi manera de ayudarte. Eso sí, la empresa/cliente la llamaremos ACME, la empresa/colaborador que llamaremos COLABORADOR
No dejes de compartir con las personas que podrían interesarse por esta información.
Un caso real, un caso para tu proyecto.
Hace unos meses me encontraba leyendo varios correos cuando recibí la alarma de que había caído una web. Contesté a la llamada para que no saltara el procedimiento de alertas en el caso de que no respondiera a los avisos.
Al ser una caída puntual, abrí el informe y apunté en el histórico dicha caída. Nada más terminar, verificando que volvía estar la web online, saltó otra alarma y eso ya empezó a oler a quemado.
La web, vamos a llamarla ACME por confidencialidad, tuvo caídas esa noche cada 2 min. y estar de nuevo operativa, a los 3 min.
No lo veía normal porque no era un hosting malo. Todo lo contrario, confiaba ciegamente en donde estaba hospedado.
Al entrar al backend1 me percaté de un usuario que se había creado no hacía mucho y un correo Gmail.
Cuando cojo un mantenimiento, y realizo la auditoria inicial, anoto en un documento lo más relevante y entre estos datos los usuarios administradores. Para que te hagas una idea, antes inspeccionó el WordPress y depende como esté, lo cojo o no.
Se había generado 1714 entradas y en un solo fin de semana. Todas eran entradas de blog creado con la intención de hacer publicidad.
Desde contactos hasta productos de múltiples procedencias, pero todos escritos en inglés.
No fue difícil separar los que estaban generados por los usuarios del negocio por el de este usuario. Teniendo en cuenta que no habían generado tanto. No llegaban a las 30 entradas y sólo 3 productos propios.
Pero no podía tampoco borrar el usuario así como así. Revisé todos los plugins y sus versiones, los usuarios que había, haciendo OSINT2, y encontré la supuesta brecha de seguridad. Un usuario de la agencia que habían desarrollado la web. De 7 administradores, dos eran de la agencia y justo al entrar al dominio del correo me encuentro con la sorpresa. Cerca de 1800 entradas del mismo estilo a nuestra web. Vamos la agencia también la habían hackeado.
Fácil. Aquí algunos puntos que me parecieron interesantes.
Nuestra web, la de ACME digo, estaba en el porfolio.
Usuarios con correos del dominio de la agencia y que seguían teniendo cuentas como administradores en ACME.
Sin entrar al backend de la web agencia, descubrí los usuarios que había y entre ellos, los dos usuarios de la agencia, por cierto.
No hicieron caso de realizar una limpieza de usuarios y en la primera reunión mencionaron el de hacerlo… no fue así.
Fue una advertencia y respondieron que lo harían ellos.
Chabi, ¿qué hacemos?
Sospechamos ya de cómo accedieron. Pero es peligroso borrar el usuario así. ¿Y si no fue de este modo el acceso?, ¿y si una vez dentro ya se aseguró otra puerta trasera?
Un machango3 siempre borra sus huellas y se asegura otra entrada por si ve la necesidad de entrar. Esto último pueden ser mil causas diferentes. Desde asegurarse sus “dominios", jugar o simplemente el hecho de tener otra máquina más en su lista no es para empezar a gritar y tirarse de los pelos. Hay que serenarse.
Hasta ahora teníamos 2 usuarios comprometidos, 1714 entradas que no tenían que ver con el negocio y el camino fácil.
Camino fácil porque no encontraba otra explicación y eso que aún no habíamos hecho un pentesting. La persona con quien hablo empieza a gritar por teléfono. No, no me gritaba a mí. Aunque la web estaba muy abandonada cuando la cogí, pero tampoco es de buen sabor que la persona que lleva el mantenimiento te diga, “Vuestra web ha sido hackeada.” Pero, hay algo importante en los diálogos con la persona que está hablando contigo. Más en una situación así. No la trates de tonta, jamás intentes cargar las culpas a otra persona, jamás de los “jamases”, sueltes perlas como “eso os pasa por no contratar un servicio de mantenimiento”
NUNCA, introduzcas en la conversación lo negativo. Soluciona el problema. Di los pasos, no técnicos, que vas a proceder hacer. Y al final de estas conversaciones, manda un correo repitiendo todo el procedimiento y que te respondan si lo tienen claro. Un día me lo agradecerás y otro día, cuando leas esto, me preguntas el porque.
No tiene sentido perder la cabeza así que le cuento mi plan para que no se agrave más el problema.
Bajo los roles de esos usuarios a suscriptores, que aún así no conviene tampoco, e instalo un plugin de notificaciones. No conviene por la sencilla razón de que si entran de nuevo, si han conseguido escalar privilegio pues lo más seguro que volverán a intentarlo. Hay un 50% que me pille, cuando se conecten, durmiendo, comiendo, haciendo alguna actividad con la familia, etc., pero es un “vaso medio lleno, medio vacío…”
Otra es como se conectan. Quiero decir, no van a acceder a la web con su propia conexión… esto es extenso de explicar, pero para que te hagas una idea, cambiarán algunas cosas en su conexión o simplemente utilizaran otra máquina para hacer puente entre su máquina y tu web. ¿Mejor no sigo, no?, siento tu miedo desde aquí.
A las 72 horas no hubo conexión alguna. Decido borrar los usuarios y automáticamente todas las entradas generadas por el mismo. Una verdadera porquería y una gran limpieza.
Luego terminé el trabajo asegurando el WordPress y con una llamada + correo al cliente.
¿Qué plugins/herramientas utilicé?
Los plugins que utilicé son varios. Pero debo advertirte, aunque me repita demasiado, que la web no se asegura sólo con proteger WordPress. Mi opinión es que controles lo siguiente:
Dominio/Hosting
WordPress o si usas otro CMS
Plugins y plantilla
De hecho, si hablamos de WPO, siempre termino por recomendar lo mismo para optimizar.
Si el machango termina por descubrir, sea cual sea su metodología, el usuario de acceso del FTP, entonces te dará igual tener el mejor plugin de WordPress. Serás hackeado igualmente.
Aún así, pondré los plugins que empleé así como herramientas en esta aventura. Sí, es sarcasmo.
Advanced Cron Manager
https://wordpress.org/plugins/advanced-cron-manager/
Broken Link Checker
https://wordpress.org/plugins/broken-link-checker/
Email Log
https://wordpress.org/plugins/email-log/
Email Notification on Login
https://wordpress.org/plugins/email-notification-on-login/
iThemes Security
https://wordpress.org/plugins/better-wp-security/
WPS Hide Login
https://wordpress.org/plugins/wps-hide-login/
Dmitry
https://github.com/jaygreig86/dmitry
La única herramienta que he usado, que no fuese un plugin, fue Dmitry y que instalé tiempo atrás. Es una herramienta sencilla y que se utiliza para OSINT.
Para este caso, ya que la herramienta tiene algunas opciones, lo he usado para ver si se había creado algún subdominio. Era la herramienta que suelo usar para algún dato en WPO, pero muy rara vez la empleo. En Linux existen muchas más herramientas para enumerar subdominios. En mi caso lo tengo en un Linux distribución ParrotOS4 que empleo bastante… de hecho, la newsletter la escribo desde ese equipo y me siento cómodo usando Linux.
Si quieres, podría hablar sobre la herramienta de Dmitry. Quien esté interesado podríamos hacer un directo en Discord5
¿Cómo vi los usuarios de un WordPress sin entrar?
Los usuarios, sin tener acceso al WordPress, podríamos enumerarlos con el navegador o con alguna extensión de Chrome. Pero también es cierto que no siempre podemos conseguir este dato.
En este caso, si tenía acceso al WordPress y pude ver los distintos usuarios que estaban creados en la web.
Hay algo que veo muchísimo y que por eso hablo de este caso, son los usuarios que han utilizado los que desarrollan la web y que tras terminar con el cliente, sigue teniendo una cuenta como administradores. No ocurre sólo con WordPress, es muy habitual, sino también con el FTP, SSH, hosting, dominio e incluso correos electrónicos.
Por eso encontré la posibilidad de que el machango hackeara la web de la agencia y tras revisar, porfolio mismamente, probara los usuarios y password en las demás webs. Sí, hay personas que utilizan el mismo password para todas las cuentas y en todos lados.
Esto es una mala praxis y también muy común.
¿Cuándo y cómo realizó una buena regla de usuarios en mi WordPress?
Desde el momento 0. Quiero decir, desde el momento en que empieza la producción de la web, suelo recomendar y de esta manera conocer quien esta en el proyecto.
Ahora trabajo para varias agencias o con algún colaborador que se ha unido al proyecto. Rara vez trabajo solo. Tras una mala experiencia que tuvo un cliente con un empleado suyo, decidí dejar claro quien tenía que tener control absoluto en la web. Eso me hizo investigar un poco sobre roles de usuarios.
El problema es que empezar a explicar aquí sobre roles de usuarios, sería casi crear un ebook con el caso que leemos + toda la información.
Te puedo sugerir plugins relacionados con usuarios y que puedan ayudarte, pero repito, sería crear una newsletter extensa. ¿Te parece bien qué lo dejemos para otro momento? Puedes escribirme en los comentarios y depende cuantos comentarios reciba, lo hago. Creo que es un contenido obligatorio para Pingüino WPCode.
El consejo principal es que definas los roles en tu WordPress. Que quites los usuarios que no trabajen con tu web.
Un detalle más
No todo puede terminar como ocurre en este caso. Echa un ojo a ver si ocurre con las páginas de la web. Podrían haber creado páginas sin saberlo y/o centrarte tú sólo en las entradas… no bajes la guardia.
Mis planes de mantenimiento no son actualizar plugins, WordPress, plantillas y luego mandarte mensualmente la factura.
Los mantenimientos son una responsabilidad y debes de pensar que tus clientes, tu propio proyecto, confían en ti.
Echa un ojo a las páginas también. Pueden haber generado páginas.
Ya para finalizar este tocho/newsletter.
Te recomiendo hablar con el cliente cada cierto tiempo. En dos de mis planes hago una reunión mensual donde intento por todos los medios comentar pequeños TIPs al cliente. Graba las reuniones con su consentimiento, pero grabalas y anota siempre antes los TIPs que vayas a dar. Una para localizarlos en las grabaciones y otra para que no seas un papagayo en todas las reuniones repitiendo lo mismo siempre. Te recomiendo que uses, para esto, Notion, ClickUp, Plutio, Obsidian o cualquier otro editor de texto. Eso como te organices tú, pero se organizado por todos los Pingüinos del mundo.
Un saludo y gracias por leerme.
Te agradeceré que hagas llegar la newsletter a todo el mundo para hacer crecer la comunidad. Cuantos más seamos, más compartiremos.
BACKEND. Panel de administración del CMS. En WordPress se denomina Escritorio también.
OSINT. Open Source INTelligence, son las técnicas y herramientas que se utilizan para investigar o recopilar la información sobre un objetivo.
MACHANGO. Nosotros, en Pingüino WPCode, usamos el término de MACHANGO al hacker NO ético. A toda esa persona que emplea las herramientas para destruir.
Parrot OS. Distribución Linux basada en Debían y enfocada a la seguridad.
El Discord de la comunidad de Pingüino WPCode es: https://discord.com/invite/bE23BdTkUD