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
Chasing In The Backstage
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takahiro Yoshimura
August 30, 2022
Technology
20
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Chasing In The Backstage
Analysis of iOS/Android versions of TikTok (OWASP Saitama MTG #9, talk #2)
Takahiro Yoshimura
August 30, 2022
More Decks by Takahiro Yoshimura
See All by Takahiro Yoshimura
Irresistible Dance
alterakey
0
21
Behind The Mask
alterakey
0
30
The Withering Frost
alterakey
0
58
Reviewing 2025
alterakey
0
43
Repeat After Me #2
alterakey
0
67
Repeat After Me #1
alterakey
0
52
Slaying 2FA
alterakey
0
39
Ghost Warden
alterakey
0
32
Toxic Oversight
alterakey
0
39
Other Decks in Technology
See All in Technology
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
220
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
ホームラボ紹介
y_sera15
0
180
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
260
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
250
第3回しろおびセキュリティスポンサーセッション
log0417
0
200
Digitization部 紹介資料
sansan33
PRO
2
7.7k
ハーレムエンジニアリング
kazuma777777
0
160
SmartHR Engineering Team Deck
smarthr
1
2.1k
その“隠したつもり”が命取り ── 自前と平文をやめて「正解」に委ねる
kuroneko13
0
120
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
570
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
910
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
470
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
640
Evolving SEO for Evolving Search Engines
ryanjones
0
250
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
540
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
480
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Building AI with AI
inesmontani
PRO
1
1.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Language of Interfaces
destraynor
162
27k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Transcript
CHASING IN THE BACKSTAGE OWASP SAITAMA MTG #9, TALK #2
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
DO YOU KNOW..?
TIKTOK ▸ ྑ͘ΘΕ͍ͯΔSNSΞϓϦ ▸ ಈըڞ༗ ▸ ίϝϯτػೳ etc.
TIKTOK ▸ ӡӦମ ▸ ByteDance Ltd. (த՚ਓຽڞࠃ) Photo by VCG
TEXT BACKGROUND ▸ In-app browserʹJSΛೖ →͜Ε͚ͩͳΒྑ͋͘Δ →KeystrokeΛऔ͍ͬͯΔͷͰʁͱ͍͏ٙ ▸ ൃݟऀʹΑͬͯݕग़αΠτ͕࡞͞Εͨ ▸
TikTokͷଞʹInstagramSnapchatͳͲ ▸ Androidʹ͍ͭͯʁެࣜൃදͳ͠ ▸ iOS 14.3Ҏ߱Ͱݕग़ෆೳͳख๏͕ར༻Մೳʹ (WKContentWorld) →ܯΛ໐Β͍ͯ͠Δ
TEXT BACKGROUND ▸ ੩తʹݟ͑ͳ͍ͷ͔ʁ AndroidӨڹͳ͍ͷ͔ʁ →͜ΕҎ֎ʹಠࣗղੳɾൃදࠓݱࡏͳ͍ ▸ ੩తղੳʹϦόʔεΤϯδχΞϦϯά
WAIT, BUT IS IT LEGAL? ▸ ຊͰ߹๏ʹͳΓ·ͨ͠ (ஶ࡞ݖ๏ୈ30ͷ4) ▸ ͍ͭ࠷ۙ·Ͱҧ๏ɺ͕ͩͬͨ:
Βͳ͍ͱݟ͑ͳ͍ ▸ ͦΕࠃӹʹ͔ͳ͏͜ͱʁ →ͦ͜·Ͱͯ͠ஶ࡞ݖอޢ͞ΕΔ͖ͳͷ͔ʁ →ҧ๏Ͱ͋ͬͯΔҙຯ ɹˠ࣮ߦ͢ΔΛཧղ͠Α͏ͱ͢Δવͷߦҝ ɹɹʢ৯Ͱ͋Εݪࡐྉͷੳʹ૬ʣ →ղੳ͕ҋͷख๏ʁ ɹˠಉௐѹྗͱ૬·ΓɺӴೳྗ্͕͠ͳ͍ཧ༝Λ ͍ͯ͠Δͱߟ͑ΒΕΔ Photo by Onasill ~ Bill - 78.8M on flickr, CC-BY-NC-SA 2.0
CASE 1: IOS
TEXT TARGETS ▸ TikTok (us): 25.8.0
TEXT TOOLCHAIN ▸ Ghidra: Multiarch Disassembler (NSA) ▸ frida-ios-dump: Binary
dumper (Alone_Monkey et al.) Swiss Army Knife on black by Edgar Pierce on flickr, CC-BY 2.0
STATIC ANALYSIS ▸ ੩తղੳ ▸ Ϧιʔεղੳ ▸ όΠφϦղੳ: AArch64
OVERVIEW ▸ App StoreʹΑΔ҉߸Խ (FairPlay) ▸ jailbrokenͱfrida-ios-dumpͰղಡ ▸ Ͱ෮߸ͤ͞ɺϝϞϦղੳͰఠग़ ▸
࣮ߦʹઌཱͬͯOS͕શจΛ෮߸Խ͢Δ͜ͱΛ ར༻ɺෆਖ਼ݕ͕͋ͬͯແ ▸ ৗखஈ͕ͩൺֱతΒΕ͍ͯͳ͍ The App Store by Glen Bledsoe on flickr, CC-BY 2.0
JAILBREAK ▸ Apple͕ڐՄ͍ͯ͠ͳ͍ίʔυΛ࣮ߦͤ͞Δ͜ͱ ͕Ͱ͖Δ ▸ FairPlayͷղআʹඞਢ ▸ ࠓճcheckra1nΛ༻ (~iOS 14.5)
→Intel Mac͕ඞཁͩͬͨ…
JAILBREAK ▸ fridaͷηοτΞοϓ →ղੳϗετʹfrida-ios-dump͕ඞཁ https://github.com/AloneMonkey/frida-ios- dump jailbreak by Viniloco on
flickr, CC-BY-NC-ND 2.0
TEXT RESOURCE ANALYSIS ▸ Assetͷதʹڵຯਂ͍༰ ▸ ಛఆͷύεʹ͍ͭͯτϦΨ͕͋Δ ▸ ϩʔΧϧDNSΛૡ͍જΔՄೳੑ
TEXT RESOURCE ANALYSIS ▸ Assetͷதʹڵຯਂ͍༰ ▸ WebViewΛࢹ͢ΔΑ͏ͳهड़ →ҰݟύϑΥʔϚϯεऔಘʹݟ͑Δɺ͕… →͜Ε͕औΓͭ͘ͱ͢Εେมͳ
TEXT ARCHITECTURE ▸ Private Frameworkͱͯ͠શϩδοΫ͕֨ೲ →ϝΠϯόΠφϦ͕͵͚ͷ֪ʂ ▸ ετϦϯάςʔϒϧɺϝιουςʔϒϧͷѹॖ ▸ ࣮ߦ࣌ʹϩʔμʔ͕ల։
→Private FrameworkԽ͍ͯ͠Δཧ༝
TEXT ARCHITECTURE ▸ ѹॖ ▸ LZFSE: COMPRESSEDV2_BLOCK (“bvx2”) ▸ _C_ҎԼͷηΫγϣϯˠ_D_ҎԼల։
▸ cstring, ustring, methname, methtype ▸ ͋Εʁcfstring, selrefs… →͓ͦΒ͘ผϥΠϒϥϦ͔Βల։͍ͯ͠Δ →ਅ૬ෆ໌͕ͩଟཚ࡞
TEXT ARCHITECTURE ▸ cfstring, selrefsͱ… ▸ Objective-Cͷจࣈྻϝιουࢀর →ղੳʹඞཁෆՄܽͳใ ▸ จࣈྻͰͳ͘ΞυϨεςʔϒϧ
→ਖ਼֬ʹղ͔ͳ͍ݶΓҙຯΛҝ͞ͳ͍
TEXT PROTECTION ▸ ੩తʹଘࡏ͠ͳ͍ →Objective-C 2.0 Messageղੳ͕ޮ͔ͳ͍ →iOSΞϓϦղੳʹ͓͍ͯக໋త ▸ ਵͱಛघͳߏ
▸ ྺͷTikTokɺ͓ΑͼಉࣾʹΑΔฒߦϓϩμΫ τ (e.g. Lemon8) ͰྫΛݟͳ͍… ݼଉͳखஈ
TEXT BREACHING THE PROTECTION ▸ ϝϞϦμϯϓ߈ܸ ▸ ࣮ࡍʹಈ࡞ͤ͞ԾϝϞϦΛࠜͦ͗͜ऩू →ಈతใΛԣऔΓ͢Δৗखஈ ▸
Fridump →readonly/writableͷ2ηοτऔΔ ▸ cfstring, selrefs͜ΕͰऔΕΔ…ͣ
TEXT BREACHING THE PROTECTION ▸ ϝϞϦμϯϓ߈ܸ ▸ …͕ɺASLRͷհࡏʹҙ ▸ ASLR:
Address Space Layout Randomization ▸ ͕࣮ߦ࣌ʹΞυϨεۭؒΛγϟοϑϧ ▸ ϝϞϦഁյܥ߈ܸʹର͢Δॏཁͳޚػߏ ʢBuffer over fl ow, Return-oriented programmingͳͲʣ
TEXT BREACHING THE PROTECTION ▸ Կ͕ʁ ▸ ࣮ߦϑΝΠϧ: ૬ରΞυϨεࢀর (PIE:
Position-Independent-Executable) ▸ ࣮ߦ࣌Πϝʔδ: ઈରΞυϨεࢀর ▸ Πϝʔδ͔ΒηΫγϣϯΛషΓࠐΉ͚ͩͰ ΞυϨε͕߹Θͳ͍ (→ςʔϒϧ͕ਖ਼֬ʹղ͚ͳ͍) ▸ ࣮ߦϑΝΠϧ࠶ߏ͠ʹ͍͘ →ASLRΛ࡞ʹར༻͍ͯ͠ΔΑ͏ʹݟ͑Δ
TEXT BREACHING THE PROTECTION ▸ ϑΝΠϧͰͳ͘ϝϞϦΠϝʔδΛղੳ ▸ Մೳ͕ͩ໘Ͱ͋Δ →ηΫγϣϯԟʑʹͯ͠ଟ ▸
ΤϯτϦϙΠϯτͳͲͷใ͕શͯܽམ →Ͳ͔͜ΒղੳΛߦͳ͏ͷ͔ʁ
TEXT BREACHING THE PROTECTION ▸ ໘͕ͩͬͨؤுͬͨ →ࠓճro͔Β15%ఔ; rw͔ΒཁٻʹԠͯ͡ →selrefs͕ͦͦwritable… ▸
ΤϯτϦϙΠϯτ ▸ 103240000͕Mach-Oϔομ →શͰͳ͍ͷͰ݁ہGhidraʹͤͨ (“Analyze function starts”) ▸ ͔͔͕࣌ؒͬͨ…
TEXT PROTECTION IS HISTORY ▸ ༗ҙٛͳใ͕औΕΔΑ͏ʹͳͬͨ (~30min. / M1 MacBookPro)
▸ एׯͷ ▸ objc_msgSendͳͲͷC APIίʔϧͷղܾ ▸ ηΫγϣϯͷܧଓతͳషΓࠐΈ
TEXT VERDICT ▸ Ϧιʔεʹpayload͕ଘࡏɺ͔ͭ ▸ WebViewʹऔΓ͘Մೳੑͷ͋ΔAPIίʔϧ͋ Δ͍ͦ͏͍͏ڍಈʹͭͳ͕ΔγϯϘϧ͕ଘࡏ ▸ ຊདྷ͏গ͖ͪ͠ΜͱηΫγϣϯΛ࠶ߏ͠ ͯݟΔඞཁ͕͋Δɺ͕ݶΓͳ͍Ϋϩ
→ཪ͚͕ͮऔΕͨ
BUSTED. Uni. Cat. Plausibly part Manx. by ▓▒░ TORLEY ░▒▓
on flickr, CC-BY-SA 2.0
CASE 2: ANDROID
TEXT TARGETS ▸ TikTok (us): 25.9.4 (Android)
TEXT TOOLCHAIN ▸ Trueseeing: Non-decompiling Android app vulnerability scanner (alterakey
et al.) Swiss Army Knife on black by Edgar Pierce on flickr, CC-BY 2.0
TEXT RESOURCE ANALYSIS ▸ Assetͷதʹڵຯਂ͍༰ ▸ WebViewࢹεΫϦϓτྨͷଘࡏ →iOS൛ͱಉ
TIME OUT
TEXT TAKEAWAYS ▸ In-app browserԚછݕग़αΠτສೳͰͳ͍ ▸ Android͓ͦΒ͘ಉ༷ (payload͕֬ೝͰ͖Δ) ▸ In-app
browser֎͔Β͍Ζ͍ΖհೖͰ͖Δ ▸ In-app browserΛ༏ઌ͢Δ෩ைͲ͏ͳͷ͔ →ϢʔβʹબࢶΛఏڙ͖͢ →Androidಉ༷
FIN. 30.8.2022 TAKAHIRO YOSHIMURA (@ALTERAKEY)