66
Campus Party Mexico 4 Héctor Cuevas Cruz

Wordpress hardening (Campus Party Mexico 4)

Embed Size (px)

Citation preview

Campus Party Mexico 4

Héctor Cuevas Cruz

Agenda

• Presentación

• Fortalecimiento de Wordpress

• Detección de una vulneración y Recuperación de un

ataque

¿Quién soy?

• Héctor Cuevas Cruz

• Seguridad Informática (Casi 5 años)

• Miembro de la Unidad de Seguridad InformáticaExaminador Forense en INFOTEC

• Presentador en ( BugCon, FLISoL )

• Esteganografía, Shell Scripting, Informática Forense

• Creador de Neobits.org

@ h e c k y

¿Qué es el Hardening?

• Es el fortalecimiento de un sistema, la configuración correcta y consciente de los aplicativos para disminuir las probabilidades de un ataque.

• “Hacerle la vida mas difícil a tu atacante…”

¿Para qué tantas molestias?¿A mí quién querría atacarme?

• Ego

• Reto personal (aprendizaje)

• Reto

• Almacenar contenido ilegal

• Distribuir Malware

• Botnet

Motivos “Benévolos”

[Espero El Hack

Sirva Para

Aumentar TU

SEGURIDAD]

Defaces de ayer

¿Quién hace estos ataques?

CUALQUIERA

Identificar que fortalecer

Servidor

CMS

Plugins

Passwords (Ya no utlizados)

Base de datos

REGLA DE ORO

Instalación apropiada

Prefijo de tabla default:

Wp_

Modificarla

HARD_

Wordpress “It Works”

Subimos imágenes desde el Uploader pero…

¿Problema?

• Objetivo Tentador

• Muestra desinterés y/o desconocimiento

• Mala configuración

Google Hacking (Dorks Power)

intitle:"Index of /" inurl:/wp-content inurl:"gob"

El Poderoso pero ¿Desconocido?

.HTACCESS

¿Qué es y para que sirve?

• Archivo de configuración de Apache a “bajo nivel”

• Podemos configurar opciones del servidor sin alterar el archivo de

configuración principal

• Contiene un poderoso motor que nos permite “Programarlo”

Reglas Primordiales

• I nd e x I g no r e *

• O p t i o ns A L L – I nd e x e s

• S e r v e r S i g na t u r e O f f

IndexIgnore *

Oculta el listado (Sin producir error)

Options All -Indexes

Niega el acceso al “Index of” Produciendo un error 403 (Prohibido)

ServerSignature Off

• No muestra el banner del server

Personalización de Errores

• ErrorDocument 403 /code.php

Códigos de protección .Htaccess¿Nuestra salvación?

• http://pastebin.com/mvLqHdRY

¿Funcionaran?

Sí, funciona a la perfección…

Bloquea el User-Agent:

Que inicie con: “curl”

• Pero los user agent se pueden spoofear…

Spoofeamos y…

No te fíes de todo código que te encuentras

.htaccess ¿MALWARE?

• Redirigir a paginas maliciosas

• Bucles Infinitos

• Errores de Servidor

No copiar códigos nada mas por copiar

• Analizar los códigos

• Personalizarlos

• Usar solo lo necesario

• Aprender o contratar a un especialista en configuración de estas directivas

Wp-config.php

<files wp-config.php>

Order allow,deny

Deny from all

</files>

• Prohibir la edición de temas

define('DISALLOW_FILE_EDIT', true);

Accesos

• deny from all

• Allow from all

• Deny from 127.0.0.1

• Allow from 192.168.0.1

Evitar mostrar información de más

wp-content/themes/****/functions.php

• add_filter('login_errors',create_function('$a', "return null;"));

No mostrar Versión de Wordpress

• wp-content/themes/station/header.php

bloginfo(‘version’);

LoginLockDown - Plugin

• Plugin Sencillo que bloquea intentos de accesos

• Personalizable

• Configuración Básica

• Usa una pequeña tabla en la BD

Con un pequeño detallito…

Eliminarlo desde el código

Themes ¿maliciosos?

• Ofuscados

• Malware

• Alertas ante modificación

Otras…

• Auditar Plugins ( Vulnerables)

• Evitar Plugins Maliciosos

• ACTUALIZAR todo

• Hacer respaldos periódicamente

• Verificar logs periódicamente

• Proteger directorios y archivos que se deban

• Borrar archivos de instalación

• Y….

LOGS

• Crear nuestro propio sistema de logs

<?php$f = fopen("LOGS.txt","a");fwrite($f, "\n\n\n\t\t\tIP: ".$_SERVER["REMOTE_ADDR"]."\n\n");fwrite($f, "\nURL: ".$_SERVER["REQUEST_URI"]);fwrite($f, "\nReferer: ".$_SERVER["HTTP_REFERER"]);fwrite($f, "\nDATE: ".date("d-m-Y H:i:s:u"));fwrite($f, "\nPOST:");fwrite($f, "\n".var_export($_POST, true));fwrite($f, "\nGET:");fwrite($f, "\n".var_export($_GET, true));fwrite($f, "\nCOOKIE:");fwrite($f, "\n".var_export($_COOKIE, true));fwrite($f, "\nSERVER:");fwrite($f, "\n".var_export($_SERVER, true));fwrite($f, "\n-------------------------------------------------------------------------------------");fclose($f);?>

Protegerlo

Me han “hackeado”…Y ¿Ahora?

• Dar de baja temporal el sitio.

• Si se tiene un espejo activarlo.

• Investigación de la intrusión

• En caso de ser Irrecuperable el sistema restaurar backup

• Activar sitio

• Hacer MAS HARDENING (Aplicar lo aprendido del ataque)

Investigación Forense

• Identificar que tipo de vulneración fue

• A que nivel

• Identificar archivos modificados

• Identificar archivos agregados

• Checar Base de Datos

• Checar usuarios, contraseñas

• Inclusive Imágenes

• Comparar archivos con backup o con CMS nuevo

Que nivel de acceso tuvo el atacante

A nivel de CMS

A nivel Servidor

Denegación de Servicio

Denegación de Servicio

Revisar LOGS

• Claro, nuestro log personal

Identifico

.- IP

.- Hora

.- Credenciales

• Posible vulnerabilidad (Plugin)

Referer – User-Agent

Conectarse virtualmente

• Ubuntu 13.04:

/run/user/hecky/gvfs/HOST

• Tenemos todo el poder de bash

Manejar con todo el poder de Shell Scripting

Localizándolo con ayuda de la DB

BORRAR TABLA

Logs para estudiar a los atacantes

¿Es necesario hacer todo esto?

• Si, si se quiere seguir en línea con la pagina

• Muchas paginas nunca se recuperan

• Muchas paginas aun tienen el ataque

Mass Defacement

• JAMAS SE RECUPERARON

Mismo servidor

Conclusión

• Hay que proteger un servidor y todos sus aplicativos

• Nunca desatenderlos y checarlos periódicamente

• Ante un ataque responder de manera rápida ( Nuestra página web es nuestra carta de presentación en la era digital)

• Recuperar todos los servicios

• APRENDER

• Y…SEGUIR

¡GRACIAS!

• ¿Dudas?@ h e c k y

Héctor Cuevas Cruz