บทนำ (Overview)
บทความนี้กล่าวการถึงการค้นหา “Key” ของการเข้ารหัส (Encryption) ที่ฝั่งอยู่ใน “Source code” ของโปรแกรม “Android” ซึ่งทางผู้พัฒนาโปรแกรมอาจคิดว่าเป็นตำแหน่งที่ปลอดภัยที่สุด แต่ในความจริงแล้วเราสามารถเปลี่ยนไฟล์ “Binary” ที่ผ่านการ “Compiled” เรียบร้อยแล้วได้ (Reverse engineering) โดยไม่ยากนัก
ขั้นตอน (Steps)
- ติดตั้งโปรแกรม InsecureBank (สามารถติดตามได้จากบทความ How to install InsecureBank)
- จากนั้น “Login” โปรแกรม
- เชื่อมต่อไปยังเครื่อง “Android” และไปยังโฟลเดอร์ “/data/data/com.android.insecurebankv2/”
- จากนั้นเราพยายาม “Text file” และลองเปิดไฟล์เพื่อตรวจสอบไปเรื่อย ๆ จากตัวอย่างเราพบไฟล์ตามข้างล่าง
- จากไฟล์แรกที่เราเข้าไปพบว่า เป็นไฟล์ตั้งค่าเพื่อให้โปรแกรมสามารถเชื่อมต่อกลับหลังบ้านได้ และอีกไฟล์ มีข้อมูลที่น่าสนใจคือ “EncryptedUsername” and “superSecurePassword”
- เมื่อเราเจอไฟล์ข้อมูลที่น่าสนใจแต่ไม่สามาถเปิดให้อ่านรู้เรื่องได้ เป็นไปได้ว่าข้อมูลดังกล่าวอาจถูกเข้ารหัส (Encrypted) หรือเปลี่ยนแปลงอักขระ (Encoded) ให้เราลอง “Convert” โปรแกรมจาก “Binary” เป็น “Source-code” เสียก่อน สามารถติดตามได้ที่บทความ How to reverse engineer .apk – Insecure Bank
- ให้ใช้โปรแกรม “JD-GUI” เพื่อตรวจสอบ “Source-code” โดยใช้ “Keyword” ที่เกี่ยวข้องเช่น “encrypt, hash, encode” ดังนี้
- จากการตรวจสอบที่ “DoLogin Class”พบว่า “superSecurePassword” ใช้การ Algorithm Encryption คือ “AES” แต่ในส่วนของ “EncryptedUsername” กลับเป็นการ Encode โดยใช้ “Base64 algorithm”
- ลองเอาข้อมูลที่ได้จาก “EncryptedUsername” มาทำการ “Decode” พบว่า
- ที่นี้ในส่วน “superSecurePassword ลองตาม “Source-code” ไปต่อเราจะพบ “Key” ดังรูป
- ที่นี้เราลองเข้าไปที่เว็บไซต์ http://aesencryption.net/ ลองใส่ข้อมูลที่ถูกเข้ารหัสเอาไว้พร้อม “Key” ที่เราค้นพบ จะพบว่าสามารถถอดรหัสได้