記事一覧に戻る
security-news2026年10月12日10分で読めます

43万回の空振り ― 攻撃者は侵入しない。開いている場所を拾って回る

JPCERT/CCが公表した不審なIPをきっかけに、複数のサイトのアクセスログを手口から追い直した。7か月で1,015個のIPから43万5,064回。98%がMicrosoft Azureからで、足場はリージョンを数か月ごとに移っていた。探していたのは脆弱性ではなく、他人が残したWebシェルだった。ASNと手口を掛け合わせて見えた探索活動の違いと、守る側が見るものを整理する。

Webシェルスキャンアクセスログログ分析Microsoft AzureASNJPCERT/CCWordPress不正アクセス

43万回の空振り ― 攻撃者は侵入しない。開いている場所を拾って回る

JPCERT/CCが公表した不審な送信元IPを、複数のサイトのアクセスログで探してみた。

15個のうち1個が、見つかった。

そこで終わるはずだった。ところが、そのIPがやっていた手口を、送信元を問わずに探し直したら、話が変わった。

そのIPは、約1,000個のうちの1個だった。

なお、本稿はJPCERT/CCが公表したIPアドレスをきっかけに行った独自のログ調査である。同注意喚起に掲載された侵害事案と、今回の探索活動が同一であることを示すものではない。

7か月、約1,000個、43万回

調べたのは、複数のサイトのアクセスログだ。最も長いものは、3月15日から10月12日まで、約7か月分が残っていた。以下の数字は、その7か月分のログのものである。

同じ手口は、ログの初日にはすでに来ていた。

  • 送信元のIPは1,015個
  • 要求は43万5,064回
  • そのうち42万6,851回、件数の98%がMicrosoft Azureから(IPの数では981個、97%)
  • 3月から10月まで、止まった月はない

同じ手口だと判断した根拠は、手順だ。確認した範囲では、どのIPも最初の2つの要求が同じで、順番まで同じだった。User-Agentは空で、その後に要求するのは.phpの名前ばかりである。この記事では、その最初の要求を送ってきたIPを数えている。

共通の道具か、共通の辞書による自動化と見ている。

ほかのサイトのログにも、同じ手口が来ていた。ログが1か月半分のサイトでは約60個。3か月分のサイトでは約130個。7か月分のログでは約1,000個。

どれだけ見えるかは、ログの長さと、見ているサイトの数で変わる。

公表されたIPを1個遮断しても、残りの約1,000個はそのまま来る。

探しているのは、脆弱性ではない

43万回の中身を見て、考えが変わった。

この探索は、ほとんど脆弱性を突いてこない。

要求しているのは、ファイルの名前だ。Webシェル、つまり侵入した誰かが後から置いていく裏口の名前。それと、改ざんに使われやすいWordPress本体のファイルの名前。

自分で扉を開けに来るのではない。誰かが開けたままにした扉を、探して回っている。

要求された名前は、7か月で9,370種類あった。このログで初めて見る名前は、4月以降も毎月450〜2,300種類ずつ増えている。辞書が更新され続けているのか、大きな辞書の一部ずつが届いているだけなのかは、このログからは分からない。

時間帯の偏りは小さい。24時間、ほぼ同じ調子で来る。

探すだけでなく、使おうともする

43万回のほぼすべてはGET、つまり「あるか、ないか」の確認だった。

例外は55回。約1,000個のうち6個のIPだけが、POSTを送っていた。この6個も、同じ手順の探索を行っている。

うち46回の宛先は、既知のWebシェルが命令を受け取る口として知られる場所だった。アクセスログには送られた中身が残らないので、断定はできない。ただ、Webシェルが残っていれば、その機能を使おうとした可能性がある。残りの9回は、いまは503しか返さない名前に向けたもので、目的は分からない。

55回への応答は、404、301、503のいずれかだった。

探す段と、使おうとする段。どちらも相手は、他人が開けた穴だ。

Azureからの要求のうち、サイト側がHTTP 200を返したものは3,000回に満たなかった。その応答先をすべて確認したところ、WordPressに最初から入っているファイルと、公開しているページやフィードだった。

少なくとも今回確認したアクセスログと応答先からは、Webシェルが発見された形跡は確認できなかった。POSTによる利用が成功したことを示す記録も見つかっていない。

足場は、リージョンを波のように移る

Microsoftは、AzureのIP範囲をリージョン別に公開している。送信元をこれと照合して並べた。照合に使ったのは2026年10月5日版の一覧だ。IP範囲は更新されるので、過去の時点での所属を完全に証明するものではない。

  • 3〜4月:カナダと、欧州の各リージョン
  • 5〜7月:カナダ、米国中部、ブラジル
  • 8月:カナダと、再び欧州
  • 9月以降:インド、韓国、オーストラリア、香港、日本

カナダは3月から9月まで使われ続け、10月には消えた。欧州は一度消えて、8月に戻ってきた。

もう一つ気づいたのは、数が揃っていることだ。以下は、その月に観測したIPの数で、重複は除いている。4月の欧州は、7つのリージョンがそれぞれ21〜27個。5月は3つのリージョンがそれぞれ32〜35個。10月のアジアは11〜13個ずつ。

偶然集まったIPとは考えにくい。各リージョンに一定数の実行環境を配置する仕組みがあるように見える。

誰の契約で動いているのかは、外からは分からない。自前で借りたのか、侵害された他人の契約やクラウド資源を使っているのか、ログの見え方は同じだからだ。確かめられるのはMicrosoftだけである。IPと時刻の一覧を添えて、Microsoftに通報した。

日本のリージョンからも来ている。

別の探索は、別のクラウドに偏っていた

Azureばかりなのは、この手口だけなのか。全アクセスを手口で分け、送信元のASN、つまりどの事業者のネットワークかと掛け合わせた。割合はいずれも件数である。

  • 裏口探し(今回の手口):98〜99%がMicrosoft Azure
  • 設定ファイルと鍵探し(.env、.git、バックアップ):4〜6割がGoogle Cloud
  • 何でも試す総当たり:欧州の小さなホスティング事業者。十数個のIPが、1個あたり数百回から千回以上
  • 居るかどうかの確認だけ:数千個のIPが、数回ずつ

国別に並べると、これが全部混ざる。カナダ、インド、韓国、オランダ、フランスと並ぶだけで、何が来ているのかは分からない。

ASNと手口を掛け合わせると、異なる探索活動が見えてくる。

同じ攻撃者が動かしているのか、別々の集団なのかは分からない。

なぜ、43万回空振りしても続くのか

7か月、成果が見えないのに止まらない。

続けるコストが、ほとんどかからないからだと考えている。

  • 標的:公開されているDNSの名前。HTTPのHostヘッダーには、通常のサイト名だけでなく、クラウドの逆引きDNSに使われるホスト名も含まれていた。いまは何を要求しても503しか返さない名前にも、7か月で約4万回来ている。結果を見て標的を外す仕組みは無いらしい。
  • 辞書:他人が置いた裏口の名前を集めたもの。
  • 足場:必要なだけ立てて、入れ替えられるクラウド。

自前で用意するものが、ほとんど無い。

前回の記事で、攻撃者が探しているのは鍵・鍵穴・地図が揃った「すぐ使える場所」だと書いた。この探索が探しているのは、その極端な形だ。

自分で鍵を盗む必要も、鍵穴を探す必要もない。誰かが残した裏口を見つければいい。

守る側が見るもの

IP遮断や地域制限にも意味はある。JPCERT/CCも対策の一つに挙げている。

しかし、約1,000個のIPを使い、数か月ごとにリージョンを入れ替える探索に対して、それだけで十分とは言えない。日本のリージョンからも来ている。海外を遮断したから安心、という話ではない。

そのうえで、見るものがある。

  1. 何を返したか。 43万回の要求を1件ずつ追う必要はない。まず、成功を返したものを見る。今回はそれで、裏口が見つかった形跡が無いことを確かめられた。
  2. 消し忘れた名前。 使っていないサイトの名前がDNSに残っていれば、標的の一覧に残り続ける。
  3. 置かれた後に気づけるか。 この探索が成果を得るのは、先に誰かが侵入して裏口を置いたサイトだけだ。入口を塞ぐのが先になる。そのうえで、置かれたファイルに気づく仕組みが要る。本体のファイルに追記する型の改ざんは、アクセスログでは見分けられない。ファイルそのものの照合が要る。

攻撃は、開けに来るものだけではない。

開いたままの場所を、誰かが毎日確かめに来ている。


出典

関連記事

キーワード

  • Webシェル
  • スキャン
  • アクセスログ
  • ログ分析
  • Microsoft Azure
  • ASN
  • JPCERT/CC
  • WordPress
  • 不正アクセス
A

Aikido Community Japan

公開日: 2026/10/12

最終更新: 2026/10/12

シェア:

ニュースを購読

セキュリティの最新情報をお届けします。

Aikido Community Japan からのお知らせの受信に同意します。詳しくはプライバシーポリシーをご確認ください。