Adversaries may establish persistence by executing malicious content triggered by the execution of tainted binaries. Mach-O binaries have a series of headers that are used to
perform certain operations when a binary is loaded. The LC_LOAD_DYLIB header in a Mach-O binary tells macOS and OS X which dynamic libraries (dylibs) to load during execution
time. These can be added ad-hoc to the compiled binary as long as adjustments are made to the rest of the fields and dependencies.[1]
There are tools available to perform these changes.
攻撃者は、汚染されたバイナリの実行をトリガーとして悪意のあるコンテンツを実行することにより、永続性を確立することがあります。Mach-Oバイナリは、バイナリがロードされる際に特定の操作を行うために使用される一連のヘッダを持っています。Mach-OバイナリのLC_LOAD_DYLIBヘッダは、実行時にロードするダイナミックライブラリ(dylibs)をmacOSとOS
Xに通知します。これらは、残りのフィールドと依存関係を調整することで、コンパイル済みのバイナリにアドホックに追加することができます[1]。これらの変更を行うためのツールがあります。
Adversaries may modify Mach-O binary headers to load and execute malicious dylibs every time the binary is executed. Although any changes will invalidate digital signatures on binaries because the binary is being modified, this can be remediated by simply removing the LC_CODE_SIGNATURE command from the binary so that the signature isn’t checked at load time.[2]
ID | Mitigation | Description |
---|---|---|
M1047 | Audit |
Binaries can also be baselined for what dynamic libraries they require, and if an app requires a new dynamic library that wasn\u2019t included as part of an update, it should be investigated. |
M1045 | Code Signing |
Enforce that all binaries be signed by the correct Apple Developer IDs. |
M1038 | Execution Prevention |
Allow applications via known hashes. |
ID | Data Source | Data Component | Detects |
---|---|---|---|
DS0017 | Command | Command Execution |
Monitor executed commands and arguments that may establish persistence by executing malicious content triggered by the execution of tainted binaries. |
DS0022 | File | File Metadata |
Changes to binaries that do not line up with application updates or patches are also extremely suspicious. |
File Modification |
Monitor file systems for changes to application binaries and invalid checksums/signatures. |
||
DS0011 | Module | Module Load |
Monitor DLL/PE file events, specifically creation of these binary files as well as the loading of DLLs into processes. Look for DLLs that are not recognized or not normally loaded into a process. |
DS0009 | Process | Process Creation |
Monitor processes for those that may be used to modify binary headers. |