How to find the secret key in source code – Insecure Bank

บทนำ (Overview)

บทความนี้กล่าวการถึงการค้นหา “Key” ของการเข้ารหัส (Encryption)  ที่ฝั่งอยู่ใน “Source code” ของโปรแกรม “Android” ซึ่งทางผู้พัฒนาโปรแกรมอาจคิดว่าเป็นตำแหน่งที่ปลอดภัยที่สุด แต่ในความจริงแล้วเราสามารถเปลี่ยนไฟล์ “Binary” ที่ผ่านการ “Compiled” เรียบร้อยแล้วได้ (Reverse engineering) โดยไม่ยากนัก

ขั้นตอน (Steps)

  1.  ติดตั้งโปรแกรม InsecureBank (สามารถติดตามได้จากบทความ How to install InsecureBank)
  2. จากนั้น “Login” โปรแกรม weakencryption01 weakencryption02
  3. เชื่อมต่อไปยังเครื่อง “Android” และไปยังโฟลเดอร์ “/data/data/com.android.insecurebankv2/” weakencryption04
  4. จากนั้นเราพยายาม “Text file” และลองเปิดไฟล์เพื่อตรวจสอบไปเรื่อย ๆ จากตัวอย่างเราพบไฟล์ตามข้างล่าง weakencryption05
  5. จากไฟล์แรกที่เราเข้าไปพบว่า เป็นไฟล์ตั้งค่าเพื่อให้โปรแกรมสามารถเชื่อมต่อกลับหลังบ้านได้ และอีกไฟล์ มีข้อมูลที่น่าสนใจคือ “EncryptedUsername” and “superSecurePassword”  weakencryption06
  6. เมื่อเราเจอไฟล์ข้อมูลที่น่าสนใจแต่ไม่สามาถเปิดให้อ่านรู้เรื่องได้ เป็นไปได้ว่าข้อมูลดังกล่าวอาจถูกเข้ารหัส (Encrypted) หรือเปลี่ยนแปลงอักขระ (Encoded) ให้เราลอง “Convert” โปรแกรมจาก “Binary” เป็น “Source-code” เสียก่อน สามารถติดตามได้ที่บทความ How to reverse engineer .apk – Insecure Bank
  7. ให้ใช้โปรแกรม “JD-GUI” เพื่อตรวจสอบ “Source-code” โดยใช้ “Keyword” ที่เกี่ยวข้องเช่น “encrypt, hash, encode” ดังนี้ weakencryption07
  8. จากการตรวจสอบที่ “DoLogin Class”พบว่า “superSecurePassword” ใช้การ Algorithm Encryption คือ “AES” แต่ในส่วนของ “EncryptedUsername” กลับเป็นการ Encode โดยใช้ “Base64 algorithm” weakencryption08
  9. ลองเอาข้อมูลที่ได้จาก “EncryptedUsername” มาทำการ “Decode” พบว่าweakencryption09
  10. ที่นี้ในส่วน  “superSecurePassword ลองตาม “Source-code” ไปต่อเราจะพบ “Key” ดังรูป weakencryption10
  11. ที่นี้เราลองเข้าไปที่เว็บไซต์ http://aesencryption.net/ ลองใส่ข้อมูลที่ถูกเข้ารหัสเอาไว้พร้อม “Key” ที่เราค้นพบ จะพบว่าสามารถถอดรหัสได้ weakencryption11

 

 

 

ใส่ความเห็น