LIMB
Вход Регистрация

тема

Как я пытался реверснуть интересную апкшку.

adrenaline · · 5 ответов · 541 просмотров

Привет LIMB!
Решил что нельзя вот так с пустыми руками заходить на форум, поэтому держите статью про мои начинания в реверсе андройдных прилок.

Как все началось
Сидел я спокойно, листая ленту новостей в своем любимом мессенджере макс телеграм и тут я вижу сообщение
"Это очень шоковая ситуация!" и ссылка на какой-то канал.
Я по ней тапнул и угадайте что? Канал какого-то живодера, который с котятами явно не играл. От такого у меня появилось очень много мыслей, но тут мой глаз-алмаз зацепился за один пост:
Следующие три видео снизу, приму только 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/
Ну и дать все разрешения:
Code:
adb shell
su
cd /data/local/tmp
chmod 777 ''название вашей фриды''
./''название вашей фриды'' &
Тут закончили.
Для фриды на пк нам надо прописать:
Code:
frida-dexdump -U -f com.app.pkgname
Где com.app.pkgname - там ставим имя пакета нашей вирусни. Можно узнать через прилу Apktool M, у меня это вообще было hu2bws6.sv1wso.oq2ix9f3p8795

Установили фриду, установили вирусняк на эмулятор, а теперь и запускаем фриду! Она сама запустит приложение и сама соберет все библиотеки и прочие гадости приложения.
Не удалось прогрузить медиа


Вот так все выглядит. Просьба об обновлении - фейк, при нажатии загружает и устанавливает другую прилу, которая и начинает просить все на свете. А мы тем временем сдампили все 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
Я думаю что спецы найдут 100500 способов как раскурить апк без виртуалок, мам, пап и кредитов, но мне хотелось потыкать фриду и лайв снятие дампа из памяти, как в фильмах про крутых хацкеров, ну или как в райотделе :)
👍1
Полистал один чат в тг, довольно популярный, с названием отеля. Оказывается что есть целые тимы (!) по этим апк, налят все банки что установлены и тд и тп. В статье оказывается не самый последний вирусняк, челы походу из топовой тимы делали (в которой обещают 100 процентный крипт и отсутствие детекта), но почему-то мы смогли все раскрыть и посмотреть что куда идет. Как-то так)
👍5
ОтветHypeSeeker_404

не густо http://195.62.48.192:8080/#devices

Весь тупизм - никто ничего не защищает даже паролем. Я думаю если пройтись тем же nmapом, то можно больше радостей найти. Поищу еще апкшек такого вида и запилю разбор
👍1

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.