ハニーポット is 何?実際に作って触ってみる 構築編

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【3/22開催】テックブログを書こう!アウトプットのススメ
1年で100本ブログを出した新米エンジニアがPV数が伸びなくてもTech Blogを書き続ける理由とは?
https://tech-lab.connpass.com/event/312805/

【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

はじめに

始めまして。サイオステクノロジーのNです。

皆さんはハニーポットについてご存知でしょうか?

Wikipediaには以下のように書かれています。

ハニーポット は、コンピュータセキュリティにおいて、悪意のある攻撃を受けやすいように設定した機器を、おとりとしてネットワーク上に公開することにより、サイバー攻撃を誘引し、攻撃者の特定や攻撃手法を分析する手法、あるいは、そのような用途で使用するシステムをいう。

ざっくり言うと「わざと脆弱性のあるサーバを用意し、攻撃を観察するもの」です。

以下の図のようなハニーポットの環境を外部に公開したとします。

ハッカーはインターネットを介してAzureのVMに攻撃をします。

VMで構築したハニーポットがハッカーからの攻撃の情報を収集します。

その内容を管理者(ハニーポットを作成した人)がどんな攻撃がきたか確認できます。

 

今回はそんなハニーポットを構築編と調査編の2本立てでお送りします。

今回の構築作業ではハニーポットの構築作業について説明します。次回、調査編では実際にハニーポットで収集した攻撃について見ていきたいと思います。

使用するハニーポットについて

ハニーポットにも様々な種類はありますが、今回はT-PotというハニーポットをAzureのVMに構築していきます。

URL: https://github.com/telekom-security/tpotce

T-Podとは

T-Podは様々なハニーポットが詰まったハニーポットの集合体です。

今回使用したバージョン: T-Pot 20.06.2では19個ものハニーポットが含まれています。

細かい動作等に関しては以下の図が参考になります。

 

全部は紹介しきれないため、攻撃が多かった3つのハニーポットについて解説します。

Dionaea

URL: https://github.com/DinoTools/dionaea

Dionaeaは日本語でハエトリグサという意味になります。

攻撃者からマルウェアのコピーを手に入れるための、マルウェア収集用のハニーポットになります。

T-Potでは以下のポートをListenしています。

  • 42/TCP
  • 81/TCP
  • 135/TCP
  • 445/TCP
  • 1433/TCP
  • 1723/TCP
  • 1883/TCP
  • 3306/TCP
  • 5060/TCP
  • 5061/TCP
  • 27017/TCP
  • 69/UDP
  • 5060/UDP

 

Honeytrap

URL: https://github.com/armedpot/honeytrap

TCPとUDPの各種ポートに対するハニーポットで、各種サービスに対する攻撃を観察することができます。

どこかのポートをListenしているわけではなく、他のハニーポットでListenしていないPortにアクセスが来た場合、動的に動作します。

 

Cowrie

URL: https://github.com/cowrie/cowrie

SSHとTelnetに特化したOSSのハニーポットになります。

SSHとTelnetののデフォルトポートであるTCPの22,23のポートでListenしており、アクセスしてきた攻撃者IPアドレスやユーザ名、パスワードやログイン後の動作をログとして収集しています。

T-Potでは以下のポートをListenしています。

  • 22/TCP
  • 23/TCP

 

ハニーポットの構築

先にSSHの鍵を用意しておきます。

Terminalやコマンドプロンプトで以下のようにしてSSHの鍵を作成します。

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/tpod

鍵の準備ができたらAzureの準備をしていきましょう。

Azureのポータル画面からVirtual Machinesを選択し、作成していきます。

使用したいサブスクリプションとリソースグループを作成したら任意の仮想マシン名、地域などをつけます。ここでは仮想マシン名は「t-pod」、リージョンは「米国西部2」としました。

可用性オプションはなしで、イメージは公式インストール手順で推奨されている「Debian 10 (Buster)」にしました。

t-podの推奨スペックは8 GBRAM、SSD128GB以上とされていたため、インスタンスサイズは「D2s_v3(v2cpu、8GBRAM)」を選択しましたが、後々メモリが足らず16GBに変更しました…。

お金に余裕がある場合は16GB以上のRAMを積んだものを使用するのが良いかと思います。

管理者アカウントの認証の種類を「SSH 公開キー」にし、任意のユーザ名を入力します。

SSH公開キーのソースを「既存の公開キーを使用」にし、SSH公開キーに先ほど作成した「 ~/.ssh/tpod.pub」の内容を貼り付けます。

パブリック受信ポートはなしで次へ。

ディスクは今回「Standard SSD」を使用します。

ネットワークは先にグローバルIPのみ許可したネットワークセキュリティグループを作成しておきましょう。

管理、詳細、タグは必要であれば設定し、作成および確認から仮想マシンを立ち上げましょう。

作成が終了したらディスクサイズを変更するため一度マシンを停止します。

停止し終えたら左の欄の設定からディスク、「t-pod_OsDisk_xxxxxxxxxx」をクリックします。

次に「サイズ及びパフォーマンス」からディスクサイズを「128GiB」に変更します。

完了したら仮想マシンを起動させましょう。

ターミナルでの操作

お好きなターミナルで、SSHしましょう。私はWSLを用いてSSHしました。

$ ssh -i ~/.ssh/tpod azure-user@xxx.xxx.xxx.xxx

xxxの部分は仮想マシンのグローバルIPに置き換えてください。

ここからはGitHubに公開されている公式手順の作業です。

SSHができたら次にgitをインストールします。

azure-user@t-pod:~$ sudo su -
azure-user@t-pod:~# apt update && apt upgrade -y
azure-user@t-pod:~# apt install -y git

その後公式の手順に沿ってインストールをしていきます。

azure-user@t-pod:~# git clone https://github.com/telekom-security/tpotce
Cloning into 'tpotce'...
remote: Enumerating objects: 11472, done.
remote: Counting objects: 100% (242/242), done.
remote: Compressing objects: 100% (160/160), done.
remote: Total 11472 (delta 105), reused 174 (delta 73), pack-reused 11230
Receiving objects: 100% (11472/11472), 67.35 MiB | 32.98 MiB/s, done.
Resolving deltas: 100% (6243/6243), done.
azure-user@t-pod:~# cd tpotce/iso/installer/
azure-user@t-pod:~/tpotce/iso/installer# ./install.sh --type=user

しばらくするとインストールタイプを選択画面が表示されます。

今回は「Standard」を選択しました。

その後、ハニーポット用のユーザー名とパスワードを入力する画面が表示されるので適時入力します。

入力が終わるとインストールが走っていきます、5~10分くらいかかる感じでしょうか。

コーヒーでも入れて待ちましょう☕

インストールが終わると自動的に再起動され、SSHが切断されます。

今回使用しているT-Podは管理画面に64294、SSHに64295、Web UIに64297のTCPポートを使用するため、これら以外のポートを開けてあげましょう。

VMインスタンスに紐付けているネットワークセキュリティグループを変更します。

「ネットワークセキュリティグループ」から作成したネットワークを選択し、「受信セキュリティ規則」から追加します。

以下の画像のようにして、ポートを開放をするのが良いかと思います。

ここまでできたらSSHと管理画面にアクセスしてみましょう。

SSH

xxxの部分は仮想マシンのグローバルIPに置き換えてください。

$ ssh -i ~/.ssh/tpod azure-user@xxx,xxx,xxx,xxx -p 64295

もしくは~/.ssh/configに書くことでもアクセス出来ます。

Host tpod
  HostName xxx.xxx.xxx.xxx
  User azure-user
  Port 64295
  IdentityFile ~/.ssh/tpod
$ ssh tpod
Linux peculiarburglar 4.19.0-17-cloud-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64
Last login: Tue Aug 31 16:04:45 2021 from xxx.xxx.xxx.xxx
[azure-user@peculiarburglar:~]$

ターミナルでは以下のようにして現在起動しているコンテナを確認出来ます。

[azure-user@peculiarburglar:~]$sudo /opt/tpot/bin/dps.sh

 

管理画面

お好きなブラウザで「 https://xxx.xxx.xx.xxx:64297 」と入力します。

今回はFireFoxを使用しました。

ブラウザで 警告: 潜在的なセキュリティリスクありと表示されますが、気にせず「詳細情報」から「危険性を承知で続行」を押します。

するとログインが求められるのでtpodをインストールした際のユーザ名とパスワードでログインします。

ログインし、以下のような画面がでれば構築は完了です!

最後に

今回は構築編を書かせていただきました。

次回はどんな攻撃が来たか、簡単にまとめてみたいと思います。

みなさんも構築してハニーポッターになってください!

アバター画像
About Nakaya 4 Articles
2021年サイオステクノロジーに新卒入社。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

5人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる