Skip to main content

MachO

Supported formats

Mach-O

Description

Mach-O (Mach Object) files are the native binary format for executables, object code, and shared libraries in macOS and iOS operating systems. They are used by Apple's operating systems to run programs, and they function similarly to other executable formats like ELF (used in Linux/Unix) and PE (used in Windows). This backend extracts information from Mach-O files for further inspection.

info

Available in Contextal Platform 1.0 and later.

Symbols

This backend doesn't assign any symbols.

Example Metadata

{
"org": "ctx",
"object_id": "15d1afca780e2ea6ffec8c4862a3401e003b5e79ce5f9076b4eea4ab599bc4ce",
"object_type": "MachO",
"object_subtype": "LE64",
"recursion_level": 1,
"size": 20257888,
"hashes": {
"sha1": "a7c58c071996942fe7880d0dbb9475291245de8c",
"sha256": "15d1afca780e2ea6ffec8c4862a3401e003b5e79ce5f9076b4eea4ab599bc4ce",
"md5": "67105c73b8a7ee319417aff902c9c015",
"sha512": "8d507f21d49fe32085611ec7b688fb1d4d44a6a7b8cd561b427c3a0a4ce93636d92f383e49e37eba18f1eab122e3ee00e2ae67e346e1761fe39eb82e4d7228c9"
},
"ctime": 1726694928.02313,
"ok": {
"symbols": [
"INFECTED",
"INFECTED-CLAM-Osx.Infostealer.MacStealer-9998763-0"
],
"object_metadata": {
"_backend_version": "1.0.0",
"load_cmds": [
{
"cmd": 25,
"cmdsize": 72,
"cmdstr": "SEGMENT_64"
},
[...]
{
"cmd": 29,
"cmdsize": 16,
"cmdstr": "CODE_SIGNATURE"
}
],
"macho_header": {
"cpusubtype": 3,
"cputype": 16777223,
"cputypestr": "X86_64",
"filetype": 2,
"filetypestr": "EXECUTE",
"flags": 2195589,
"flagsvec": [
"NOUNDEFS",
"DYLDLINK",
"TWOLEVEL",
"WEAK_DEFINES",
"BINDS_TO_WEAK",
"PIE"
],
"magic": 4277009103,
"ncmds": 19,
"sizeofcmds": 1920
},
"sections": [
{
"addr": 4294971296,
"align": 4,
"flags": 2147484672,
"nreloc": 0,
"offset": 4000,
"reloff": 0,
"reserved1": 0,
"reserved2": 0,
"reserved3": 0,
"sectname": "__text",
"segname": "__TEXT",
"size": 13088298
},
[...]
{
"addr": 4308451328,
"align": 0,
"flags": 0,
"nreloc": 0,
"offset": 13189120,
"reloff": 0,
"reserved1": 0,
"reserved2": 0,
"reserved3": 0,
"sectname": "constants",
"segname": "constants",
"size": 5824942
}
],
"segment_cmds": [
{
"fileoff": 0,
"filesize": 0,
"flags": 0,
"initprot": 0,
"maxprot": 0,
"nsects": 0,
"segname": "__PAGEZERO",
"vmaddr": 0,
"vmsize": 4294967296
},
[...]
{
"fileoff": 19021824,
"filesize": 1236064,
"flags": 0,
"initprot": 1,
"maxprot": 1,
"nsects": 0,
"segname": "__LINKEDIT",
"vmaddr": 4314284032,
"vmsize": 1245184
}
]
},
"children": []
}
}

Example Queries

object_type == "MachO"
&& @match_object_meta($macho_header.cputypestr == "X86_64")
&& @has_symbol("INFECTED")
  • This query matches a MachO object containing code for X86_64 and detected as infected.

Configuration Options

This backend doesn't use any dedicated options.