こんにちは!セキュリティの現場で日々、見えない敵と戦っているSOCアナリストです。
今日は、ハッカーたちが好んで使う少しずる賢いテクニック「Process Hollowing(プロセス・ハロウィング)」について、お話ししようと思います。
名前だけ聞くと難しそうですよね。でも、身近な例え話で考えると、その「悪意」の正体がとてもクリアに見えてくるはずです。一緒に紐解いていきましょう!
—
1. Process Hollowingって何?「泥棒のすり替わり」作戦
想像してみてください。あなたは自分の家の玄関に「信頼できる宅配業者さん」を入れました。ところが、その業者が家に入った瞬間、姿を消し、中身が「泥棒」に入れ替わっていたらどうでしょう?
これがコンピュータの世界で行われる「Process Hollowing」です。
1. 正規のプロセスを起動: まず、Windowsの計算機(calc.exe)など、誰もが怪しまない「信頼できるプログラム」をわざと起動させます。
2. 中身を空っぽにする: 攻撃者はそのプログラムのメモリ領域を一時停止させ、中身を抜き取って「空っぽ」の状態にします。
3. 悪意あるコードを注入: その「空っぽの箱」の中に、自分たちが用意した「悪意あるプログラム(バックドアなど)」を流し込みます。
4. 再開: 何食わぬ顔でプログラムを再開させます。
外から見れば「ただの計算機が動いているだけ」に見えるため、ウイルス対策ソフトも騙されやすい……これが彼らの狙いです。
—
2. なぜバレるのか?「VAD属性」というボロ
彼らがどんなに巧妙に振る舞っても、一つだけ隠せない「ボロ」があります。それがVAD(Virtual Address Descriptor)の不整合です。
VADというのは、Windowsが「このプログラムのメモリのこの場所は、何のために使っているのか(読み込み専用なのか、実行可能なのか)」を管理している「お品書き」のようなものです。
本来、計算機のようなプログラムのメモリには、明確なルールがあります。しかし、攻撃者が無理やりコードをねじ込むと、このお品書きに「おや? 本来あるはずのない『実行権限』が、書き換え可能な領域についているぞ?」という矛盾が生じます。
これが、僕たちフォレンジックのプロが真っ先にチェックする「足跡」になるんです。
—
3. 実践:メモリ上の不整合を検知するヒント
もし皆さんがサーバや端末のメモリを調査するなら、Volatiltyというツールを使うのが一般的です。ここでは、そんな調査の勘所を少しだけコード(Python風の概念図)で紹介しますね。
# メモリフォレンジックにおけるVAD検査のイメージ
# 実際にはVolatilityなどのツールを使いますが、概念はこんな感じです
def check_vad_integrity(process_memory_map):
for entry in process_memory_map:
# 1. 領域の属性を確認
# PAGE_EXECUTE_READWRITE (0x40) は要注意!
# 通常のプログラムで「書き込み」と「実行」が同時に許可されることは稀です
if entry.protection == "PAGE_EXECUTE_READWRITE":
print(f"[!] 警告: 不審な実行権限を発見: {entry.address}")
# 2. ファイル名との照合
# メモリ上のコードなのに、ディスク上のファイルと紐付いていない領域がないか確認
if entry.is_mapped_file == False and entry.is_executable == True:
print(f"[!] 警告: ファイルに紐付かない実行領域を発見。ハロウィングの可能性大!")
# これを検知することで、隠れた泥棒を見つけることができます。
なぜこれが重要なの?
もし皆さんが開発者なら、自社アプリケーションが「なぜそんなに広いメモリ権限を要求しているのか?」を意識してみてください。例えば、JavaScriptのeval()関数のように、動的にコードを実行する仕組みは便利ですが、これこそが「悪意あるコードを後から注入できる隙」にもなり得るのです。
—
4. 最後に:セキュリティは「疑う」ことから始まる
Process Hollowingのような高度な攻撃は、一見すると防ぎようがないように思えるかもしれません。でも、忘れないでください。「攻撃者は必ず、何らかの痕跡を残す」ということを。
- プログラムの挙動を監視する: 突然、計算機が外部と通信し始めたら怪しいと思いませんか?
- ログを溜める: 異常なプロセス起動の履歴は、後から必ず役に立ちます。
最初は難しく感じるかもしれませんが、「このプログラムは、本当にこの動作をしていいんだっけ?」と一歩立ち止まって考える習慣こそが、最強の防御の第一歩になります。
もし皆さんの環境で「何か怪しい挙動があるな」と感じたら、ぜひこの記事のチェックポイントを思い出してみてください。現場の第一線で戦う皆さんの力になれたら嬉しいです。
それでは、また次回のセキュリティ・ラボでお会いしましょう!
コメント