ハニーポッドにハマったのは僕かお前か

·
#CLI#Terminal#Hetzner#Cloudflare

前回の記事でcowrieを設置した。XX番ポートを開けた瞬間から攻撃が来るとは思っていたが、まさかここまでとは思っていなかった。設置した当日から世界中のボットが押し寄せてきて、気づいたら一日中ログを眺めていた。ハニーポッドにハマったのは僕なのか、それとも攻撃者なのか。

攻撃者の全貌

まず攻撃してきたIPをまとめてみた。

grep -a "New connection" var/log/cowrie/cowrie.log | \
  grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | \
  sort | uniq -c | sort -rn

結果はこうだった。

18 89.167.108.250
 5 52.159.244.83
 5 45.148.10.192
 4 20.51.198.195
 4 165.154.12.139

IPの所在を調べるために一括で叩いてみた。

for ip in 89.167.108.250 52.159.244.83 45.148.10.192 20.51.198.195 165.154.12.139; do
  echo "=== $ip ==="
  curl -s https://ipinfo.io/$ip | jq '{ip, city, country, org}'
  echo ""
done
接続回数IP都市組織
18回89.167.108.250Helsinki 🇫🇮Hetzner Online GmbH
5回52.159.244.83San Jose 🇺🇸Microsoft Corporation
5回45.148.10.192Amsterdam 🇳🇱TECHOFF SRV LIMITED
4回20.51.198.195Washington 🇺🇸Microsoft Corporation
4回165.154.12.139Dubai 🇦🇪UCLOUD (香港)

一番多い18回がなんと同じHetznerのサーバーからだ。自分のサーバーと同じプロバイダー・同じヘルシンキのデータセンターから攻撃されている。HetznerはVPSが安くて匿名で借りやすいので攻撃者にも人気らしい。MicrosoftのAzureが2つのIPで合計9回来ているのも面白い。

試されたパスワードが面白い

cat var/log/cowrie/cowrie.json | \
  jq 'select(.eventid == "cowrie.login.failed") | .password' | \
  sort | uniq -c | sort -rn

結果を見て驚いた。

6 "123456"
5 "password1"
5 "password"
5 "admin123"
5 "12345678"
4 "welcome"
4 "root123"
...
2 "solana"
2 "sol"
1 "trade-bot"
1 "telegramapi"
1 "ethereum"
1 "eth"
1 "dogecoin"
1 "btc"
1 "sniper"
1 "evm"

2つのグループに明確に分かれている。

定番の弱いパスワード組123456passwordadmin123 など典型的な辞書攻撃だ。世界中で使われているボットのパスワードリストそのままである。

暗号資産関連が面白い。solanaethereumbtcdogecointrade-botsniperevmtelegramapi など、明らかに暗号資産の自動取引botを狙っている。VPSで取引botを動かしているサーバーを探して暗号資産を盗もうとしているわけだ。ハニーポットのホスト名を prod-db01 にしたのが効いたのかもしれない。

ルーマニアのやつが特にしつこかった

92.118.39.92(ルーマニア・UNMANAGED LTD)が特に印象的だった。3分おきに規則正しく来て、暗号資産関連のパスワードを順番に試し続けた。

login attempt [b'root'/b'dogecoin'] succeeded  ← cowrieが通してあげた
CMD: /bin/./uname -s -v -n -r -m
Connection lost after 0.3 seconds

login attempt [b'root'/b'trade'] succeeded
CMD: /bin/./uname -s -v -n -r -m
Connection lost after 0.4 seconds

cowrieが「どうぞどうぞ」とログインさせてあげているのだが、/bin/./uname という書き方が面白い。らしい…通常は uname/bin/uname と書くところをわざわざ /bin/./uname と書いている。セキュリティツールの検知を回避しようとするテクニックだ。と、Claudeは興奮冷めやまない感じだった。

さらに調べると SSH-2.0-Go(Go言語製の攻撃ツール)を使っていて、HASSHフィンガープリントが 16443846184eafde36765c9bab2f4397 で固定されていた。別のIP 2.57.122.208 も全く同じフィンガープリントを持っていたので、同一の攻撃者が複数のサーバーから攻撃している可能性が高い。

本物のSSHにも来ていた

ハニーポットだけでなく本物のSSHにも攻撃が来ていた。43.110.36.191(Alibaba Cloud・Los Angeles)が adminpiansiblevagrantnvidiasteam など定番ユーザー名で片っ端から試していた。

sudo lastb | head -20
teamspea ssh:notty    43.110.36.191    Wed Feb 25 01:26
admin    ssh:notty    43.110.36.191    Wed Feb 25 01:26
httpadmi ssh:notty    43.110.36.191    Wed Feb 25 01:25
pi       ssh:notty    43.110.36.191    Wed Feb 25 01:24
...

fail2banが59回の失敗を検知してBanした。しかし「already banned」と表示されてもなお攻撃を続けてきたので、ufwで永久Banした。

sudo ufw deny from 43.110.36.191 to any

インターネットってそういうものだった

今回一番学んだのは、IPアドレスを公開した瞬間から攻撃が始まるということだ。人間が操作しているわけではなく、世界中に無数のスクリプトが24時間365日ひたすらスキャンし続けている。

攻撃が来ても怖くないのは、きちんとした設定があるからだ。

  • パスワード認証無効(鍵認証のみ)
  • fail2ban(3回失敗で1時間Ban)
  • ハニーポットで攻撃者を観察

これらが全部機能しているのをリアルタイムのログで確認できたのは大きな収穫だった。セキュリティの勉強として始めたハニーポットだったが、気づいたら一日中ログを眺めていた。完全にハマった。