高機能ハニーポット(T-Pot 22.04)をさくらのクラウドに構築して攻撃を観測する

はじめに

皆さんはハニーポットというのはご存知でしょうか。ハニーポットとは、悪意のある攻撃を受けるように設計された「罠」や「おとり」になるサーバーやネットワークのことです。最新のサイバー攻撃やマルウェアの動向を探ったり分析したりするために用いられるものです。

T-Potとは

T-Potは主にDockerを用いて構成されているマルチハニーポットプラットフォームで、様々なツールや罠が用意されています。複雑な設定を必要としないにも関わらず様々な機能を利用できるのが特徴です。ただしその分、要求スペックが高いのもまた特徴です。

T-Potはあくまでマルチハニーポットプラットフォームであり、複数のハニーポットを集めたものになります。以下の画像を見るとどのようなハニーポットがどこのポートでListenされているかわかります。

T-Potの全体図

今回はこのT-Potをさくらのクラウド上に設置してサイバー攻撃を観測してみたいと思います。

インストール

インストール要件

まずT-Potのインストール要件を確認しましょう。公式GitHubリポジトリによると少なくとも8~16GBのRAMと 128GBの空きディスク容量が必要とされているようです。

インストール手段

T-Potのインストール方法は複数あります。

  1. Debianをインストールしたマシンにプログラムをクローンしてインストールする方法
  2. T-PotのISOイメージからインストールする
  3. TerraformまたはAnsibleを使った自動インストール

[1]の方法ではエラーが発生することが多いので、今回は[2]の方法でインストールを行っていきたいと思います。

ISOファイルをダウンロード

T-PotのリリースページよりT-Pot(22.04.0)をダウンロードします。

下記の画像の一番上にあるtpot_amd64.isoをダウンロードします。

Githubのリリースページ

ISOイメージを利用できるようにする

外部のイメージを利用してインストールを行うにはISOイメージ機能を使います。

最新の環境ではcurlを使って簡単にファイルのアップロードが出来るので今回はこちらを利用します。curlコマンドを実行できる環境がない方はFTPソフトを使った方法がありますのでこちらのドキュメントをご覧ください。

まず始めにさくらのクラウドにログインし、コントロールパネル左側メニューの「ISOイメージ」にて追加をクリックして5GBでアップロード領域を作成します。

※ ISOイメージの領域を作成すると時割1円の課金が発生します。

作成が終わると以下のように情報が表示され、その中にcURLコマンドサンプル(アップロード)という部分があるのでコピーします。

スクリーンショット

コピーができたら、先程ダウンロードしたISOファイルが存在するディレクトリにてコマンドを実行します。コマンドは以下の形式になっているので、最後のファイル名の部分だけtpot_amd64.isoに変更して実行してください。

curl --ssl --ftp-pasv --user <ユーザ名>:<パスワード> --url ftp://<ホスト名>/ --upload-file <ファイル名>

コマンドを実行するとこのような画面になります

コマンド実行時

アップロードが終了したらFTPを完了しておきましょう。

FTPを完了

サーバーについて

前述の通りT-Potは要求スペックが高く、8~16GBのRAMと128GBの空きディスク容量が必要とされています。この要件に近いサーバーをさくらのクラウドに用意しようと考えると以下のようなスペック・料金になります。

コア数メモリストレージ日割月額
38GB100GB604 円12,100 円
38GB250GB893 円17,875 円
416GB250GB1,207 円24,145 円

今回はメモリ8GBとストレージ250GBで構築したいと思います。ただ、ストレージに関しては128GB必要とされていますが、ログを溜め込むストレージ部分が大きく、短期間の利用であれば100GBでも問題ありません。

また、下回るスペックで運用したい場合は環境に合わせて独自のISOイメージを作成することができます。詳しい方法は公式READMEのCreate your own ISO Imageをご覧ください

サーバーを作成

ではさっそく作成していきましょう。さくらのクラウドのサーバ作成画面に行き、シンプルモードを解除してスペックを選択します。

サーバープラン設定

ディスクソースをブランクにして先程アップロードしたISOイメージを選択します。

ディスク設定

そしてサーバーに任意の名前をつけて作成しましょう。

コンソールからインストールの設定

一覧の画面から作成したサーバーを選択し、コンソールにアクセスしてください。コンソールでこの画面が表示されたらいったんここまでは成功です。

以降の作業はコンソールからの操作で十分なので、ここでインストールを行います。

コンソール画面

特段難しいことはしないので以下の通りに選択・入力してください。

  1. T-Pot 22.04.0 (AMD64)
  2. [Select your location] other
  3. [Select your location] Asia
  4. [Select your location] Japan
  5. [Configure the keyboard] Japanese ※1
  6. [Choose a mirror of the Debian archive] Japan
  7. [Choose a mirror of the Debian archive] deb.debian.org
  8. [Choose a mirror of the Debian archive] を選択
  9. [Choose Your T-Pot Edition] STANDARD
  10. [Enter password for console user (tsec)] <任意のパスワード 1> ※2
  11. [Repeat password for console user (tsec)] <任意のパスワード 1>
  12. [Enter your web user name] <任意のユーザーネーム>
  13. [Enter password for your web user] <任意のパスワード 2>
  14. [Repeat password for your web user] <任意のパスワード 2>

※1 : 自環境に合わせてください

※2 : 後に利用するtsecというユーザーのパスワードです

ここまでできたらインストールは終了です。数分ほどサーバーがセッティングを行い、その後に次の画面が表示されます 白塗りの部分にSSHコマンドや管理画面のURLなどが表示されます。

設定完了後画面

いったんここまでで攻撃を観測できる状態にはなっているのですが、おそらく1つエラーが発生しているはずなので直しておきましょう。

ネットワークエラーを治す

まずCockpit(https://<ipアドレス>:64294)にアクセスしましょう。このCockpitはLinuxサーバーを管理するツールで、Web上からユーザの管理やネットワーク管理等を行えます。

ユーザー名はtsecで、パスワードは先程コンソールでの操作10番目で入力した文字列です。

Cockpitログイン画面

Cockpitのサービス画面を見ると、networkingの起動に失敗しているのがわかるでしょう。これはT-Potのプライマリネットワーク・インターフェースが初期設定ではens3となっているためです。これをさくらのクラウドに合わせてeth0に設定する必要があります。

サービスタブ

設定方法ですが、Cockpitにはターミナルも用意されているので、こちらを使って操作しましょう。

Cockpitのターミナル

まずは念のため、自分のインターフェースを確認しておきましょう。

ip a

自分のサーバーは確かにeth0でグローバルネットワークと接続されているみたいですね。

では次にお好きなエディタで/etc/network/interfacesを編集し、11, 12行目のens3eth0に変更して保存してください。

sudo vi /etc/network/interfaces

保存したらCockpitのサービスに移動してエラーとなっているネットワークを選択し、[サービスの開始]を押しましょう!

サービスが停止している状態

以下のようになれば成功です。

サービスが起動している状態

攻撃を観測する

では実際に集まってくる攻撃を観測しましょう。今回はAttack MapKibanaの2つを紹介したいと思います。

まずはhttps://<ipアドレス>:64297にアクセスして、インストール時の操作[12],[13]で設定したユーザー名とパスワードを入力してログインしてください。

Attack Map

ログイン後の以下のような画面が見えたら、まずはAttack Mapへアクセスしてみましょう。

ログイン後ページ

Attack Mapでは攻撃をリアルタイムに見ることが出来ます。実際に攻撃を観測すると、弓矢が飛んでくるかのような演出と同時に攻撃地にドーナツ型の点が発生します。今回は数分放置しただけで早速数個の攻撃を観測することが出来ました。

Web全体をスキャンしているクローラなどもいますので、すべてがすべて攻撃と言えるわけではないのですが、観測されたものの大半は自動化されたBOTによる攻撃だと言えます。

Attack Map

Kibana

次にKibanaを紹介します。Kibanaはデータを可視化するためのツールです。このハニーポットでは攻撃に関するデータを見やすく表示してくれます。

ログイン後の画面から左下のKibanaを選択し、KibanaのDashboardsに移動してください。そして検索バーにt-potと入力し>T-Potをクリックしてください

ダッシュボード

このページではT-Potに行われた攻撃の総合的な情報を見ることができます。

以下の画像は1日放置して攻撃を観測したものです。CowrieはSSHにて攻撃を観測するハニーポットなのですが、飛び抜けて多くの攻撃が観測されていますね。

攻撃を観測

下にスクロールするとさらに興味深いものが見られます。下図左上の円グラフを見てください。

グラフ

これは国別にどのポートへの攻撃が行われているかの割合を測ったものです。United StatesやChinaからは22番ポート(SSH)への攻撃が多いのに対してインドからは445番ポート(SMB)を狙った攻撃が多く見られたり、イランからの攻撃はほぼすべて23番(telnet)となっています。

何かしらの背景がありそうですね…

さて、次にその下を見てみましょう。これは各種攻撃に用いられたユーザ名とパスワードの頻度で、文字が大きければ大きいほどよく試行された文字列ということです。やはり安直なパスワードは狙われやすいということが身にしみてわかりますね。

まとめ

この記事ではT-Potの機能とツールを紹介しました。

今回紹介した以外にも、マルウェアを捕獲して攻撃の再現を行ったりできるDionaeaというハニーポットやHoneytrapというハニーポットなどもT-Potには内包されています。その他にもいろんな機能があるので、ぜひ試して調査や攻撃の可視化に役立ててみてください。