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”

那么,这样的系统,我们能拿来做什么呢?

  1. 当一个新的漏洞出现,我们可以非常简单地在 Yakit 上编写一段代码,把它运行在我们的分布式 Yaklang 系统中,对成千上万的目标进行检测
  2. 如果我们并不想扫描漏洞,那么我们的 Yaklang 可以是仅扫描端口指纹的,那我们编写完 Yaklang 插件的时候,就已经具备了 “无限算力的端口扫描能力”;那么有没有可能快速构建第二个 Shodan 之类的空间搜索引擎?
  3. 同样的,如果指纹扫描的深度不够,需要对 Web 应用做更深度的 “启发式检测” 应该怎么办?Yaklang Chromedp 的实现可以实现一个高任务吞吐的 RPA
  4. 当然,我们上述的所有内容,都可以放在一段 Yaklang 脚本中,分发到成千上万的节点中执行
  5. 我们需要定期生成一个任务,监控某一些系统的指标?是不是也能做?
  6. 如果我们可以用 Yaklang 来定期生成报告,那也还不错?

要做?不,已有

上述描述的各种能力,很多内容都是大家 “梦寐以求” 并且大家一直努力都在做的;虽然系统和理念各有差别,但是上述描述的 “Low Code Full Turing” 系统其实描述的是一种上层建筑的框架结构,整体形状或者说技术基石。

其实更直观地对大家来说

  1. Yaklang 就是这套系统的 “执行节点”;
  2. 同时 Yakit 能很好的作为 “执行节点” 能力的证明,同时为个人用户日常工作提供极大地便利;
  3. 分布式引擎将作为 Yaklang 在低代码平台和商业产品中发挥作用的基石;

分布式任务控制与调度

在 “分布式的扫描”,最关键的一步一般来说是 “任务分发”,如何让自己的任务灵活分发到 N 多个节点中?

Web Fuzzer 中的 FuzzTag 是一个非常好的实现方式,事实上,我们就是这样做的

控制粒度

如果你想要分发一个大的 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

下面代码可以以主机为单位分发任务,生成任务队列。

控制周期

控制分布式节点

定位:仍然是基础设施

正如本身开头给大家介绍的内容,我们希望分布式的 Yaklang 应该能作为一些 “简单可运营” 系统的承载基础,可以辅助用户 “快速灵活低成本” 地构建基于 Yaklang 的低代码平台;

  1. 届时我们将迁移 Yakit 中编辑器中所有 “自动补全” 到改引擎中
  2. 我们将把基础分布式引擎中的所有分布式调度相关功能打磨到 “稳定且所见即所得”

诚然,分布式的 Yaklang 引擎的用户将不会是 “C端个人用户”,而是一个完全面向 toB 的产品线;这个基础设施的用户并不限定甲乙方;目的也并不是解决安全能力的问题,应该解决的安全能力快速 “工程化与产品化” 的问题。借助 Yaklang 引擎本身提供的能力,快速做到可 “持续,交付,运营” 的基础设施。

Yak官方资源

Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值