T-PotによるDockerized Multi Honeypotなサイバー攻撃観測環境を構築する
#モチベーション ハニーポットを使ってサイバー攻撃のトレンド観測をしたい
本記事を読むと最後にはこんな事ができる
ハニーポットが収集した攻撃情報の時系列分析、どのプロトコルを狙ったものなのか、どこの国からの攻撃なのかなど、T-Potを構築することでこんな形で攻撃情報を可視化することができるようになる
ハニーポットとT-Pot
そもそも、ハニーポットとはインターネット上に飛び交うサイバー攻撃や悪性なWebサイトなどから攻撃情報を収集する技術である。通常ハニーポットは攻撃をひたすら待って収集する待ち受け型
と自分から悪性サイトにアクセスするなどしてマルウェア検体を収集する巡回型
のハニーポットに大別される。T-Potはドイツテレコムが開発している、異なる特徴を持つ待ち受け型のハニーポットをDockerコンテナ上で展開する機能と、ハニーポットで集取した各種ログをLogstash&Elasicsearch&Kibanaの解析機能をオールインワンで提供するサービスのことである。今回はこのT-Potを使って攻撃トレンドの観測環境を構築する。
アーキテクチャ
本家T-Potによるとアーキテクチャは以下のようになっている。これを見ると、Dockerコンテナで各種ハニーポット、分析部分、マルウェアのシグニチャマッチなどの照合部分がそれぞれ作られていることがわかる。各ハニーポットで収集されたトラフィックは全てのコンテナと共有する形で照合コンテナ、分析コンテナとの情報の共有を行う。また、これらのコンテナは1日1回自動的にリバートされまっさらな状態で再生成される。これにより、もしコンテナがマルウェアに乗っ取られたとしてもホストに影響が出る前にクリーンな状態にできると考えられる。
T-Potの構成要素
各ハニーポットの特徴
Glastopf
Glastopfは脆弱なWebアプリケーションを模擬したハニーポット。SQLi、XSS,CSRFなどWebの脆弱性を付く基本的な攻撃を始めとして、Strutsなどのミドルウェアの脆弱性を付いた攻撃の観測まで期待できる。
- Know Your Tools: Glastopf - A dynamic, low-interaction web application honeypot | The Honeynet Project
- Cyber Fast Track: Web Application Honeypot Final Report
Kippo
KippoはSSH通信に対する攻撃を観測するためのハニーポット。SSHにブルートフォース攻撃やパスワードリスト攻撃の観測が期待できる。
honeytrap
honeytrapは複数のネットワークサービスへの攻撃を観測するためのハニーポット。複数のネットワークサービスのエミュレーションをしており、他のハニーポットがマルウェアを収集する所に主眼をおいている中で、honeytrapは初期の攻撃を観測することが目的である
dionea
dioneaは最も完成度の高いOSSハニーポットで様々な攻撃情報を収集することができる。収集対象の攻撃はSMB、 http、 ftp、 tftp、 MSSQL、SIP(VoIP) などの各種プロトコルを想定している。
その他
suricata
suricataはオープンソースのIDS/IPSである。無料のIDS/IPSと言えばsnortが有名だがsuricataはsnortのルールセットも使うことができ近年脚光を浴びているIDS/IPSの1つである。T-Potでは、suricataのプロトコル判定やシグネチャマッチング機能を利用している。また、マルチスレッド対応しているためにトラフィックが大量に来ても捌くことができ、スケールし易い。
EWSposter
EWSposterは各種ハニーポット環境からセンサー情報をHoneynet Projectで開発されているhpfeedsやドイツテレコムで開発しているDTAG Early Warning Systemに集積させるためのアプリケーション。
Elasticsearch & Logstash & Kibana
Elasticsearchは全文検索エンジン、Logstashはログの移動、Kibanaは情報の可視化に利用される。これらのミドルウェアはあまりにも有名過ぎて今更説明する必要はないと思うが、役割的にはハニーポットで取得した各種攻撃情報をLogstashでElasticsearchが分析するのに都合が良い場所に移動させる。そして、KinabaはElasticsearchの分析結果(検索結果が正しいか・・・)を可視化する。すると冒頭で見せたようなGUIでハニーポットで収集した攻撃情報がわかりやすい形で可視化される。
ところで、昨今のElasticsearch、Kibanaをとりあえず使っておくというエンジニアの姿勢には辟易しているが、検索、分析、可視化をよりコモディティ化させたという意味ではElastic社は革新的なプロダクトを排出したといえるのかな。今流行っているビッグデータとか、データマイニングとかもそのうちコモディティ化して行くに違いない。
インストール手順
isoファイルを本家のT-Pot: A Multi-Honeypot Platformからダウンロードする。
自分が運用しているサーバにisoからOSをインストールする T-Potのisoを使うとUbuntuのインストーラが立ち上がるため、指示に従いインストールして行く。この辺りは通常のOSインストール手順と変わらない。またOSインストールが完了するとしばらく再起動を繰り返しDockerfileからコンテナを自動的に作成する。
パスワードを変更する インストールが完了すると以下のID=tsec、pass=tsecでログイン出来るようになる。ログインが成功するとパスワードを変更するように促されるので変更する。
sshを有効にする tsecのホームディレクトリにsshを有効化するためのスクリプトがあるので以下を実行する。
~/.ssh_enable.sh
ログイン用の公開鍵を登録する ログインに使うPCで作成したsshの公開鍵(id_rsa.pubなど)を
/home/tsec/.ssh/authorized_keys
にコピペする。また、鍵の所有者とパーミッションは以下のように変更する。chown tsec:tsec authorized_keys chmod 600 authorized_keys
これで、T-Potのインストールは完了。
WebUIへ接続する
インストールが完了するとDockerコンテナが複数生成され、それぞれのコンテナでハニーポットが攻撃情報を収集し始める。収集した情報を確認する場合は、Kibanaにアクセスする必要があるがT-PotではSSHのポートフォワーディングを機能を使うことを前提としている。そこで、自分のPCのターミナルで以下のように127.0.0.1:8080にアクセスした場合、sshのトンネルを通じてGLOBAL_IPで指定するIPにポート64296にアクセスできるようになる。
# 以下を実行している間はKibanaにアクセスするためのトンネルが作成される
➤ ssh -p 64295 -l tsec -N -L8080:127.0.0.1:64296 GLOBAL_IP
後は、好きなブラウザを開いてURL部分に127.0.0.1:8080と入力するだけどKibanaにアクセスできるようになる。これでT-Potが完成した!
まとめ
本記事ではT-Potの概要説明を行い、攻撃情報の観測環境を構築した。これまでもハニーポットによる攻撃情報は様々な人がして来ており、Kippoやdioneaは従来より使われてきたものを使いまわしてきているに過ぎない。そういう意味では収集できる情報に変化は無いのかもしれないが、より多くの人が気軽にハニーポットの運用を始められるようになりそうだ。このように、複数のミドルウェアを組み合わせたプラットフォームもDockerを用いることで簡単に構築することができる。ミドルウェアやインフラ部分のコモディティ化の激しさを見ていると、仕組みを作る側か、利用して新たな価値を生み出す側に回らないと、と日に日に思うところである。
参考
- Github:dtag-dev-sec/tpotce
- T-Pot: A Multi-Honeypot Platform
- コンテナ内でのテータ管理 - Docker User Guide - Qiita