jueves, junio 23, 2016

Sistema para automatizar técnicas de Fuzzing.

Grinder es un sistema para automatizar técnicas de Fuzzing de navegadores web y la gestión de un gran número de resultados de fallos (por ejemplo, pilas de llamada con información de símbolos, así como la información de registro que se pueden utilizar para generar casos de prueba reproducibles en una etapa posterior). Un servidor Grinder proporciona una ubicación central para cotejar los resultados de fallos y a través de una interfaz web, permite a varios usuarios acceder y gestionar todos los resultados de fallo que se generan por parte de todos los nodos de la Grinder.

Entre la características de Grinder destacan:

  • E una aplicación web multiusuario. El usuario puede acceder y gestionar todos los resultados de fallos reportados por los nodos de Grinder. Los administradores pueden crear más usuarios y ver el historial de inicio de sesión.
  • Los usuarios pueden ver el estado del sistema Grinder. La actividad de todos los nodos del sistema se muestra incluyendo información de estado, tales como: casos de prueba que se ejecutan por minuto, los reportes de fallos que un nodo ha generado y la última vez que un nodo generado un reporte.
  • Los usuarios pueden ver todos los reportes de fallos en el sistema y ordenarlos por nodo, objetivo, tipo de fuzzer, tipo de hash y tiempo.
  • Los usuarios pueden ver las estadísticas de fallos para los fuzzers, incluidos los fallos totales y únicos por fuzzer y los objetivos de cada fuzzer.
  • Los usuarios pueden ocultar todos los resultados duplicados con el fin de mostrar sólo los fallos únicos en el sistema con el fin de gestionar fácilmente nuevas estadísticas de fallos que se producen.
  • Los usuarios pueden asignar las estadísticas de fallos entre sí, así como marcar un fallo en particular como: interesante, explotable, sin interés o desconocido.
  • Los usuarios pueden almacenar notas escritas por un fallo en particular (visible para todos los demás usuarios) para ayudar a gestionarlos.
  • Los usuarios pueden descargar archivos de registro de bloqueo individuales para ayudar a depurar y volver a crear casos de prueba.
  • Los usuarios pueden crear filtros personalizados para excluir las estadísticas de fallos sin interés de la lista.
  • Los usuarios pueden crear alarmas por correo electrónico personalizadas para alertar cuando un nuevo fallo entra en el sistema que coincide con un criterio específico.

Grinder trabaja en nodos para recolectar mejor la información de resultados de fallos y un servidor para gestionar los resultados. Las características de estos nodos son:

  • Un nodo puede configurado para realizar fuzzing desde cualquier navegador compatible a través de un único comando.
  • Inyecta una DLL de registro en el proceso de navegador de destino para ayudar a los fuzzers a ejecutar una sesión con el fin de volver a crear casos de prueba en una etapa posterior.
  • Contiene registros de información útil como: errores de pila, volcado de pila, volcado de código y cualquier información de símbolos disponibles.
  • Puede cifrar automáticamente toda la información de choque con una clave pública RSA.
  • Puede informar automáticamente de nuevos fallos a una servidor Grinder remoto.
  • Un nodo puede ejecutarse sin vigilancia durante un largo período de tiempo.

Grinder para sus nodos requiere un sistema Windows 32/64 bits y Ruby 2.0 (también es compatible Ruby 1.9  pero no será capaz realizar Fuzzing a objetivos de 64 bits). Un servidor Grinder requiere un servidor web con PHP y MySQL.

Más información y descarga de Grinder:
https://github.com/stephenfewer/grinder

jueves, junio 16, 2016

Monitorizar patrones significativos de Ransomware.

Ransomware es un tipo de malware que se instala de forma encubierta en un ordenador, sin el conocimiento del usuario, después restringe el acceso al sistema informático infectado y exige que el usuario pague un rescate a los operadores del malware, para eliminar la restricción. El ataque  del ransomware consiste en cifrar archivos de forma sistemática, en el disco duro del sistema, que se convierten en inaccesibles, si no se paga el rescate. Otros ataques pueden simplemente bloquear los mensajes del sistema y la visualización de un mensaje para convencer al usuario a pagar.

El ransomware normalmente se propaga como un troyano, cuya carga útil se disfraza como un archivo aparentemente legítimo, por ejemplo, como archivo descargado o explotando una vulnerabilidad de software.

El ransomware intenta leer y luego cifrar los archivos, creando un identificador para cada archivo con el que interactúa. No importa qué algoritmo de cifrado utilice, este es un concepto mas a bajo nivel, en función de cómo el núcleo de Windows interactúa con el hardware del sistema. Si somos capaces monitorizar la frecuencia de nuevos identificadores que son creados por cada proceso, es posible detectar la actividad anormal producida por el ransomware. Esto también se aplicaría al malware destructivo que ha sido diseñado para sobrescribir una gran cantidad de archivos para impedir su recuperación.

Teniendo en cuenta que un objeto es una estructura de datos que representa un recurso del sistema, tal como un archivo. Una aplicación no puede acceder directamente a los datos de un objeto o a un recurso del sistema que representa un objeto. En su lugar, una aplicación debe obtener un identificador de objetos, que se puede utilizar para examinar o modificar los recursos del sistema. Cada identificador tiene una entrada en una tabla mantenida internamente. Estas entradas contienen las direcciones de los recursos y los medios para identificar el tipo de recurso. Esta es una de las varias capas de abstracción que separan el usuario (y todos los procesos que están en ejecución), a partir de los activos físicos, tales como el disco duro. Cualquier solicitud de acceso a un archivo en el disco, tiene que pasar por el núcleo de Windows y si desea modificar ese archivo en el modo de usuario, es necesario crear un identificador.

Basado en este patrón de identificación esta diseñada la herramienta para Windows, llamada handle_monitor, que hace un balance de cada identificador de archivo, por proceso a través del sistema. A continuación, tiene una pequeña pausa (a discreción del usuario) y comprueba de nuevo los nuevos identificadores que no se han visto antes y se calcula el número de nuevos identificadores creados. Si el umbral pasa  un número definido de ciclos, a continuación, se genera una alerta y se realiza una acción (tal como la suspensión del proceso sospechoso).

Secuencia de funcionamiento:
  1. Genera un índice de todos los archivos se encarga de todos los procesos en ejecución.
  2. Pausas (/pause=X) para cantidad de tiempo.
  3. Monitoriza los índices, para mantener un recuento.
  4. Después los ciclos definidos (/cycles=X) , lleva a cabo un análisis.
  5. En el análisis comprueba si todos los procesos han sobrepasado el umbral (/threshold=X) de repetición de identificativo.
  6. Si es así, se bien generar una alerta para el proceso (/suspend).

Por defecto, sólo se busca ejecutables sin firmar (para reducir el ruido), pero se puede incluir firmados con "/signed".

Modo de empleo de  handle_monitor: 

handle_monitor.exe <parametros opcionales>

Parámetros opcionales:

/cycles=X, número de ciclos de monitorización (por defecto: 10)
/threshold=X, establecer umbral de sospecha para el número de nuevos identificadores (por defecto: 10).
/pause=X, establecer pausa en milisegundos entre los ciclos (por defecto: 1000).
/signed, incluir ejecutables firmados en el proceso de revisión.
/suspend, suspender procesos que se consideren sospechosos.
/verbose, mostrar mensajes detallados.

Más información y descarga de  handle_monitor:
https://github.com/adamkramer/handle_monitor

jueves, junio 09, 2016

Plataforma para crear un SOC enfocado a compartir información de análisis de incidencias malware.

MISP (Malware Information Sharing Platform and Threat Sharing), es una solución de software de código abierto para: recoger, almacenar, distribuir y compartir indicadores de ciberseguridad sobre el análisis de los incidentes de seguridad y malware. MISP está diseñado por y para los analistas de incidentes, profesionales de la seguridad y analista de malware para apoyar sus operaciones del día a día y compartir informaciones estructuradas de manera eficiente. 


El objetivo del MISP es fomentar el intercambio de información estructurada dentro de la comunidad de seguridad de la información. MISP proporciona funcionalidades para apoyar el intercambio de información, sino también el consumo de la información  de sistemas de detección de intrusos (NIDS) y también conectarse herramientas de análisis tipo SIEM.

Las funcionalidades básicas de MISP son:

  • Una base de datos eficiente IOC y los indicadores que permite almacenar información técnica y no técnica sobre: muestras de malware, incidentes, los atacantes y la inteligencia.
  • Correlación automática entre los atributos e indicadores de malware, ataques o campañas de análisis.
  • Funcionalidad de compartir integrada para aliviar el intercambio de datos, modelos diferente de distribuciones. Puede sincronizar automáticamente los eventos y atributos entre los diferentes MISP. Se pueden utilizar funcionalidades avanzadas de filtrado para satisfacer cada política de organización e intercambio incluyendo, una capacidad de intercambio de grupo flexible y mecanismos de distribución con alto nivel de atributo.
  • Una interfaz de usuario intuitiva para que los usuarios finales puedan: crear, actualizar y colaborar en eventos, atributos y indicadores.
  • Una interfaz gráfica para navegar sin problemas entre los acontecimientos y sus correlaciones. Funcionalidades avanzadas de filtrado y lista de advertencias para ayudar a los analistas a contribuir.
  • Permite almacenar datos en un formato estructurado (que permite el uso automatizado de la base de datos para diversos fines) con un amplio apoyo de los indicadores de ciberseguridad a lo largo de los indicadores de fraude como en el sector financiero.
  • Soporta la exportación de datos a: IDS, OpenIOC, texto plano, CSV,  MISP XML o salida JSON para integrarse con otros sistemas (IDS de red, ID de host o herramientas personalizadas)
  • Importación masiva con lotes de importación: OpenIOC, GFI sandbox y ThreatConnect CSV.
  • Herramienta importación  en modo texto, flexible para facilitar la integración de los informes no estructurados en MISP.
  • Un sistema ligero para colaborar en eventos y atributos que permiten a los usuarios del MISP proponer cambios o actualizaciones de atributos y indicadores.
  • Intercambio de datos y la sincronización automática con otros grupos de confianza que utilizan MISP.
  • Permite un mecanismo de anonimato simple para distribuir las publicaciones de eventos e indicadores a otras organizaciónes.
  • Una API flexible para integrar MISP con otras soluciones. Incluye  PyMISP que es una biblioteca de Python flexible para: buscar, añadir o actualizar los atributos de eventos y manejar muestras de malware.
  • Taxonomía ajustable para clasificar eventos y etiquetas con esquemas propios de clasificación o clasificación existente . La taxonomía puede ser local en el MISP sino que también se puede compartir entre instancias de MISP.
  • Con módulos de expansión en Python para ampliar los servicios de MISP.
  •  Soporte para obtener observaciones de las organizaciones en relación con los indicadores y atributos compartidos. Contribuyendo a través de la interfaz de usuario MISP o documentos STIX.
  • Permite exportar datos en el formato STIX (XML y JSON).
  • Permite Cifrado y firma de las notificaciones a través de PGP y S/MIME en función de las preferencias del usuario. 

El intercambio de información se traduce en una detección más rápida de los ataques  y mejora el ratio de detección al tiempo que reduce los falsos positivos. También evitamos el malware similar al que otros equipos o organizaciones que ya lo analizaran y añadieran información en MISP. Otro beneficio es el de reforzar la inteligencia de nuestros IDS.

Mas información y descarga de MISP:
https://github.com/MISP/MISP