Tôi đã hack điện thoại bảo mật hàng đầu VN như thế nào?

TL;DR: 

Lỗ hổng trong điện thoại BPhone cho phép hacker bẻ khóa chức năng chống trộm

--------------

    Những ngày cuối năm 2021, tôi tham gia BPhone Fan Club để hóng hớt thông tin sau vụ ra mắt chiếc tai nghe mấy trăm nghìn ăn đứt tai nghe chục củ. Tính xác thực về chất lượng của tai nghe AirB này như thế nào thì tôi tạm chưa bàn tới ở đây, chỉ có điều là tham gia group này một thời gian, tôi dường như được rõ thêm về định nghĩa: như thế nào là tẩy não. Mặc cho sự thật rành rành nhưng ở trong group này, đen cũng thành trắng, người ta bẻ lái, đánh tráo khái niệm rồi tự thủ dâm tinh thần với nhau. Có những ngày đồng nghiệp hỏi tôi có ổn không, vì cả ngày ko làm việc mà chỉ có ngồi cười như thằng điên, tất cả cũng chỉ là do một vài post của group tinh hoa công nghệ B* kia chòi lên newfeed của tôi ...

    Sau đó không lâu, vào ngày 19/12/2021, tập đoàn này tiếp tục ra mắt chiếc điện thoại thần kỳ, với các tính năng CAO CẤP bảo mật cao,  CHỤP ẢNH cực đẹp, GIÁ cực ngon, và là chiếc ĐIỆN THOẠI quốc dân... 


    Xem livestream giới thiệu sản phẩm, tôi cũng thấy chiếc điện thoại này khá hợp lý với người dùng tầm trung tại VN, chỉ tầm 3tr5->6tr đã có thể mua được. Trước đó, mỗi chiếc điện thoại Bphone có giá dao động từ 7-8tr trở lên, vượt quá so với túi tiền của người Việt. Âu cũng là mừng khi có một chiếc điện thoại có thể thay thế VSmart làm điện thoại quốc dân!

    Xem xét tiếp về phần bảo mật của chiếc điện thoại mà đó giờ vẫn luôn được nổ rất to là BẢO MẬT CAO, KHÔNG THỂ BỊ PHÁ VỠ. Tôi đã tự hỏi mình, sau bao nhiêu năm kể từ ngày sản xuất ra chiếc điện thoại "bảo mật" đầu tiên, họ có bao giờ tự kiểm tra lại xem mình "bảo mật" ở chỗ nào chưa. Lý do là vì tầm 3-4 năm trước, khi chiếc Bphone3 ra đời, tôi cũng đã mua 1 chiếc về để nghiên cứu, xem họ "bảo mật" cái gì, "bảo mật" ở chỗ nào, kết quả hồi đó đã khiến tôi thất vọng, chiếc Bphone bị bẻ khóa chức năng chống trộm trong vòng chưa tới 5 giây. 

    Trên FB của CEO NTQ có nói "... có đến 89% khách hàng (Bphone) tìm lại được máy thất lạc". Và có so sánh với Samsung, Iphone, là tại sao những chiếc Iphone, Samsung kia cũng bị mất mà không thấy ai trả lại cả, rồi lại thủ dâm điện thoại của mình bảo mật cao...


    

    Theo tôi nghĩ lý do thực sự không chắc đã là do tính năng cao cấp của điện thoại, mà nó nằm ở giá trị của cái điện thoại: "Bạn không thể bị lợi dụng khi bạn vô dụng".

    Sau 4 năm làm điện thoại, họ vẫn hô hào về chiếc điện thoại BẢO MẬT CAO, tôi cũng thấy làm lạ khi chưa có ai nói về những gì họ thực sự làm. Tôi cũng khá ngứa ngáy trong người nên ngay khi ra mắt đã đặt lấy luôn một chiếc về để kiểm tra xem lỗ hổng tôi đã tìm được 4 năm trước có còn tồn tại hay không. Và cũng không bất ngờ lắm khi nó vẫn còn nguyên trong chiếc điện thoại BẢO MẬT CAO tầm vũ trụ này, kết quả là cũng chỉ mất 5s để vượt qua cơ chế chống trộm của Bphone đời mới nhất.

    Lần này tôi quyết định sẽ không giữ kín thông tin nữa, mà sẽ công khai toàn bộ thông tin về lỗ hổng cũng như cách khai thác để mọi người cùng biết sự thật về chiếc điện thoại BẢO MẬT CAO level vũ trụ này. Tôi cũng đã nghĩ về việc report cho Bkav, tuy nhiên Bkav trả cho mỗi lỗ hổng như này được có tầm 3tr, trong khi tôi mua máy cùng với công cụ cũng đã hết ngót nghét 20tr rồi. 


    ###########################################################################

    ############## Phần kỹ thuật

    ###########################################################################

    Tôi phát hiện lỗ hổng này khá lâu rồi nên không còn nhớ mọi việc bắt đầu như thế nào nữa. Bằng một cách nào đó tôi biết được trên Bphone có một phần mềm tên BMS làm nhiệm vụ bảo vệ và lock máy khi nhận được lệnh báo mất máy từ số điện thoại chủ nhân. 

    

Ảnh: tinhte.vn

    Bphone không cung cấp ROM cho người dùng nên tôiextract file apk của BMS từ điện thoại, tôi dùng 3 lệnh sau để pull app từ bphone về:

    ```

        pm list packages | grep bms

        pm path com.bkav.bphone.bms

        adb pull /system/priv-app/BMS/BMS.apk

    ```


    File thu được có hash như sau:

    


    Dịch ngược app BMS không khó, tôi là một dân tay ngang cũng có thể đọc hiểu code dịch ngược một cách dễ dàng!

    Dựa vào thông tin của file Manifest, tôi biết được một số service/receiver sau có ảnh hưởng tới tính năng chống trộm của Bphone:

    


        

    Service BmsFirebaseMessagingService có chức năng gửi yêu cầu đến máy chủ để kiểm tra trạng thái lock của máy và gọi WebAntiTheftUtils.checkAndLock() để lock máy nếu cần thiết.





    Thứ làm tôi thấy thú vị và tò mò đó là họ có quảng cáo Bphone có tính năng chống trộm ngay cả khi điện thoại KHÔNG CÓ INTERNET. Tôi tự hỏi bằng cách nào mà họ có thể kiểm tra trạng thái máy mà KHÔNG CẦN INTERNET? Theo suy đoán của tôi, Bphone giao tiếp với server thông qua tin nhắn SMS để kiểm tra trạng thái lock của máy, mặc dù nó mất thêm chi phí gửi tin nhắn nhưng không đáng là bao.
    Và receiver SimStateReceiver chính là đáp án cho câu hỏi trên.
       

    Dựa vào thông tin config có thể biết được receiver này sẽ được chạy mỗi lần thay sim hoặc bật máy lên. Mã nguồn của method SimStateReceiver.onReceive() được gọi đến như sau:


    Do điện thoại được thiết kế với 2 SIM nên sẽ có 2 thread được tạo ra để gửi SMS cho mỗi SIM

            

    Lòng vòng một hồi rồi sẽ gọi ngược về SimStateReceiver.doSendSms(),

    SmsAntiTheft.buildMessage() sẽ tạo ra message để gửi đến server, trong message này bao gồm một số thông tin đã được mã hóa của máy như: chip id, IMEI, ... Tất cả các tin nhắn này sẽ được bắt đầu với chuỗi "BMSCS" và được gửi đến một trong các số điện thoại sau.
        - 09680911911
        - 0976748888
        - 0915026357

    Từ thông tin nhận được, server sẽ kiểm tra xem khách hàng có báo mất máy hay không, nếu có  sẽ trả về một SMS khác để thực hiện lock máy. 
    Vậy đoạn nhận SMS từ server rồi thực hiện lock máy trên Bphone diễn ra như thế nào? 
    Dĩ nhiên là nó vẫn được thực hiện bởi app BMS của Bphone. Đoạn code xử lý phần này cũng đã được chú ý một chút và obfuscate nên sẽ tốn thêm một chút thời gian đọc hiểu, class này đã được tôi rename thành BmsSMSChecker, bạn đọc có thể tìm class này bằng cách dựa theo string "bms.main.ISpamCheckerService":


    Class này có method onTransact(), chức năng chính của method này là lắng nghe và đọc TẤT CẢ SMS gửi tới BPhone, rồi xử lý các tác vụ tương ứng (có gửi nội dung đi đâu hay ko thì tôi ko biết). Trong method này có một phần mã nguồn đáng chú ý như sau:
     
    
    Để rõ ràng hơn cho đoạn phân tích phía dưới, tôi xin cung cấp trước một mẫu tin nhắn được nhận từ số điện thoại server (mẫu này tôi lượm đc bên tinhte, có lẽ trước đó cũng đã nhiều người biết chuyện này nhưng không biết chức năng của nó là gì):
      
Ảnh: tinhte

BMSCS2

Zoa726rjSxiXzCVLH4gn5JIw3MmtRtCLZBkG+ZTkVBBiTa3Xj0PyvjRkKngmDPUFlRR2pQMsFdb2ZaQmM4cNtpbgyoVrQ1I6g5f7/Rthw+k=

## . 

    Chương trình KHÔNG KIỂM TRA DANH TÍNH CỦA SENDER, hay brandname như nào, nội dung của SMS vẫn tiếp tục được gửi vào method SmsAntiTheft.handleSms() để xử lý, nếu kết quả là true thì sẽ thực hiện lock máy. Đây chính là thứ chúng ta đang tìm kiếm! Mã nguồn xử lý SMS của method SmsAntiTheft.handleSms() như sau:
      

                


    Bước đầu tiên, method này sẽ check xem tin nhắn có bắt đầu bằng chuỗi "BMSCS" hay không, nếu không sẽ ngừng xử lý. Sau khi kiểm tra và cắt bỏ chuỗi BMSCS, method sẽ tiếp tục giải mã đoạn base64 bằng method Utilities.decryptAES(), mã nguồn của method decryptAES như sau:

    
    Method này đang sử dùng một fixed key và fixed IV để decrypt/encrypt dữ liệu. Mặc dù họ đã cố gắng mã hóa key và IV thêm một lần nữa, nhưng việc giải mã hoàn toàn đơn giản, tôi chỉ cần copy y chang đoạn code trên rồi cho vào chạy là đã có thể lấy được key rồi. Nội dung của AES key và IV sau khi được giải mã như sau:
    

    
Sử dụng các key trên, tôi lấy được nội dung message mà server trả về cho điện thoại. Để tự giải mã message tương tự bạn có thể sử dụng link này https://tinyurl.com/2p9fde46:
    


    Nội dung của tin nhắn sau khi được giải mã:
    358329011111111|787863|12c05
    &&
    f:6
    fd:7ab40fff43adf528cbec9bc311bbbe70
    &&

    Các dòng được phân cách bởi ký tự "\n&&\n", trong đó, dòng đầu tiên bao gồm các thông tin: 
        IMEI|code gì đó|GUID

    IMEI bắt buộc phải trùng với device hiện tại để chương trình xử lý tiếp, GUID sẽ được lưu lại vào db của device, nếu GUID đã tồn tại trong máy thì không xử lý tiếp. Chung quy lại ở đây chúng ta cần một IMEI chính xác và một GUID mới để có thể đi tiếp!
    Dòng tiếp theo được xử lý đó là:
f:<mã lệnh>(với 6 là khóa máy)
fd: <hash của mã mở khóa máy>

     Trong đó, hashedPasscode = md5("bkis" + real_pass_code + "bkavtulu"), ví dụ md5("bkis000000bkavtulu") = 7ab40fff43adf528cbec9bc311bbbe70



       ...

    Tóm lại tại bước này, điều kiện và kết quả của kỳ vọng đó là:

        - Chúng ta có một IMEI trùng với device,

        - GUID mới chưa tồn tại trong máy

    Khi thỏa mãn các điều kiện trên, chương trình sẽ tiếp tục gọi SmsAntiTheft.doLock() để thực hiện lock máy với passcode phía trên:

    => Như vậy, dựa vào lỗi KHÔNG KIỂM TRA người gửi và sử dụng FIXED KEY trong mã nguồn, ta hoàn toàn có thể fake một SMS của server và ép Bphone bị lock với passcode bất kỳ.

Tôi đã tạo một con bot Telegram để tạo SMS với passcode mặc định là "000000", ai có nhu cầu có thể sử dụng tại https://t.me/bphone_bot.
Clip demo:




...
*Có thể các bạn sẽ tự hỏi làm cách nào để lấy được IMEI của thiết bị, tôi xin phép không đề cập chi tiết tới phần này, coi như là một câu hỏi mở dành cho bạn đọc!
Trên đây là những chia sẻ của tôi về thực hư của tính năng chống trộm trên chiếc điện thoại BẢO MẬT NHẤT thế giới. Tính năng này còn những lỗ hổng khác, tuy nhiên do giới hạn về độ dài của bài viết nên mình sẽ không đề cập tại đây.
Hy vọng Bkav thay vì chỉ biết nổ to ngoài miệng thì hãy dành thời gian kiểm tra lại những sản phẩm của mình xem đã tốt hay chưa. 
Tôi cũng mong chúng ta có thể có một chiếc điện thoại QUỐC DÂN, CHẤT LƯỢNG CAO, BẢO MẬT CAO, Made in Vietnam, Made by Vietnam đúng nghĩa, thay vì chất lượng như hiện tại!
Người trong ao hồ xin cảm ơn quý vị đã đọc tới đây,
p/s: feedback về tai nghe AirB: so sánh với tai nghe hổ vằn người ta còn đánh thêm.

Comments

  1. IMEI anh xem đăng sau máy hoặc trọng hộp à anh hoặc bóc máy ra không biết có IMEI ghi đè lên chip không

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. hảo hán =)) rất dũng cảm

    ReplyDelete
  4. đây là hack được trong điều kiện lý tưởng rồi, đó là biết được imei. Vậy trong điều kiện thực tế, ví dụ như máy bị rơi, hoặc bị đánh cắp, muốn hack được điện thoại thì phải làm thế nào nhỉ?

    ReplyDelete
    Replies
    1. Ta hãy share trang này ngay và luôn. Dìm chết Quảng

      Delete
    2. Imei máy bạn cầm điện thoại lật ra phía sau lưng là thấy. Nó đi theo điện thoại (physically) mà. Thường trộm điện thoại họ sẽ có được cái máy trong tay rồi. Còn ko thì ai đó lật mặt xong dt. Nhanh tay chụp lại là xong.

      Delete
    3. Bphone mặt sau k có imei nhé. Cái này là hắn có sẵn imei rồi

      Delete
    4. người ta cho bạn cái cuốc để tự tìm hiểu, ăn sẵn nó quen cái gì cũng hỏi :)

      Delete
    5. sự thật thì máy bphone 3 của mình đã từng quên mk và ra tiệm sửa ngta chạy lại ngon lành, mất 250k; nên đừng nói là bảo mật hàng đầu, máy không có mk thì người ta vẫn dùng được chứ không phải như ông q nói đâu.

      Delete
    6. Nếu quên mật khẩu mà phải chạy lại về máy trắng ( mất dữ liệu rồi ) thì có gì đâu, bảo mật là vượt qua pass máy hoặc trường hợp chủ máy khóa máy chứ ?

      Delete
    7. @suytdeptrai điện thoại của ông thì chả v, máy bị khóa thì nếu ông không phải chủ thì có mà mở bằng niềm tin. Mình đọc xong bài viết rồi, lỗ hỏng này chỉ cần thêm vài dòng lệnh là fix lại được ngay.

      Delete
    8. @Active3 sao bạn nói ngu thế, lỗ hổng nào mà chả có cách fix, quan trọng là fix trước hay sau khi bị khai thác thôi. Nói chuyện huề vốn vcl =)))

      Delete
  5. Không thể tin nổi, Thật không thể tin nổi =))

    ReplyDelete
  6. a còng nguyễn từ quảng =)))))))))))))))

    ReplyDelete
  7. mấu chốt là có imei đúng k ? như clip là đã biết dc imei, bt lấy trộm thì lấy imei kiểu gì nhỉ ?

    ReplyDelete
  8. Mặt sau Bphone không có imei, liệu có làm được khi không biết imei của máy không vậy ?

    ReplyDelete
  9. Vậy là BPhone nó đọc hết tin nhắn của mình :).

    ReplyDelete
    Replies
    1. không hẳn là đọc hết mà chỉ là đọc các ký tự đầu. Nếu không đúng với regex thì nó không đọc nữa.

      Delete
    2. Bản thân dùng trình tin nhắn mặc định của nó đồng nghĩa với việc nó toàn quyền xem tất cả nội dung SMS rồi bác

      Delete
    3. Đưa về fastboot rồi fastboot oem get-psid được không nhỉ

      Delete
    4. Hoặc ADB shell mình nhớ cũng lấy được imei

      Delete
  10. làm thế này thì lại giết bác Quảng r

    ReplyDelete
  11. Replies
    1. từ thời dùng màn hình trắng đen là đã biết mấy code này để lấy thông tin rồi. Chỉ thêm 1 động tác search để biết cách lấy imei no.mà sao lại có người comment ở trên nhỉ.

      Delete
    2. nếu vào được phần bàn phím để gõ *#06# thì máy đã mở được trước đó rồi. cần gì lấy imei để mở nữa?

      Delete
    3. Máy đang khoá, bấm check niềm tin à bạn

      Delete
    4. Nếu đưa về fastboot được thì fastboot oem get-psid là lấy đc imei mà

      Delete
  12. Hay quá à, bro quá, còn ngày trước thì những kĩ thuật sửa chữa điện thoại nó tháo tung điện thoại ra, tháo ổ cứng điện thoại ra, cho vào đế đọc và xoá luôn ứng dụng đó để bypass

    ReplyDelete
  13. hay đấy. thử tháo sim ra xem nó còn tự khoá khi không cần internet được ko bạn

    ReplyDelete
  14. như t thấy bản chất là phải biết được imei bằng 1 cách nào đó để thực hiện sms fake gửi về máy, tuy nhiên trong TH imei k in lên khay sim, mặt lưng , k thể gõ lệnh *#06# thì khá khó khăn thực hiện việc này

    ReplyDelete
  15. chính chúng tôi cũng không thể tin nổi

    ReplyDelete
  16. theo t thì chắc IMEI nằm đâu đó trong phần cứng :thonk:

    ReplyDelete
  17. cách này chỉ thực hiện khi nắm đc khóa là imei, còn không thì không làm được

    ReplyDelete
  18. Xem kiểu này bác Quảng còn mánh khóe bào chữa nào nữa :))

    ReplyDelete
  19. Xem kiểu này bác Quảng còn mánh khéo bào chữa nào nữa :))

    ReplyDelete
  20. Đã có ai có imei thử chưa ae? sao không được nhỉ? mãi máy con vợ vẫn chưa bị khóa =)))

    ReplyDelete
  21. vẫn chưa tìm đc ra cách bác ý lấy imei :))))))

    ReplyDelete
  22. Check imei thì có thể làm ngoài hệ điều hành mà, ví dụ vào recovery mode

    ReplyDelete
  23. Tôi mạo muội xin dự đoán là bằng cách nào đó người hack spoof SIM và trick blocked phone để get IMEI send đến 1 phone khác.

    ReplyDelete
  24. ai thử test trên bphone chưa. cho ae hóng kết quả nào

    ReplyDelete
  25. code kiểu này thì chả bay

    ReplyDelete
  26. This comment has been removed by the author.

    ReplyDelete
  27. Còn quảng nổ thì còn ghét sản phẩm của bkav

    ReplyDelete
  28. Đọc cho vui thôi chứ mình ko có sài Bk =))

    ReplyDelete
  29. tập đoàn công nghệ đầu hàng VN

    ReplyDelete
  30. check qua sms thì rút sim xong reset máy thì chắc dùng được như ipod touch nhỉ, nếu mà root được xong xoá luôn cái bms thì bao nhiêu công nổ của tnt đi tong hết à:))))

    ReplyDelete
  31. GenK lại có bài để viết rồi :))

    ReplyDelete
  32. chưa có bro nào mở khóa đc theo cách trong bài à.

    ReplyDelete
  33. nhưng có thắc mắc, liệu có bị khóa lại sau 1 lúc mở bằng cách fake mã k?

    ReplyDelete
  34. This comment has been removed by the author.

    ReplyDelete
  35. hôm qua xem trên youtube thấy vài video nói về vụ bphone này, hôm nay mở ra xem lại bay màu hết trơn. không lẽ bkav thao túng luôn cả bên youtube à

    ReplyDelete
    Replies
    1. lzi đủ quyền lực mức đấy :v
      còn đầy video về bkav có sao đâu

      Delete
    2. hôm qua t thấy 2 video bóc phốt, trong đó t có đăng kí 1 kênh. hôm nay xem lại video chẳng còn, kênh tui đăng kí cũng không thấy luôn

      Delete
  36. Thật tôi thấy Bkav với cộng đồng tinh hoa giờ cứ như là một hội tự nhục với nhau ấy. Lúc báo bug thì lại bảo hack fake biện hộ, bao che (rồi chắc đang âm thầm đi fix bug rồi nhỉ) để giấu cái điểm khuyết của mình đi vậy. Rồi cái cộng đồng thì toàn là mấy con dân hùa đi khen, tâng bốc đến phát ớn, còn chê/nói khuyết điểm thì bị ném gạch, bị bảo là ko yêu nước. Giống như là từ khi bác Phúc cầm con B2 khen là cứ nghĩ mình tốt lắm vậy.

    ReplyDelete
  37. Sản phẩm bọn này chán thật sự, cái tai nghe chip thì rẻ, loại chíp bình dân mà gắn vào bán cả triệu

    ReplyDelete
  38. em bán thuốc cường dương. Anh Quảng có đọc bài này thì mua thuốc ủng hộ em nhé https://shoptinhyeu.vn

    ReplyDelete
  39. Bác ơi. Bạn có thể trích xuất phần mềm eSim trên bphone 3 và B86 để cài lên điện thoại android bình thường được không bạn. Khi đó có thể dùng esim vật lý cho các máy khác không phải bphone

    ReplyDelete
  40. vào phần commend còn thấy mấy ông Bfan với nv đc cài vào, chắc để ai cx bt

    ReplyDelete

Post a Comment

Popular posts from this blog

Chiếc điện thoại bảo mật [Phần 2] (Ứng dụng crypto như nào cho đúng?)