Mach-O
Mach-O とは何ですか?
Mach-OMach-O は macOS・iOS・watchOS・tvOS が使用する実行ファイル、オブジェクト、共有ライブラリのネイティブ形式で、Apple のツールチェインが生成する。
Mach-O(Mach Object)は、macOS・iOS・watchOS・tvOS など Apple の OS が用いるバイナリ形式です。Mach-O ファイルはヘッダー、セグメントを記述する load command、ダイナミックリンカー情報、シンボルテーブル、コード署名ブロブを含みます。Universal(fat)バイナリは x86_64 や arm64 など複数アーキテクチャ向けスライスをひとつにまとめます。セキュリティ観点では、AMFI や Gatekeeper による署名要件、Hardened Runtime のエンタイトルメント、Notarization メタデータを担う形式です。マルウェア解析者は load command、組み込みの LC_CODE_SIGNATURE、dyld の挙動を調べ、インジェクション・dylib hijacking・改ざんを検出します。
● 例
- 01
otool -l と codesign --display で悪意のある .app バンドルを調べ、改ざんされた LC_CODE_SIGNATURE を検出する。
- 02
未署名の Mach-O に対して DYLD_INSERT_LIBRARIES を使い、悪意のある dylib をロードする攻撃。
● よくある質問
Mach-O とは何ですか?
Mach-O は macOS・iOS・watchOS・tvOS が使用する実行ファイル、オブジェクト、共有ライブラリのネイティブ形式で、Apple のツールチェインが生成する。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
Mach-O とはどういう意味ですか?
Mach-O は macOS・iOS・watchOS・tvOS が使用する実行ファイル、オブジェクト、共有ライブラリのネイティブ形式で、Apple のツールチェインが生成する。
Mach-O はどのように機能しますか?
Mach-O(Mach Object)は、macOS・iOS・watchOS・tvOS など Apple の OS が用いるバイナリ形式です。Mach-O ファイルはヘッダー、セグメントを記述する load command、ダイナミックリンカー情報、シンボルテーブル、コード署名ブロブを含みます。Universal(fat)バイナリは x86_64 や arm64 など複数アーキテクチャ向けスライスをひとつにまとめます。セキュリティ観点では、AMFI や Gatekeeper による署名要件、Hardened Runtime のエンタイトルメント、Notarization メタデータを担う形式です。マルウェア解析者は load command、組み込みの LC_CODE_SIGNATURE、dyld の挙動を調べ、インジェクション・dylib hijacking・改ざんを検出します。
Mach-O からどのように防御しますか?
Mach-O に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
Mach-O の別名は何ですか?
一般的な別名: Mach Object, Mach-O バイナリ。
● 関連用語
- appsec№ 373
ELF バイナリ形式
Linux・BSD など System V Unix 系で標準的に用いられる実行ファイル・オブジェクト・共有ライブラリのバイナリ形式 Executable and Linkable Format。
- appsec№ 809
PE 実行ファイル形式
Portable Executable は Windows で .exe・.dll・.sys・.ocx などに使われるバイナリ形式で、旧来の COFF オブジェクト形式から派生している。
- attacks№ 331
DLL ハイジャック
Windows の DLL 検索順序を悪用し、正規プログラムに本来とは異なる攻撃者制御のライブラリを読み込ませる攻撃。
- forensics-ir№ 650
マルウェア解析
悪性検体を構造的に調査し、機能・出所・侵害指標・影響を把握するフォレンジック作業。
- forensics-ir№ 926
リバースエンジニアリング
コンパイル済みのソフトウェア、ファームウェア、ハードウェアを逆アセンブル・解析し、その設計、挙動、内部動作を復元する作業。