บทนำ (Overview)
บทความนี้นำเสนอตัวอย่างของการเปลี่ยนแปลงค่า “Configuration” ภายใน “Application” ซึ่งโดยปกติจะทำได้ก็ต่อเมื่ออยู่ในช่วงการเขียนโปรแกรมก่อน “Compile” เป็น “.apk” แต่เราสามารถ “De-compile” และแก้ไขค่าต่าง ๆ ได้ แต่จะต้องทำโปรแกรมให้กลับอยู่ในสภาพที่พร้อมติดตั้งด้วย ซึ่งก็การ “Re-compile” และ “Signed” โปรแกรม หรือเรียกว่าการ “Patching” หรือ “Re-packing”
ส่วนช่องโหว่ที่นำเสนอก็คือมีการซ่อนเมนูสำหรับ “Administrator” สำหรับการสร้าง “User Account” หน้าที่เราก็เพียงแต่ใช้งานเมนูดังกล่าวให้ได้
ขั้นตอน (Steps)
- ติดตั้งโปรแกรมช่องโหว่ “Insecure Bank” (ติดตามได้ที่บทความ How to install InsecureBank)
- พอเปิดโปรแกรมขึ้นมาจะพบหน้า “login” ดังรูป
- ขั้นต่อไปเราจะทำการ “De-compile” โปรแกรม “Insecure Bank” โดยนำโปรแกรมมาวางไว้ที่หน้า “Desktop”
- จากนั้นเรียกใช้โปรแกรม “apktool” ผ่าน “Appie” โดยใช้คำสั่งดังนี้
apktool d InsecureBankv2.apk
- ถ้าสำเร็จจะปรากฏโฟลเดอร์สำหรับโปรแกรม “Android” ที่ได้ “De-compile” มาแล้ว
- ให้พยายามค้นหาไฟล์สำหรับ “Configuration” เพื่อใช้สำหรับโปรแกรม จากการตรวจสอบพบว่ามีไฟล์ “strings.xml” ที่น่าสนใจในโฟลเดอร์คือ “\res\values\”
- จากการตรวจสอบพบว่ามี “Field” ที่ชื่อ “is_admin” ตั้งค่าเป็น “no” ทดลองให้ปรับเปลี่ยนเป็น “yes”
<string name="is_admin">yes</string>
- เมื่อเปลี่ยนแปลงค่าเสร็จสิ้น ให้เรา “Re-compile” โปรแกรมโดยใช้ “apktool” ดังนี้
apktool b InsecureBankv2
- ถ้า “Re-conpile” ให้เข้าไปที่ โฟลเดอร์ “\dist” ซึ่งโปรแกรม “apktool” จะสร้างโฟลเดอร์ใหม่ขึ้นมาเมื่อเข้าไปจะพบ ไฟล์ “.apk” สำหรับโปรแกรมที่ แก้ไข “configuration” เรียบร้อยแล้ว (Patching)
- เราจะยังติดตั้งโปรแกรมไม่ได้เนื่องจากโปรแกรมยังไม่ถูก “Sign” โดย “Certificate” แต่เราก็สามารถสร้าง “Certificate” เองได้ (self signed) โดยใช้คำสั่งดังนี้ใน “Kali” (สามารถติดตามรายละเอียดเพิ่มเติมที่บทความ How to exploit Android with Kali 2 (signed certificate))
keytool -genkey -v -keystore my-release-key.Keystore -alias itselectlab -keyalg RSA -keysize 2048 -validity 10000
- จากนั้น “Signed” โปรแกรมโดยใช้ “Certificate” ที่สร้างมา
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.Keystore /root/Desktop/InsecureBankv2.apk itselectlab
- ตรวจสอบไฟล์ที่ “Signed” โดยใช้คำสั่ง
zipalign -v 4 /root/Desktop/InsecureBankv2.apk /root/Desktop/InsecureBankv2_1.apk
- นำโปรแกรมที่ผ่านการ “Patching” (De-compile + Customized app. + Re-compile + Signed) มาติดตั้งที่ เครื่อง “Android” ใหม่อีกครั้ง จะพบเมนู “Create user” ขึ้นมา