Access logs
good to know
Although you can choose from multiple formats for audit logs, access logs currently only support JSON formatting.
logga collects three distinct sets of logs:
- Process execution logs, which we simply call
audit logs
. - Authentication, privilege escalation, and other system-related audit logs, which we collectively call access logs.
- Unified logs, which filters & persists requested macOS unified logs.
The list below collects all the authentication, privilege escalation, and other system-related event types that trigger access logging. Please note that the timestamp doesn't indicate when the actual login / auth / etc execution happened but rather when the event was triggered. However, the difference should be only a few milliseconds.
- authentication
- open directory (Open Directory based authentication events)
- touchID (Login or prompt authorization via Touch ID)
- token (Cryptographic Token authentication events)
- auto unlock (automatic unlock by Apple Watch)
- screensharing
- attach (Login via VNC)
- detach (Logout via VNC)
- ssh
- login (Login via ssh)
- logout (Logout via ssh)
- /usr/bin/login
- login (Login via the /usr/bin/login utility)
- logout (Logout via the /usr/bin/login utility)
- su (
su
invocations) - sudo (
sudo
invocations) - LoginWindow (Events via the Login UI)
- lock
- unlock
- login
- logout
- mounting
- mount (Mounting filesystems)
- unmount (Unmounting filesystems)
- kexts
- kextload (Loading Legacy Kernel Extensions)
- kextunload (Unloading Legacy Kernel Extensions)
Log structure
Authentication
The outer keys are common for each authentication log types. The data key different: it stores the exect event details.
{
"log": {
"data": {},
"event": "authentication",
"success": true,
"type": "od"
"timestamp": "2023-09-17T21:26:04.716Z"
}
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
Always authentication
for authentication events.
success - bool
Whether the authentication event was successful.
type - string
Values: od
, token
, touchID
, auto unlock
, unknown
data - object
Different content based on the event types. See the next section for examples.
Example authentication payloads
Open Directory event
{
"log": {
"data": {
"db_path": "/var/db/dslocal/nodes//Default",
"instigator": {
"audit_token": {
"auid": 501,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 40591,
"uid": 0,
"username": "root"
},
"executable": "/System/Library/Frameworks/Security.framework/Versions/A/MachServices/authorizationhost.bundle/Contents/MacOS/authorizationhost",
"is_platform_binary": true,
"parent_audit_token": {
"auid": 4294967295,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 1,
"uid": 0,
"username": "root"
},
"responsible_audit_token": {
"auid": 501,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 40591,
"uid": 0,
"username": "root"
},
"session_id": 40591,
"team_id": null,
"timestamp": "2023-09-17T21:26:04.695Z",
"tty": "unknown"
},
"node_name": "/Local/Default",
"record_name": "administrator",
"record_type": "Users"
},
"event": "authentication",
"success": true,
"type": "od"
},
"timestamp": "2023-09-17T21:26:04.716Z"
}
TouchID event
{
"log": {
"data": {
"has_uid": true,
"instigator": {
"audit_token": {
"auid": 4294967295,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 534,
"uid": 0,
"username": "root"
},
"executable": "/System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd",
"is_platform_binary": true,
"parent_audit_token": {
"auid": 4294967295,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 1,
"uid": 0,
"username": "root"
},
"responsible_audit_token": {
"auid": 4294967295,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 534,
"uid": 0,
"username": "root"
},
"session_id": 534,
"team_id": null,
"timestamp": "2023-04-28T17:26:10.683Z",
"tty": "unknown"
},
"mode": "verification",
"uid": 501
},
"event": "authentication",
"success": true,
"type": "touchID"
},
"timestamp": "2023-05-01T20:08:51.192Z"
}
Token event
{
"log": {
"data": {
"instigator": {
"audit_token": {
"auid": 4294967295,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 534,
"uid": 0,
"username": "root"
},
"executable": "/System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd",
"is_platform_binary": true,
"parent_audit_token": {
"auid": 4294967295,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 1,
"uid": 0,
"username": "root"
},
"responsible_audit_token": {
"auid": 4294967295,
"egid": 0,
"euid": 0,
"gid": 0,
"group": "wheel",
"pid": 534,
"uid": 0,
"username": "root"
},
"session_id": 534,
"team_id": null,
"timestamp": "2023-04-28T17:26:10.683Z",
"tty": "unknown"
},
"pubkey_hash": "a6a5f64a4a6a89a7",
"token_id": "123",
"kerberos_principal": "administrator"
},
"event": "authentication",
"success": true,
"type": "token"
},
"timestamp": "2023-05-01T20:08:51.192Z"
}
Auto Unlock event
{
"log": {
"data": {
"type": "machine_unlock_by_apple_watch",
"username": "administrator"
},
"event": "authentication",
"success": false,
"type": "aurhorized_by_apple_watch"
},
"timestamp": "2023-05-02T20:22:15.702Z"
}
Screensharing
Attach
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
auth_type - string
Type of authentication.
auth_username - string
VNC login username.
event - string
screensharing_attach
existing_session - string
True if there was an existing user session.
graphical_session_id - Int
Graphical session id of the screen shared.
session_username - string
Username of the loginwindow session.
source_address - string
Source address of connection.
source_address_type - string
ipv4
or ipv6
success - bool
If the connection was successful.
viewer_apple_id - string
For screen sharing initiated using an Apple ID (e.g., from Messages or FaceTime), this is the viewer's (client's) Apple ID.
Detach
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
screensharing_detach
graphical_session_id - Int
Graphical session id of the screen shared.
source_address - string
Source address of connection.
source_address_type - string
ipv4
or ipv6
viewer_apple_id - string
For screen sharing initiated using an Apple ID (e.g., from Messages or FaceTime), this is the viewer's (client's) Apple ID.
Example Screensharing payloads
Attach
{
"log": {
"auth_type": "DH",
"auth_username": "administrator",
"event": "screensharing_attach",
"existing_session": true,
"graphical_session_id": 257,
"session_username": "administrator",
"source_address": "192.168.1.161",
"source_address_type": "ipv4",
"success": true,
"viewer_apple_id": ""
},
"timestamp": "2023-09-20T21:13:22.055Z"
}
Detach
{
"log": {
"event": "screensharing_detach",
"graphical_session_id": 257,
"source_address": "192.168.1.161",
"source_address_type": "ipv4",
"viewer_apple_id": ""
},
"timestamp": "2023-09-20T21:13:31.537Z"
}
SSH
login
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
openssh_login
has_uid - bool
Describes whether or not the uid of the user logged in is available.
result_type - string
Result type for the login attempt.
source_address - string
Source address of connection.
source_address_type - string
ipv4
or ipv6
success - bool
True if login was successful.
uid - Int
uid of user that was logged in.
username - String
Username used for login.
logout
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
openssh_logout
source_address - string
Source address of connection.
source_address_type - string
ipv4
or ipv6
uid - Int
uid of user that was logged in.
username - String
Username used for login.
Example SSH payloads
openssh login
{
"log": {
"event": "openssh_login",
"has_uid": true,
"result_type": "auth_fail_public_key",
"source_address": "::1",
"source_address_type": "ipv6",
"success": false,
"uid": 501,
"username": "administrator"
},
"timestamp": "2023-03-29T21:15:35.745Z"
}
openssh logout
{
"log": {
"event": "openssh_logout",
"source_address": "::1",
"source_address_type": "ipv6",
"uid": 501,
"username": "administrator"
},
"timestamp": "2023-03-29T21:15:35.745Z"
}
/usr/bin/login
login
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
login
has_uid - bool
Describes whether or not the uid of the user logged in is available.
uid - Int
uid of user that was logged in.
success - bool
Whether the authentication event was successful.
username - String
Username used for login.
failure_message - String
The reason the login failed.
logout
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
logout
uid - Int
uid of user that was logged in.
username - String
Username used for login.
Example /usr/bin/login payloads
Login
{
"log": {
"event": "login",
"failure_message": "",
"has_uid": true,
"success": true,
"uid": 501,
"username": "administrator"
},
"timestamp": "2023-03-29T21:16:08.869Z"
}
logout
{
"log": {
"event": "logout",
"uid": 501,
"username": "administrator"
},
"timestamp": "2023-03-29T21:16:08.869Z"
}
su
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
Always su
for su events.
success - bool
Whether su event was successful.
failure_message - string
If success was false, failure message contains the reason.
from_uid - Int
The uid of the user who initiated the su.
from_username - string
If success was true, the user name that is going to be substituted.
has_to_uid - Int
If success was true, describes whether or not the to_uid is interpretable.
#### to_uid - Int
If success was true, the user ID that is going to be substituted.
to_username - string
If success was true, the user name that is going to be substituted.
shell - string
If success was true, the shell is going to execute.
args - string array
If success was true, the arguments are passed into to the shell.
env - string array
If success was true, list of environment variables that is going to be substituted.
Example su payloads
su event
{
"log": {
"event": "su",
"success": true,
"failure_message": "",
"from_uid": 501,
"from_username": "administrator",
"has_to_uid": true,
"to_uid": 1,
"to_username": "root",
"shell": "bash",
"args": [],
"env": []
},
"timestamp": "2023-09-17T21:26:04.716Z"
}
sudo
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
Always sudo
for sudo events.
success - bool
Whether sudo event was successful.
reject_info - string
If success was false, reject info contains the reason.
from_uid - Int
The uid of the user who initiated the su.
from_username - string
If success was true, the user name that is going to be substituted.
has_from_uid - Int
If success was true, describes whether or not the from_uid is interpretable.
has_to_uid - Int
If success was true, describes whether or not the to_uid is interpretable.
#### to_uid - Int
If success was true, the user ID that is going to be substituted.
to_username - string
If success was true, the user name that is going to be substituted.
command - string
The command to be run.
Example sudo payloads
sudo event
{
"log": {
"event": "sudo",
"success": true,
"reject_info": "",
"from_uid": 501,
"from_username": "administrator",
"has_to_uid": true,
"has_from_uid": true,
"to_uid": 1,
"to_username": "root",
"command": "date",
},
"timestamp": "2023-09-17T21:26:04.716Z"
}
LoginWindow
login
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
lw_session_login
username - string
The user logged in via Login Window (Desktop login GUI).
graphical_user_id - string
Graphical session id of the session.
logout
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
lw_session_logout
username - string
The user logged in via Login Window (Desktop login GUI).
graphical_user_id - string
Graphical session id of the session.
lock
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
lw_session_lock
username - string
The user logged in via Login Window (Desktop login GUI).
graphical_user_id - string
Graphical session id of the session.
unlock
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
lw_session_unlock
username - string
The user logged in via Login Window (Desktop login GUI).
graphical_user_id - string
Graphical session id of the session.
Example LoginWindow payloads
lw_session_login
{
"log": {
"event": "lw_session_login",
"username": "administrator",
"graphical_user_id": 15
},
"timestamp": "2023-03-29T21:16:08.869Z"
}
lw_session_logout
{
"log": {
"event": "lw_session_logout",
"username": "administrator",
"graphical_user_id": 15
},
"timestamp": "2023-03-29T21:16:08.869Z"
}
lw_session_lock
{
"log": {
"event": "lw_session_lock",
"username": "administrator",
"graphical_user_id": 15
},
"timestamp": "2023-03-29T21:16:08.869Z"
}
lw_session_unlock
{
"log": {
"event": "lw_session_unlock",
"username": "administrator",
"graphical_user_id": 15
},
"timestamp": "2023-03-29T21:16:08.869Z"
}
Mount
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
mount
f_bavail - Int
Free blocks avail to non-superuser.
f_bfree - Int
Free blocks in fs.
f_blocks - Int
Total data blocks in file system.
f_bsize - Int
Fundamental file system block size.
f_ffree - Int
Free file nodes in fs.
f_files - Int
Total file nodes in file system.
f_flags - Int
Copy of mount exported flags.
f_flags_ext - Int
Extended flag.
f_fsid - Int
File system id.
f_fssubtype - Int
Fs sub-type.
f_fstypename - String
Fs type name.
f_iosize - Int
Optimal transfer block size.
f_mntfromname - String
Mounted filesystem.
f_mntonname - String
Directory on which mounted.
f_owner - Int
User that mounted the filesystem.
f_type - Int
Type of filesystem.
Unmount
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
unmount
f_bavail - Int
Free blocks avail to non-superuser.
f_bfree - Int
Free blocks in fs.
f_blocks - Int
Total data blocks in file system.
f_bsize - Int
Fundamental file system block size.
f_ffree - Int
Free file nodes in fs.
f_files - Int
Total file nodes in file system.
f_flags - Int
Copy of mount exported flags.
f_flags_ext - Int
Extended flag.
f_fsid - Int
File system id.
f_fssubtype - Int
Fs sub-type.
f_fstypename - String
Fs type name.
f_iosize - Int
Optimal transfer block size.
f_mntfromname - String
Mounted filesystem.
f_mntonname - String
Directory on which mounted.
f_owner - Int
User that mounted the filesystem.
f_type - Int
Type of filesystem.
Example mount payloads
mount event
{
"log": {
"event": "mount",
"f_bavail": 375960,
"f_bfree": 375960,
"f_blocks": 467752,
"f_bsize": 131072,
"f_ffree": 0,
"f_files": 0,
"f_flags": 2101784,
"f_flags_ext": 0,
"f_fsid": "1677722830",
"f_fstypename": "exfat",
"f_iosize": 131072,
"f_mntfromname": "/dev/disk2s2",
"f_mntonname": "/Volumes/pendrive",
"f_owner": 0,
"f_type": 30
},
"timestamp": "2023-12-19T22:31:08.653Z"
}
unmount event
{
"log": {
"event": "unmount",
"f_bavail": 375958,
"f_bfree": 375958,
"f_blocks": 467752,
"f_bsize": 131072,
"f_ffree": 375958,
"f_files": 467752,
"f_flags": 2101784,
"f_flags_ext": 0,
"f_fsid": "1677722830",
"f_fstypename": "exfat",
"f_iosize": 131072,
"f_mntfromname": "/dev/disk2s2",
"f_mntonname": "/Volumes/pendrive",
"f_owner": 0,
"f_type": 30
},
"timestamp": "2023-12-19T22:29:03.821Z"
}
Kextload
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
kextload
identifier - string
The signing identifier of the kext being loaded.
Kextunload
timestamp - string
Event timestamp.
log - object
Parent key wrapping the log payload.
event - string
kextunload
identifier - string
The signing identifier of the kext being loaded.
Example kext payloads
kextload event
{
"log": {
"event": "kextload",
"identifier": "com.apple.filesystems.exfat"
},
"timestamp": "2023-12-19T22:31:08.653Z"
}
kextunload event
{
"log": {
"event": "kextunload",
"identifier": "com.apple.filesystems.exfat"
},
"timestamp": "2023-12-19T22:31:08.653Z"
}