GithubHelp home page GithubHelp logo

yaklang / yakit Goto Github PK

View Code? Open in Web Editor NEW
6.4K 347.0 808.0 71.25 MB

Cyber Security ALL-IN-ONE Platform

License: GNU Affero General Public License v3.0

Shell 0.02% JavaScript 4.23% HTML 0.02% TypeScript 85.49% CSS 0.13% PowerShell 0.01% SCSS 10.03% NSIS 0.08%
redteam redteam-tools hacking-tools scanner burpsuite pentest golang blueteam exploit hacking security

yakit's Introduction

Yakit-交互式应用安全测试平台

查看白皮书官方文档问题反馈进入官网加入社区项目架构

📖语言选择: English中文


Yakit 简介

安全融合是新常态下企业的一项安全运营与安全管理的改革,也是新常态下企业的当务之急。

基于安全融合的理念,Yaklang.io 团队研发出了安全领域垂直语言Yaklang,对于一些无法原生集成在 Yak 平台中的产品/工具,利用Yaklang可以重新编写他们的“高质量替代”。对于一些生态完整且认可度较高的产品,Yaklang能直接编译融合,并对源码进行必要修改,更好地适配Yaklang语言。对于一些不想写代码的安全从业者,Yakit会为Yaklang中所有的能力提供合适的GUI,随着版本更迭,GUI会更加成熟。

yakit-cdsl.png

为了让Yaklang本身的安全能力更贴近大家的实际使用,我们为Yak编写了gRPC服务器,并使用这个服务器实现构建了一个客户端:Yakit。

项目架构

yakit-arch.jpg

核心技术:CDSL

CDSL 定义为 CyberSecurity Domain Specific Language,网络安全领域的专用编程语言;我们编写了一个栈虚拟机来承载这门图灵完备的语言的运行时状态。我们希望通过 “CDSL” 的手段来实现安全能力的融合和底层平台大统一。

为了让自主研发的安全领域 CDSL 更贴近实际使用场景,我们为 Yaklang 编写了 gRPC 服务器,并基于 gRPC 服务器构建了客户端 Yakit。 实际上就是通过 Yakit 的 GUI 去操控引擎的能力。Yakit 的 gRPC 服务器,让用户部署更加方便快捷,与平台无关,可选择远程部署或直接本地启动在主机中使用。

yakit-gongneng.png

  1. 可百分百替代 BurpSuite 的 MITM 劫持平台;
  2. 难以复制的 MITM 被动扫描 GUI;
  3. 嵌入 Yaklang 脚本来实现动态调试流量; 随时动态执行代码;
  4. 全球第一个可视化的Web模糊测试工具—Web Fuzzer;
  5. Yakit插件商店:
  6. 可在渗透测试任何步骤内执行自定义的Yaklang脚本或插件 ... ...

安全能力概览:

yaklang-caps.jpg

特色技术

MITM 交互式劫持

MITM 操作台可百分百替代 BurpSuite执行所有操作(下载并安装证书、劫持请求、响应、编辑劫持到的数据包等)。并且提供一整套顺畅的工作流,劫持=>History=>Repeater/Intruder,劫持数据,在History查看历史数据,选择需要“挖掘”的数据包,发送到Web Fuzzer进行Repeater/Intruder操作。除了这些典型的操作场景外,MITM还提供了插件被动扫描、热加载、数据包替换、标记等更灵活的功能。

Yakit的MITM模块原理是启动一个HTTP代理,自动转发流量,当用户启动手动劫持后,会停止自动转发,阻塞请求,并将请求出栈,做解Gzip、处理chunk、解码等处理,让请求变得人类可读,并显示在用户前端,用户可以对请求做查看、修改或重放。重放时,会对用户构造的HTTP请求数据包做修复,保证请求包的有效性。Yak引擎手动实现了HTTP库,所以用户可以自定义畸形的请求包、响应包,应用于一些特殊场景下的漏洞利用。

yakit-mitm.png

Web应用交互式流量重放与模糊测试

Web Fuzzer模块支持用户自定义HTTP原文发送请求。为了让用户使用简单,符合直觉,只需要关心数据相关信息,Yakit后端做了很多工作。HTTP原文中一些保证数据传输和解析的信息都是由Yakit后端修复补全的,例如修复CRLF,补全Content-Type、通过chunk方式传输、补全boundary、修复Content-Length等等。

webfuzzer.png

Fuzztag 技术

Web Fuzzer模块支持通过Fuzz标签,自然且完美整合了Host碰撞、Intruder、目录爆破等功能。例如单参数爆破场景,以爆破用户id为例,可以使用{{int(1-10)}}标签自动生成爆破的id。面对多个参数爆破的场景,采用笛卡尔乘积的结果作为爆破参数,相较于BurpSuite的Intruder模块,免去了选择爆破方式,导入字典等步骤,极大的减少了用户的操作路径,符合用户使用习惯。当然Web Fuzzer模块除了使用标签自动生成参数,也支持导入外部字典,例:{{file(/tmp/username.txt)}}。面对一些更复杂的数据场景,Web Fuzzer模块支持插入热加载标签,例如需要爆破某地区的身份证号,可以直接在Web Fuzzer模块插入Yak脚本生成数据进行爆破。而BurpSuite的Intruder模块,面临这种场景,需要编写代码生成字典,再导入Intruder模块。

fuzztag.png

关于fuzztag的更多内容可以查看: Fuzztag 速览

反连技术与应用协议复用技术

许多漏洞利用场景需要用到不同协议服务的反连,传统漏洞利用工具需要在公网服务器为每一个服务监听一个端口,如LDAP类型的漏洞利用,需要启动HTTP服务、LDAP服务,然后发送攻击请求,才能完成一次漏洞利用。传统服务需要为每一个服务分配唯一端口,而Yaklang的端口协议复用技术可以监听一个端口,识别请求的协议,作出相应响应。Yaklang端口协议复用技术优势除了节省系统资源,便于手工测试等外,由于底层原理是手工识别了各种协议头,基于协议标准对各种协议进行手工实现,从而可以灵活的构造各种协议的数据包。例如可以构造一些畸形的协议进行漏洞利用,或通过DNS协议、ICMP协议等携带数据,可以通过这种方式作为后门的权限维持或绕过一些TCP协议不出网情况下的漏洞利用。

与此同时Yakit基于端口协议复用技术实现了反连模块,其中包括Reverse Shell、反连利用、反连检测功能。Reverse Shell可以监听指定端口,作为反弹Shell的接收端,收到反弹Shell后,可以和ssh一样控制远端服务器。传统渗透测试的反连需求中需要使用Nc监听端口,但一些按键如退格键、方向键会有乱码的情况,反弹的Shell使用起来和原生的ssh还有很大区别,而Yakit的Reverse Shell可以做到类似原生ssh的使用体验。反连利用部分可以通过监听一个端口,为不同协议的回连设置Payload,收到请求后便会自动识别请求的协议,返回相应Payload,实现漏洞利用。反连检测功能提供了TCP、DNSLog、ICMP反连的检测,可用于一些命令执行的检测。

reverse.png

使用

  • 您可以进入官网进行下载安装

  • 可以查看我们的官方文档进行Yakit的学习和使用

更多的技术内容可以查看:

Yakit技术文章

技术白皮书

加入社区

如果对我们的产品有任何建设性意见或 BUG 反馈,欢迎大家提 issue

或通过微信公众号联系我们,也欢迎联系商业授权与合作

进交流群或有问题想与技术同学沟通,请联系并添加运营微信号加入社区:

运营微信号:wechat2.png 公众号二维码:wechat1.jpeg

Stargazers over time

Stargazers over time

免责声明

  1. 本工具仅面向 合法授权 的企业安全建设行为与个人学习行为,如您需要测试本工具的可用性,请自行搭建靶机环境。

  2. 在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。请勿对非授权目标进行扫描。

  3. 禁止对本软件实施逆向工程、反编译、试图破译源代码,植入后门传播恶意软件等行为。

如果发现上述禁止行为,我们将保留追究您法律责任的权利。

如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。

在安装并使用本工具前,请您 务必审慎阅读、充分理解各条款内容

限制、免责条款或者其他涉及您重大权益的条款可能会以 加粗、加下划线等形式提示您重点注意。

除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用本工具。您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。

yakit's People

Contributors

alisalm avatar b1rdfree avatar baimeow avatar go0p avatar luoluoth avatar matrix-cain avatar orangewatermelon avatar piguagua 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

一个建议

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

一个小建议

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

功能建议

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

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

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

功能建议

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

安装报错

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

grpc安装报错

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

启动失败了

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

功能建议

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

更新失败

image

image

环境: macos big sur 11.6

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

一个页面显示的小BUG

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

Web Fuzz 的HEX UI很奇怪

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

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

无法对照HEX和TEXT

MITM使用建议

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

关于Web Fuzzer的建议

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

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

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

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

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

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.

标签关闭

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

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

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

更新错误

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

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

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

不走本地host文件

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

BurpSuite无此问题
image

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

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

exit status 2

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

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,编解码这些安排上。

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进程,单兵模式建议直接关闭。

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.