Coder Social home page Coder Social logo

yaklang / yakit Goto Github PK

View Code? Open in Web Editor NEW
6.0K 349.0 782.0 67.93 MB

Cyber Security ALL-IN-ONE Platform

License: GNU Affero General Public License v3.0

Shell 0.03% JavaScript 4.48% HTML 0.02% TypeScript 85.71% CSS 0.19% PowerShell 0.01% SCSS 9.49% NSIS 0.08%
redteam redteam-tools hacking-tools scanner burpsuite pentest golang blueteam exploit hacking

yakit's Introduction

为网络安全而生的领域编程语言

快速开始官方文档问题反馈接口手册贡献代码加入社区项目架构

📖语言选择: English中文


CDSL-Yakang 简介

CDSL:Cybersecurity Domain Specific Language,全称网络安全领域编程语言。

Yaklang 团队综合“领域限定语言”的思想,构建了CDSL的概念,并以此为核心构建了Yak(又称Yaklang)语言来构建基础设施和语言生态。

Yak 是一门针对网络安全领域研发的易书写,易分发的高级计算机编程语言。Yak具备强类型、动态类型的经典类型特征,兼具编译字节码和解释执行的运行时特征。

Yak语言的运行时环境只依赖于YakVM,可以实现“一次编写,处处运行”的特性,只要有YakVM部署的环境,都可以快速执行Yak语言程序。

yaklang-cdsl.png

Yak语言起初只作为一个“嵌入式语言”在宿主程序中存在,后在电子科技大学网络空间安全学院学术指导下,由 Yaklang.io 研发团队进行长达两年的迭代与改造,实现了YakVM虚拟机让语言可以脱离“宿主语言”独立运行,并与2023年完全开源。 支持目前主流操作系统:macOS,Linux,Windows。

Yaklang 的优势

基于CDSL概念构建的网络安全领域编程语言Yak,具备了几乎DSL所有的优势,它被设计为针对安全能力研发领域的专用编程语言,实现了常见的大多数安全能力,可以让各种各样的安全能力彼此之间“互补,融合,进化”;提高安全从业人员的生产力。

CDSL在网络安全领域提供的能力具备很多优势:

  • 简洁性:使用CDSL构建的安全产品更能实现业务和能力的分离,并且解决方案更加直观;

  • 易用性:非专业的人员也可以使用CDSL构建安全产品,而避免安全产品工程化中的信息差;

  • 灵活性:CDSL一般被设计为单独使用和嵌入式使用均可,用户可以根据自己的需求去编写DSL脚本以实现特定的策略和检测规则,这往往更能把用户的思路展示出来,而不必受到冗杂知识的制约;

除此之外,作为一门专门为网络安全研发设计的语言,Yak语言除了满足一些基础的语言本身需要具备的特性之外,还具有很多特殊功能,可以帮助用户快速构建网络安全应用:

  1. 中间人劫持库函数

  2. 复杂端口扫描和服务指纹识别

  3. 网络安全领域的加解密库

  4. 支持中国商用密码体系:支持SM2椭圆曲线公钥密码算法,SM4分组密码算法,SM3密码杂凑算法等

yaklang-fix.jpg

项目架构

yaklang-architecture

快速开始

  • 通过 Yakit 来使用 Yaklang

Yakit (https://github.com/yaklang/yakit) 是 Yaklang.io 团队官方出品的开源 Yaklang IDE,它可以帮助你快速上手 Yaklang 语言。

同时 Yakit 也能将绝大部分安全工程师需要的核心功能图形化。他是免费的,你可以通过 下载安装 Yakit,来开始使用 Yaklang。

关于Yakit的更多内容可移步:Yakit官网文档查看

  • 通过命令行来安装使用

通过命令行来安装使用 Yaklang 请遵循:https://www.yaklang.com/https://www.yaklang.io/ 的指引,或直接执行

MacOS / Linux

bash <(curl -sS -L http://oss.yaklang.io/install-latest-yak.sh)

Windows

powershell (new-object System.Net.WebClient).DownloadFile('https://yaklang.oss-cn-beijing.aliyuncs.com/yak/latest/yak_windows_amd64.exe','yak_windows_amd64.exe') && yak_windows_amd64.exe install && del /f yak_windows_amd64.exe

社区

  1. 你可以在 Yaklang 或者Yakit 的 issues 中添加你想讨论的内容或者你想表达的东西,英文或中文均可,我们会尽快回复
  2. 国内用户可以添加运营 WeChat 加入群组

yaklang-wechat.jpg

  1. 国际用户可以使用 Discord 加入社区

贡献你的代码

这是一个高级话题,在贡献你的代码之前,确保你对 Yaklang 整个项目结构有所了解。

在贡献代码时,如果你希望修改 Yaklang 或 YakVM 本身的核心语法部分,最好与研发团队取得联系。

如果您仅仅想要增加库的功能,或者修复一些库的 Bug,那么您可以直接提交 PR,当然 PR 中最好包含对应的单元测试,这很有助于提升我们的代码质量。

项目成员

Maintainer

v1ll4n: Yak Project Maintainer.

yaklang 核心开发者 / Active yaklang core developers

  1. z3
  2. Longlone
  3. Go0p
  4. Matrix-Cain
  5. bcy2007
  6. naiquan
  7. Rookie-is
  8. wlingze

开源许可证

本仓库代码版本使用 AGPL 开源协议,这是一个严格的开源协议,且具有传染性,如果您使用了本仓库的代码,那么您的代码也必须开源。

  1. 强制开源网络服务:要求提供网络服务的源代码必须开源。保证开源理念在网络环境下的实践。
  2. 其他条款与 GPL 相同:开源免费、开源修改、衍生开源等。

本项目开源仓库仅应该作为个人开源和学习使用。

鸣谢

本项目经由电子科技大学张小松(网络空间安全学院)教授学术指导。

基础理论学科

  1. Alonzo Church, "A set of postulates for the foundation of logic", Annals of Mathematics, 33(2), 346-366, 1932.
  2. Dana Scott, Christopher Strachey, "Toward a mathematical semantics for computer languages", Proceedings of the Symposium on Computers and Automata, Microwave Research Institute Symposia Series Vol. 21, New York, 1971.
  3. Henk Barendregt, Wil Dekkers, Richard Statman, lambda Calculus with Types, Perspectives in Logic. Cambridge University Press, 2013.
  4. Braun, M., Buchwald, S., Hack, S., Leißa, R., Mallon, C., Zwinkau, A. (2013). Simple and Efficient Construction of Static Single Assignment Form. In: Jhala, R., De Bosschere, K. (eds) Compiler Construction. CC 2013. Lecture Notes in Computer Science, vol 7791. Springer, Berlin, Heidelberg.

工程技术

  1. Terence Parr, "The Definitive ANTLR 4 Reference", Pragmatic Bookshelf, 2013.
  2. Terence Parr, "Simplifying Complex Networks Using Temporal Pattern Mining: The Case of AT&T's Observed Data Network", Dissertation, 1995.
  3. Terence Parr, Russell Quong, "ANTLR: A Predicated-LL(k) Parser Generator", Journal of Software Practice and Experience, July 1995.
  4. Google Ins, "Protocol Buffers", https://developers.google.com/protocol-buffers, 2020.
  5. Google Ins, "gRPC", https://grpc.io/, 2020.
  6. Microsoft Ins, "Monaco Editor", https://microsoft.github.io/monaco-editor/, 2020.

Star History

Star History Chart

yakit's People

Contributors

alisalm avatar b1rdfree avatar baimeow avatar go0p avatar luoluoth avatar matrix-cain avatar orangewatermelon avatar rookiebc avatar song-xiao-lin avatar vernon818 avatar villanch avatar way29 avatar wlingze avatar wusphinx avatar x-ai avatar youngster-yj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yakit's Issues

安装报错

yak_windows_amd64.exe install
panic: The system cannot find the path specified.

goroutine 1 [running]:
palm/common/spec.init.1()
D:/a/yak/yak/common/spec/strings.go:17 +0xa5

功能建议

使用file库中的ReadLines方法读取大体积文件时会占用大量内存 这限制了读取文件大小
建议增加逐行读取的操作
scan-service和synscan现有命令行一次只能扫描单一范围
建议增加从文件读取扫描列表的方法

功能建议

1、实现基本漏洞的扫描功能,如sql注入、xss、备份文件扫描等不适用于poc编写的模块。

2、(监听模块下或新增插件)增加被动扫描功能,并且在其中实现基本漏洞及poc的调用。

3、yak脚本编写后是否可以打包为单独的可执行文件

ui设计的建议

image
1)填写 MITM 代理端口127.0.0.1:8080 这句话显得有点空,一行页面就这么一个提示,浪费了不少空间,并且和下面的可复制的提示逻辑重复
image

2)以下两个按钮逻辑其实是累赘了,一般来说大家用bp习惯了,都直接在包上面改动后直接发送,所以可以直接把提交劫持后的逻辑覆盖到直接转发上
image
image

3)可以把下图中的按钮的逻辑修改为:按下后发送当前请求,并且该请求可以看到响应包。减少用户鼠标点击的次数,既满足减少响应包噪音的问题,又能满足在关键请求时可以看到响应包。
image
建议这个按钮的位置挪到提交劫持后数据包这个按钮,以免用户在直接发送、直接丢弃、查看响应发送三个按钮上点错了。
image

4)下图中的两处逻辑重复,其实可以保留左上角,直接写8080劫持中,简单明了一点,这样“请设置代理http..”也可以不要了
image

5)去掉sudo,在win上没有sudo的概念
image

6)去掉文本框的加载图像,保持与抓包时一致,增加体验的一致性
image
image

7)关闭yakkit时,可以提示一下是否关闭后台的yak进程,单兵模式建议直接关闭。

功能建议

image
在这里可以加一个一键关闭前面所有标签页的功能。由于从burp转型到yakit,可能很多功能不熟悉,有时候会打开很多标签页。一个一个关闭很麻烦

MITM模块的“发送到Web Fuzzer”不管用

在手动劫持模式下,将抓到的请求按右键发送到Web Fuzzer,结果界面切换到了Web Fuzzer-[1],但请求数据并没发送过去,必须手动复制粘贴过去。

启动失败了

Yakit Server 认证失败:Yak Server 未启动或网络不通,或证书不匹配

标签关闭

标签关闭是否可以批量,或者除此标签外关闭的其他的

exit status 2

rt 我的远程部署的出现了问题,扫描出现
exit status 2
啥原因 求解答

一个小建议

地表最强漏洞库真的太好用了!
有一个小建议 比如wordpress poc实在是太多了 检测完之后是否可以增加一个过滤命中/非命中的功能呢?
虽然risk表中已经很清晰了 但增加一个过滤是否会看起来更直观呢? 也可能我这个建议功能冗余了哈
非常感谢师傅们开发的神仙级工具!

更新失败

image

image

环境: macos big sur 11.6

有一点很奇怪,我自行安装 nuclei, 并用nuclei -update-templates 可以修复无文件问题,但当我再次使用yakit更新功能时,/Users/fe1w0/.config/nuclei 再次为空,如图2 。
image

不走本地host文件

本地搭建服务器调试web服务的时候,由于chromium系的无法对127.0.0.1地址进行代理,所以一般都改host文件
image
然而用yakit抓包后,再发送,会发现yakit不走host文件,显示域名不存在
image

BurpSuite无此问题
image

Web Fuzz 的HEX UI很奇怪

左边UI放大之前:
image
可以看到HEX的明文部分被遮住了

尝试放大:
image
可以看到并没卵用。中间出现了大段空白。

无法对照HEX和TEXT

grpc安装报错

Ubuntu按照文档一键安装成功,但是无法启动,启动报错

MITM使用建议

在history显示的时候,并不是实时反馈,而是要点击刷新才能获取到结果。
建议改为实时显示结果。

功能建议:专项漏洞检测流量优化

可以对专项漏洞检测的插件,不管是nuclei还是yak原生插件,都可以对其收发包给一个类似MITM中history的流量展示方式。
如此以来,用户可直观看到每一个脚本的收发包,通过观察是否超时、是否reset,以及收发包关键内容,来判断该脚本是否是误报。
同样,用户可通过将这个数据包发送到repeater的方式,低成本改变发包的内容,构造自己想要的exp。

远程模式希望添加一个记住配置的选项

远程模式希望添加一个记住配置的选项,貌似每一次退出之后重新连接都需要重新去填写ip和端口,有时候配置了证书就需要去复制,希望添加一个像cs一样的有记录配置的功能,这样切换服务端比较方便,谢谢大佬了

Translate app in English.

Sir,
It looks like the app is awesome from screenshots. But after executing ./yakit-*** I can not understand any thing because the UI is in Chinese. It would be nice if there is an option to change the App UI language into English.
Thanks.

一个建议

默认安装在c盘 建议安装时可以修改默认路劲

MITM展示优化建议

history展示部分可以参考BurpSuit,挺好用

  1. 去除不怎么关心的部分,如请求时间(因为都是最新的,给个id排序即可),url长度、参数个数,最右边的“分析参数按钮”,将响应类型简化,现在的“application/json; charset=utf-8”太细节了,没啥用,可以直接改成MIME Type,内容是json即可。
    2.history参考burp的host和url分开展示,因为经常用到的一个功能是按host排序
    3.给个选中反馈,点击某一列后变个颜色即可。
    4.改变展示方式,上面是list,下面分两块,左边是请求包,右边是响应包,报文最下面给个框搜索定位。
    5.增加右键菜单,常见功能如发送到fuzz,发送到compare,编解码这些安排上。

一个小建议:正则修改返回包

认真的翻了相关功能和文档,好像没有burp中正则修改返回包的功能?强烈建议加上!
虽然手动劫持的时候可以修改返回包,但是一个个修改非常麻烦,而且有些功能对于数据包的相应时间非常苛刻,手动修改来不及

更新错误

v1.0.9-beta10尝试升级v1.0.9-patch1 更新报错
Snipaste_2021-11-11_09-04-52

关于Web Fuzzer的建议

POST请求在点击“改变HTTP方法成GET”后,POST请求的body、header中的“content-type”和“content-length”没有删掉

GET请求在点击“改变HTTP方法成POST”后,只在header加了“Content-Length”,“content-type”未添加

在修改为上传数据包之后,再点击修改get或者post,body内容未删除,希望可以优化下体验

一个页面显示的小BUG

出现场景:在插件仓库中搜索YAML POC nacos相关POC时,出现两个插件右侧详情的页面超出了,好像就这两个pco有这种情况。
图片
图片

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.