| Cargando el Contenido del Documento | |
| Por favor espere... |
|
CIRCULARE 024 DE 2018
(Abril 25)
Para: SECRETARÍOS (AS) DE DESPACHO, DIRECTORES (AS) DE DEPARTAMENTOS ADMINISTRATIVOS, GERENTES Y DIRECTORES(AS) DE UNIDADES ADMINISTRATIVAS ESPECIALES, GERENTES PRESIDENTES(AS) Y DIRECTORES(AS) DE ESTABLECIMIENTOS PÚBLICOS, EMPRESAS INDUSTRIALES Y COMERCIALES, SOCIEDADES PUBLICAS, SOCIEDADES MIXTAS, ENTE UNIVERSITARIO, HOSPITALES, ALCALDES Y ALCALDESAS LOCALES, VEEDOR DISTRITAL Y CONTRALOR DISTRITAL LOCALES,
De: OFICINA ALTA CONSEJERIA DISTRITAL DE TECNOLOGÍAS DE LA INFORMACIÓN Y LAS COMUNICACIONES
Asunto: Procedimiento de recuperación para portales con Drupal comprometidos
Radicado: 2-2018-9329
Con el objetivo de garantizar la seguridad de los sitios web distritales implementados con el sistema gestor de contenidos Drupal, la Oficina de la Alta Consejería Distrital de TIC expidió la circular 022 de 2018 en donde se solicita a las entidades la actualización prioritaria de los sitios web basados en la plataforma crupal que respondía a la atención de una vulnerabilidad altamente critica de Ejecución Remota de Código para los sitios web que utilizan la versión 7.x y 8x de esta plataforma (Vulnerabilidad: CVE-2018-7EC0[1]) Dando alcance a la circular 022 y como medida preventiva dada la posibilidad de que algunos sitios web no actualizados hayan sido vulnerados se dispone de un Procedimiento de recuperación para portales con Drupal comprometidos[2] anexo a esta circular en donde encontrarán los instructivos necesarios para identificar si un sitio web fue vulnerado y que hacer en este caso.
Para mayor información los invitamos a consultar el sitio web http://tic.bogota.gov.co y el procedimiento en http://ticbogota.gov.co/documentos/procedimiento-recuperacion-portales-drupal-comprometidos o comunicarse con la Oficina de la Alta Consejería Distrital de TIC al teléfono 3813000 ext 3052
Cordialmente,
SERGIO MARTÍNEZ MEDINA
Alto Consejero Distrital de TIC
Proyectó: Johann Alexander Garzón Arena Revisó: Ivan Mauricio Hernandez Lanao
PROCEDIMIENTO DE RECUPERACIÓN PARA PORTALES CON DRUPAL COMPROMETIDOS.
Vulnerabilidad: CVE-2018-7600
Una vulnerabilidad de tipo ejecución de código remoto existe en múltiples sistemas de Drupal 7.x y 8.x. Esta vulnerabilidad permite a los atacantes aprovechar diferentes vectores de ataque, entre ellos tomar control completo del servidor donde está alojado el sitio web[3].
Procedimiento de recuperación para portales con Drupal comprometidos.
¿Cómo detectar si mi sitio web fué comprometido?
Paso 1: Identifique la versión base de su Drupal
Paso 2: Realice un análisis del sistema de ficheros de su sitio web
Paso 2: Confirme si el sitio web está comprometido con los archivos detectados.
Paso 3: Notifique
¿Qué hacer en caso de que mi sitio web esté comprometido?
Paso 1: Realice una copia forense
Paso 2: Detenga los servicios HTTP en su servidor
Paso 3: Elimine todos los archivos que detectó en la fase de análisis.
Paso 4: Decida si revertir su sitio web a un estado anterior o remover el malware en el sitio comprometido
Paso 5: Actualizar Drupal a una versión más reciente
Paso 5: Restablezca el servicio HTTP
Paso 6: Implemente una estrategia de respaldos
Necesito ayuda con este proceso
Paso 1: Identifique la versión base de su Drupal
Si la versión instalada de su Drupal es menor a la versión 7.58 es muy probable que su sitio esté comprometido, por lo tanto se recomienda actualizar inmediatamente.
Paso 2: Realice un análisis del sistema de ficheros de su sitio web
Valide que no existan archivos correspondientes a puertas traseras[4] (Backdoors) dejadas por el atacante. Para esto puede apoyarse en el uso de herramientas de detección, comandos o un análisis manual que permita encontrar archivos que ejecuten código no autorizado en el sitio web.
Estas puertas traseras normalmente siguen un patrón, es decir están conformadas por algunas funciones en PHP y están ofuscadas. Se presenta un ejemplo de una puerta trasera encontrada para esta vulnerabilidad:
Detección con Herramientas
Se recomiendan: Shell Detector[5], PHP Backdoor Detector[6], BackdoorMan[7].
Detección con Comandos:
Grep- RPn "(passthrul_shell_exec|eval|system|phpinfo|base64_decode|chmod| mkdir|fopen|fclose|readfile) *\ (".
Detección manual:
Revise archivo por archivo su sitio web y determine si existen archivos con código php que ejecuten funciones como shell_exec, passthru, system, phpinfo, base64_decode, eval, chmod, fopen,readfile y tengan código ofuscado.
Realice una lista de esos archivos sospechosos.
Paso 2: Confirme si el sitio web está comprometido con los archivos detectados.
Con base en la lista de archivos encontrados en el paso de detección compare con el repositorio oficial de Drupal[8] o la última versión de drupal disponible[9] y determine si son archivos infectados o hacen parte del sistema de ficheros de drupal. Esta comparación la puede realizar gráficamente con el programa Meld[10]
Si los archivos difieren con el proyecto Drupal, se puede afirmar que existen puertas traseras y su sitio web está comprometido.
Paso 3: Notifique
Reporte el incidente a sus superiores y a las entidades competentes.
¿Qué hacer en caso de que mi sitio web esté comprometido?
Paso 1: Realice una copia forense
Después de asegurarse que el sitio web fué comprometido realice una copia forense. Si puede, esta copia podría ser una instantánea a nivel de sistema operativo de los servidores involucrados, de lo contrario, busque una copia de la base de datos, los archivos y los logs de acceso de los diferentes servicios que se ejecutan. Almacene una copia en medios que no se pueden modificar como un CD o DVD garantizando la integridad de la información.
Paso 2: Detenga los servicios HTTP en su servidor
Servidor Apache:
Servidor Nginx:
Si usa otro servidor HTTP en su servidor revise la documentación (IIS[11]) para detener el servicio.
Paso 3: Elimine todos los archivos que detectó en la fase de análisis.
Elimine de sus servidor la lista de archivos que encontró en el paso dos de la etapa de diagnóstico.
Paso 4: Decida si revertir su sitio web a un estado anterior o remover el malware en el sitio comprometido
Comience el proceso considerando esta pregunta y puede ayudar a facilitar el proceso. Si conoce la fecha específica en que se ha comprometido su sitio, ¿puede reconstruir el sitio fácilmente simplemente utilizando una base de datos anterior y una copia de seguridad de archivos?. Si la respuesta es sí, se recomienda cargar esa base de datos, así como los archivos. Luego de cargar este respaldo vaya al paso 5.
Paso 5: Actualizar Drupal a una versión más reciente
Drupal cuenta con documentación oficial para la actualización del core para su versión 7 y su versión 8
Actualización del core de Drupal 7 (Opción 1)[12]
- Enviar el sitio a modo mantenimiento: configuración -> desarrollo -> Modo mantenimiento
- Eliminar todos los archivos excepto el directorio Sites y los archivos (.htaccess y robots.txt) que han sido modificacos e Subalos nuevos archivos excepto el directorio sites o los archivos (.htaccess y robots.txt) para no sobreescribir los que han sido modificados en su servidor
- Ejecute la actualización del core de Drupal accediendo a la url http://nombredominio.gov.co/update.php
- Mientras se ejecuta la actualización si se presentan errores como los que se listan a continuación, utilice la herramienta de módulos faltantes para sobrepasar estos errores (para sitios con la versión 7.5x)
The following module is missing from the file system: MODULE NAME. In order to fix this, put the module back in its original location. For more information, see the documentation page.
Ó
User warning: The following module is missing from the file system: MODULE NAME. In order to fix this, put the module back in its original location. For more information, see the the documentation page. in _drupal_trigger_error_with_delayed_logging()
- Saque el sitio del modo de mantenimiento
- Tómese un tiempo en revisar el sitio asegurando que funcione adecuadamente
Actualización de Drupal 8 (Opción manual)
- Realice un respaldo de los archivos composer.json, robots.txt y .htaccess si han sido modificados manualmente
- Accedaa Drupal con cualquier usuario que cuente con permisos de “Administrador actualizaciones de software”
- Utilizando Drupal habilite el modo mantenimiento en: configuración -> desarrollo -> Modo mantenimiento
- Remover los archivos en el directorio de primer nivel y los directorios “core” y “vendor”
- Mediante un cliente FTP navegue hacia el directorio donde se encuentra su instalación de Drupal
- Seleccione todos los archivos en el directorio de primer nivel incluyendo los archivos ocultos que comienzan con un punto ej: .htaccess
- Seleccione los directorios core y vendor
- Borre los archivos seleccionados
- Opcionalmente en algunas ocasiones una actualización incluye cambios al archivo default.settings.php. Esto podrá ser verificado en en la página con todos los releases de esta plataforma[13] y revise las notas del release. Si la actualización incluye cambios en el archivo default.settings.php realice el siguiente procedimiento
- Realice un respaldo del archivo settings.php.
- Copie las entradas con la configuración propia del sitio como: conexión a la base de datos, y otras personalizaciones que haya realizado. Esta información proviene del respaldo del sitio realizado con anterioridad.
- Haga una copia del nuevo archivo default.settings.php y renombrarla con el nombre settings.php (sobreescribiendo el anterior archivo settings.php).
- Actualice el nuevo archivo settings.php con la configuración propia de Su sitio.
Actualice el core de Drupal mediante un cliente FTP
- Descargue el último release de Drupal 8.x.x desde el sitio web oficial[14]: en un directorio fuera del web root de su servidor.
- Extraiga el archivo. Mediante el cliente FTP suba los directorios “core” y “vendor” en el directorio de primer nivel de su instalación de Drupal.
- Opcionalmente aplique nuevamente las modificaciones a los archivos como .htaccess, composer.json o robots.txt.
- Usando el navegador web y como usuario administrador ejecute la actualización del core de Drupal accediendo a la url http://nombredominio.go/.co/update.php
- Si no tiene permisos de administrador edite el archivo setting.php cambie la siguiente configuración:
- Ejecute nuevamente http://nombredominio.gov.co/update.php
- Usando el navegador web acceda como administrador a Administración -> Reportes -> Reporte de estado. Verifique que todo está funcionando como corresponde.
- Usando el navegador acceda como administrador y deshabilite el modo mantenimiento
- Finalmente luego de la actualización elimine el release de Drupal previamente descargado.
Paso 5: Restablezca el servicio HTTP
Servidor Apache:
Servidor Nginx:
Paso 6: Implemente una estrategia de respaldos
Si no cuenta con una estrategia de respaldos para la información de su sitio web es el momento de hacerlo. Desarrolle un plan de trabajo e que le permita realizar copias de seguridad periódicamente de los archivos y de la base de datos. Implementarlo ya que ante este tipo de incidentes de seguridad es muy útil contar con puntos de recuperación que permitan disminuir el impacto en su sitio web de un incidente como estos y garantizar la integridad de sus datos.
Necesito ayuda con este proceso
Si el sitio web instalado en Govimentum fué comprometido y necesita ayuda en el proceso de recuperación puede ponerse en contacto a través de los canales de comunicación establecidos: Slack[15]. Si no tiene zcceso puede solicitarlo a través del correo electrónico del proyecto (govimentum-cms@alcaldiabogota.gov.co).
Proyectó: Astrid Carolina Herrera Díaz Fabian Hernandez Nieto Oscar Javier Ardila Peña Revisó: Johann Alexánder Garzón Arenas Aprobó: Iván Mauricio Hernández Lanao
Nota: Ver norma original en Anexos.
NOTAS EN PIE DE PAGINA [1] Highly critical - Remote Code Execution - SA-CORE-2018-002 - Drupal." 28 Mar. 2018, https://www.drupal.org/sa-core-2018-002. Accedido 23 Abril. 2018. [2] http://ticbogota.gov.co/documentos/prc cadimiento-recuperacion-portales-drupal-comprometidos [3] Highly critical - Remote Code Execution - SA-CORE-2018-002 - Drupal." 28 Mar. 2018, hitps //www.drupal.org/sa-core-2018-C02. Accedido 23 Abril. 2018. [4] Puerta trasera - Wikipedia, la enciclopedia libre." https://es.wikipedia.org/wiki/Puerta_trasera. Se consultó el 23 abr.. 2018. [5] GitHub - emposha/PHP-Shell-Detector: Web Shell Detector — is a php..." https://github.com/emposha/PHP-She |-Detector. Se consultó el 23 abr.. 2018. [6] GitHub - djeraseit/PHP-backdoor-detector: PHP backdoor detectoris a ...." https-//github.com/djeraseit/PHP-backdoor-detector. Se consultó el 23 abr.. 2018. [7] GitHub - cys3c/BackdoorMan: BackdoorMan is a toolkit that helps you ...." hitps //qithub.com/cys3c/BackdoorMan. Se consultó el 23 abr.. 2018. [8] https://git.drupal.org/project/drupal git [9] http://meldmerge.org/ [10] https /iwww.drupal org/project/drupalireleases/7.58 [11] HOW TO: Start and Stop Individual Web Sites in lIS - Microsoft Support." 16 Apr. 2018, https://support.microsoft.com/en-us/hep/324090/how-to-start-and-stop-individual-web-sites-in-iis. Accessed 23 Apr. 2018. [12] "Actualización del Core de Drupal 7 (opción 1) | Drupal 7 guía en Drupal.org." 7 Febrero. 2018, httos://www.drupal.org/docs/7/update/zore-option-1. Se consultó el 23 Abril. 2018. [13] "Releases para el Core de Drupal | Drupal.org." 18 Abril. 2018, https://www.drupal.org/project/drupal/releases. Se consultó el 23 Abril. 2018. [14] "Build | Drupal.org." https://wwv1.drupal.org/download. Se consultó el 23 Abril. 2018. [15] "Slack - Slack Govimentum." https: /govimentum.slack.com/. Se consultó el 23 abr. 2018. |