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