รวมคำสั่งติดตั้ง CA certificate ของ Burp ใน System รวดเดียว บนเครื่องจริง

บทความนี้อธิบายเกี่ยวกับวิธีการติดตั้ง Burp Certificate ในระบบ Android โดยใช้คำสั่งใน Window และ Kali Linux ในขั้นตอนรวดเดียวเพื่อลดขั้นตอนในการติดตั้ง รวมถึงอธิบายแต่ละคำสั่ง เพื่อเตรียม Cert และทำการติดตั้ง Cert ในอุปกรณ์ Android โดยใช้ ADB (Android Debug Bridge) ซึ่งเป็นเครื่องมือในการเชื่อมต่อและจัดการกับอุปกรณ์ Android ผ่านทางคอมพิวเตอร์

Warunyou Sunpachit และ Boonperm Mark
Cybersecurity consultant

คำสั่งรวดเดียว

Windows

curl --proxy http://192.168.0.101:8080 -o cacert.der http://burp/cert & openssl x509 -inform DER -in cacert.der -out cacert.pem & for /f %A in ('openssl x509 -inform PEM -subject_hash_old -in cacert.pem ^| head -1') do @ren cacert.pem %A.0 & adb shell su -c "mount -o rw,remount /" && adb push %A.0 /sdcard/Download/ && adb shell su -c "cp /sdcard/Download/%A.0 /system/etc/security/cacerts/%A.0" && adb shell su -c "chmod 644 /system/etc/security/cacerts/%A.0" && adb reboot

Kali

curl --proxy http://192.168.0.101:8080 -o cacert.der http://burp/cert && openssl x509 -inform DER -in cacert.der -out cacert.pem && A=$(openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1) && mv cacert.pem $A.0 && adb shell su -c "mount -o rw,remount /" && adb push $A.0 /sdcard/Download/ && adb shell su -c "cp /sdcard/Download/$A.0 /system/etc/security/cacerts/$A.0" && adb shell su -c "chmod 644 /system/etc/security/cacerts/$A.0" && adb reboot

เตรียมอุปกรณ์

  • เปิด Burp
  • เอาสายเสียบ Android (เครื่องต้อง Root เรียบร้อย)
  • เปิด USB debuging
  • ตั้งค่า Burp Suite
  • แก้ไข IP ของ Script ข้างต้น เป็น IP ของ Burp (http://192.168.0.101:8080)
  • ใช้งาน Script
เชื่อมต่ออุปรณ์

สำหรับ Windows

สำหรับผู้ใช้งานบน Windows จำเป็นต้อง ลงส่วนประกอบเพิ่มเติมที่สำคัญดังนี้

ตรวจสอบอุปกรณ์

  • ตรวจสอบว่าเครื่อง Root หรือไม่ adb shell su -c "echo 'Device is rooted.'"
  • ตรวจสอบเปิด USB debugging หรือไม่ คำสั่ง "adb shell settings get global adb_enabled" 0: หมายถึง USB debugging ปิดอยู่บนอุปกรณ์ 1: หมายถึง USB debugging เปิดอยู่บนอุปกรณ์
  • ให้ตรวจสอบ IP และ Port ของ Burp เพื่อเอาไปใส่ใน Script เพื่อติดตั้ง Certificate ลนใน System
IP ของ Burp

อธิบายแต่ละคำสั่ง

ชุดคำสั่งเตรียม Cert

1. ดาวโหลด Cert Burp ลงเครื่องโดยใช้ IP ข้างต้น

curl --proxy http://192.168.0.101:8080 -o cacert.der http://burp/cert

ใช้สำหรับดาวน์โหลดไฟล์ cacert.der จาก URL http://burp/cert โดยใช้พร็อกซีที่อยู่ที่ 192.168.0.101:8080 เพื่อเชื่อมต่อเครือข่าย

การอธิบายคำสั่ง:

  • curl: เป็นเครื่องมือที่ใช้ส่งคำขอ HTTP หรือ HTTPS ไปยังเซิร์ฟเวอร์และรับข้อมูลตอบกลับ
  • --proxy http://192.168.0.101:8080: กำหนดพร็อกซีที่ใช้ในการเชื่อมต่อเครือข่าย ในที่นี้ใช้พร็อกซีที่อยู่ที่ 192.168.0.101 และพอร์ต 8080
  • -o cacert.der: กำหนดชื่อไฟล์ที่จะถูกบันทึกลงโฟลเดอร์ที่กำหนดหลังจากดาวน์โหลด ในที่นี้คือ cacert.der
  • http://burp/cert: URL ของไฟล์ที่ต้องการดาวน์โหลด
λ curl --proxy http://192.168.0.101:8080 -o cacert.der http://burp/cert
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1527  100  1527    0     0  52830      0 --:--:-- --:--:-- --:--:-- 54535

2. แปลงไฟล์ Cert จาก Der เป็น Pem

openssl x509 -inform DER -in cacert.der -out cacert.pem

ใช้สำหรับแปลงไฟล์ cacert.der จากรูปแบบ DER (Distinguished Encoding Rules) เป็นรูปแบบ PEM (Privacy-Enhanced Mail) และบันทึกไฟล์ผลลัพธ์เป็น cacert.pem

การอธิบายคำสั่ง:

  • openssl x509: เป็นคำสั่งใน OpenSSL ที่ใช้ในการจัดการกับ Certificate (ใบรับรองความปลอดภัย)
  • -inform DER: กำหนดรูปแบบของไฟล์นำเข้าเป็น DER
  • -in cacert.der: ระบุชื่อไฟล์ของ Certificate DER ที่จะถูกแปลง
  • -out cacert.pem: ระบุชื่อไฟล์ผลลัพธ์ที่จะถูกบันทึกเป็น Certificate PEM

3. ดึงค่า Hash

openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1

ใช้สำหรับประมวลผล Certificate PEM จากไฟล์ cacert.pem เพื่อคืนค่า subject hash และใช้คำสั่ง head -1 เพื่อเลือกเฉพาะบรรทัดแรกของผลลัพธ์ที่คืนค่ากลับมา

การอธิบายคำสั่ง:

  • -inform PEM: กำหนดรูปแบบของไฟล์นำเข้าเป็น PEM
  • -subject_hash_old: ให้คำสั่งคืนค่า subject hash ที่ใช้กับการตรวจสอบใบรับรองเก่า
  • -in cacert.pem: ระบุชื่อไฟล์ของ Certificate PEM ที่จะถูกประมวลผล
  • |head -1: ใช้ส่งผลลัพธ์จากคำสั่งก่อนหน้าไปยังคำสั่ง head -1 เพื่อเลือกเฉพาะบรรทัดแรกจากผลลัพธ์ที่คืนค่ากลับมา
λ openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1
9a5ba575

4. ตั้งชื่อไฟล์ดังนี้จากค่า hash ที่ได้

mv cacert.pem 9a5ba575.0

ใช้ในการเปลี่ยนชื่อไฟล์ cacert.pem เป็น 9a5ba575.0 ในพาธปัจจุบันของไฟล์ หากไฟล์ cacert.pem อยู่ในตำแหน่งเดียวกับเครื่องหมายคำสั่งที่กำลังรัน โปรแกรมจะเปลี่ยนชื่อไฟล์ให้เป็น 9a5ba575.0.

5. รวมคำสั่งชุดแรกในการเตรียม Cert

curl --proxy http://192.168.0.101:8080 -o cacert.der http://burp/cert
openssl x509 -inform DER -in cacert.der -out cacert.pem
openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1
cp cacert.pem [hash].0
curl --proxy http://192.168.0.101:8080 -o cacert.der http://burp/cert & openssl x509 -inform DER -in cacert.der -out cacert.pem & for /f %A in ('openssl x509 -inform PEM -subject_hash_old -in cacert.pem ^| head -1') do @ren cacert.pem %A.0

ชุดคำสั่งติดตั้ง Cert

6. คัดลอกไฟล์ที่สร้างไปยังเครื่อง Android

adb push 9a5ba575.0 /sdcard/Download/

คำสั่ง adb push 9a5ba575.0 /sdcard/Download/ ใช้สำหรับคัดลอกไฟล์ 9a5ba575.0 จากเครื่องคอมพิวเตอร์ของไปยังโฟลเดอร์ /sdcard/Download/ บนอุปกรณ์ Android ที่เชื่อมต่อผ่าน adb (Android Debug Bridge).

7. ทำให้สามารถเข้าถึง System folder

สำหรับเครื่องโทรศัพท์หรือ Tablet ของจริงที่ไม่ใช่ Emulator ให้ใช้คำสั่งดั่งนี้

adb shell
su
mount -o rw,remount /

หรือ

adb shell su -c mount -o rw,remount /

มีวัตถุประสงค์ในแก้ไขระบบไฟล์ของอุปกรณ์ Android ผ่าน ADB (Android Debug Bridge) โดยใช้สิทธิ์ root (superuser) ในกรณีที่อุปกรณ์ของได้รับการรูท (root) แล้ว คำสั่งนี้สามารถทำให้ได้สิทธิ์การเขียนแก้ไขไฟล์ระบบของอุปกรณ์ Android ที่เป็นแบบอ่านอย่างเดียว (read-only) เป็นแบบอ่านเขียน (read-write)

8. ย้าย Cert จาก Download ไปยัง System

cp /sdcard/Download/d2fb4683.0 /system/etc/security/cacerts/9a5ba575.0
adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0

การคัดลอกไฟล์ “d2fb4683.0” ที่อยู่ใน “/sdcard/Download/” ไปยัง “/system/etc/security/cacerts/9a5ba575.0” ในระบบไฟล์ของอุปกรณ์ Android แล้วเปลี่ยนการอนุญาต (permission) ของการเข้าถึงไฟล์ เป็น 644 ซึ่งเป็นค่าสิทธิ์ที่ให้การอ่านเขียนได้สำหรับเจ้าของไฟล์

9. Reboot เครื่อง

adb reboot

10. รวมคำสั่งชุดสองในการติดตั้ง Cert

adb shell su -c mount -o rw,remount /
adb push d2fb4683.0 /sdcard/Download/
cp /sdcard/Download/d2fb4683.0 /system/etc/security/cacerts/9a5ba575.0
adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0
adb reboot

เมื่อทุกอย่างเสร็จสิ้นสมบูรณ์ CA certificate ของ Burp จะอยู่ใน System โดยเมนูการเข้าถึงแต่ Android Device ให้ศึกษาในแต่ละรุ่นดังตัวอย่างต่อไปนี้

อ้างอิง