Python Forensics - นิติมือถือ

การตรวจสอบทางนิติวิทยาศาสตร์และการวิเคราะห์ฮาร์ดแวร์คอมพิวเตอร์มาตรฐานเช่นฮาร์ดดิสก์ได้พัฒนาไปสู่ระเบียบวินัยที่มั่นคงและตามมาด้วยความช่วยเหลือของเทคนิคในการวิเคราะห์ฮาร์ดแวร์ที่ไม่ได้มาตรฐานหรือหลักฐานชั่วคราว

แม้ว่าสมาร์ทโฟนจะถูกนำมาใช้ในการสืบสวนทางดิจิทัลมากขึ้น แต่ก็ยังถือว่าไม่ได้มาตรฐาน

การวิเคราะห์ทางนิติวิทยาศาสตร์

การตรวจสอบทางนิติวิทยาศาสตร์จะค้นหาข้อมูลเช่นสายที่ได้รับหรือหมายเลขที่โทรออกจากสมาร์ทโฟน อาจรวมถึงข้อความรูปภาพหรือหลักฐานอื่นใดที่เป็นการกล่าวหา สมาร์ทโฟนส่วนใหญ่มีคุณสมบัติการล็อกหน้าจอโดยใช้รหัสผ่านหรืออักขระที่เป็นตัวเลขและตัวอักษร

ในที่นี้เราจะนำตัวอย่างเพื่อแสดงให้เห็นว่า Python สามารถช่วยถอดรหัสรหัสผ่านล็อกหน้าจอเพื่อดึงข้อมูลจากสมาร์ทโฟนได้อย่างไร

การตรวจสอบด้วยตนเอง

Android รองรับการล็อกรหัสผ่านด้วยหมายเลข PIN หรือรหัสผ่านตัวอักษรและตัวเลข ขีด จำกัด ของข้อความรหัสผ่านทั้งสองต้องอยู่ระหว่าง 4 ถึง 16 หลักหรืออักขระ รหัสผ่านของสมาร์ทโฟนจะถูกเก็บไว้ในระบบ Android ในไฟล์พิเศษที่เรียกว่าpassword.key ใน /data/system.

Android จัดเก็บ SHA1-hashsum และ MD5-hashsum ของรหัสผ่าน รหัสผ่านเหล่านี้สามารถประมวลผลได้ในรหัสต่อไปนี้

public byte[] passwordToHash(String password) {

   if (password == null) { 
      return null; 
   }

   String algo = null;
   byte[] hashed = null;

   try { 
      byte[] saltedPassword = (password + getSalt()).getBytes(); 
      byte[] sha1 = MessageDigest.getInstance(algo = "SHA-1").digest(saltedPassword);
      byte[] md5 = MessageDigest.getInstance(algo = "MD5").digest(saltedPassword); 
      hashed = (toHex(sha1) + toHex(md5)).getBytes(); 
   } catch (NoSuchAlgorithmException e) { 
      Log.w(TAG, "Failed to encode string because of missing algorithm: " + algo); 
   }
   
   return hashed;
}

เป็นไปไม่ได้ที่จะถอดรหัสรหัสผ่านด้วยความช่วยเหลือของ dictionary attack เนื่องจากรหัสผ่านที่แฮชถูกเก็บไว้ในไฟล์ salt file. นี้saltเป็นสตริงของการแทนค่าฐานสิบหกของจำนวนเต็มสุ่ม 64 บิต ง่ายต่อการเข้าถึงไฟล์salt โดยใช้ Rooted Smartphone หรือ JTAG Adapter.

สมาร์ทโฟนฝังราก

ดัมพ์ของไฟล์ /data/system/password.key ถูกเก็บไว้ในฐานข้อมูล SQLite ภายใต้ไฟล์ lockscreen.password_saltสำคัญ. ภายใต้settings.dbรหัสผ่านจะถูกเก็บไว้และสามารถมองเห็นค่าได้อย่างชัดเจนในภาพหน้าจอต่อไปนี้

JTAG อะแดปเตอร์

ฮาร์ดแวร์พิเศษที่เรียกว่าอะแดปเตอร์ JTAG (Joint Test Action Group) สามารถใช้เพื่อเข้าถึงไฟล์ salt. ในทำนองเดียวกันกRiff-Box หรือก JIG-Adapter ยังสามารถใช้สำหรับการทำงานเดียวกัน

โดยใช้ข้อมูลที่ได้รับจาก Riff-box เราสามารถค้นหาตำแหน่งของข้อมูลที่เข้ารหัสได้เช่นไฟล์ salt. ต่อไปนี้เป็นกฎ -

  • ค้นหาสตริงที่เกี่ยวข้อง "lockscreen.password_salt"

  • ไบต์แทนความกว้างจริงของเกลือซึ่งก็คือ length.

  • นี่คือความยาวที่ใช้ค้นหาเพื่อรับรหัสผ่าน / พินที่เก็บไว้ของสมาร์ทโฟน

ชุดกฎเหล่านี้ช่วยในการรับข้อมูลเกลือที่เหมาะสม