ハニーポット分析のための基本ツール群
Attack Map
- 目的: ハニーポットへの攻撃をリアルタイムに視覚化する
- 使い道:
- 世界地図上で攻撃元の国や地域を確認する
- 攻撃の頻度やパターンをリアルタイムで把握する
- どのサービスが狙われているかを視覚的に分析する
- 使い方:
- クリックするとWebベースの攻撃マップが開く
- 攻撃元IP、国、プロトコル(SSH, HTTP, SMBなど)を確認できる
CyberChef
- 目的: データのエンコード・デコード、解析、フォレンジック
- 使い道:
- Base64やHexのデコード/エンコード
- ハッシュ値(SHA256, MD5)の計算
- XOR解析やROT13デコード
- URLデコードや正規表現でのテキスト抽出
- 使い方:
- Dionaeaで捕獲したマルウェアのハッシュ値を計算し、VirusTotalでチェックする
- 攻撃者が送ってきたエンコードされたペイロードをデコードして中身を解析する
- SSHやTelnetのログに含まれる不審な文字列を解析する
Elasticvue
- 目的: ElasticsearchのデータをGUIで簡単に管理・検索する
- 使い道:
- Elasticsearchに保存されたDionaeaやCowrieのログを直接検索する
- Kibanaを使わずにElasticsearchのインデックスを閲覧する
- JSON形式のログをフィルタリングして可視化する
- 使い方:
dionaea-*
のインデックスを直接検索し、攻撃データを確認するremote_host
(攻撃元IP)ごとの攻撃数を集計する- JSON形式でログデータを直接取得し、外部ツールで解析する
Kibana
- 目的: Elasticsearchのデータを可視化・分析する
- 使い道:
- ログの時系列分析(どの時間帯に攻撃が多いか)
- IPアドレスごとの攻撃回数のランキング表示
- 攻撃元の国別ヒートマップの作成
- Dionaeaのマルウェアダウンロード履歴の分析
- 使い方:
Discover
でdionaea-*
のインデックスを検索するAdd Panel
から攻撃IPのランキングや時系列ヒストグラムを作成する- バイナリのハッシュをElasticsearchに入れれば、マルウェアの種類ごとの統計も作れる
Spiderfoot
- 目的: OSINT(オープンソース情報収集)を自動化する
- 使い道:
- 攻撃元IPアドレスの詳細情報を調査する(AS番号、国、ブラックリスト情報)
- ドメインの関連情報(Whois、DNSレコード、サブドメイン)を収集する
- ダークウェブや公開されたクレデンシャルリーク情報をチェックする
- 使い方:
- DionaeaやCowrieが記録した攻撃元IPをSpiderfootに入力し、そのIPがブラックリストに載っているか、どの国のどのISPが管理しているかを分析する
- 攻撃者が使用したドメインのサブドメインを探索し、C2サーバーの可能性があるかを確認する
ツール間の関係性
KibanaとElasticvue
Kibanaを使わずにデータを扱いたいなら、Elasticvueを使うのが一番簡単。攻撃元のIPやDionaeaでキャプチャしたマルウェアのログを直接検索できる。
Kibanaは、Elasticvueのデータをきれいに表示してるだけ、Elasticvueの中のデータのみ触れる。
なので、新しいテーブルとか作りたいなって思ったら、Elasticvueで検索して、そのIDで新しくKibanaできれいにみる
概要分析
- ダッシュボード内に表示される情報(ネットの記事でも一番多い例)
- パスワードのワードクラウド
- ユーザー名のワードクラウド
- 各ハニーポットに対する攻撃回数
- 場所と国に関する情報
- 上位 10 件の送信元 IP アドレス (つまり、ハニーポットと最も多くやり取りした IP アドレス)
- 攻撃者のIP
- しかし、cowrie にダウンロードされたバイナリに関する情報や、報告された奇妙な動作も得られるのに、それらについての分析は行われていないことが多い
深堀分析
同じIPアドレスでarchの違いが示唆する攻撃の特徴
- 攻撃者が異なるデバイスや環境から接続している
攻撃者がSSHボットネットを運用している場合、複数の異なる端末から同時に接続することがある。
たとえば、仮想マシン、Docker、コンテナ、エミュレーターを利用している可能性がある。linux-powerpc64-lsb
は、PowerPCのLinux環境を示し、仮想マシンやエミュレーションの可能性がある。bsd-riscv64-lsb
は、BSDベースのRISC-V環境を示し、IoTデバイスの可能性がある。
IPアドレスが同じでも、実際には異なる物理マシンや仮想環境から接続しているため、異なるアーキテクチャが記録される。- 同じグローバルIPでボットネットの可能性はあるのか?
- 通常、ボットネットは分散型であるため、同じグローバルIPからの攻撃はボットネットとは言いにくい。しかし、以下のような状況では、同じIPから複数の異なる攻撃が発生することがある。
- プロキシやVPN経由の攻撃
- 攻撃者が一つのVPNやプロキシを経由して、複数のマシンを同じIPで外部に接続している可能性がある。
- Google CloudやAWS、AzureなどのVPSでは、複数の仮想マシンが同じアウトバウンドIPを共有することがある。
- 実際、ログの geoip_ext.as_org に GOOGLE-CLOUD-PLATFORM とあるため、Google CloudのVPSを使っている可能性が高い。
- 攻撃者が"arch"を偽装している
一部の攻撃ツール(特にSSHブルートフォースボット)は、検知を回避するために"arch"の値をランダムに変更することがある。
たとえば、ssh -o SendEnv=ARCH
のように、SSHクライアントの環境変数を偽装できる。
これにより、ログ上では異なるアーキテクチャから接続されたように見えるが、実際は同じマシンである可能性もある。 - 攻撃者がエージェントを使用している
攻撃者がプロキシや踏み台サーバーを使って攻撃を行っている場合、元の攻撃者の環境ではなく、踏み台サーバーのOSやアーキテクチャが記録される。
たとえば、踏み台サーバーがLinux-PowerPCのシステムで、別の踏み台サーバーがBSD-RISC-Vのシステムなら、それぞれのアーキテクチャが記録される。
セッションIDを使った分析
- "session" ID をチェック
ログ内の"session": "ad20736ab18d"
と"session": "46227238f554"
が異なっているため、Cowrieは別々のSSHセッションとして記録している。
session
が異なるなら、攻撃者が異なるSSH接続を試みている可能性が高い。
IPアドレスの詳細分析(AS番号、地理情報など)
既知の IP アドレスとその他すべての IP アドレスの比率
-
Attacker Src IP Reputationを見る。
-
Attacker Src IP Reputationの種類
- known attacker
- 過去に悪意のある活動が確認されたIP。
- 既に 脅威インテリジェンスデータベース(Threat Intelligence DB) に登録されている攻撃者のIP。
- 典型的には、SSHブルートフォース、スパム、DDoS攻撃、マルウェア配布 などの活動が確認されたIPが含まれる。
- mass scaner
- インターネット全体をスキャンしているIP
masscan
、zmap
などの高速スキャナーを使用し、大量のホストに対してポートスキャンを実行- Censys、Shodan、Shadowserverのような セキュリティリサーチ企業 のスキャナーも含まれる。
- form spammer
- ウェブサイトのフォームやコメント欄にスパムを投稿するボット
- WordPressやJoomlaなどのCMSのフォームを狙い、広告やフィッシングリンクを埋め込もうとする。
- bot,crawler
- 自動化されたウェブクローラーやボットのIP
- 善意のもの(Googlebot、Bingbot)と悪意のもの(Miraiボット、スパイウェアボット)がある。
- tor exit node
- Torネットワークの出口ノードとして利用されているIP
- 攻撃者が 匿名性を確保するためにTorを利用して攻撃を行うことがある。
- Torを使用しているため、攻撃者の実際のIPアドレスは隠されている。
- 例: TorノードからのSSHブルートフォース攻撃や、ウェブアプリへの攻撃。
- TorネットワークのIPアドレスリストと照合し、自動的に分類される。
- known attacker
-
例えば、既知の攻撃者よりもTorや匿名化ノードのやり取りが少ない(より注目すべき)など
-
ダッシュボードを強化する
- 表示数を 1000 に増やす
- geoip.as_org.keyword
- geoip.city_name.keyword
- ip.rep.keyword
侵害の兆候(IoC)の分析
- IoC : ネットワークまたはデバイス上で確認されると、システムへの不正アクセスの可能性が高まるアクション
- 攻撃の兆候を得るために、別のバケットを追加する
- alert.cve_id.keyword
- T-pot 上で実行されているSuricata侵入検知システムによって検出された CVE と IP アドレスを関連付ける
- CVEの分析と、どんなことをしようとしていたのかの分析
コマンドの分析
- 実際にシェルを得た攻撃者がどんなことをしようとしているのかの分析
- Kibana上で、入力されたコマンドをまとめるには、「input.keyword」で新しくテーブルを作る
- ElasticvueでKibanaと同じようにまとめたい時
- Kibanaだと、10000件までしか扱えなくて、本当に面白いみんなが実行しないようなコマンドを洗い出せないから、全部集める必要がある。
- custom searchで以下で検索しても結局elasticsearchが10000件までしか処理できないから、直接ログを全件保存してあるものをハニーポットから直接抜いてくるしかない。
ブラウザのsshで行う
cd tpotce/data/cowrie/log
# 1) .gz を zcat で展開し、すべて連結して "all_1_30.json" に保存
zcat cowrie.json.{1..30}.gz > all_1_30.json
# 2) 必要に応じて再度 gz 圧縮
gzip all_1_30.json
# これで all_15_30.json.gz が作成され、まとめてログを格納
/home/honeypot_trap_1/tpotce/data/cowrie/log/all_1_30.json.gz
をダウンロード
それぞれのハニーポットの分析時のポイント
Cowrie
Cowrieは、ttylog というものを吐き出す
- Kibana上で、入力されたコマンドをまとめるには、「input.keyword」で新しくテーブルを作る
- ttylog : 攻撃者の **TTYセッション(端末操作ログ)を記録したファイルのパス
log/tty/
ディレクトリの下にあるログファイルに、攻撃者の シェル操作(キーストローク、コマンド入力など)が保存されている。
- このログを確認すると、攻撃者が何をしようとしたのかがわかる。
- 分析の時は、sshで接続して、catかcowrie-logviewer(CowrieにはTtylogを再生するツール)を使う
cat /data/cowrie/log/tty/...
cowrie-logviewer /data/cowrie/log/tty/...
Dionaea
Dionaeaは /opt/dionaea/var/dionaea/binaries/
にダウンロードされたマルウェアを保存する。
- sshで接続して、アクセスして確認する
- バイナリのハッシュを計算して、VirusTotalでチェックする
find /opt/dionaea/var/dionaea/binaries/ -type f -exec sha256sum {} \; > malware_hashes.txt