How to Dump Decrypt IPA?
สวัสดีครับทุกคน,
บทความนี้เราจะพาทุกคนไปทำความเข้าใจกับขั้นตอนและเทคนิคในการดึงไฟล์ IPA ที่ไม่มีการเข้ารหัส (Decrypt IPA) โดยเริ่มจากการอธิบายพื้นฐานของไฟล์ IPA คืออะไร มีโครงสร้างอย่างไร และเหตุผลว่าทำไมการเข้าถึง IPA แบบ Decrypt จึงมีความสำคัญในกระบวนการวิเคราะห์หรือทดสอบด้านความปลอดภัยของแอปพลิเคชัน iOS จากนั้นเราจะลงลึกไปยังเครื่องมือที่ใช้ และวิธีการในการดึงไฟล์ IPA เหล่านี้ออกมา โดยในบทความนี้จะครอบคลุมเทคนิคทั้งในกรณีที่อุปกรณ์ถูก Jailbreak และกรณีที่ยังเป็น Non-Jailbreak
หัวข้อของบทความ
· IPA คืออะไร?
· ทำไมต้องดึง IPA แบบ Decrypt?
· ขั้นตอนการตรวจสอบว่าไฟล์ IPA ถูกเข้ารหัส (Encrypted) หรือไม่?
· ขั้นตอนการดึง IPA แบบ Decrypt สำหรับอุปกรณ์ Jailbreak
· ขั้นตอนการดึง IPA แบบ Decrypt สำหรับอุปกรณ์ Non-Jailbreak
IPA คืออะไร?
IPA ย่อมาจาก iOS App Store Package เป็นไฟล์หลักที่ใช้สำหรับติดตั้งแอปพลิเคชันบนระบบปฏิบัติการ iOS หรือพูดง่าย ๆ ก็คือเป็นเหมือน “กล่อง” ที่บรรจุทุกอย่างที่แอปต้องใช้ไว้ในนั้น ไม่ว่าจะเป็นโค้ดหลักที่เป็น binary, ไฟล์มีเดียต่าง ๆ อย่าง ภาพ วิดีโอ เสียง, รวมถึงไฟล์ที่บอกว่าแอปนี้มีคุณสมบัติอะไร ทำงานยังไง อย่างเช่น Info.plist, Assets.car และไฟล์กำหนดค่าต่าง ๆ อีกมากมาย พอเราแตกไฟล์ IPA ออกมา เราก็จะเห็นโฟลเดอร์ชื่อว่า Payload ซึ่งภายในจะมีไฟล์ .app ที่เป็นตัวแอปจริง ๆ อยู่ และนั่นแหละคือจุดที่เราสามารถเข้าไปดูข้างในว่าแอปนี้มีอะไรบ้าง ใช้เทคนิคยังไง จัดการ asset ยังไง หรือฝังฟีเจอร์อะไรที่น่าสนใจไว้หลายคนอาจจะคิดว่า IPA เป็นแค่ไฟล์ติดตั้งธรรมดา แต่จริง ๆ แล้วมันเต็มไปด้วยข้อมูลที่มีประโยชน์มาก โดยเฉพาะถ้าเรากำลังวิเคราะห์เรื่องความปลอดภัย หรืออยากเข้าใจการทำงานของแอปแบบเชิงลึก มันคือจุดเริ่มต้นที่ดีมากสำหรับคนที่อยากศึกษา iOS app จากภายนอกโดยไม่ต้องมีซอร์สโค้ดเลยด้วยซ้ำ
ทำไมต้องดึง IPA แบบ Decrypt?
การดึง IPA แบบ Decrypt มีความสำคัญอย่างมากในการตรวจสอบและทดสอบด้านความปลอดภัย การทดสอบการทำงานของแอปพลิเคชัน หรือการทำ Reverse Engineering รวมไปถึงการแพทช์ (Patch) แอปพลิเคชันเพื่อให้สามารถทำการทดสอบแอปพลิเคชันได้อย่างละเอียดมากยิ่งขึ้น
ขั้นตอนการตรวจสอบว่าไฟล์ IPA ถูกเข้ารหัส (Encrypted) หรือไม่?
1. ทำการแตกไฟล์ IPA ที่ต้องการตรวจสอบ โดยคุณจะพบไฟล์ binary หลักของแอปอยู่ภายในโฟลเดอร์ “Payload/YourApp.app/”
2. เปิด Terminal บน macOS
3. ใช้คำสั่ง otool เพื่อตรวจสอบการเข้ารหัส ดังนี้:
otool -l <binary> | grep -i crypt
4. วิเคราะห์ผลลัพธ์
หากผลลัพธ์แสดง “cryptid 1” หมายความว่า ไฟล์ binary มีการเข้ารหัส (Encrypted)
หากผลลัพธ์แสดง “cryptid 0” หมายความว่า ไฟล์ binary ไม่มีการเข้ารหัส (Decrypt) และ สามารถนำไป วิเคราะห์ต่อได้ทันที
ขั้นตอนการดึง IPA แบบ Decrypt สำหรับอุปกรณ์ Jailbreak
1. ทำการ Jailbreak อุปกรณ์ iOS โดยสามารถตรวจสอบรุ่นและเวอร์ชันที่รองรับการ Jailbreak ได้จากเว็บไซต์ https://theapplewiki.com/wiki/Jailbreak
2. ทำการติดตั้ง SSH บนอุปกรณ์ iOS โดยจะมี Default Credential คือ root:alpine
3. ทำการติดตั้ง frida บนเครื่องคอมพิวเตอร์ และ frida-server บนอุปกรณ์ iOS
4. ทำการตรวจสอบว่า Frida สามารถใช้งานได้ โดยใช้คำสั่ง
frida-ps -Uai
เพื่อดูรายการแอปที่สามารถเชื่อมต่อได้
5. ทำการดาวน์โหลด script จาก github โดยใช้คำสั่ง
git clone https://github.com/AloneMonkey/frida-ios-dump.git
6. ทำการแก้ไขที่ไฟล์ “dump.py” โดยแก้ที่ตัวแปร Host ให้เป็น IP ของอุปกรณ์ iOS ของเรา
7. ทำการใช้คำสั่ง
python dump.py -l
เพื่อดูชื่อ Bundle ของแอปพลิเคชันที่เราต้องการดึง IPA
8. ทำการใช้คำสั่ง
python dump.py <bundle app name>
เพื่อดึงแอปที่ต้องการ
9. หลังจากได้ไฟล์ IPA มาแล้ว ให้ทำการแตกไฟล์เพื่อดึง binary ออกมาตรวจสอบ
10. ทำการใช้คำสั่ง
otool -l <binary> | grep -i crypt
เพื่อดูค่า cryptid ของ binary
11. หากค่า cryptid เท่ากับ 0 แสดงว่าไฟล์ IPA ถูก Decrypt เรียบร้อยแล้ว และสามารถนำไปใช้งานต่อในการวิเคราะห์ได้
ขั้นตอนการดึง IPA แบบ Decrypt สำหรับอุปกรณ์ Non-Jailbreak
1. ทำการติดตั้ง Trollstore โดยสามารถดูเวอร์ชันที่รองรับได้ที่ https://ios.cfw.guide/installing-trollstore (*** ตัวแอป trollstore แนะนำให้ลงที่เครื่องสำหรับทดสอบเท่านั้นนะครับ)
2. ทำการดาวน์โหลด appdump3 จาก https://onejailbreak.com/blog/appdump2/download
3. หลังจากดาวน์โหลดแล้ว ให้ทำการติดตั้ง appdump3 ผ่าน trollstore
4. ทำการเลือกแอปพลิเคชันที่เราต้องการ จากนั้นเลือก “Decrypt IPA”
5. เมื่อเราได้ IPA มาก็ทำการแตกไฟล์เพื่อทำการตรวจสอบว่า IPA ได้ถูก Decrypt แล้วหรือไม่
6. ทำการใช้คำสั่ง
otool -l <binary> | grep -i crypt
เพื่อดูค่า cryptid ของ binary
7. หากค่า cryptid เท่ากับ 0 แสดงว่าไฟล์ IPA ถูก Decrypt เรียบร้อยแล้ว และสามารถนำไปใช้งานต่อในการวิเคราะห์ได้
สรุป
การดึง IPA แบบไม่ติด Encrypt ถือเป็นเทคนิคที่ช่วยให้เราสามารถเข้าไปดู “ข้างใน” แอป iOS ได้อย่างละเอียดมากขึ้น ไม่ว่าจะเพื่อวิเคราะห์ความปลอดภัย ทดสอบฟีเจอร์ หรือลองเข้าใจว่าแอปทำงานยังไงจริง ๆ ใครที่ทำสาย Security หรือชอบแกะระบบน่าจะคุ้นเคยกันดี แม้ขั้นตอนมันจะดูยุ่งยากนิดหน่อยในช่วงแรก โดยเฉพาะถ้าเกี่ยวกับการ Jailbreak หรือการตั้งค่าเครื่องมืออย่าง Frida ที่ต้องใช้ความเข้าใจระดับหนึ่ง
*** เบื้องหลัง สิ่งสำคัญคือ เทคนิคพวกนี้ต้องใช้ด้วยความระมัดระวัง และอยู่ในขอบเขตของความรับผิดชอบ อย่าเอาไปใช้กับแอปของคนอื่นโดยไม่ได้รับอนุญาต หรือใช้ในทางที่เสี่ยงต่อการละเมิดกฎหมาย เพราะสุดท้ายแล้ว จุดประสงค์ของการดึง IPA แบบไม่ติด Encrypt ก็เพื่อศึกษา พัฒนา และทำให้แอปปลอดภัยขึ้นเท่านั้นเองครับ ขอบคุณทุกคนที่เข้ามาอ่านครับ ไว้เจอกันใหม่ในบทความหน้าครับ