Danger
เนื้อหาในบทความนี้เปิดเผยขั้นตอนการทำงานทั้งหมดของผู้เขียน ซึ่งเป็นการกระทำที่ไม่ได้รับอนุญาติจากทางธนาคาร การนำไปทำตามเนื้อหาอาจทำให้ท่านกระทำผิดกฏหมาย พรบ. ว่าด้วยการกระทําความผิดทางคอมพิวเตอร์ พ.ศ. 2560
🎯 เป้าหมาย
API reverse engineering เพื่อสร้าง API Server สำหรับใช้งานโดยที่ไม่ต้องทำธุรกรรมผ่านสมาร์ทโฟน
🕵🏻 วิเคราะห์แอปพลิเคชั่น
ขึ้นตอนแรกเรามาเช็ค lib.so กันก่อนว่าตัวแอปพลิเคชั่นนำ lib อะไรมาใช้งานบ้าง

(รูปที่ 1 รายการ Lib ทั้งหมดที่แอปเรียกใช้งาน)
ตรวจพบ libtool-checker.so ที่เป็น Lib พื้นฐานสำหรับเช็ครูทแต่เจ้า RootBeer นี้ไม่ใช่ปัญหาเพราะทดสอบเปิดแอปพลิเคชันบนเครื่องที่รูทแล้วสามารถใช้งานได้ปกติ (ยังไม่ซ่อนรูท 🤨)
🔍 ตรวจสอบทราฟฟิค
เนื่องจากแอปกากจัดเราเลยไม่ต้องเตรียมการอะไรเยอะ สามารถดักทราฟฟิคได้เลย โดยขั้นตอนแรกสุดเราต้องไปเปิดใช้งาน SSLUnpinning เพื่อข้าม SSL ให้อ่านค่า req, res ได้ และเปิดใช้งาน HTTP Toolkit เพื่อเริ่มกันเลย

(รูปที่ 2 ทราฟฟิคทั้งหมดในการเข้าสู่ระบบครั้งแรก)

(รูปที่ 3 QR Code Recovery สำหรับเข้าใช้งานระบบ)
Login Request
Endpoint
- PATH:
https://bakong.wingmoney.com/paymentservice/api/bridge/v1/signup/recovery - METHOD:
POST
Header
Accept-Encoding: gzip
Connection: Keep-Alive
Content-Length: 401
Content-Type: application/json; charset=UTF-8
Host: bakong.wingmoney.com
User-Agent: okhttp/4.11.0Body
{
"publicKey": "1536b305da9300685796a5e5f339ac8bb57f3048930fe3a9...",
"requestId": 17502,
"signature": [
65, 91, -67, 123, 109, -83, 6, 15, -19, -109, -48, 32, -100, -24, 78, -78,
-128, -32, -96, 50, -35, -82, 1, 83, -109, 50, 113, 5, ...ขอไม่แสดงทั้งหมดนะครับ
],
"deviceId": "640971a2-8c82-42d4-aed6-..."
}ระบบได้แปลง QR Code เป็น Arraylist Integer
{
"publicKey": "1536b305da9300685796a5e5f339ac8bb57f3048930fe3a94dc915a0efc11c84",
"requestId": 17502,
"signature": [
65, 91, -67, 123, 109, -83, 6, 15, -19, -109, -48, 32, -100, -24, 78, -78,
-128, -32, -96, 50, -35, -82, 1, 83, -109, 50, 113, 5, -38, 13, -18, -48,
-104, -45, -116, -47, 67, -87, -100, -35, 123, 41, -99, 80, -108, 11, -98,
-66, -82, 119, -40, 68, -83, 54, 17, -4, 66, -41, -122, 117, 101, -89, -33, 5
],
"deviceId": "640971a2-8c82-42d4-aed6-8876e47dd72c"
}

