🌐 This article hasn't been translated yet — showing the Japanese version.
サイト全体をJSゼロで保存するkage、証拠保全とフィッシング複製は紙一重 thumbnail
DEV TOOLS Importance Medium 2026-07-26

サイト全体をJSゼロで保存するkage、証拠保全とフィッシング複製は紙一重

⏱ approx. 2 min views 4 likes 0 LOG_DATE:2026-07-26
TOC
1. ヘッドレス Chrome で開く
実ブラウザ相当のレンダリングで、JS が組み立てた後の最終 DOM を待って取得。
2. 完成後の見た目をスナップショット
ユーザーが実際に見る画面状態を確定させてから保存対象にする。
3. JavaScript を全除去
スクリプトタグ・イベントハンドラを削除し、通信できない静的ファイルにする。
4. CSS・画像・フォントをローカル化
外部参照をすべてローカルパスに書き換え、単体フォルダとして完結させる。

Go 製の OSS ツール「kage」が Hacker News などで話題になっている。ヘッドレス Chrome でページを開き、JS が動き終わった後の最終的な DOM をスナップショットしたうえで、スクリプトを全部削除し、CSS・画像・フォントだけをローカルパスに書き換えて保存する。素の curl や「名前を付けて保存」と違い、見た目は生きたサイトそのままなのに、開いても一切通信しない純粋な静的コピーができる。作者は「半年後に開いたら真っ白、あるいは今も裏でどこかに通信していた」という保存の失敗体験を解決策として挙げている。

保存ツールは複製ツールと紙一重 #

この仕組みは、フィッシングキット制作の定番手順とほぼ同じだ。正規サイトを見た目そのままに丸ごと取得し、元の JS(解析タグ・CSRF トークン取得・整合性チェック等)を消し、そこに攻撃者の認証情報窃取スクリプトだけを差し込めば、ピクセル単位で本物そっくりの偽サイトが完成する。kage 自体に悪意はないが、「実レンダリング後の DOM を取得し JS を除去する」という処理そのものが、防御側の証拠保全とフィッシング複製という正反対の目的の両方に等しく使える。ツールの善悪ではなく、技術の再利用可能性がリスクの本体という典型例だ。

使うなら守るべき一線 #

実務での注意

不審サイトの証拠保全に使う場合は、取得直後にハッシュ値と取得日時を記録し、生きたサイトとして再公開しない運用を徹底する。

防御側にとっては、フィッシングサイトや消えやすい脅威ページを実行環境ごと保全できる利点は大きい。一方で組織側は、自社サイトが同様の手法でまるごと複製されうる前提に立ち、ドメイン監視やロゴ・ログインフォームの類似度検知など「クローンされること」を織り込んだ監視体制を検討すべきだろう。

𝕏 Post B! Hatena

COMMENTS 0

No comments yet — be the first to leave one.

Post a comment