การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

การย้อนกลับและการแฮ็กไดรฟ์ที่เข้ารหัสด้วยตนเองภายนอกเป็นงานอดิเรกเก่าของฉัน ในอดีตผมมีโอกาสได้ฝึกซ้อมกับรุ่นต่างๆ เช่น Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500 เมื่อเร็ว ๆ นี้ เพื่อนร่วมงานคนหนึ่งนำนิทรรศการอีกชิ้นมาให้ฉัน: Patriot (Aigo) SK8671 ซึ่งสร้างขึ้นตามการออกแบบทั่วไป - ไฟแสดง LCD และแป้นพิมพ์สำหรับป้อนรหัส PIN นั่นคือสิ่งที่ออกมาจากมัน…

1. บทนำ
2. สถาปัตยกรรมฮาร์ดแวร์
– 2.1. กระดานหลัก
– 2.2. กระดานแสดงสถานะ LCD
– 2.3. บอร์ดคีย์บอร์ด
– 2.4. มองสายไฟ
3. ลำดับขั้นตอนการโจมตี
– 3.1. การรับดัมพ์ข้อมูลจากแฟลชไดรฟ์ SPI
– 3.2. การดมกลิ่นการสื่อสาร

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ


1. บทนำ

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ
การเคหะ

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ
การบรรจุ

การเข้าถึงข้อมูลที่จัดเก็บไว้ในดิสก์ซึ่งคาดว่าจะเข้ารหัสนั้นจะดำเนินการหลังจากป้อนรหัส PIN บันทึกเบื้องต้นบางประการเกี่ยวกับอุปกรณ์นี้:

  • หากต้องการเปลี่ยนรหัส PIN คุณต้องกด F1 ก่อนปลดล็อค
  • รหัส PIN จะต้องมีตัวเลขตั้งแต่ 6 ถึง 9 หลัก
  • หลังจากพยายามไม่ถูกต้อง 15 ครั้ง ดิสก์จะถูกล้าง

2. สถาปัตยกรรมฮาร์ดแวร์

ขั้นแรก เราจะแยกอุปกรณ์ออกเป็นส่วนๆ เพื่อทำความเข้าใจว่าอุปกรณ์ประกอบด้วยส่วนประกอบใดบ้าง งานที่น่าเบื่อที่สุดคือการเปิดเคส: สกรูขนาดเล็กและพลาสติกจำนวนมาก เมื่อเปิดเคสแล้วเราจะเห็นสิ่งต่อไปนี้ (ให้ความสนใจกับขั้วต่อห้าพินที่ฉันบัดกรี):

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

2.1. กระดานหลัก

กระดานหลักค่อนข้างง่าย:

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

ส่วนที่โดดเด่นที่สุด (ดูจากบนลงล่าง):

  • ขั้วต่อสำหรับตัวบ่งชี้ LCD (CN1);
  • ทวีตเตอร์ (SP1);
  • PM25LD010 (สเปค) แฟลชไดรฟ์ SPI (U2);
  • คอนโทรลเลอร์ Jmicron JMS539 (สเปค) สำหรับ USB-SATA (U1);
  • ขั้วต่อ USB 3 (J1)

แฟลชไดรฟ์ SPI เก็บเฟิร์มแวร์สำหรับ JMS539 และการตั้งค่าบางอย่าง

2.2. กระดานแสดงสถานะ LCD

ไม่มีอะไรโดดเด่นบนบอร์ด LCD

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ
การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

เท่านั้น:

  • ตัวแสดงสถานะบนจอ LCD ที่ไม่ทราบที่มา (อาจมีชุดแบบอักษรภาษาจีน) ด้วยการควบคุมตามลำดับ
  • ขั้วต่อริบบิ้นสำหรับบอร์ดคีย์บอร์ด

2.3. บอร์ดคีย์บอร์ด

เมื่อตรวจสอบบอร์ดคีย์บอร์ด สิ่งต่างๆ จะเปลี่ยนไปที่น่าสนใจยิ่งขึ้น

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

ที่ด้านหลังเราเห็นขั้วต่อริบบิ้นเช่นเดียวกับไมโครคอนโทรลเลอร์ Cypress CY8C21434 PSoC 1 (ต่อไปนี้เราจะเรียกมันว่า PSoC)

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

CY8C21434 ใช้ชุดคำสั่ง M8C (ดู เอกสาร). บน [หน้าผลิตภัณฑ์]( (http://www.cypress.com/part/cy8c21434-24ltxi) แสดงว่ารองรับเทคโนโลยีนี้ แคปเซนส์ (โซลูชันจาก Cypress สำหรับคีย์บอร์ดแบบ capacitive) ที่นี่คุณจะเห็นตัวเชื่อมต่อห้าพินที่ฉันบัดกรี - นี่เป็นวิธีมาตรฐานในการเชื่อมต่อโปรแกรมเมอร์ภายนอกผ่านอินเทอร์เฟซ ISSP

2.4. มองสายไฟ

เรามาดูกันว่ามีอะไรเชื่อมต่อกันที่นี่ ในการทำเช่นนี้เพียงทดสอบสายไฟด้วยมัลติมิเตอร์:

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

คำอธิบายสำหรับแผนภาพนี้วาดที่หัวเข่า:

  • PSoC อธิบายไว้ในข้อกำหนดทางเทคนิค
  • ตัวเชื่อมต่อถัดไปทางด้านขวาคืออินเทอร์เฟซ ISSP ซึ่งสอดคล้องกับสิ่งที่เขียนเกี่ยวกับมันบนอินเทอร์เน็ตตามความประสงค์แห่งโชคชะตา
  • ขั้วต่อขวาสุดคือขั้วต่อสำหรับขั้วต่อริบบิ้นกับบอร์ดคีย์บอร์ด
  • สี่เหลี่ยมสีดำเป็นรูปวาดของขั้วต่อ CN1 ซึ่งออกแบบมาเพื่อเชื่อมต่อเมนบอร์ดกับบอร์ด LCD P11, P13 และ P4 เชื่อมต่อกับพิน PSoC 11, 13 และ 4 บนบอร์ด LCD

3. ลำดับขั้นตอนการโจมตี

ตอนนี้เรารู้แล้วว่าไดรฟ์นี้ประกอบด้วยส่วนประกอบใดบ้าง เราต้อง: 1) ตรวจสอบให้แน่ใจว่ามีฟังก์ชันการเข้ารหัสขั้นพื้นฐานอยู่จริง; 2) ค้นหาวิธีการสร้าง/บันทึกคีย์การเข้ารหัส 3) ค้นหาตำแหน่งที่จะตรวจสอบรหัส PIN อย่างแน่นอน

เมื่อต้องการทำเช่นนี้ ฉันทำตามขั้นตอนต่อไปนี้:

  • ถ่ายโอนข้อมูลจากแฟลชไดรฟ์ SPI
  • พยายามถ่ายโอนข้อมูลจากแฟลชไดรฟ์ PSoC
  • ตรวจสอบแล้วว่าการสื่อสารระหว่าง Cypress PSoC และ JMS539 มีการกดแป้นพิมพ์จริง ๆ
  • ฉันแน่ใจว่าเมื่อเปลี่ยนรหัสผ่านจะไม่มีการเขียนทับในแฟลชไดรฟ์ SPI
  • ขี้เกียจเกินไปที่จะย้อนกลับเฟิร์มแวร์ 8051 จาก JMS539

3.1. การรับดัมพ์ข้อมูลจากแฟลชไดรฟ์ SPI

ขั้นตอนนี้ง่ายมาก:

  • เชื่อมต่อโพรบเข้ากับขาของแฟลชไดรฟ์: CLK, MOSI, MISO และ (อุปกรณ์เสริม) EN;
  • การสื่อสารแบบ "สูดดม" กับการดมกลิ่นโดยใช้เครื่องวิเคราะห์ลอจิก (ฉันใช้ ขาย Logic Pro 16);
  • ถอดรหัสโปรโตคอล SPI และส่งออกผลลัพธ์เป็น CSV
  • ใช้ประโยชน์จาก decode_spi.rbเพื่อแยกวิเคราะห์ผลลัพธ์และรับดัมพ์

โปรดทราบว่าวิธีการนี้ทำงานได้ดีเป็นพิเศษในกรณีของคอนโทรลเลอร์ JMS539 เนื่องจากคอนโทรลเลอร์นี้โหลดเฟิร์มแวร์ทั้งหมดจากแฟลชไดรฟ์ในขั้นตอนการเริ่มต้น

$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump

หลังจากนำดัมพ์จากแฟลชไดรฟ์ SPI ฉันได้ข้อสรุปว่างานเดียวคือจัดเก็บเฟิร์มแวร์สำหรับอุปกรณ์ควบคุม JMicron ซึ่งติดตั้งอยู่ในไมโครคอนโทรลเลอร์ 8051 น่าเสียดายที่การทิ้งแฟลชไดรฟ์ SPI กลับไร้ประโยชน์:

  • เมื่อเปลี่ยนรหัส PIN การถ่ายโอนข้อมูลแฟลชไดรฟ์จะยังคงเหมือนเดิม
  • หลังจากระยะการเริ่มต้น อุปกรณ์จะไม่สามารถเข้าถึงแฟลชไดรฟ์ SPI

3.2. การดมกลิ่นการสื่อสาร

นี่เป็นวิธีหนึ่งในการค้นหาว่าชิปตัวใดที่รับผิดชอบในการตรวจสอบการสื่อสารสำหรับเวลา/เนื้อหาที่สนใจ ดังที่เราทราบแล้วว่าคอนโทรลเลอร์ USB-SATA เชื่อมต่อกับ Cypress PSoC LCD ผ่านตัวเชื่อมต่อ CN1 และริบบอนสองตัว ดังนั้นเราจึงเชื่อมต่อโพรบเข้ากับขาสามขาที่สอดคล้องกัน:

  • P4, อินพุต/เอาต์พุตทั่วไป;
  • P11, I2C เอสซีแอล;
  • P13, I2C SDA.

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

จากนั้นเราเปิดตัววิเคราะห์ตรรกะ Saleae และป้อนบนแป้นพิมพ์: “123456~” ด้วยเหตุนี้เราจึงเห็นแผนภาพต่อไปนี้

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

เราจะเห็นช่องทางการแลกเปลี่ยนข้อมูลสามช่องทาง:

  • มีการระเบิดสั้น ๆ หลายครั้งในช่อง P4;
  • บน P11 และ P13 - การแลกเปลี่ยนข้อมูลเกือบต่อเนื่อง

เมื่อซูมเข้าที่สไปค์แรกบนช่อง P4 (สี่เหลี่ยมสีน้ำเงินในรูปก่อนหน้า) เราจะเห็นสิ่งต่อไปนี้:

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

ที่นี่คุณจะเห็นได้ว่าใน P4 มีสัญญาณซ้ำซากเกือบ 70ms ซึ่งในตอนแรกดูเหมือนว่าฉันจะเล่นบทบาทของสัญญาณนาฬิกา อย่างไรก็ตาม หลังจากใช้เวลาตรวจสอบการเดาของฉันมาระยะหนึ่ง ฉันพบว่านี่ไม่ใช่สัญญาณนาฬิกา แต่เป็นสตรีมเสียงที่ส่งออกไปยังทวีตเตอร์เมื่อกดปุ่ม ดังนั้นสัญญาณส่วนนี้จึงไม่มีข้อมูลที่เป็นประโยชน์สำหรับเรา อย่างไรก็ตาม สามารถใช้เป็นตัวบ่งชี้เพื่อให้ทราบว่าเมื่อใดที่ PSoC ลงทะเบียนการกดปุ่ม

อย่างไรก็ตาม สตรีมเสียง P4 ล่าสุดแตกต่างออกไปเล็กน้อย นั่นคือเสียงสำหรับ "PIN ไม่ถูกต้อง"!

กลับไปที่กราฟการกดแป้นพิมพ์ โดยซูมเข้ากราฟสตรีมเสียงล่าสุด (ดูสี่เหลี่ยมสีน้ำเงินอีกครั้ง) เราจะได้:

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

ที่นี่เราเห็นสัญญาณซ้ำซากบน P11 ดูเหมือนว่านี่คือสัญญาณนาฬิกา และ P13 คือข้อมูล สังเกตว่ารูปแบบเปลี่ยนไปอย่างไรหลังจากเสียงบี๊บสิ้นสุดลง มันน่าสนใจที่จะเห็นว่าเกิดอะไรขึ้นที่นี่

โปรโตคอลที่ทำงานกับสายสองเส้นมักจะเป็น SPI หรือ I2C และข้อกำหนดทางเทคนิคของ Cypress ระบุว่าพินเหล่านี้สอดคล้องกับ I2C ซึ่งเราเห็นว่าเป็นความจริงในกรณีของเรา:

การย้อนกลับและการแฮ็ก Aigo ไดรฟ์ HDD ภายนอกที่เข้ารหัสด้วยตนเอง ส่วนที่ 1: การผ่าออกเป็นส่วนๆ

ชิปเซ็ต USB-SATA จะสำรวจ PSoC อย่างต่อเนื่องเพื่ออ่านสถานะของคีย์ ซึ่งตามค่าเริ่มต้นคือ "0" จากนั้นเมื่อคุณกดปุ่ม "1" มันจะเปลี่ยนเป็น "1" การส่งครั้งสุดท้ายทันทีหลังจากกด “~” จะแตกต่างออกไปหากป้อนรหัส PIN ผิด อย่างไรก็ตาม ในขณะนี้ฉันยังไม่ได้ตรวจสอบสิ่งที่กำลังส่งอยู่ที่นั่นจริงๆ แต่ฉันสงสัยว่านี่ไม่น่าจะเป็นคีย์เข้ารหัส อย่างไรก็ตาม โปรดดูส่วนถัดไปเพื่อทำความเข้าใจว่าฉันลบเฟิร์มแวร์ภายใน PSoC ได้อย่างไร

ที่มา: will.com

เพิ่มความคิดเห็น