T1045 - Software Packing
概要
Software packing is a method of compressing or encrypting an executable. Packing an executable changes the file signature in an attempt to avoid signature-based detection. Most decompression techniques decompress the executable code in memory.
Utilities used to perform software packing are called packers. Example packers are MPRESS and UPX. A more comprehensive list of known packers is available, (Citation: Wikipedia Exe Compression) but adversaries may create their own packing techniques that do not leave the same artifacts as well-known packers to evade defenses.
Adversaries may use virtual machine software protection as a form of software packing to protect their code. Virtual machine software protection translates an executable's original code into a special format that only a special virtual machine can run. A virtual machine is then called to run this code.(Citation: ESET FinFisher Jan 2018)
管理者によるコメント
T1045(Software Packing:ソフトウェアパッキング)は、T1027(難読化)のサブセットとも言えますが、特に「実行ファイルを圧縮・暗号化して包み込む(パックする)」ことに特化した技術です。
1. 概要
Software Packingとは、マルウェアの実行コードを「パッカー」と呼ばれるツールで圧縮または暗号化し、別の実行ファイル(スタブ)の中に隠す手法です。
攻撃者が実現できること
- 静的解析の無効化: ファイルをバイナリエディタで開いても、本来のコードは圧縮・暗号化されているため、文字列(Strings)やインポート関数を確認できません。
- シグネチャ検知の回避: 元のマルウェアのハッシュ値や特徴的なコードパターンが隠れるため、既存のアンチウイルスソフトをすり抜けます。
- リバースエンジニアリングの妨害: 解析者がコードを読み解く前に、まず「アンパック(展開)」という高度な手順を踏ませることで、解析時間を大幅に引き延ばします。
2. 攻撃の流れ
- パッキングの実行: 攻撃者は完成したマルウェア(例:RAT)をパッカー(UPX, MPRESS, Themidaなど)にかけます。
- 構造の変化: 元のコードはデータ領域に押し込められ、ファイルの先頭には「展開用コード(スタブ)」が配置されます。
- 実行時の展開: ユーザーがファイルを実行すると、まずスタブが起動し、メモリ上で元のコードを解凍・復号します。
- 制御の移行: 展開が終わると、スタブはメモリ上の元のエントリポイント(OEP)へ処理を飛ばし、マルウェア本体が動作を開始します。
3. 防御・対策
- 既知のパッカーの検知: セキュリティ製品で、UPXなどの一般的なパッカーで固められた実行ファイルを「不審」として検知・隔離します。
- 動的メモリ解析: コードが実行され、メモリ上で「展開」された後の状態をスキャンして検知します(EDRの得意分野です)。
- エントロピー確認: パックされたファイルはデータが凝縮されているため、統計的にランダム性が非常に高くなります。この「高いエントロピー」を持つ実行ファイルを異常とみなします。
- サンドボックス解析: 実際に実行させてみて、展開後にどのような挙動(通信、ファイル作成)を行うかを確認します。
4. 重要ポイント
- 「中身を隠す箱」: 配送中は中身が見えない箱に入れ、目的地(メモリ)に到着してから箱を開けて中身を取り出すイメージです。
- アンチデバッグ・アンチVM: 高度なパッカーには、解析環境(仮想マシンやデバッガ)を検知すると自爆したり動作を止めたりする機能が備わっていることが多いです。
5. 関連する主なCWE
- CWE-506 (Embedded Malicious Code): 埋め込まれた悪意あるコード。パッカーによって隠蔽されたペイロードがこれに該当します。
- CWE-327 (Use of a Broken or Risky Cryptographic Algorithm): パッカーが独自の暗号化を使用している場合、そのアルゴリズムの特異性が逆に検知のヒントになることがあります。
6. 関連する代表的なCVE
T1045自体は攻撃の「包装」技術であるため、特定の脆弱性を指すものではありません。しかし、多くのマルウェアがこの手法を標準装備しています。
- UPX (Ultimate Packer for eXecutables): 最も有名なパッカーです。正規の用途も多いですが、多くのマルウェア(Miraiなど)が検知回避のために悪用します。
- Themida / VMProtect: 非常に強力な商用プロテクター。リバースエンジニアリングを極めて困難にするため、高度な標的型攻撃(APT)でよく使用されます。
- CVE-2023-38831 (WinRARの脆弱性): このような脆弱性を通じて配布される悪意あるアーカイブ内の実行ファイルが、T1045によってパッキングされているケースが非常に多いです。
分析
この攻撃手法を利用する脅威アクター
関連する CVE
攻撃手法 – 脅威アクター Graph
← Technique一覧に戻る
← Tactics一覧に戻る