Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SECCON2016Yokohama x CEDEC CHALLENGE(totem)

totem
September 10, 2016

SECCON2016Yokohama x CEDEC CHALLENGE(totem)

SECCON2016横浜 x CEDEC CHALLENGEで発表した資料
ところどころ誤りが存在するのは仕様です(・ω<) テヘペロ

totem

September 10, 2016
Tweet

Other Decks in Programming

Transcript

  1. • είΞͷվ͟Μ͸Ͱ͖Δ͔?
 • HPΛෆਖ਼ʹ૿ՃͰ͖Δ͔?
 NightMareͷ਍அ݁Ռ ਍அ݁Ռ:είΞͷվ͟Μ΍HPͷෆਖ਼૿Ճ͸೉͍͠
 ϦεΫ: ͳ͠
 Өڹ: ͳ͠


    ରԠࡦ: ͳ͠
 
 ݕূ؀ڥ: BlueStacks(0.9.30, Android 4.4.2)+ GameGurdian(8.5.6)
 ॴݟ: ϝϞϦ͕ద੾ʹ҉߸Խ͞Ε͍ͯΔͨΊʹɺ
 ͜ΕΒͷϝϞϦվ͟Μʹର͢Δνʔτ͸೉͍͠ 
 SECCON 2016 x CEDEC CHALLENGE
  2. • ήʔϜຊମͷιʔείʔυΛӾཡͰ͖Δ͔? NightMareͷ਍அ݁Ռ ਍அ݁Ռ: ήʔϜຊମͷιʔείʔυͷӾཡ͸Մೳ
 ϦεΫ: େ
 Өڹ: ஌తࡒ࢈ͷଛࣦ
 ରԠࡦ:

    ޙड़
 
 ݕূ؀ڥ: Android Virtual Device(Nexus5 Android 6.0) ॴݟ: ϦόʔεΤϯδχΞϦϯάରࡦࣗମ͸ߦ͍ͬͯΔ ΋ͷͷෆे෼Ͱ͋Γɺ΋ͬͱద੾ͳରࡦ͕ඞཁͰ͋Δ
 SECCON 2016 x CEDEC CHALLENGE
  3. • ήʔϜຊମͷιʔείʔυΛӾཡͰ͖Δ͔? NightMareͷ਍அ݁Ռ ࠶ݱख๏ πʔϧ: - GikDbg.Art ͳͲɺAndroid্ͰgdbΛ࢖͏πʔϧ - foremost

    ͳͲɺόΠφϦ͔ΒϑΝΠϧΛ෮ݩ͢Δπʔϧ - ILSpyͳͲɺdllϑΝΠϧ͔ΒC#ιʔείʔυΛ෮ݩ͢Δπʔϧ ख๏: ήʔϜͷϓϩηεΛgdbʹΞλονͯ͠ɺcoreϑΝΠϧΛಘΔ
 foremostͳͲͷπʔϧͰcoreϑΝΠϧ͔ΒdllϑΝΠϧΛ෮ݩ͢Δ
 ILSpyͳͲͷπʔϧͰdll͔ΒC#ͷιʔείʔυΛ෮ݩ͢Δ SECCON 2016 x CEDEC CHALLENGE
  4. • ήʔϜຊମͷιʔείʔυΛӾཡͰ͖Δ͔? NightMareͷ਍அ݁Ռ ରࡦҊ·ͱΊ SECCON 2016 x CEDEC CHALLENGE ίετ

    ϝϦοτ σϝϦοτ ೉ಡԽ ௿ খ খ ILͰهड़ த த খ IL2CPP த େ த ՄೳͰ͋Ε͹IL2CPPΛબ୒ɺͦ͏Ͱͳ͚Ε͹ILͰͷهड़ͱ೉ಡԽΛߦ͍͍ͨ
  5. • είΞͷվ͟Μ͸Ͱ͖Δ͔?
 • HPΛෆਖ਼ʹ૿ՃͰ͖Δ͔?
 NightMareͷ਍அ݁Ռ ιʔείʔυͷӾཡ͕ՄೳͳΒ͹ɺ
 ιʔεͷॻ͖׵͑Ͱ্ͷΑ͏ͳνʔτ͕Մೳ͔ʁ SECCON 2016 x

    CEDEC CHALLENGE dllͷ෮߸Խॲཧ͕ߦΘΕΔͨΊɺ҉߸Խ͞Εͯͳ͍վ଄dllΛ഑ஔͯ͠΋ಈ͔ͳ͍
 ·ͨɺ҉߸Խͷ伴ͷೖख͸೉͍͠
 ෮߸Խॲཧ෦෼ʹύονΛ౰ͯΔͱ͍͏ख๏΋͋Δ͕ɺ೉͍͠ ΋ͪΖΜ೉͍͕͠ՄೳͰ͸͋ΔͷͰɺιʔείʔυͷӾཡࣗମΛ๷͙΂͖
  6. • είΞͷվ͟Μ͸Ͱ͖Δ͔?
 • HPΛෆਖ਼ʹ૿ՃͰ͖Δ͔?
 NightMareͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE

    ೉͍͕͠ɺ෮߸Խॲཧ෦෼ʹύονΛ౰ͯΕ͹ՄೳͰ͋Δ ࠶ݱख๏ πʔϧ: - VisualStudio - IDA Pro DEMO - Stirling ͳͲͷόΠφϦΤσΟλ ख๏: VisualStudioͰapkιʔείʔυͷdllΛվ͟Μͯ͠Ϗϧυ
 IDA Pro ͰɺϑΝΠϧ෮߸Խॲཧ෦෼Λ୳͠ɺ
 StirlingͰॻ͖׵͑Δ
  7. • είΞͷվ͟Μ͸Ͱ͖Δ͔?
 • HPΛෆਖ਼ʹ૿ՃͰ͖Δ͔?
 NightMareͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE

    IDA ProͰAssembly-CSharpͷಡΈࠐ·ΕΔ৔ॴΛಛఆ͠ɺ
 StirilingͷΑ͏ͳόΠφϦΤσΟλͰcrypt෦෼Λ
 nop(Կ΋͠ͳ͍)ͰຒΊΔ
 (Demo൛Ͱ͸ฤूΛอଘͰ͖ͳ͍) ࠶ݱख๏ͷ࣮ࡍ
  8. • είΞͷվ͟Μ͸Ͱ͖Δ͔?
 • HPΛෆਖ਼ʹ૿ՃͰ͖Δ͔?
 NightMareͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE

    ࠶ݱख๏ͷ࣮ࡍ ૬खͷ߈ܸͰମྗ͕ݮࢉ͞ΕΔॲཧΛ
 Ճࢉʹมߋͯ͠Ϗϧυ͢Δ
  9. • είΞͷվ͟Μ͸Ͱ͖Δ͔?
 • HPΛෆਖ਼ʹ૿ՃͰ͖Δ͔?
 NightMareͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE

    ࠶ݱख๏ͷ࣮ࡍ ࣗ༝ʹιʔε͕ॻ͖׵͑ΒΕΔͷͰHPɺείΞʹݶΒͣ߈ܸྗͷνʔτ΍
 ఢͷࣗյͰ΋ԿͰ΋ࣗ༝ʹͰ͖ͯ͠·͏
  10. • είΞͷվ͟Μ͸Ͱ͖Δ͔?
 • HPΛෆਖ਼ʹ૿ՃͰ͖Δ͔?
 NightMareͷ਍அ݁Ռ ରࡦҊ SECCON 2016 x CEDEC

    CHALLENGE ιʔείʔυͷӾཡࣗମΛ๷͙ վ͟Μݕ஌΋nopͰ௵͞Εͯͦ͜·ͰޮՌ͕ͳ͍ͷͰ
  11. NightMareͷ਍அ݁Ռ ࠓޙIL2CPPͰ͸ϦόʔεΤϯδχΞϦϯάΛ๷͖͗ΕΔ͔? SECCON 2016 x CEDEC CHALLENGE IL2CPPͷڧΈ 
 ->

    UnityEngine෦෼ɺIL2CPP෦෼ɺϢʔβʔίʔυ෦෼͕શͯStripped Binary
 -> ͜ΕͰ͸ղੳ͕౰વ೉͍͠
 IL2CPPͷഁΓํ
 UnityEngine෦෼ɺIL2CPP෦෼ʹ͍ͭͯ͸ڞ௨෦෼Ͱ͋ΔͷͰɺಛఆ͕Մೳ
 ࠓޙ೥݄͕ܦͭʹ͖ͭɺΞηϯϒϥ͔ΒͲͷؔ਺͔ಛఆ͞Ε͏ΔΑ͏ʹͳΔ
 
 -> ͋ͱ͸ϢʔβʔίʔυͷΞηϯϒϥ͚ͩ͹ಡΊ͹͍͍
 -> ಛʹUnityEngineʹ৐͔ͬΔϓϩάϥϜͰ͋Δ͔ΒɺUnityEngineͷͲͷؔ਺ΛݺͿ͔Ͱ
 -> େମͷϓϩάϥϜͷಈ͖͕෼͔ͬͯ͠·͏ ैདྷͷAnti-Disassembleٕज़(ΨʔϕʔδόΠτͷ഑ஔͳͲ)ͱ૊Έ߹Θͤͯ๷͙΂͖
  12. εςʔδΫϦΞঢ়گٴͼελϛφͷվ͟Μ͕༰қ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ϦεΫ: த
 Өڹ:

    ήʔϜͷण໋ΛॖΊΔ
 ରԠࡦ: ޙड़
 
 ݕূ؀ڥ:Android Virtual Device(Nexus5 Android 6.0)
 ॴݟ: rootԽͯ͠shared_prefsΛॻ͖׵͑Δ͚ͩͰग़དྷ ΔͷͰ༰қ

  13. εςʔδΫϦΞঢ়گٴͼελϛφͷվ͟Μ͕༰қ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ࠶ݱख๏ πʔϧ: -

    rootԽͨ͠Android୺຤ ख๏: /data/data/com.kenji.seccon.cedec.game/shared_prefs/ com.kenji.seccon.cedec.game.xml
 ͷstamina_update_timeͷvalue΍game_flagɺstaminaͳͲΛฤू͢Δ
  14. εςʔδΫϦΞঢ়گٴͼελϛφͷվ͟Μ͕༰қ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE νʔτͰ͸ͳ͍͕… ύεϫʔυ͕ฏจอଘ͞Ε͍ͯΔ
 ->

    ΞΧ΢ϯτϋοΩϯάʹͭͳ͕Δ
 ख๏
 ϑΝΠϧ͔ΒύεϫʔυͱIDΛಡΈग़ͯ͠௨৴͢ΔΞϓϦΛ࡞Γ
 SUNIDRA2ͷνʔτπʔϧΛ໊৐ͬͯ഑෍͢Δ
 [rootԽ͍ͯ͠ΔSUNIDRA2ϢʔβʔʹλʔήοτΛߜΕΔ] ରࡦҊ ύεϫʔυΛฏจอଘ͠ͳ͍ ͔͠͠ɺΦʔτίϯϓϦʔτͰύεϫʔυΛิ׬͢ΔͨΊʹ෮߸ॲཧ͕ΞϓϦʹؚ·ΕΔ
 -> ϦόʔεΤϯδχΞϦϯάͰ෮߸ॲཧ͕ݟ͚ͭΒΕΔͱഁΒΕΔ ϢʔβʔଆͰrootԽ͠ͳ͍ɺո͍͠πʔϧΛΠϯετʔϧ͠ͳ͍
  15. εςʔδΫϦΞঢ়گٴͼελϛφͷվ͟Μ͕༰қ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ରࡦҊ̍ Root୺຤Ͱ͸ήʔϜΛϓϨΠग़དྷͳ͍Α͏ʹઃఆ͢Δ ϝϦοτ

    σϝϦοτ ଞͷνʔτ΁ͷରࡦͱͯ͠΋ػೳ͢Δ RootͰxml͕ฤूͰ͖ɺ͔ͭΞϓϦଆ͔Β͸rootͰ͸ͳ͍Α ͏ʹݟ͑ΔΑ͏ʹઃఆͰ͖ΔͷͰޮՌ͸ݶఆత ίετ த
  16. εςʔδΫϦΞঢ়گٴͼελϛφͷվ͟Μ͕༰қ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ରࡦҊ̎ xmlʹ֨ೲ͢ΔσʔλΛ҉߸Խ͢Δ+ϋογϡͰվ͟Μݕ஌ ϝϦοτ

    σϝϦοτ σʔλͷվ͟Μ͕೉͘͠ͳΔ ελϛφͳͲ͸ɺϋογϡʹΑΔվ͟Μݕ஌ΛؚΊͨͱͯɺ ஋ͱͦͷ࣌ͷϋογϡΛه࿥͢Δ͜ͱͰɺϋογϡ΋ؚΊ վ͟Μ͢Δ͜ͱͰվ͟Μݕ஌ΛճආͰ͖ͯ͠·͏ ίετ த
  17. εςʔδΫϦΞঢ়گٴͼελϛφͷվ͟Μ͕༰қ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ରࡦҊ̏ ͦ΋ͦ΋୺຤ʹͦ͏͍ͬͨσʔλΛอଘ͠ͳ͍ ϝϦοτ

    σϝϦοτ ϩʔΧϧσʔλͷվ͟ΜΛ׬શʹ્ࢭͰ͖Δ ௨৴ྔ͕େ͖͘ͳͬͯ͠·͏
 αʔόʔͱͷ௨৴ؒνʔτʹϦεΫ͕ूத͢Δ ίετ த
  18. SUNIDRA2ͷ਍அ݁Ռ ରࡦҊ·ͱΊ SECCON 2016 x CEDEC CHALLENGE ίετ ϝϦοτ σϝϦοτ

    Rootରࡦ த த খ ҉߸Խ
 +վ͟Μݕ஌ த த খ σʔλͷҠৡ த େ த Rootରࡦ͸ޮՌ͸ݶఆత͕ͩߦ͏΂͖ɺԼ2ͭͷରࡦ͸ΞϓϦʹԠͯ͡બ୒ εςʔδΫϦΞঢ়گٴͼελϛφͷվ͟Μ͕༰қ
  19. ΞϓϦىಈ࣌ʹωοτϫʔΫ͕ෆ௨ͷ৔߹ɺ ϩάΠϯޙͷ௨৴͕ෆೳʹͳΔ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ϦεΫ: ࢀߟఔ౓


    Өڹ: ϢʔβʔͷࠞཚΛট͘
 ରԠࡦ: ޙड़
 
 ݕূ؀ڥ:Android Virtual Device(Nexus5 Android 6.0)
 ॴݟ: ޙड़ͷνʔτํ๏Λࢥ͍ͭ͘ख͕͔ΓͱͳΓಘΔ

  20. ΞϓϦىಈ࣌ʹωοτϫʔΫ͕ෆ௨ͷ৔߹ɺ ϩάΠϯޙͷ௨৴͕ෆೳʹͳΔ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ࠶ݱख๏ͷ࣮ࡍ πʔϧ:

    - /etc/hostsͷॻ͖׵͑ΒΕͨAndroid୺຤ - burp suite ͳͲͷϓϩΩγπʔϧ ख๏: BurpͰΞϓϦىಈ࣌ʹߦΘΕΔ௨৴Ͱbodyʹcodeͱ͍͏key͕͋Δ ϦΫΤετΛDrop͢Δ
  21. μΠϠੴɺ߈ܸྗɺମྗɺίΠϯͷվ͟Μ͕Մೳ SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ϦεΫ: େ
 Өڹ:

    ήʔϜόϥϯεͷ่յɺήʔϜͷण໋ΛॖΊΔ
 ରԠࡦ: ޙड़
 
 ݕূ؀ڥ:Android Virtual Device(Nexus5 Android 6.0)
 ॴݟ: ࣮૷্ͷෆඋ͔Β͔ɺϩʔΧϧͰͷΈμΠϠੴΛ500 ݸʹ૿΍͢͜ͱ͕Ͱ͖Δ
 ੴʹର͠՝ۚͳͲΛ՝͢৔߹ɺ՝ۚγεςϜ่͕յ͢Δ
 (μΠϠੴͷվ͟ΜʹΑͬͯ࢒Γ3ύϥϝʔλͷνʔτ)
  22. SUNIDRA2ͷ਍அ݁Ռ SECCON 2016 x CEDEC CHALLENGE ࠶ݱख๏ πʔϧ: - /etc/hostsͷॻ͖׵͑ΒΕͨAndroid୺຤

    - burp suite ͳͲͷϓϩΩγπʔϧ ख๏: ϓϩΩγπʔϧͰ௨৴Λվ͟Μ͢Δ μΠϠੴɺ߈ܸྗɺମྗɺίΠϯͷվ͟Μ͕Մೳ
  23. SECCON 2016 x CEDEC CHALLENGE ࠶ݱख๏ͷ࣮ࡍ μΠϠੴɺ߈ܸྗɺମྗɺίΠϯͷվ͟Μ͕Մೳ ਖ਼نαʔόʔ ࣮૷ͷෆඋͰੴ500ί ߈ܸྗUpɺମྗUpͳͲͷϦΫΤετ

    ѱҙ͋Δαʔό ஋ͷݕূΛߦΘͣɺৗʹsuccessΛฦ͢ ※αʔόʔ͸೚ҙ͕ͩɺࠓճ͸node.jsΛ༻͍ͨ Ϧ μ Π Ϩ Ϋ τ SUNIDRA2ͷ਍அ݁Ռ
  24. SUNIDRA2ͷ਍அ݁Ռ ରࡦҊ·ͱΊ SECCON 2016 x CEDEC CHALLENGE ίετ ϝϦοτ σϝϦοτ

    ࣮૷ͷෆඋͷగਖ਼ ௿ த ಛʹͳ͠ ௨৴λΠϛϯά ͷվળ ௿ த ಛʹͳ͠ responseͷ҉߸Խ த த খ ͍ͣΕ΋িಥ͠ͳ͍ͷͰׂ͚ΔίετʹԠͯ͡ߦ͏΂͖ μΠϠੴɺ߈ܸྗɺମྗɺίΠϯͷվ͟Μ͕Մೳ