How to test insecure data storage on Non-jailbroken Physical Devices – NSUserDefaults (Objection)

บทนำ (Overview)

บทความนี้จะกล่าวถึง “NSUserDefaults” เป็น “class” ซึ่งสามารถเก็บข้อมูลที่ไม่ซับซ้อน อาจจะเป็นค่า configuration ของโปรแกรม  (ค่าของการ Save state) เป็นต้น ในเชิงการเขียนโปรแกรมนั้น NSUserDefaults สามารถเขียนได้ดังนี้

  • การเขียนค่า
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"value" forKey:@"key-value"];
    
  • การดึงค่า
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *value = [defaults objectForKey:@"key-value"];
    NSLog(@"%@",value);
    

สามารถติดตามเพิ่มเติมได้จากบทความ How to test insecure data storage – NSUserDefaults ในบทความนี้กล่าวถึงการอ่าน NSUserDefaults จากเครื่องที่ไม่ได้ Jailbreak

ขั้นตอน (Steps)

ติดตั้งโปรแกรม (เปิด Terminal 1 สำหรับใช้งาน Appmon)

  1. ติดตั้ง Frida ดังบทความต่อไปนี้
    1. สำหรับเครื่อง Jailbreak How to setup AppMon on MacOS for jailbroken device
    2. สำหรับเครื่องไม่ Jailbreak How to setup AppMon on MacOS for non-jailbroken device
  2. ติดตั้งโปรแกรมที่ต้องการทดสอบ สำหรับเครื่องไม่ Jailbreak จะต้องได้ไฟล์ ipa มาเสียก่อน (สามารถติดตามได้จากบทความ How to convert .app from Xcode to .ipa)
    python ipa_installer.py -ipa DVIA.ipa 
    
  3. ติดตั้งโปรแกรม objection จากบทความ How to install “objection”

 

ใช้งาน Objection (เปิด Terminal 2 สำหรับใช้งาน Objection)

  1. จากโปรแกรมช่องโหว่ “DVIA” เลือกเมนู “NSUserDefaults”
  2. จะพบหน้าจอ ดังกล่าว ให้กรอกข้อมูลอะไรก็ได้ลงไปใน UITextbox แล้ว “Save in NSUserDefaults” 
  3. ในการตรวจสอบเราจะพยายามไล่หาทุก “folder” ที่เก็บไฟล์ “plist” สำหรับตัวอย่างทดลองเข้า “folder” ที่ชื่อ “Documents” โดยใช้คำสั่งดังนี้ (สามารถติดตามเพิ่มเติมได้จากบทความ How to access iOS application file system on Non-jailbroken Physical Devices Using Objection) แตสำหรับ NSUserDefaults โปรแกรม Objection เตรียมคำสั่งให้ใช้งานดังนี้
    //objection ถูกติดตั้งบน virtual-python3 จำเป็นต้องใช้คำสั่ง source ก่อน
    source ~/virtual-python3/bin/activate
    
    //เข้าถึง File system ของโปรแกรมที่กำลังทดสอบ โดยใช้โปรแกรม objection
    objection explore
    
    //อ่าน nsuserdefaults
    ios nsuserdefaults get
    

 

ใส่ความเห็น