บทนำ (Overview)
Insecure Data Storage เป็นความเสี่ยงตาม OWASP Mobile TOP 10 เราจะมาทดสอบเพื่อหาข้อมูลสำคัญ (เช่น username, password, session token, ข้อมูลลูกค้า เป็นต้น) ว่ามีเก็บอยู่ในเครื่อง “Android” หรือไม่ โดยเฉพาะโปรแกรมประเภท “Internet Banking” ซึ่งข้อมูลสำคัญอาจถูกโจรกรรมได้จาก การขโมยเครื่อง การนำเครื่องไปซ่อมในร้านที่อาจไม่ปลอดภัย หรือโดนโปรแกรมประสงค์ร้าย (Malwares)
จากภาพข้างต้นเราจะพบว่ามีที่เก็บไฟล์มากมายภายใน Application ที่อาจจะพบข้อมูลสำคัญโดยปราศจากการเข้ารหัสหรือเข้ารหัสอย่างไม่แข็งแรงก็ได้
ขั้นตอน (Steps)
- ติดตั้งโปรแกรมช่องโหว่ “DIVA” สามารถติดตามวิธีการติดตั้งได้ที่ How to install DIVA (android)
- เข้าโปรแกรม “DIVA” จากนั้นไปที่เมนู “Insecure Data Storage – Part 1” ให้กรอก “Username” และ “Password” ลงไป
- วัตถุประสงค์ให้เราหาข้อมูลเกี่ยวกับ “Username” และ “Password” ที่เราได้บันทึกลงไปว่ามีเปิดเผยอยู่ในเครื่อง “Android” หรือไม่ ให้เข้าถึง “Directory” ของเครื่องโดยใช้ “ADB shell” เราสามารถเชื่อมต่อ ADB โดยใช้ผ่าน “Appie2” สามารถติดตามได้จากบทความ เชื่อมต่อ “ADB” ตามบทความ How to use ADB via Appie2
- ใช้คำสั่ง “ADB SHELL” เพื่อให้ได้มาถึง “command prompt” จากนั้นไปที่โฟลเดอร์ /data/data
C:\Users\wsunpachit\Desktop λ adb shell root@vbox86p:/ # cd /data/data cd /data/data
- จากนั้นให้ค้นหา “Folder” ที่เป็นชื่อ “Package” ของโปรแกรมที่เรากำลังจะทดสอบ โดยปกติจะเป็นชื่อโปรแกรม หรือชื่อบริษัทที่เกี่ยวข้องโปรแกรมที่ติดตั้งนั้นๆ
root@android:/data/data # ls -l ls -l drwxr-x--x u0_a39 u0_a39 2016-09-09 22:11 com.android.insecurebankv2 drwxr-x--x system system 2016-06-23 10:18 com.android.keychain drwxr-x--x u0_a20 u0_a20 2016-06-21 22:42 com.android.phasebeam drwxr-x--x radio radio 2016-06-21 22:43 com.android.phone drwxr-x--x u0_a43 u0_a43 2016-09-09 22:11 jakhar.aseem.diva drwxr-x--x u0_a34 u0_a34 2016-06-21 22:44 me.haima.androidassist drwxr-x--x u0_a33 u0_a33 2016-06-21 22:44 me.haima.helpcenter drwxr-x--x u0_a40 u0_a40 2016-09-09 22:11 org.owasp.goatdroid.fourgoats drwxr-x--x u0_a41 u0_a41 2016-09-09 22:11 org.owasp.goatdroid.herdfinancial
- จากตัวอย่างคือ “jakhar.aseem.diva” จากนั้นเข้าไปที่ “Folder” ดังกล่าว และค้นหาไฟล์ต่าง ๆ เช่น xml, txt, json, plist, conf, ini, tmp, html
root@android:/data/data # cd jakhar.aseem.diva/ root@android:/data/data/jakhar.aseem.diva # find | grep .xml find | grep .xml ./shared_prefs/jakhar.aseem.diva_preferences.xml
- เมื่อพบแล้วลองเปิด “File” เพื่อตรวจสอบ เราจะพบว่ามี “Username” และ “Password” ที่เราได้กรอกเข้าไป
1|root@android:/data/data/jakhar.aseem.diva # cat shared_prefs/jakhar.aseem.diva_preferences.xml /jakhar.aseem.diva_preferences.xml < <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="user">administrator</string> <string name="password">p@ssw0rd</string> </map>