💨

EC2でT-Pot動かしてみた

2024/07/27に公開

はじめに

昨年のSECCONに参加して「ハニーポット観測から見えたサイバー攻撃の実態」という内容を聴講させていただき、自分でもhoneypot運用してみたくて、T-PotをAWS上で動かしてみました。
T-Potは公式説明は以下の通りで、さまざまなhoneypotが全部入りして、可視化ツールもセットで入るので分析しやすく、docker imageが用意されているので導入も簡単です。
arm64もサポートしているので、Gravitonで動かすことも可能となっています。

T-Pot is the all in one, optionally distributed, multiarch (amd64, arm64) honeypot plattform, supporting 20+ honeypots and countless visualization options using the Elastic Stack, animated live attack maps and lots of security tools to further improve the deception experience.

環境準備

AWS account

外部からの攻撃を積極的に受け付けることになるので、honeypotを独立したアカウントで運用することにしました。
honeypotの請求を区別できるようにしておきたかったことと、何かセキュリティインシデントが発生したときに他のアカウントへの影響を防ぎたかったこと、運用が終わったら諸々破棄したかったこともあってアカウントを分けることにしました。

Budget

また、乗っ取られてクラウド破産しないように、被害を早めに気付けるよう予算を1日$6で設定しました。

Security Group

外部からの攻撃を受け付ける必要があるので、公式サイトのRequire PortsをもとにSecurity Groupでポートを許可しました。
T-Pot Managementと記載れているポートに関してはMyIpからのアクセスのみを許可することで、管理コンソールへの侵入リスクを減らしました。

CloudFormation

SecurityGroupの構成は以下の通りです。AMyIpAddressは自身のIPAddressを設定してください。

Resources:
  MyHoneypotSg:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "sg for honeypot"
      GroupName: "my-honeypot-sg"
      SecurityGroupIngress:
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 8080
        ToPort: 8080
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 8080
        ToPort: 8080
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 1025
        ToPort: 1025
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 1025
        ToPort: 1025
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 8090
        ToPort: 8090
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 8090
        ToPort: 8090
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 1883
        ToPort: 1883
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 1883
        ToPort: 1883
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 3389
        ToPort: 3389
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 3389
        ToPort: 3389
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 445
        ToPort: 445
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 445
        ToPort: 445
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 1521
        ToPort: 1521
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 1521
        ToPort: 1521
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 23
        ToPort: 23
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 23
        ToPort: 23
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 5555
        ToPort: 5555
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 5555
        ToPort: 5555
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 10001
        ToPort: 10001
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 10001
        ToPort: 10001
      - CidrIp: "MyIpAddress/32"
        IpProtocol: "tcp"
        FromPort: 64297
        ToPort: 64297
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 9100
        ToPort: 9100
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 9100
        ToPort: 9100
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 5000
        ToPort: 5000
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 5000
        ToPort: 5000
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 502
        ToPort: 502
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 502
        ToPort: 502
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 5432
        ToPort: 5432
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 5432
        ToPort: 5432
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 623
        ToPort: 623
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 623
        ToPort: 623
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 1723
        ToPort: 1723
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 1723
        ToPort: 1723
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 5900
        ToPort: 5900
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 5900
        ToPort: 5900
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 8443
        ToPort: 8443
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 8443
        ToPort: 8443
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 123
        ToPort: 123
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 123
        ToPort: 123
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 443
        ToPort: 443
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 443
        ToPort: 443
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 47808
        ToPort: 47808
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 47808
        ToPort: 47808
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 11112
        ToPort: 11112
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 11112
        ToPort: 11112
      - CidrIp: "MyIpAddress/32"
        IpProtocol: "tcp"
        FromPort: 22
        ToPort: 22
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 44818
        ToPort: 44818
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 44818
        ToPort: 44818
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 5060
        ToPort: 5060
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 5060
        ToPort: 5060
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 8081
        ToPort: 8081
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 8081
        ToPort: 8081
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 6667
        ToPort: 6667
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 6667
        ToPort: 6667
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 1080
        ToPort: 1080
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 1080
        ToPort: 1080
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 2575
        ToPort: 2575
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 2575
        ToPort: 2575
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 143
        ToPort: 143
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 143
        ToPort: 143
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 53
        ToPort: 53
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 53
        ToPort: 53
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 2404
        ToPort: 2404
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 2404
        ToPort: 2404
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 11211
        ToPort: 11211
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 11211
        ToPort: 11211
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 50100
        ToPort: 50100
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 50100
        ToPort: 50100
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 5060
        ToPort: 5060
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 5060
        ToPort: 5060
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 102
        ToPort: 102
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 102
        ToPort: 102
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 19
        ToPort: 19
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 19
        ToPort: 19
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 110
        ToPort: 110
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 110
        ToPort: 110
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 21
        ToPort: 21
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 21
        ToPort: 21
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 6379
        ToPort: 6379
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 6379
        ToPort: 6379
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 25
        ToPort: 25
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 25
        ToPort: 25
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 1900
        ToPort: 1900
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 1900
        ToPort: 1900
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 135
        ToPort: 135
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 135
        ToPort: 135
      - CidrIp: "MyIpAddress/32"
        IpProtocol: "tcp"
        FromPort: 64294
        ToPort: 64294
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 9200
        ToPort: 9200
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 9200
        ToPort: 9200
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 1433
        ToPort: 1433
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 1433
        ToPort: 1433
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 80
        ToPort: 80
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 80
        ToPort: 80
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 631
        ToPort: 631
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 631
        ToPort: 631
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 42
        ToPort: 42
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 42
        ToPort: 42
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 389
        ToPort: 389
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 389
        ToPort: 389
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 161
        ToPort: 161
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 161
        ToPort: 161
      - CidrIp: "MyIpAddress/32"
        IpProtocol: "tcp"
        FromPort: 64295
        ToPort: 64295
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 25565
        ToPort: 25565
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 25565
        ToPort: 25565
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "udp"
        FromPort: 69
        ToPort: 69
      - CidrIpv6: "::/0"
        IpProtocol: "udp"
        FromPort: 69
        ToPort: 69
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "tcp"
        FromPort: 3306
        ToPort: 3306
      - CidrIpv6: "::/0"
        IpProtocol: "tcp"
        FromPort: 3306
        ToPort: 3306
      SecurityGroupEgress:
      - CidrIp: "0.0.0.0/0"
        IpProtocol: "-1"
        FromPort: -1
        ToPort: -1
      - CidrIpv6: "::/0"
        IpProtocol: "-1"
        FromPort: -1
        ToPort: -1

Egressはサボってしまったけど、公式の説明通り絞った方が安全です。

EC2

公式リポジトリに記載されているSystem Requirementsを参考に以下のEC2を構築しました。

# リソース サイズ
1 インスタンスタイプ t4g.xlarge
2 EBS 256[GiB]

Docker Imageが提供されているのだからECSで動かすことも一瞬考えたのですが、ECS不慣れなのもあって変なところで詰まりたくないなと思って今回はEC2を採用しています。

インストール

公式のInstallationを参考に構築しました。

AMIはT-PotがサポートするUbuntuにしておきました。(ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-arm64-server-20240423)

Security GroupでMyIpからのsshを許可してあるので、自マシンからsshでインスタンスにログインします。
dockerとdocker-composeをインストールして、あとは手順をステップバイステップでやっていけば構築完了です。

稼働監視

攻撃の傾向を把握するため、およそ1ヶ月間(6/28-7/27)T-Potを稼働させました。
昨年のSECCONでhoneypotの運用について発表していた方のご説明によると、時期によっても攻撃のパターンは変わって来ると言っていたので、どのくらいの期間取るのがいいのかは良くわかりません。

(1-2週間で止めようと思ってたけど、ブログにまとめる時間がなくて放置した、、、とかではない・・・)

EC2の1ヶ月の稼働状況です。これを見る限り、t4g.largeとかでも全然稼働しそうでした。(CWAgent入れてないので、メモリ消費量まで見ていませんが)

管理画面からさまざまなツールにアクセスできるようになっています。

Attack Map

ほぼリアルタイムで攻撃されている状況を可視化してくれます。これ見てると、1分以内に頻繁にスキャンなどのアクセスがあることがあって面白いです。各国からガンガン来るので、セキュリティ意識が高まりました。

Kibana

kibanaでは各honeypotのログ解析ができるようです。
画像はT-Pot全体のログになります。

2M回攻撃を受け、そのうちおよそ64%(1.5M弱)がDDoS攻撃。26%が脆弱性攻撃。合わせて90%。残り10%が特定のベンダー製品やサービスを狙った攻撃など、さまざまな攻撃を検知しています。

攻撃元の地域を見てみると、中国が23%、米国が20%、香港が18%となっていた。それ以外の国は7%以下の割合で攻撃していました。
中国はポート53の攻撃が82%、ポート123が9%、
米国はポート123の攻撃が61%、ポート53が32%、
香港はポート53が58%、ポート123が42%、
とある通り、攻撃回数上位地域はポート53と123で90%以上を占めています。
攻撃回数4・5位のインドネシアとフィリピンはポート445の攻撃が増えているようでした。
インドネシアはポート53の攻撃が49%、ポート445が48%。
フィリピンはポート445が95%、ポート53が5%。

ユーザネームはsa、admin、rootあたりが多いようです。
OSSや製品のデフォルトユーザ名と思われるIDや非常に単純なIDが攻撃されやすいことが分かります。
パスワードは単純な単語やqwery配列(shiftキー押下状態も含む)をなぞっただけの文字列などが目立っていました。

Billing

今回の環境では毎日$5~6程度かかっていました。
1ヶ月ちょっと運用で$130程度になっていました。

終わりに

AWSでT-Potを構築して攻撃を分析しました。
ポート53,123,445に対する攻撃頻度が高く、中国・米国、香港から頻繁にアクセスされていることが分かりました。
要件に適した構成でAWS上でT-Potをホストすると、毎日$5~6の運用コストがかかります。
ロギング強化したり、セキュリティ系のAWSサービス使って稼働監視したりして、AWSのサービス理解も深めたかったのですが、今回はそこまでできなかったので次回挑戦してみようと思います。

GitHubで編集を提案

Discussion