Phân tích vài mẫu Android Malware từ xưa

Những ứng dụng chạy trên các thiết bị Android phải đối mặt với nhiều mối nguy mất an toàn dữ liệu. Và thủ phạm lợi dụng những lỗ hổng bảo mật để đánh cắp dữ liệu của chúng ta chính là các ứng dụng độc hại, những Android malware.

Trong bài này, mình sẽ phân tích một vài mẫu Android Malware xuất hiện khá lâu rồi, cụ thể là các mẫu SMSware thuộc họ fakenotify. Qua đó chúng ta có thể thấy một số cách các ứng dụng độc hại xâm nhập được vào thiết bị di động của mình.

Công cụ sử dụng:

Các mẫu malware:

Cài đặt AndroPyTool

B1: Tiến hành cài đặt theo hướng dẫn trên Github của AndroPyTool.

B2: Xóa các file trong thư mục AndroPyTool/DroidBox_AndroPyTool/images

B3: Tải các file ramdisk.img và system.img tại đây, sau đó giải nén vào AndroPyTool/DroidBox_AndroPyTool/images

Như vậy là chúng ta có thể sử dụng AndroPyTool để phân tích tự tộng các mẫu Android malware rồi. Cách chạy tool

Chú ý: khi chạy AndroPyTool nếu terminal liên tục báo boot not complete thì đừng vội tắt đi luôn. Hãy đợi 1 lúc, và tools sẽ chạy bình thường.

Phân tích

AndroPyTool

Sau khi chạy tool với mẫu 5e0da2476bb8ab81281bb61edfc84e18.apk chúng ta sẽ có được một file json dạng như sau (đã lược bớt hầu hết thông tin):

{
    "Pre_static_analysis": {
        "Filename": "MW/5e0da2476bb8ab81281bb61edfc84e18.apk", 
        "md5": "5e0da2476bb8ab81281bb61edfc84e18", 
        "sha256": "fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e", 
        "sha1": "05966c6c24c48bc5a4fe56eb76283fef2224e0f5", 
        "VT_positives": 35, 
        "VT_engines": 62, 
        "avclass": "trojan"
    }, 
    "Static_analysis": {
        "Package name": "ad.notify1", 
        "Permissions": [
            "android.permission.READ_PHONE_STATE", 
            "android.permission.ACCESS_NETWORK_STATE", 
            "android.permission.SEND_SMS", 
            "android.permission.INTERNET", 
            "android.permission.WRITE_EXTERNAL_STORAGE", 
            "android.permission.INSTALL_PACKAGES", 
            "android.permission.DELETE_PACKAGES"
        ], 
        "Opcodes": {
            "array-length": 18, 
            ....
        }, 
        "Main activity": "ad.notify.OperaUpdaterActivity", 
        "API calls": {
            "android.app.AlarmManager": 1, 
            ....
        }, 
        "Strings": {
            "RepeatingAlarmService START !!!)": 1, 
            ....
        }, 
        "API packages": {
            "android.app": 13, 
            ....
        }, 
        "System commands": {
            "id": 2
        }, 
        "Intents": {
            "android.intent.action.PHONE_STATE": 1, 
            "android.intent.action.MAIN": 1, 
            "android.intent.action.USER_PRESENT": 1, 
            "android.intent.action.BOOT_COMPLETED": 1
        }, 
        "Activities": {
            "ad.notify.OperaUpdaterActivity": [
                "android.intent.action.MAIN"
            ], 
            "ad.notify.NotificationActivity": []
        }, 
        "Services": {
            "ad.notify.NotificationService": []
        }, 
        "Receivers": {
            "ad.notify.RepeatingAlarmService": [], 
            "ad.notify.AutorunBroadcastReceiver": [
                "android.intent.action.PHONE_STATE", 
                "android.intent.action.USER_PRESENT", 
                "android.intent.action.BOOT_COMPLETED"
            ]
        }, 
        "FlowDroid": {
            "SMS_MMS": {
                "SMS_MMS": 0, 
                "FILE_INFORMATION": 0, 
                "UNIQUE_IDENTIFIER": 0, 
                "FILE": 0, 
                "SYNCHRONIZATION_DATA": 0, 
                "BLUETOOTH_INFORMATION": 0, 
                "EMAIL": 0, 
                "VOIP": 0, 
                "LOG": 0, 
                "IMAGE": 0, 
                "DATABASE_INFORMATION": 0, 
                "ACCOUNT_SETTINGS": 0, 
                "VIDEO": 0, 
                "PHONE_CONNECTION": 0, 
                "CALENDAR_INFORMATION": 0, 
                "WIDGET": 0, 
                "NFC": 0, 
                "LOCATION_INFORMATION": 0, 
                "BUNDLE": 0, 
                "BROWSER_INFORMATION": 0, 
                "SYSTEM_SETTINGS": 0, 
                "AUDIO": 0, 
                "PHONE_STATE": 0, 
                "IPC": 0, 
                "NOT_EXISTING": 0, 
                "ACCOUNT_INFORMATION": 0, 
                "BLUETOOTH": 0, 
                "CONTACT_INFORMATION": 0, 
                "NO_CATEGORY": 0, 
                "NETWORK_INFORMATION": 0, 
                "NETWORK": 0
            }, 
            ....
        }
    }, 
    "Dynamic_analysis": {
        "Droidbox": {
            "apkName": "/home/vmbear/Downloads/apk/samples//MW/5e0da2476bb8ab81281bb61edfc84e18.apk", 
            "enfperm": [], 
            "recvnet": {}, 
            "cryptousage": {}, 
            "recvsaction": {
                "ad.notify.AutorunBroadcastReceiver": "android.intent.action.PHONE_STATE"
            }, 
            "servicestart": {}, 
            "sendnet": {}, 
            "sendsms": {
                "2.6926231384277344": {
                    "message": "8612315902026655873297.1", 
                    "type": "sms", 
                    "number": "5537"
                }
            }, 
            "accessedfiles": {
                "2026177957": "/data/data/ad.notify1/files/settings", 
                ....
            }, 
            "fdaccess": {
                "0.9249100685119629": {
                    "path": "/data/data/ad.notify1/files/settings", 
                    "operation": "write", 
                    "data": "efbfbdefbfbd00057372001561642e6e6f746966792e53657474696e67735365742753efbfbd4d4cefbfbdefbfbdefbfbd0200035a000c6973466972737453746172744a000474696d654c0003736d737400124c6a6176612f6c616e672f537472696e673b7870010000000000000000", 
                    "id": "441631701", 
                    "type": "file write"
                }, 
                ....
            }, 
            "dataleaks": {}, 
            "opennet": {}, 
            "dexclass": {
                "0.0008711814880371094": {
                    "path": "/data/app/ad.notify1-1.apk", 
                    "type": "dexload"
                }
            }, 
            "hashes": [
                "5e0da2476bb8ab81281bb61edfc84e18", 
                "05966c6c24c48bc5a4fe56eb76283fef2224e0f5", 
                "fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e"
            ], 
            "closenet": {}, 
            "phonecalls": {}
        }, 
        "Strace": "/home/vmbear/Downloads/apk/Dynamic/Strace/5e0da2476bb8ab81281bb61edfc84e18.csv"
    }, 
    "VirusTotal": {
        "scan_id": "fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e-1589766721", 
        "sha1": "05966c6c24c48bc5a4fe56eb76283fef2224e0f5", 
        "resource": "fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e", 
        "response_code": 1, 
        "scan_date": "2020-05-18 01:52:01", 
        "permalink": "https://www.virustotal.com/gui/file/fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e/detection/f-fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e-1589766721", 
        "verbose_msg": "Scan finished, information embedded", 
        "sha256": "fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e", 
        "positives": 35, 
        "total": 62, 
        "md5": "5e0da2476bb8ab81281bb61edfc84e18", 
        "scans": {
            "Bkav": {
                "detected": false, 
                "version": "1.3.0.9899", 
                "result": null, 
                "update": "20200516"
            },
            ....
        }
    }
}

Trên thực tế, output của AndroPyTool với các mẫu malware này không có giá trị gì mấy. Vì các mẫu malware này hầu hết đã ngừng hoạt động từ rất lâu rồi.

Với mẫu SMSware ở trên chúng ta thu được 1 thông tin hữu ích. Đó là malware đã thực hiện gửi tin nhắn SMS tới đầu số 5537 mà không cần sự đồng ý hay xác nhận từ chúng ta:

"sendsms": {
    "2.6926231384277344": {
        "message": "8612315902026655873297.1", 
        "type": "sms", 
        "number": "5537"
    }
}

Virustotal

Trong file output của AndroPyTool có dữ liệu scan trên Virustotal, tuy nhiên thông tin không được đầy đủ. Để lấy được các thông tin đầy đủ hơn, chúng ta sẽ trực tiếp xem kết quả phân tích file apk trên Virustototal.

Trong output AndroPyTool cũng chứa đường link đến kết quả phân tích, vì thế chúng ta không cần phải phân tích lại.

"permalink": "https://www.virustotal.com/gui/file/fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e/detection/f-fa8cec0e8927c172c84e343797921bf63bf183896bdf913fe41a810263d89a6e-1589766721"

DETECTION

Tại tab DETECTION là kết quả scan bằng các công cụ scan virus khác nhau.

DETAIL

Tại tab DETAIL chúng ta có các thông tin chi tiết về malware.

Ở đây có một số thông tin quan trọng:

  • History: thời gian các ứng dụng tương tự được upload lên virustotal để kiểm tra
  • Names: những file apk khác tên nhưng thực tế là cùng một file với apk mà chúng ta upload
  • Android info: gồm nhiều thông tin đáng chú ý như Package Name, Main Activity, thông tin về certificate, Permissions,...

BEHAVIOR

Tại tab BEHAVIOR chúng ta có thể thấy các hành vi mà malware thực hiện.

Tổng kết phân tích tự động

Tóm tắt lại thì với những dữ liệu nhận được qua việc phân tích bằng các tool tự động, chúng ta có thể biết được các thông tin nhận dạng của mẫu malware.

Phân tích tĩnh

Reverse file apk bằng Bytecode Viewer rất dễ dàng do code không bị làm rối, và số lượng activity cũng ít. Mình nhanh chóng tìm được đoạn code gửi tin nhắn.

Rất tiếc là mình không lấy được danh sách các tổng tài tin nhắn trong code. Nhưng khi chạy app (tất nhiên là trong môi trường giả lập) thì app cũng hiển thị toàn bộ tổng đài.

Tìm kiếm trong thư mục resource mình thấy được icon của app. Sau khi kiểm tra và tìm kiếm, mình phát hiện ra mẫu malware này lấy icon của 1 ứng dụng khác, cụ thể là ứng dụng Messenger WithYou.

Phân tích động

Chạy app trong giả lập Genymotion mình phát hiện app bắt buộc chúng ta truy cập link http://android-market-mobile.com/download/index.php. Hiện tại link này đã chết, tuy nhiên khi tìm kiếm, có 1 topic trên diễn đàn của Nga thảo luận về đường link này.

Tóm tắt lại thì ý họ là: đường dẫn do malware truy cập mạo danh trang web gốc: http://androidmarket.com. Và trang web android-market-mobile sẽ lừa người dùng tải các ứng dụng bị mạo danh bởi các malware thuộc họ Fakenotify.

Một số mẫu malware khác cùng họ

Mình có phân tích thêm 4 mẫu malware khác cùng họ Fakenotify và có 1 số nhận xét như sau:

  • 5 mẫu phân tích đều có source code gần như y hệt nhau.
  • Tên ứng dụng sau khi cài đặt y hệt nhau: установка dịch ra tiếng anh nghĩa là "Installation".
  • Icon của mỗi mẫu malware đều lấy icon của 1 ứng dụng khác, mục đích để lừa người dùng.
  • Đều thực hiện 3 hành vi:
    • Bí mật gửi SMS đến tổng dài có cước phí cao.
    • Ép buộc truy cập link http://android-market-mobile.com/download/index.php.
    • Chạy ngầm 1 service có tác dụng hẹn giờ (không thấy hoạt động trong khi phân tích động).
  • Thumbprint của 5 mẫu:

All Rights Reserved