前から気になっていたハニーポットを自宅サーバに構築してみます。
ハニーポットはクラッカーの侵入手法やマルウェアの振る舞いを分析するために、わざと侵入されやすいように設定されたサーバです。
外からは単なる脆弱なサーバに見えますが、攻撃者の行動を記録したり、マルウェアを保存することができます。
自身でハニーポットを持つことで、最新のサイバー攻撃動向やマルウェアを知ることができます。
この記事では、実際にハニーポットを構築し、攻撃を収集するところまでをご紹介します。
※ハニーポットは実際に攻撃を受けますが、「本当に」侵入されてはいけません。
サーバを乗っ取られたり、他の攻撃の踏み台にされたりしないように気をつけてください。
特に自宅にハニーポットを設置する場合はそのリスクをよく考えておこなってください。
T-Potとは
今回はT-Potをインストールします。
T-PotはUbuntu Server 16.04 LTSをベースにした複数のハニーポット、IDS/IPSとDockerで構成されたマルチハニーポットプラットフォームです。
2017年5月8日現在の最新バージョンは16.10で、6ヶ月ごとに新しいバージョンが提供されます。
以下のハニーポットが含まれます。
- conpot
- cowrie(kippoから変更)
- dionaea
- elasticpot
- emobility
- glastopf
- honeytrap
他に、ログの収集解析可視化ツールELKスタック、webSSHクライアントやT-Potのweb管理ツールなどがインストールされます。
システム要件
T-Potのインストールには、
- 4GB RAM
- 64GB Disk
- DHCPネットワーク
- ネットワーク接続
が最小要件となっています。
動作環境として、Intelのベアボーンintel NUCが動作保障されています。
コンセプト
T-PotではそれぞれのハニーポットデーモンはDockerによりコンテナ仮想化されています。
そのため、一つのネットワークインターフェース上で複数のハニーポットデーモンが実行できます。
ドッカーコンテナは毎日一度再起動するので、コンテナがマルウェアに感染しても次の日には新しいコンテナにクリーンアップされます。
それぞれのハニーポットのイベントはELKスタックによって可視化されます。
ELKはElasticsearch(解析) + Logstash(収集) + Kibana(可視化)の3つのシステムをまとめたものです。
Kibanaは過去90日間のデータを保持します。
収集した情報はプロジェクトのコミュニティへ自動送信され、統計や分析に活用されます。
http://sicherheitstacho.eu/
/data/ews/conf/ews.cfg 設定ファイルでデータ送信を無効にしたり、設定を変更できます。
インストール手順
-
ISOディスクイメージ作成
イメージをダウンロードするか、自分で作成するかを決めます。
イメージをダウンロード
ダウンロードはここからできます。(http://community-honeypot.de/tpot.iso)
イメージを自分で作成
1.gitリポジトリからクローンを取得します。
git clone https://github.com/dtag-dev-sec/tpotce.git cd tpotce
2.ISOイメージを構築するスクリプトを実行します。
sudo ./makeiso.sh
ビルドが成功すると、ディレクトリ内にtpot.isoが作成されます。
私はISOイメージを自分で作成する方法ではうまくいかなかった(インストールが途中で止まってしまう)ので、イメージをダウンロードしてインストールしました。
-
インストール
ISOイメージを作成したら、インストールをします。
インストールは通常のLiniuxと同様で、インストーラの手順通りに進めていきます。
タイムゾーン、キーボードと初期パスワードを入力し、途中に2回の再起動が入ります。
更新プログラムとドッカーコンポーネントのダウンロードのため、インストール時にはネットワーク接続が必要です。 -
最初のログイン
インストールが完了すると再起動の後、T-Potのログイン画面が表示されます。
最初のログイン情報
ユーザー名 tsec パスワード インストール時に設定したパスワード ハニーポットのドッカーコンテナは自動で起動するので、T-Potの起動と同時に攻撃の収集が始まります。
- 環境設定
T-Potは複数のハニーポットで攻撃を収集します。
そのため、それぞれのハニーポットが使用するポートを開けます。Honeypot Transport Forwarded ports conpot TCP 1025, 50100 cowrie TCP 22, 23 dionaea TCP 21, 42, 135, 443, 445, 1433, 1723, 1883, 1900, 3306, 5060, 5061, 8081, 11211 dionaea UDP 69, 5060 elasticpot TCP 9200 emobility TCP 8080 glastopf TCP 80 honeytrap TCP 25, 110, 139, 3389, 4444, 4899, 5900, 21000 honeytrapはポートを動的にバインドするので、全ポート解放が必要になります。
- webUI(kibanaダッシュボード)にアクセス
webブラウザでhttps://<your.ip>:64297にアクセスします。
kibanaダッシュボードは自由にカスタマイズができます。
旧バージョンではsshのポートフォワーディングが必要でしたが、HTTPSリバースプロキシNGINXの実装によってsshトンネルは不要になりました。 - sshでアクセス
デフォルトではsshはローカルネットワークからのみtcp/64296ポートへアクセスが許可されています。
外部からssh経由でリモートログインするためにはT-Potのインストールしたホストにssh pubkeyを/home/tsec/.ssh/authorized_keysとしてコピーします。
パーミッションと所有権をそれぞれ設定します。
chmod 600 authorized_keys
chown tsec:tsec authorized_keys
以上がインストールの手順です。
複雑なハニーポットが簡単にインストールできました。
最後に
T-Potを起動してログを観察していると、ものすごい数の攻撃が観察できます。
2016年から流行っているIoTマルウェアmiraiの攻撃は公開されているソースコードと一致するようなログも観察できて面白いです。
参考
T-PotによるDockerized Multi Honeypotなサイバー攻撃観測環境を構築する|PAYFORWARD
こんにちは、
T-Potを運用しようとしている私には
非常に役に立つ記事でした。
どのように踏み台対策をされていますか?
ぶしつけな質問で申し訳ありませんが、
回答していただけると幸いです。
記事をご覧いただきありがとうございます。
ハニーポットの踏み台対策について、下記の対策を実施しております。
・ハニーポットからインターネット方向のパケットフィルタ
・ハニーポットをDMZ上に設置
・ログの定期的な確認
・不要なサービス、アカウントの停止
・root無効化
・万一の時にハニーポットを物理的に切断できる体制
私自身セキュリティ初学者ですので、基本的な対策になりますが、
ご参考になれば幸いです。
こんにちは、非常に興味深い記事でした。
マルウェアを採取したいと思っています。
どうすればよいでしょうか?
回答していただけると幸いです。
コメントありがとうございます。
T-Potに含まれるハニーポットでマルウェアを収集するにはDionaeaを使用します。
T-Potの最新のリリースにもDionaeaは含まれています。
Dionaeaによるマルウェアの収集方法はDionaeaのGithubリポジトリ及びドキュメントを参照してください。
マルウェアの収集はハニーポットをホストしている環境だけでなく、他者に危害を加える可能性があります。
ハニーポットの運用、マルウェア解析の際には十分ご注意いただければと思います。