Vào những ngày bận rộn của cuối năm 2020, tôi thấy dân tình xôn xao về sự việc có vài trường hợp nhận được tin nhắn từ ngân hàng rủ rê chơi cờ bạc, lô đề:

Ngày đó cũng là do khá bận với sự việc khác nên chưa có xem qua, ban đầu theo suy đoán của mình và ae trong team thì có thể là do API SMS Brandname đã bị lộ ở đâu đó, và gây ra sự việc sự việc bắn sms lừa đảo như trên.

Tuy nhiên đó cũng chỉ là nhận định chủ quan, do chưa có thông tin gì về nạn nhân cũng như phương thức cụ thể nên bên mình không có đưa ra thông cáo báo chí gì về vấn đề này.

Bẵng đi một thời gian sau, phía cục ATTT có gửi công văn thông báo về vấn đề này cho bên mình và yêu cầu phối hợp xử lý, mình cũng được join cùng để lót dép hóng hớt tin tức.

Thì ra vấn đề này đang xảy ra ko chỉ trên 1 nhà mạng mà hầu như thuê bao của cả 3 nhà mạng lớn(V*, V*, và M*) đều bị nhận được tin nhắn fake kiểu như này:

Dựa vào các thông tin phía quản trị hạ tầng nhà mạng bên mình báo lại thì không tìm được một dấu hiệu nào trên tất cả các hệ thống về việc những tin nhắn trên được gửi đi (Log SMS Brandname, MSC, …). Nói ngắn gọn hơn là vào khoảng thời điểm đó nhà mạng V* bên mình không gửi bất cứ tin nhắn nào như vậy cho người dùng.

Sau đó cũng dựa vào thông tin quan hệ từ nhiều nguồn, mình cũng biết được với thuê bao của nhà mạng khác cũng xảy ra trường hợp tương tự như vậy: NHÀ MẠNG KHÔNG GỬI CÁC TIN NHẮN NÀY.

Và mấy ngày sau, thông cáo báo chí cũng được đăng y chang như vậy.

Dân mạng thì cho là các nhà mạng đang trốn tránh trách nhiệm, các hacker nửa mùa thì lại được nước ra mặt chém gió như chuyên gia.

Nhưng sự thật sau đó là gì?

Và quan trọng nhất ai là người phải chịu trách nhiệm về vấn đề này?

¯\_(ツ)_/¯

Từ phía nhà mạng, bên mình chỉ có thể điều tra đến đó rồi bị mất dấu, không tìm ra được gì thêm.

Chỉ có thể đưa đến kết luận tạm thời: là người dùng đã bị kết nối vào BTS giả mạo, rồi sau đó nhận được tin nhắn spam từ kẻ tấn công đang điều khiển cái BTS giả mạo đó. Kết luận này cũng chỉ là trên giấy, chưa có chứng cứ gì cụ thể, vì làm gì có ai có đồ để kiểm chứng đâu 🤣.

Sự việc còn lại bên mình đã bàn giao hết cho phía cơ quan chức năng xử lý tiếp.

.

.

.

Với mình thì còn nhiều thắc mắc, sự việc như vậy còn là quá mập mờ, chưa thể đi đến đâu cả.

Tháng vừa rồi, mình mượn được đồ nghề của ông anh để thử nghiệm về mấy món này.

Tính tổng thời gian từ lúc nhận đồ về cho tới khi thử nghiệm thành công chỉ gỏn gọn trong vòng nửa ngày, không yêu cầu hiểu biết gì nhiều về sóng sánh này nọ cả.

#Phụ lục về setup Lab

Về phần cứng, thiết bị mình sử dụng để thử nghiệm là con Ettus USRP B210, sử dụng 2 anten 12dbi:

Mấy thứ đồ này hiện tại không được bán ở Việt Nam, và cũng là khó khăn để mua về, cho dù có giấy tờ chứng nhận mục đích sử dụng chính đáng (anh bạn mình bảo thế).

Về phần mềm, theo như tìm hiểu ban đầu của mình thì hiện tại có một số software cho phép giả lập cột sóng như sau:

  • OpenBTS: Lần release stable cuối cùng là 6 năm trước
  • YateBTS: Vẫn đang được phát triển, chỉ dành riêng cho thiết bị bladeRF
  • OsmoCom: Project này khá là lớn và được đầu tư tâm huyết, hỗ trợ nhiều thiết bị (chỉ có điều tốc độ thay đổi của software quá nhanh, nhanh hơn cả tốc độ release Document nên nhiều khi mọi thứ hoạt động không giống trong sách vở)

Và trong thử nghiệm này thì mình sử dụng OsmoCom cho USRP B210,

Ngày xưa muốn sử dụng osmocom thì phải tự build từ source code, nhiều khi lỗi tè le khá là đau đầu.

Bây giờ mọi thứ đã nhẹ nhàng hơn, việc setup chỉ đơn giản là add repo và apt install 😂, có thể tham khảo tại đây: https://osmocom.org/projects/cellular-infrastructure/wiki/Latest_Builds

Bộ osmocom có được chia thành nhiều phần nhỏ khác nhau:

  • OsmoBSC
  • OsmoBTS
  • OsmoTRX
  • OsmoHLR
  • OsmoMSC
  • OsmoSIP

Mỗi phần mềm này đóng vai trò tương ứng với tên của nó trong cách hoạt động của mạng GSM, ví dụ như:

  • OsmoBSC: Base Station Controller
  • OsmoBTS: Base Transceiver Stations
  • OsmoHLR: Home Location Register

Mô hình hoạt động trong thực tế của GSM có dạng như sau:

Với lab setup nhỏ nhỏ của mình, chỉ cần sử dụng tới OsmoBSC, OsmoTRX, OsmoHLR, OsmoBTS, OsmoMSC, OsmoSIP.

Và mô hình setup của nó cũng tương ứng với cách hoạt động của GSM trong hình phía trên:

Nếu sử dụng nguyên gốc Config của Osmocom sẽ không thể chạy được (đa số là do lỗi BSC không kết nối được MSC), do đó cần phải custom lại một số config như sau:

  • Chỉnh sửa OsmoMSC:

Thay đổi network country code (MCC) và mobile network code (MNC) thành MCC, MNC của nhà mạng thật

Thêm 1 instance của SS7 để sau đó có thể kết nối từ OsmoBSC sang

  • Chỉnh sửa OsmoBSC:

Thay đổi MCC, MNC tương tự như config ở OsmoMSC

Sửa đổi band sang GSM900 và CID & LAC cho phù hợp

Thay đổi ARFCN cho phù hợp với GSM900 nếu không sẽ bị lỗi

Thêm config SS7 tương ứng với config bên OsmoMSC

  • Chỉnh sửa OsmoHLR

Theo config ban đầu, khi điện thoại kết nối vào mạng giả lập này sẽ cần phải xác thực này nọ và cấp số, để cho phép thuê bao có thể kết nối thẳng vào và cấp số luôn, cần phải thêm config “subscriber-create-on-demand” như hình sau:

Như vậy là mọi thứ đã được setup xong xuôi, mạng giả lập đã sẵn sàng khởi chạy, lần lượt chạy các command sau:

  • Chạy OsmoSTP để OsmoBSC có thể giao tiếp với OsmoMSC
sudo systemctl start osmo-stp
  • Chạy OsmoHLR
  • OsmoMSC
  • OsmoBSC
  • OsmoTrx

Ở đây mình sử dụng USRP nên sẽ dùng osmo-trx-uhd:

  • Và cuối cùng là OsmoBTS

Sau khi chạy OsmoBTS, bên phía terminal của OsmoBSC sẽ báo lại như sau, nghĩa là đang bắt đầu giả lập BTS thành công:

Việc tiếp theo cần làm là kết nối vào cái BTS fake này …

Cái công đoạn kết nối này có thể làm = 2 cách: thủ công hoặc tự động.

Trong thực tế, với các trường hợp nạn nhân nhận được tin nhắn kia là điện thoại tự động kết nối vào các trạm fake này.

Nghe thì hơi vô lý, nhưng thực tế nó là vậy,

Mặc định, các thuê bao của người dùng sẽ sử dụng theo thứ tự 4g -> 3g -> 2g, nếu sóng của mạng này yếu quá sẽ tự tìm sóng thấp hơn và cuối cùng là 2g.

Với 2G, thuê bao sẽ tự động tìm trạm BTS gần nhất và CONNECT vào, bất kể nó là thật hay giả:

PoC by VNPT Security Lab:

.

.

Như vậy là mình đã demo xong về cách mà attacker fake BTS để lừa đảo người dùng trong thời gian vừa rồi.

Đây cũng chỉ là một giả thuyết từ nhà ngoại cảm bảo mật, chưa phải là kết luận cuối cùng của cơ quan chức năng, các bạn có thể đem làm giải trí cũng được ¯\_(ツ)_/¯.

Về cách hạn chế vấn đề này, theo như mình biết thì có nhà mạng V* nào đó đã bỏ hẳn 2g, thuê bao sẽ không còn kết nối được vào BTS 2g nào nữa, và cũng bỏ qua được nỗi lo nhận tin nhắn từ BTS giả mạo. Đó cũng là một cách hay để giảm thiểu thiệt hại cho người dùng, theo thông tin ngoài lề có thể trong tương lai các nhà mạng tại VN sẽ tắt 2G tại các thành phố lớn!

Vậy cuối cùng ai phải chịu trách nhiệm ?? ¯\_(ツ)_/¯

Ai phải chịu thiệt hại:

  • Doanh nghiệp chịu thiệt hại về uy tín
  • Người dùng là người cuối cùng bị thiệt hại về tiền của, vật chất
  • Nhà mạng bị mang tiếng xấu

Hãy là người thông thái khi sử dụng công nghệ!

__Jang of VNPT ISC__

9.312 lượt xem