- Powered by it

Comentarios

Transcripción

- Powered by it
Adrián Ramírez
presentación de
Detección de intrusos
en mi sistema
MÓVILES EN SILENCIO.
GRACIAS.
Gracias.
ABOUT ME
SECURITY CONSULTANT
DATA RECOVERY
COMPUTER FORENSICS
DEFENSE MITIGATION
COMPUTER AND
NETWORKING SECURITY
SOCIAL ENGINEER
GRAPHICS DESIGN
WRITER
Adrián Ramírez
CEO DOLBUCK
CÓMO NACIÓ LA CHARLA.
31 de Diciembre 2013
Austria, en algún lugar perdido del Tirol, en un
pequeño pueblo (Durchholzen) de 200 habitantes…..
Ahí me encontraba yo, cuando se me dio por
verificar la salud de mis servidores de hosting
Aprovechando la Wifi de un restaurante
mientras tomaba un café.
Y esta es la cara que se me puso!!!!
Situación:
Yo:
solo tenía acceso a Internet desde una cafetería
Mi servidor:
MySQL caído.
Al levantarlo, no respondía
Indicios del ataque>>>, explotada una
vulnerabilidad de una web en Joomla antigua,
que permite ejecución de código exec en php.
• Consecuencias:
– Escalada de privilegios
– Configuración del servidor para enviar Spam por
un atacante.
- MySql modificado
- Tiempo desde el ataque: unas 12 horas.
• Solución
– Reinstalado del Mysql
– Anulada la web de origen del ataque
– Listado de archivos modificados en los últimos 2 días
mediante para su posterio estudio
find / -type f -mtime -2
- Levantar el apache y vuelta a funcionar
Tiempo que demoré:
45 minutos. Y a celebrar año nuevo.
• Consecuencias:
– Servidor comprometido, se caería cada 7, 8 días,
pero me valía hasta volver a España y planificar la
migración.
– Un servidor comprometido, no puede parchearse
• Y todo lo hice
a 2 grados,
desde este balcón
de la casa donde estaba
Para pillar la wifi, de
un hotel cercano.
• Da igual lo bueno o malo que seas,
• En cualquier momento, te pueden joder.
• Tus servidores están conectados al mundo, y
aunque millones de personas estén
preparando año nuevo con sus familias,
siempre hay algún desgraciado aburrido en
casa.
Captura de una DDOS al servidor, luego de ser
comprometido.
Agenda de la charla
Motivación
de un atacante
En Windows
En Linux
De qué hablaremos…
Motivación para atacar un servidor
Profesional (Mafia, cybercrimen)
Malware para navegación automática
Minería bitcoins
Usar ancho de banda para botnet
Ataques corrdinados de DDOS
Cobran para eliminar la competencia
(Asesinos a sueldo cibernéticos)
Secuestros de datos
Robo de datos
Perjudicar la reputación
Sabotaje y/o espionaje
Amateur (script kiddie, exploiting )
Curiosidad
Porque soy guay, y puedo hacerlo
Porque estoy aburrido
Venganza
En Windows
PARTE I: Usando las herramientas (nativas) de Windows
(Confiando en que el sistema no esté comprometido)
1: Conocer nuestro sistema
Inventario de todo el software instalado, procesos y directorios.
Copia del registro del sistema
Listado de usuarios
Para eso tiraremos de los comandos que vienen con Windows.
INICIO>>EJECUTAR>>> msconfig
Una copia manual del registro. Con Regedit
Un listado de los procesos con >>inicio/ejecutar/taskmgr
Análisis en tiempo real con Msinfo>>INICIO/EJECUTAR/MSINFO
Conociendo el uso de red con >>>net statistics {workstation y server}
El comando arp –a para detectar MITDM
La herramienta permite varias configuraciones, pudiendo elegir los tipos de ataques
que se desean detectar, si se desea que se mitiguen los ataques ARP Poisoning,
así cómo la posibilidad de iniciar Marmita con Windows - algo que os recomendamos
si vais de red en red -. En la ventana principal además existen distintos paneles con
información sobre ARP y DHCP así como todos los logs.
Marmita 1.3
Marmita funciona esnifando los paquetes de la interfaz de red seleccionada
y analizando aquellos paquetes bien sean ARP o DHCP en busca de
posibles ataquesMITM. Cuando detecta un ataque muestra una alerta y la
información del atacante que haya podido obtener:
Conociendo los servicios con SC query: Permite conocer todos los servicios ejecutados
En un momento dado para comparar con otros informes anteriores.
Ver conexiones, mi favorita, netstat –nab
N- mostrar los puertos y conexiones en formato numérico
B- binarios
A- muestra todas las conexiones
Win Dump
un sniffer de red, basada en la librería de captura de paquetes (pcap) y que además
funciona en plataformas tanto windows como GNU/Linux-UNIX es TCPDump
(GNU/Linux) / Windump (Windows), ésta última hace uso de la librería Winpcap.
Estas dos librerías son usadas por otras herramientas como Ethereal o Snort, e
incluyen un lenguaje de filtros común para todos.
Y por supuesto…. Mirar los logs del sistema, siempre. Recordar activar auditoría
En las directivas locales del sistema
Lo mejor de la línea de comandos es que siempre podemos redireccionar a un
Archivo de texto para documentarlo, compararlo, etc
archivo.txt
Procedimiento:
Archivar todos estos datos en una carpeta, y realizar este proceso al
menos una vez el mes. Para tener un control anual del servidor en cuestión.
Es posible que el uso de las herramientas nativas del sistema, conviertan esta
tarea en pesada y nos ocupe más tiempo del deseado.
Si sois partidarios de dotar a vuestro servidor de herramientas de terceros
(ventaja) si el sistema está comprometido, estas lo detectará.
Es la de instalar algunos software que nos facilitarán la vida.
Aquí dejo algunos.
PARTE I: Usando herramientas de terceros..
1: Conocer nuestro sistema
Inventario de todo el software instalado, procesos y directorios.
Copia del registro del sistema
Listado de usuarios
Frecuencia: Y una revisión mensual del mismo.
Herramientas que nos pueden facilitar la tarea:
Belarc
Belarc Advisor construye un perfil detallado del software y hardware instalados en
su PC, incluyendo los hotfixes de Microsoft y muestra el resultado en su explorador
Web. Toda la información del perfil se mantiene privada en su PC y no se envía a
ningún servidor Web.
Para el registro, recomiendo SysInspector (gratuita)
Permite: Entre otras cosas, comparar registros
El método de filtrado utilizado consiste en mostrar los procesos/datos asignando un
color según su peligrosidad:
Verde: Aplicación conocida (fiable)
Naranja: Aplicación dudosa o con modificaciones en el archivo original
Rojo: Vendría a ser un proceso no reconocido o peligroso (no por ello un virus).
En la ventana de la izquierda nos mostrará toda la información obtenida del sistema.
Haremos un click sobre la descripción que queramos visualizar y en la ventana de la
derecha podrás ver todo lo relacionado a ese proceso/archivo.
Arriba a la derecha tenemos un menú para administrar los log´s, filtrado por
elementos, comparativas…
IceSword
Herramienta de entornos profesionales, Extrae datos procesos en ejecución,
Puertos de escucha, conexiones de red, drivers cargados por el sistema. Y todo
Sin utilizar las API del sistema. Esto dejaría al descubierto cualquier rootkit.
Análisis del proceso svchost con Svchost es un proceso de Windows asociado a
servicios del sistema o de otros programas. En ocasiones puede ser usado por
programas espía o troyanos, por lo que conviene conocer qué aplicaciones acceden
a él con herramientas como Svchost Process Analyzer.
Svchost Process Analyzer realiza un análisis de Svchost y muestra los servicios
y procesos que dependen de él y si son fiables o sospechosos.
Escuchando la comunicación de red de nuestro equipo con Wireshark
Conclusiones sobre un sistema Windows:
Y ahora que hago con esta
ensalada de programas???
Reglas:
>> Conoce tu sistema como la palma de tu mano:
Inventario de software instalado
Inventario de procesos corriendo en tu sistema
Listado y estructura de directorios
Audítalo todo con la configuración del sistema
Compara las modificaciones del registro del sistema
Controla los usuarios y sus últimos accesos
Cuidado con el CCLEANER, si hay actividad sospechosa de un usuario
Una buena pista es analizar los archivos temporales.
No te vayas a cargar la evidencia
Qué buscar:
Directorios extraños
Horas de acceso en los logs extrañas
Conexiones a sitios extraños
Procesos desconocidos
Ejemplo en caso real:
Un troyano disfrazado como Winlogon que genera una conexión inversa.
Sus pequeños scripts para distintos idiomas…
Infaltable en un pack de hacking, un borrador de logs
IDS LIGEROS…
La utilización de ‘Patriot’ es muy sencilla, puesto que
únicamente hay que seleccionar en las opciones de
configuración las protecciones que se desean activar.
Corre en ‘background’, y siendo accesible desde
la ‘TrayBar’.
Entre las características son:
- Modificación de claves de registro
-Ficheros en los directorios de ‘Startup’ o
- creación de nuevas tareas
- Creación de nuevos usuarios en el sistema
- Creación de nuevos servicios
- Modificaciones en el fichero de hosts
- Modificaciones en el navegador IE
- Monitorización de la tabla ARP
- Detección de la carga de drivers
- Compartición de nuevos recursos (por NetBios)
- Accesos por recursos compartidos
- Protección TCP/IP
-Modificación de directorios/ficheros críticos
- para el sistema
- Creación de ventanas ocultas
Windows Event Collector, configurando Windows para reenviar y centralizar eventos
WEC (Windows Event Collector) es una función de Windows que permite reenviar los
registros del visor de eventos para tenerlos centralizados en un servidor recolector.
La función incluida desde Windows Vista en adelante utiliza elestándar basado en el
protocolo WS-Management, WinRM.
Qué es WinRM
WinRM (Windows Remote Management) es un nuevo estándar de Microsoft para
la administración remota de hardware y software en máquinas Windows.
WinRM utiliza WMI (Windows Management Instrumentation) como repositorio de
información y está basado en el protocolo WS-Management.
El protocolo WS-Management
Web Services for Management (WS-Management) es un protocolo que fue desarrollo
por un grupo de fabricantes de hardware y software como un estándar abierto para el
intercambio de información con cualquier otra máquina que implemente el
protocolo.
Introducción y Configuración Básica de WinRM
WinRM (Windows Remote Management) es una herramienta que nos permite
administrar el Hardware de computadores basados en Windows Vista y de Servidores
basados en Windows Server 2008 tanto de forma local como remota. WinRM está
basado en el protocolo WS-Management (Web Services Management que es un
protocolo basado en SOAP – Arquitectura Orientada a servicios – diseñado para
localizar e intercambiar información de adminsitración mediante la interoperabilidad
y consistencia entre sistemas de diferentes fabricantes de Hardware y diferentes
sistemas operativos. El estándar forma parte del “Distributed Management Task
Force” )
Componentes
WinRM Scripting API – Permite obtener datos desde computadores remotos usando
Scripts que ejecuten operaciones basadas en el protocolo WS Management
Winrm.cmd – Herramienta basada en CLI (Command Line Interface) que permite la
configuración de WinRM, manejar sus recursos y obtener datos
Winrs.exe – Herramienta de línea de comandos que permite ejecutar remotamente
la mayoría de comandos cmd.exe usando el protocolo WS Management
WMI Service - Servicio que habilita la implementación de Clases WMI para la
obtención de datos de Hardware locales
ITPMI (Intelligent Platform Management Interface ) - Interfase para controlar y
diagnosticar hardware en un servidor remoto mediante controladores de
adminsitración de base (baseboard management controllers BMCs)
Gnu/Linux!!!
Mis comandos más usados en chequeos y defensa a tiempo real.
Nº1:
#netstat -na
#netstat -pn -l -A inet
Mi otro amigo, lsof –i, que conexiones tengo abiertas y con quién
Al igual que en Windows, conocer nuestros procesos y guardarlos para comparar
ps –aux | greo <usuario>
Otro gran programa que me ayuda a despejar dudas es iptraf
ARP WATCH, evitando MITM
Análsis de logs
http://www.8pussy.org/
Features
LDAP supported for Octopussy Users & Contacts
Send Alerts by Email, IM(Jabber), NSCA(Nagios) & Zabbix_sender
Export Reports by Email, FTP & SCP
Create Map to show your architecture
Input & Output Plugins for Reports
Reports Scheduling
'RRDTool' to graph syslog activity
Lot of Services already supported: Bind, Cisco Router, Cisco Switch, DenyAll Reverse Proxy,
Drbd, F5 BigIP, Fortinet FW, Ironport MailServer, Linux Kernel/System,
Linux IPTables, Monit, MySQL, Nagios, NetApp NetCache, Juniper Netscreen FW,
Juniper Netscreen NSM, Postfix, PostgreSQL, Samhain, Snmpd, Squid, Sshd, Syslog-ng,
Windows Snare Agent, Xen...
Wizard to easily create new Message/Service for Unrecognized logs
Online Updates for Services, Tables & Multilanguage
Multilanguage support:
Themable Interface & Repor
Mod_security
modSecurity™ es una herramienta para detección y prevención de intrusos para aplicaciones Web.
El módulo cuenta con diversas funcionalidades:
Filtrado de Peticiones: los pedidos HTTP entrantes son analizados por el módulo mod_security antes de
pasarlos al servidor Web Apache, a su vez, estos pedidos son comparados contra un conjunto de reglas
predefinidas para realizar las acciones correspondientes. Para realizar este filtrado se pueden utilizar
expresiones regulares, permitiendo que el proceso sea flexible.
Técnicas antievasión: las rutas y los parámetros son normalizados antes del análisis para evitar técnicas de evasión.
Elimina múltiple barras (//)
Elimina directorios referenciados por si mismos (./)
Se trata de igual manera la \ y la / en Windows.
Decodificación de URL
Reemplazo de bytes nulos por espacios (%00)
Comprensión del protocolo HTTP: al comprender el protocolo HTTP, ModSecurity™ puede realizar filtrados específicos
y granulares.
Análisis Post Payload: intercepta y analiza el contenido transmitido a través del método POST.
Log de Auditoría: es posible dejar traza de auditoría para un posterior análisis forense.
Filtrado HTTPS: al estar embebido como módulo, tiene acceso a los datos después de que estos hayan sido descifrados.
Verificación de rango de Byte: permite detectar y bloquear shellcodes, limitando el rango de los bytes.
Lo podemos encontrar para nginx e IIS7
Fail2ban
Fail2ban es una herramienta que observa los intentos de login de variados servicios,
tales como SSH, FTP, SMTP, HTTP, entre otros; y si encuentra intentos de login fallidos
una y otra vez desde una misma IP, fail2ban rechazará estos intentos de login bloqueando
con reglas de iptables a esas IPs que estaban intentando.
Pruebas:
* Se intenta hacer logins fallidos por ssh desde otro servidor
* Se revisan los logs de fail2ban
2012-07-24 23:57:33,789 fail2ban.actions: WARNING [ssh-iptables] Ban 192.168.0.7*
Se revisan las reglas de iptables
# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh-iptables tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Snort y Base (Basic Analisis and Security Engine)
Snort es un potente IDS/IPS (Intrusion Detection System/Intrusion Prevention
System) que se ha convertido en un estándar en el campo de la seguridad de
sistemas informáticos. Es una herramienta que utiliza una filosofía muy similar a
IPTables, ya que utiliza reglas sobre los paquetes que viajan en una red, sin
embargo, dependiendo del modo de ejecución va un poco mas allá, permitiendo
tomar decisiones sobre la información intercambiada y la detección de posibles
ataques sobre peticiones que aunque aparentemente son legitimas, pueden encajar
en algún patrón de ataque.
Logwatch
Logwatch es un sistema de monitorización simple y eficaz. Su funcionamiento es muy sencillo:
hará un análisis de los ficheros de log del sistema, los resumirá, en algunos casos los
comentará y luego los enviará al administrador por varios métodos posibles.
Es una herramienta muy sencilla, que no requiere la inversión de mucho tiempo en su
configuración y que sin embargo, da una gran funcionalidad al sistema que estemos
administrando.
Logwatch realiza un chequeo de los logs del sistema y envía un email con el resultado.
Para instalarlo:
apt-get install logwatch
Configurarlo:
copiar el fichero /usr/share/logwatch/default.conf
a /etc/logwatch/conf/logwatch.conf
y editar este último, realizando los siguientes cambios si es necesario:
Print = No
Output = mail
MailTo = [email protected]
Range = Today
Detail = High
Si al ejecutar logwatch da un error crear el directorio:
mkdir /var/cache/logwatch
Por último para programar su ejecución diaria añadir a /etc/crontab
0 6 * * * root /usr/sbin/logwatch
Centralizando los logs con rsyslog
Los logs funcionan con rsyslog, una herramienta muy potente y que permite incluso
enviar los mensajes de los logs a otra máquina donde centralizarlos
(lo cual puede ser muy útil si administramos un número importante de máquinas).
También se puede usar en cualquier otra instalación Debian estándar y en los derivados
(por ejemplo, Ubuntu)
Probando los logs locales
Para probar nuestro sistema de forma local, vamos a simular un error en una aplicación de
correo. Los logs no se escriben a mano sino a través de la orden “logger”.
La sintaxis la puedes consultar con:
$ man logger
En nuestro caso vamos a usar la orden:
$ logger -p mail.err "Esto es una prueba“
La opción -p imprime el mensaje “Esto es una prueba” en el log llamado “mail.err”
Leyendo los logs locales
Para ver el error que hemos simulado, basta con ver el contenido que se ha añadido al final
de log. Los diarios se almacenan en la ruta /var/log así que:
cat /var/log/mail.err
Veremos algo como lo siguiente:
dic 13 18:50:39 PC Usuario: Esto es una prueba
donde PC y Usuario son los nombres de nuestra máquina y del usuario que emite el mensaje.
Obviamente no es muy práctico tener que leer los logs de esta forma pero existe una multitud
de herramientas con las que agilizar la gestión de los diarios, su lectura, aplicar filtros,
hacer búsquedas, etc.
Probando nuestro sistema de diarios remotos
Desde el cliente, emitimos un mensaje:
$ logger -p 0.0 "hola remoto"
Introduzco la factoría 0 y el nivel 0, que se ajustarán al patrón *.* que definimos en el envío…
En el servidor puede que aparezca una notificación si nos encontramos en la terminal:
Message from [email protected] at Dec 13 20:04:11
usuario: hola remoto
Y además, el mensaje quedará registrado tal y como queríamos. Se puede ver así:
cat /var/log/prueba.log
La transparencia estará disponibles desde
» http://www.adrianramirez.es/secadmin.pdf
» Si quieres escribirme, puedes hacerlo en:
» [email protected]
» O buscarme en la red por “adrian dolbuck”
Preguntas ????
.
¿Cuál
FIN es el mensaje

Documentos relacionados