Phân tích backdoor trò chơi FruitNinja phiên bản Nga
Với nghiên cứu của mình, tôi đã chọn phân tích một ứng dụng Android phổ biến cho các phần mềm độc hại. Nhưng tại sao tôi chọn một phiên bản tiếng Nga? Vâng đó là bởi vì phiên bản này đã thực hiện một case study hết sức thuyết phục từ quan điểm phân tích mà sau này tôi phát hiện ra trong quá trình nghiên cứu của mình. Ứng dụng tôi chọn là trò chơi phổ biến có tên FruitNinja được download từ Cửa hàng Android giả mạo của Nga (Hình 1).
Hình 1: Cửa hàng ứng dụng Android giả mạo của Nga
Các bước để phân tích backdoor
Application PacKage (APK) là định dạng tệp được sử dụng để phân bổ và cài đặt ứng dụng trong điện thoại hệ điều hành Android. Đây là kho lưu trữ zip /package (gói) dựa trên định dạng tệp JAR chứa các chứng chỉ, tài sản, tài nguyên, tệp kê khai và DalvikExecutable (DEX) chứa mã chương trình thực tế.
Khi thay đổi tiện ích mở rộng APK thành ZIP, tôi đã nhận được tệp nén được trích xuất như sau:
AndroidManifest.xml là XML nhị phân Android mô tả tên của ứng dụng, phiên bản, quyền cấp phép và tài nguyên thư viện được tham chiếu. Để biến tệp thành định dạng XML có thể đọc được của con người, tôi đã sử dụng tập lệnh python manitree.py để chuyển đổi.
Ở đây, kết quả kiểm tra kê khai cho biết FruitNinja cho phép gửi và nhận tin nhắn SMS đã bắt kịp được ngay từ cái nhìn đầu tiên. Ngoài ra thư mục tài nguyên (res) cũng khá thú vị.
Quan sát nhanh vào các tệp hình ảnh cho thấy một khuôn mặt người bình thường trong tất cả các hình ảnh. Vậy, anh chàng đó là ai? Thấy tò mò, tôi đã tìm hiểu thêm bằng cách sử dụng tìm kiếm hình ảnh của Google dẫn đến ký tự Meme của Nga từ "Bestman from Fryazino". Trong bối cảnh Nga, Bestman là một thuật ngữ được sử dụng để gợi nhắc đến "nhân chứng".
Câu chuyện Fryazino
Một người dùng bệnh phong đã tạo ra một loạt các bức ảnh, trong đó có một nhân chứng tại đám cưới của một chú rể ở thị trấn ngoại ô Fryazino. Trong tất cả các tấm hình nhân chứng đó được mô tả trong cùng một tư thế và cùng một biểu cảm. Tấm hình của người "bestman" đó (với áo khoác màu đen và quần trắng) được sao chép riêng biệt với sự biến hình bằng Photoshop sử dụng nền tương phản tối. Một trang wiki của Nga cho biết tên của người đàn ông này là "Alex". Nhưng điều này chẳng có ích gì đối với việc phân tích; mà chỉ là một mẩu thông tin khác. Tuy nhiên, tấm hình này lại được tìm thấy trong rất nhiều malware (phần mềm độc hại).
Nhưng khoan !! Nó có liên quan gì với FruitNinja?
Lý do ở đây chính là các tệp "tạm thời" này có thể thay đổi dấu vân tay ứng dụng và cuối cùng bỏ qua được mẫu khóa truyền thống dựa các trình quét chống vi-rút bởi việc cung cấp một mẫu khóa khác. Đây là một kỹ thuật bỏ qua AV cổ điển được gọi là đa hình phía server được tìm thấy trong nhiều window dựa trên malware, và giờ đây nó được tìm thấy trong các ứng dụng Android phổ biến như Instagram, Angry birds, v.v. Mỗi lần người dùng tải xuống ứng dụng, nó sẽ tạo một phiên bản biến đổi khác thường của cùng một tệp.
Phân tích tệp thực thi được - Dalvik
Việc giải nén tập tin dex có thể được thực hiện theo hai cách.
- Smsemb Assembler/Dissembler
- Chuyển đổi Dex2Jar
Trình chuyển đổi Dex2jar dễ dàng hơn vì nó sẽ tạo ra một kho lưu trữ java (tệp .jar) mà về cơ bản là bản thân mã nguồn. Từ đây, chúng ta có thể sử dụng bất kỳ trình biên dịch Java nào để kiểm tra mã nguồn như trong hình bên dưới.
Gói đầu tiên trong JD-GUI (Java Decompiler) hiển thị lớp C2DM (Cloud to Device Messaging Framework). C2DM là một dịch vụ cung cấp một cơ chế đơn giản và gọn nhẹ giúp nhà phát triển ứng dụng gửi dữ liệu từ máy chủ đến ứng dụng của họ. Dịch vụ này thường được sử dụng để cập nhật ứng dụng, nhưng cũng có thể được sử dụng cho mục đích độc hại như duy trì các máy chủ C&C (Command and Control).
Gói thứ hai mang nhiều mã độc hơn. Lưu ý mã tại startSendMessages() hiển thị như trong hình trên. Theo dự kiến, nó sẽ gửi SMS đến một số number (số). Nhưng con số đó là gì? Và nó đang cố gắng gửi gì? Hãy tiếp tục khám phá thêm.
Trong khi phân tích mã chương trình, tôi nhận thấy rằng ứng dụng đang xây dựng một số tin nhắn văn bản nhất định, như trong hình: 8 ở trên; dựa trên tệp xml được lưu trữ trong thư mục tài nguyên. Mã kiểm tra mã quốc gia nhất định (ID) tại đây chẳng hạn như Liên bang Nga (RF), Ukraina (UA) và Kazakhstan (KZ). Sau đó nó đặt thông báo phụ thuộc vào mã quốc gia được xác định. Điều gì sẽ xảy ra nếu mã quốc gia không thuộc bất kỳ danh sách nào trong số những danh sách này? Ở đây, bất kỳ mã nào ngoài mã các quốc gia này sẽ được đặt làm Liên bang Nga theo mặc định.
Khi chương trình Android được biên dịch, tất cả các tệp tài nguyên này sẽ được chuyển đổi thành tệp nhị phân. Sử dụng công cụ tiện ích apktool, tôi giải mã mọi thứ về trạng thái ban đầu. (Hình 9).
Tệp xml được chuyển đổi bây giờ trông giống như hình bên dưới (hình 10). Trình dịch nhanh của Google (sang tiếng Anh) sẽ hiển thị nó dưới dạng thông báo thao tác cài đặt.
Phân tích sâu hơn về Actor Class, tôi nhận ra ứng dụng xây dựng các thông báo tin nhắn dựa trên Mã quốc gia di động (MCC) và Mã mạng di động (MNC). Ứng dụng xác nhận mã quốc gia di động của Liên bang Nga (RF), Kazakhstan (KZ) và Ukraine (UA) và Mã điều hành tương ứng.
Mã giả trông giống như dưới đây:
Ứng dụng lên lịch một số tác vụ (hình 12) chẳng hạn như đặt báo thức để kiểm tra việc mua ứng dụng. Nếu ứng dụng được mua, nó sẽ chỉ gửi một tin nhắn SMS đến số đặc biệt. Nó đặt thời gian báo thức ban đầu là 300000000 system (tính bằng mili giây) điều đó có nghĩa là 83,33 giờ sau khi ứng dụng được cài đặt lần đầu tiên trên thiết bị.
Trình lên lịch kiểm tra giấy phép của ứng dụng một lần trong mỗi 50000L systemtime (tính bằng mili giây) là 50 Giây. Cuối cùng, số SMS sẽ bị giảm khi giấy phép ứng dụng được gia hạn.
Khi ứng dụng tiếp tục chạy dưới dạng phiên bản miễn phí, trình lên lịch tiếp tục kiểm tra giấy phép và cũng giữ các thư gián điệp được lưu trữ (hình 14) đến số đã được thiết lập trước.
Phân tích thêm (hình15) về con số tiết lộ rằng nó thuộc về một công ty của Nga có tên là PM-Invest Ltd. Trang web này cung cấp một dịch vụ trực tuyến cho SMS lừa đảo. Họ có vô vàn các số premium mà một số người có thể mua một trong số các con số này, và nếu bất kỳ người dùng bị nhiễm nào gửi tin nhắn đến những con số đó, những người mua này sẽ nhận được một khoản hoa hồng từ PM-Invest Ltd cho mỗi SMS.
Và cứ từ nay trở đi, chu trình phần mềm độc hại diễn ra như sau
1. Ứng dụng truy cập vào trạng thái điện thoại và chiết xuất MCC và MNC.
2. Sau đó, nó xác minh và đặt số premium tương ứng.
3. Xây dựng định dạng SMS để gửi đi.
4. Kiểm tra giấy phép của ứng dụng để xác minh xem đó có phải là phiên bản thử nghiệm hay đã được mua hay không.
5. Cứ 50s một lần nó lại kiểm tra giấy phép ứng dụng, và giảm dần số lượng SMS nếu ứng dụng đã được mua và giấy phép đã được gia hạn.
6. Cứ 83,33 giờ một lần ứng dụng sẽ gửi SMS tới số premium.
Hình dưới đây được lấy từ trang web lừa đảo hiển thị sơ đồ bảng giá của họ và cách thức hoạt động của hệ thống.
Kết luận
Phân tích nghiên cứu phần mềm độc hại được thực hiện trên ứng dụng Android để nhằm thấy được sự tinh vi của những người viết phần mềm độc hại thực sự và bản chất bên trong ứng dụng. Trong suốt quá trình các thị trường ứng dụng hợp pháp đang cố gắng để làm sạch tất cả các phiên bản backdoor của ứng dụng, người ta quan sát thấy rằng vẫn còn một số ứng dụng đã có thể chứa mã độc hại bất chấp tất cả các nỗ lực để chốt các sơ hở. Điều này có thể phần lớn quy về Android bởi mô hình phát triển mở và phân phối của nó. Các biện pháp bảo vệ đơn giản sau đây có thể giúp người dùng tránh sự nhiễm độc nghiêm trọng như vậy.
Các biện pháp bảo vệ và phòng ngừa chung
Tránh tải xuống ứng dụng từ các cửa hàng ứng dụng thứ ba không xác định
Xác minh cẩn thận quyền cho phép cần thiết cho mỗi ứng dụng là gì
Tải xuống các ứng dụng của các tác giả hợp pháp, đặc biệt là các ứng dụng nổi tiếng vì các ứng dụng bình thường có thể được viết lại bởi một trình coder độc hại với một kỳ vọng xấu xa làm nhiễm độc tối đa.
Sử dụng chương trình chống/giám sát phần mềm độc hại và update thường xuyên.
Tham khảo
1. Nội dung APK: http://en.wikipedia.org/wiki/APK_(file_format)
2. DalvikExecutable: http://source.android.com/tech/dalvik/dex-format.html
3. Đa hình phía server: http://www.symantec.com/connect/blogs/server-side-polymorphic-android-applications
4. Khung C2DM: https://developer.google.com/android/c2dm/
5. MCC & MNC: http://mcclist.com/mobile-network-codes-country-codes.asp
Link gốc: http://niiconsulting.com/checkmate/2012/10/russian-fruitninja-backdoor-analysis/
VCCloud via niiconsulting.com