読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

mdstore で悪意のあるドメイン名の一覧を取得する

Linux

mdstore を使うと悪意のあるドメイン名のブラックリストを取得することが出来ます。GitHub のトップページには以下のように書かれています。

mdstore is Malicious Domain name Store, maintainance engine of blacklisted domain name. It downloads blacklists of domain name from major sites and save domain names to local redis server. After that, user can look up blacklisted domain name not only via the module and cli tool but also from redis server directly.

今回は CentOS7 上で mdstore を試してみました。

テスト環境

mdstore は Node.js と redis で動作します。今回は vSphere 6.5 上に作成した以下の環境でテストしました。当初は仮想マシンへのメモリ割り当て量を 2GB にしていたのですが、メモリが不足してしまったので 8GB に増やしました。

  • CentOS Linux release 7.3.1611 (Core)
  • npm-3.10.8-1.6.9.1.4.el7.x86_64
  • nodejs-6.9.1-4.el7.x86_64
  • redis-3.2.6-1.el7.remi.x86_64

Node と npm のインストール

epel から Node.js と npm をインストールします。

yum -y install epel-release
yum -y install nodejs npm

redis のインストール

remi から redis をインストールします。インストールが完了したら起動&自動起動の設定をしておきます。

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install --enablerepo=remi redis
systemctl start redis.service
systemctl enable redis.service

redis-cli ping に PONG が返ってくれば redis は起動しています。redis はデフォルトで 6379/TCP を Listen します。

# redis-cli ping
PONG

mdstore のインストール

npm で簡単にインストール出来ます。

npm install -g mdstore

ブラックリストを更新する

mdstore update を実行します。

# mdstore update
update: OK

ドメインを探す

mdstore getドメイン名を指定します。

# mdstore get tags.spider-mails.com
2017-01-09T13:03:15.989Z { source: 'mvps', ts: 1483966995.989 }
2017-01-09T13:05:14.821Z { source: 'mvps', ts: 1483967114.821 }
2017-01-09T13:15:08.786Z { source: 'mvps', ts: 1483967708.786 }
2017-01-09T13:28:16.913Z { source: 'mvps', ts: 1483968496.913 }
2017-01-09T13:34:54.095Z { source: 'mvps', ts: 1483968894.095 }
2017-01-09T13:40:55.488Z { source: 'mvps', ts: 1483969255.488 }
2017-01-09T13:42:01.516Z { source: 'mvps', ts: 1483969321.516 }

/etc/hosts を生成する

mdstore hosts を実行すると悪意のあるサイトを 127.0.0.1 へ向ける /etc/hosts を生成することが出来ます。

mdstore hosts > hosts.txt

mdstore のヘルプ表示

mdsotre -h でヘルプを表示出来ます。

# mdstore -h

Usage: mdstore [options]

    --help, -h
        Displays help information about this script
        'mdstore -h' or 'mdstore --help'

    --host, -s
        redis host
        --host=localhost or -s localhost

    --port, -p
        redis port
        --port=6379 or -p 6379

    --db, -d
        redis db
        --db=0 or -d 0

mdstore の実行時間とメモリ消費量

今のタイミング・今回のテスト環境では 1 分 30 秒程度の実行時間でした。

# time mdstore update
update: OK

real    1m33.291s
user    0m39.294s
sys 0m7.067s

mdstore を実行している node プロセスのメモリ消費量を観測したところ、最終的には 2,007,004KB (約 2GB) 消費していました。

root@centos7:~# while true; do date ; pidof node | xargs pmap -x | tail -n1 | tr -s ' ' | cut -d ' ' -f 4 ; sleep 1; done;
Mon Jan  9 23:04:02 JST 2017
pmap: argument missing
Mon Jan  9 23:04:03 JST 2017
pmap: argument missing
Mon Jan  9 23:04:04 JST 2017
pmap: argument missing
Mon Jan  9 23:04:05 JST 2017
27772
Mon Jan  9 23:04:06 JST 2017
40200
Mon Jan  9 23:04:07 JST 2017
42416
Mon Jan  9 23:04:08 JST 2017
60308
Mon Jan  9 23:04:10 JST 2017
88796
Mon Jan  9 23:04:11 JST 2017
113812
Mon Jan  9 23:04:12 JST 2017
113836
Mon Jan  9 23:04:13 JST 2017
113836
Mon Jan  9 23:04:14 JST 2017
113864
Mon Jan  9 23:04:15 JST 2017
115020
Mon Jan  9 23:04:16 JST 2017
115028
Mon Jan  9 23:04:17 JST 2017
115028
Mon Jan  9 23:04:18 JST 2017
115044
Mon Jan  9 23:04:19 JST 2017
115044
Mon Jan  9 23:04:20 JST 2017
119592
Mon Jan  9 23:04:21 JST 2017
150940
Mon Jan  9 23:04:22 JST 2017
151124
Mon Jan  9 23:04:23 JST 2017
151144
Mon Jan  9 23:04:24 JST 2017
151244
Mon Jan  9 23:04:25 JST 2017
151696
Mon Jan  9 23:04:26 JST 2017
151696
Mon Jan  9 23:04:27 JST 2017
151696
Mon Jan  9 23:04:28 JST 2017
151696
Mon Jan  9 23:04:29 JST 2017
152092
Mon Jan  9 23:04:30 JST 2017
152092
Mon Jan  9 23:04:31 JST 2017
152092
Mon Jan  9 23:04:32 JST 2017
152096
Mon Jan  9 23:04:33 JST 2017
152208
Mon Jan  9 23:04:34 JST 2017
152340
Mon Jan  9 23:04:35 JST 2017
152464
Mon Jan  9 23:04:36 JST 2017
152596
Mon Jan  9 23:04:37 JST 2017
152720
Mon Jan  9 23:04:38 JST 2017
152836
Mon Jan  9 23:04:39 JST 2017
152956
Mon Jan  9 23:04:40 JST 2017
153052
Mon Jan  9 23:04:41 JST 2017
153140
Mon Jan  9 23:04:42 JST 2017
153260
Mon Jan  9 23:04:43 JST 2017
153348
Mon Jan  9 23:04:44 JST 2017
153444
Mon Jan  9 23:04:45 JST 2017
153572
Mon Jan  9 23:04:46 JST 2017
153656
Mon Jan  9 23:04:47 JST 2017
153780
Mon Jan  9 23:04:48 JST 2017
153896
Mon Jan  9 23:04:49 JST 2017
154020
Mon Jan  9 23:04:50 JST 2017
154140
Mon Jan  9 23:04:52 JST 2017
185372
Mon Jan  9 23:04:53 JST 2017
263656
Mon Jan  9 23:04:54 JST 2017
297032
Mon Jan  9 23:04:55 JST 2017
315716
Mon Jan  9 23:04:56 JST 2017
348376
Mon Jan  9 23:04:57 JST 2017
301448
Mon Jan  9 23:04:58 JST 2017
355544
Mon Jan  9 23:04:59 JST 2017
411616
Mon Jan  9 23:05:00 JST 2017
468456
Mon Jan  9 23:05:01 JST 2017
528940
Mon Jan  9 23:05:02 JST 2017
576696
Mon Jan  9 23:05:03 JST 2017
603004
Mon Jan  9 23:05:04 JST 2017
657524
Mon Jan  9 23:05:05 JST 2017
722316
Mon Jan  9 23:05:07 JST 2017
782344
Mon Jan  9 23:05:08 JST 2017
834868
Mon Jan  9 23:05:09 JST 2017
891088
Mon Jan  9 23:05:10 JST 2017
921988
Mon Jan  9 23:05:11 JST 2017
994256
Mon Jan  9 23:05:12 JST 2017
1028896
Mon Jan  9 23:05:13 JST 2017
1060680
Mon Jan  9 23:05:15 JST 2017
1095608
Mon Jan  9 23:05:16 JST 2017
1146644
Mon Jan  9 23:05:17 JST 2017
1208076
Mon Jan  9 23:05:18 JST 2017
1242708
Mon Jan  9 23:05:19 JST 2017
1271804
Mon Jan  9 23:05:20 JST 2017
1328424
Mon Jan  9 23:05:22 JST 2017
1406608
Mon Jan  9 23:05:23 JST 2017
1465816
Mon Jan  9 23:05:24 JST 2017
1519064
Mon Jan  9 23:05:25 JST 2017
1573364
Mon Jan  9 23:05:26 JST 2017
1585300
Mon Jan  9 23:05:27 JST 2017
1616972
Mon Jan  9 23:05:28 JST 2017
1678396
Mon Jan  9 23:05:29 JST 2017
1730496
Mon Jan  9 23:05:30 JST 2017
1786588
Mon Jan  9 23:05:32 JST 2017
1838784
Mon Jan  9 23:05:33 JST 2017
1894832
Mon Jan  9 23:05:34 JST 2017
1896192
Mon Jan  9 23:05:35 JST 2017
1944260
Mon Jan  9 23:05:36 JST 2017
2007004
Mon Jan  9 23:05:37 JST 2017
2007004
Mon Jan  9 23:05:38 JST 2017
0
Mon Jan  9 23:05:39 JST 2017
pmap: argument missing
^C
root@centos7:~#