Hướng dẫn phân tích mã độc trên nền tảng Android
Phân tích mã độc trên Android OS
Có 2 phương thức phân tích mã độc Android:
- Phân tích động - Dynamic Analysic:
Công cụ:
Droidbox( https://code.google.com/p/droidbox/ ), androidAuditTools (tìm hiểu thêm tại https://intrepidusgroup.com/insight/2011/05/androidaudittools/)
Quá trình phân tích động nhằm giám sát và kiểm tra hành vi của ứng dụng (mã độc), như ứng dụng đó được thực thi trên hệ thống (thiết bị Android), bằng cách sử dụng Virtual Machine hoặc Sandbox. Quá trình phân tích bao gồm việc thực thi ứng dụng độc hại và theo dõi system log. Net work log.
- Phân tích tĩnh - Static Analysic:
Công cụ: IDA 6 Pro, APK Inspector, Dex2Jar, Dexdump, ApkTool
Phân tích tĩnh bằng cách decompile một ứng dụng Android thành smali (sẽ được nhắc tới sau ) hoặc java code để tiến hành theo dõi sự hoạt động của ứng dụng cũng như những tương tác của nó tới hệ thống.
Đối với các thư viện lib.so của ứng dụng Android Apps (Android NDK Applications), ta có thể tiến hành phân tích tĩnh với IDA Pro.
Trong bài viết này chúng ta tập trung vào việc sử dụng các static analysis tools, để phân tích mã độc Android.
Phân tích bằng phương pháp tĩnh
Ứng dụng Android thường được viết bằng Java và thực thi trên Virtual Machine, byte code chạy trên Dalvik Virtual Machine (DVM) được chuyển đổi từ JVM byte code truyền thống sang dex-format (.dex file) bởi convertion tool dx (lưu trữ tại android-sdk/platforms/android-X/tools/lib/ với các phiên bản trước đây, ở phiên bản Android SDK mới nhất được lưu tại android-sdk/platform-tools/lib/)
Mã code thực thi trên DVM được gọi là mã Smali, có tập lệnh phức tạp giống như Assembly trên Windows.( Tham khảo Dalvik opcodes table: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html )
Để thực hiện phân tích tĩnh ta phải decompile ứng dụng thành mã code có thể đọc được: thành mã JVM bytecode hoặc Smali code.
Trước tiên, chúng ta cùng nhau phân tích ứng dụng dưới dạng JVM byte code vì sử dụng nó đơn giản hơn nhiều so với việc phân tích với Smali (Sẽ trình bày trong các bài viết sau).
JVM byte code rất giống với ngôn ngữ Java thông thường, các file byte-code kết thúc với .class còn các file Java kết thúc với .java.
Để phân tích dưới dạng JVM byte-code ta có thể kết hợp sử dụng Dex2jar và JD-GUI:
Dex2jar: Một công cụ được xây dựng để đọc Dalvik Executable (.dex/.odex) format
convert từ .dex → JVM byte code (.jar file)
(Tìm hiểu thêm và download tại https://code.google.com/p/dex2jar/ )
JD-GUI: Công cụ có giao diện được xây dựng để đọc các file JVM byte code (.class), dựa vào nó người dùng có thể hiểu được cách thức hoạt động của các phương thức và biến trong chương trình.
(Tìm hiểu thêm và download tại http://jd.benow.ca )
Phân tích chi tiết 1 mẫu Android Malware
Công cụ sử dụng: Dex2jar và JD-GUI.
Thông tin mẫu:
SHA256: 550b3c6b8766fca70d3a8f7d5e00cf50527a3df208e6e2812e7eab8f1bd55ec2
File name: 550b3c6b8766fca70d3a8f7d5e00cf50527a3df208e6e2812e7eab8f1bd55ec2.apk
Tiến hành hân tích:
Sử dụng Dex2jar
Kết quả sau khi convert sẽ được lưu tại thư mục người dùng hiện tại của máy tính với tên classes-dex2jar.
Phân tích ứng dụng với JD-GUI (Java decompiler)
Tải JD-GUI tại: http://jd.benow.ca/
Run file jd-gui và mở classes-dex2jar.
Lời gọi hàm sendSMS trong file com.dloader.Main.class
Lần ngược theo dấu vết gọi hàm sendSMS ta tìm được trình tự gọi hàm như sau:
onCreate → loadConfig() → initData() → showDialogConfirm → handleAction → handleActionASMS → sendSMS.
KẾT LUẬN: Ứng dụng gửi tin nhắn tới đầu số tính phí.
Trên đây là bài phân tích Android Malware cơ bản của mình theo phương pháp phân tích tĩnh bằng cách đọc JVM byte-code.
Trong các bài viết sau mình sẽ viết về phân tích tĩnh – đọc Smali , phân tích các mẫu Android sử dụng Proguard khi đóng gói (Tìm hiểu thêm tại Code protection: http://proguard.sourceforge.net/ ) hoặc phân tích động Android Malware.
Bài phân tích có thể còn nhiều thiếu sót, rất mong nhận được sự góp ý của các bạn !.
Địa chỉ tải mẫu phân tích: http://www.mediafire.com/download/k...0cf50527a3df208e6e2812e7eab8f1bd55ec2.apk.zip
pass giải nén: whitehat.vn
Có 2 phương thức phân tích mã độc Android:
- Phân tích động - Dynamic Analysic:
Công cụ:
Droidbox( https://code.google.com/p/droidbox/ ), androidAuditTools (tìm hiểu thêm tại https://intrepidusgroup.com/insight/2011/05/androidaudittools/)
Quá trình phân tích động nhằm giám sát và kiểm tra hành vi của ứng dụng (mã độc), như ứng dụng đó được thực thi trên hệ thống (thiết bị Android), bằng cách sử dụng Virtual Machine hoặc Sandbox. Quá trình phân tích bao gồm việc thực thi ứng dụng độc hại và theo dõi system log. Net work log.
- Phân tích tĩnh - Static Analysic:
Công cụ: IDA 6 Pro, APK Inspector, Dex2Jar, Dexdump, ApkTool
Phân tích tĩnh bằng cách decompile một ứng dụng Android thành smali (sẽ được nhắc tới sau ) hoặc java code để tiến hành theo dõi sự hoạt động của ứng dụng cũng như những tương tác của nó tới hệ thống.
Đối với các thư viện lib.so của ứng dụng Android Apps (Android NDK Applications), ta có thể tiến hành phân tích tĩnh với IDA Pro.
Trong bài viết này chúng ta tập trung vào việc sử dụng các static analysis tools, để phân tích mã độc Android.
Phân tích bằng phương pháp tĩnh
Ứng dụng Android thường được viết bằng Java và thực thi trên Virtual Machine, byte code chạy trên Dalvik Virtual Machine (DVM) được chuyển đổi từ JVM byte code truyền thống sang dex-format (.dex file) bởi convertion tool dx (lưu trữ tại android-sdk/platforms/android-X/tools/lib/ với các phiên bản trước đây, ở phiên bản Android SDK mới nhất được lưu tại android-sdk/platform-tools/lib/)
Mã code thực thi trên DVM được gọi là mã Smali, có tập lệnh phức tạp giống như Assembly trên Windows.( Tham khảo Dalvik opcodes table: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html )
Để thực hiện phân tích tĩnh ta phải decompile ứng dụng thành mã code có thể đọc được: thành mã JVM bytecode hoặc Smali code.
Trước tiên, chúng ta cùng nhau phân tích ứng dụng dưới dạng JVM byte code vì sử dụng nó đơn giản hơn nhiều so với việc phân tích với Smali (Sẽ trình bày trong các bài viết sau).
JVM byte code rất giống với ngôn ngữ Java thông thường, các file byte-code kết thúc với .class còn các file Java kết thúc với .java.
Để phân tích dưới dạng JVM byte-code ta có thể kết hợp sử dụng Dex2jar và JD-GUI:
Dex2jar: Một công cụ được xây dựng để đọc Dalvik Executable (.dex/.odex) format
convert từ .dex → JVM byte code (.jar file)
(Tìm hiểu thêm và download tại https://code.google.com/p/dex2jar/ )
JD-GUI: Công cụ có giao diện được xây dựng để đọc các file JVM byte code (.class), dựa vào nó người dùng có thể hiểu được cách thức hoạt động của các phương thức và biến trong chương trình.
(Tìm hiểu thêm và download tại http://jd.benow.ca )
Phân tích chi tiết 1 mẫu Android Malware
Công cụ sử dụng: Dex2jar và JD-GUI.
Thông tin mẫu:
SHA256: 550b3c6b8766fca70d3a8f7d5e00cf50527a3df208e6e2812e7eab8f1bd55ec2
File name: 550b3c6b8766fca70d3a8f7d5e00cf50527a3df208e6e2812e7eab8f1bd55ec2.apk
Tiến hành hân tích:
Sử dụng Dex2jar
- Tải công cụ từ địa chỉ: https://code.google.com/p/dex2jar/downloads/list
- Giải nén gói công cụ tải vể.
- Commands convert file classes.dex trong thư mục giải nén với dex2jar tool , chuyển đổi dex-format thành file .jar chứa các java byte code .class
Kết quả sau khi convert sẽ được lưu tại thư mục người dùng hiện tại của máy tính với tên classes-dex2jar.
Phân tích ứng dụng với JD-GUI (Java decompiler)
Tải JD-GUI tại: http://jd.benow.ca/
Run file jd-gui và mở classes-dex2jar.
- Quá trình phân tích tĩnh thường hướng theo các từ khóa gắn với tên của các hàm API có khả năng tác động xấu tới người dùng như: “Send”, “Get”
- Phân tích dựa theo các Receiver và Service: Tiến hành phân tích các hành vi thực hiện bên trong hàm onReceive hoặc onStartCommand đề lần theo các lời gọi hàm và tìm ra hành vi độc hại.
- Với từ khóa “send” ta tìm được:
Lời gọi hàm sendSMS trong file com.dloader.Main.class
Lần ngược theo dấu vết gọi hàm sendSMS ta tìm được trình tự gọi hàm như sau:
onCreate → loadConfig() → initData() → showDialogConfirm → handleAction → handleActionASMS → sendSMS.
KẾT LUẬN: Ứng dụng gửi tin nhắn tới đầu số tính phí.
Trên đây là bài phân tích Android Malware cơ bản của mình theo phương pháp phân tích tĩnh bằng cách đọc JVM byte-code.
Trong các bài viết sau mình sẽ viết về phân tích tĩnh – đọc Smali , phân tích các mẫu Android sử dụng Proguard khi đóng gói (Tìm hiểu thêm tại Code protection: http://proguard.sourceforge.net/ ) hoặc phân tích động Android Malware.
Bài phân tích có thể còn nhiều thiếu sót, rất mong nhận được sự góp ý của các bạn !.
Địa chỉ tải mẫu phân tích: http://www.mediafire.com/download/k...0cf50527a3df208e6e2812e7eab8f1bd55ec2.apk.zip
pass giải nén: whitehat.vn
Chỉnh sửa lần cuối bởi người điều hành: