Статья о том, как разработать свою программу для взлома паролей. Объяснение, что такое взлом пароля, как работает софт для таких целей, какие инструменты необходимы и как их использовать, чтобы создать свое собственное приложение.
Взлом пароля – это достаточно сложный и ответственный процесс, который необходимо в основном для тестирования безопасности систем или восстановления забытых паролей. Если вы заинтересовались, как создать свою собственную программу для взлома пароля, то эта статья поможет вам в этом.
Прежде всего, необходимо понимать, что программа для взлома пароля должна содержать в себе несколько ключевых модулей: модуль для сканирования, модуль для обнаружения уязвимостей, модуль для атаки и, конечно же, модуль для получения пароля.
Для создания такой программы вам необходимо обладать знаниями и опытом в програмировании на языках, таких как С++, Python или Ruby. Кроме того, потребуются сторонние программы для генерации словестных списков для подбора паролей, такие как John the Ripper или Cain https://tgbps.ru/14035/» target=»_blank»]tgbps.ru[/mask_link]
КАК СОЗДАТЬ СВОЮ ПРОГРАММУ ДЛЯ ПОЛУЧЕНИЯ ДОНАТА В МАЙНКРАФТ / КАК ПОЛУЧИТЬ ДОНАТ НА СЕРВЕРЕ
Крутая защита или [email protected] CrackMe #1
Крутая защита или [email protected] CrackMe #1
Крутая защита или [email protected] CrackMe #1
Статью написал: Bad_guy
Статья создана: 28.07.03
Однажды я придумал одну интересную защиту и решил реализовать её в виде CrackMe, дабы проверить её на прочность, что ж — это было сделано и этот крэкми вы можете скачать и попробовать сломать прямо сейчас, не читая до конца эту статью, а иначе будет неинтересно. СКАЧАТЬ (140 Кб)
В этой защите было применено
1. Защита от String Reference взлома.
2. Использование самомодифицирующегося кода.
3. Немножко самодельной криптографии (хэш).
4. Использование регистрационного кода в качестве адреса процедуры.
Давайте по порядку разберёмся с каждым из этих пунктов, что они нам дают и зачем.
Защита от String Reference взлома
О таком способе взлома своих программ программисты обычно никогда не задумываются. А суть взлома здесь в следующем: в скомпилированной программе содержатся строки типа «Registered», «UNREGISTERED», в общем все, которые программист «вбил» в исходники. Начинающих крэкеров учат ломать проги таким способом: дизассемблируем программу с помощью WinDASM, нажимаем кнопочку String Reference и ищем вот такие подозрительные строки, потом кликаем по подорительной строчке и смотрим откуда она вызывается, смотрим выше, находим jne,jnz,jz или je и меняем на противоположную команду, после чего программа становится зарегистрированной.
Как здесь от этого я избавился: сначала написал всю программу, затем скопировал все строковые константы в отдельный текстовый файл, вот такие там были строки:
lKeoOIwjk34uGFqi
*
Name:
Serial#:
Register
About
! Unregistered !
Как сделать вирус? | Как стать хакером? | CMD Windows 2
REGISTERED
Ошибочка, видимо ключ поддельный.
До взлома ещё очень далеко.
До взлома ещё далеко.
Поднапрягись !
А ключик то поддельный !
Ты ещё ничего не сделал !
А потом берём и пишем простую программку:
program Project1;
uses SysUtils;
var f,f1: textfile;
s,s1: string;
i: integer;
begin
assignfile(f,’name.txt’);
reset(f);
assignfile(f1,’name2.txt’);
rewrite(f1);
while not eof(f) do
begin
readln(f,s); s1 := »;
for i:= 1 to length(s) do
s1 := s1+’cr(‘+Inttostr(integer(s[i]))+’)+’;
writeln(f1,s1);
end;
closefile(f);
closefile(f1);
end.
затем берём получивишийся файл name2.txt и из него вставляем вместо строковых констант в исходники новые строки:
cr(78)+cr(97)+cr(109)+cr(101)+cr(58); — Так выглядит слово «Name:» и так далее.
И ещё вставляем в код программы процедуру cr:
function cr(bb: byte):string;
begin
cr := chr(bb);
end;
Вот так легко избавится от String Reference крэкеров-новичков.
Использование самомодифицирующегося кода (СМК)
C СМК всё сложнее, тут нам надо будет вмешиваться в скомпилированный файл:
у меня была процедура:
Вспомним криптографию и сделаем небольшую простенькую хэш функцию:
Function Md5(ms: string):int64;
var mt,ms2: string; imt: int64; imt1: integer;
w: array [0..7] of byte absolute imt;
begin
mt := cr(108)+cr(75)+cr(101)+cr(111)+cr(79)+cr(73)+cr(11 9)+cr(106)+cr(107)+cr(51)+cr(52)+cr(117)+cr(71)+cr (70)+cr(113)+cr(105);
ms2 := »;
ms2 := ms + cr(42);
imt := $1AFD2FDE3ABC4975;
for imt1 := 1 to length(mt) do
begin
w[imt1 mod 8] := (w[imt1 mod 8]*integer(ms2[(imt1 mod length(ms2))+1])) mod 256;
end;
md5 := imt;
end;
Не подумайте, что это правда алгоритм MD5 — это простенькая самоделка созданная для возможности реализации электронной подписи и контрольной суммы, а она будет полезна для проверок формата регистрационного кода.
Использование регистрационного кода в качестве адреса процедуры
О таком способе я писал уже в своей статье «Ещё одна защита ваших shareware программ и как её снять», но теперь могу сказать, что в той статье много смешных для опытного крэкера вещей, хотя сам принцип никуда не делся.
Вкратце: Для использование регистрационного кода в качестве адреса процедуры надо чтобы регистрационный код так или иначе нёс в себе константу — адрес процедуры, к тому же придётся залезть в отладчик, а ещё пропатчить скомпилированный исполняемый файл, дабы убрать вызов процедуры вида
Call 0040213D
и заменить на вызов вида
mov eax, Regaddr
Call eax
где Regaddr это тоже самое число 0040213D, но передаваемое в регистрационном коде. Помнится, что пару лет назад все в своих статья писали, что «на вашем компьютере адрес может быть и другой», но мой опыт в крэкерстве и знания формата PE позволяют мне сделать вывод, что адрес этот на всех компьютерах будет абсолютно одинаков, а даже если это и не так, то есть хитрые функции, которые позволяют узнать содержимое EIP (текущий логический адрес в исполняющемся коде), и тем самым подкорректировать значение RegAddr.
Теперь подробно. В данном крэкми было сделано всё так:
procedure TForm1.Button1Click(Sender: TObject);
var snm : string; inm: integer;
begin
if length(Edit2.Text) = 20 then
begin
snm := InttoHex(md5(Edit1.Text),16);
for inm := 1 to length(Edit2.Text) do
begin
if not(Edit2.Text[inm] in [‘0′..’9′,’A’..’F’]) then
begin Showmessage(‘До взлома ещё очень далеко.’); exit; end;
end;
if copy(snm,1,8) <> copy(Edit2.Text,1,8) then
begin Showmessage(‘До взлома ещё далеко.’); exit; end;
if Copy(InttoHex(md5(Copy(Edit2.Text,1,16)),16),4,4) <> copy(Edit2.Text,17,4) then
begin Showmessage(‘Поднапрягись !’); exit; end;
ilong := StrToInt(‘$’+Copy(Edit2.Text,1,8));
ilong := ilong xor StrToInt(‘$’+Copy(Edit2.Text,9,8));
//Проверим правильность адреса.
if Copy(InttoHex(md5(IntToHEX(ilong,8)),16),5,8) <> IntToHEx($E8484694,8) then
begin Showmessage(‘А ключик то поддельный !’); ilong := 0; exit; end;
ilong := ilong xor $5CD37EA6;
end
else
Showmessage(‘Ты ещё ничего не сделал !’);
end;
Переменная ilong после всех проверок будет содержать адрес процедуры, если был введён правильный код, если нет, то ноль.
Теперь подробно расскажу алгоритм этой процедуры.
Edit1.Text — туда вводится имя пользователя (ИП)
Edit2.Text — сюда регистрационный код (РК).
Сначала сравниваем длину РК — она должна быть 20 символов. Вычисляем хэш ИП. Затем проверяем, чтобы РК содержал только HEX символьные числа (‘0′..’9′,’A’..’F’). Первые восемь символов РК сравниваем с 8 символами хэша ИП. Вычисляем контрольную сумму первых 16 символов РК и сравниваем ее с 4 последними символами РК.
Если все предыдущие проверки прошли успешно, то ксорим первые восемь символов РК, с последующими 8 символами, то есть не символы, а числа, полученные на основе перевода из строкового в числовой формат и помещаем их в переменную, которая и будет являться хранителем адреса процедуры (ilong).
Android: взлом с помощью дебаггера, обфускация приложений и асинхронная магия Kotlin
Сегодня в выпуске: взлом приложений с нативным кодом с помощью дебаггера, большое исследование использования обфускации в приложениях, магия асинхронного программирования на Kotlin, большой гайд по Material Design и теням в интерфейсе, рассказ о структуре файлов DEX, защита приложений от взлома и, конечно же, большая подборка свежих библиотек.
Инструменты
- QARK — мощный инструмент для поиска уязвимостей в приложениях (как в исходном коде, так и в APK);
- android-scripts — небольшая коллекция скриптов для реверса Android-приложений;
- edlrooter — root-эксплоит для Nexus 6 с использованием Qualcomm Emergency Download (EDL) Mode (CVE-2017-13174, CVE-2016-10277);
- AndroidIdChanger — Xposed-модуль для изменения информации об устройстве (IMEI, Android ID, Serial Number, Wifi Mac Address и другое);
- VirtualHook — фреймворк для рантайм-модификации приложений (нечто вроде Xposed, не требующего прав root);
- exploit_me — уязвимое ARM-приложение для тренировки навыков взлома (присутствуют практически все возможные баги);
- SdkSearch — приложение для поиска документации по Android SDK.
Почитать
Анализ использования обфускации в приложениях
A Large Scale Investigation of Obfuscation Use in Google Play — исследование на тему использования обфускаторов разработчиками приложений для Android. Обфускаторы — утилиты, способные сделать код приложения гораздо более запутанным и сложным для чтения.
Один из самых популярных обфускаторов — ProGuard входит в состав Android Studio. В первую очередь он предназначен для оптимизации кода путем сокращения имен. Существуют и более продвинутые версии обфускаторов: DexGuard, Allatory, DexProtector и многие другие. Кроме сокращения имен, они также выполняют шифрование строк и используют многие другие типы обфускации (например, заменяют прямой вызов методов рефлексией).
По словам исследователей, только 24,9% приложений из проанализированных 1,7 миллиона защищены обфускаторами. И это плохо, так как в мире Android процветает то, что называется перепаковкой приложений. Простые цифры:
- 86% вирусов — это перепакованные версии обычных приложений;
- 13% приложений в сторонних маркетах — перепакованные версии приложений других разработчиков (зачастую с включением рекламы).
В то же время, по словам опытных исследователей кода приложений, ProGuard увеличивает общее время анализа всего лишь в два раза. Другими словами, если приложение должно быть исследовано — оно будет исследовано.
- 64,51% приложений включают код, обфусцированный с помощью ProGuard (необязательно код самого приложения, возможно — код библиотек);
- 0,16% используют продвинутые техники обфускации, такие как использование зарезервированных в Windows ключевых слов (так делают DexGuard и некоторые конфигурации Allatory);
- 0,05% приложений обфусцированы с помощью DexGuard;
- 0,01% обфусцированы с помощью Bangle.
Как ты относишься к обфускации кода?
- Обычно применяю. Спасибо, что подсказали продвинутые обфускаторы
- Раньше не использовал, но теперь буду
- Не применял и не собираюсь. Все равно взломают и перепакуют
Взлом приложения с нативным кодом
Debugging Android third-party Java apps with native methods — статья с рассказом о способе исследования (взлома) приложений, использующих нативный код. В данном случае используется не статический анализ приложения с помощью дизассемблирования и декомпиляции, а запуск приложения под отладчиком.
В целом суть метода в следующем:
- Распаковываем приложение-жертву и дизассемблируем его в низкоуровневый код smali с помощью утилиты backsmali (на самом деле все это можно сделать с помощью apktool).
- Импортируем код приложения (smali) в Android Studio и настраиваем отладчик.
- Включаем отладку нужного приложения на устройстве с помощью команды типа am start -W -D com.skout.android/com.skout.android.activities.Skout (требует права root).
- В Android Studio устанавливаем брейк-пойнт на метод onCreate в главной активности приложения.
- В Device Monitor (DDMS) находим нужное приложение на устройстве.
- Запускаем отладку приложения.
Таким способом можно построчно отладить и, как следствие, изучить поведение приложения. Но это еще не все: если установить на смартфон и запустить gdbserver , с его помощью можно будет подключиться к устройству, используя отладчик GDB , а уже затем подключиться к процессу приложения. Это даст возможность отлаживать нативный код приложения, как только ему будет передано управление.
Взлом очень уязвимого приложения
A walk through the Damn Vulnerable Hybrid Mobile App (DVHMA) — пример разбора (взлома) приложения, написанного с помощью Apache Cordova, фреймворка, позволяющего создавать гибридные приложения с использованием HTML, CSS и JavaScript.
Автор последовательно разбирает три проблемы приложения.
- Дефолтовый уровень логирования установлен в DEBUG, что приводит к сбросу в стандартный журнал Android (logcat) массы отладочной информации.
- В ряде случаев приложение не производит валидацию данных, что можно использовать для XSS.
- Injection.
Ты выполняешь обратную разработку и поиск уязвимостей в мобильных приложениях?
- Да, в Android это особенно просто
- Пока нет, но раз есть такие удобные инструменты — стоит попробовать
- Только для аудита, не хочу запятнать белую шляпу
Структура файлов DEX
The Dex File Format — неплохая вводная статья в формат DEX, тот самый, что содержит байт-код любых приложений для Android. Автор рассказывает о структуре заголовков DEX, способе кодирования строк и методов, о том, как выглядит сам код в формате DEX. В конце приводится сравнение результатов работы старого компилятора DX и нового D8, который должен появиться в Android Studio 3.1. Как оказалось, этот компилятор способен сократить размер DEX-файла примерно на 12%. Кроме того, он увеличивает скорость компиляции.
Разработчику
Магия асинхронного программирования с Kotlin
Simple asynchronous loading with Kotlin Coroutines — еще одна великолепная демонстрация мощи Kotlin и основанной на корутинах модели многопоточного программирования. Автор показывает, как за десять минут написать микробиблиотеку, которая позволит сделать такое:
load < loadBitmapFromMediaStore(imageId, imagesBaseUri) >then