Hướng dẫn phân tích mã độc trên nền tảng Android

Malware

Wh------
08/01/2015
41
56 bài viết
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 Dex2jarJD-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

Android Packages được đóng gói với thuật toán ZIP nên ta có thể giải nén file APK như giải nén file ZIP thông thường (sử dụng 7zip hoặc với Winrar thì cần đổi tên file .apk thành .zip)

  • 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
Chạy cmd (Windows + R và gõ cmd -> Enter):

14908931961.png


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.


14908931962.png



  • 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”
Hoặc “License” và “Donate” … đối với dòng mã độc tống tiền.

  • Phân tích dựa theo các ReceiverService: 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.
Chọn Search trên toolbar hoặc Ctrl + Shift+ S và nhập từ khóa cần tìm.


14908931963.png





  • Với từ khóa “send” ta tìm được:


Lời gọi hàm sendSMS trong file
com.dloader.Main.class

14908931964.png


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:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Re: Hướng dẫn phân tích mã độc trên nền tảng Android

Bị die mất 2 cái ảnh rồi thớt ơi
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Hướng dẫn phân tích mã độc trên nền tảng Android

e gà lắm;22959 đã viết:
Bị die mất 2 cái ảnh rồi thớt ơi
Mình vẫn thấy có ảnh mà.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Hướng dẫn phân tích mã độc trên nền tảng Android

e gà lắm;22959 đã viết:
Bị die mất 2 cái ảnh rồi thớt ơi

Bạn xem bằng Firefox nhé, Chrome không xem được 2 ảnh đấy.
1490893196hehe.gif
1490893196hehe.gif
1490893196hehe.gif
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Hướng dẫn phân tích mã độc trên nền tảng Android

e gà lắm;22959 đã viết:
Bị die mất 2 cái ảnh rồi thớt ơi

whf;23055 đã viết:
Bạn xem bằng Firefox nhé, Chrome không xem được 2 ảnh đấy.
1490893196hehe.gif
1490893196hehe.gif
1490893196hehe.gif
Bạn xem được bài này có mấy ảnh, mình dùng Chrome xem được 4 ảnh. Chưa thấy thiếu ảnh nào.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Hướng dẫn phân tích mã độc trên nền tảng Android

sunny;23134 đã viết:
Bạn xem được bài này có mấy ảnh, mình dùng Chrome xem được 4 ảnh. Chưa thấy thiếu ảnh nào.

Trong bài có 4 ảnh. 2 ảnh dùng imgur.com hiển thị bình thường, 2 ảnh dùng uphinhnhanh.com không hiển thị được trên Chrome. Trên Firefox hiển thị đầy đủ cả 4 ảnh. Không chỉ bài viết này mà các bài viết khác dùng uphinhnhanh.com đều gặp vấn đề tương tự.
Báo cáo hết ạ!
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Hướng dẫn phân tích mã độc trên nền tảng Android

whf;23180 đã viết:
Trong bài có 4 ảnh. 2 ảnh dùng imgur.com hiển thị bình thường, 2 ảnh dùng uphinhnhanh.com không hiển thị được trên Chrome. Trên Firefox hiển thị đầy đủ cả 4 ảnh. Không chỉ bài viết này mà các bài viết khác dùng uphinhnhanh.com đều gặp vấn đề tương tự.
Báo cáo hết ạ!
Vấn đề hiển thị ảnh mình đã đưa về WhiteHat để khắc phục lỗi.

Cảm ơn các bạn và mong được "soi" nhiều hơn nữa. ;)
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
bai viet hay qua. cam on tac gia
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bác ơi giải thích thêm cho em đoạn này được ko ạ
Em chưa hiểu rõ lắm tại sao lại vậy, cảm ơn bác chủ thread

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.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên