セキュリティの意識を高めようぜぃの流れで、前回と前々回に続いて、今回はハニーポットを用意しようと思います。ローカル環境にですね。ハニーポットなんて単語は普段は聞かないので、なにそれ?と思う方が大半だと思います。自分もその一人です。
タイトルにDionaeaという単語がありますが、これはHoneyPOTのアプリケーションの一つで、Weblioで訳すと「モウセンゴケ科の1属」。モウセンゴケ属ってのは、「ウツボカズラ目モウセンゴケ科に属する食虫植物の一属であり、湿原に多く生育する草本である。」byWikipedia。です。食虫植物というと草のように見せかけて虫を食べている植物ですね。
インターネットスラング風に言いかえると、「び・・美人局」でしょうか。
概念はそんな感じです。
Dionaeaを実行しているサーバーでnetstatをすると
[takeken@localhost ~]$ netstat -al |grep "192.168" tcp 0 0 192.168.24.82:ftp *:* LISTEN tcp 0 0 192.168.24.82:ms-sql-s *:* LISTEN tcp 0 0 192.168.24.82:https *:* LISTEN tcp 0 0 192.168.24.82:microsoft-ds *:* LISTEN tcp 0 0 192.168.24.82:sip *:* LISTEN tcp 0 0 192.168.24.82:sip-tls *:* LISTEN tcp 0 0 192.168.24.82:epmap *:* LISTEN tcp 0 0 192.168.24.82:nameserver *:* LISTEN tcp 0 0 192.168.24.82:ssh 192.168.24.56:57224 ESTABLISHED tcp 0 0 192.168.24.82:ssh 192.168.24.56:58829 ESTABLISHED udp 0 0 192.168.24.82:sip *:* udp 0 0 192.168.24.82:tftp *:* udp 0 0 192.168.24.82:ntp *:*
このように開けまくりんぐな風になりますが、さきほど説明したようにサービスを提供している訳ではなく、そう見せかけている。
実際アクセスしてみると、Apacheの画面が出ます・・って、んなわけないw
Httpdを落とすのを忘れていました。Netstatの結果をよく見るとhttpdはありません。
競合するサービスを開けていると上手く動作しませんので気をつけなはれや。
気を取り直して、Httpdは”落としてから”Dioanaeaが起動されたサーバーにブラウザでアクセスしてみましょうか。
ログの出力はinfo以上に高いレベルを表示するように立ち上げています。
[29052015 16:59:45] connection connection.c:4304-message: connection 0x2ecde80 none/tcp type: none->accept [29052015 16:59:45] connection connection.c:4337-message: connection 0x2ecde80 accept/tcp/none [192.168.24.82:80->192.168.24.56:63142] state: none->established [29052015 16:59:45] logsql dionaea/logsql.py:624-info: accepted connection from 192.168.24.56:63142 to 192.168.24.82:80 (id=12958) [29052015 16:59:45] connection connection.c:4337-message: connection 0x2ecde80 accept/tcp/established [192.168.24.82:80->192.168.24.56:63142] state: established->shutdown [29052015 16:59:45] connection connection.c:4337-message: connection 0x2ecde80 accept/tcp/shutdown [192.168.24.82:80->192.168.24.56:63142] state: shutdown->close
という具合にログが残ります。htmlファイルを設置してそれでレスポンスを返すことも可能なようです。
上のようにログを何でも残すようにしていると、なんでもないようなものでもログに残してしまいますので、グローバルな場所に植えるとログのでかさが尋常でないことになってしまいますので、ログの設定には気をつけよう。
悪用されちったwでは済まないですからconfの設定はじっくり吟味する必要があります。なんだか分からない状態で外に置くのは止めておきましょう。
ちなみに他のサーバーからnmapをしてみるとinfoレベルで記録されました。reject connectionとありますが、nmapした方のサーバーに対しては開いているレスポンスが返ります。
[29052015 17:06:13] logsql dionaea/logsql.py:689-info: attackid 12981 is done [29052015 17:06:13] logsql dionaea/logsql.py:637-info: reject connection from 192.168.24.65:52596 to 192.168.24.82:5900 (id=12982)
ハニーポットの役割の概念は分かりましたが、Dionaeaが具体的にどういう動きをするのかがまだイマイチ分からないので、このままではグローバルな環境に出すわけにはいきません。動作の分からないものをインターネットに置くというのは危険なのです。
WarningとCriticalなログだけ記録するように設定して、OpenVASでディープスキャンをかけてみました。
[*] Time: 2015-05-28 20:39:54 UTC Vuln: host=192.168.24.82 name=Microsoft Windows SMB Server NTLM Multiple Vulnerabilities (971468) refs=CVE-2010-0020,CVE-2010-0021,CVE-2010-0022,CVE-2010-0231 [*] Time: 2015-05-28 20:39:54 UTC Vuln: host=192.168.24.82 name=http TRACE XSS attack refs=CVE-2004-2320,CVE-2003-1567,BID-9506,BID-9561,BID-11604 [*] Time: 2015-05-28 20:39:54 UTC Vuln: host=192.168.24.82 name=ICMP Timestamp Detection refs=CVE-1999-0524 [*] Time: 2015-05-28 20:39:54 UTC Vuln: host=192.168.24.82 name=Anonymous FTP Checking refs=CVE-1999-0497
もっとドバーっと表示されるのかなと思っていましたが、レポートをインポートしてみてヒットしたものはこれくらいでした。
ほかにも確認する方法はありますが、それはここでは割愛します。
グローバルな環境に植える場合には、もっと色々と試行錯誤してみて、どんな設定でどうなるのかというのをそれなりに熟知できるくらいには試す必要あります。何故ならばインターネット上には、こういったツールを悪用して実行する人から、ものすごいスキルの人まで多種多様に存在する訳ですが、ツールを上手く扱うことすらできないとなると、まったく基準にも満たない訳です。
このシリーズもこれでひとまず完結になると思いますが、ローカルでひたすら検証することをやっぱり最後にもオススメです。
インストールメモで終わります。
参考にさせていただいたサイトです。ありがとうございますた。
VPSにハニーポット(Dionaea)を入れてみた
さくらのクラウドにハエトリグサ(Dionaea)を植えてみた
dionaea catches bugs
だいたい同じですが、Configureで不要なところがあったのでカットと、OpensslがGitのものでエラーになるので、Tarballにしました。
Dionaeaのインストールメモ yum -y install glib2-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel yum -y groupinstall "Development tools" yum -y libnl-genl-3-dev libnl-nf-3-dev libnl-route-3-dev cd /tmp && git clone git://git.carnivore.it/liblcfg.git liblcfg && cd liblcfg/code && autoreconf -vi && ./configure --prefix=/opt/dionaea && make install && cd ../.. git clone git://git.carnivore.it/libemu.git libemu && cd libemu && autoreconf -vi && ./configure --prefix=/opt/dionaea && sudo make install && cd .. wget http://dist.schmorp.de/libev/Attic/libev-4.04.tar.gz && tar xfz libev-4.04.tar.gz && cd libev-4.04 && ./configure --prefix=/opt/dionaea && make install && test -z "/opt/dionaea/include" || /bin/mkdir -p "/opt/dionaea/include" && /usr/bin/install -c -m 644 ev.h ev++.h event.h '/opt/dionaea/include' && test -z "/opt/dionaea/share/man/man3" || /bin/mkdir -p "/opt/dionaea/share/man/man3" && /usr/bin/install -c -m 644 ev.3 '/opt/dionaea/share/man/man3' && cd .. wget http://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz && tar xfz Python-3.2.2.tgz && cd Python-3.2.2/ && ./configure --enable-shared --prefix=/opt/dionaea --with-computed-gotos --enable-ipv6 LDFLAGS="-Wl,-rpath=/opt/dionaea/lib/ -L/usr/lib/x86_64-linux-gnu/" && make && sudo make install && cd .. wget http://cython.org/release/Cython-0.15.tar.gz && tar xfz Cython-0.15.tar.gz && cd Cython-0.15 && /opt/dionaea/bin/python3 setup.py install && cd .. git clone https://github.com/bagder/curl.git curl && cd curl && autoreconf -vi && ./configure --prefix=/opt/dionaea && make && make install && cd .. wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz && tar xfz libpcap-1.1.1.tar.gz && cd libpcap-1.1.1 && ./configure --prefix=/opt/dionaea && make && make install && cd .. wget https://www.openssl.org/source/openssl-1.0.2a.tar.gz && tar zxvf openssl-1.0.2a.tar.gz && cd openssl-1.0.2a && ./Configure shared --prefix=/opt/dionaea linux-x86_64 && make SHARED_LDFLAGS=-Wl,-rpath,/opt/dionaea/lib && make install && cd .. wget http://www.corpit.ru/mjt/udns/old/udns_0.0.9.tar.gz && tar xfz udns_0.0.9.tar.gz && cd udns-0.0.9/ && ./configure && make && cp udns.h /opt/dionaea/include && cp *.so* /opt/dionaea/lib/ && cd /opt/dionaea/lib && ln -s libudns.so.0 libudns.so && cd - && cd .. git clone git://git.carnivore.it/dionaea.git dionaea && cd dionaea && autoreconf -vi ./configure --with-lcfg-include=/opt/dionaea/include/ \ --with-lcfg-lib=/opt/dionaea/lib/ \ --with-python=/opt/dionaea/bin/python3.2 \ --with-cython-dir=/opt/dionaea/bin \ --with-udns-include=/opt/dionaea/include/ \ --with-udns-lib=/opt/dionaea/lib/ \ --with-emu-include=/opt/dionaea/include/ \ --with-emu-lib=/opt/dionaea/lib/ \ --with-ev-include=/opt/dionaea/include \ --with-ev-lib=/opt/dionaea/lib \ --with-curl-config=/opt/dionaea/bin \ --with-pcap-include=/opt/dionaea/include \ --with-pcap-lib=/opt/dionaea/lib/ make && make install && cd ..
[root@testcentos tmp]# /opt/dionaea/bin/dionaea -h Dionaea Version 0.1.0 Compiled on Linux/x86_64 at May 28 2015 20:18:43 with gcc 4.4.7 20120313 (Red Hat 4.4.7-11) Started on testcentos running Linux/x86_64 release 2.6.32-504.el6.x86_64 examples: # dionaea -l all,-debug -L '*' # dionaea -l all,-debug -L 'con*,py*' # dionaea -u nobody -g nogroup -w /opt/dionaea -p /opt/dionaea/var/run/dionaea.pid