ハニーポッドにハマったのは僕かお前か
前回の記事で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.250 | Helsinki 🇫🇮 | Hetzner Online GmbH |
| 5回 | 52.159.244.83 | San Jose 🇺🇸 | Microsoft Corporation |
| 5回 | 45.148.10.192 | Amsterdam 🇳🇱 | TECHOFF SRV LIMITED |
| 4回 | 20.51.198.195 | Washington 🇺🇸 | Microsoft Corporation |
| 4回 | 165.154.12.139 | Dubai 🇦🇪 | 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つのグループに明確に分かれている。
定番の弱いパスワード組は 123456、password、admin123 など典型的な辞書攻撃だ。世界中で使われているボットのパスワードリストそのままである。
暗号資産関連が面白い。solana、ethereum、btc、dogecoin、trade-bot、sniper、evm、telegramapi など、明らかに暗号資産の自動取引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)が admin、pi、ansible、vagrant、nvidia、steam など定番ユーザー名で片っ端から試していた。
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)
- ハニーポットで攻撃者を観察
これらが全部機能しているのをリアルタイムのログで確認できたのは大きな収穫だった。セキュリティの勉強として始めたハニーポットだったが、気づいたら一日中ログを眺めていた。完全にハマった。