Antimalware hosting: 34 detecciones (backdoors, webshells, js_malware) — plan limpieza #66

Closed
opened 2026-06-28 19:14:00 +00:00 by rafa · 0 comments
Owner

Labels: area:infra, area:joomla, bug:critical, security

Hallazgo

El hosting tiene un escáner antimalware activo (/logs/antimalware.log, ~48 MB) que ha reportado 34 detecciones únicas en /home/feadulta.com/web/. La detección original es del 2026-05-25 22:41 (escaneo liverun completo) y desde entonces el watcher sigue activo para ficheros modificados.

Esto va más allá de lo cubierto en #46 y #48. El escáner del hosting encontró backdoors y webshells que nuestro barrido manual no detectó (búsqueda por nombre, hash diff contra baseline local infectada, etc).

Detecciones por categoría

SMART (alta confianza, score >0.9) — 8 detecciones, todas siguen en /web/

Fichero Tipo Score Bytes
administrator/components/com_aimysitemap/HttpClient.php backdoor 0.961 4928
administrator/components/com_aimysitemap/IndexNow.php backdoor 0.928 3628
administrator/components/com_aimysitemap/controllers/url.php webshell 0.901 4601
administrator/components/com_aimysitemap/controllers/urls.php webshell 0.939 3697
administrator/components/com_aimysitemap/controllers/robotstxt.php webshell 0.907 2767
plugins/system/bfnetwork/bfnetwork/bfAuditor.php webshell 0.993 122693
plugins/system/securitycheckpro/securitycheckpro.php backdoor 0.991 105185
media/com_rsform/js/jquerycalendar/jquery.datetimepicker.js js_malware 0.983 81763

DETECTION (firmas / patrones) — vivos en /web/

Fichero Tipo Bytes
administrator/components/com_securitycheckpro/library/model.php malware 38729
administrator/components/com_joomlaupdate/restore.php malware 129767
plugins/system/bfnetwork/bfnetwork/bfRestore.php malware 265837
modules/mod_stats/tmp.php malware 170
anterior/Ev-JE_107-A_28-14.htm malware 36631
templates/fe_adulta_1/index.php SEO_HiddenCasinoLinks (ya limpio en #46)
administrator/components/com_akeeba/Master/Installers/kickstart.txt malware
administrator/components/com_akeeba/backup/akeeba.backend.id-20221220-*.log.php (2) malware logs viejos

DETECTION — ya no existen en /web/

Alguien (¿escáner automático del hosting?) los borró antes de hoy:

  • administrator/components/com_users/views/mail/circle.php
  • administrator/components/com_k2/lib/elfinder/elFinderConnector.class.php
  • components/com_media/index.php
  • libraries/fof30/TransparentAuthentication/weight.php
  • modules/mod_footer/classinfo.php
  • modules/mod_k2_tools/gnom.php
  • modules/mod_k2_user/tmpl/receive.php
  • newsletter/_install.php
  • newsletter/includes/functions.php
  • media/k2/assets/vendors/studio-42/elfinder/php/elFinderConnector.class.php
  • media/k2/assets/vendors/studio-42/elfinder.1/php/elFinderConnector.class.php
  • media/k2/assets/vendors/studio-42/elfinder/php/elFinderVolumeFTP.class.php
  • media/k2/assets/vendors/studio-42/elfinder.1/php/elFinderVolumeFTP.class.php

Tmp (volátiles)

  • /usr/home/feadulta.com/tmp/php3oGlnp — ya no existe
  • /usr/home/feadulta.com/tmp/phpnPf3rp — ya no existe
  • /usr/home/feadulta.com/tmp/ssess_d45d182b50f80a5a9b73503603ffb552 — sigue (78 bytes, contenido aparentemente legítimo de sesión Joomla __options/key). Posible falso positivo o sesión asociada al malware activo previo.

Por qué nuestro barrido del #46 no los pilló

  1. Comparábamos hash contra baseline local que también estaba infectada (la baseline era copia de prod del momento).
  2. Búsquedas por nombre (c99, r57, wso, etc) no cubrían disfraces como HttpClient.php, IndexNow.php (que parecen ficheros legítimos de un componente sitemap).
  3. Patrones eval(base64_decode) clásicos no estaban presentes; las webshells modernas usan ofuscación distinta.

Plan de remediación (a planificar en otra sesión)

Fase A — backup completo nuevo

Antes de tocar nada, otro tar/SQL completo. El feadulta-web-20260525.tar.gz del #35 ya está, pero conviene capturar el estado actual con #46 y #48 aplicados.

Fase B — extensiones completas a eliminar (no parchar)

Las que están claramente comprometidas o son riesgo de acceso remoto:

  • com_aimysitemap completo (5 detecciones SMART + parece componente sospechoso o ya comprometido).
  • plugins/system/bfnetwork completo (2 detecciones SMART + DETECTION; aunque era legítimo de mySites.guru, da acceso remoto y ya estaba ahí cuando se infectó).
  • plugins/system/securitycheckpro + administrator/components/com_securitycheckpro (3 detecciones; irónicamente el plugin de seguridad parece infectado o reemplazado).

Desinstalar desde admin Joomla o eliminar manualmente del filesystem.

Fase C — ficheros sueltos a limpiar/eliminar

  • modules/mod_stats/tmp.php (170 bytes — sospechoso, mod_stats no debería tener tmp.php). Backup + revisar contenido + eliminar.
  • anterior/Ev-JE_107-A_28-14.htm (36K, parece estático antiguo pero detectado como malware; revisar).
  • administrator/components/com_joomlaupdate/restore.php (129K — el script de restore de Joomla updater; puede estar reemplazado por una versión maliciosa).
  • media/com_rsform/js/jquerycalendar/jquery.datetimepicker.js (js_malware, 81K; reemplazar por el original del repo xdsoft/datetimepicker).
  • administrator/components/com_akeeba/Master/Installers/kickstart.txt (probablemente plantilla de kickstart con código demo; revisar).
  • Logs viejos de Akeeba en administrator/components/com_akeeba/backup/akeeba.backend.id-20221220-*.log.php (2 ficheros .log.php — pueden contener payload o ser logs reales con código que el escáner marca).
  • /tmp/ssess_d45d182b50f80a5a9b73503603ffb552 (la otra sesión que vimos ayer; eliminar por precaución).

Fase D — barrido contra Joomla 3.10.11 oficial

Descargar tar oficial de Joomla y comparar TODO el core. Esto era ya la Fase 2 propuesta en #48.

Fase E — endurecimiento

  • Cambiar credenciales SSH, cPanel y admin Joomla.
  • Revisar permisos: nada de /web/libraries/, /web/plugins/, /web/components/ debería ser escribible por el proceso PHP-FPM en modo normal.
  • Considerar reinstalación limpia de Joomla 3.10.11 sobre la BD actual.

Relación

  • Es la versión "ampliada y autorizada" del barrido manual de #46.
  • El malware del event.php documentado en #48 NO aparece en este log antimalware (falso negativo del escáner del hosting). Conclusión: ni nuestro barrido manual ni el escáner del hosting son completos por sí solos. Hace falta combinar varios métodos.

Prioridad

Alta. Hay webshells y backdoors con score >0.9 que el hosting confirma. Aunque la web sirve OK ahora, son vías de re-infección o exfiltración activas. Cerrarlas antes del cutover DNS a WordPress.

**Labels:** area:infra, area:joomla, bug:critical, security ## Hallazgo El hosting tiene un escáner antimalware activo (`/logs/antimalware.log`, ~48 MB) que ha reportado **34 detecciones únicas** en `/home/feadulta.com/web/`. La detección original es del 2026-05-25 22:41 (escaneo `liverun` completo) y desde entonces el watcher sigue activo para ficheros modificados. Esto va más allá de lo cubierto en #46 y #48. El escáner del hosting encontró backdoors y webshells que nuestro barrido manual no detectó (búsqueda por nombre, hash diff contra baseline local infectada, etc). ## Detecciones por categoría ### SMART (alta confianza, score >0.9) — 8 detecciones, todas siguen en `/web/` | Fichero | Tipo | Score | Bytes | |---------|------|-------|-------| | `administrator/components/com_aimysitemap/HttpClient.php` | backdoor | 0.961 | 4928 | | `administrator/components/com_aimysitemap/IndexNow.php` | backdoor | 0.928 | 3628 | | `administrator/components/com_aimysitemap/controllers/url.php` | webshell | 0.901 | 4601 | | `administrator/components/com_aimysitemap/controllers/urls.php` | webshell | 0.939 | 3697 | | `administrator/components/com_aimysitemap/controllers/robotstxt.php` | webshell | 0.907 | 2767 | | `plugins/system/bfnetwork/bfnetwork/bfAuditor.php` | webshell | 0.993 | 122693 | | `plugins/system/securitycheckpro/securitycheckpro.php` | backdoor | 0.991 | 105185 | | `media/com_rsform/js/jquerycalendar/jquery.datetimepicker.js` | js_malware | 0.983 | 81763 | ### DETECTION (firmas / patrones) — vivos en `/web/` | Fichero | Tipo | Bytes | |---------|------|-------| | `administrator/components/com_securitycheckpro/library/model.php` | malware | 38729 | | `administrator/components/com_joomlaupdate/restore.php` | malware | 129767 | | `plugins/system/bfnetwork/bfnetwork/bfRestore.php` | malware | 265837 | | `modules/mod_stats/tmp.php` | malware | 170 | | `anterior/Ev-JE_107-A_28-14.htm` | malware | 36631 | | `templates/fe_adulta_1/index.php` | SEO_HiddenCasinoLinks | (ya limpio en #46) | | `administrator/components/com_akeeba/Master/Installers/kickstart.txt` | malware | — | | `administrator/components/com_akeeba/backup/akeeba.backend.id-20221220-*.log.php` (2) | malware | logs viejos | ### DETECTION — ya no existen en `/web/` Alguien (¿escáner automático del hosting?) los borró antes de hoy: - `administrator/components/com_users/views/mail/circle.php` - `administrator/components/com_k2/lib/elfinder/elFinderConnector.class.php` - `components/com_media/index.php` - `libraries/fof30/TransparentAuthentication/weight.php` - `modules/mod_footer/classinfo.php` - `modules/mod_k2_tools/gnom.php` - `modules/mod_k2_user/tmpl/receive.php` - `newsletter/_install.php` - `newsletter/includes/functions.php` - `media/k2/assets/vendors/studio-42/elfinder/php/elFinderConnector.class.php` - `media/k2/assets/vendors/studio-42/elfinder.1/php/elFinderConnector.class.php` - `media/k2/assets/vendors/studio-42/elfinder/php/elFinderVolumeFTP.class.php` - `media/k2/assets/vendors/studio-42/elfinder.1/php/elFinderVolumeFTP.class.php` ### Tmp (volátiles) - `/usr/home/feadulta.com/tmp/php3oGlnp` — ya no existe - `/usr/home/feadulta.com/tmp/phpnPf3rp` — ya no existe - `/usr/home/feadulta.com/tmp/ssess_d45d182b50f80a5a9b73503603ffb552` — sigue (78 bytes, contenido aparentemente legítimo de sesión Joomla `__options/key`). Posible falso positivo o sesión asociada al malware activo previo. ## Por qué nuestro barrido del #46 no los pilló 1. Comparábamos hash contra baseline local que también estaba infectada (la baseline era copia de prod del momento). 2. Búsquedas por nombre (`c99`, `r57`, `wso`, etc) no cubrían disfraces como `HttpClient.php`, `IndexNow.php` (que parecen ficheros legítimos de un componente sitemap). 3. Patrones `eval(base64_decode)` clásicos no estaban presentes; las webshells modernas usan ofuscación distinta. ## Plan de remediación (a planificar en otra sesión) ### Fase A — backup completo nuevo Antes de tocar nada, otro tar/SQL completo. El `feadulta-web-20260525.tar.gz` del #35 ya está, pero conviene capturar el estado actual con #46 y #48 aplicados. ### Fase B — extensiones completas a eliminar (no parchar) Las que están claramente comprometidas o son riesgo de acceso remoto: - **`com_aimysitemap`** completo (5 detecciones SMART + parece componente sospechoso o ya comprometido). - **`plugins/system/bfnetwork`** completo (2 detecciones SMART + DETECTION; aunque era legítimo de mySites.guru, da acceso remoto y ya estaba ahí cuando se infectó). - **`plugins/system/securitycheckpro`** + **`administrator/components/com_securitycheckpro`** (3 detecciones; irónicamente el plugin de seguridad parece infectado o reemplazado). Desinstalar desde admin Joomla o eliminar manualmente del filesystem. ### Fase C — ficheros sueltos a limpiar/eliminar - `modules/mod_stats/tmp.php` (170 bytes — sospechoso, mod_stats no debería tener `tmp.php`). Backup + revisar contenido + eliminar. - `anterior/Ev-JE_107-A_28-14.htm` (36K, parece estático antiguo pero detectado como malware; revisar). - `administrator/components/com_joomlaupdate/restore.php` (129K — el script de restore de Joomla updater; puede estar reemplazado por una versión maliciosa). - `media/com_rsform/js/jquerycalendar/jquery.datetimepicker.js` (js_malware, 81K; reemplazar por el original del repo `xdsoft/datetimepicker`). - `administrator/components/com_akeeba/Master/Installers/kickstart.txt` (probablemente plantilla de kickstart con código demo; revisar). - Logs viejos de Akeeba en `administrator/components/com_akeeba/backup/akeeba.backend.id-20221220-*.log.php` (2 ficheros .log.php — pueden contener payload o ser logs reales con código que el escáner marca). - `/tmp/ssess_d45d182b50f80a5a9b73503603ffb552` (la otra sesión que vimos ayer; eliminar por precaución). ### Fase D — barrido contra Joomla 3.10.11 oficial Descargar tar oficial de Joomla y comparar TODO el core. Esto era ya la Fase 2 propuesta en #48. ### Fase E — endurecimiento - Cambiar credenciales SSH, cPanel y admin Joomla. - Revisar permisos: nada de `/web/libraries/`, `/web/plugins/`, `/web/components/` debería ser escribible por el proceso PHP-FPM en modo normal. - Considerar reinstalación limpia de Joomla 3.10.11 sobre la BD actual. ## Relación - Es la versión "ampliada y autorizada" del barrido manual de #46. - El malware del `event.php` documentado en #48 NO aparece en este log antimalware (falso negativo del escáner del hosting). Conclusión: ni nuestro barrido manual ni el escáner del hosting son completos por sí solos. Hace falta combinar varios métodos. ## Prioridad Alta. Hay webshells y backdoors con score >0.9 que el hosting confirma. Aunque la web sirve OK ahora, son vías de re-infección o exfiltración activas. Cerrarlas antes del cutover DNS a WordPress.
rafa closed this issue 2026-06-28 19:14:00 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rafa/feadulta#66