T-Potでハニーポットを体験してみよう!
もう何番煎じの記事になるかもしれませんが、ハニーポット(honeypot)を設置してみたので、構築方法や利用方法について紹介します。
ハニーポットとは?
Wikipedia[1]からの引用になりますが
ハニーポット (英: honeypot) は、コンピュータセキュリティにおいて、悪意のある攻撃を受けやすいように設定した機器を、おとりとしてネットワーク上に公開することにより、サイバー攻撃を誘引し、攻撃者の特定や攻撃手法を分析する手法、あるいは、そのような用途で使用するシステムをいう
とのことなので、要はおとり用のシステムを動かして、攻撃者の動きを観察するものです。
孫氏曰く 「彼を知り己を知れば百戦殆からず」 ということなので、攻撃者の行動を観察できるハニーポットはまさに「彼を知り」の部分に該当しますね。
ハニーポットは様々存在しており、下記にリストがまとまっています。
今回はハニーポットを設置することが初めてということもあり、様々な種類のハニーポットを稼働させることができるオールインワン型であるT-Potを設置することにしました。
T-Pot
Dockerを利用して複数のハニーポットを動かすことができます。
起動するハニーポットは下記のようです。
T-Potを稼働させるために必要なスペック[2]は下記になります。他の方の記事を読む限り、CPUも4コア必要なようです。
EC2や各種VPSで動かすことができます。ちょうどVultrのDepositが余っていたので、今回はVultrで構築しました。以降で紹介する内容は T-Pot 24.04.0
のものになります。
インストール方法
インストール方法は下記の通り、Repositoryをcloneしてきて、install.shを叩くだけなので、非常に簡単です。
ほとんど詰まる所はなかったのですが、下記2点ほど注意が必要でした。
- 非rootでの実行が望ましいとのことだったので、tpotユーザを作成してインストールを進めていたのですが、インストール中に実行されるAnsibleで、tpotユーザを別途作成するようでユーザが重複してエラーになりました。作業用のユーザはバッティングしないように別のユーザ名を利用しましょう。
- 123ポートがntpdで利用されており、T-Potの各種コンテナの起動に失敗していたため、下記のコマンドで無効化しました。[3]
sudo systemctl stop ntpd
sudo systemctl disable ntpd
dpsコマンドで起動しているハニーポット(コンテナ)が確認できます。
コンテナが立ち上がっていない等、起動で問題が発生した場合は、下記のログで原因を確認できます。
$ less tpotce/data/tpotinit.log
Landing Page
Landig Pageが用意されているので、そこから各種ツールにアクセスできます。
アクセス方法は https://<your.ip>:64297
にブラウザからアクセスします。ユーザとパスワードはインストール時に指定したものを利用します。
以下で各種ツールについて説明します。
Attack Map
現在のリクエスト状況を視覚的に確認することができます。リクエストの種類やどこの国からアクセスされているかも確認することができます。リクエストされる種類(HTTP, FTP, SSH, etc..)によって、色が変わるので、見ているだけで楽しいですね。
CyberChef
Encoding/DecodingやEncriptionがWeb画面から操作できるツールです。
Honeytrap等いくつかのハニーポットのログに記載されるpayloadは、Hex形式で保存されます。そのため、各種のログのpayloadのDecodeに利用するために付属しているのかなと思います。
Elascticvue
各種リクエストはElasticsearchに保存されます。ElasticvueはElasticsearchのための、フロントエンドで、Web GUI上でリクエストを検索することができます。Vue.jsで書かれているので、Elasticvueという名前になっているようです。
Kibana
Elasticsearchに保存されたデータの可視化、分析ツールになります。T-Potのメインツールです。既存で各種ダッシュボードが用意されているので、起動してすぐに詳細に攻撃状況を確認することができます。ダッシュボードについては、以降でいくつか紹介しますが、まず最初は総合的に確認できる T-Pot
ダッシュボードから確認するのが良いのかなと思います。
SpiderFoot
いわゆるOSINT用のツールになります。
KibanaやElasticvueで確認した攻撃者の情報(IPアドレス等)について調査するために、付属しているのかなと思います。
Kibana Dashboard
既存で用意されているDashboardについて、以下にいくつか紹介します。
T-Pot
各種ハニーポットのデータを統合したダッシュボードになります。どのハニーポットへのリクエストが多いのか確認できたり、またアクセス元の国についても視覚的に確認することができます。
今回のケースではNTPやDNSなどのUDP系のハニーポットである Ddospot
へのリクエストが一番多いようです。
また、どのようなUser名やPassでアクセスが試行されているかもタグクラウド形式で確認することができます。
右下のようにSuricataによる分析と検知結果も確認することができます。一番多いのは SURICATA STREAM Packet with broken ack
なので、Port ScanにおけるSYN Scanの結果でしょうか。
Cowrie
CowrieはSSH/Telnet用のハニーポットです。他のダッシュボード同様にアクセス数やどの国からのアクセスが多いかなどを一目で確認することができます。
下記(Command Line Input)のように、ログイン後、攻撃者がどのようなコマンドを実行しているかも確認することができます。またダウンロードされたファイルも保存されているので、後述するログから確認することができます。[4]
tanner(/snare)
tanner(/snare)はWebアプリのハニーポットになります。snareがハニーポットを担当し、tannerがsnareのデータを分析するようです。
User Agentやどのメソッドの種別、どのパスへのアクセスが多いかなどを確認することができます。
ログ
Dashboardではサマライズされた情報しか確認できないため、詳細にログを確認したい場合には、Elasticvueを利用するか、SSHでサーバにログインして、直接ログを確認できます。
ログは tpotce/data/<honeypot>/log
に格納されています。
まとめ
簡単にですが、T-Potによるハニーポットの利用方法について、説明しました。
T-Potは導入が簡単ですが、それなりのスペックのサーバが必要になるため、T-Potでまずは様々な体験をしてみて、気になったハニーポットを別途立ててみるのも良いかもしれません。もしくはT-Potで稼働するサービスはカスタマイズすることが可能なようなので、カスタマイズをして、スペックを調整するのも良いかもしれません。
-
https://github.com/telekom-security/tpotce?tab=readme-ov-file#system-requirements ↩︎
-
ntpdが起動しているかどうかは環境に依存すると思いますが ↩︎
-
tpotce/data/tanner/files
に保存されるようです ↩︎
Discussion