Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
In The Middle Of Chatter #2
Search
Takahiro Yoshimura
October 29, 2024
Technology
0
29
In The Middle Of Chatter #2
Somewhat detailed dive to iOS application analysis methodology. (OWASP Saitama MTG #22, talk #1)
Takahiro Yoshimura
October 29, 2024
Tweet
Share
More Decks by Takahiro Yoshimura
See All by Takahiro Yoshimura
Repeat After Me #1
alterakey
0
20
Slaying 2FA
alterakey
0
17
Ghost Warden
alterakey
0
19
Toxic Oversight
alterakey
0
18
Reviewing 2024
alterakey
0
23
Chaotic Channel
alterakey
0
38
In The Middle Of Chatter #1
alterakey
0
40
Shadow Runners 2
alterakey
0
9
Shadow Runners
alterakey
0
9
Other Decks in Technology
See All in Technology
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
280
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
170
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
120
メルカリIBISの紹介
0gm
0
550
slog.Handlerのよくある実装ミス
sakiengineer
4
480
会社紹介資料 / Sansan Company Profile
sansan33
PRO
7
380k
使いやすいプラットフォームの作り方 ー LINEヤフーのKubernetes基盤に学ぶ理論と実践
lycorptech_jp
PRO
1
160
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
130
はじめてのOSS開発からみえたGo言語の強み
shibukazu
4
1k
Claude Code でアプリ開発をオートパイロットにするためのTips集 Zennの場合 / Claude Code Tips in Zenn
wadayusuke
5
2.2k
DroidKaigi 2025 Androidエンジニアとしてのキャリア
mhidaka
2
390
S3アクセス制御の設計ポイント
tommy0124
3
210
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
6.9k
Thoughts on Productivity
jonyablonski
70
4.8k
Raft: Consensus for Rubyists
vanstee
140
7.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Producing Creativity
orderedlist
PRO
347
40k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Writing Fast Ruby
sferik
628
62k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Transcript
IN THE MIDDLE OF CHATTER 2 OWASP SAITAMA MTG #22,
TALK #1 Image by quinn.anya on flickr, CC-BY-SA 2.0
TEXT SESSION FLAGS ▸ ըɾԻɾެ։: OK Image by Nico Kaiser
on flickr, CC-BY 2.0
TEXT WHO I AM ▸ Takahiro Yoshimura (@alterakey) https://keybase.io/alterakey ▸
Monolith Works Inc. Co-founder, CTO Security researcher ▸ ໌࣏େֶαΠόʔηΩϡϦςΟݚڀॴ ٬һݚڀһ
TEXT WHAT I DO ▸ Security research and development ▸
iOS/Android Apps →Financial, Games, IoT related, etc. (>200) →trueseeing: Non-decompiling Android Application Vulnerability Scanner [2017] ▸ Windows/Mac/Web/HTML5 Apps →POS, RAD tools etc. ▸ Network/Web penetration testing →PCI-DSS etc. ▸ Search engine reconnaissance (aka. Google Hacking) ▸ Whitebox testing ▸ Forensic analysis
TEXT WHAT I DO ▸ CTF ▸ Enemy10, Sutegoma2 ▸
METI CTFCJ 2012 Qual.: Won ▸ METI CTFCJ 2012: 3rd ▸ DEF CON 21 CTF: 6th ▸ DEF CON 22 OpenCTF: 4th ▸ ൃදɾߨԋͳͲ DEF CON 25 Demo Labs (2017) DEF CON 27 AI Village (2019) CODE BLUE (2017, 2019) CYDEF (2020) etc. Image by Wiyre Media on flickr, CC-BY 2.0
TEXT BACKGROUND ▸ LLMͷνϟοτΞϓϦ ʢChatGPT, GPT-4o, Claude .. ʣ ▸
͜ΕΒͷڍಈ…Ͳ͏ͳ͍ͬͯΔͷͩΖ͏͔ ▸ iOS൛ΞϓϦΛର Image by focal5 on flickr, CC-BY-NC 2.0
TEXT DEFEATING DRM ▸ App Store͕ʹ͋ͨΓ҉߸Խ+ॺ໊ ▸ ҉߸Խ͞Ε͍ͯΔͱવಡΊͳ͍ ▸ ҉߸ͷ͍ํʹ͞΄Ͳେ͖ͳͳ͍
→ਖ਼߈๏Ͱ͍͠ ▸ ࣮ʹղಡͤ͞Δͷ͕ྑ͍ɺ͕ ▸ ղಡπʔϧ͕App Storeʹ͋Δ…Θ͚ͳ͍ ▸ ղಡʹjailbreak͕ඞਢ Image by lantzilla on flickr, CC-BY-NC-ND 2.0
TEXT BREAKING OUT OF PRISON ▸ jailbreak ▸ ίʔυॺ໊ݕূػߏΛແޮԽ →Χʔωϧͷ੬ऑੑΛಥ͍ͯϑϥάΛԚછ
▸ checkm8: BootROMʹ͓͚Δuse-after-free →BootROMͳͷͰύονͰ͖ͳ͍ (<A12) ▸ checkra1n (12.x ..14.x) ▸ palera1n (15 .. 16.4, 15 .. 17.x) →2.0ܥ͔Βcheckra1nΛ෦తʹར༻ Image by Prab Bhatia Photography on flickr, CC-BY-NC-ND 2.0
TEXT NOW UNLEASHED, WHERE TO GO? ▸ ରͷΞϓϦΛղಡ͍ͨ͠ ▸ frida-ios-dump
→ϝϞϦμϯϓ͠ΞϓϦΛ࠶ߏ →frida͕ඞཁ ▸ frida: dynamic instrumentation framework! ▸ frida-serverΛattach ▸ APIݺͼग़͠ͷI/OͳͲࡉ෦͔Β੍ޚՄೳʹ Image by Mr. Littlehand on flickr, CC-BY-ND 2.0
TEXT REVERSING ▸ Ghidra: Multi-arch disassembler (NSA) radare2: Binary analysis
framework (pancake et al.) ▸ ؆୯ͷͨΊʹghidraΛ༻ Image by Simon Rankin on flickr, CC-BY-NC-ND 2.0
TEXT REVERSING TAKEAWAYS ▸ ղੳ analyzeHeadless ~/works/claude/t claude -preScript analysisopts_ios.py
-import Payload/ Claude.app/Claude ▸ औΓग़͠ analyzeHeadless ~/works/claude/t claude -postScript out.py -process Claude -noanalysis → out.asm(※) ͕ੜ͞ΕΔͷͰrename ▸ ※out.asmout.py͕উखʹܾΊ͍ͯΔϑΝΠϧ໊ Image by Thomas_H_foto on flickr, CC-BY-ND 2.0
TEXT NOW YOU ARE PIECES ▸ όΠφϦΛೖͯ͠ΞηϯϒϦΛճऩ ▸ ͋ͱ… ࣮ࡍͷղੳΛߦͳ͏
Image by Thomas_H_foto on flickr, CC-BY-ND 2.0
TEXT ANATOMY OF IOS APP ▸ iOSΞϓϦͷߏ ▸ Info.plist: ϝλใ
(_CodeSignature: ॺ໊) ▸ assets.car: Ϧιʔεྨ ▸ Frameworks: ϥΠϒϥϦྨ˞ ▸ (ΞϓϦ໊): Mach-O࣮ߦϑΝΠϧ˞
TEXT INFO.PLIST: METADATA ▸ ϝλใ ▸ ΞϓϦ໊ ▸ ATS ▸
bundle id ▸ ཁٻݖݶ ▸ URLεΩʔϜ etc.
TEXT FRAMEWORKS ▸ ΞϓϦ͕༻͢ΔϑϨʔϜϫʔΫ ▸ Mach-O dylib
TEXT EXECUTABLES ▸ ΞϓϦຊମ ▸ Mach-O executable - ԟʑʹͯ͠େ͖͍ ▸
͞·͟·ͳϥΠϒϥϦ͕੩తϦϯΫ͞ΕΔͨΊ
TEXT DISASSEMBLED CODE ▸ arm64-v8a (كʹarmv7s) ▸ OSʹObjC৭͕͍ͬͯΔͷͰจࣈྻΛղܾͰ͖ ͯ͠·͑APIϨϕϧͷղੳ͍͢͠ ▸
Swiftײ֮తʹC++ίʔυʹ͍ۙ name mangling: ॲཧܥͰdemangleͰ͖Δ͕… ىಈίετ͕ߴ͍ͷͰ͕ඞཁ ▸ AppleʹΑΔ৹͕ࠪ͋ΔͨΊ͔ɺཱͪೖͬͨ͜ͱ Λ͍ͯ͠Δίʔυ͋·ΓΈͳ͍…ͣʢʂʣ
TEXT ARTIFACTS ▸ ݟΔ͖Օॴ ▸ API call ▸ File operation
▸ Network operation ▸ Re fl ection ▸ Dynamic code loading ▸ etc...
TEXT ARTIFACTS: API CALL ▸ API call ▸ ObjC: objc_msgSend
▸ Swift: (mangled name)
TEXT ARTIFACTS: FILE ACCESS ▸ API call ▸ NSFile, NSFileManager,
etc. ▸ ϑΝΠϧΞΫηε
TEXT ARTIFACTS: NETWORK ACCESS ▸ API call ▸ NSURLRequest, etc.
▸ ωοτϫʔΫΞΫηε; ஶ໊ͳϥΠϒϥϦͷݺ ग़͕͜͠ΕʹΘΔ߹͕ԟʑʹͯ͋͠Δ (Alamo fi re, Moya, etc..)
TEXT ARTIFACTS: REFLECTIONS ▸ API call ▸ classFromString, selectorFromString, etc.
▸ ΫϥεηϨΫλΛจࣈྻ͔Βੜ
TEXT ARTIFACTS: DYNAMIC CODE LOADINGS ▸ API call ▸ dlsym
etc. ▸ ϥΠϒϥϦͷϓϩγʔδϟΞυϨεΛऔಘ
TEXT TS2-IOS: AUTOMATE THE ANALYSIS ▸ iOSΞϓϦղੳΛߦͳ͏trueseeing extension ▸ 2.2.5ͰmainϚʔδͨ͠:
ipa͕ղੳՄೳʹʂ ▸ API call, URL, dynamic code loading, syscall, re fl ection, jailbreak detection, debug probe, privacy concerns, obfuscations, assertions, logging, library imports, motion sensor, url scheme, ATS, permission, device requirements, device info probes, entitilements, copyright info, XOR ciphers, statically linked libraries ..
TEXT TS2-IOS: AUTOMATE THE ANALYSIS ▸ dockerͷ߹ͳΒ wc Λ /ext/ios
ͱͯ͠Ϛϯτ ͢Δ͚ͩ ▸ venvʹΠϯετʔϧ͍ͯ͠ΔͳΒpip ▸ ͜Ε͕ೖΔͱtrueseeingͰipaΛ։͚ΔΑ͏ʹ →͋ͱas!;gt report.txtͱ͢ΕऴΘΓ →HTMLͰग़͢ͳΒgh report.html ▸ disasm.tar.gzͱͯ͠ghidraͰdisasm͓ͯ͘͠ →ࠓͷͱ͜Ζ10.3ܥͷΈ
TEXT INSIDE TS2-IOS ▸ ipaͷplistྨΛղಡɾੳ ▸ disasm.tar.gzͱͯ͠·ͱΊΒΕ͍ͯΔ disassembled codeΛಡΜͰಛΛݕग़ ▸
API callΛྨ ▸ Swift symbol demangling ▸ Ϋϥε໊ͷ಄ࣙΛநग़
TEXT INSIDE TS2-IOS ▸ จࣈྻఆͷਪghidra·͔ͤ ▸ จࣈྻఆͷੳΛ༗ޮʹ ▸ fi eldΛେ͖͘औΔ
→લճݟͨΑ͏ͳܗͰpostscriptΛט·ͤΔ
TEXT TS2-SWIFT-DEMANGLE ▸ ໊લ͕ͻͲ͍… ▸ swiftॲཧܥdemanglerΛAPIԽ →swiftॲཧܥͷىಈ͕͗͢ΔͨΊ… ▸ ts2ͱϦϯΫ͢Δ͚ͩ (--link
ts2-swift-demangle)
TEXT TS2-DISASM-GHIDRA ▸ ipa/apkΛ͢ͱghidraͰdisasm͢Δcontainer ▸ docker run --rm -v $(pwd):/out
ts2-disasm- ghidra target.ipa → ͜Ε͚ͩͰdisasm.tar.gzΛੜ ▸ streamingੜ: σΟεΫʹ༏͍͠ ▸ ͨͩແ͔͔ۤ࣌ؒΔ
TEXT CLAUDE: FINDINGS ▸ ͋·Γͳ͍…͕ ▸ ಈతίʔυϩʔυ ▸ PasteboardͷΞΫηε ▸
cydiaͷݕग़ ▸ σόΠεϞσϧφϯόʔͷݕग़
TEXT TAKEAWAYS ▸ iOSΞϓϦੳʹ͓͍ͯݟΔ͖Օॴ ▸ Info.plist: ϝλใ Frameworks: ϥΠϒϥϦྨ˞ (ΞϓϦ໊):
Mach-O࣮ߦϑΝΠϧ˞ ▸ ObjC৭͕·ͩ·ͩڧ͍: call͕จࣈྻఆͰग़ݱ ▸ SwiftC++ʹ͍ۙҹ: demangling͕༗༻ ▸ ࠷৽։ൃಈͱϥΠϒϥϦͷ͕ࣝେࣄ
TEXT TAKEAWAYS ▸ ͳͷjailbreak͔Βͷఠग़ ▸ trueseeingͱghidraͷҖ ▸ disasmͯ͠͠·͑ੳ·ͰҰؾ௨؏ ▸ disasm͕͔͔࣌ؒΔ͕ࣗಈԽՄೳ
(radare2ͰͰ͖Δͱ͍͍ͷ͕ͩ…) ▸ ͱ͍͏͜ͱͰͦΖͦΖiOSਖ਼ࣜରԠ༧ఆ
FIN. 29.10.2024 TAKAHIRO YOSHIMURA (@ALTERAKEY)