macOS Process Abuse
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã
Processes Basic Information
ããã»ã¹ã¯å®è¡äžã®å®è¡å¯èœãã¡ã€ã«ã®ã€ã³ã¹ã¿ã³ã¹ã§ãããããã»ã¹ã¯ã³ãŒããå®è¡ããŸããããããã¯ã¹ã¬ããã§ãããããã£ãŠãããã»ã¹ã¯å®è¡äžã®ã¹ã¬ããã®ã³ã³ããã«éããŸãããã¡ã¢ãªããã£ã¹ã¯ãªãã¿ãããŒããæš©éãæäŸããŸãâŠ
åŸæ¥ãããã»ã¹ã¯**forkãåŒã³åºãããšã«ãã£ãŠä»ã®ããã»ã¹å
ã§éå§ãããŸããïŒPID 1ãé€ãïŒãããã«ãããçŸåšã®ããã»ã¹ã®æ£ç¢ºãªã³ããŒãäœæããããã®åŸåããã»ã¹ã¯äžè¬çã«execveãåŒã³åºããŠæ°ããå®è¡å¯èœãã¡ã€ã«ãããŒãããŠå®è¡ããŸãããã®åŸãvforkãå°å
¥ããããã®ããã»ã¹ãã¡ã¢ãªã³ããŒãªãã§é«éåããŸããã
次ã«ãposix_spawnãå°å
¥ãããvforkãšexecve**ã1åã®åŒã³åºãã§çµã¿åããããã©ã°ãåãå
¥ããŸãïŒ
POSIX_SPAWN_RESETIDS: æå¹ãªIDãå®éã®IDã«ãªã»ããPOSIX_SPAWN_SETPGROUP: ããã»ã¹ã°ã«ãŒãã®æå±ãèšå®POSUX_SPAWN_SETSIGDEF: ã·ã°ãã«ã®ããã©ã«ãåäœãèšå®POSIX_SPAWN_SETSIGMASK: ã·ã°ãã«ãã¹ã¯ãèšå®POSIX_SPAWN_SETEXEC: åãããã»ã¹ã§å®è¡ïŒãªãã·ã§ã³ãå€ãexecveã®ããã«ïŒPOSIX_SPAWN_START_SUSPENDED: ãµã¹ãã³ãç¶æ ã§éå§_POSIX_SPAWN_DISABLE_ASLR: ASLRãªãã§éå§_POSIX_SPAWN_NANO_ALLOCATOR:libmallocã®ããã¢ãã±ãŒã¿ã䜿çš_POSIX_SPAWN_ALLOW_DATA_EXEC:ããŒã¿ã»ã°ã¡ã³ãã§rwxãèš±å¯POSIX_SPAWN_CLOEXEC_DEFAULT: exec(2)ã§ããã©ã«ãã§å šãŠã®ãã¡ã€ã«èšè¿°åãéãã_POSIX_SPAWN_HIGH_BITS_ASLR:ASLRã¹ã©ã€ãã®é«äœããããã©ã³ãã å
ããã«ãposix_spawnã¯çæãããããã»ã¹ã®ããã€ãã®åŽé¢ãå¶åŸ¡ãã**posix_spawnattrã®é
åãæå®ããããšãèš±å¯ãããã£ã¹ã¯ãªãã¿ã®ç¶æ
ã倿Žããããã®posix_spawn_file_actions**ãæäŸããŸãã
ããã»ã¹ãçµäºãããšã芪ããã»ã¹ã«æ»ãã³ãŒããéä¿¡ããŸãïŒèŠªãçµäºããå Žåãæ°ãã芪ã¯PID 1ã§ãïŒããã·ã°ãã«SIGCHLDãéä¿¡ããŸãã芪ã¯ãã®å€ãååŸããããã«wait4()ãŸãã¯waitid()ãåŒã³åºãå¿
èŠãããããã®éãåããã»ã¹ã¯ãŸã³ãç¶æ
ã«çãŸãããªãœãŒã¹ãæ¶è²»ããŸããã
PIDs
PIDãããã»ã¹èå¥åã¯ããŠããŒã¯ãªããã»ã¹ãèå¥ããŸããXNUã§ã¯ãPIDsã¯64ãããã§ãå調ã«å¢å ããæ±ºããŠã©ããããŸããïŒæªçšãé¿ããããïŒã
Process Groups, Sessions & Coalations
ããã»ã¹ã¯ã°ã«ãŒãã«æ¿å
¥ããã管çã容æã«ããŸããããšãã°ãã·ã§ã«ã¹ã¯ãªããå
ã®ã³ãã³ãã¯åãããã»ã¹ã°ã«ãŒãã«ãããkillã䜿çšããŠäžç·ã«ã·ã°ãã«ãéä¿¡ããããšãå¯èœã§ãã
ããã»ã¹ãã»ãã·ã§ã³ã«ã°ã«ãŒãåããããšãå¯èœã§ããããã»ã¹ãã»ãã·ã§ã³ãéå§ãããšïŒsetsid(2)ïŒãåããã»ã¹ã¯ã»ãã·ã§ã³å
ã«èšå®ãããŸãããç¬èªã®ã»ãã·ã§ã³ãéå§ããªãéãã§ãã
ã³ã¢ãªã·ã§ã³ã¯ãDarwinã§ããã»ã¹ãã°ã«ãŒãåããå¥ã®æ¹æ³ã§ããã³ã¢ãªã·ã§ã³ã«åå ããããã»ã¹ã¯ãããŒã«ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããå°åž³ãå ±æããããJetsamã«çŽé¢ãããããŸããã³ã¢ãªã·ã§ã³ã«ã¯ç°ãªã圹å²ããããŸãïŒãªãŒããŒãXPCãµãŒãã¹ãæ¡åŒµã
Credentials & Personae
åããã»ã¹ã¯ãã·ã¹ãã å
ã®æš©éãèå¥ããããã®è³æ Œæ
å ±ãä¿æããŸããåããã»ã¹ã«ã¯1ã€ã®äž»èŠãªuidãš1ã€ã®äž»èŠãªgidããããŸãïŒãã ããè€æ°ã®ã°ã«ãŒãã«å±ããããšããããŸãïŒã
ãã€ããªãsetuid/setgidããããæã£ãŠããå ŽåããŠãŒã¶ãŒããã³ã°ã«ãŒãIDã倿Žããããšãå¯èœã§ãã
æ°ããuid/gidãèšå®ããããã®é¢æ°ãããã€ããããŸãã
ã·ã¹ãã ã³ãŒã«**personaã¯ã代æ¿ã®è³æ Œæ
å ±ã®ã»ãããæäŸããŸãããã«ãœããæ¡çšãããšããã®uidãgidãããã³ã°ã«ãŒãã¡ã³ããŒã·ãããäžåºŠã«**åŒãåããŸãããœãŒã¹ã³ãŒãã§ã¯ãæ§é äœãèŠã€ããããšãã§ããŸãïŒ
struct kpersona_info { uint32_t persona_info_version;
uid_t persona_id; /* overlaps with UID */
int persona_type;
gid_t persona_gid;
uint32_t persona_ngroups;
gid_t persona_groups[NGROUPS];
uid_t persona_gmuid;
char persona_name[MAXLOGNAME + 1];
/* TODO: MAC policies?! */
}
ã¹ã¬ããã®åºæ¬æ å ±
- POSIXã¹ã¬ãã (pthreads): macOSã¯POSIXã¹ã¬ããïŒ
pthreadsïŒããµããŒãããŠãããããã¯C/C++ã®æšæºã¹ã¬ããAPIã®äžéšã§ããmacOSã«ãããpthreadsã®å®è£ ã¯/usr/lib/system/libsystem_pthread.dylibã«ãããããã¯å ¬éãããŠããlibpthreadãããžã§ã¯ãããæ¥ãŠããŸãããã®ã©ã€ãã©ãªã¯ã¹ã¬ãããäœæã管çããããã«å¿ èŠãªé¢æ°ãæäŸããŸãã - ã¹ã¬ããã®äœæ:
pthread_create()颿°ã¯æ°ããã¹ã¬ãããäœæããããã«äœ¿çšãããŸããå éšçã«ããã®é¢æ°ã¯XNUã«ãŒãã«ïŒmacOSãåºã¥ããŠããã«ãŒãã«ïŒç¹æã®äœã¬ãã«ã®ã·ã¹ãã ã³ãŒã«ã§ããbsdthread_create()ãåŒã³åºããŸãããã®ã·ã¹ãã ã³ãŒã«ã¯ãã¹ã¬ããã®åäœãæå®ããpthread_attrïŒå±æ§ïŒããæŽŸçããããŸããŸãªãã©ã°ãåãåããŸããããã«ã¯ã¹ã±ãžã¥ãŒãªã³ã°ããªã·ãŒãã¹ã¿ãã¯ãµã€ãºãå«ãŸããŸãã
- ããã©ã«ãã¹ã¿ãã¯ãµã€ãº: æ°ããã¹ã¬ããã®ããã©ã«ãã¹ã¿ãã¯ãµã€ãºã¯512 KBã§ãéåžžã®æäœã«ã¯ååã§ãããå¿ èŠã«å¿ããŠã¹ã¬ãã屿§ãä»ããŠèª¿æŽã§ããŸãã
- ã¹ã¬ããã®åæå:
__pthread_init()颿°ã¯ã¹ã¬ããã®ã»ããã¢ããäžã«éèŠã§ãenv[]åŒæ°ãå©çšããŠã¹ã¿ãã¯ã®äœçœ®ããµã€ãºã«é¢ãã詳现ãå«ãç°å¢å€æ°ãè§£æããŸãã
macOSã«ãããã¹ã¬ããã®çµäº
- ã¹ã¬ããã®çµäº: ã¹ã¬ããã¯éåžžã
pthread_exit()ãåŒã³åºãããšã§çµäºããŸãããã®é¢æ°ã¯ã¹ã¬ãããã¯ãªãŒã³ã«çµäºããå¿ èŠãªã¯ãªãŒã³ã¢ãããè¡ããã¹ã¬ãããåå è ã«æ»ãå€ãéä¿¡ã§ããããã«ããŸãã - ã¹ã¬ããã®ã¯ãªãŒã³ã¢ãã:
pthread_exit()ãåŒã³åºããšãpthread_terminate()颿°ãåŒã³åºããããã¹ãŠã®é¢é£ã¹ã¬ããæ§é ã®åé€ãåŠçããŸããããã«ããMachã¹ã¬ããããŒãïŒMachã¯XNUã«ãŒãã«ã®éä¿¡ãµãã·ã¹ãã ïŒãè§£æŸããã¹ã¬ããã«é¢é£ããã«ãŒãã«ã¬ãã«ã®æ§é ãåé€ããã·ã¹ãã ã³ãŒã«bsdthread_terminateãåŒã³åºãããŸãã
åæã¡ã«ããºã
å ±æãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã管çããç«¶åç¶æ ãé¿ããããã«ãmacOSã¯ããã€ãã®åæããªããã£ããæäŸããŸãããããã¯ãã«ãã¹ã¬ããç°å¢ã«ãããŠããŒã¿ã®æŽåæ§ãšã·ã¹ãã ã®å®å®æ§ã確ä¿ããããã«éèŠã§ãïŒ
- ãã¥ãŒããã¯ã¹:
- éåžžã®ãã¥ãŒããã¯ã¹ (ã·ã°ããã£: 0x4D555458): ã¡ã¢ãªãããããªã³ãã60ãã€ãïŒãã¥ãŒããã¯ã¹56ãã€ããã·ã°ããã£4ãã€ãïŒã®æšæºãã¥ãŒããã¯ã¹ã
- ãã¡ã¹ããã¥ãŒããã¯ã¹ (ã·ã°ããã£: 0x4d55545A): éåžžã®ãã¥ãŒããã¯ã¹ã«äŒŒãŠããŸãããããé«éãªæäœã®ããã«æé©åãããŠããããµã€ãºã¯60ãã€ãã§ãã
- æ¡ä»¶å€æ°:
- ç¹å®ã®æ¡ä»¶ãçºçããã®ãåŸ ã€ããã«äœ¿çšããããµã€ãºã¯44ãã€ãïŒ40ãã€ããã©ã¹4ãã€ãã®ã·ã°ããã£ïŒã
- æ¡ä»¶å€æ°å±æ§ (ã·ã°ããã£: 0x434e4441): æ¡ä»¶å€æ°ã®èšå®å±æ§ã§ããµã€ãºã¯12ãã€ãã§ãã
- ã¯ã³ã¹å€æ° (ã·ã°ããã£: 0x4f4e4345):
- åæåã³ãŒããäžåºŠã ãå®è¡ãããããšãä¿èšŒããŸãããµã€ãºã¯12ãã€ãã§ãã
- èªã¿æžãããã¯:
- è€æ°ã®ãªãŒããŒãŸãã¯1ã€ã®ã©ã€ã¿ãŒãåæã«èš±å¯ããå ±æããŒã¿ãžã®å¹ççãªã¢ã¯ã»ã¹ãä¿é²ããŸãã
- èªã¿æžããã㯠(ã·ã°ããã£: 0x52574c4b): ãµã€ãºã¯196ãã€ãã§ãã
- èªã¿æžãããã¯å±æ§ (ã·ã°ããã£: 0x52574c41): èªã¿æžãããã¯ã®å±æ§ã§ããµã€ãºã¯20ãã€ãã§ãã
Tip
ãããã®ãªããžã§ã¯ãã®æåŸã®4ãã€ãã¯ãªãŒããŒãããŒãæ€åºããããã«äœ¿çšãããŸãã
ã¹ã¬ããããŒã«ã«å€æ° (TLV)
ã¹ã¬ããããŒã«ã«å€æ° (TLV) ã¯ãMach-Oãã¡ã€ã«ïŒmacOSã®å®è¡å¯èœãã¡ã€ã«ã®åœ¢åŒïŒã®æèã§ããã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³å ã®åã¹ã¬ããã«ç¹æã®å€æ°ã宣èšããããã«äœ¿çšãããŸããããã«ãããåã¹ã¬ããã倿°ã®ç¬èªã®ã€ã³ã¹ã¿ã³ã¹ãæã¡ããã¥ãŒããã¯ã¹ã®ãããªæç€ºçãªåæã¡ã«ããºã ãå¿ èŠãšããã«ç«¶åãé¿ããããŒã¿ã®æŽåæ§ãç¶æããæ¹æ³ãæäŸãããŸãã
Cããã³é¢é£èšèªã§ã¯ã**__thread**ããŒã¯ãŒãã䜿çšããŠã¹ã¬ããããŒã«ã«å€æ°ã宣èšã§ããŸãã以äžã¯ãããªãã®äŸã§ã®åäœæ¹æ³ã§ãïŒ
cCopy code__thread int tlv_var;
void main (int argc, char **argv){
tlv_var = 10;
}
ãã®ã¹ãããã㯠tlv_var ãã¹ã¬ããããŒã«ã«å€æ°ãšããŠå®çŸ©ããŸãããã®ã³ãŒããå®è¡ããŠããåã¹ã¬ããã¯ç¬èªã® tlv_var ãæã¡ãããã¹ã¬ããã tlv_var ã«å ãã倿Žã¯ä»ã®ã¹ã¬ããã® tlv_var ã«åœ±é¿ãäžããŸããã
Mach-O ãã€ããªã§ã¯ãã¹ã¬ããããŒã«ã«å€æ°ã«é¢é£ããããŒã¿ãç¹å®ã®ã»ã¯ã·ã§ã³ã«æŽçãããŠããŸãïŒ
__DATA.__thread_vars: ãã®ã»ã¯ã·ã§ã³ã«ã¯ãã¹ã¬ããããŒã«ã«å€æ°ã«é¢ããã¡ã¿ããŒã¿ãå«ãŸããŠããã倿°ã®åãåæåç¶æ ãªã©ãèšèŒãããŠããŸãã__DATA.__thread_bss: ãã®ã»ã¯ã·ã§ã³ã¯ãæç€ºçã«åæåãããŠããªãã¹ã¬ããããŒã«ã«å€æ°ã«äœ¿çšãããŸãããŒãåæåããŒã¿ã®ããã«ç¢ºä¿ãããã¡ã¢ãªã®äžéšã§ãã
Mach-O ã¯ãã¹ã¬ãããçµäºããéã«ã¹ã¬ããããŒã«ã«å€æ°ã管çããããã®ç¹å®ã® API tlv_atexit ãæäŸããŸãããã® API ã䜿çšãããšãã¹ã¬ãããçµäºããéã«ã¹ã¬ããããŒã«ã«ããŒã¿ãã¯ãªãŒã³ã¢ããããç¹å¥ãªé¢æ°ã§ãã ãã¹ãã©ã¯ã¿ ãç»é²ã§ããŸãã
ã¹ã¬ããã®åªå é äœ
ã¹ã¬ããã®åªå
é äœãçè§£ããã«ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãã©ã®ã¹ã¬ããããã€å®è¡ããããæ±ºå®ããæ¹æ³ãèŠãŠããå¿
èŠããããŸãããã®æ±ºå®ã¯ãåã¹ã¬ããã«å²ãåœãŠãããåªå
床ã¬ãã«ã«ãã£ãŠåœ±é¿ãåããŸããmacOS ããã³ Unix ç³»ã®ã·ã¹ãã ã§ã¯ãniceãreniceãããã³ Quality of Service (QoS) ã¯ã©ã¹ã®ãããªæŠå¿µã䜿çšããŠãããåŠçããŸãã
Nice ãš Renice
- Nice:
- ããã»ã¹ã®
niceå€ã¯ããã®åªå 床ã«åœ±é¿ãäžããæ°å€ã§ãããã¹ãŠã®ããã»ã¹ã«ã¯ -20ïŒæé«åªå 床ïŒãã 19ïŒæäœåªå 床ïŒãŸã§ã®ç¯å²ã® nice å€ããããŸããããã»ã¹ãäœæããããšãã®ããã©ã«ãã® nice å€ã¯éåžž 0 ã§ãã - ããäœã nice å€ïŒ-20 ã«è¿ãïŒã¯ãããã»ã¹ããããèªå·±äžå¿çãã«ããããé«ã nice å€ãæã€ä»ã®ããã»ã¹ãšæ¯èŒããŠãããå€ãã® CPU æéãäžããŸãã
- Renice:
reniceã¯ããã§ã«å®è¡äžã®ããã»ã¹ã® nice å€ã倿Žããããã«äœ¿çšãããã³ãã³ãã§ããããã䜿çšããŠãããã»ã¹ã®åªå 床ãåçã«èª¿æŽããæ°ãã nice å€ã«åºã¥ã㊠CPU æéã®å²ãåœãŠã墿žãããããšãã§ããŸãã- ããšãã°ãããã»ã¹ãäžæçã«ããå€ãã® CPU ãªãœãŒã¹ãå¿
èŠãšããå Žåã
reniceã䜿çšããŠãã® nice å€ãäžããããšãã§ããŸãã
Quality of Service (QoS) ã¯ã©ã¹
QoS ã¯ã©ã¹ã¯ãç¹ã« Grand Central Dispatch (GCD) ããµããŒããã macOS ã®ãããªã·ã¹ãã ã§ã¹ã¬ããã®åªå é äœãåŠçããããã®ããçŸä»£çãªã¢ãããŒãã§ããQoS ã¯ã©ã¹ã䜿çšãããšãéçºè ã¯äœæ¥ããã®éèŠæ§ãç·æ¥æ§ã«åºã¥ããŠç°ãªãã¬ãã«ã« åé¡ ã§ããŸããmacOS ã¯ãããã® QoS ã¯ã©ã¹ã«åºã¥ããŠã¹ã¬ããã®åªå é äœãèªåçã«ç®¡çããŸãïŒ
- ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ãã£ã:
- ãã®ã¯ã©ã¹ã¯ãçŸåšãŠãŒã¶ãŒãšå¯Ÿè©±ããŠããã¿ã¹ã¯ããè¯å¥œãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«å³æã®çµæãå¿ èŠãšããã¿ã¹ã¯ã«äœ¿çšãããŸãããããã®ã¿ã¹ã¯ã«ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãå¿çãããããã«æé«ã®åªå 床ãäžããããŸãïŒäŸïŒã¢ãã¡ãŒã·ã§ã³ãã€ãã³ãåŠçïŒã
- ãŠãŒã¶ãŒéå§:
- ãŠãŒã¶ãŒãéå§ãã峿ã®çµæãæåŸ ããã¿ã¹ã¯ïŒäŸïŒããã¥ã¡ã³ããéããèšç®ãå¿ èŠãšãããã¿ã³ãã¯ãªãã¯ããïŒã§ãããããã¯é«åªå 床ã§ããããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ãã£ãã®äžã«äœçœ®ããŸãã
- ãŠãŒãã£ãªãã£:
- ãããã®ã¿ã¹ã¯ã¯é·æéå®è¡ãããéåžžã¯é²è¡ç¶æ³ã€ã³ãžã±ãŒã¿ãŒã衚瀺ããŸãïŒäŸïŒãã¡ã€ã«ã®ããŠã³ããŒããããŒã¿ã®ã€ã³ããŒãïŒããããã¯ãŠãŒã¶ãŒéå§ã¿ã¹ã¯ãããåªå 床ãäœããå³åº§ã«å®äºããå¿ èŠã¯ãããŸããã
- ããã¯ã°ã©ãŠã³ã:
- ãã®ã¯ã©ã¹ã¯ãããã¯ã°ã©ãŠã³ãã§åäœãããŠãŒã¶ãŒã«ã¯èŠããªãã¿ã¹ã¯ã«äœ¿çšãããŸããããã«ã¯ãã€ã³ããã¯ã¹äœæãåæãããã¯ã¢ãããªã©ã®ã¿ã¹ã¯ãå«ãŸããŸãããããã¯æäœã®åªå 床ãæã¡ãã·ã¹ãã ããã©ãŒãã³ã¹ã«æå°éã®åœ±é¿ãäžããŸãã
QoS ã¯ã©ã¹ã䜿çšããããšã§ãéçºè ã¯æ£ç¢ºãªåªå 床çªå·ã管çããå¿ èŠããªããã¿ã¹ã¯ã®æ§è³ªã«çŠç¹ãåœãŠãããšãã§ããã·ã¹ãã ã¯ããã«å¿ã㊠CPU ãªãœãŒã¹ãæé©åããŸãã
ããã«ãã¹ã¬ããã¹ã±ãžã¥ãŒãªã³ã°ããªã·ãŒã®ç°ãªã ã¹ã¬ããã¹ã±ãžã¥ãŒãªã³ã°ããªã·ãŒ ããããã¹ã±ãžã¥ãŒã©ãèæ
®ããäžé£ã®ã¹ã±ãžã¥ãŒãªã³ã°ãã©ã¡ãŒã¿ãæå®ããŸãããã㯠thread_policy_[set/get] ã䜿çšããŠè¡ãããšãã§ããŸããããã¯ã¬ãŒã¹ã³ã³ãã£ã·ã§ã³æ»æã«åœ¹ç«ã€ãããããŸããã
MacOS ããã»ã¹ã®æªçš
MacOS ã¯ãä»ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšåæ§ã«ãããã»ã¹ãçžäºäœçšããéä¿¡ããããŒã¿ãå ±æããããã®ããŸããŸãªæ¹æ³ãšã¡ã«ããºã ãæäŸããŸãããããã®æè¡ã¯å¹ççãªã·ã¹ãã æ©èœã«äžå¯æ¬ ã§ãããè åšã¢ã¯ã¿ãŒã«ãã£ãŠ æªæã®ããæŽ»åãè¡ãããã«æªçšãããå¯èœæ§ããããŸãã
ã©ã€ãã©ãªã€ã³ãžã§ã¯ã·ã§ã³
ã©ã€ãã©ãªã€ã³ãžã§ã¯ã·ã§ã³ã¯ãæ»æè ã ããã»ã¹ã«æªæã®ããã©ã€ãã©ãªãããŒãããã æè¡ã§ããäžåºŠæ³šå ¥ããããšãã©ã€ãã©ãªã¯ã¿ãŒã²ããããã»ã¹ã®ã³ã³ããã¹ãã§å®è¡ãããæ»æè ã«ããã»ã¹ãšåãæš©éãšã¢ã¯ã»ã¹ãæäŸããŸãã
颿°ããã¯
颿°ããã¯ã¯ããœãããŠã§ã¢ã³ãŒãå ã® é¢æ°åŒã³åºã ãŸãã¯ã¡ãã»ãŒãžã ååãã ããšãå«ã¿ãŸãã颿°ãããã¯ããããšã§ãæ»æè ã¯ããã»ã¹ã® åäœãå€æŽ ããããæ©å¯ããŒã¿ã芳å¯ããããå®è¡ãããŒãå¶åŸ¡ãããããããšãã§ããŸãã
ããã»ã¹ééä¿¡
ããã»ã¹ééä¿¡ (IPC) ã¯ãå¥ã ã®ããã»ã¹ã ããŒã¿ãå ±æãã亀æãã æ¹æ³ãæããŸããIPC ã¯å€ãã®æ£åœãªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠåºæ¬çã§ãããããã»ã¹ã®éé¢ãèŠããããæ©å¯æ å ±ãæŒæŽ©ãããããç¡èš±å¯ã®ã¢ã¯ã·ã§ã³ãå®è¡ããããã«æªçšãããå¯èœæ§ããããŸãã
macOS IPC - Inter Process Communication
Electron ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ãžã§ã¯ã·ã§ã³
ç¹å®ã®ç°å¢å€æ°ã§å®è¡ããã Electron ã¢ããªã±ãŒã·ã§ã³ã¯ãããã»ã¹ã€ã³ãžã§ã¯ã·ã§ã³ã«å¯ŸããŠè匱ã§ããå¯èœæ§ããããŸãïŒ
macOS Electron Applications Injection
Chromium ã€ã³ãžã§ã¯ã·ã§ã³
--load-extension ããã³ --use-fake-ui-for-media-stream ãã©ã°ã䜿çšã㊠ãã©ãŠã¶å
ã®æ»æ ãå®è¡ããããŒå
¥åããã©ãã£ãã¯ãã¯ãããŒãçãã ããããŒãžã«ã¹ã¯ãªãããæ³šå
¥ãããããããšãå¯èœã§ãïŒ
ããŒã㣠NIB
NIB ãã¡ã€ã«ã¯ ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ (UI) èŠçŽ ãšãã®ã¢ããªã±ãŒã·ã§ã³å ã§ã®çžäºäœçšã å®çŸ©ããŸãããã ããããã㯠任æã®ã³ãã³ããå®è¡ããããšãã§ããNIB ãã¡ã€ã«ã倿ŽãããŠã ãã§ã«å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã®å®è¡ãæ¢ããããšã¯ã§ããŸããããããã£ãŠãä»»æã®ããã°ã©ã ãä»»æã®ã³ãã³ããå®è¡ããããã«äœ¿çšãããå¯èœæ§ããããŸãïŒ
Java ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ãžã§ã¯ã·ã§ã³
ç¹å®ã® Java æ©èœïŒ_JAVA_OPTS ç°å¢å€æ°ãªã©ïŒãæªçšããŠãJava ã¢ããªã±ãŒã·ã§ã³ã ä»»æã®ã³ãŒã/ã³ãã³ããå®è¡ãã ããã«ããããšãå¯èœã§ãã
macOS Java Applications Injection
.Net ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ãžã§ã¯ã·ã§ã³
.Net ãããã°æ©èœ ãæªçšã㊠.Net ã¢ããªã±ãŒã·ã§ã³ã«ã³ãŒããæ³šå ¥ããããšãå¯èœã§ãïŒmacOS ã®ä¿è·ïŒã©ã³ã¿ã€ã ããŒããã³ã°ãªã©ïŒã«ãã£ãŠä¿è·ãããŠããŸããïŒã
macOS .Net Applications Injection
Perl ã€ã³ãžã§ã¯ã·ã§ã³
Perl ã¹ã¯ãªãããä»»æã®ã³ãŒããå®è¡ããããã®ããŸããŸãªãªãã·ã§ã³ã確èªããŸãïŒ
macOS Perl Applications Injection
Ruby ã€ã³ãžã§ã¯ã·ã§ã³
Ruby ç°å¢å€æ°ãæªçšããŠãä»»æã®ã¹ã¯ãªãããä»»æã®ã³ãŒããå®è¡ããããšãå¯èœã§ãïŒ
macOS Ruby Applications Injection
Python ã€ã³ãžã§ã¯ã·ã§ã³
ç°å¢å€æ° PYTHONINSPECT ãèšå®ãããŠããå ŽåãPython ããã»ã¹ã¯çµäºåŸã« Python CLI ã«ããããããŸãããŸããPYTHONSTARTUP ã䜿çšããŠãã€ã³ã¿ã©ã¯ãã£ãã»ãã·ã§ã³ã®éå§æã«å®è¡ãã Python ã¹ã¯ãªãããæå®ããããšãå¯èœã§ãã
ãã ããPYTHONINSPECT ãã€ã³ã¿ã©ã¯ãã£ãã»ãã·ã§ã³ãäœæããéã«ã¯ PYTHONSTARTUP ã¹ã¯ãªããã¯å®è¡ãããŸããã
ä»ã®ç°å¢å€æ°ïŒPYTHONPATH ã PYTHONHOME ãªã©ïŒããPython ã³ãã³ããä»»æã®ã³ãŒããå®è¡ããã®ã«åœ¹ç«ã€å¯èœæ§ããããŸãã
pyinstaller ã§ã³ã³ãã€ã«ãããå®è¡å¯èœãã¡ã€ã«ã¯ãåã蟌ãŸãã Python ã䜿çšããŠå®è¡ãããŠããŠãããããã®ç°å¢å€æ°ã䜿çšããªãããšã«æ³šæããŠãã ããã
Caution
å šäœãšããŠãç°å¢å€æ°ãæªçšã㊠Python ãä»»æã®ã³ãŒããå®è¡ããæ¹æ³ãèŠã€ããããšãã§ããŸããã§ããã
ãã ããã»ãšãã©ã®äººã¯ Homebrew ã䜿çšã㊠Python ãã€ã³ã¹ããŒã«ããããã©ã«ãã®ç®¡çè ãŠãŒã¶ãŒã®ããã« æžã蟌ã¿å¯èœãªå Žæ ã« Python ãã€ã³ã¹ããŒã«ããŸããæ¬¡ã®ããã«ãã€ãžã£ãã¯ã§ããŸãïŒmv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old cat > /opt/homebrew/bin/python3 <<EOF #!/bin/bash # 远å ã®ãã€ãžã£ãã¯ã³ãŒã /opt/homebrew/bin/python3.old "$@" EOF chmod +x /opt/homebrew/bin/python3ããã«ãããroot ã§ã Python ãå®è¡ããéã«ãã®ã³ãŒããå®è¡ãããŸãã
æ€åº
Shield
Shield (Github) ã¯ãããã»ã¹ã€ã³ãžã§ã¯ã·ã§ã³ ã¢ã¯ã·ã§ã³ã æ€åºããã³ããã㯠ã§ãããªãŒãã³ãœãŒã¹ã¢ããªã±ãŒã·ã§ã³ã§ãïŒ
- ç°å¢å€æ°ã䜿çš: 次ã®ç°å¢å€æ°ã®ããããã®ååšãç£èŠããŸãïŒ
DYLD_INSERT_LIBRARIESãCFNETWORK_LIBRARY_PATHãRAWCAMERA_BUNDLE_PATHããã³ELECTRON_RUN_AS_NODE task_for_pidåŒã³åºãã䜿çš: ããããã»ã¹ãä»ã®ããã»ã¹ã® ã¿ã¹ã¯ããŒããååŸããããšãã æãèŠã€ããããã«äœ¿çšãããããã«ããããã»ã¹ã«ã³ãŒããæ³šå ¥ã§ããŸãã- Electron ã¢ããªã®ãã©ã¡ãŒã¿: 誰ãã
--inspectã--inspect-brkããã³--remote-debugging-portã³ãã³ãã©ã€ã³åŒæ°ã䜿çšããŠããããã°ã¢ãŒãã§ Electron ã¢ããªãèµ·åããã³ãŒããæ³šå ¥ããããšãã§ããŸãã - ã·ã³ããªãã¯ãªã³ã¯ ãŸã㯠ããŒããªã³ã¯ ã䜿çš: äžè¬çãªæªçšã¯ããŠãŒã¶ãŒæš©éã§ãªã³ã¯ãäœæããããé«ãæš©éã® å Žæãæãããšã§ãããªã³ã¯ãäœæããããã»ã¹ãã¿ãŒã²ãããã¡ã€ã«ãšã¯ ç°ãªãæš©éã¬ãã« ãæã£ãŠããå Žåãã¢ã©ãŒã ãäœæããŸããæ®å¿µãªãããã·ã³ããªãã¯ãªã³ã¯ã®å Žåã¯ãäœæåã«ãªã³ã¯ã®å®å ã«é¢ããæ å ±ããªãããããããã¯ã¯äžå¯èœã§ãããã㯠Apple ã® EndpointSecurity ãã¬ãŒã ã¯ãŒã¯ã®å¶éã§ãã
ä»ã®ããã»ã¹ã«ãã£ãŠè¡ãããåŒã³åºã
ãã®ããã°èšäº ã§ã¯ãtask_name_for_pid 颿°ã䜿çšããŠãä»ã® ããã»ã¹ãããã»ã¹ã«ã³ãŒããæ³šå
¥ããŠãã æ
å ±ãååŸãããã®ä»ã®ããã»ã¹ã«é¢ããæ
å ±ãååŸããæ¹æ³ãèŠã€ããããšãã§ããŸãã
ãã®é¢æ°ãåŒã³åºãã«ã¯ãããã»ã¹ãå®è¡ããŠããã®ãšåã uid ã§ããããroot ã§ããå¿ èŠããããŸãïŒãã®é¢æ°ã¯ããã»ã¹ã«é¢ããæ å ±ãè¿ããã³ãŒããæ³šå ¥ããæ¹æ³ãè¿ãããã§ã¯ãããŸããïŒã
åèæç®
- https://theevilbit.github.io/shield/
- https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã


