← 一覧へ戻る

Claude が書いた記事

ランサムは暗号化の前に何をするか ── 素 Ubuntu のふるまい検知を kill chain で組む

「Falco と Wazuh、ふるまい検知できるのはどっち?」から始めた学習ログ。現代のランサムは暗号化の前に潜伏してデータを抜く。その段取り (kill chain) を並べると、どの挙動をどの無料ツールで見張るかが決まる。

俺の最初の疑問

自宅の Linux サーバーに FalcoWazuh agent を入れようとしていた。最初の疑問はシンプルで、「ふるまい検知ができるのはどっち?」だった

きっかけは、日本企業や病院がランサムウェアに大量にやられている現状を知ったこと。自分のサーバーでも「root でログインされた」「普段は絶対に触らんファイルにアクセスがあった」みたいなおかしな挙動を検知したいと思った。

調べ始めてすぐ、問いの立て方を一段ずらすことになった。「どっちのツールか」より先に「そもそもランサムはどんな順番で攻めてくるのか」を知らないと、ツールは選べない。やられ方の型が先、対策の実行が後。その順で潰した記録。

まず一言でいうと

ツールの話の前に、現代のランサムの正体を 1 行で。

今のランサムは「侵入したら即暗号化」やない。人間のオペレーターが何日も潜伏し、暗号化の前にデータを抜いてから、最後に暗号化する。

human-operated ransomware ── 人手で操作する標的型ランサム。自動でばらまく旧来型と違い、攻撃者が手で環境を調べ、横に広げ、段取りを踏む。侵入から暗号化まで数日〜数週間の潜伏 (dwell time) がある。
二重恐喝 (double extortion) ── 「暗号化して使えなくする」+「盗んだデータをバラすぞ」の二段構え。データの抜き取りが暗号化より先に来るのはこのため。バックアップで復旧できても、抜かれたデータの公開は止められない。

つまり暗号化は攻撃の最後の 1 手で、その前に長い「いろいろやられる」フェーズがある。そしてそれはほぼ型が決まっている。業界ではこの段取りを kill chain、あるいは MITRE ATT&CK のフェーズで整理する (これが事実上の共通言語)。

何と比べるとわかるか

「昔のランサム」と並べると、なぜ潜伏フェーズを見張る必要があるかがわかる。

旧来のばらまき型現代の human-operated
侵入後すぐ暗号化数日〜数週間 潜伏する
データ暗号化するだけ暗号化の前に外へ抜く (二重恐喝)
操作自動・無差別人手で標的に合わせて操作
気づける窓ほぼ無い (一瞬)潜伏中ずっとある ← ここを見張る

旧来型なら検知しても手遅れだが、現代型は潜伏している間ずっと気づくチャンスがある。だから「暗号化を検知する」のではなく、その手前の段取りの挙動を検知するのが本筋になる。

何が問題なのか

ここで最初の疑問 ──「ふるまい検知できるのは Falco か Wazuh か」── に戻る。答えは 「片方やない。挙動の種類でツールが割れる」

理由は一点、挙動がログに残るかどうか

HIDS (Host-based IDS) ── ホスト 1 台に入れて、ログ・ファイル・設定の異常を見る侵入検知の仕組み。Wazuh はこの代表格。残った痕跡 (ログ・ファイル変化) を突き合わせるのが土俵。
FIM (File Integrity Monitoring) ── ファイルが書き換えられた / 改ざんされたのを検知する仕組み。Wazuh の主力機能の一つ。注意点は、「読まれた」は守備範囲の外寄りだということ (改ざん検知なので)。
  • Wazuh … ログ・FIM・設定診断の HIDS/var/log/auth.log を解析して「root の成功ログイン」を拾うのは得意。ログに痕跡が残る挙動の担当。
  • Falcosyscall (システムコール) を eBPF でリアルタイムに覗く。「ファイルを開いた」「shell が立った」を、ログに残らなくてもその瞬間に拾える。ログに残らない生の挙動の担当。

俺が最初に挙げた 2 つの例も、きれいに割れる。

検知したい挙動担当なぜ
root でログインされたWazuh認証は auth.log に残る。ログ解析が本職
普段触らんファイルにアクセスFalco「読んだだけ」はログに残らない。syscall を見る Falco でしか取れない

「ふるまい検知 = Falco 一択」でも「Wazuh だけで十分」でもない。kill chain のどのフェーズを見張るかで、担当が決まる

図で見る

侵入から暗号化までの 10 段。各段の「ログに残るか」で、見張る道具 (Wazuh / Falco / ネットワーク型) が決まる。

上から下へ攻撃が進む。#1〜#9 が暗号化の前の潜伏 (dwell time)、#10 が発火 (暗号化)。各段の右が見張る道具:ログに残る #1・#3・#5・#8 は Wazuh (インディゴ)、ログに残らない生挙動 #2・#6・#7 は Falco (オレンジ)、外向き通信の抜き取り #9 は Suricata (ティール)。⚠ のチョークポイント (#5 防御の無効化・#6 認証情報の窃取・#9 抜き取り) は、攻撃者がほぼ必ず通り、正常運用ではまず起きない段。ここを重点的に見張れば、少ない監視で早く気づける。

この図の肝は 「ログに残る?」で色が分かれていること。点で「root ログイン」「ファイルアクセス」と 2 個見ていたのを、#1〜#10 の線に並べ替えると、どこに目を置けば早く気づくかが一望できる。

混乱しやすいポイント

俺が実際に取り違えていた点。

① 「ふるまい検知=Falco」と短絡しない

Falco はリアルタイム挙動の本職だが、ログに残るふるまい (ログイン・永続化・横展開) は Wazuh の方が素直auditd を Wazuh に連携させれば「どのコマンドが実行されたか」もルールで拾える。「ふるまいの痕跡をログで見る Wazuh」と「ふるまいそのものを syscall で見る Falco」 の対比が正確。

② FIM は「書き換え」は見るが「読み取り」は見ない

Wazuh の FIM はファイル改ざんの検知。だから #6 の「/etc/shadow読まれた」は基本すり抜ける。読み取りを捕まえたいなら Falco の syscall (open / openat) か、Wazuh FIM を auditd 連携の whodata モードで動かす。「FIM を入れたから読み取りも安心」は誤解。

③ 防御 = 検知だけやない (むしろ予防が先)

Falco も Wazuh も 「入られた後に気づく」検知側の道具。でもランサムは早い段で止めるのが一番安い。素 Ubuntu なら、検知を盛る前にまず予防層を固めるのが筋。

役割無料 OSS の定番kill chain の対応
予防 (止める)SSH 総当たりを遮断fail2ban#1 初期侵入
予防 (止める)入口・外向きを絞るufw / nftables#1 / #9
予防 (止める)プロセスを箱に閉じるAppArmor (Ubuntu 標準の LSM)#4 / #6
予防 (止める)穴を塞ぐunattended-upgrades#1
検知 (気づく)リアルタイム挙動Falco / Tetragon / Tracee#2 / #6 / #10
検知 (気づく)ログ・FIM・集約Wazuh / OSSEC / AIDE#1 / #3 / #5
検知 (気づく)外向き通信Suricata / Zeek#9 抜き取り
調査 (追跡)入られた後の状態を聞くosquery / Velociraptor全般
LSM (Linux Security Module) ── カーネルに用意された、プロセスの権限を強制的に縛る土台。AppArmor や SELinux はこの上に乗る。AppArmor は Ubuntu 標準で既に動いていて、プロファイルを書けば「このプロセスはこのファイルしか触れない」を強制できる ── #4 権限昇格・#6 窃取を予防側で潰す手。

④ Falco の代わりに「止める」道具もある

Falco は基本 「アラートを上げるだけ」。挙動を その場でブロック したいなら Tetragon (Cilium 系・eBPF) が enforcement までやる。「想定外プロセスが /etc/shadow を開いたら kill」のような自動遮断が要るならこっち。検知だけなら Falco、止めたいなら Tetragon が分岐点。

⑤ 「無料」は機能が削られてるわけやない ── ただしタダではない

ここまでの道具は全部、自己ホストで 全機能が使える本物の OSS。商用 EDR の体験版みたいに「無料版は検知ルールが削られてる」罠はない。

ツールライセンス自己ホストで全機能補足
FalcoApache 2.0 (CNCF 卒業)完全無料
WazuhGPLv2ソフトは全無料。Wazuh Cloud (任意・有料) は運用代行
TetragonApache 2.0enforcement (止める) も無料版に入ってる
TraceeApache 2.0完全無料
fail2banGPLv2完全無料
ufw / nftablesGPLUbuntu に同梱
AppArmorGPLUbuntu 標準で既に動いてる
unattended-upgradesGPL同梱
Suricata / ZeekGPLv2 / BSD完全無料
OSSEC / AIDE / SamhainGPL完全無料
osqueryApache 2.0無料。管理 UI の Fleet に有料枠あり (osquery 本体は無料)
LynisGPLv3CLI は全無料。Lynis Enterprise (任意・有料) あり
Velociraptorオープンソース・無料Rapid7 が商用版も提供。OSS 版は無料 (正確なライセンス版は公式で確認推奨)

たとえ話

kill chain は空き巣の動線に近い。

  • 塀・鍵・センサーライト (fail2ban・ufw・AppArmor) = そもそも入らせない予防
  • 家の中の動きを見る人感センサー (Falco) = 侵入後、リアルタイムに動きを捕まえる
  • 玄関の防犯カメラ録画 (Wazuh のログ・FIM) = 誰がいつ入って何を触ったかを記録・集約する台帳。
  • 塀の外への持ち出しを見る通りのカメラ (Suricata) = 盗品を運び出す瞬間を捉える。

どれか 1 つやなく、動線のどこを誰が見るかを割り当てるのが防御。そして空き巣と同じで、一番安いのは塀と鍵 (予防) で、家に入られてから気づくのは次善。

実話で当ててみる ── HTTP PUT → proxy → マイニング

抽象的な #1〜#10 を、現に起きたことに結びつけておく。俺は前に Ubuntu サーバーを 1 台乗っ取られたことがある。やられ方はこうだった ── HTTP PUT で何かを設置されてコマンドを実行され、その後どこかの proxy server へ通信させられ、最後に仮想通貨のマイニングを install された。当時は監視を何も入れていなかったので、全部素通りした。これを上の kill chain と道具に当てるとこうなる。

起きたことkill chain の段本命の道具どう捕まえるか
HTTP PUT で何か設置#1 初期侵入 + #2 足場 (webshell)Wazuh / Suricataaccess.log の異常な PUT・webshell の署名
コマンドを実行させられた#2 / #7Falcoweb サーバー (www-data) が sh・curl を起動 = Falco の看板ルール
proxy server へ通信#9 外向き (C2)Suricata想定外の外向き接続・既知 proxy / C2 宛の署名
マイナーを install#2 / #10Wazuh FIM / ClamAV新規バイナリが /tmp 等に出現 → drop して即実行
マイニング稼働 (CPU 張り付き)#10Suricata / osqueryマイニングプール宛の Stratum 通信・既知プール IP

MITRE ATT&CK で並べると T1190 (公開アプリ悪用) → T1505.003 (Web Shell) → T1090 (Proxy) → T1496 (Resource Hijacking) ── 既知の手口がそのまま並んでいる。

このチェーンが検知向きなのは、攻撃が派手な挙動を何度も出すからだ。web サーバーが子プロセスに sh / curl を産むのは正常運用ではまず起きない (Falco の看板)。外部 proxy やマイニングプールへの通信には署名がある (Suricata)。新規バイナリの出現は FIM が拾う (Wazuh)。どれか 1 つ外しても別が鳴る ── これが kill chain を多層で見張る意味だ。当時は何も入れていなかったから素通りしたが、この構成なら遅くとも「www-data が shell を起動」か「採掘プールへの通信」のどちらかで火を噴く。

出てきた言葉の変換表

言葉つまり何の話?
kill chain侵入から目的達成までの攻撃の段取り。各段を見張れば早く気づける
MITRE ATT&CK攻撃手口を体系化した共通言語。kill chain の各段に技法 ID が振られている
human-operated ransomware人手で潜伏・操作する標的型ランサム。即暗号化の旧来型と別物
二重恐喝 (double extortion)暗号化+データ暴露の二段脅迫。抜き取りが暗号化より先に来る
dwell time侵入してから発見されるまでの潜伏期間。ここが気づける窓
Falcosyscall を eBPF でリアルタイムに見るふるまい検知。ログに残らない生挙動の担当
Wazuhログ・FIM・設定診断の HIDS。痕跡をログで突き合わせ、集約する台帳
HIDS / FIMホスト型侵入検知 / ファイル改ざん検知。FIM は読み取りは見ない
auditdLinux 標準の監査ログ。Wazuh と連携してコマンド実行を拾える
TetragoneBPF で検知して「その場で止める」(enforcement) までやる Falco の対抗馬
AppArmorUbuntu 標準の LSM。プロセスを「触れるファイル」で縛る予防
Suricata / Zeekネットワーク型 IDS。ホスト型で弱い外向き通信 (抜き取り) を見る
次に答える、設計者の問い で、それがなんやねん?

kill chain の各段に道具を貼れた。次は設計者として「で、自分のサーバーでは検知して人間が動くのか、検知してその場で止めるのか?」。

  • Falco (気づく) で止めるか、Tetragon (止める) で自動遮断するか、即答できるか。 判断軸は「誤検知で正常運用を巻き込むリスク × 夜中のアラートに動ける人がいるか」。常時無人の自宅サーバーなら自動で止める寄り、止めたら困るサービスが乗っていれば気づく寄り。
  • 責任境界:予防 (fail2ban・AppArmor が攻撃を入れない) と検知 (Falco・Wazuh が入った後に気づく) の、どこまでをどっちで担保するか線を引けるか。 「予防で塞いだつもり」と「検知で見てるつもり」の隙間に穴が空く。

これに答えられると強い ── ツールを並べるだけでなく、kill chain のどこを予防で潰しどこを検知に任せるか、責任の線を引いて防御を設計できる側に立てる。

深掘りメニュー 次におすすめのトピック
  • Falco vs Tetragon ── 検知だけか「その場で止める (enforcement)」か。eBPF で挙動をブロックする一歩。上の SoWhat の二択を実際に手で確かめる。
  • Suricata / Zeek で抜き取りを見る ── ホスト型で弱い #9 (外向き通信) をネットワーク型で埋める。二重恐喝の窃取に気づく最後の砦。
  • AppArmor プロファイルを書く ── Ubuntu 標準の LSM で「このプロセスはこのファイルしか触れない」を強制し、#4 / #6 を予防側で潰す。
  • MITRE ATT&CK を読む ── kill chain の各段に対応する技法 ID と検知のヒント。型の解像度を一段上げる。
  • Falco の検知を Wazuh に集約 ── 2 つの検知を 1 つの台帳にまとめ、アラートを一元管理する構成。