yakit-basic について
Yakit は、ペネトレーションテスト担当者やセキュリティ実務者向けのグラフィカルなセキュリティテストプラットフォームです。このスキルでは、画面構成、エンジン接続、プロジェクトデータ、テスト・スキャン・プラグイン・監査の流れを紹介します。
主な機能
- 01MITM によるトラフィックの確認と変更
- 02Web と WebSocket のファジング
- 03ポートスキャンと脆弱性検査
- 04プラグインのインストールと管理
- 05トラフィック、リスク、資産の記録
- 06ローカルまたはリモートエンジンへの接続
活用シーン
- 01テスト中の HTTP トラフィックの確認と変更
- 02Web Fuzzer によるリクエストの再送
- 03スキャンの実行と検出リスクの確認
- 04プロジェクト切り替えによるセキュリティデータの分離
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ yaklang/ yak-skills --skill yakit-basicインストール後、Claude Code で/yakit-basicを入力して読み込まれたか確認します。
同梱ファイルexamples/basic-plugin-skeleton.yak
詳細
スキル:Yakit 基本使用
AI 読み込み指示:Yakit は Yak Project のグラフィカルなセキュリティテストプラットフォームで、Electron フロントエンドと yaklang エンジンバックエンドで構成され、 両者は gRPC で通信します。このページは「Yakit の画面に何があり、各機能エリアが何を行い、エンジンをどう接続するか」を案内する入門ガイドです。プラグインやホットロード スクリプトを作成する場合は、該当する専門スキルに案内してください(第 6 節のルーティング表を参照)。このページでは UI と基本的な使用方法のみを説明します。
0. 関連ルーティング
- 総合入口:yak
- スクリプトと UI の連携メカニズム(
yakit.*ライブラリ関数で画面表示を制御する方法):yakit-ui-binding - ホットロードとプラグイン開発:mitm-hotpatch / webfuzzer-hotpatch / global-hotpatch
- ネイティブプラグインと cli パラメーターのフォーム:yakit-native-plugin
- 右クリック codec プラグイン:yakit-rightclick-plugin
1. アーキテクチャの概要(まず三層構造を理解する)
flowchart LR
subgraph Frontend["Yakit 前端 (Electron + React)"]
UI["界面交互<br/>MITM/Fuzzer/Codec/扫描/插件..."]
end
subgraph Engine["yaklang 引擎 (本地进程)"]
GRPC["gRPC Server<br/>yakgrpc"]
Lang["Yaklang 脚本引擎<br/>common/yak"]
Libs["内置库<br/>poc/codec/db/risk/synscan..."]
end
UI <-->|"gRPC 双向流<br/>ExecResult / 请求响应"| GRPC
GRPC --> Lang
Lang --> Libs
Libs -->|"SQLite/GORM"| DB[("项目数据库<br/>profile/project")]
重要なポイント:
- エンジンは独立したプロセスです:yaklang エンジンはローカルで起動する gRPC サービスです(デフォルトのポートはエンジンが自動的に選択します)。フロントエンドの Electron アプリケーション は gRPC 双方向ストリームを通じて通信します。エンジンはすべての yak スクリプトの実行、スキャン、MITM プロキシ、パケット送信などの「重い処理」を担います。
- フロントエンドは表示と操作のレイヤーです:Yakit フロントエンド(React + Electron)はセキュリティロジックを実行しません。ユーザーの操作を gRPC リクエストに変換し、
エンジンから返される
ExecResultストリームをログ、テーブル、グラフ、リスクカードなどの UI コンポーネントとして描画します。 - データベースは二層構造です:
profileデータベース:グローバル設定、プラグインスクリプト(YakScript)、Payload 辞書、グローバル KV、フィンガープリントデータベースなど。projectデータベース:プロジェクトの切り替えに応じて切り替わる過去のトラフィック(HTTPFlow)、リスク(Risk)、ポート資産、ドメイン資産など。
ソースコードの場所:エンジンのエントリーポイント
yaklang/common/yakgrpc/、フロントエンドでの gRPC ストリームの処理yakit/app/renderer/src/main/src/hook/useHoldGRPCStream/、フロントエンドのルート定義yakit/app/renderer/src/main/src/routes/newRoute.tsx。
2. 3 種類の画面モード
Yakit コミュニティ版には 3 種類のモードがあり、左側のメニューの形状で区別します(yakit/app/renderer/src/main/src/routes/newRoute.tsx の
YakitModeEnum で定義されています):
| モード | メニューの形状 | 対象ユーザー | 固定 Tab |
|---|---|---|---|
| セキュリティエキスパート | 左側にアイコンバー、右側に「その他」の折りたたみメニュー | 熟練したペネトレーションテスター | MITM / Web Fuzzer / History |
| クラシック | 左側にツリー形式の折りたたみメニュー | 初心者/従来のメニューに慣れている方 | ホーム / History |
| スキャン | 左側にツリー形式のメニュー(簡易版) | 一括スキャンのみが必要な方 | - |
モードは「システム設定」で切り替えます。切り替えると、左側のメニューと固定 Tab も変わります。
3. コア機能エリアのルーティング表
フロントエンドの YakitRouteToPageInfo と RouteToPage から抽出した主要ページです(機能別に分類):
3.1 ペネトレーションテスト
| 機能 | ルート key | 画面の用途 | 関連スキル |
|---|---|---|---|
| MITM インタラクティブ傍受 | mitm-hijack | MITM プロキシを起動し、HTTP トラフィックをリアルタイムで確認/変更/転送し、ホットロード hook を読み込みます | mitm-hotpatch |
| Web Fuzzer | httpFuzzer | 単一 Tab でのパケット送信とデバッグに対応し、fuzztag、ホットロード、連続パケット送信、データ抽出をサポートします | webfuzzer-hotpatch |
| Websocket Fuzzer | websocket-fuzzer | WebSocket プロトコルのパケット送信と fuzz を行います | - |
| Codec | codec | エンコード/デコードツールです。base64/url/hex/hash などを内蔵し、カスタム codec プラグインにも対応します | yakit-rightclick-plugin |
| データ比較 | dataCompare | 2 つのデータの差分を比較します | - |
| Yak Runner | yakScript | オンラインで yak スクリプトを作成/実行します。IDE と同等です | yaklang-syntax |
3.2 セキュリティツール
| 機能 | ルート key | 画面の用途 | 関連スキル |
|---|---|---|---|
| ポート/フィンガープリントスキャン | scan-port | ポートスキャンとフィンガープリント識別を行います | - |
| 脆弱性の個別検出 | poc | PoC プラグインに基づいて一括検出を行います | yakit-native-plugin |
| 弱いパスワードの検出 | brute | 弱いパスワードのブルートフォースを行います | - |
| 空間エンジン | space-engine | 空間情報収集エンジンで検索します(Fofa/Hunter/Quake など) | - |
| サブドメイン収集 | plugin-op(内蔵) | 「サブドメイン収集」プラグインを呼び出します | yakit-native-plugin |
| 基本クローラー | plugin-op(内蔵) | 「基本クローラー」プラグインを呼び出します | yakit-native-plugin |
| ディレクトリスキャン | plugin-op(内蔵) | 「総合ディレクトリスキャンとブルートフォース」プラグインを呼び出します | yakit-native-plugin |
3.3 プラグイン
| 機能 | ルート key | 画面の用途 | 関連スキル |
|---|---|---|---|
| プラグインリポジトリ | plugin-hub | オンラインプラグインストアです。ワンクリックでダウンロードしてインストールできます | - |
| 一括実行 | batch-executor-page-ex | 複数のプラグインを一括実行します | yakit-native-plugin |
| プラグイン管理 | plugin-audit | インストール済みプラグインを管理します(有効化/無効化/編集/審査) | - |
| プラグインの新規作成 | add-yakit-script | 新しいプラグイン(yak/mitm/codec タイプ)を作成します | yakit-native-plugin |
3.4 コールバック
| 機能 | ルート key | 画面の用途 |
|---|---|---|
| DNSLog | dnslog | DNS コールバック検出 |
| ICMP-SizeLog | icmp-sizelog | ICMP エコー検出 |
| TCP-PortLog | tcp-portlog | TCP ポートへのコールバック検出 |
| Yso-Java Hack | PayloadGenerater_New | Java デシリアライゼーション用 payload を生成します |
| コールバックサーバー | ReverseServer_New | コールバックサーバーを一元管理します |
| ポートリスナー | shellReceiver | リバース Shell を待ち受けます |
3.5 数据库(项目数据)
| 功能 | 路由 key | 界面用途 | 关联 skill |
|---|---|---|---|
| History | db-http-request | MITM/Fuzzer 产生的全部历史流量 | yakit-data-extract-plugin |
| 流量分析器 | db-http-request-analysis | 历史流量高级分析 | - |
| 漏洞与风险 | db-risks | 扫描产出的漏洞/风险列表 | - |
| 报告 | db-reports-results | 扫描报告查看 | - |
| 端口 | db-ports | 端口资产列表 | - |
| 域名 | db-domains | 域名资产列表 | - |
| 指纹库 | fingerprint-manage | Web 指纹规则管理 | - |
| CVE 管理 | cve | CVE 数据查询 | - |
| 字典管理 | payload-manager | Payload 字典管理(与 db.SavePayload 联动) | yaklang-database |
| 配置管理 | config-management | 全局配置(代理/Payload/热加载模板) | global-hotpatch |
3.6 AI 功能
| 功能 | 路由 key | 界面用途 |
|---|---|---|
| AIAgent | ai-agent | AI 对话与自动化任务 |
| 知识库 | ai-repository | AI 知识库管理 |
| 工具库 | ai-tool | AI 工具管理 |
| 技能库 | ai-forge | AI 技能(Forge)管理 |
| 记忆库 | ai-memory | AI 记忆库 |
3.7 代码审计
| 功能 | 路由 key | 界面用途 |
|---|---|---|
| 代码扫描 | yakrunner-code-scan | 基于 SyntaxFlow 规则扫描代码 |
| 代码审计 | yakrunner-audit-code | 代码审计 |
| AI代码审计 | irify-ai-code-audit | AI 辅助代码审计 |
| 审计漏洞 | yakrunner-audit-hole | 代码审计发现的漏洞 |
| 规则管理 | rule-management | 自定义审计规则 |
| 项目管理 | yakrunner-project-manager | 审计项目管理 |
| Java 反编译 | yak-java-decompiler | Java 类文件反编译 |
4. 引擎连接与项目切换
4.1 引擎连接
首次启动 Yakit 前端时需要连接引擎:
- 本地引擎:在前端"引擎连接"页面选择本地引擎,前端会自动拉起 yaklang 引擎进程。
- 远程引擎:输入远程引擎的 gRPC 地址(host:port),前端通过 gRPC 连接。
引擎启动入口:
yaklang/common/yakgrpc/,gRPC 服务端口由引擎自动选择并通过 IPC 通知前端。 前端 gRPC 客户端封装:yakit/app/renderer/src/main/src/services/electronBridge.ts。
4.2 项目切换
Yakit 的"项目"概念对应一个独立的 project 数据库:
- 切换项目 = 切换 project 数据库,History/Risk/Port/Domain 等数据随之隔离。
profile数据库不随项目切换(插件、Payload 字典、全局配置始终共享)。- 在脚本中用
db.SetProjectKey/db.GetProjectKey存取的项目级配置也随项目切换。 详见 yaklang-database。
5. 新手快速上手路径
flowchart TD
A[安装 Yakit + 连接引擎] --> B[MITM 劫持: 配置代理, 浏览流量]
B --> C[Web Fuzzer: 重放/修改请求]
C --> D[Codec: 编解码/数据变换]
D --> E[插件仓库: 下载社区插件]
E --> F[写自己的插件: yak/mitm/codec]
F --> G[热加载: 内联改流量]
| 步骤 | 操作 | 对应功能区 |
|---|---|---|
| 1. 连接引擎 | 启动 Yakit → 连接本地/远程引擎 | 引擎连接页 |
| 2. MITM 抓包 | 打开 MITM → 设置代理 → 浏览器配置代理 → 浏览目标 | MITM 交互式劫持 |
| 3. 重放/修改 | 在 History 或 MITM 中右键 → 发送到 Web Fuzzer | Web Fuzzer |
| 4. 编解码 | 选中数据 → 右键编码/解码,或打开 Codec 页面 | Codec |
| 5. 装插件 | 打开插件仓库 → 搜索 → 安装 | 插件仓库 |
| 6. 写插件 | 新建插件 → 选类型(yak/mitm/codec) → 写代码 → 保存 | 新建插件 |
| 7. 热加载 | MITM 配置 → 热加载窗口粘贴代码 → 启用 | MITM 热加载 |
6. 完整路由表(到各专题 skill)
| 需求 | 进入 skill |
|---|---|
| MITM 代理劫持/修改请求响应 | mitm-hotpatch |
| Web Fuzzer 单 Tab 发包加解密/签名/重试 | webfuzzer-hotpatch |
| 全局热加载(MITM + Fuzzer 共享) | global-hotpatch |
| 写/读懂 Yaklang 语法 | yaklang-syntax |
| 数据持久化与查询 | yaklang-database |
| 写带参数表单的 yak/mitm 插件 | yakit-native-plugin |
| 写右键 codec 插件 | yakit-rightclick-plugin |
| 从 History 提取数据驱动扫描 | yakit-data-extract-plugin |
| 验证插件/热加载脚本 | yaklang-toolchain |
| yak 脚本如何与 Yakit UI 交互 | yakit-ui-binding |
参考来源
- 前端路由定义:
yakit/app/renderer/src/main/src/routes/newRoute.tsx(YakitRouteToPageInfo/RouteToPage) - 前端 gRPC 流消费:
yakit/app/renderer/src/main/src/hook/useHoldGRPCStream/useHoldGRPCStream.ts - 引擎 gRPC 服务:
yaklang/common/yakgrpc/ - 脚本引擎注入:
yaklang/common/yak/yaklib/yakit_client.go(SetEngineClient覆写yakit全局变量) - 模式枚举:
yakit/app/renderer/src/main/src/store/softMode.ts(YakitModeEnum)