MITMプロキシ、Webファザー、リバースコネクションハンドラ、そして自動化されたセキュリティテストとエクスプロイトのためのプラグインシステムを備えたオールインワンのペネトレーションテストプラットフォーム。
<p align="center">
<a href="https://yaklang.io/"><img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/head.jpg" style="width: 400px"/></a>
<h2 align="center">Yakit - 対話型アプリケーションセキュリティテストプラットフォーム</h2>
<p align="center">
<img src="https://img.shields.io/github/issues-pr/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/releases"><img src="https://img.shields.io/github/downloads/yaklang/yakit/total">
<a href="https://github.com/yaklang/yakkit/graphs/contributors"><img src="https://img.shields.io/github/contributors-anon/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/releases/"><img src="https://img.shields.io/github/release/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/issues"><img src="https://img.shields.io/github/issues-raw/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/discussions"><img src="https://img.shields.io/github/stars/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/blob/main/LICENSE.md"><img src="https://img.shields.io/github/license/yaklang/yakit">
</p>
<p align="center">
<a href="https://yaklang.oss-cn-beijing.aliyuncs.com/yakit-technical-white-paper.pdf">ホワイトペーパーを見る</a> •
<a href="https://yaklang.io/products/intro/">公式ドキュメント</a> •
<a href="https://github.com/yaklang/yakit/issues">問題フィードバック</a> •
<a href="https://yaklang.io/">公式サイトへ</a> •
<a href="#コミュニティ">コミュニティに参加</a> •
<a href="#プロジェクトアーキテクチャ">プロジェクトアーキテクチャ</a>
</p>
<p align="center">
:book:言語選択: <a href="https://github.com/yaklang/yakit/blob/master/README-EN.md">English</a> •
<a href="https://github.com/yaklang/yakit/blob/main/README.md">中文</a>
</p>
---
# Yakit 概要
セキュリティフュージョンは、新常態における企業のセキュリティ運用・管理改革であり、新常態における企業の喫緊の課題でもあります。
セキュリティフュージョンの理念に基づき、Yaklang.io チームはセキュリティ分野の垂直言語 Yaklang を開発しました。Yak プラットフォームにネイティブ統合できない製品/ツールについては、Yaklang を利用して「高品質な代替品」を再作成できます。エコシステムが完成しており認知度の高い製品については、Yaklang で直接コンパイル・統合し、ソースコードを必要に応じて修正することで、Yaklang 言語への適合性を高めます。コードを書きたくないセキュリティ実務者のために、Yakit は Yaklang のすべての機能に適切な GUI を提供します。バージョンが進むにつれて、GUI はより成熟していきます。
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-cdsl.png" style="width: 500px" alt="yakit-cdsl.png" ></a>
</h3>
Yaklang のセキュリティ機能を実際の使用に近づけるため、Yak 用の gRPC サーバーを作成し、そのサーバーを使用してクライアント Yakit を構築しました。
## プロジェクトアーキテクチャ
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-arch.jpg" style="width: 600px" alt="yakit-arch.jpg" ></a>
</h3>
## コア技術:CDSL
CDSL は CyberSecurity Domain Specific Language(サイバーセキュリティ分野特化言語)として定義されています。このチューリング完全な言語の実行時状態を保持するために、スタック型仮想マシンを開発しました。CDSL の手段を通じてセキュリティ機能の融合と基盤プラットフォームの統一を目指しています。
独自開発のセキュリティ分野 CDSL を実際の使用シナリオに近づけるため、Yaklang 用の gRPC サーバーを作成し、その gRPC サーバーに基づいてクライアント Yakit を構築しました。実際には、Yakit の GUI を通じてエンジンの機能を操作します。Yakit の gRPC サーバーにより、ユーザーはプラットフォームに依存せず、リモート配置またはローカル起動を選択して、より迅速かつ便利に配置できます。
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-gongneng.png" style="width: 700px" alt="yakit-gongneng.png" ></a>
</h3>
1. BurpSuite を完全に代替可能な MITM ハイジャックプラットフォーム;
2. 再現が難しい MITM パッシブスキャン GUI;
3. Yaklang スクリプトを埋め込んで動的にトラフィックをデバッグ;いつでも動的にコードを実行;
4. 世界初のビジュアル Web ファジングツール — Web Fuzzer;
5. Yakit プラグインストア;
6. ペネトレーションテストのあらゆる段階でカスタム Yaklang スクリプトまたはプラグインを実行可能
... ...
セキュリティ機能概要:
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yaklang-caps.jpg" style="width: 700px" alt="yaklang-caps.jpg" ></a>
</h3>
## 特徴的な技術
### MITM 対話型ハイジャック
MITM コンソールは、BurpSuite を完全に代替してすべての操作(証明書のダウンロードとインストール、リクエストのハイジャック、レスポンスの編集、ハイジャックしたパケットの編集など)を実行できます。さらに、スムーズなワークフロー(ハイジャック ⇒ History ⇒ Repeater/Intruder)を提供します。トラフィックをハイジャックし、History で履歴データを確認し、「掘り下げる」パケットを選択して Web Fuzzer に送信し、Repeater/Intruder 操作を行います。これらの典型的な操作シナリオに加えて、MITM はプラグインパッシブスキャン、ホットロード、パケット置換、マーキングなどのより柔軟な機能も提供します。
Yakit の MITM モジュールは、HTTP プロキシを起動してトラフィックを自動転送し、手動ハイジャックを開始すると自動転送を停止し、リクエストをブロックしてスタックに上げ、Gzip 解凍、チャンク処理、デコードなどの処理を行い、リクエストを人間が読める形式にしてユーザーのフロントエンドに表示します。ユーザーはリクエストの表示、変更、またはリプレイが可能です。リプレイ時には、ユーザーが構築した HTTP リクエストパケットを修復し、パケットの有効性を保証します。Yak エンジンは HTTP ライブラリを手動で実装しているため、ユーザーは特殊なシナリオでの脆弱性悪用に適用できる、奇形のリクエストパケットやレスポンスパケットをカスタマイズできます。
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-mitm.png" style="width: 700px" alt="yakit-mitm.png" ></a>
</h3>
### Web アプリケーション対話型トラフィックリプレイとファジング
Web Fuzzer モジュールは、ユーザーが HTTP 原文のリクエストをカスタマイズして送信することをサポートします。ユーザーが直感的かつ簡単に使用できるよう、データ関連情報のみに集中できるように、Yakit バックエンドでは多くの処理を行っています。HTTP 原文内のデータ転送と解析を保証する一部の情報(CRLF の修復、Content-Type の補完、チャンク転送、バウンダリの補完、Content-Length の修復など)は、すべて Yakit バックエンドで修復・補完されます。
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/webfuzzer.png" style="width: 600px" alt="webfuzzer.png" ></a>
</h3>
### Fuzztag 技術
Web Fuzzer モジュールは、Fuzz タグを通じて Host 衝突、Intruder、ディレクトリブルートフォースなどの機能を自然かつ完璧に統合します。例えば、単一パラメータブルートフォースのシナリオ(ユーザー ID のブルートフォース)では、`{{int(1-10)}}` タグを使用してブルートフォース用の ID を自動生成できます。複数パラメータブルートフォースのシナリオでは、直積の結果をブルートフォースパラメータとして使用します。BurpSuite の Intruder モジュールと比較すると、ブルートフォース方法の選択や辞書のインポートなどの手順が不要になり、ユーザーの操作パスが大幅に短縮され、ユーザー習慣に適合します。もちろん、Web Fuzzer モジュールはタグによるパラメータ自動生成に加えて、外部辞書のインポート(例:`{{file(/tmp/username.txt)}}`)もサポートします。より複雑なデータシナリオでは、ホットロードタグの挿入が可能です。例えば、ある地域の身分証明書番号をブルートフォースする場合、Web Fuzzer モジュール内で直接 Yak スクリプトを挿入してデータを生成し、ブルートフォースを実行できます。BurpSuite の Intruder モジュールではこのシナリオに対応するために、コードを書いて辞書を生成し、それを Intruder モジュールにインポートする必要があります。
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/fuzztag.png" style="width: 600px" alt="fuzztag.png" ></a>
</h3>
>Fuzztag の詳細はこちら: [Fuzztag クイックビュー](https://yaklang.com/docs/newforyak/fuzztag)
### 逆接続技術とアプリケーションプロトコル多重化技術
多くの脆弱性悪用シナリオでは、異なるプロトコルサービスの逆接続(リバースコネクション)が必要です。従来の脆弱性悪用ツールでは、パブリックサーバー上で各サービスごとにポートをリッスンする必要がありました(例:LDAP タイプの脆弱性悪用では、HTTP サービスと LDAP サービスを起動し、攻撃リクエストを送信して初めて脆弱性悪用が完了します)。従来のサービスでは、各サービスに一意のポートを割り当てる必要がありますが、Yaklang のポートプロトコル多重化技術では、1つのポートでリッスンし、リクエストのプロトコルを識別して適切な応答を行います。Yaklang のポートプロトコル多重化技術の利点は、システムリソースの節約や手動テストの容易さに加え、基礎原理が手動による各種プロトコルヘッダーの識別とプロトコル標準に基づく手動実装であるため、各種プロトコルのデータパケットを柔軟に構築できることです。例えば、奇形のプロトコルを構築して脆弱性悪用したり、DNS プロトコルや ICMP プロトコルなどを介してデータを運搬し、バックドアの権限維持や、TCP プロトコルが利用できない環境での脆弱性悪用に利用できます。
同時に、Yakit はポートプロトコル多重化技術に基づいて逆接続モジュールを実装しており、Reverse Shell、逆接続悪用、逆接続検出の機能を含みます。Reverse Shell は指定ポートでリッスンし、シェルをリバースする受信端として機能します。シェルを受信すると、ssh と同様にリモートサーバーを制御できます。従来のペネトレーションテストにおける逆接続需要では、Nc を使用してポートをリッスンする必要がありましたが、バックスペースキーや矢印キーなどが文字化けする問題があり、リバースシェルの使用感はネイティブ ssh とは大きく異なります。Yakit の Reverse Shell は、ネイティブ ssh に近い使用体験を提供します。逆接続悪用機能では、1つのポートでリッスンし、異なるプロトコルのコールバックに対して Payload を設定できます。リクエストを受信すると自動的に要求プロトコルを識別し、対応する Payload を返して脆弱性悪用を実現します。逆接続検出機能は、TCP、DNSLog、ICMP の逆接続検出を提供し、コマンド実行の検出などに使用できます。
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/reverse.png" style="width: 600px" alt="reverse.png" ></a>
</h3>
## 使用方法
- [公式サイト](https://yaklang.com/)からダウンロード・インストールできます。
- Yakit の学習と使用については、[公式ドキュメント](https://yaklang.io/products/intro/)をご参照ください。
より技術的な内容については以下をご確認ください:
[Yakit 技術記事](https://yaklang.io/products/article/yakit-technical-study/methodology)
[技術白書](https://yaklang.oss-cn-beijing.aliyuncs.com/yakit-technical-white-paper.pdf)
## コミュニティに参加
製品に関する建設的なご意見やバグ報告は、issue をお寄せください。
WeChat 公式アカウントからもご連絡いただけます。商用ライセンスや協力についてもお問い合わせください。
交流グループへの参加や、技術担当者との連絡が必要な場合は、運営用 WeChat アカウントを追加してコミュニティにご参加ください:
<h3 align="left">
運営用WeChat ID:<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/wechat2.png" style="width: 200px" alt="wechat2.png" ></a> 公式アカウントQRコード:<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/wechat1.jpeg" style="width: 200px" alt="wechat1.jpeg" ></a>
</h3>
## Stargazers over time
[](https://starchart.cc/yaklang/yakit)
## 免責事項
1. 本ツールは **合法的な権限** を受けた企業のセキュリティ構築活動および個人の学習活動のみを対象としています。本ツールの有用性をテストする必要がある場合は、ご自身でターゲット環境を構築してください。
2. 本ツールを使用して検査を行う場合、該当行為が現地の法律・規制に適合し、かつ十分な権限を取得していることを確認してください。非権限のターゲットに対するスキャンは行わないでください。
3. 本ソフトウェアに対するリバースエンジニアリング、逆コンパイル、ソースコードの解読、バックドアの埋め込み、マルウェアの拡散などの行為を禁止します。
4. Yakit を商業目的で使用する場合は、公式の許可を取得していることを確認してください。許可なく商業利用した場合、関連責任を追及します。
**上記の禁止行為が発見された場合、法的責任を追及する権利を留保します。**
本ツールの使用中に何らかの違法行為があった場合、利用者は自己の責任で対応するものとし、当社は一切の法的責任および関連責任を負いません。
本ツールをインストールして使用する前に、**各条項をよく読み、十分に理解してください**。
制限事項、免責条項、またはその他の利用者の重大な権益に関わる条項は、**太字**、下線などで強調表示される場合があります。
本契約のすべての条項を十分に読み、完全に理解し、同意しない限り、本ツールをインストールおよび使用しないでください。使用行為、またはその他明示的もしくは黙示的に本契約を受け入れることを示す行為により、本契約を読んで同意したものとみなされます。