犬ターネット

ユーザに気付かれずにクリップボードに任意の文字列をコピーする

2025-03-27 security javascript

閲覧者自身の操作によりマルウエア感染を狙う攻撃 ClickFix についてまとめてみた - piyolog を読んでいたら、

Windows Key + R

Ctrl + V

Enter↲

をユーザに実行させてマルウェアに感染させる手法が書かれていた。

ITリテラシーが高ければ Windows Key + R の時点で怪しいと気付くだろうけど、そうじゃない人もたくさんいるだろう。

で、ポイントはそこではなく次の Ctrl + V。これはクリップボードの内容を出力するコピペの「ぺ」だけど、ClickFix 攻撃を成功させるには悪意のあるコマンドをあらかじめクリップボードに書き込んでおく必要がある。

いろいろ試したけれど、画面表示のタイミングでユーザのアクションなしにクリップボードに書き込むのはブラウザの仕様上難しそう。なのでユーザに何かしらアクションをおこなってもらう必要がある。

簡単なのは、以下のようなボタンをユーザに押してもらうとか。

<button id="btn_test">ここを押してね</button>
<script>
document.querySelector("#btn_test").addEventListener("click", (ev) => {
    ev.preventDefault();
    const text = "悪意のあるコマンド☠☠☠";
    navigator.clipboard.writeText(text).then(() => {
        alert(`クリップボードに「${text}」が書き込まれました`);
    });
});
</script>

ただ、これだとあからさまだから、ボタンを広げて画面に被せて透過させ(※クリックジャッキング方式)、画面タップのタイミングでボタンを消してしまえば、ユーザに気付かれずにクリップボードに書き込みができる。

以下のサンプルではボタンがギリギリ見えるくらいにしているけれど、実際は透明にして、クリップボード書き込み後のアラートボックスも出さないようにする。

<button id="btn_test2" style="opacity: 0.1; width: 100%; height:10rem;">ここを押してね。押すと消えます</button>
<script>
document.querySelector("#btn_test2").addEventListener("click", (ev) => {
    ev.preventDefault();
    const text = "☠☠☠とても悪意のあるコマンド☠☠☠";
    navigator.clipboard.writeText(text).then(() => {
        ev.target.remove();
        alert(`クリップボードに「${text}」が書き込まれました`);
    });
});
</script>

クリップボードに書き込みされただけなら別にいいんだけど(よくないけど)、結局はユーザのリテラシー不足が原因で攻撃されちゃうわけで、こればかりはシステム側では対処ができない。

セキュリティ界隈は次から次へといろいろな問題が出てきて大変っすね、、、


≪ 2025-03-28
即席出口入口さんのドローイング「ねこ3」

2025-03-26 ≫
豚丼