- Powered by it
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 syslogd@maquina 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