
El Web Exploit Detector es una aplicación Node.js utilizada para detectar posibles infecciones, código malicioso y archivos sospechosos en entornos de alojamiento web.

Web Exploit Detector es una aplicación Node.js (y un módulo NPM) utilizada para detectar posibles infecciones, código malicioso y archivos sospechosos en entornos de alojamiento web. Esta aplicación está pensada para ejecutarse en servidores web que alojen uno o más sitios web. Al ejecutar la aplicación se generará una lista de archivos potencialmente infectados, junto con una descripción de la infección y referencias a recursos en línea relacionados.
A partir de la versión 1.1.0, la aplicación también incluye utilidades para generar y comparar instantáneas (snapshots) de una estructura de directorios, lo que permite a los usuarios saber si se han modificado, añadido o eliminado archivos.
La aplicación está alojada aquí en GitHub para que otros puedan beneficiarse de ella, así como para que otros puedan contribuir con sus propias reglas de detección.
La forma más sencilla de instalar Web Exploit Detector es como módulo NPM global: -
npm install -g web_exploit_detector
Si estás usando Linux u otro sistema operativo basado en Unix, puede que necesites ejecutar este comando como root (p. ej. sudo npm install -g web_exploit_detector).
El módulo debe actualizarse periódicamente para asegurarse de que todas las reglas de detección más recientes estén presentes. Ejecutar el comando anterior siempre descargará la última versión estable (probada). Para actualizar una versión ya instalada, simplemente ejecuta lo siguiente: -
npm update -g web_exploit_detector
De nuevo, puede que tengas que usar el comando sudo como antes.
También puedes clonar el repositorio Git y ejecutar el script directamente de la siguiente manera: -
git clone https://github.com/polaris64/web_exploit_detectorcd web_exploit_detectornpm installSi has instalado Web Exploit Detector como módulo NPM (ver arriba), ejecutar el escáner es tan simple como ejecutar el siguiente comando, pasando la ruta a tu webroot (ubicación de los archivos de tu sitio web): -
wed-scanner --webroot=/var/www/html
Hay otras opciones de línea de comandos disponibles; simplemente ejecuta wed-scanner --help para ver un mensaje de ayuda que las describe.
Ejecutar el script de esta manera producirá una salida legible para humanos en la consola. Esto es muy útil cuando se ejecuta el script con cron, por ejemplo, ya que la salida se puede enviar como correo electrónico cada vez que se ejecuta.
El script también admite la escritura de resultados en un formato JSON más amigable para computadoras para su posterior procesamiento. Para habilitar esta salida, consulta el argumento de línea de comandos --output.
Simplemente llama al script a través de node y pasa la ruta a tu webroot de la siguiente manera: -
node index.js --webroot=/var/www/html
Web Exploit Detector también incluye dos utilidades para ayudar a identificar archivos que podrían haber cambiado inesperadamente. Un ataque exitoso a un sitio generalmente implica eliminar archivos, añadir archivos nuevos o modificar archivos existentes de alguna manera.
Una instantánea (tal como se usa en estas utilidades) es un archivo JSON que enumera todos los archivos, así como una descripción de su contenido en el momento en que se creó la instantánea. Si se generó una instantánea el lunes, por ejemplo, y luego el sitio fue atacado el martes, al realizar una comparación entre esta instantánea y los archivos actuales del sitio se mostrará que uno o más archivos fueron añadidos, eliminados o modificados. El objetivo de estas utilidades es, por lo tanto, permitir que estas instantáneas se creen y que las comparaciones se realicen cuando sea necesario.
La instantánea almacena cada ruta de archivo junto con un hash SHA-256 del contenido del archivo. Un hash, o resumen, es un pequeño resumen de un mensaje, que en este caso es el contenido del archivo. Si el contenido del archivo cambia, incluso de manera muy pequeña, el hash se volverá completamente diferente. Esto proporciona una buena manera de detectar cualquier cambio en el contenido de los archivos.
Las dos utilidades siguientes también se instalan como parte de Web Exploit Detector: -
wed-generate-snapshot: esta utilidad permite generar una instantánea de todos los archivos (de forma recursiva) en un directorio especificado por "--webroot". La instantánea se guardará en un archivo especificado en la opción "--output".wed-compare-snapshot: una vez que se ha generado una instantánea, se puede comparar con el contenido actual del mismo directorio. La instantánea a verificar se especifica mediante la opción "--snapshot". El directorio base contra el que verificar se almacena dentro de la instantánea, pero si el directorio base ha cambiado desde que se generó la instantánea, se puede usar la opción --webroot.Las instantáneas se pueden generar con la frecuencia que se desee, pero como regla general, deben generarse siempre que un sitio esté en un estado limpio (no infectado) y siempre que se haya realizado un cambio legítimo. Para sitios basados en CMS como WordPress, las instantáneas deben crearse regularmente, ya que las nuevas subidas harán que el nuevo estado difiera de la instantánea almacenada. Para sitios cuyos archivos nunca deberían cambiar, se puede generar una única instantánea y luego usarla indefinidamente para asegurarse de que nada cambie.
El script src/web-exploit-detector.js es un módulo ES6 que exporta el conjunto de reglas como rules así como varias funciones: -
executeTests(settings): ejecuta el verificador de exploits basado en el objeto settings pasado. Para su uso, consulta el script index.js.formatResult(result): toma un único result de test del array devuelto por executeTests() y genera una cadena de resultados lista para la salida de ese test.getFileList(path): devuelve un array de archivos desde la path base usando readDirRecursive().processRulesOnFile(file, rules): procesa todas las reglas del array rules en un único file (ruta de cadena).readDirRecursive(path): función recursiva que devuelve una Promesa que se resolverá con un array de todos los archivos en path y subdirectorios.El script src/cli.js es una interfaz de línea de comandos (CLI) simple para este módulo, utilizada por el script wed-scanner, por lo que leer este script muestra una forma en que se puede usar este módulo.
El proyecto utiliza Babel para compilar los módulos ES6 en "src" a módulos JavaScript simples en "lib". Si estás ejecutando una versión antigua de Node.js, los módulos se pueden require() desde el directorio "lib".
El paquete contiene Babel como dependencia de desarrollo y los scripts "build" y "watch:build". Al ejecutar el script "build" (npm run build), los módulos ES6 en "./src" se compilarán y guardarán en "./lib", donde son incluidos por los scripts de CLI.
El directorio "./lib" está incluido en el repositorio para que cualquier usuario pueda clonar el repositorio y ejecutar la aplicación directamente sin tener que instalar dependencias de desarrollo y compilar la aplicación.