WhatsApp Sniffer: описание программы и как защитить себя. Easy Hack: Как найти потенциальные уязвимости и захардкоженные данные Android-приложения Free hack как пользоваться программой

Creehack – программа для имитации покупки самых разных игровых ресурсов, приобрести которые в стандартном формате можно только за настоящую валюту. Если сравнивать с проектом под названием Freedom, который также создан для обхода процесса реальной оплаты, для применения программы Крихак не нужно иметь права суперпользователя на своем смартфоне. Отрицательная сторона этого приложения – не очень большое число игр, с которыми программа может работать, хоть этот список регулярно пополняется. На просторах интернета имеются игры, взлом которых этим продуктом просто невозможен, также это может происходить из-за отсутствия на смартфоне рут-доступа, который очень важен для использования всего функционала такого рода софта. Перед тем, как загрузить и установить Крихак, заранее изучите список поддерживаемых игр, или же просто испытайте удачу. Приложение не несет в своем интерфейсе ненужных настроек и кнопок для управления, здесь имеется всего одна клавиша – Включить. А чтобы быстро разобраться, как именно пользоваться приложением, здесь также имеются подробные фотографии разбора процесса взлома, но и без них все будет очень понятно.

Creehack как пользоваться:
Перед тем, как начать работу с Creehack, следует открыть настройки системы, и в ручном режиме остановить работу всех сервисов Google – это значительно увеличит шанс удачной покупки игровых ресурсов и полезных предметов. Creehack будет выполнять свою работу в свернутом режиме. Теперь можно будет зайти в саму игру, которая будет установлена на смартфоне, и сделать самые нужные покупки.
Может случиться такая ситуация, когда нужная для вашего взлома игра имеется в списке взлома, но даже выключенный Плей Маркет и отключенные на смартфоне сервисы Google при работающем Creehack не дают возможности совершить нужное приобретение.

В этом случаем сделайте следующее шаги:

  1. Отключите на своем смартфоне Wi-Fi или же мобильный интернет;
  2. Зайдите в настройки смартфона, Приложения, "Google Play Market" и "Сервисы Google Play" приостановите их работу (для этого следует кликнуть на приложение, и в показанном меню кликнуть на кнопку "Остановить процесс")
  3. Включите приложение CreeHack, после этого перейдите на главный экран (в версии программы v1.2 для работы потребуется нажать на клавишу "On", а в v1.1 - активация осуществляется при первичном включении)
  4. Заходим в выбранную игру и совершаем покупку товара в игровом магазине, если в момент совершения покупки на экране покажется специальное окно с названием Creehack – взлом прошел успешно.
Программа специально разрабатывалась для системы Андроид, чтобы избавить своих пользователей от платы за упрощение геймплея, повышая при этом удовольствие от абсолютно бесплатной игры. Конечно, имеется вероятность того, что программа не включится на вашем устройстве, и не сможет взломать нужную вам игру. Но вероятность этого крайне мала, так что, чтобы узнать все возможности взломщика на практике, загрузите и установите данный софт на свой смартфон.

Иногда возникает необходимость узнать, какие баги были найдены в каком-нибудь топовом приложении для Android. Причин для этого может быть масса: от попыток раскрутить вектор дальше и поиска схожих уязвимостей до банальных проверок на хардкод. Попробуем провернуть, а поможет нам в этом связка HackApp + Vulners.

HackApp - это условно-бесплатный тулкит и сервис для поиска багов в мобильных приложениях. HackApp ведут свою базу найденных уязвимостей, где подробно описывают векторы атак и уязвимые версии. Vulners - это бесплатный и открытый движок для поиска уязвимостей в различных продуктах. Кроме самих багов, Vulners находит и показывает связанные с уязвимостью сплоиты, патчи и даже новости из открытых источников.

С помощью Vulners и HackApp можно искать по уязвимостям более чем 22 025 топовых Android-приложений из Google Play! Store. Для поиска нужно указать тип type:hackapp . В результатах поиска отображается тайтл, количество уязвимостей по степени критичности (красный кружок - критичные, желтый кружок - средняя критичность, серый кружок - примечание), информация о приложении (иконка, текущая версия, разработчик и дата релиза).

Ссылка на бюллетень уязвимостей приложения имеет вид https://vulners.com/hackapp/HACKAPP:RU.SBERBANK_SBBOL.APK . В бюллетене перечисляются все уязвимости с кратким описанием и указывается, какие версии приложения считаются уязвимыми. Полное описание уязвимостей доступно по ссылке на сайте HackApp.


Но настоящей киллер-фичей является возможность найти приложения, чьи нерадивые разработчики захардкодили внутри учетные записи от Amazon AWS. Простейший запрос https://vulners.com/search?query=type:hackapp%20AWS%20credentials выдаст целую кучу таких «перлов».


Отлично, у нас есть AWS_KEY . Теперь нужен еще AWS_SECRET_KEY . Давай не будем останавливаться и заглянем в «домик» разработчиков? 🙂


Уязвимый APK можно удобно скачать прямо с сайта HackApp. Дальше раскрываем всем известным способом:

Java -jar apktool_2.1.1.jar d.apk

Запускаем grep и... вуаля! Кажется, мы что-то и правда нашли:

MacBook-Pro:pwner$ grep -R "AKIAI5AWXTYSXJGU55QA" ./ .//smali/com/adobe/air/AdobeAIR.smali:.field private static final TEST_ACCESS_KEY:Ljava/lang/String; = "AKIAI5AWXTYSXJGU55QA" .//smali/com/adobe/air/AdobeAIR.smali: const-string v1, "AKIAI5AWXTYSXJGU55QA"

Что тут скажешь: pwned in less than 1 minute!

Комбинируя эти два инструмента и простой полнотекстовый поиск, можно вытащить еще много постыдных секретов мобильных приложений:).

Удачи и успешных познаний!

Disclaimer: всё ниженаписанное написано исключительно с просветительскими и исследовательскими целями, а также понимания механизмов защиты от взлома. Автор ни в коем случае не рекомендует использовать данную информацию для взлома программ.

В данной статье я хочу рассказать про три с половиной основных способа взлома программ на.NET, цель, которую я преследую - помочь разработчикам лучше понять механизмы защиты своих программ, т.е. выяснить наиболее очевидные угрозы и предпринять соответствующие меры (или не принимать).

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным декомпилятор программ под.NET

В качестве подопытного кролика я выбрал - анализатор регулярных выражений. Данная программа бесплатная, в лицензии вроде бы ничего не указано про взлом, но при этом без регистрации она будет работать всего 60 дней. Другими словами, вред от взлома данной программы минимальный, к тому же внутреннее её устройство очень уж хорошо подходит для тренировки. Буду надеяться, что автор данной программы не обидится на меня.

Это что-то типа ассемблера, только весьма умного и обладающего весьма мощными инструкциями. И это, в принципе, такой же равноправный язык как и C#, только синтаксис похуже (а возможности больше). Кроме того, в программе на.NET активно используются метаданные, т.е. вся информация о классах, метода, пропертях, атрибутах и всём остальном сохранена в исполняемом файле.
Т.е. на самом деле, декомпиляция программы не очень верное понятие в данном случае. Она и так вся в открытом виде лежит, а инструменты в виде Reflector"а занимаются тем, что приводят конструкции MSIL к соответствующим конструкциям C# или другого языка, повышая читабельность кода.

Перейдём, собственно, к взлому.

0. Обнуление триала

Собственно, это даже не взлом, а полулегальный способ продлить срок использования неактивированной программы. Заключается он в том, что находится место, где хранится дата первого запуска и меняется/уничтожается. После этого всё можно пользоваться программой до следующего срока.

Посмотрим на нашего подопытного рефлектором:
Немного погуляв по коду, находим интересную строчку в конструкторе MainForm

Открываем редактор реестра, идём в HKEY_CURRENT_USER\Software\Ultrapico\Expresso и видим следующие ключи:

Удаляем их и получаем ещё 60 дней работы.

Данный вариант, конечно, прост и очевиден, но если он даже был бы сложнее - потребовалось бы чуть больше времени провести в рефлекторе, чтобы выяснить все места, куда пишется информация и зачистить их.

Совет разработчикам, которые будут пытаться записать данные в потаённое место: пишите аккуратнее, а то всё может обернуться проблемами обычным пользователям, у которых почему-то не окажется данного места, или не хватит на него прав.

1. Написание keygen"а

Самый ужасный для разработчика вариант, и самый приятный для конечного злобного пользователя. Программа считает себя лицензионной, никаких страшных телодвижений не нужно делать.

Открываем рефлектор и ищем код на предмет классов содержащих License или Registration, видим:

При вводе имени и кода по имени вычисляется некий хеш, который и сравнивается с кодом.

Данный хеш использует DES и всякие префиксы

Байты конвертятся в строку с помощью данного метода.

Теперь всё выяснилось, открываем IDE и копируем все необходимые куски кода (или сами реализовываем). Осталось только выяснить, какие значения у Prefix, Suffix и параметры реализации MyDES. Я их приводить не буду, это уже технические детали.

В результате генерируем ключ на любое имя и видим:

Бинго!

Защита от кейгенов проста и очевида: использовать в каком либо виде ассиметричное шифрование. Т.е. сделать так, чтобы без знания приватного ключа сгенерировать код было бы невозможно, а данный ключ находится только в одном месте - у автора программы.

2. Использование враппера

Проверка корректности лицензии, достаточно хлопотное дело, и небыстрое. Поэтому разработчики программ обычно проверяют лицензию один раз, и дальше используют полученный флажок - валидна/невалидна (как вариант насколько валидна, если допускается несколько типов лицензии, отличающихся возможностями). Тут можно на этом сыграть, использовав следующий алгоритм:

  1. Указать программе, что лицензия уже проверена
  2. Указать программе, что лицензия корректна
Как это сделать? Я уже упоминал о наличии метаданных в исполняемых файлах в начале, этим и воспользуемся. Посмотрим как запускается программа и как проверяется лицензия:

С запуском ничего интересного, а в проверке видно, что если уже программа зарегистрирована, то она считает, что всё хорошо и не делает дальнейшую работы по выяснению корректности лицензии.

Воспользуемся этим:
Сделаем новый проект, добавим Reference на Expresso.exe и запустим его через себя:

Смотрим, что получилось:

Ну кто бы сомневался.

В данном случае всё оказалось просто, но если бы автор программы заменил публичные свойства на приватные, то всего-лишь пришлось бы использовать Reflection для доступа и всё бы свелось к исходной задаче.

Думаю понятно, как можно пробовать защититься от этого - проверять лицензию периодически, смотреть окружение из которого запущена программа, сделать невозможным установку нужной переменной.

Но все эти защиты приведут к тому, что злоумышленник будет использовать

3. Физический взлом программы

Тут уже всё серьёзно. Программа целиком декомилируется в MSIL а из него уже собирается обратно (помните, я писал, что MSIL это такой же язык как и C#?). Для декомпиляции нам понадобится утилита из SDK под названиемildasm , а для компиляции компилятор из.NET Framework ilasm .

Запускаем ildasm, открываем Expresso.exe и сохраняем дамп в.il файл. Находим уже рассмотренный метод IsRegistered и добавляем немножко своего кода (без меток):

Потом берём ilasm и собираем всё назад (не забыв подключить ресурсы).

Что делает данный код: устанавливает нужное имя для регистрации (не обязательно), и возвращает статус, что всё хорошо.
Чтобы было понятнее, так это выглядит в рефлекторе, в C#

Т.е. вполне очевидно, что теперь всё будет хорошо:

Немного про код в MSIL: это стековая машина, у которой нет регистров, все операции имеют вид: засунуть в стек нужное количество параметров, выполнить функцию, которая заберёт нужное количество параметров и положит результат. Ну и обратно: установить значение переменной тем, что лежит в стеке. Чтобы лучше понять работу всего этого рекомендую простой приём: пишите маленькую программу на привычном языке, компилируете, смотрите что получилось в MSILe и разбираетесь в конструкциях языка.
При этом некоторые вещи в MSIL можно сделать очень красиво, например поменять две переменные местами - 4 симпатичных строчки (на C# меньше, но некрасиво).

Чем жертвует злоумышленник: подписью программы, теперь она уже не автора, а его. В некоторых случаях это проблема, если в программе используется множество библиотек. Тогда злобному хакеру придётся разбирать их все и собирать их заново, но если он с этим справится, то у него будет «своя» версия программы подписанная его ключом.

Защиты от всего этого безобразия собственно немного: проводить обфускацию или выносить часть логики/проверки защиты в нативный код.

Заключение

Думаю я рассказал, как просто всё можно разломать на.NET, если создатель не приложил усилий для защиты своей программы. А вы уж решайте, стоит ли делать защиту и тратить на это время и ресурсы. А может просто сделать web-систему, или же бесплатную ограниченную версию. Решать разработчикам.