Загрузка...

Own modules for PasswordsPro_ attack on hashes (Or how to add a unique hash type to the program)

Thread in Working with hashes created by BALDMAN_inactive46458 May 12, 2017. 1419 views

  1. BALDMAN_inactive46458
    BALDMAN_inactive46458 Topic starter May 12, 2017 Banned 107 Aug 17, 2016
    Чуваки те кто часто дампят наверное часто сталкивались что при сливе был не понятный хэш и в некоторый случаях его не было даже в PasswordsPro такого как например Pligg CMS SHA1($salt.$pass) так вот для тех кто не знал туда можно добавлять свои модули для расшифровки и тем самым увеличивать количество типов хэшей которое она может расшифровывать до бесконечности

    ХАЙДА НЕ БУДЕТ


    Посмотрим как это делать

    Представьте ситуацию — мы извлекли из БД форума кучу хэшей пользователей и,
    покопавшись в исходниках форума, обнаружили, что его автор использовал алгоритм,
    который не поддерживает ни один известный переборщик паролей — пусть, к примеру,
    это будет алгоритм md5(md5($pass).$pass). Сразу возникает вопрос — что делать?
    Правильно! Выбора нет — сначала надо сбегать за пивом…

    Сбегали? А вот теперь у нас есть выбор.

    Можно написать свой переборщик паролей под этот алгоритм, на что уйдет уйма
    времени, а можно сделать проще — написать лишь код для реализации нужного
    алгоритма, "обернуть" его парой функций, скомпилировать в DLL-файл и загрузить в
    PasswordsPro. Заманчиво? Не то слово! А если учесть, что в дистрибутиве
    программы находятся исходные тексты готового модуля на Visual C++ .NET 2003, то
    пользователь, имеющий хорошие навыки использования VC++, сможет ****ить подобные
    хэши со всей "мощью" PasswordsPro, затратив всего 10-15 минут!

    Смотрим каталог \Modules\API дистрибутива программы, находим в нем архив
    "RAdmin_Sources.zip", разархивируем и запускаем файл "RAdmin.vcproj". А теперь
    отвлечемся немного от Visual Studio и прочитаем небольшой файл "ReadMe.chm" в
    том же каталоге. Так-c… Для связи модуля с PasswordsPro достаточно… двух
    функций и пары флагов. Всего-то?! Да.

    #include "stdafx.h"
    #include "MD5.h"
    #include "Modules.h"

    BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID
    lpReserved)
    {
    return TRUE;
    }

    extern "C"
    __declspec(dllexport)
    void GetInfo(MODULEINFO *info)
    {
    // Наш хэш зависит только от пароля и имеет
    бинарный формат
    info->dwFlags = MODULE_HASH_SIMPLE | MODULE_HASH_BINARY;

    // Тип нашего хэша
    info->szHashType = "md5(md5($pass).$pass)";

    // О модуле
    info->szAbout = "Тестовый модуль для хэшей вида
    md5(md5($pass).$pass)";
    }

    extern "C"
    __declspec(dllexport)
    int GetHash(HASHINFO *info)
    {
    unsigned char buf[256];

    // Формируем md5($pass)
    MD5_CTX context;
    MD5Init(&context);
    MD5Update(&context, (unsigned char
    *)info->szPassword, info->nPasswordLen);
    MD5Final(buf, &context); // 16 байт хэша -> в buf

    // Т.к. PHP-функция md5() возвращает MD5-хэш
    // в 32-символьном текстовом виде, то и нам надо сделать
    // такое же преобразование. Автор использует для этого
    // собственную inline-функцию, написанную на Ассемблере,
    // но для сокращения места она не приводится, тем более,
    // что преобразовать 16 байт хэша в HEX-формат, к примеру:
    // "e2fc714c4727ee9395f324cd2e7f331f" — задача элементарная.

    // Преобразуем хэш в текстовую строку по адресу &buf[16]
    HashToText(&buf[16], buf, 16);

    // Копируем пароль после текстового хэша
    memcpy(&buf[48], info->szPassword, info->nPasswordLen);

    // Финальное хэширование строки md5($pass).$pass
    MD5Init(&context);
    MD5Update(&context, &buf[16], info->nPasswordLen + 32);
    MD5Final(info->pBuf, &context);

    return 16;
    }

    Компилируем, запускаем PasswordsPro, открываем настройки, ищем закладку
    "Модули хэширования", кликаем правой кнопкой мыши, добавляем наш модуль в список
    и, если он скомпилирован правильно, программа радостно скажет "Модуль загружен
    успешно!".

    Небольшое тестирование… Нажимаем F6, вызывая встроенный в программу
    генератор хэшей, и смотрим, как новоявленный модуль реагирует на изменение
    пароля. Для проверки стабильности работы модуля можно потестировать пароль на
    максимальную длину в 127 символов. Если все ок, то принимайте поздравления — вы
    успешно "подружили" PasswordsPro со своим алгоритмом!

    Что делать теперь? ****ить, ****ить и ****ить! Но сначала сбегаем еще за
    пивом… Что значит "еще не закончилось"? Даже вторая бутылка не открыта?
    Ну вот, видите — создать нужный модуль хэширования к программе за 10 минут вполне
    реально.

    Любители Дельфи или VB без труда сформируют собственные прототипы нужных
    функций

    Ну что ж, мы воочию убедились, что программа PasswordsPro в умелых руках
    (особенно "укомплектованная" большим количеством хороших словарей и
    Rainbow-таблиц) — это реально боевая машина пехоты (в смысле — специалиста по
    аудиту), смело пробирающаяся по туманному миру хэшей, ломая их направо и налево.
    Но и она не всесильна, к сожалению.

    СТАТЬЯ НЕ МОЯ ПРИШЛОСЬ ПОРЫТЬСЯ
     
Loading...
Top