午前7時のしなもんぶろぐ

駆け出しのセキュリティエンジニア、しなもんのぶろぐ。

大量の IP アドレスは「IPInfoOffline」で調べよう

以前ある筋から、とあるキャンペーンに関係しているとされる IP アドレスのリストの提供を受けたことがあります。

 

それ自体はありがたいことではあるのですが、その数なんと数万個

 

しかも関連情報が一切付属しておらず、それぞれの IP アドレスがどこの何なのか、本当に怪しいのかどうかもさっぱりわからない状態です。

 

幸い関連しているとされるキャンペーン自体が大したものではなかったのでその場は放置したのですが、大量の IP アドレスについて効率よく調べる手段がほしいな~と思うようになりました。

 

そこで調べていたらちょうど良さそうなものを見つけたので紹介します。

 

 

Nirsoft と IpInfoOffline

www.nirsoft.net

今回紹介する「IPInfoOffline」は Nirsoft が開発したツールです。

Nirsoft はフォレンジック系を中心に多数のセキュリティ調査ツールを開発していることで知られており、HashMyFiles、BrowsingHistoryView、FullEventLogView あたりが特に有名ではないかと思います。

他の Nirsoft 製ツールと同じく、IPInfoOffline も Windows 上で動作する小型ツールです。

 

なお、一部の Nirsoft 製ツールはウイルス対策ソフトにマルウェアとして扱われることがあります。

挙動がマルウェアっぽいこと (特にパスワードリカバリ系) か実際の攻撃に悪用されることがあることがその理由と思われます。

組織で管理している端末などでの利用には注意が必要です。

 

IPInfoOffline の特徴

IPInfoOffline には次のような利点があります。

 

大量の IP アドレスを高速に処理する

数万個の IP アドレスも問題なく扱うことができ、短時間で処理を完了します。

(ただし、ハードウェア性能などの環境要因にもよります)

手動ではもちろん、スクリプトでもなかなかここまでのスピードは発揮できないでしょう。

万単位のリストを瞬く間に処理する様子は圧巻です。

 

ネットワーク接続を必要としない

IPInfoOffline はその名前のとおり、内部のデータベース (とローカルに設置した CSV ファイル) のみを参照し、ネットワーク接続を行いません。

そのため隔離された環境でも問題なく使用することができます。

また「ネットワークがボトルネックになって処理能力が落ちる」「回線を圧迫する」「大量のリクエストを送りつけて迷惑をかける」といった問題が発生しません。

 

使い方がシンプル

日本語化パッチが用意されているようですが、正直必要性を感じないほど機能がシンプルです。

基本的に「Choose IP Addresses」で IP アドレスをコピペして「OK」を押すだけです。

またインストールが不要で、プログラム単体で動作します。

 

複数形式で出力できる

TXT、CSVXML、HTML といった複数の形式で出力することができます。

(出力するのは選択された部分だけなので、全体を出力する場合は Ctrl + A で全選択する必要があります)

 

一方で、次のような欠点があります。

情報が古い

内部に格納したデータベースを用いる以上避けられない欠点です。

使っているデータは過去のある時点で格納されたもので、現在のものではありません。そのためその後に起こった IP アドレスの移転などを反映できません。

これは IPInfoOffline を利用するうえで必ず認識し、その影響を考慮する必要がある点だと思います。

 

今回検証に使用した v1.60 には 2021年 3月頃までのデータが入っていました。

これ以降の動きは反映されていないものと思われます。

 

得られる情報に限りがある

IPInfoOffline がデフォルトで調べられるのは各 IP アドレスの CIDR 範囲、地域レジストリ (ARIN、APNIC など)、割り当て日、割り当て国とカントリーコードといった基礎情報だけです。

CSV ファイルを追加して機能拡張することもできますが、それでも AS 情報と都市情報が得られるにすぎません。

レピュテーション、どの攻撃者と関係があるか、そのアドレスで動作している機器は何かなどの情報が必要であれば別の手段を考える必要があります。

 

使用例

適当な IP アドレスリストで検証します。

今回検証に用いたのは、SecurityScoreCard 社が公開している、KillNet の DDoS キャンペーンに関するリストです。

重複を含めて全部で 18,000 個以上あります。

github.com

IPInfoOffline を起動すると「Select IP Addresses」が出てくるので、これに IP アドレスリストをコピペします。

重複を除きたいので「Don't add duplicate IP addresses」にチェックを入れます。

ポート番号はそのままで問題ありません。

 

 

「OK」を押すと猛烈な勢いで処理が始まります。

待つこと数秒 (環境によります)、一覧表が完成します。

 

 

各列の名前部分をクリックすることで並べ替えができます。

下の画像は IP アドレスの昇順に並べたところです。

 

 

CSV など様々な形式で出力し、他のソフトで分析を行うこともできます。

試しに MS Excel を使って、国ごとのグラフを適当に作ってみました。

(集計は超適当なので間違ってる可能性大です。また「こんなこともできるよ」と示すのが目的で、結果に他意はありません)

 

 

IPInfoOffline は、MAXMIND 社が提供している CSV データを追加することで機能拡張することもできます。

(入手には MAXMIND への登録が必要です)

詳細はヘルプに記載されていますのでそちらをご覧ください。

 

今回は AS (Autonomous System) のデータを追加して検証します。

データを追加すると処理速度が落ちますが、それでも気になるほどではありません。お茶でも飲んでいるうちに終わります。

 

 

デフォルトでは空欄のままだった「ASN」「Company Name」のデータを取得できています。

 

結論

Nirsoft is 神。

 

あんなに絶望的に見えた膨大な IP アドレスの基礎情報取得が瞬く間に終わってしまうなんて!

性質上多くの方にとっては毎日使うようなものではなさそうですが、特定の状況では非常に役に立ちます。

 

内部に格納する都合上どうしてもデータが古くなってしまうという弱点はありますので、これを意識して上手に使うことをおすすめします。