Post on 07-May-2018
Adrián Ramírez
presentación de
Detección de intrusos en mi sistema
MÓVILES EN SILENCIO.GRACIAS.
Gracias.
ABOUT ME
SECURITY CONSULTANTDATA RECOVERYCOMPUTER FORENSICSDEFENSE MITIGATIONCOMPUTER AND NETWORKING SECURITYSOCIAL ENGINEERGRAPHICS DESIGNWRITERCEO DOLBUCK
Adrián Ramírez
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íaMi servidor:
MySQL caído.Al levantarlo, no respondíaIndicios 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 porun 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 estudiofind / -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 hicea 2 grados,desde este balcónde la casa donde estabaPara 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
De qué hablaremos…
Motivaciónde un atacante
En Windows En Linux
Motivación para atacar un servidor
Profesional (Mafia, cybercrimen)Malware para navegación automáticaMinería bitcoinsUsar ancho de banda para botnetAtaques corrdinados de DDOSCobran para eliminar la competencia(Asesinos a sueldo cibernéticos)Secuestros de datosRobo de datosPerjudicar la reputaciónSabotaje y/o espionaje
Amateur (script kiddie, exploiting )CuriosidadPorque soy guay, y puedo hacerloPorque estoy aburridoVenganza
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 sistemaListado 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 ataquesque 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 coninformación sobre ARP y DHCP así como todos los logs.
Marmita 1.3
Marmita funciona esnifando los paquetes de la interfaz de red seleccionaday analizando aquellos paquetes bien sean ARP o DHCP en busca de posibles ataquesMITM. Cuando detecta un ataque muestra una alerta y lainformación del atacante que haya podido obtener:
Conociendo los servicios con SC query: Permite conocer todos los servicios ejecutadosEn un momento dado para comparar con otros informes anteriores.
Ver conexiones, mi favorita, netstat –nab
N- mostrar los puertos y conexiones en formato numéricoB- binariosA- 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íaEn las directivas locales del sistema
Lo mejor de la línea de comandos es que siempre podemos redireccionar a unArchivo de texto para documentarlo, compararlo, etcarchivo.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 estatarea 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 sistemaListado 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 ensu 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 originalRojo: 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 todoSin 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 aservicios del sistema o de otros programas. En ocasiones puede ser usado porprogramas espía o troyanos, por lo que conviene conocer qué aplicaciones accedena él con herramientas como Svchost Process Analyzer.Svchost Process Analyzer realiza un análisis de Svchost y muestra los serviciosy 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 instaladoInventario de procesos corriendo en tu sistemaListado y estructura de directoriosAudítalo todo con la configuración del sistemaCompara las modificaciones del registro del sistemaControla los usuarios y sus últimos accesosCuidado con el CCLEANER, si hay actividad sospechosa de un usuarioUna buena pista es analizar los archivos temporales. No te vayas a cargar la evidencia
Qué buscar:
Directorios extrañosHoras de acceso en los logs extrañasConexiones a sitios extrañosProcesos 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 desdela ‘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 WinRMWinRM (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 WinRMWinRM (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 TaskForce” )ComponentesWinRM Scripting API – Permite obtener datos desde computadores remotos usando Scripts que ejecuten operaciones basadas en el protocolo WS ManagementWinrm.cmd – Herramienta basada en CLI (Command Line Interface) que permite la configuración de WinRM, manejar sus recursos y obtener datosWinrs.exe – Herramienta de línea de comandos que permite ejecutar remotamente la mayoría de comandos cmd.exe usando el protocolo WS ManagementWMI Service - Servicio que habilita la implementación de Clases WMI para la obtención de datos de Hardware localesITPMI (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 compararps –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/
FeaturesLDAP supported for Octopussy Users & ContactsSend Alerts by Email, IM(Jabber), NSCA(Nagios) & Zabbix_senderExport Reports by Email, FTP & SCPCreate Map to show your architectureInput & Output Plugins for ReportsReports Scheduling'RRDTool' to graph syslog activityLot 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 logsOnline Updates for Services, Tables & MultilanguageMultilanguage 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 depasarlos al servidor Web Apache, a su vez, estos pedidos son comparados contra un conjunto de reglaspredefinidas para realizar las acciones correspondientes. Para realizar este filtrado se pueden utilizarexpresiones 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 URLReemplazo 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 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 fallidosuna y otra vez desde una misma IP, fail2ban rechazará estos intentos de login bloqueandocon reglas de iptables a esas IPs que estaban intentando.
Fail2ban
Pruebas:* Se intenta hacer logins fallidos por ssh desde otro servidor* Se revisan los logs de fail2ban2012-07-24 23:57:33,789 fail2ban.actions: WARNING [ssh-iptables] Ban 192.168.0.7*
Se revisan las reglas de iptables# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationfail2ban-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 PreventionSystem) 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 loscomentará 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.confa /etc/logwatch/conf/logwatch.confy editar este último, realizando los siguientes cambios si es necesario:
Print = NoOutput = mailMailTo = correo@electronico.comRange = TodayDetail = HighSi al ejecutar logwatch da un error crear el directorio:
mkdir /var/cache/logwatchPor último para programar su ejecución diaria añadir a /etc/crontab0 6 * * * root /usr/sbin/logwatch
Centralizando los logs con rsyslog
Los logs funcionan con rsyslog, una herramienta muy potente y que permite inclusoenviar 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 localesPara 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 loggerEn 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 localesPara 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.errVeremos algo como lo siguiente:dic 13 18:50:39 PC Usuario: Esto es una pruebadonde 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 multitudde herramientas con las que agilizar la gestión de los diarios, su lectura, aplicar filtros, hacer búsquedas, etc.
Probando nuestro sistema de diarios remotosDesde 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:11usuario: hola remoto
Y además, el mensaje quedará registrado tal y como queríamos. Se puede ver así:cat /var/log/prueba.log
» http://www.adrianramirez.es/secadmin.pdf
» Si quieres escribirme, puedes hacerlo en:
» adrian@dolbuck.net» O buscarme en la red por “adrian dolbuck”
La transparencia estará disponibles desde
.
Preguntas ????
¿Cuál es el mensajeFIN