Low Code, Full Turing: Yaklang 分布式引擎 SaaS 化
浪潮
在不到一年的时间里,我们使用新的语言(DSL)构建了一整套基础的 “安全能力生态”,并且实现了一套 “可用” 的 BurpSuite 替代方案,而且在 MITM 被动扫描 / Web Fuzzer 各种地方开辟了属于自己的新的技术路径。但是这些仅仅是项目的起点,除了勇敢尝试 “打破 BurpSuite 垄断” 这件几乎不可能的事情,过程中还会面临很多新的挑战和新形态的探索问题。
私有云适配和 SaaS 化是现今产品发展和商业化的热点,甚至可以说必经之路,那么一个 DSL,或者说一个嵌入式语言能在私有云适配 / SaaS 化层面做哪些 Amazing 的操作呢?
DSL vs 低代码
A: 当 “内部系统” 越来越多的时候,如何让各种已经封装好的能力和系统之间彼此协调互相连接?
B: 产品功能完备,如何把产品本身的能力低成本地提供给用户?
C: 各厂商,各平台安全产品众多,他们之间如何协调(SoC/SOAR)?
其实这些工作内容可能大家并不陌生,市面上不管是 RPA 也好,还是 FaaS 或者说流程平台,Soar Palybook 也好,他们都能在理论上很好地实现上述需求。
但是归结到更底层的技术点,我们以 FaaS 平台为例,引入特定 SDK 的 Python 脚本可以作为 FaaS 平台的 Function 运行,并进行编排,特定 SDK 的 JavaScript 也是 FaaS 平台常客,除此之外,要编写特定的 Palybook (Splunk Soar 为例) 需要 Splunk Search Language 支持。
In a Nutshell:当我们总结上述案例,发现一个普遍规律:不论流程的任意编排,还是能力的支持和实现,基本都需要依赖一门 “语言(GPL 或者 DSL)” 提供基础的图灵完备能力(Turing-Complete)。
分布式系统+Yaklang=?
当我们 “把事情想简单并且抽象一点”,一个特定领域内 DSL + 一个靠谱的分布式系统是不是可以综合两者的优势构建一个 1+1>2 的系统呢?
我们主观一点叫它 “图灵完备的分布式低代码系统”,这非常好的契合了我们的标题:“Low Code, Full Turing”。
那么,这样的系统,我们能拿来做什么呢?
当一个新的漏洞出现,我们可以非常简单地在 Yakit 上编写一段代码,把它运行在我们的分布式 Yaklang 系统中,对成千上万的目标进行检测。
如果我们并不想扫描漏洞,那么我们的 Yaklang 可以是仅扫描端口指纹的,那我们编写完 Yaklang 插件的时候,就已经具备了 “无限算力的端口扫描能力”;那么有没有可能快速构建第二个 Shodan 之类的空间搜索引擎?
同样的,如果指纹扫描的深度不够,需要对 Web 应用做更深度的 “启发式检测”应该怎么办?Yaklang Chromedp 的实现可以实现一个高任务吞吐的 RPA。
当然,我们上述的所有内容,都可以放在一段 Yaklang 脚本中,分发到成千上万的节点中执行
我们需要定期生成一个任务?监控某一些系统的指标?是不是也能做?
如果我们可以用 Yaklang 来定期生成报告,那也还不错?
01
要做?不,已有!
上述描述的各种能力,很多内容都是大家 “梦寐以求” 并且一直努力在做的,虽然系统和理念各有差别,但是上述描述的 “Low Code, Full Turing” 系统其实描述的是一种上层建筑的框架结构,整体形状可以说是技术基石。
其实更直观地对大家来说:
Yaklang 就是这套系统的 “执行节点”;
同时 Yakit 能很好的作为 “执行节点” 能力的证明,为个人用户日常工作提供极大地便利;
分布式引擎将作为 Yaklang 在低代码平台和商业产品中发挥作用的基石;
02
分布式任务控制与调度
在 “分布式的扫描”,最关键的一步一般来说是 “任务分发”,如何让自己的任务灵活分发到 N 多个节点中?
Web Fuzzer 中的 FuzzTag 是一个非常好的实现方式,事实上,我们就是这样做的。
03
控制粒度
如果你想要分发一个大的 IP 段,这个 IP 段扫描 100 个端口,那么我们可以编写
{{net(192.168.1.1/24)}}:{{port(22,23,25,443,445,3389,80,8080-8083)}}
上述代码使用一行可以下发一个 IP 对应一个端口的分布式任务填满任务队列
{{net(192.168.1.1/24)}}:22,23,25,443,445,3389,80,8080-8083
下面代码可以以主机为单位分发任务,生成任务队列。
04
控制周期
05
控制分布式节点
定位:仍然是基础设施
正如本文开头给大家介绍的内容,我们希望分布式的 Yaklang 应该能作为一些 “简单可运营” 系统的承载基础,可以辅助用户 “快速灵活低成本” 地构建基于 Yaklang 的低代码平台。
届时我们将迁移 Yakit 编辑器中所有 “自动补全” 到该引擎中
我们将把基础分布式引擎中的所有分布式调度相关功能打磨到 “稳定且所见即所得”
诚然,分布式的 Yaklang 引擎的用户将不会是 “C端个人用户”,而是一个完全面向 toB 的产品线,这个基础设施的用户并不限定甲乙方,目的也并不是解决安全能力的问题,应该解决安全能力快速 “工程化与产品化” 的问题。借助 Yaklang 引擎本身提供的能力,快速做到可 “持续,交付,运营” 的基础设施。
招聘需求!!!
随着产品与业务的迅速扩大,团队的扩充也是必然选项,为此 Yaklang 成都团队新增设 HC,欢迎大家投递简历至:tianqiuju@4dogs.cn
区域安全服务与交付负责人(成都)
职责与要求:
本科及以上学历,有不少于 3 年网络安全从业工作经历,经历优秀者可谈;
有团队管理经验,落地西南地区安全服务和产品定制项目交付;有前场工作经验为优;
对内连接公司销售团队与安全服务团队与 Yak(Yakit) 产品线,具有实际问题工程化能力;
具有相当的技术积累或技术人脉积累,对行业技术发展方向有清晰的认识;
加分项:
前场交付工作经验;
技术领域有所成就;
同时具有甲乙方深度工作经验;
前端工程师(成都)
要求:
基本契合 "React hooks / Vue3 TypeScript" 技术栈
可独立完成前端项目构建与脚手架配置
熟悉中后台常见交互技术
有低代码平台前端开发经验为优
对技术有极大热心
了解更多Yak相关信息,欢迎及时关注我们的官网/微信公众号,
或者加入小小的技术讨论组(进讨论组请添加微信),立即获取最新的技术姿势。
官网教程:
https://www.yaklang.io/products/intro
视频教程:
https://space.bilibili.com/437503777
下载地址:
https://github.com/yaklang/yakit