不正アクセスの発信地の国別統計をとろう!

作成日:2002.10.26
更新日:2006.06.09

What's New
(2006.06.09) リストを更新 & 使用規定の項を追加
(2005.03.01) リストを更新 & リスト作成スクリプト
(2003.05.28) 地域 NICから情報をもらいリストを更新
(2003.05.17) 日記へのリンクを追加。
(2003.02.25) IPアドレス → ccTLD を引けるCGI を設置(ここ)。

はじめに

サーバーを立てていると、 外部からポートスキャンなど、 不正なアクセスを掛けてくる輩がいる。
アクセスログを取っていると、 この不正アクセスがどの IP アドレスから行われたのか履歴が残るので、 この IP アドレスを解析して 攻撃がどこから行われたのか統計を取ってみることにする。

攻撃がどの国から行われたのか調べる簡単な方法は、 IP アドレスの逆引きで得られたドメインから国を推測する方法である。 たとえば、 ***.jp ドメインであれば日本からのアクセス、 ***.cn ドメインであれば中国からのアクセスであることが分かる。 しかし、 この方法では逆引きができないサイトは、 どの国からアクセスされたのかを類推することはできない。 また 得られたドメイン名から 国が推測できない場合も多く不確かだ。
例えば アメリカのサーバのほとんどは .us ドメインではないし、 国内にあるサーバーであっても .net や .com を名乗っているものがいる。

そこで 各国に割り振られた IP アドレスから直接 検索を行う。
IP アドレスはネットワークの経路制御に用いられているので、 IP アドレスはネットワークの地勢学的な座標を おおよそ正しくあらわしていると考えられる。 つまり、 ある国に割り振られた IP アドレスを別の国のホストに勝手につけても、 パケットが正しく配送されないのでネットワーク的には不通の状態となるからだ。
(とはいえ、送ったきりで構わないのであれば送信先 IP アドレスを偽称する方法は存在する。)

現在、 IP アドレスは IANA が管理し、 地域を担当する Network Informantion Center (NIC) に IP アドレスを割り当て、 地域 NIC が各国の NIC に IP アドレスを割り当てている。 現在、このような地域 NIC が アメリカ、ヨーロッパ、アジア、ラテンアメリカの 4 つ存在するので、 この 4 つの組織が公開している IP アドレスの割り当てリストを手に入れ、 結合すればよい。

と、書くのは簡単だが、 各組織の Web ページのどこにどこに一覧があるのか探すのに苦労した。
下記参照の "allocation and assignment reports" にリストが存在する。 現在は、delegated-(地域NIC名)-(日付) という名前のファイルになっている。

リスト

各地域 NIC よりレポートファイルを、 以下の UNIX コマンドとスクリプトを使ってまとめる (ipv4.plmake_ipaddr_to_cctld.pl)。

> cat (4つの地域NICのリポート) | ipv4.pl | sort -n > sorted_all.list
> make_ipaddr_to_cctld.pl -i2c < sorted_all.list        > i2c.txt
> make_ipaddr_to_cctld.pl -c2i < sorted_all.list | sort > c2i.txt

合成後のデータは リスト [テキスト(678K)]ようになる (圧縮ファイル [ZIPファイル(138K)])。
また、 IP から国別コード(ccTLD) が引けるようにした リスト[テキスト(673K)] も用意した(圧縮ファイル [ZIPファイル(143K)])。

IP アドレスのリストから国別コードを出力する Perl スクリプトも用意した。
アクセスログから IP アドレスが行毎に書かれたリストファイルを用意し、 Perl スクリプトの標準入力に入れれば、 国別コードを出力してくれる。

61.193.xx.xx
207.33.xx.xx
24.202.xx.xx
こんな感じのスクリプトと 組み合わせて、 国別の統計をまとめる。
# アクセス別の集計
> cat access_log | what_country.pl | count_cctld.pl

# ホスト別の集計
> cat access_log | sort -u | what_country.pl | count_cctld.pl

統計

ここ二月分の http サーバと smpt サーバへ対する不正アクセスを集計してみた。 サーバーのアクセスホスト(IP)数別、アクセス数別のランキングである。

アクセスホスト(IP)数
順位国別割合
1KR (韓国)31.6%
2US (アメリカ)23.6%
3TW (台湾)6.9%
4HK (香港)4.6%
5IN (インド)4.0%
6CN (中国)4.0%
7DE (ドイツ)2.9%
8AU (オーストラリア)2.9%
9JP (日本)2.3%
10UY (ウルグアイ)2.3%
     
アクセス数
順位国別割合
1KR (韓国)53.0%
2IN (インド)11.0%
3HK (香港)5.7%
4TW (台湾)5.0%
5AU (オーストラリア)4.5%
6US (アメリカ)4.3%
7PH (フィリピン)3.3%
8JP (日本)3.0%
9CN (中国)2.8%
10PK (パキスタン)2.4%

アクセスホスト、アクセス数ともに韓国が圧倒的に多い。
意外なのはアクセス数 第2のインド。 ホスト数では 5位の 4.0% に留まるにのに対して、 アクセス数の 11% と大活躍である。
集計したホストは、 jp ドメインを持ち、日本に割りふられた IP 内にあるのにも拘わらず、 日本からの不正アクセスはホスト数順で第9位、 アクセス数順で 8 位と奮わない。 是非とも次回はメダルを狙って欲しいものである。

追記 (2003.02.01)

昨年の11月に 新しい地域 NICができて地域 NIC は全部で 4 つになったようだ。
新規の地域 NIC はラテンアメリカとカリブ海諸島の国々を担当する LAPNIC

古い IP アドレスリストには、間違いがあったようだ。 今まで 200.0.0.0/8 のクラスA をウルグアイ(UY) としていた。

200.0.0.0       200.255.255.255 UY

これは間違いで、 200.0.0.0/8 はもっと細かく割り振られていたようだ。
この領域に LAPNIC が管理する IP アドレスが多数存在している。 そのため過去の統計でウルグアイと判定していた IP アドレスは、 US だったり南アメリカ諸国の IP だったようだ。

参考となる URL

以降の不正アクセス記録の統計

管理人の日記に、 不正アクセス記録の解析データを定期的に載せている。
以下、そのリンクを載せておく。
2002.11.22 ポートスキャンアクセス
2002.12.27 ポートスキャンアクセス + Web + SMTP
2003.01.27 Web (MS SQL Slammer ワーム)
2003.01.31 IP-CCコードのリストにミスが見つかる
2003.02.25 Web (MS SQL Slammer ワーム)
2003.02.28 ポートスキャンアクセス
2003.03.29 Web (Code Red.F)
2003.04.30 ポートスキャンアクセス
2003.05.31 ポートスキャンアクセス
2003.06.30 ポートスキャンアクセス
2003.07.31 ポートスキャンアクセス
2003.08.31 Nachi ワーム
2003.09.30 ポートスキャンアクセス

使用規定

このページで公開されている Perl スクリプトプログラムは、 自由に配布・改変・別プログラムへ取り込むことができます。 その際 著者(中村 実)への連絡も不要です。

ただしこのプログラムを使用した結果発生するいかなる損害についても、 一切の責任は負いません。

このページまたはプログラムを紹介されたい方は、 コメント欄かトラックバックをくださればありがたいです (気が向いたらで構いません)。

コメント

コメントを書き込む
[1] [zcam] 2005-11-16 11:34:37
いつも使わせて頂いております。
 たいへん助かります。お礼もうしあげます。
[2] [Naka] 2005-12-10 10:48:24
初歩的な質問で申し訳ないですが、httpの不正アクセスは、何をもって不正とされているのでしょうか。
また、smtpの不正アクセスは検出用にはどういうログを入力されていますか。
[3] [nminoru] 2005-12-10 14:23:19
Naka さん、はじめまして。
http の不正アクセスはリクエストの URL を見て、IIS の乗っ取りを狙った Code Red 系のワーム("GET /default.ida?XXXXXXXX ... %u0078%u0000%u00=a HTTP/1.0") などのアクセスを不正と判断しています。
アクセスログは http://www.nminoru.jp/~nminoru/unix/apache.html#setenvif1 のような方法であらかじめ別ログファイルに切り分けております。
SMTP は Postfix ですので、そのログを自前スクリプトで切り貼りして分析しております。
[4] [Naka] 2005-12-11 08:06:29
nminoruさん
即座のご回答ありがとうございます。
よく分かりました。 私も以前、ワーム攻撃のログを別ログにして1日あたりの件数の統計を取っていました。
たしかに、韓国が多かったのを覚えていますが、最近は私のところでは鳴りを潜めています。
最近悩まされるのはhttpdよりtelnet、ftpなどのアタックとスパムメールです。telnet、ftpなどは破られはしないし、スパムも色々やってかなり防いだのですが、こういうものも韓国が多いように感じていますし、気分のよいものではないですね。
まったく、韓国とは絶縁するfirewallでも作りたくなります。
[5] [Naka] 2006-01-26 01:01:54
ついにFirewallを設定して韓国に割り当てられているip-addressを遮断しました。
Rejectしたログを見ると、まったくよくやって来ますねと言いたい感じです。
[6] [nao-pon] 2006-07-28 01:37:02
リストを使用させていただきました。

当方では、MySQLに突っ込んで、PHPから問い合わせをするようにしてみました。

これも、このリストがあればこそです。
ありがとうございます!
[7] [horiai] 2006-12-05 10:39:51
スクリプトを利用させていただいて重宝しております。
既にご存知のこととは思いますが、AfriNICも2005年から稼動しているようで、2005年2月以降の生データを次のURLからダウンロードできました。
まあ〜、アフリカ諸国からの目立つような不正アクセスは、無いかもしれませんが、、、、
ftp://ftp.afrinic.net/pub/stats/afrinic
[8] [雲雀] 2013-01-10 13:46:10
はじめまして。とても勉強になります。
有難うございました!

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp