El camino de Dragonfly hacia el desarrollo de plataformas de herramientas de seguridad de bajo código

1. Antecedentes

La versión beta interna de Dragonfly se lanzó la víspera del 1 de mayo, y rápidamente se acumularon muchas herramientas y el número de usuarios aumentó gradualmente, pero también descubrí gradualmente que este tipo de plataforma apilada no tiene mucho contenido técnico; estaba preguntándome si podría hacer algo útil El desafío es que las plataformas de código bajo han sido bastante populares en los últimos años. Me preguntaba si podría construir una plataforma de código bajo en un escenario de seguridad.

1.1 Punto de partida de la demanda

En la industria de la seguridad, podemos pensar en dos tipos de grupos, los peces gordos de los desarrolladores y los script kiddies;

Los desarrolladores tienen grandes habilidades y pueden escribir herramientas poderosas, pero después de todo, la energía de una persona o un equipo es limitada y las funciones son relativamente únicas, por lo que es difícil crear herramientas integrales como AWVS; desarrolladas por cada equipo Las herramientas son
fáciles se usa en un aspecto, pero es difícil lograr todos los aspectos y no considerará demasiadas interfaces externas para la integración ascendente y descendente;

La energía principal del script es usar herramientas para escanear vulnerabilidades. Recopilarán varios tipos de herramientas, pero para un equipo rojo o un escenario de excavación SRC, es básicamente imposible que una herramienta satisfaga sus necesidades;

Así que hoy tuve un capricho: ¿puedo construir una plataforma para conectar varias herramientas, de modo que las diversas herramientas no se dispersen y encapsular las herramientas desarrolladas por el maestro en una interfaz, de modo que los flujos de datos de estas herramientas se puedan conectar? juntos y adaptarse lo más posible a cada escenario individual.

1.2 Libélula y vuelo

Podemos ver muchas plataformas de vuelo relacionadas con la seguridad en el mercado. El enfoque de la plataforma de vuelo es la orquestación, y Dragonfly también es la orquestación, y la dirección es la misma;

Sin embargo, también existe una diferencia entre Dragonfly y Soar, en que los componentes de Dragonfly admiten la ejecución en la máquina del usuario, mientras que los escenarios de aplicación de la plataforma soar convencional se ejecutan principalmente en la plataforma en la nube, y los escenarios admitidos son básicamente operación y mantenimiento y escenarios de operación;

¿Por qué Dragonfly admite escaneos intensivos? Está relacionado con el modo de arquitectura de Dragonfly: la plataforma de vuelo convencional es básicamente una plataforma saas, y Dragonfly necesita agregar nodos de trabajo además de saas;

La plataforma SaaS de Dragonfly solo se usa para la orquestación de aplicaciones y la consola, y el nodo es el lugar donde realmente se ejecuta la tarea, por lo que no es necesario considerar muchos problemas, como que el rendimiento del usuario a gran escala no puede mantenerse al día, los nodos de ejecución y no ser en el espacio de red del usuario.

2. ¿Cuál es la importancia de una plataforma de código bajo?

2.1 Crea tu propio flujo de trabajo

Escenario 1: detección de vulnerabilidades

Obtenga un lote de URL de la página web especificada (el contenido devuelto por cada solicitud es diferente), detecte si hay vulnerabilidades de inyección SQL en las URL y notifique al grupo sobre la información de vulnerabilidad detectada en DingTalk.

Para los ingenieros con experiencia en desarrollo, este proceso es relativamente simple: no es más que escribir un script, solicitar continuamente la dirección para obtener la URL, luego eliminar datos duplicados, llamar a SQLmap para la detección y finalmente escribir un evento de notificación de DingTalk;

Sin embargo, llevará mucho tiempo implementarlo, pero si sabe que Dragonfly Security Platform se puede implementar de esta manera, es posible que no pueda evitar quejarse.WC,还能这样实现!

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-md4g4S10-1655965620071)(http://oss.songboy.site/blog/ 20220622205818.png)]

Como puede ver en la figura anterior, solo necesita arrastrar algunos botones de componentes y completar los parámetros necesarios, el proceso en esta figura es primero 获取URL内容-> 对数据做过滤-> 扫描器扫描-> 钉钉通知;

No podrán pasar más de cinco minutos antes y después, y se podrán completar los requisitos. Y encontrará que en esta imagen no necesita mucho código, pero puede crear una herramienta de seguridad que se adapte a sus necesidades;

Escenario 2: Notificación de información

Obtiene información de inteligencia de seguridad de una página web diariamente y 反序列化envía la información contenida en la información a su servidor.

Entonces el proceso de orquestación puede verse así, como se muestra en la siguiente figura

Debe proporcionar inteligencia de vulnerabilidad URL, una pequeña cantidad de datos de detección Python脚本y la dirección de su servidor URL. Según la imagen, es inconveniente para los usuarios comunes escribir scripts de Python;

Pero no se preocupe demasiado, empaquetaremos directamente los scripts de filtrado de datos populares en componentes, para que los usuarios puedan arrastrar directamente los componentes y luego solo necesiten completar la URL de inteligencia y la URL del servidor para lograrlo.

Escenario 3: escaneo de código por lotes

Dado un lote de direcciones de almacén de códigos Git, debe realizar un análisis de seguridad del código y enviar los resultados a la dirección especificada.

Puedes construir un diagrama de flujo como este.

Primero use 读取文件内容el componente para leer la lista de direcciones del almacén, use 运行Python脚本el componente para extraer el código al local, luego use 墨菲代码扫描el componente para escanear y finalmente use webhookel componente para notificar el resultado

De hecho, encapsularé el script de Python dentro de esto en un componente más adelante, para que descubra que no necesita escribir código y que pueda crear fácilmente un escenario empresarial.

2.2 Centrarse en construir la escena

Con la ayuda de plataformas de código bajo, otra esperanza es ayudar a los desarrolladores a apoyarse en gigantes, darse cuenta rápidamente de sus propias necesidades y evitar reinventar la rueda;

3. Dificultades en el desarrollo de plataformas.

El desarrollo de la plataforma Dragonfly de código bajo encontrará algunas dificultades que son diferentes del desarrollo de aplicaciones convencionales, como problemas de comunicación entre nodos de proceso, transmisión de datos entre nodos y transmisión de datos;

3.1 Comunicación entre componentes

En la plataforma de código bajo Dragonfly, se espera que los nodos componentes estén aislados entre sí y puedan comunicarse; el aislamiento es para permitir que cada nodo componente se organice más libremente y el requisito de comunicación es que el nodo B debe estar ejecutado en el nodo A sólo después

Los requisitos son algo contradictorios, pero deben cumplirse, por lo que creé un componente público durante el diseño, todos los componentes pueden comunicarse con el componente público para informar el estado de ejecución actual y luego el componente público programa el siguiente estado de ejecución del componente.

3.2 Intercambio de datos

Los datos de cada nodo de Dragonfly son independientes entre sí, pero en algunos escenarios, los datos deben compartirse, como en el escenario de auditoría de código, el nodo A es responsable de llevar el código al local y el nodo B es responsable de escanear el código;

Estos archivos deben almacenarse en el sistema de archivos. Los nodos de Dragonfly en realidad se basan en contenedores acoplables. Por lo tanto, la solución de Dragonfly es montar un determinado directorio en el host para todos los contenedores y los datos se almacenan en el directorio especificado del contenedor.

3.3 Longitud del enlace de depuración

En la etapa de desarrollo, necesitamos realizar una prueba unitaria de cada componente. Después de la depuración, debemos realizar una depuración conjunta entre los componentes. Debido a que el entorno entre los componentes está aislado, el proceso de depuración es muy engorroso.

Por ejemplo, tenemos una escena que utiliza cuatro nodos A, B, C y D. Cuando los resultados de la ejecución no cumplen con las expectativas, puede localizar qué nodo es anormal a la vez, pero la anomalía probablemente no sea este nodo. causado por sí mismo, sino por los propios datos del nodo ascendente;

Los componentes de la plataforma pueden provenir de otros miembros del equipo o de la comunidad, es posible que no puedas resolverlo solo, lo que consumirá mucho tiempo de desarrollo;

Cabe señalar aquí que la prueba unitaria de cada componente debe verificarse repetidamente y los parámetros deben verificarse estrictamente al recibir los parámetros; de lo contrario, este problema es extremadamente fácil de ocurrir.

4. Proceso de desarrollo

Lo más importante de una plataforma de código bajo es facilitar que los usuarios la comprendan y comiencen a trabajar rápidamente; de ​​lo contrario, el valor de una plataforma de código bajo es casi inexistente.

Para permitir que los usuarios comunes comiencen rápidamente, la experiencia interactiva de front-end es particularmente importante. Para permitir que los usuarios comprendan el proceso de transferencia de datos, las plataformas de código bajo generalmente usan diagramas de flujo para mostrar las transferencias de datos. El componente de diagrama de flujo de Dragonfly Se selecciona Security Platform de antv Xflow

xflow se desarrolla con lenguaje mecanografiado y también se utiliza reaccionar. Antes de eso, mis habilidades de front-end se implementaban principalmente con bootstrap y jQuery. La extensión de la pila de tecnología de front-end es el mayor punto de riesgo técnico para mí.

Me tomó una semana terminar la enseñanza básica de mecanografiar y reaccionar. En la segunda semana, intenté escribir una lista de tareas pendientes con reaccionar de forma independiente, y luego intenté escribir una función de evaluación de pedidos y luego gradualmente construí un estante para el back-end. Función de gestión de datos y luego volver a Mirando hacia atrás en Xflow, básicamente puedes entender qué hacer.

Cinco, finalmente

La plataforma de código bajo de Dragonfly aún está en su infancia y sus componentes funcionales no son lo suficientemente completos. Con el paso del tiempo y nuestro rápido desarrollo, los componentes se volverán más completos y algún día cubrirán sus escenarios de uso.

Dirección de la plataforma de seguridad Dragonfly: http://qingting.starcross.cn/

Dirección del almacén de Dragonfly GitHub: https://github.com/StarCrossPortal/QingTing


Fecha: 23 de junio de 2022

WeChat: songboy8888

Autor: Tang Qingsong

Supongo que te gusta

Origin blog.csdn.net/u013431141/article/details/125426472
Recomendado
Clasificación