Привет LIMB!
Решил что нельзя вот так с пустыми руками заходить на форум, поэтому держите статью про мои начинания в реверсе андройдных прилок.
Как все началось
Сидел я спокойно, листая ленту новостей в своем любимом мессенджеремакс телеграм и тут я вижу сообщение
"Это очень шоковая ситуация!" и ссылка на какой-то канал.
Я по ней тапнул и угадайте что? Канал какого-то живодера, который с котятами явно не играл. От такого у меня появилось очень много мыслей, но тут мой глаз-алмаз зацепился за один пост:
Следующие три видео снизу, приму только 10 человек
APK файл с подписью "Видео(3шт.)"
скрина к сожалению не осталось
Вот такая небольшая статья получилась! Для первого раза думаю неплохо, зеленым ребятам сойдет. Всем спасибо что прочли! Удачи!
Решил что нельзя вот так с пустыми руками заходить на форум, поэтому держите статью про мои начинания в реверсе андройдных прилок.
Как все началось
Сидел я спокойно, листая ленту новостей в своем любимом мессенджере
"Это очень шоковая ситуация!" и ссылка на какой-то канал.
Я по ней тапнул и угадайте что? Канал какого-то живодера, который с котятами явно не играл. От такого у меня появилось очень много мыслей, но тут мой глаз-алмаз зацепился за один пост:
Следующие три видео снизу, приму только 10 человек
APK файл с подписью "Видео(3шт.)"
скрина к сожалению не осталось
Спойлер: В чем суть сия приложения?
При установке оно попросит разрешение на все возможное, нотариальную доверенность, ключи от квартиры, ну и дать возможность отправлять ему смски. После выдачи всех разрешений - приложение сканит все ваши банки, выводит все номера и тд и тп, стиллер уровня бог
Спойлер: Тайм ту реверс!
Для начала я выкачал этот прекрасный апк файл и закинул на свой ноут. (Для всех желающих прикреплю его к этому посту. НЕ УСТАНАВЛИВАТЬ! Только крутить-вертеть и ломать его). Дальше мне нужно было его декомпильнуть, а т.е вытащить все его ресурсы наружу. Думаете все так просто! Нет!
Любой мамкин хацкер знает что всегда апк надо менять в зип - самый простой способ получения доступа к внутрянке. Но тут это не прокатило, поэтому я вооружился Android Studio, виртуальным андройдом без Google сервисов и штукой под названием Frida. Frida - утилита для декомпиляции, дампа приложений из оперативной памяти, куда оно все и грузится. Зачем? Там как минимум нет никаких шифров и все ресурсы приложения лежат там as is, что в разы упрощает нам раскопки. Начнем с самой виртуалки:
Гуглосервисов - нет (без них получить рут права будет сложнее, а нам это зачем?)
По железу - ставьте сами, главное чтобы не лагало ;)
Запускаемся!
На скрине я сделал:
adb root - перевел эмулятор в рут режим (получил рут права)
adb install .... - установил приложение
А теперь самое главное! Frida!
Для установки достаточно прописать pip3 install frida-dexdump и все!
Для установки сервера в эмулятор надо:
Скачать сервер: https://github.com/frida/frida/releases с именем frida-server-....-android-arm64
запушить в сам эмуль: adb push "ваша фрида сервер" /data/local/tmp/
Ну и дать все разрешения:
Тут закончили.
Для фриды на пк нам надо прописать:
Где com.app.pkgname - там ставим имя пакета нашей вирусни. Можно узнать через прилу Apktool M, у меня это вообще было hu2bws6.sv1wso.oq2ix9f3p8795
Установили фриду, установили вирусняк на эмулятор, а теперь и запускаем фриду! Она сама запустит приложение и сама соберет все библиотеки и прочие гадости приложения.
Вот так все выглядит. Просьба об обновлении - фейк, при нажатии загружает и устанавливает другую прилу, которая и начинает просить все на свете. А мы тем временем сдампили все classes.dex приложения и готовы их ковырять! Для ковыряния я использовал jadx-gui
Но смотря на это наоборот хочется все удалить, выключить комп и забыть про это все как страшный сон. Но! Я же здесь чтобы вам помочь, поэтому нам достаточно инжекнуть прекрасный гпт код в процесс приложения, который покажет нам что и куда приложение шлет (В Java я не очень шарю)
Для инжекта используем frida -U -l 'название скрипта'.js -f 'имя пакета'
И что мы получаем? А получаем вот такую радость!
Полностью голый айпишник сервера, на который идут все логиии!!) Это же красота?!) Зайдя по айпи мы увидим панельку
С функциями апи и кнопкой посмотреть статистику, которая не работает, а метод /api/stats возращает пустую статистику. Порт SSH кстати там открыт ;)
Таким образом мы с вами реверснули вирусняк от скамеров-живодеров и узнали что даже самый крутой обфускатор кода может упасть на колени перед дампом ресурсов из ОЗУ.
Делайте с этим серваком что хотите, телеграм каналы я жалобами завалил и их благополучно снесли.
Не удалось прогрузить медиа
Любой мамкин хацкер знает что всегда апк надо менять в зип - самый простой способ получения доступа к внутрянке. Но тут это не прокатило, поэтому я вооружился Android Studio, виртуальным андройдом без Google сервисов и штукой под названием Frida. Frida - утилита для декомпиляции, дампа приложений из оперативной памяти, куда оно все и грузится. Зачем? Там как минимум нет никаких шифров и все ресурсы приложения лежат там as is, что в разы упрощает нам раскопки. Начнем с самой виртуалки:
Не удалось прогрузить медиа
Гуглосервисов - нет (без них получить рут права будет сложнее, а нам это зачем?)
По железу - ставьте сами, главное чтобы не лагало ;)
Запускаемся!
Не удалось прогрузить медиа
На скрине я сделал:
adb root - перевел эмулятор в рут режим (получил рут права)
adb install .... - установил приложение
А теперь самое главное! Frida!
Для установки достаточно прописать pip3 install frida-dexdump и все!
Для установки сервера в эмулятор надо:
Скачать сервер: https://github.com/frida/frida/releases с именем frida-server-....-android-arm64
запушить в сам эмуль: adb push "ваша фрида сервер" /data/local/tmp/
Ну и дать все разрешения:
Code:
adb shell
su
cd /data/local/tmp
chmod 777 ''название вашей фриды''
./''название вашей фриды'' &
Для фриды на пк нам надо прописать:
Code:
frida-dexdump -U -f com.app.pkgname
Установили фриду, установили вирусняк на эмулятор, а теперь и запускаем фриду! Она сама запустит приложение и сама соберет все библиотеки и прочие гадости приложения.
Не удалось прогрузить медиа
Вот так все выглядит. Просьба об обновлении - фейк, при нажатии загружает и устанавливает другую прилу, которая и начинает просить все на свете. А мы тем временем сдампили все classes.dex приложения и готовы их ковырять! Для ковыряния я использовал jadx-gui
Не удалось прогрузить медиа
Но смотря на это наоборот хочется все удалить, выключить комп и забыть про это все как страшный сон. Но! Я же здесь чтобы вам помочь, поэтому нам достаточно инжекнуть прекрасный гпт код в процесс приложения, который покажет нам что и куда приложение шлет (В Java я не очень шарю)
Java:
Java.perform(function () {
console.log("Frida URL Tracer: Готов к перехвату сетевых вызовов...");
// 1. Перехват стандартного Java URL
var URL = Java.use('java.net.URL');
URL.$init.overload('java.lang.String').implementation = function (url) {
console.log("\n[!!!] Обнаружен URL (java.net.URL): " + url);
// Вызов оригинального конструктора
this.$init(url);
};
// 2. Перехват OkHttpClient (очень популярный в современных Android-приложениях)
try {
var OkHttpClient = Java.use('okhttp3.OkHttpClient');
console.log("[i] OkHttp3 найден.");
// Хук метода newCall в OkHttpClient. Обычно OkHttp создает Request,
// а метод newCall его отправляет.
OkHttpClient.newCall.implementation = function (request) {
var url = request.url().toString();
console.log("\n[!!!] Обнаружен URL (OkHttp3 Request): " + url);
// Возвращаем оригинальный вызов
return this.newCall(request);
};
} catch (e) {
// Если OkHttp не используется, этот блок просто пропускается
console.log("[i] OkHttp3 не найден или не используется.");
}
// 3. Перехват Sockets (для низкоуровневых соединений)
var Socket = Java.use('java.net.Socket');
Socket.$init.overload('java.lang.String', 'int').implementation = function (host, port) {
console.log("\n[!!!] Обнаружено Соединение (java.net.Socket): Хост: " + host + ", Порт: " + port);
// Вызов оригинального конструктора
this.$init(host, port);
};
});
Для инжекта используем frida -U -l 'название скрипта'.js -f 'имя пакета'
И что мы получаем? А получаем вот такую радость!
Не удалось прогрузить медиа
Полностью голый айпишник сервера, на который идут все логиии!!) Это же красота?!) Зайдя по айпи мы увидим панельку
Не удалось прогрузить медиа
С функциями апи и кнопкой посмотреть статистику, которая не работает, а метод /api/stats возращает пустую статистику. Порт SSH кстати там открыт ;)
Таким образом мы с вами реверснули вирусняк от скамеров-живодеров и узнали что даже самый крутой обфускатор кода может упасть на колени перед дампом ресурсов из ОЗУ.
Делайте с этим серваком что хотите, телеграм каналы я жалобами завалил и их благополучно снесли.
Спойлер: Сушки после чая
Ответы на вопросы (я знаю, они будут): - Почему не гидра, ida pro, etc? - Они не умеют в апк, ну или слабо или вообще не знают о таком. Гидре я слабо верю (не забывайте, качество редко идет с количеством, а количество архитектур в гидре просто афигеть) - Почему не поковырял jadx??? - Мне было лень, количество букв напугало, да и просто среди кучи функций без внятного названия можно потеряться, да я не фанат копать кучу гадости ради другой гадости. Метод с лайв дампом фридой - красивый, быстрый и удобный - А если у меня не получится? - В любое время дня и ночи можно писать мне, я помогу чем смогу.
Вот такая небольшая статья получилась! Для первого раза думаю неплохо, зеленым ребятам сойдет. Всем спасибо что прочли! Удачи!
👍41
🔥4
😁12
😢4
💯9
LIMB