-
如何理解云化分布式自动化渗透测试平台? -
平台架构介绍 -
未来的一些想法和计划 -
岗位招聘 -
内容总结
0x02. 平台介绍
-
渗透测试平台定位于为实际的安服项目、攻防演练提供支撑,需覆盖的场景更多,而后者主要满足个人平时的安全测试和挖洞 -
用户量更多,且为一线安全人员,平台功能更加丰富和贴近实战。随之复杂度也会增加,对平台的架构设计要求更高 -
有专人对接用户需求、协调试用和收集反馈,有更加充足的研发资源,实现更快的优化迭代速度,而后者需要个人拥有“全栈”技能
0x03. 平台架构
-
前端:Vue + Element UI,语言方面为了代码更易维护,采用强类型的 TypeScript。 -
后端:包含业务层和安全引擎两部分。业务侧追求开发速度,使用 Python 3.8 + Django REST framework。引擎侧关注效率使用 Golang,之间通过 gRPC 进行调用
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
业务服务(python)依赖引擎服务(golang),二者需要同时运行。类似 docker-compose,在 k8s 的 Pod 内可以运行两个 container,容器实例之间通过 localhost 进行相互访问 -
对于如前端和后端 API server 服务,服务的实例之间没有本质区别,使用 Deployments 来部署 -
对于如 RabbitMQ Cluster 服务,节点区分 master 和 slave,使用 StatefulSets 来运行
-
Python 为解释型语言,动态类型开发速度快、灵活,但易出错。Golang 为编译型语言,静态类型让代码更易维护 -
Golang 拥有 goroutine 和 context,对并发的支持和控制更好,运行速度和效率要比 Python 更高 -
公司已有安全能力开发语言为 Golang,能进行复用和相互输出
-
一个节点会运行多个 Dramatiq worker processes,即有多个任务同时在执行和打印日志,想要从日志文件中查看某个特定任务的日志会非常困难。此时可以通过 CurrentMessage middleware 获取到当前任务的 message_id,然后结合自定义的 logging Formatter ,在打印的日志添加 message_id 前缀,这样能方便的通过 grep 等命令找到特定任务的所有日志 -
Dramatiq worker 在 gevent 启动模式下,无法通过 raise exception 来中止执行,因此依赖此的 middleware 如 TimeLimit, Abort 等都无法使用。不过这个问题在 21 年 9 月,有一位大佬提了 PR 解决了这个问题,感兴趣的可以看看 https://github.com/Flared/dramatiq-abort/issues/11
-
代码直接出现报错,如未正确处理异常等。此时可以通过图中的错误监控和追踪服务 Sentry,将错误调用栈等相关信息上报至平台,并发送通知给研发人员进行处理 -
服务质量,如某功能依赖第三方接口,网络错误、服务不稳定都会导致运行失败。如果每次都打印错误日志,会导致 Sentry 告警太多,无法查看。对于这类问题,有一个共性,即少量的失败是可接受的,只有超过特定比例才会被认为是问题。因此我们需要收集一些指标数据,来监控服务的状态。这部分由图中打点和统计服务 — Prometheus 来完成
-
数据库需增加只读实例,以缓解主库压力 -
所有服务共用一个数据库集群,部分非核心服务请求量较大,需要剥离成独立库 -
部分服务的监控缺失或阈值的不合理,需要进一步梳理和调整 -
部分业务日志没有持久化存储,缺少统一查询入口,复杂问题排查较困难 -
随着任务量和存储数据逐步增加,如何更合理的规划未来服务所需资源 -
…
0x05. 岗位招聘
-
自动化渗透测试平台:为一线安服师父打造的持续完善的自动化挖洞”神器“,为安服项目、攻防演练提供支撑 -
攻防知识库平台:集前沿漏洞信息收集、分析、检测、防御的一体化知识库平台,赋能公司全产品线 -
安全实训平台:全方位、一体化的网络安全人才培训平台,在实战中提升企业安全人员的安全素质和技术能力 -
…
-
参与扫描引擎的开发和优化,包括但不限于服务探测、爬虫、漏洞检测 -
跟进行业新爆发安全漏洞,分析原理,并编写检测 POC -
学到一线安服和攻击队师父们的渗透思路和经验,并转换为自动化工具 -
…
-
具有扎实的网络基础,掌握任意一门开发语言,具备一定的编程经验 -
熟悉常见安全漏洞原理和检测,了解攻防场景 -
参与过如扫描、爬虫、检测等相关安全产品的研发 -
具有良好的沟通和团队协作能力,热爱技术、责任心强
-
参与分布式、高并发扫描平台的架构设计和优化,学习全栈技术 -
负责模块功能的设计、开发和测试,为公司数百位安全人员提供工具和平台支撑 -
解决全面上云和容器化后所带来的技术挑战,保障平台服务高效稳定运行 -
…
-
具有扎实的编程基础和网络基础 -
熟练掌握 python、golang 等任意一门开发语言,追求良好的代码风格 -
具备较强的逻辑思维分析能力和解决问题能力,对解决具有挑战性问题充满激情 -
具有良好的沟通和团队协作能力、热爱技术、责任心强
-
与全国顶尖攻击队师傅一起参与护网/攻防等高端攻击项目,相互学习进步 -
探索研究前沿的攻防技术,并在实战中进行实践验证 -
参与攻击队自动化平台的能力建设,探索和打造顶尖攻击团队 -
…
-
具有丰富的实战经验,有大型目标渗透/攻防经验更佳 -
在外网打点/内网横向/域渗透/远控免杀/社工钓鱼/隐蔽持久化/代码审计等一个或多个领域有深入的理解,掌握相关的攻防技术 -
对安全有浓厚的兴趣和较强的独立钻研能力,有良好的团队精神
-
邮箱投递:发送至 [email protected] -
微信投递:添加微信 xiaobing1024 私聊发送
-
自动化安全工具平台 – 架构笔记 https://mp.weixin.qq.com/s/OMhS9yFlcpI9KOQduSxq9g -
TypeScript https://www.typescriptlang.org/ -
gRPC https://grpc.io/ -
Workloads | Kubernetes https://kubernetes.io/docs/concepts/workloads/ -
Operator pattern | Kubernetes https://kubernetes.io/docs/concepts/extend-kubernetes/operator/ -
The Go Programming Language https://go.dev/ -
Dramatiq Cookbook https://dramatiq.io/cookbook.html -
Gitlab CI/CD https://docs.gitlab.com/ee/ci/ -
Sentry https://sentry.io/ -
Prometheus https://prometheus.io/
原文始发于微信公众号(b1ngz的笔记本):云化分布式自动化渗透测试平台 – 架构笔记