• Уменьшение отступа

    Обратная связь

    (info@ru-sfera.pw)

На заметку Fuck_Chrome_C


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 176
Ссылка на гит:

Всем привет.

Как многим малварьщикам известно, в хроме поменяли шифрование паролей, из-за этого все старые стилеры пошли по бороде, хе-хе.

Вообще защита такая себе, в кратце как там реализовано сейчас:

Chromium изменил механизм шифрования и использует AES-256-GCM.

Данный проект расшифровывает пароли с помощью функций BCrypt (Это API винды). Не нужно никаких файлов DLL.

Новый механизм Chrome заключается в следующем:

Сначала генерируются 32-байтовые случайные данные. Затем он шифрует их с помощью функции Windows DPAPI («CryptProtectData»).

В этот зашифрованный ключ вначале вставляется подпись «DPAPI» для идентификации.

Наконец, этот ключ кодируется с использованием Base64 и сохраняется в файле «Local State» в папке «User Data».

Теперь, чтобы сохранить пароль для входа на сайт, Chrome шифрует его, используя алгоритм AES-256-GCM с указанным выше главным ключом и 12-байтовыми случайными данными.

Наконец, он вставляет подпись «v10» в зашифрованный пароль и сохраняет ее в указанном выше файле «Login Data».

Также в конец зашифрованного пароля добавляется 16 байт аудентификационного тега.

Итого зашифрованный пароль выглядит так:

<V10:3 байта> <NONCE:12 байт> <Сам шифрованный пароль> <Аудентификационный тег:16 байт>

В общем расшифровать все это можно при помощи API "BCryptDecrypt".

Как, посмотрите код проекта, вообще хотел переделать по лучше, но похоже руки не скоро дойдут...)))

Полезно для любителей писать стилеры, программы восстановления паролей и тестирования защиты.

Благодарности:
Благодарю @Jefferson, за предоставления каркаса.

Также есть реализация на C#:
 
Последнее редактирование:

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 176
33: Процесс не может получить доступ к файлу, так как часть этого файла заблокирована другим процессом.

Отключите антивирусы на момент теста, запуститите из под администратора.

Есть собранная версия:

Вообще у меня на 10 нормально работает, проверял на гугл-хром.

Да, работает-ли эта версия:

1586499885547.png
 

Jefferson

Уважаемый пользователь
Форумчанин
Регистрация
09.06.2019
Сообщения
63
Репутация
35
sqlite3_prepare_v2 error!
error code 33

There is an issue on this line
A.if (sqlite3_prepare_v2 (db, "SELECT origin_url, username_value, password_value FROM logins", -1, & stmt, 0)! = SQLITE_OK)
Закрой браузер.
Нужно было сделать копирование бд и работать уже с ней, забыл что-то. Одновременно с бд может взаимодействовать только 1 клиент
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 176
Закрой браузер.
Нужно было сделать копирование бд и работать уже с ней, забыл что-то. Одновременно с бд может взаимодействовать только 1 клиент
Можно кстати скопировать базу во временную папку и работать с ней.

Но это в финальном стилере, если кто будет делать, также там sqlite3.c, занимает 5МБ. Его-бы по возможности подсократить, тут-же нужно только чтение из базы, запись, какие-то оптимизации может можно убрать.

Короче то-что здесь, это просто каркас, как можно расшифровать, так-то для полноценного стилера, даже просто браузеров на основе движка Chromium дофига дел...:(
 

Jefferson

Уважаемый пользователь
Форумчанин
Регистрация
09.06.2019
Сообщения
63
Репутация
35

_pCdj_

Пользователь
Первый уровень
Регистрация
22.05.2020
Сообщения
7
Всем привет. В чём мб сбой ? при сборке debug x86 проект собирается компилиться ,запускается консоль - но выводить ошибку в консоль sqlite3_prepare_v2 error! 2 . При сборке release x86 проект собирается компилиться ,запускается консоль в консоли появляются данные логины пассы и с т.д но консоль сразу закрывается . windows 10 x64 / проект собираю в visual studio 2019 .
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 176
Судя по ошибке почему-то не может найти файл базы.

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

1)Переполнение памяти, при получении ключа, нужно увеличить буфер до 8Кб:
Найти:
C:
char decryptedKey[32];
И увеличить:
Код:
char decryptedKey[8192];

2)Кроме "v10" нужно проверять еще "v11":
Код:
 if ((char)password[0] == 'v' && (char)password[1] == '1' && (char)password[2] == '0' || (char)password[2] == '1' ) {

}

3)Переполнение буфера в функции GetNonce:

Найти и удалить строчку:
Код:
GetNonce(decryptedKey, decKeySize, nonce);

4)Нет проверки на nullptr и выходы из цикла по брейку нужны, иначе могут-быть падения:
C:
        char* url = (char*)sqlite3_column_text(stmt, 0);
        char* username = (char*)sqlite3_column_text(stmt, 1);
        char* password = (char*)sqlite3_column_text(stmt, 2);
        if (url == nullptr) || (username == nullptr) || (password == nullptr) {
        break;
        }
 
Верх Низ