2024/06/18 i-FILTER,i-フィルター,サイバー攻撃,改ざんサイト
あなたのWebブラウザーが他人のサイトに不正アクセス!?知らないうちに辞書攻撃が強制される
いつもの Web サイトにアクセスしたときに、あなたのブラウザーが別の Web サイトへ不正アクセスを行っていたかもしれません。
不正アクセスには「辞書攻撃」という手法が使われました。辞書攻撃(ディクショナリアタック)とは、よく使われる単語やパスワードのリスト(辞書)を使用して、何度も何度も繰り返しアクセスしてログインができるかを試すというものです。
攻撃の手口
正規のWebサイトが起点となる
まず、正規の Web サイトが改ざんされ不正なスクリプトが挿入されます。以後、この Web サイトを改ざんサイトと呼びます。
この不正なスクリプトが挿入された状態の改ざんサイトにアクセスすると、「アクセスした訪問者の Web ブラウザーで辞書攻撃が開始」されることになります。
Wordpressサイトへの辞書攻撃
下の【図3】は改ざんサイトにアクセスしたあとの通信の例です(検証のためにオフライン環境で再現したものになります)。
不正アクセスのターゲットは、Wordpress サイトです。ターゲット URL、ログイン ID、パスワードは実行時に指令サーバーから渡されます。
攻撃の挙動
一連の攻撃の挙動がどうなっているのかをまとめると次の通りです。
- 改ざんサイトへアクセス
- 正規の Web サイトが改ざんされて、不正なスクリプトが挿入されています。
- dynamic-linx[.]com/chx.js
- Webブラウザーで改ざんサイトにアクセスすると、まず指令サーバー(dynamic-linx[.]com)から、辞書攻撃で不正アクセスを実行するための JavaScript ファイルを呼び出し、実行します。
- dynamic-linx[.]com/getTask.php
- 次に指令サーバーから、アクセス試行するための情報が渡されます。ターゲット URL とログイン ID はひとつですが、パスワードは100個あります。【図4】参照。
- https://<ターゲットURL>/xmlrpc.php (x100)
- Wordpress の XML-RPC(※1)を狙って不正アクセスを試みます。渡されたパスワードの数だけ一斉に POST メソッドでアクセス試行します。攻撃が成功した場合は、成功したログイン ID とパスワードを記載した txt ファイルが、ターゲットURLのサイトの特定の場所に保存されます。
- dynamic-linx[.]com/completeTask.php
- 成否にかかわらず、指令サーバーに実行結果が送信されます。
- 3.~5.を繰り返し
- 3.からは、前回とは異なるターゲット URL やログイン ID やパスワードが渡されます。
(※1)XML-RPC は異なるシステム間で情報をやりとりする手段で、WordPress の「xmlrpc.php」ファイルはこれを利用して、通常の管理画面からでなく、例えばモバイルアプリなどから遠隔で WordPress への投稿や編集などの操作を可能にします。これらの操作は、XML データを HTTP の POST メソッドで送信して行われます。
上記の挙動は、Web ブラウザーで改ざんサイトを開いている限り継続します。
- 改ざんサイトの訪問者は、バックグラウンドで実行されているため、通常は何が起こっているのか気付くことが難しいでしょう。
- 攻撃を受けた Wordpress サイト側からしてみると、不正アクセスの攻撃元環境は一定ではなく、改ざんサイトの訪問者それぞれの IP アドレス・Web ブラウザーからとなります。特定の IP アドレスや国からのアクセスを拒否するといったことができません。
- 攻撃者はあまり自身の手を汚さず、また攻撃のための実行環境を準備せず、不正アクセスを実行できるというメリットがあります。
辞書攻撃に加えて別の攻撃も
上述した攻撃の挙動2.の「chx.js」という JavaScript ファイルは、観測できた限り、約20回の変更を行っていました。その中での大きな変更点としては、「暗号資産フィッシング」のためのコードが加えられたことがあります。改ざんサイトにアクセスするとポップアップを表示し、クリックするとフィッシングへと誘導するものです。
この「暗号資産フィッシング」と「辞書攻撃」の両方が一度に挙動する状態となりました。【図5】のようなポップアップが表示されると同時に、見えない部分では辞書攻撃が行われていたことになります。
実はこの攻撃者は、暗号資産フィッシングを以前から行っていました。むしろそちらがメインであり、辞書攻撃の方は試験的に導入したと考えられます。そのため、すでに実績のあるコード・手法を、そのまま流用して追加したようです。
辞書攻撃が行われた期間
辞書攻撃だけでみるとおよそ1か月間、2024年2月下旬から3月中旬にかけて観測しました。その後、3月下旬には辞書攻撃の方は停止しています。
停止される直前に、上述した攻撃の挙動3.の「getTask.php」という URL から渡されるデータに変化がありました。まず、渡されるパスワードの数が100個から10個に減少。その後は一時的にエラーが続き、エラーが修正されるとパスワードを含まない「notask」 というデータが渡されるようになりましたが、Web ブラウザーがこれを受け取っても攻撃は行われません。以後は、ドメインが使用されなくなる4月上旬まで同じ状態でした。
停止した理由は、攻撃者が想定していた不正アクセスリストの処理を完遂したからなのか、またはあまり効率的ではないと判断したからなのかはわかりません。
新たなドメイン
辞書攻撃が停止したあとも暗号資産フィッシングは続いていましたが、4月上旬に指令サーバー(dynamic-linx[.]com)がそのものが停止されて使われなくなりました。
しかしその直後に dynamic-flows[.]com という新たなドメインが作成されていることがわかりました。旧ドメインと同じく指令サーバーとして使用され、実行コマンドの JavaScript ファイルの記述もほぼ同じです。ただし、コードの記述が一部誤っている部分があり、挙動はしていません。
しかしながら、本稿執筆の6月上旬時点でもサーバーはまだ生存しており、改ざんサイトにアクセスすることでこのサーバーへのアクセスが発生します。もしコードが修正されれば再び攻撃可能な状態です。
おわりに
改ざんされてしまった Web サイトの管理者においては、自身が攻撃に加担することになるだけでなく、Web サイトの訪問者までも攻撃に加担させてしまいます。不審なスクリプトが設置されていないか確認してください。また、後述の参考情報のリンクなどに従って安全な Web サイトの運用を心がけて下さい。
訪問者として Web サイトへのアクセスには、URL フィルタリング製品や SWG(Secure Web Gateway)製品を導入して、指令サーバーのような悪意のあるサイトやコンテンツへのアクセス対策を検討してください。
Wordpress サイトの管理者は、XML-RPC を無効にする、無効にできない場合は特定 IP からのみ有効にするなど設定を変更してください。またパスワードについても、ログインパスワードを長く複雑なものにする、多要素認証が利用できるプラグインを導入するなどといった対策も検討してください。
◆参考情報
IPA(情報処理推進機構)
安全なウェブサイトの運用管理に向けての20ヶ条 〜セキュリティ対策のチェックポイント〜
NISC(内閣サイバーセキュリティセンター)
インターネットの安全・安心ハンドブック