皆さん、こんにちは!ネットワークセキュリティの世界へようこそ。
技術メディア「サイバーの深淵」主筆ライターのサイバー・ゼロです。
突然ですが、皆さんの会社やご自宅のPC、共有フォルダは安全だと自信を持って言えますか?
「うちは大丈夫だろう」と思っているその裏で、ランサムウェアが虎視眈々とあなたのデータ、会社の機密情報を狙っているかもしれません。
今回は、そんなランサムウェアが共有フォルダのファイルを「爆速で暗号化」する瞬間を、ネットワークの奥深く、パケットの動きから見つけ出す方法を、インフラやネットワークに初めて触れる皆さんにも分かりやすく、郵便配達の例えを交えながら徹底解説していきます。
小難しい専門用語は極力避け、一歩ずつ理解を深めていきましょう!
—
狙われる共有フォルダ!ランサムウェアの脅威とSMBプロトコル
まずは、なぜランサムウェアが共有フォルダを狙うのか、その背景から見ていきましょう。
企業で働く皆さんなら、きっと共有フォルダを使った経験があるはずです。部署内で資料を共有したり、プロジェクトの進捗を管理したり、本当に便利ですよね。この共有フォルダへのアクセスを可能にしているのが、主にWindows環境で使われるSMB(Server Message Block)プロトコルという通信のお約束事なんです。
このSMBプロトコルは、ファイルやプリンターの共有など、Windowsネットワークの根幹を支える非常に重要な仕組み。まさに、会社やチームの「情報共有の心臓部」と言えるでしょう。
しかし、その便利さゆえに、ランサムウェアの格好の標的にもなってしまいます。もしランサムウェアがPCに侵入し、そのPCからアクセスできる共有フォルダのファイルを暗号化されてしまったら…想像するだけでも恐ろしいですよね。
ランサムウェアは、侵入後、ネットワークを徘徊してアクセス可能な共有フォルダを見つけ出し、そこにあるファイルを高速で暗号化していきます。この「高速暗号化」の際に、ネットワーク上では非常に特徴的なパケットの動きが見られます。
今回はこの「特徴的なパケットの動き」を、どう見つけ出し、どう防御に繋げるか、そのコツを掴んでいきましょう!
—
SMBプロトコルって、そもそも何?(郵便配達に例えてみよう!)
SMBプロトコルの話に入る前に、まずは「プロトコル」という言葉から、グッと身近な例で理解を深めてみましょう。
皆さんが誰かに手紙を送る時を想像してください。
1. 手紙を書き、封筒に入れる。
2. 封筒に相手の住所と自分の住所、そして切手を貼る。
3. 郵便ポストに入れる。
4. 郵便配達員が受け取り、相手の家まで届ける。
この一連の流れには、「手紙は封筒に入れる」「住所を書く」「切手を貼る」といった、いくつかのお約束事(ルール)がありますよね。もし住所が間違っていたり、切手が貼ってなかったら、手紙は相手に届きません。
ネットワークの世界でも全く同じです。
コンピューター同士がデータをやり取りする際にも、「どのような形式でデータを送るか」「相手をどう識別するか」といった、様々なお約束事(ルール)が必要です。これが「プロトコル」と呼ばれるものなんです。
そして、SMBプロトコルは、まさに「共有フォルダやプリンターを利用するための郵便配達ルール」のようなものだと考えてください。
- あなた: ファイルを使いたいPC
- 共有フォルダ: 郵便局の私書箱(みんなが使える場所)
- SMBプロトコル: 郵便配達員と郵便局のルールブック
あなたが共有フォルダにあるファイルを開いたり、編集したり、保存したりするたびに、このSMBプロトコルというルールに則って、コンピューター間でデータのやり取りが行われているんですよ。
—
ランサムウェアはSMBをどう使うのか?(高速暗号化の舞台裏)
さて、いよいよ本題です。ランサムウェアが共有フォルダのファイルを暗号化する際、SMBプロトコルを使ってどんな通信をするのでしょうか?
ランサムウェアが行うのは、基本的に次の3ステップです。
1. ファイルを開く(読み込むため)
2. ファイルの内容を暗号化して書き込む
3. ファイルを閉じる
これを、共有フォルダに対するSMB通信の視点から見ていきましょう。
1. 共有フォルダへの接続要求(郵便局の入り口へ!)
まず、ランサムウェアが共有フォルダにアクセスしようとすると、最初に「この共有フォルダを使わせてほしい!」という接続要求を出します。
これがSMBプロトコルでは主にTree Connect(ツリーコネクト)というコマンドに該当します。
これは、郵便局に入って「私書箱を使わせてください!」とお願いするようなもの。接続が許可されれば、いよいよファイルの操作が可能になります。
2. ファイルを開く、または作成する要求(新しい封筒ちょうだい!)
次に、ランサムウェアは共有フォルダ内のファイルを一つずつ暗号化していきます。この時、ファイルを開くためにCreate Request(クリエイトリクエスト)というコマンドを使います。
「いやいや、暗号化するなら既存のファイルを開くだけでしょ?なぜCreate(作成)なの?」と思われるかもしれませんね。
実はSMBプロトコルにおけるCreate Requestは、「ファイルを開く」と同時に「そのファイルに対してどんな操作をしたいか(読み書きしたいのか、ただ開くだけか)」といった権限も一緒に要求する、非常に多機能なコマンドなんです。
ランサムウェアは、既存のファイルを「読み込みと書き込み」の権限で開こうとする際に、このCreate Requestを使用します。これは、郵便局で「この手紙の内容を書き換えたいから、この封筒を開ける権利をちょうだい!」と要求するようなイメージです。
3. ファイルの内容を書き換える要求(手紙の内容を書き換えて!)
ファイルを開くことができたら、いよいよ暗号化されたデータを書き込みます。この操作はWrite Request(ライトリクエスト)というコマンドで行われます。
ランサムウェアは、元のファイルの中身を読み込み、それを暗号化してから、元のファイルに上書きする形で暗号化済みのデータを書き込みます。これは、手紙の中身を全く別の意味不明な文字列に書き換えて、元の封筒に戻すようなものですね。
4. ファイルを閉じる要求(書き換え終わったよ、封して!)
書き込みが終われば、そのファイルを閉じます。これはClose Request(クローズリクエスト)というコマンドです。
一つのファイルの暗号化が完了したら、すぐに次のファイルへと移り、この「開く→書き込む→閉じる」という一連のサイクルを猛烈なスピードで繰り返していきます。
—
異常なパケット頻度とパターン検知(忍び寄るランサムウェアの足音を聞き取れ!)
さて、ランサムウェアがSMBプロトコルを使ってファイルを暗号化する流れを見てきましたが、ここで「異常なパケット頻度とパターン」について考えてみましょう。
普通のユーザーが共有フォルダを使う場合、どうでしょうか?
- あるファイルを「開いて」数分〜数十分かけて編集し、「保存して閉じる」。
- 別のファイルを「開いて」内容を確認し、「閉じる」。
- たまに新しいファイルを「作成して」保存する。
といったように、ファイル操作は比較的ゆっくりで、一つ一つのファイルに対して時間をかけて行われることが多いですよね。
しかし、ランサムウェアの場合は全く違います。
「開く(Create Request)→書き込む(Write Request)→閉じる(Close Request)」という一連の操作を、異常な速さで、大量のファイルに対して、次から次へと連続して実行します。
これはまるで、郵便局で「新しい封筒をちょうだい!」「手紙の内容を書き換えて!」「封筒を閉じて!」という作業を、1秒間に何十回、何百回も、異なるファイルに対して猛烈な勢いで繰り返しているようなものです。しかも、その手紙の内容は、すべて読めない暗号文に書き換えられている、というわけです。
このような「異常な高速ファイル操作サイクル」を、ネットワークを流れるパケットから見つけ出すことができれば、ランサムウェアによる被害を早期に発見し、拡大を防ぐことができる可能性が高まります。
何を監視すればいいの?
特に注目すべきは、以下のSMBコマンドの組み合わせと頻度です。
Create Request(ファイルを開く、または作成する)Write Request(ファイルに書き込む)Close Request(ファイルを閉じる)
これらのコマンドが、特定の送信元IPアドレスから、極めて短い時間内に、大量の異なるファイルに対して連続して実行されている場合、それはランサムウェアの活動である可能性が非常に高いと判断できます。
—
ネットワークレベルでの防御策(見張り番を立てよう!)
では、このようなランサムウェアの「足音」をネットワークレベルでどうやって聞き取るか、具体的な防御策を見ていきましょう。
1. パケットキャプチャと解析で「見える化」しよう!
まずは、実際にネットワークを流れるパケットを見てみることが第一歩です。
「パケットキャプチャ」と呼ばれる方法で、ネットワーク通信を記録・解析するツールを使います。
Wiresharkでパケットを覗いてみよう!
皆さんも聞いたことがあるかもしれませんが、Wireshark(ワイヤーシャーク)というツールが非常に有名で、無料で使えます。これは、ネットワークを流れるすべてのパケットを「見える化」してくれる、まさに「パケットの目視確認ツール」です。
初心者の方でも、まずは自分のPCと共有フォルダ間の通信をキャプチャして、どんなパケットが流れているのかを体験してみるのがおすすめです。
Wiresharkの簡単な使い方(イメージ):
1. Wiresharkを起動し、自分のPCが使っているネットワークインターフェース(Wi-Fiや有線LAN)を選択してキャプチャを開始します。
2. 共有フォルダにアクセスし、ファイルを開いたり、編集して保存したり、新しいファイルを作成したりしてみます。
3. キャプチャを停止します。
4. フィルターバーに smb と入力してEnterを押すと、SMB関連のパケットだけが表示されます。
すると、そこにはTree Connect Andx RequestやCreate Request、Write Request、Close Requestといった見慣れないけど、先ほど説明したコマンド名が見つかるはずです!
もし、何らかの理由でランサムウェアが活動しているPCの通信をキャプチャできた場合、このCreate RequestやWrite Requestが、異常な頻度で、ものすごい勢いでリストに表示されるはずです。その「異常さ」を自分の目で確認することが、理解への大きな一歩となります。
2. IDS/IPSで「自動検知・自動防御」の仕組みを導入しよう!
IDS(Intrusion Detection System:侵入検知システム)やIPS(Intrusion Prevention System:侵入防御システム)は、ネットワークを流れるパケットを常に監視し、不審な動きを検知したり、場合によっては通信を遮断したりする「ネットワークの見張り番」です。
IDS/IPSには、あらかじめ「どんな動きが怪しいか」というルール(シグネチャ)を設定しておきます。ランサムウェアの高速暗号化のような異常なSMBトラフィックを検知するためのルールを設定することで、自動的に警告を発したり、通信をブロックしたりすることが可能になります。
Suricata(スリカータ)を例にしたルール設定のヒント
オープンソースのIDS/IPSであるSuricata(スリカータ)を例に、ランサムウェアのSMB暗号化を検知するためのルール設定の考え方を見てみましょう。
Suricataのルールは、非常に柔軟に設定できます。SMBプロトコル内の特定のコマンドの実行頻度を監視するようなルールを作成できます。
# Suricataのルール例:SMB共有に対する異常な書き込み頻度を検知する
# これはあくまで概念的な例であり、環境に合わせて調整が必要です。
# SMBのTree Connect要求を監視し、接続元IPを記録
alert smb any any -> any any (msg:"SMB: Tree Connect to shared folder detected"; flow:to_server; smb.command:SMB_COM_TREE_CONNECT_ANDX; sid:2000001; rev:1;)
# SMBのCreate Request(ファイルオープン)を監視し、書き込み権限付きのオープンを記録
# このルールでは、書き込み権限 (FILE_WRITE_DATA) を持つCreate Requestを特に注目します。
alert smb any any -> any any (msg:"SMB: File Create/Open with Write Access detected"; flow:to_server; smb.command:SMB_COM_NT_CREATE_ANDX; smb.access.write:true; sid:2000002; rev:1;)
# SMBのWrite Request(ファイル書き込み)を監視
alert smb any any -> any any (msg:"SMB: File Write Request detected"; flow:to_server; smb.command:SMB_COM_WRITE_ANDX; sid:2000003; rev:1;)
# SMBのClose Request(ファイルクローズ)を監視
alert smb any any -> any any (msg:"SMB: File Close Request detected"; flow:to_server; smb.command:SMB_COM_CLOSE; sid:2000004; rev:1;)
# 【重要】ランサムウェア検知のためのしきい値ベースルール (Threshold-based Rule) の概念
# 以下のルールはSuricataの'threshold'キーワードを使って、一定時間内のイベント数を監視する例です。
# 実際にはより高度な設定が必要ですが、概念を理解してください。
# 5秒間に同じIPアドレスから20回以上のSMBファイル書き込み(Write Request)があった場合にアラート
alert smb any any -> any any (msg:"SMB: Potential Ransomware Activity - High Volume File Writes"; flow:to_server; smb.command:SMB_COM_WRITE_ANDX; threshold: type limit, track by_src, count 20, seconds 5; sid:2000005; rev:1;)
# 解説:
# - `msg`: アラートメッセージ
# - `flow:to_server`: クライアントからサーバーへの通信を監視
# - `smb.command:SMB_COM_WRITE_ANDX`: SMBの書き込みコマンドをターゲット
# - `threshold: type limit, track by_src, count 20, seconds 5`:
# - `type limit`: しきい値を超えたらアラート
# - `track by_src`: 送信元IPアドレスごとにイベント数を追跡
# - `count 20`: 20回以上のイベント
# - `seconds 5`: 5秒以内
# つまり、「同じ送信元IPから5秒以内に20回以上のSMB書き込みがあったらアラート」という意味です。
# 5秒間に同じIPアドレスから30回以上のSMBファイルオープン(Create Request)があった場合にアラート
alert smb any any -> any any (msg:"SMB: Potential Ransomware Activity - High Volume File Opens"; flow:to_server; smb.command:SMB_COM_NT_CREATE_ANDX; smb.access.write:true; threshold: type limit, track by_src, count 30, seconds 5; sid:2000006; rev:1;)
# 解説:
# - `smb.access.write:true`: 特に書き込み権限を要求するオープンに限定することで、より悪意のある操作を特定しやすくします。
# - `count 30`: 書き込みよりもオープンの方が頻繁に行われる可能性があるため、閾値を調整。
# 連続するCreate RequestとWrite Requestのシーケンスを検知する(より高度なStatefulルール)
# このようなルールはSuricataのflowbitやstateful inspection機能を使って実現されますが、
# ここでは概念として「開いてすぐに書き込む」というパターンを監視するイメージを示します。
# 実際のルールはより複雑になります。
# alert smb any any -> any any (msg:"SMB: Ransomware-like Create-Write Sequence"; flow:to_server; smb.command:SMB_COM_NT_CREATE_ANDX; smb.access.write:true; flowbits:set,smb.create_write_start; sid:2000007; rev:1;)
# alert smb any any -> any any (msg:"SMB: Ransomware-like Create-Write Sequence - Write Detected"; flow:to_server; smb.command:SMB_COM_WRITE_ANDX; flowbits:isset,smb.create_write_start; flowbits:unset,smb.create_write_start; sid:2000008; rev:1;)
上記のルールは、あくまで概念的なものですが、重要なのは「特定のコマンドが、どれくらいの頻度で、誰から誰へ、どれくらいの時間内に実行されているか」という視点で監視することです。
最初はcountやsecondsの値を調整しながら、普段の正常な通信でアラートが出ないように、かつ異常な動きを捉えられるようにチューニングしていく必要があります。これは、まさに「泥臭い現場の知恵」が活きる部分ですね!
3. SIEM/ログ管理で「点と線」を繋げよう!
SIEM(Security Information and Event Management:統合ログ管理システム)は、様々な機器(PC、サーバー、ネットワーク機器、IDS/IPSなど)から集められたログを一元的に管理し、分析するシステムです。
もしIDS/IPSが異常なSMBトラフィックを検知したとして、それが本当にランサムウェアなのかどうかを判断するには、そのPCの認証ログ(誰がいつログインしたか)や、他のアプリケーションのログなど、複数の情報を組み合わせる必要があります。
SIEMは、これらのバラバラの情報を「点」として集め、それらを関連付けて「線」として繋げることで、より高度な脅威検知やインシデント分析を可能にします。
例えば、
- 特定のPCから異常なSMB書き込みが検知された(IDS/IPSログ)
- そのPCには、普段使わないユーザーが深夜にログインしていた(Windowsイベントログ)
- その直前に、不審なメール添付ファイルが開かれていた(メールサーバーログやプロキシログ)
といった複数の情報を組み合わせることで、「これはランサムウェアだ!」という確信度を高めることができるわけです。
—
まとめ:SMBの足音を聞き取り、一歩先を行く防御を!
今回は、SMBプロトコルとランサムウェアの関係、そしてその異常なパケットの動きをどう検知するかについて、郵便配達の例えを交えながら解説してきました。
まとめると、ランサムウェアは共有フォルダのファイルを暗号化する際、
Tree Connectで共有に接続Create Requestでファイルを高速で開きWrite Requestで暗号化データを書き込みClose Requestでファイルを閉じる
というサイクルを、異常な頻度と速度で繰り返し行います。
この特徴的な動きを、Wiresharkで「見て」、IDS/IPSで「自動検知・防御」し、SIEMで「多角的に分析」することで、皆さんの大切な情報資産を守る防御力を格段に高めることができます。
ネットワークセキュリティは、常に進化する脅威とのイタチごっこですが、今回学んだように、パケットの動き一つ一つに「意味」を見出し、その異常を捉えることができれば、必ず一歩先の防御策を講じることができます。
今日から皆さんも、ネットワークの見張り番として、パケットの足音に耳を傾けてみてください。
きっと、新たな発見があるはずです!
これからも一緒に、サイバーセキュリティの深淵を探求していきましょう。
次回もお楽しみに!
コメント