macOS ã¢ã㪠- æ€æ»ããããã°ããã¡ãžã³ã°
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ãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã
éçè§£æ
otool & objdump & nm
otool -L /bin/ls #List dynamically linked libraries
otool -tv /bin/ps #Decompile application
objdump -m --dylibs-used /bin/ls #List dynamically linked libraries
objdump -m -h /bin/ls # Get headers information
objdump -m --syms /bin/ls # Check if the symbol table exists to get function names
objdump -m --full-contents /bin/ls # Dump every section
objdump -d /bin/ls # Dissasemble the binary
objdump --disassemble-symbols=_hello --x86-asm-syntax=intel toolsdemo #Disassemble a function using intel flavour
nm -m ./tccd # List of symbols
jtool2 & Disarm
You can download disarm from here.
ARCH=arm64e disarm -c -i -I --signature /path/bin # Get bin info and signature
ARCH=arm64e disarm -c -l /path/bin # Get binary sections
ARCH=arm64e disarm -c -L /path/bin # Get binary commands (dependencies included)
ARCH=arm64e disarm -c -S /path/bin # Get symbols (func names, strings...)
ARCH=arm64e disarm -c -d /path/bin # Get disasembled
jtool2 -d __DATA.__const myipc_server | grep MIG # Get MIG info
ããããjtool2ãããŠã³ããŒãããããbrewã䜿ã£ãŠã€ã³ã¹ããŒã«ã§ããŸãã
# Install
brew install --cask jtool2
jtool2 -l /bin/ls # Get commands (headers)
jtool2 -L /bin/ls # Get libraries
jtool2 -S /bin/ls # Get symbol info
jtool2 -d /bin/ls # Dump binary
jtool2 -D /bin/ls # Decompile binary
# Get signature information
ARCH=x86_64 jtool2 --sig /System/Applications/Automator.app/Contents/MacOS/Automator
# Get MIG information
jtool2 -d __DATA.__const myipc_server | grep MIG
[!CAUTION] > jtoolã¯disarmã«åã£ãŠä»£ããããŸãã
Codesign / ldid
[!TIP] >
Codesignã¯macOSã«ãããldidã¯iOSã«ãããŸã
# Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
# Check if the appâs contents have been modified
codesign --verify --verbose /Applications/Safari.app
# Get entitlements from the binary
codesign -d --entitlements :- /System/Applications/Automator.app # Check the TCC perms
# Check if the signature is valid
spctl --assess --verbose /Applications/Safari.app
# Sign a binary
codesign -s <cert-name-keychain> toolsdemo
# Get signature info
ldid -h <binary>
# Get entitlements
ldid -e <binary>
# Change entilements
## /tmp/entl.xml is a XML file with the new entitlements to add
ldid -S/tmp/entl.xml <binary>
SuspiciousPackage
SuspiciousPackage ã¯ã.pkg ãã¡ã€ã«ïŒã€ã³ã¹ããŒã©ãŒïŒãæ€æ»ããã€ã³ã¹ããŒã«ããåã«ãã®å
容ã確èªããã®ã«åœ¹ç«ã€ããŒã«ã§ãã
ãããã®ã€ã³ã¹ããŒã©ãŒã«ã¯ããã«ãŠã§ã¢äœæè
ãéåžžæªçšãã preinstall ããã³ postinstall bash ã¹ã¯ãªãããå«ãŸããŠããŸãã
hdiutil
ãã®ããŒã«ã¯ãApple ã®ãã£ã¹ã¯ã€ã¡ãŒãžïŒ.dmgïŒãã¡ã€ã«ãããŠã³ãããŠãäœããå®è¡ããåã«ããããæ€æ»ããããšãå¯èœã«ããŸãïŒ
hdiutil attach ~/Downloads/Firefox\ 58.0.2.dmg
It will be mounted in /Volumes
Packed binaries
- é«ãšã³ããããŒããã§ãã¯
- æååããã§ãã¯ïŒçè§£ã§ããæååãã»ãšãã©ãªãå Žåãããã¯ãããŠããïŒ
- MacOSçšã®UPXããã«ãŒã¯ãâ__XHDRâãšããã»ã¯ã·ã§ã³ãçæããŸãã
Static Objective-C analysis
Metadata
Caution
Objective-Cã§æžãããããã°ã©ã ã¯ãMach-O binariesã«ã³ã³ãã€ã«ããããšãã«ã¯ã©ã¹å®£èšãä¿æããŸãããã®ãããªã¯ã©ã¹å®£èšã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- å®çŸ©ãããã€ã³ã¿ãŒãã§ãŒã¹
- ã€ã³ã¿ãŒãã§ãŒã¹ã¡ãœãã
- ã€ã³ã¿ãŒãã§ãŒã¹ã€ã³ã¹ã¿ã³ã¹å€æ°
- å®çŸ©ããããããã³ã«
ãããã®ååã¯ããã€ããªã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ãããå°é£ã«ããããã«é£èªåãããå¯èœæ§ããããŸãã
Function calling
Objective-Cã䜿çšãããã€ããªã§é¢æ°ãåŒã³åºããããšãã³ã³ãã€ã«ãããã³ãŒãã¯ãã®é¢æ°ãåŒã³åºãã®ã§ã¯ãªãã**objc_msgSend**ãåŒã³åºããŸãããããæçµçãªé¢æ°ãåŒã³åºããŸãïŒ
.png)
ãã®é¢æ°ãæåŸ ãããã©ã¡ãŒã¿ã¯æ¬¡ã®ãšããã§ãïŒ
- æåã®ãã©ã¡ãŒã¿ïŒselfïŒã¯ãã¡ãã»ãŒãžãåãåãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãæããã€ã³ã¿ãã§ããç°¡åã«èšãã°ãã¡ãœãããåŒã³åºããããªããžã§ã¯ãã§ããã¡ãœãããã¯ã©ã¹ã¡ãœããã®å Žåãããã¯ã¯ã©ã¹ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ïŒå šäœïŒã«ãªããŸãããã€ã³ã¹ã¿ã³ã¹ã¡ãœããã®å Žåãselfã¯ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹åããããªããžã§ã¯ããæããŸãã
- 2çªç®ã®ãã©ã¡ãŒã¿ïŒopïŒã¯ãã¡ãã»ãŒãžãåŠçããã¡ãœããã®ã»ã¬ã¯ã¿ãã§ããå床ãç°¡åã«èšãã°ãããã¯ã¡ãœããã®ååã§ãã
- æ®ãã®ãã©ã¡ãŒã¿ã¯ãã¡ãœããïŒopïŒã«ãã£ãŠå¿ èŠãšãããå€ã§ãã
ãã®æ
å ±ãARM64ã§lldbã䜿ã£ãŠç°¡åã«ååŸããæ¹æ³ããã®ããŒãžã§ç¢ºèªããŠãã ããïŒ
x64:
| Argument | Register | (for) objc_msgSend |
|---|---|---|
| 1st argument | rdi | self: object that the method is being invoked upon |
| 2nd argument | rsi | op: name of the method |
| 3rd argument | rdx | 1st argument to the method |
| 4th argument | rcx | 2nd argument to the method |
| 5th argument | r8 | 3rd argument to the method |
| 6th argument | r9 | 4th argument to the method |
| 7th+ argument |
rsp+ | 5th+ argument to the method |
Dump ObjectiveC metadata
Dynadump
Dynadumpã¯ãObjective-Cãã€ããªãã¯ã©ã¹ãã³ãããããã®ããŒã«ã§ããGitHubã§ã¯dylibsãæå®ãããŠããŸãããå®è¡å¯èœãã¡ã€ã«ã§ãæ©èœããŸãã
./dynadump dump /path/to/bin
å·çæç¹ã§ã¯ãããã¯çŸåšæã广çãªãã®ã§ãã
äžè¬çãªããŒã«
nm --dyldinfo-only /path/to/bin
otool -ov /path/to/bin
objdump --macho --objc-meta-data /path/to/bin
class-dump
class-dump ã¯ãObjectiveC圢åŒã®ã³ãŒãå ã®ã¯ã©ã¹ãã«ããŽãªãããã³ãããã³ã«ã®å®£èšãçæããããã®å ã®ããŒã«ã§ãã
å€ããŠã¡ã³ããã³ã¹ãããŠããªããããæ£ããåäœããªãå¯èœæ§ããããŸãã
ICDump
iCDump ã¯ãã¢ãã³ã§ã¯ãã¹ãã©ãããã©ãŒã ã®Objective-Cã¯ã©ã¹ãã³ãã§ããæ¢åã®ããŒã«ãšæ¯èŒããŠãiCDumpã¯Appleãšã³ã·ã¹ãã ããç¬ç«ããŠå®è¡ã§ããPythonãã€ã³ãã£ã³ã°ãå ¬éããŠããŸãã
import icdump
metadata = icdump.objc.parse("/path/to/bin")
print(metadata.to_decl())
Static Swift analysis
Swiftãã€ããªã§ã¯ãObjective-Cãšã®äºææ§ããããããæã class-dumpã䜿çšããŠå®£èšãæœåºã§ããŸãããåžžã«å¯èœãšããããã§ã¯ãããŸããã
**jtool -lãŸãã¯otool -lã³ãã³ãã©ã€ã³ã䜿çšãããšã__swift5**ãã¬ãã£ãã¯ã¹ã§å§ãŸãããã€ãã®ã»ã¯ã·ã§ã³ãèŠã€ããããšãã§ããŸã:
jtool2 -l /Applications/Stocks.app/Contents/MacOS/Stocks
LC 00: LC_SEGMENT_64 Mem: 0x000000000-0x100000000 __PAGEZERO
LC 01: LC_SEGMENT_64 Mem: 0x100000000-0x100028000 __TEXT
[...]
Mem: 0x100026630-0x100026d54 __TEXT.__swift5_typeref
Mem: 0x100026d60-0x100027061 __TEXT.__swift5_reflstr
Mem: 0x100027064-0x1000274cc __TEXT.__swift5_fieldmd
Mem: 0x1000274cc-0x100027608 __TEXT.__swift5_capture
[...]
ãããã®ã»ã¯ã·ã§ã³ã«ä¿åãããŠããæ å ±ã«ã€ããŠã®è©³çްã¯ããã®ããã°æçš¿ã§èŠã€ããããšãã§ããŸãã
ããã«ãSwiftãã€ããªã«ã¯ã·ã³ãã«ãå«ãŸããŠããå¯èœæ§ããããŸãïŒäŸãã°ãã©ã€ãã©ãªã¯ãã®é¢æ°ãåŒã³åºãããã«ã·ã³ãã«ãä¿åããå¿ èŠããããŸãïŒãã·ã³ãã«ã«ã¯éåžžã颿°åãšå±æ§ã«é¢ããæ å ±ãå«ãŸããŠããŸãããèŠæ ããæªãããéåžžã«äŸ¿å©ã§ãããå ã®ååãååŸã§ãããããã³ã¬ã©ãŒãããããŸãã
# Ghidra plugin
https://github.com/ghidraninja/ghidra_scripts/blob/master/swift_demangler.py
# Swift cli
swift demangle
ãã€ãããã¯åæ
Warning
ãã€ããªããããã°ããã«ã¯ãSIPãç¡å¹ã«ããå¿ èŠããããŸãïŒ
csrutil disableãŸãã¯csrutil enable --without debugïŒãŸãã¯ãã€ããªãäžæãã©ã«ãã«ã³ããŒããcodesign --remove-signature <binary-path>ã§çœ²åãåé€ãããããã€ããªã®ãããã°ãèš±å¯ããå¿ èŠããããŸãïŒãã®ã¹ã¯ãªããã䜿çšã§ããŸãïŒã
Warning
macOSã§ã·ã¹ãã ãã€ããªïŒäŸãã°
cloudconfigurationdïŒãã€ã³ã¹ãã«ã¡ã³ãããã«ã¯ãSIPãç¡å¹ã«ããå¿ èŠããããŸãïŒçœ²åãåé€ããã ãã§ã¯æ©èœããŸããïŒã
APIs
macOSã¯ããã»ã¹ã«é¢ããæ å ±ãæäŸããããã€ãã®è峿·±ãAPIãå ¬éããŠããŸãïŒ
proc_info: åããã»ã¹ã«é¢ããå€ãã®æ å ±ãæäŸããäž»èŠãªAPIã§ããä»ã®ããã»ã¹ã®æ å ±ãååŸããã«ã¯rootæš©éãå¿ èŠã§ãããç¹å¥ãªæš©éãmachããŒãã¯å¿ èŠãããŸãããlibsysmon.dylib: XPCã§å ¬éããã颿°ãä»ããŠããã»ã¹ã«é¢ããæ å ±ãååŸããããšãå¯èœã«ããŸãããcom.apple.sysmond.clientã®æš©éãå¿ èŠã§ãã
Stackshot & microstackshots
Stackshottingã¯ãããã»ã¹ã®ç¶æ
ããã£ããã£ããããã«äœ¿çšãããæè¡ã§ããã¹ãŠã®å®è¡äžã®ã¹ã¬ããã®ã³ãŒã«ã¹ã¿ãã¯ãå«ã¿ãŸããããã¯ããããã°ãããã©ãŒãã³ã¹åæãç¹å®ã®æç¹ã§ã®ã·ã¹ãã ã®åäœãçè§£ããããã«ç¹ã«äŸ¿å©ã§ããiOSããã³macOSã§ã¯ã**sampleãspindump**ãªã©ã®ããŒã«ãæ¹æ³ã䜿çšããŠstackshottingãå®è¡ã§ããŸãã
Sysdiagnose
ãã®ããŒã«ïŒ/usr/bini/ysdiagnoseïŒã¯ãpsãzprintãªã©ã®ç°ãªãã³ãã³ããå®è¡ããŠã³ã³ãã¥ãŒã¿ããå€ãã®æ
å ±ãåéããŸãã
rootãšããŠå®è¡ããå¿
èŠããããããŒã¢ã³/usr/libexec/sysdiagnosedã¯ãcom.apple.system-task-portsãget-task-allowãªã©ã®éåžžã«è峿·±ãæš©éãæã£ãŠããŸãã
ãã®plistã¯/System/Library/LaunchDaemons/com.apple.sysdiagnose.plistã«ããã3ã€ã®MachServicesã宣èšããŠããŸãïŒ
com.apple.sysdiagnose.CacheDelete: /var/rmpå ã®å€ãã¢ãŒã«ã€ããåé€ããŸãcom.apple.sysdiagnose.kernel.ipc: ç¹æ®ããŒã23ïŒã«ãŒãã«ïŒcom.apple.sysdiagnose.service.xpc:LibsysdiagnoseObj-Cã¯ã©ã¹ãä»ãããŠãŒã¶ãŒã¢ãŒãã€ã³ã¿ãŒãã§ãŒã¹ãèŸæžå ã«3ã€ã®åŒæ°ïŒcompressãdisplayãrunïŒãæž¡ãããšãã§ããŸãã
çµ±åãã°
MacOSã¯ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠäœãããŠããã®ããçè§£ããéã«éåžžã«åœ¹ç«ã€å€ãã®ãã°ãçæããŸãã
ããã«ãããã€ãã®ãã°ã«ã¯<private>ã¿ã°ãå«ãŸãããŠãŒã¶ãŒãŸãã¯ã³ã³ãã¥ãŒã¿ã®èå¥å¯èœãªæ
å ±ãé ãããã«äœ¿çšãããŸãããã ãããã®æ
å ±ãé瀺ããããã®èšŒææžãã€ã³ã¹ããŒã«ããããšãå¯èœã§ãã詳现ã¯ãã¡ããåç
§ããŠãã ããã
Hopper
å·Šããã«
Hopperã®å·Šããã«ã§ã¯ããã€ããªã®ã·ã³ãã«ïŒLabelsïŒãæç¶ããšé¢æ°ã®ãªã¹ãïŒProcïŒãããã³æååïŒStrïŒãèŠãããšãã§ããŸãããããã¯ãã¹ãŠã®æååã§ã¯ãªããMac-Oãã¡ã€ã«ã®ããã€ãã®éšåïŒ_cstringãobjc_methnameãªã©ïŒã§å®çŸ©ããããã®ã§ãã
äžå€®ããã«
äžå€®ããã«ã§ã¯ãéã¢ã»ã³ãã«ãããã³ãŒããèŠãããšãã§ããŸãããŸããçã®éã¢ã»ã³ãã«ãã°ã©ãããã³ã³ãã€ã«ããããã®ããã€ããªãšããŠããããã®ã¢ã€ã³ã³ãã¯ãªãã¯ããããšã§è¡šç€ºã§ããŸãïŒ
.png)
ã³ãŒããªããžã§ã¯ããå³ã¯ãªãã¯ãããšããã®ãªããžã§ã¯ããžã®åç §ããã®ãªããžã§ã¯ãããã®åç §ãèŠãããšãã§ããååã倿Žããããšãã§ããŸãïŒããã¯ãã³ã³ãã€ã«ãããæ¬äŒŒã³ãŒãã§ã¯æ©èœããŸããïŒïŒ
.png)
ããã«ãäžå€®äžéšã§ã¯Pythonã³ãã³ããå ¥åããããšãã§ããŸãã
å³ããã«
å³ããã«ã§ã¯ãããã²ãŒã·ã§ã³å±¥æŽïŒçŸåšã®ç¶æ³ã«ã©ã®ããã«å°éããããç¥ãããïŒãã³ãŒã«ã°ã©ãïŒãã®é¢æ°ãåŒã³åºããã¹ãŠã®é¢æ°ãšããã®é¢æ°ãåŒã³åºããã¹ãŠã®é¢æ°ãèŠãããšãã§ããŸãïŒãããã³ããŒã«ã«å€æ°ã®æ å ±ãªã©ãè峿·±ãæ å ±ãèŠãããšãã§ããŸãã
dtrace
ããã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã«éåžžã«äœã¬ãã«ã§ã¢ã¯ã»ã¹ã§ããããã«ãããŠãŒã¶ãŒãããã°ã©ã ããã¬ãŒã¹ãããã®å®è¡ãããŒã倿Žããæ¹æ³ãæäŸããŸããDtraceã¯ãã«ãŒãã«å šäœã«é 眮ããããããŒãã䜿çšããã·ã¹ãã ã³ãŒã«ã®éå§ãšçµäºãªã©ã®å Žæã«ãããŸãã
DTraceã¯ãåã·ã¹ãã ã³ãŒã«ã®ãããŒããäœæããããã«**dtrace_probe_create颿°ã䜿çšããŸãããããã®ãããŒãã¯ãåã·ã¹ãã ã³ãŒã«ã®ãšã³ããªãã€ã³ããšãšã°ãžãããã€ã³ã**ã§çºç«ããããšãã§ããŸããDTraceãšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ã/dev/dtraceãä»ããŠè¡ãããããã¯rootãŠãŒã¶ãŒã®ã¿ãå©çšå¯èœã§ãã
Tip
SIPä¿è·ãå®å šã«ç¡å¹ã«ããã«Dtraceãæå¹ã«ããã«ã¯ããªã«ããªã¢ãŒãã§æ¬¡ã®ã³ãã³ããå®è¡ã§ããŸãïŒ
csrutil enable --without dtraceãŸãã
dtraceãŸãã¯dtrussã®ãã€ããªãã³ã³ãã€ã«ãããã®ã䜿çšããããšãã§ããŸãã
dtraceã®å©çšå¯èœãªãããŒãã¯æ¬¡ã®ã³ãã³ãã§ååŸã§ããŸãïŒ
dtrace -l | head
ID PROVIDER MODULE FUNCTION NAME
1 dtrace BEGIN
2 dtrace END
3 dtrace ERROR
43 profile profile-97
44 profile profile-199
ãããŒãåã¯ããããã€ããŒãã¢ãžã¥ãŒã«ã颿°ãããã³ååïŒfbt:mach_kernel:ptrace:entryïŒã®4ã€ã®éšåã§æ§æãããŠããŸããååã®äžéšãæå®ããªãå ŽåãDtraceã¯ãã®éšåãã¯ã€ã«ãã«ãŒããšããŠé©çšããŸãã
DTraceãæ§æããŠãããŒããã¢ã¯ãã£ãã«ããçºç«ãããšãã«å®è¡ããã¢ã¯ã·ã§ã³ãæå®ããã«ã¯ãDèšèªã䜿çšããå¿ èŠããããŸãã
ãã詳现ãªèª¬æãšããã«å€ãã®äŸã¯ãhttps://illumos.org/books/dtrace/chp-intro.htmlã§èŠã€ããããšãã§ããŸãã
äŸ
man -k dtraceãå®è¡ããŠå©çšå¯èœãªDTraceã¹ã¯ãªããã®ãªã¹ãã衚瀺ããŸããäŸ: sudo dtruss -n binary
#Count the number of syscalls of each running process
sudo dtrace -n 'syscall:::entry {@[execname] = count()}'
- ã¹ã¯ãªãã
syscall:::entry
/pid == $1/
{
}
#Log every syscall of a PID
sudo dtrace -s script.d 1234
syscall::open:entry
{
printf("%s(%s)", probefunc, copyinstr(arg0));
}
syscall::close:entry
{
printf("%s(%d)\n", probefunc, arg0);
}
#Log files opened and closed by a process
sudo dtrace -s b.d -c "cat /etc/hosts"
syscall:::entry
{
;
}
syscall:::return
{
printf("=%d\n", arg1);
}
#Log sys calls with values
sudo dtrace -s syscalls_info.d -c "cat /etc/hosts"
dtruss
dtruss -c ls #Get syscalls of ls
dtruss -c -p 1000 #get syscalls of PID 1000
kdebug
ããã¯ã«ãŒãã«ãã¬ãŒã¹æ©èœã§ããææžåãããã³ãŒãã¯**/usr/share/misc/trace.codes**ã«ãããŸãã
latencyãsc_usageãfs_usageãããã³traceã®ãããªããŒã«ã¯å
éšã§ããã䜿çšããŸãã
kdebugãšã€ã³ã¿ãŒãã§ãŒã¹ããã«ã¯ãkern.kdebugåå空éãä»ããŠsysctlã䜿çšããã䜿çšããMIBã¯sys/sysctl.hã«ããã颿°ã¯bsd/kern/kdebug.cã«å®è£
ãããŠããŸãã
ã«ã¹ã¿ã ã¯ã©ã€ã¢ã³ãã§kdebugãšå¯Ÿè©±ããããã®äžè¬çãªæé ã¯æ¬¡ã®ãšããã§ãïŒ
- KERN_KDSETREMOVEã§æ¢åã®èšå®ãåé€
- KERN_KDSETBUFããã³KERN_KDSETUPã§ãã¬ãŒã¹ãèšå®
- KERN_KDGETBUFã䜿çšããŠãããã¡ãšã³ããªã®æ°ãååŸ
- KERN_KDPINDEXã§ãã¬ãŒã¹ããèªåã®ã¯ã©ã€ã¢ã³ããååŸ
- KERN_KDENABLEã§ãã¬ãŒã¹ãæå¹å
- KERN_KDREADTRãåŒã³åºããŠãããã¡ãèªã¿åã
- åã¹ã¬ããããã®ããã»ã¹ã«ãããã³ã°ããã«ã¯KERN_KDTHRMAPãåŒã³åºããŸãã
ãã®æ
å ±ãååŸããããã«ãAppleã®ããŒã«**trace**ãŸãã¯ã«ã¹ã¿ã ããŒã«kDebugView (kdv)ã䜿çšããããšãã§ããŸãã
Kdebugã¯åæã«1ã€ã®é¡§å®¢ã«ã®ã¿å©çšå¯èœã§ããããšã«æ³šæããŠãã ããã ãããã£ãŠãåæã«å®è¡ã§ããk-debug察å¿ããŒã«ã¯1ã€ã ãã§ãã
ktrace
ktrace_* APIã¯libktrace.dylibããæ¥ãŠããããããKdebugã®ã©ãããŒã§ããã¯ã©ã€ã¢ã³ãã¯ktrace_session_createãšktrace_events_[single/class]ãåŒã³åºããŠç¹å®ã®ã³ãŒãã«ã³ãŒã«ããã¯ãèšå®ããktrace_startã§éå§ã§ããŸãã
SIPãæå¹ã«ãªã£ãŠããŠãããã䜿çšã§ããŸãã
ã¯ã©ã€ã¢ã³ããšããŠãŠãŒãã£ãªãã£ktraceã䜿çšã§ããŸãïŒ
ktrace trace -s -S -t c -c ls | grep "ls("
Or tailspin.
kperf
ããã¯ã«ãŒãã«ã¬ãã«ã®ãããã¡ã€ãªã³ã°ãè¡ãããã«äœ¿çšãããKdebug ã³ãŒã«ã¢ãŠãã䜿çšããŠæ§ç¯ãããŠããŸãã
åºæ¬çã«ãã°ããŒãã«å€æ° kernel_debug_active ããã§ãã¯ãããèšå®ãããŠããå Žå㯠kperf_kdebug_handler ã Kdebug ã³ãŒããšã«ãŒãã«ãã¬ãŒã ã®ã¢ãã¬ã¹ã§åŒã³åºããŸããKdebug ã³ãŒããéžæããããã®ãšäžèŽããå ŽåããããããããšããŠæ§æããããã¢ã¯ã·ã§ã³ããååŸããŸãïŒãªãã·ã§ã³ã«ã€ããŠã¯ osfmk/kperf/action.h ã確èªããŠãã ããïŒã
Kperf ã«ã¯ sysctl MIB ããŒãã«ããããŸãïŒïŒroot ãšããŠïŒsysctl kperfããããã®ã³ãŒã㯠osfmk/kperf/kperfbsd.c ã«ãããŸãã
ããã«ãKperf ã®æ©èœã®ãµãã»ãã㯠kpc ã«ååšãããã·ã³ã®ããã©ãŒãã³ã¹ã«ãŠã³ã¿ã«é¢ããæ
å ±ãæäŸããŸãã
ProcessMonitor
ProcessMonitor ã¯ãããã»ã¹ãå®è¡ããŠããããã»ã¹é¢é£ã®ã¢ã¯ã·ã§ã³ã確èªããããã®éåžžã«äŸ¿å©ãªããŒã«ã§ãïŒäŸãã°ãããã»ã¹ãäœæããŠããæ°ããããã»ã¹ãç£èŠããŸãïŒã
SpriteTree
SpriteTree ã¯ãããã»ã¹éã®é¢ä¿ã衚瀺ããããŒã«ã§ããsudo eslogger fork exec rename create > cap.json ã®ãããªã³ãã³ãã§ Mac ãç£èŠããå¿
èŠããããŸãïŒãã®ã¿ãŒããã«ãèµ·åããã«ã¯ FDA ãå¿
èŠã§ãïŒããã®åŸããã®ããŒã«ã« json ãèªã¿èŸŒãã§ããã¹ãŠã®é¢ä¿ã衚瀺ã§ããŸãïŒ
.png)
FileMonitor
FileMonitor ã¯ããã¡ã€ã«ã€ãã³ãïŒäœæã倿Žãåé€ãªã©ïŒãç£èŠãããã®ãããªã€ãã³ãã«é¢ãã詳现æ å ±ãæäŸããŸãã
Crescendo
Crescendo ã¯ãWindows ãŠãŒã¶ãŒã Microsoft Sysinternal ã® Procmon ããç¥ã£ãŠãããããããªãã«ãã¯ã¢ã³ããã£ãŒã«ãæã€ GUI ããŒã«ã§ãããã®ããŒã«ã¯ãããŸããŸãªã€ãã³ãã¿ã€ãã®èšé²ãéå§ããã³åæ¢ã§ãããã¡ã€ã«ãããã»ã¹ããããã¯ãŒã¯ãªã©ã®ã«ããŽãªã«ãã£ãŠãããã®ã€ãã³ãããã£ã«ã¿ãªã³ã°ã§ããèšé²ãããã€ãã³ãã json 圢åŒã§ä¿åããæ©èœãæäŸããŸãã
Apple Instruments
Apple Instruments ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãç£èŠããã¡ã¢ãªãªãŒã¯ãç¹å®ãããã¡ã€ã«ã·ã¹ãã ã®ã¢ã¯ãã£ããã£ã远跡ããããã«äœ¿çšããã Xcode ã®éçºè ããŒã«ã®äžéšã§ãã
.png)
fs_usage
ããã»ã¹ã«ãã£ãŠå®è¡ãããã¢ã¯ã·ã§ã³ã远跡ããããšãã§ããŸãïŒ
fs_usage -w -f filesys ls #This tracks filesystem actions of proccess names containing ls
fs_usage -w -f network curl #This tracks network actions
TaskExplorer
Taskexplorer ã¯ããã€ããªã«ãã£ãŠäœ¿çšããã ã©ã€ãã©ãªã䜿çšããŠãã ãã¡ã€ã«ãããã³ ãããã¯ãŒã¯ æ¥ç¶ã確èªããã®ã«äŸ¿å©ã§ãã
ãŸãããã€ããªããã»ã¹ã virustotal ãšç
§åãããã€ããªã«é¢ããæ
å ±ã衚瀺ããŸãã
PT_DENY_ATTACH
ãã®ããã°èšäº ã§ã¯ãSIP ãç¡å¹ã«ãªã£ãŠããŠããããã°ãé²ãããã« PT_DENY_ATTACH ã䜿çšãã å®è¡äžã®ããŒã¢ã³ããããã°ãã æ¹æ³ã®äŸãèŠã€ããããšãã§ããŸãã
lldb
lldb 㯠macOS ãã€ã㪠ãããã° ã®ããã®ããã¡ã¯ãããŒã«ã§ãã
lldb ./malware.bin
lldb -p 1122
lldb -n malware.bin
lldb -n malware.bin --waitfor
ã€ã³ãã«ãã¬ãŒããŒãèšå®ããã«ã¯ãããŒã ãã©ã«ããŒã«**.lldbinit**ãšãããã¡ã€ã«ãäœæããæ¬¡ã®è¡ã远å ããŸã:
settings set target.x86-disassembly-flavor intel
Warning
lldbå ã§ã
process save-coreã䜿çšããŠããã»ã¹ããã³ãããŸãã
| (lldb) ã³ãã³ã | 説æ | ||||||||||||||||||||||
| run (r) | å®è¡ãéå§ãããã¬ãŒã¯ãã€ã³ããããããããããã»ã¹ãçµäºãããŸã§ç¶ç¶ããŸãã | ||||||||||||||||||||||
| process launch --stop-at-entry | ãšã³ããªãã€ã³ãã§åæ¢ããå®è¡ãéå§ããŸãã | ||||||||||||||||||||||
| continue (c) | ãããã°äžã®ããã»ã¹ã®å®è¡ãç¶ããŸãã | ||||||||||||||||||||||
| nexti (n / ni) | 次ã®åœä»€ãå®è¡ããŸãããã®ã³ãã³ãã¯é¢æ°åŒã³åºããã¹ãããããŸãã | ||||||||||||||||||||||
| stepi (s / si) | 次ã®åœä»€ãå®è¡ããŸããnextiã³ãã³ããšã¯ç°ãªãããã®ã³ãã³ãã¯é¢æ°åŒã³åºãã«å ¥ããŸãã | ||||||||||||||||||||||
| finish (f) | çŸåšã®é¢æ°ïŒâãã¬ãŒã âïŒå ã®æ®ãã®åœä»€ãå®è¡ããæ»ã£ãŠåæ¢ããŸãã | ||||||||||||||||||||||
| control + c | å®è¡ãäžæåæ¢ããŸããããã»ã¹ãå®è¡ïŒrïŒãŸãã¯ç¶è¡ïŒcïŒãããŠããå Žåãããã«ããããã»ã¹ã¯çŸåšå®è¡äžã®å Žæã§åæ¢ããŸãã | ||||||||||||||||||||||
| breakpoint (b) |
breakpoint delete help breakpoint #ãã¬ãŒã¯ãã€ã³ãã³ãã³ãã®ãã«ããååŸ help memory write #ã¡ã¢ãªãžã®æžã蟌ã¿ã®ãã«ããååŸ reg read reg read $rax reg read $rax --format <format> reg write $rip 0x100035cc0 ããã¯ããã©ã¡ãŒã¿ã§åç
§ããããªããžã§ã¯ããå°å·ããŸãã po $raw Appleã®Objective-C APIãã¡ãœããã®ã»ãšãã©ã¯ãªããžã§ã¯ããè¿ãããã"print object" (po) ã³ãã³ãã䜿çšããŠè¡šç€ºããå¿
èŠããããŸããpoãæå³ã®ããåºåãçæããªãå Žåã¯ã dis #çŸåšã®é¢æ°ãéã¢ã»ã³ãã« dis -n dis -n Tip ã³ã¢ãã³ãã¯æ¬¡ã®å Žåã«äœæãããŸãïŒ ãããã®å Žåãã³ã¢ãã³ã㯠ReportCrashã¯ã¯ã©ãã·ã¥ããããã»ã¹ãåæããã¯ã©ãã·ã¥ã¬ããŒãããã£ã¹ã¯ã«ä¿åããŸããã¯ã©ãã·ã¥ã¬ããŒãã«ã¯ãéçºè
ãã¯ã©ãã·ã¥ã®åå ã蚺æããã®ã«åœ¹ç«ã€æ
å ±ãå«ãŸããŠããŸãã ã¯ã©ãã·ã¥ã¬ããŒããAppleã«éä¿¡ãããããšãå¿é
ããŠããå Žåã¯ããããç¡å¹ã«ã§ããŸããããã§ãªãå Žåãã¯ã©ãã·ã¥ã¬ããŒãã¯ãµãŒããŒãã©ã®ããã«ã¯ã©ãã·ã¥ããããææ¡ããã®ã«åœ¹ç«ã¡ãŸãã MacOSã§ãã¡ãžã³ã°ãè¡ãéã¯ãMacãã¹ãªãŒãããªãããã«ããããšãéèŠã§ãïŒ SSHæ¥ç¶ãä»ããŠãã¡ãžã³ã°ãè¡ãå Žåãã»ãã·ã§ã³ãåæãããªãããã«ããããšãéèŠã§ããæ¬¡ã®ããã«sshd_configãã¡ã€ã«ã倿ŽããŠãã ããïŒ æ¬¡ã®ããŒãžã確èªããŠãã ãã ã©ã®ã¢ããªã æå®ãããã¹ããŒã ãŸãã¯ãããã³ã«ãåŠçããŠããããèŠã€ããæ¹æ³ãç¥ãããã«ïŒ macOS File Extension & URL scheme app handlers ããã¯ããããã¯ãŒã¯ããŒã¿ã管çããŠããããã»ã¹ãèŠã€ããã®ã«è峿·±ãã§ãïŒ ãŸã㯠CLIããŒã«ã«å¯Ÿå¿ããŠããŸãã macOS GUIããŒã«ã§ããã®ãŸãŸåäœããŸãããããã€ãã®macOSã¢ããªã«ã¯ããŠããŒã¯ãªãã¡ã€ã«åãæ£ããæ¡åŒµåããµã³ãããã¯ã¹ãããã¡ã€ã«ãèªã¿åãå¿
èŠããããªã©ãç¹å®ã®èŠä»¶ããããŸãïŒ ããã€ãã®äŸ: Tip AWSãããã³ã°ãåŠã³ãå®è·µããïŒ |



