VirusTotalに、公開IPv4アドレスを毎日スキャンし、IPが公開するポート、サービス、バナー、フィンガープリントを検索できる機能が加わりました。 IPレポートの新しいPortsタブで観測を確認でき、新しい検索条件とAPIエンドポイントで、関連ホストの探索やポート解析の取得ができます。
実務上の利点は、評判だけでは調査の理由が見つかりにくいインフラを探せることです。VirusTotalの2026年10月8日の公表の事例では、希少なSSH鍵から、検知0件で同じサービス構成を持つ別のIPが見つかりました。この関連性は調査の手掛かりであり、2台目のホストの悪性を確定するものではありません。
Internet Scanningで何が新しくなったのか
これまでのIPレポートでは、評判、ホスティング情報、パッシブDNS、通信したファイルとの関係を確認できました。新たに加わったのは、公開サービスを毎日直接観測した情報です。ポートが応答しなくなっても、記録が残ります。
| 従来から利用できた情報・機能 | 10月8日の公表で加わったもの |
|---|---|
| IPの評判、ホスティング、関連性の情報 | 新しいPortsタブ。毎日更新されるopen、closed、recently closedの状態と、観測されたサービス情報。 |
| DNSやファイルとの関連から得られる過去の文脈 | ポートの履歴の日付。初回観測、継続してopenの期間、最後のopen観測。closedになった記録も保持。 |
| ASN、国、証明書subject、JARMなどのIP単位の検索条件 | バナー、製品、バージョン、指紋を指定するサービス単位の検索条件。[port]構文で同じサービスに条件を限定。 |
| APIによるIPレポートの取得 | port_infoのリストと、ポート解析専用のエンドポイント。現在の状態、解析の履歴、特定の解析を取得。 |
最初に使う場所: IPレポートを開き、Portsを選びます。特徴的なサービスや指紋と観測日を確認し、entity:ipの検索で似たホストを探します。利用権とクォータはアカウントで確認してください。
URLのスクリーンショットとフルブラウザのレンダリングは、以前から利用できました。今回加わったのは、それらのURL解析と組み合わせられるIPのサービス情報です。後述のNOXからBOMBAYへの名称変更の事例では、この違いが重要になります。
新しいPortsタブで確認できること
新しい記録は、スキャナから何に到達できたか、何のソフトウェアと推定されたか、最後にいつ応答したかを示します。以下の事例はVirusTotalが報告した観測です。当サイトは検索の再実行やインフラのスキャンをしておらず、件数、検知数、サービスの状態は出典時点の値です。
| Portsタブの証拠 | 調査で問えること | 残しておくべき限界 |
|---|---|---|
| open、closed、recently closed | 記録された観測時点で、サービスに到達できたか。 | closedだけではサービスの撤去を証明できません。通信の制限や観測地点の影響もあります。 |
| 初回観測、継続して開いている期間、最後のopen観測 | 変化した時期と、別のホストが現れた時期は整合するか。 | スキャンの観測日は、正確な設置時刻や停止時刻ではありません。 |
| 製品、バージョン、プロトコル、CPE | 公開されたサービスは、想定する構成と一致するか。 | 識別は推定です。バナーやCPEだけで、脆弱性の悪用が可能だとは確定できません。 |
| バナーの原文、プロトコル固有の情報 | 特徴的な文字列や、予期しない命令の文字列があるか。 | バナーはサーバ側で設定できます。取得した内容はデータとして扱います。 |
| SSH、RDPのフィンガープリント | 同じ識別情報を提示するホストはほかにあるか。 | テンプレート、機器、共通イメージで再利用される場合があります。 |
| OS、機器の分類 | サービス間のホスト像は整合するか。 | プロトコルによって分類が異なったり、不完全だったりします。 |
当サイトの分析: 応答しなくなった手掛かりについても、ポートの履歴は特に役立ちます。評判のスコアだけでは説明できない、日付付きの観測が残るからです。ただし、毎日の公開スキャンにも対象範囲の限界があります。すべてのポートが調べられた、記載のないサービスは存在しない、プライベートネットワークやIPv6も同じように分かる、とは考えないでください。
検索条件を、そのサービスのポートに結び付ける
まず、ポートの記録があることと、現在openであることを分けます。entity:ip port:3389は、そのポートの情報があるIPを探します。entity:ip open_port:3389は、現在openのものを探します。前者を後者として読んではいけません。
さらに重要なのは、ホスト全体の条件と、同じポート上の条件の違いです。ポートを指定しない製品とバージョンの条件は、同じホスト上の別々のサービスで満たされることがあります。GTIの検索ドキュメントは、角括弧を使ってこの曖昧さを避ける方法を説明しています。
entity:ip port_service_product[80]:nginx port_service_version[80]:1.24.0
entity:ip os_type[445]:"10.0.20348"
1行目はnginxとそのバージョンをポート80に限定します。2行目は、ポート445のSMBから得たWindowsのビルド番号を指定します。プロトコル、バナー、製品、バージョン、CPE、OS、機器種別、指紋をポートに限定でき、ASN、国、証明書のsubjectなどIP単位の条件とも組み合わせられます。
履歴検索の落とし穴: ドキュメントによると、サービスの検索項目に索引付けされるのは、各ポートの最新のスキャンです。保存したクエリが、過去のすべての解析を検索するわけではありません。判断に使った解析と日付を保存し、過去が問いの対象なら、過去の解析を取得します。
VirusTotal自身の例も、絞り込みの必要性を示します。出典では、openのポート50050が150万件超、8443が450万件に一致しました。これらは広い候補集合であり、Cobalt Strikeや悪性パネルの件数ではありません。調べた多くのポートに応答するホストが、ポート番号だけの検索を埋め尽くすことがあります。
事例1:SSH鍵の関連性と、APTへの帰属は別の判断
VirusTotalは、APT28のコレクションと、コミュニティのHavocコレクションに含まれる91.219.237[.]110から調査を始めました。出典のサービス情報には、22のSSHと80のnginxがありました。SSH鍵の指紋を検索すると、別のホストが1つ見つかったとしています。
entity:ip fingerprint:"SHA256:SbF6+nFx6ngfUw2L+jsqN6uu5tdsFc5jUW849WA/Sxw"
| 出典に記載されたホスト | 出典の観測 | 手掛かりとしての意味 |
|---|---|---|
91.219.237[.]110 |
ハンガリーのServerAstra。検知3件。コレクションとの関連。 | 同社の調査の起点であり、攻撃グループの証拠としては不十分です。 |
185.146.232[.]3 |
アイスランドのFlokiNET。検知0件。コレクションや通信したファイルの記載なし。 | 同じSSH鍵とサービス構成に加え、珍しい証明書subjectのb4ck.myがありました。 |
96.9.125[.]59 |
ルーマニアのホスティング。証明書subjectから発見。 | SSHの最後のopen観測は2025年11月18日、HTTPは同年12月5日でした。 |
出典では、185.146.232[.]3のSSHの初回観測は2025年11月22日でした。この時間関係はインフラの移行と整合しますが、あるノードが別のノードに置き換わったと証明するものではありません。出典が示す組み合わせた検索は、次のとおりです。
entity:ip ssl_subject:"b4ck.my" port_service_version[22]:"9.6p1 Ubuntu 3ubuntu13.19"
結論を変える注意点が2つあります。起点のIPに関連するマルウェアの提出時期は2009〜2015年でした。IPは再割り当てされるため、古いサンプルから現在のサービス運用者をAPT28に帰属させることはできません。また、出典では、1,400件超のクラウドIPで共通のSSH鍵が使われ、1,200件超の住宅向けIPでも同様の鍵の再利用が見つかっています。この事例のJARMも170万件に一致したとしています。
当サイトの分析: 希少性と裏付けは、関連性を調べる理由になります。ただし、証明書のcommon nameは設定できる文字列であり、共通の鍵はコピーされたイメージに由来することがあります。証拠の種類を分け、別の説明も記録します。攻撃者への帰属、運用者の特定、悪性の判断を、別々の問いとして維持してください。
事例2:パネルの名前が変わっても、ホストの構成は残る
2つ目の調査は、IPアドレスを直接使い、通常とは異なるポートでパスワード入力欄を出しているURLの検索から始まりました。
entity:url tag:ns-port tag:password-input tag:ip
候補はhttps://5.175.221[.]206:8443/でした。2026年9月24日のスキャン時点の検知は1/96でしたが、取得されたページはNOX Stealerの運用者向けログイン画面を表示していました。これはVirusTotalが報告した証拠であり、当サイトはそのパネルを閲覧していません。
| ポート | 出典の観測 | 分析での意味 |
|---|---|---|
| 8443 | HTTPS、nginx 1.24.0、PHP/8.3.33。スティーラーのログイン画面。 | ページの内容と、ホスト上のサービスを結び付けます。 |
| 445 | Windows Server 2022、ビルド10.0.20348と整合するSMBの分類。 | 別のプロトコルからホストの特徴を追加します。 |
| 3389 | Microsoft Terminal Services。Windows Server 2016/2019の指紋。 | 公開RDPの証拠であると同時に、分類が完全には一致しない例です。 |
| 80 | recently closed。最後のopen観測は2026年9月24日。HTTPSへ転送。 | 以前のWebサービスの観測を残します。 |
VirusTotalはWebの構成とSMB、RDPを組み合わせ、出典時点の候補を数百万から10件のIPへ絞りました。
entity:ip port_service_product[8443]:nginx port_service_cpe[8443]:php os_type[445]:10.0.20348 open_port:445 open_port:3389
10件は条件に一致するホストであり、悪性が確認された10台ではありません。確認可能な候補数になったことが価値です。
同社の調査中、パネルはNOXからBOMBAYへ名称を変更しました。出典では、生のHTMLが11,408バイトから193バイトに縮小した一方、ブラウザ実行では新しいタイトルが確認できたとしています。公開されたnginx/PHP、SMB、RDPの構成は変わりませんでした。古い名称の文字列検索は壊れやすく、ホストの観測が継続性の手掛かりとなりました。
当サイトの分析: レンダリングされたページの証拠と、サービスの証拠を組み合わせます。CDNはドメインの背後にあるオリジンサーバを隠せても、IPを直接指定したURLで別途公開されているオリジンまでは保護できません。ただし、似た構成にも個別の確認が必要です。この組み合わせをマルウェアの署名として扱ったり、Windowsの分類がすべて正確だと考えたりしないでください。
事例3:FTPの歓迎メッセージが、配信の段階になる
SOCRadarのFTPバナー調査は、E4delとPINHOLEというRATを配信する2つのクラスターを報告しました。ショートカットから起動する命令の連鎖が、FTPサーバの歓迎メッセージをコマンドインタープリタに渡す仕組みです。遠隔サーバの応答が、実行の一段階を供給します。
VirusTotalは保存されたバナーを使って、この挙動を探しました。
entity:ip port_banner[21]:"conhost"
出典では5件に一致しました。以下は出典時点の状態と、バナーに含まれた次の接続先です。
| 最初の接続先IP | VirusTotalが報告したポート21の観測 | バナーにある次の接続先IP |
|---|---|---|
157.254.194[.]31 |
closed。最後のopen観測は2026年8月10日。 | 167.148.41[.]164 |
54.37.237[.]164 |
open。2026年10月1日に観測。 | 54.37.237[.]166 |
51.89.199[.]125 |
closed。最後のopen観測は2026年8月31日。 | 51.89.199[.]118 |
185.14.92[.]162 |
closed。2026年7月3日にopenの観測。 | 185.14.92[.]223 |
45.87.41[.]133 |
closed。最後のopen観測は2026年7月8日。 | 64.111.92[.]89 |
最後のホストについて、出典は2026年6月30日にバナーの活動があったとも記載しています。先行する調査が扱った7月初旬より前の観測です。最初のE4del配信経路のホストについては、2026年9月28日から8000のnginxと8080のPython SimpleHTTPが公開されていたとしています。いずれも履歴を調べるための情報であり、現在も到達できるという主張ではありません。
当サイトの分析: ポート番号より、応答の内容と実行された文脈が強い手掛かりです。次の接続先が同じネットワークにある場合は、慎重に関連ホストを調べられます。ただし、2台が近いアドレスにあるだけで/24全体を遮断しないでください。取得したバナーを実行して、何をするか確かめてはいけません。
各チームが確認すること
| チーム | 見直す対象 | 次の対応 | 残す証拠 |
|---|---|---|---|
| SIEM・脅威インテリジェンス | 日付や確度を失ったまま、検知に使われる手掛かり。 | 正確なクエリ、結果の時刻、希少な特徴を保存し、選んだ候補を自社の記録と照合します。 | 出典URL、観測時刻、解析ID、除外理由、確度の根拠。 |
| EDR | FTPからシェルへの実行、報告されたインフラとの通信。 | ホスト群を絞り、プロセスの親子関係と通信を確認し、プロセスツリーを保存します。 | 命令行、起動元、接続先、時刻、阻止されたかどうか。 |
| IT運用 | 公開された管理サービス、コピーされたSSH鍵、公開オリジン。 | 承認済みの公開資産台帳と照合し、RDP・SMBの公開範囲とイメージの鍵生成方法を確かめます。 | 資産責任者、承認された公開範囲、更新・設定の証拠、構築記録。 |
| 委託先リスク | インテリジェンスの範囲、クォータ、供給元の証拠。 | 機能・APIの利用権と保持期間を確認し、委託先に対象サービスの説明を求めます。公開状態から侵害を推定しません。 | 契約範囲、観測の由来、委託先の回答、情報の鮮度の限界。 |
自社の公開資産を調べる場合は、世界全体のポート検索ではなく、承認されたIPv4範囲で絞ります。
entity:ip ip:"REPLACE_WITH_OWNED_IPV4_CIDR" open_port:3389
プレースホルダーを承認された公開範囲に置き換えます。これは第三者が既に取得した観測の検索であり、ホストを能動的に調べる許可ではありません。説明できない管理サービスは、悪性の評判がなくても、責任者による確認が必要です。
対象を絞った自社のハント:通信と実行の証拠
実行状況、2026年10月13日: 以下はSecOpsNomadが公開スキーマを確認して作成した初期調査用テンプレートです。稼働中のDefenderまたはSplunk環境では実行していません。 上記のVirusTotal検索も当サイトによる再実行ではありません。環境に合った権限とテレメトリを使ってください。
Defender XDR:報告された4つの手掛かりとの通信
Defender for Endpointのネットワーク情報を取り込むAdvanced HuntingのDeviceNetworkEventsを使います。必要なフィールドはTimestamp、DeviceId、DeviceName、RemoteIP、RemotePort、InitiatingProcessFileName、ActionTypeです。端末IDを置き換え、保持期間内の適切な期間を選びます。集計後の結果は最大100件です。既定の7日間は直近の初期調査用であり、出典の過去の観測を再現する期間ではありません。
// Microsoft Defender XDR; research leads, not a confirmed malicious-IP list.
// Replace device scope and select a time window relevant to the source evidence.
let Start = ago(7d);
let End = now();
let TargetDevices = dynamic(["REPLACE_WITH_DEVICE_ID"]);
let ReportedIPs = dynamic(["91.219.237.110", "185.146.232.3", "96.9.125.59", "5.175.221.206"]);
DeviceNetworkEvents
| where Timestamp between (Start .. End)
| where DeviceId in (TargetDevices)
| where RemoteIP in (ReportedIPs)
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp), Events=count(),
Processes=make_set(InitiatingProcessFileName, 10), Actions=make_set(ActionType, 10)
by DeviceId, DeviceName, RemoteIP, RemotePort
| order by LastSeen desc
| take 100
期待する結果は、選んだ端末の通信記録をIPとポートで集計し、プロセス名とアクションを併記したものです。1行が返っても、通信の成功、感染、帰属の証明にはなりません。アクションと、その時点のアドレスの所有関係を確認します。共有ホスティングと再割り当ては誤検知の原因です。管理対象外の端末、欠落したテレメトリ、保持期限を過ぎた履歴は見えません。結果がないことは安全の証明ではありません。
Defender XDR:シェル関連の命令行にあるFTPの参照
プロセス生成情報を取り込むDeviceProcessEventsと、ハンティングの権限が必要です。フィールドはTimestamp、DeviceId、DeviceName、FileName、ProcessCommandLine、InitiatingProcessFileName、InitiatingProcessCommandLineを使います。同じ端末の範囲を置き換えます。FTPの文字列と、パイプまたはconhostの文字列を組み合わせて探すものであり、配信経路全体を再構成するクエリではありません。
// Microsoft Defender XDR; behavioral triage, not a malware verdict.
let Start = ago(7d);
let End = now();
let TargetDevices = dynamic(["REPLACE_WITH_DEVICE_ID"]);
DeviceProcessEvents
| where Timestamp between (Start .. End)
| where DeviceId in (TargetDevices)
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "conhost.exe", "ftp.exe")
| where ProcessCommandLine contains "ftp"
| where ProcessCommandLine contains "|" or ProcessCommandLine contains "conhost"
| project Timestamp, DeviceId, DeviceName, FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine
| order by Timestamp desc
| take 100
期待する結果は、親子関係を人が確認するための、直近の命令行の最大100件です。管理用スクリプトも一致しえます。ファイル名の変更、命令構文の変更、命令行の欠落、別のインタープリタを使う実行は見逃す可能性があります。端末の通信と、起動元のショートカット、添付ファイル、ダウンロードを照合します。見つかった命令を実行してはいけません。
Splunk:マッピング済みのネットワークログで同じ4件を探す
検索する権限があるネットワーク用indexとsourcetypeを使います。両方のプレースホルダーと、1つの送信元IPを置き換えます。必要なフィールドは_time、src_ip、dest_ip、dest_port、actionです。先に自社のフィールドにマッピングしてください。7日間を検索し、集計後の結果を最大100件返します。
index=REPLACE_WITH_NETWORK_INDEX sourcetype=REPLACE_WITH_NETWORK_SOURCETYPE earliest=-7d latest=now
src_ip="REPLACE_WITH_SOURCE_IP"
dest_ip IN ("91.219.237.110", "185.146.232.3", "96.9.125.59", "5.175.221.206")
| stats min(_time) AS first_seen max(_time) AS last_seen count AS events values(action) AS actions BY src_ip dest_ip dest_port
| sort 0 - last_seen
| head 100
期待する結果は、送信元から接続先への通信と記録されたアクションです。NAT、プロキシ、アドレスの再利用、許可・拒否イベントの欠落、フィールドのマッピングが解釈に影響します。Defenderの例と同じ調査の手掛かりを使うものであり、遮断リストではありません。
自動化:観測と、利用できる範囲を一緒に管理する
公表文では、IPオブジェクトのport_infoと、次のAPIリソースが説明されています。
/api/v3以下のAPIパス |
出典が説明する用途 |
|---|---|
/ip_addresses/{ip} |
ポート一覧を含むIPの情報。 |
/port_infos/{ip}:{port} |
ポートの現在の記録状態。 |
/port_infos/{ip}:{port}/analysis |
カーソルでページ分割される、ポートの解析履歴。 |
/port_analyses/{ip}:{port}:{timestamp} |
1つの記録された解析。 |
APIの状態にはPORT_INFO_STATUS_OPEN、PORT_INFO_STATUS_CLOSED、PORT_INFO_STATUS_RECENTLY_CLOSEDがあり、日時はUnixタイムスタンプです。組み込む前に、アカウントの利用権、クォータ、現行のスキーマを確認します。ブログはインターフェースを説明していますが、本記事は稼働中のAPIの互換性テストを提供するものではありません。
定期的なハントでは結果数を制限し、レート制限に対応し、取得時刻とスキャン時刻を分けて保持します。IP、ポート、解析で重複を管理します。出典によると、公表時点では、これらのポート項目はIP Livehuntのvt.net.ipモジュールでは利用できませんでした。同社は定期的なAPI検索を代案として示しています。その制約を前提に設計する前に、現在の状態を確認してください。
早すぎる遮断を避ける判断の順序
- 観測を確認する。 どのポート、サービス、時刻、応答が手掛かりになったか。現在のサービス項目を検索したのか、過去の解析を使ったのか。
- 特徴の希少性を確かめる。 希少な鍵は役立ちます。広く使われる既定値、一般的なnginxのバージョン、ポート番号には、通常さらに証拠が必要です。
- 別の種類の証拠で裏付ける。 証明書の詳細、パッシブDNS、レンダリングされた内容、サービス構成を比較し、共通テンプレートという別の説明も記録します。
- 自社の公開範囲とログを確認する。 自社の外にあるサービスの関連性と、自社端末での実行経路は、別の問いに答えます。
- 確度に合った対応を選ぶ。 調査、責任者への確認、監視、遮断に必要な確度は異なります。出典の日付を保持し、古い項目を見直します。
実務上の価値は、評判が乏しい場合やページの名前が変わった場合にも、比較できる観測を持つことです。その比較が何を示し、何を示していないかを保つ責任も、同時に増えます。
まだ分からないこと
- 当サイトは、記載されたアドレスの現在の所有者、公開状態、悪性、検索件数を独立して確認していません。
- SSH鍵のクラスターが、現在APT28に所有されていると出典から確定することはできません。古い通信サンプルとコミュニティのコレクションでは、この不明点は埋まりません。
- サービスの指紋は、OS、脆弱性、侵害についてのフォレンジックの結論ではありません。到達性は観測地点によって変わります。
- 機能の利用権、クォータ、履歴の保持、スキャン範囲は、使うアカウントで確認する必要があります。
- KQLとSplunkの例はスキーマの確認までで、実環境での検証はありません。見える範囲は、テレメトリと選んだ対象に依存します。
出典と公開メモ
- 機能の一次公表: Joseliyo Sánchez、VirusTotal、Internet Scanning in VirusTotal: hunting infrastructure by what it exposes、2026年10月8日。スキャン機能と3事例の観測の出典です。
- 検索の意味: GTI IP address search modifiers、2026年10月13日確認。角括弧による限定、自社IP範囲の条件、最新スキャンの索引付けの出典です。
- 配信の文脈: SOCRadar Threat Research Unit、FTP Banners: The New Dead Drop Resolver Delivering Novel RATs。VirusTotalが引用するE4delとPINHOLEの配信調査です。
- ブラウザを使うURL解析: VirusTotal、Enriched URL Reports: VirusTotal URL Scanning 2.0、2026年8月11日。
- Defenderのスキーマ: Microsoft、DeviceNetworkEventsとDeviceProcessEvents、2026年10月13日確認。
公開メモ、2026年10月13日: 提供されたVirusTotalの記事と上記の一次情報に基づく、SecOpsNomadの独自の分析です。ヘッダー図は本記事のために作成しました。調査の指標は本文で無害化し、照合用クエリには元のアドレスを保持しています。独自のスキャン、帰属の確定、実環境でのハントの実行を主張するものではありません。
編集上の更新、2026年10月15日: 見出し、要約、冒頭を改訂し、Internet Scanningで何が加わったかを明確にしました。従来のIP情報と新しいサービス情報を比較する表を追加しています。事例の観測とクエリのテンプレートは、元の日付と対象範囲を維持しています。
