GnosisGuard: Plugin de ciberseguridad para sitios web basados en wordpress

wordpress es muy bueno a la hora de crear sitios web pero originalmente no esta pensando para brindar ciberseguridad por lo que para una persona que solo quiere crear un sitio web puede dejar muchas puertas abiertas a hackers y por ende lo hace muy vulnerable. hay algunos plugins que solucionan esto parcialmente pero personalmente no eran suficiente para lo que yo tenia en mente asi que hice uno

este es un plugin pensando en la ciberseguridad del panel de administrador, exactamente a la hora de proteger cualquier tipo de acceso no autorizado ya sea desde el portal de inicio de sesión o XML-RPC. tambien pensado para evitar enumeración de usuarios (datos utiles para un atacante) y tambien pensando para forenses a la hora de realizar una investigación seria de un incidente de ciberseguridad.

la primer sección de información son los registros de interacciones con el portal de entrada para los usuarios del panel de admin que hacen saber no solo datos de personas que iniciaron sesion si no los que los intentaron y fallaron, los que entraron al inicio de sesión (ya sea interactúen o no) y los que intentaron recuperar la contraseña de algun usuario. haciendo que quede cada registro por cualquier interaccion.

el plugin tiene diferentes secciones como la principal donde estan los registros capturados y otras como la seccion de fuerza bruta, avanzado (cambiar la ruta de acceso y redireccion), protecciones y la configuracion para agregar las private keys generadas por las APIs que brindan info de IPs

Vulnerabilidades y problemas que el plugin soluciona:


Ataque de enumeración de usuarios (API Desprotegida):

cuando un cibercriminal investiga sitios web suele estar un tiempo investigando por afuera para tratar de escalar privilegios, en el caso de sitios web creados por wordpress utilizan la API de acceso libre por defecto que brinda la lista de nombres de usuarios incluyendo los administradores y el enlace de gravatar generado basada en el hash en MD5 en base a la direccion de email de cada usuario que es muy facil de dehashear (decifrar) y obtener la direccion de email ya que MD5 es un cifrado muy vulnerable.

capturando estos datos y realizando una investigacion es posible facilitar un ataque de fuerza bruta para logearse al portal de admin ya que el atacante tendria ya el usuario identificado. tambien le facilita otras rutas de acceso como investigar la direccion de email con OSINT y obteniendo la contraseñas antiguas.

Ataque de fuerza bruta y accesos no autorizados:

un atacante podria realizar programar un script automatico conectado a un diccionario (archivo de texto conectado al script con millones de contraseñas) para lanzar miles de contraseña por minuto, con la API por default de wordpress esto es facilitado por el usuario, tambien la rutas por default es wp-login.php para logearse al panel de admin y no mucha gente cambia esto ya que no es posible por default.

el plugin tiene 3 protecciones contra esto, no solo puedes ocultar la ruta de wp-login.php y cambiarla a nivel de servidor si no que puedes desactivar el acceso a usuarios no logeados a la API. tambien tiene una seccion contra este tipo de ataques que hace que tenga un limite de intentos para iniciar sesion y un bloqueo automatico y hasta permanente. guardando cada registro de cada intento fallido.

Vulnerabilidades de la API XML-RPC:

Otra API que brinda wordpress por default y es mucho mas riesgosa que RESET API que muestra datos de usuarios es otra que no solo puede hacer lo mismo si no que es otra puerta que permite logearse y facilita mucho los ataques de fuerza bruta ya que puede hacer que hasta por una solicitud se envien 1000 intentos de inicio de sesion (usuarios y contraseña) ademas de que deja abierto a otros ataques como la posibilidad de tirar el sitio web colapsando wordpress y otras.

Dado que esta API es utilizada en algunos casos para conectar aplicaciones externas que necesitan algunos sitios webs para servicios (no es utilizado para nada normalmente) por lo que esta la opcion en el plugin de desactivarlo y bloquearlo por completo a nivel servidor o dejarlo con algunas protecciones.


Lista de funciones del plugin:

Registro de actividad:

  • Linea de tiempo de cada registro basados en su tipo de huella digital
  • Exportar y importar en base CSV la tabla de registros capturados
  • Seccion para buscar registros en base a pequeñas huellas digitales (IP, Cookies, otros)
  • Bandera de Pais basada en la respuesta de la API gratis de ipinfo.io
  • Fecha y hora del registro capturado
  • Direccion IP (IPv4 y IPv6) capturada
  • Tipo de interaccion en la puerta de acceso al admin (estado)
  • usuario o direccion de email enviada en el portal de inicio de sesion
  • ID de visitante (Cookie generada y almacenada en el navegador del visitante)
  • Direccion IP capturada basada en posibles fugas de IP por webRTC
  • User Agent (informacion que brinda informacion del navegador y sistema operativo)
  • Zona Horaria, Idioma, GPU (Grafica), Dimensión de pantalla capturada
  • Deteccion en si el usuario esta en modo incognito en chromium
  • informacion de IP (Pais, Ciudad, Continente, ISP, ASN, Cordenadas)
  • Informacion avanzada de IP (Detección de VPN, Tor, Proxy, Servidores, Proveedor VPN)
  • URL Solicitada (URL en donde el visitante hizo la solicitud al servidor)
  • ID en la base de datos del registro capturado

Suspender acceso:

  • Registro de cada bloqueo con Fecha y hora, administrador que lo bloqueo y otros datos
  • Suspender el acceso a todo el sitio en base a una direccion IP
  • Razon de la suspension de la direccion IP

Proteccion de ataques contra fuerza bruta:

  • Configurar tiempo de bloqueo
  • Configurar maximo de intentos para que el sistema bloque nuevos intentos
  • Registro de huellas digitales de usuarios que intentaron iniciar sesion fallidamente
  • opcion para bloquear direccion IP manualmente para prohibir nuevos intentos
  • opcion para desbloquear usuarios en base a la direccion IP
  • opcion para duplicar el tiempo de bloqueo en cada reincidencia
  • configurar Máximo de bloqueos antes de baneo permanente

Avanzado (directorio de inicio de sesion y redireccion):

  • Cambiar URL de Inicio de Sesión al portal de admin
  • opcion para cambiar URL de Redirección a un directorio Local como redirecciones
  • opcion para cambiar URL a alguna parte de internet como example.com/example
  • Registros de reglas generadas en htaccess de la redireccion por servidor

Protecciones avanzadas para wordpress y el servidor:

  • Seguridad XML-RPC contra ataques desde la API para logearse como un usuario
  • Desactivar XML-RPC desde el servidor como una forma de cerrar una puerta
  • RESET API solo disponible para usuarios con una sesion activa (logeados)
  • Reglas de seguridad basada en la API de cloudflare (bloqueo o dar exclusividad)
  • bloquear o dar exclusividad desde cloudflare en base a (IP, ASN y Pais)

Configuración del plugin:

  • opcion para activar y escribir la key de la api de ipdata.co y iplocate.io
  • Consola para escribir IPv4 y IPv6 para consultar a cada API y recibir respuesta
  • Desactivar y activar datos capturados a los visitantes