Статья Azor RIP?

  • Автор темы Andre
  • Дата начала
  • Ответы 10
  • Просмотры 513

Andre

Пользователь
Пользователь

Andre

Пользователь
Пользователь

AZORult — Rest in Peace
Азор всё. Да и не только он — все старые крякнутые версии различных стиллеров всё.
Причина следующая — ещё в начале января Chromium выкатили на гитхаб обновление до 80 версии своего браузера, в котором изменили алгоритм шифрования всех важных пользовательских данных, а с неделю назад Google обновила свой браузер Chrome.
Как было раньше
Раньше для Win32 у Chromium было простое решение шифрования данных на базе Data Protection API(DPAPI). С помощью функций CryptProtectData / CryptUnprotectData производился энкод и декод данных.
bool OSCrypt::DecryptString(const std::string& ciphertext,
std::string* plaintext) {
DATA_BLOB input;
input.pbData = const_cast<BYTE*>(
reinterpret_cast<const BYTE*>(ciphertext.data()));
input.cbData = static_cast<DWORD>(ciphertext.length());

DATA_BLOB output;
BOOL result = CryptUnprotectData(&input, nullptr, nullptr, nullptr, nullptr,
0, &output);
if (!result) {
PLOG(ERROR) << "Failed to decrypt";
return false;
}

plaintext->assign(reinterpret_cast<char*>(output.pbData), output.cbData);
LocalFree(output.pbData);
return true;
}
Код из официального репозитория Chromium версии 71.0.3572.0
Плюсы:
Это просто, нужно всего лишь вызвать две функции из библиотеки, идущей во всех версиях ОС Windows в комплекте.
Не нужно таскать с собой реализации сложных алгоритмов шифрования данных.
Минусы:
Все защищенные данные прекрасно вскрываются одним вызовом всё той же CryptUnprotectData.
Особенность DPAPI в том, что ключи генерируются локально для каждого юзера системы. НО, никак не учитывается, КАКОЕ приложение пытается расшифровать данные. Благодаря этому недочету мы, находясь на машине, можем взять зашифрованную условным хромом строку, вызвать CryptUnprotectData и успешно расшифровать данные.
Все инфостиллеры так и работали, поскольку расшифровать данные не на машине, на которой они зашифрованы, практически нереально. Но с обновлением Chromium всё изменилось.
Как стало теперь
Бравые ребята из Google наконец пришли к тому, что Яндекс в своем Protect сделали еще год назад — ввели AES 256 GCM шифрование. Алгоритм AES-256 считается надежным, агентство национальной безопасности США рекомендует его для защиты сведений, составляющих государственную тайну уровня Top Secret, как уверяет Яндекс.
bool OSCrypt::DecryptString(const std::string& ciphertext,
std::string* plaintext) {
if (!base::StartsWith(ciphertext, kEncryptionVersionPrefix,
base::CompareCase::SENSITIVE))
return DecryptStringWithDPAPI(ciphertext, plaintext);

crypto::Aead aead(crypto::Aead::AES_256_GCM);

auto key = GetEncryptionKeyInternal();
aead.Init(&key);

std::string nonce =
ciphertext.substr(sizeof(kEncryptionVersionPrefix) - 1, kNonceLength);
std::string raw_ciphertext =
ciphertext.substr(kNonceLength + (sizeof(kEncryptionVersionPrefix) - 1));

return aead.Open(raw_ciphertext, nonce, std::string(), plaintext);
}
Из коммита Chomium версии 81.0.4022.0
Для данных, зашифрованных новым алгоритмом, предусмотрели префикс v10:
const char kEncryptionVersionPrefix[] = "v10";
Но не всё так просто, DPAPI всё еще используется и будет использоваться дальше, но теперь для шифрования мастер-ключа. Так что утащить с собой мастер-ключ и sqlite базы данных для дальнейшей расшифровки не получится).
Вместо послесловия
Хорошо, что разработчики Chromium усложняют алгоритмы защиты данных. Благодаря этому обновлению всё еще остающийся популярным среди киберпреступников AZORult прекратит свое существование.
Но, новый алгоритм не панацея — мне хватило получаса и небольшого спортивного интереса на то, чтобы написать дешифровщик паролей для новой версии. Защита ваших данных всё еще зависит только от вас — никакое шифрование не спасет от человеческой глупости.
 

࿗ 𝕯𝖚𝖐𝖊 𝕰𝖚𝖌𝖊𝖓𝖊 ࿗

Администратор
Команда форума
ГЛАВНЫЙ АДМИН
Админ

࿗ 𝕯𝖚𝖐𝖊 𝕰𝖚𝖌𝖊𝖓𝖊 ࿗

Администратор
Команда форума
ГЛАВНЫЙ АДМИН
Админ

AZORult — Rest in Peace
Азор всё. Да и не только он — все старые крякнутые версии различных стиллеров всё.
Причина следующая — ещё в начале января Chromium выкатили на гитхаб обновление до 80 версии своего браузера, в котором изменили алгоритм шифрования всех важных пользовательских данных, а с неделю назад Google обновила свой браузер Chrome.
Как было раньше
Раньше для Win32 у Chromium было простое решение шифрования данных на базе Data Protection API(DPAPI). С помощью функций CryptProtectData / CryptUnprotectData производился энкод и декод данных.
bool OSCrypt::DecryptString(const std::string& ciphertext,
std::string* plaintext) {
DATA_BLOB input;
input.pbData = const_cast<BYTE*>(
reinterpret_cast<const BYTE*>(ciphertext.data()));
input.cbData = static_cast<DWORD>(ciphertext.length());

DATA_BLOB output;
BOOL result = CryptUnprotectData(&input, nullptr, nullptr, nullptr, nullptr,
0, &output);
if (!result) {
PLOG(ERROR) << "Failed to decrypt";
return false;
}

plaintext->assign(reinterpret_cast<char*>(output.pbData), output.cbData);
LocalFree(output.pbData);
return true;
}
Код из официального репозитория Chromium версии 71.0.3572.0
Плюсы:
Это просто, нужно всего лишь вызвать две функции из библиотеки, идущей во всех версиях ОС Windows в комплекте.
Не нужно таскать с собой реализации сложных алгоритмов шифрования данных.
Минусы:
Все защищенные данные прекрасно вскрываются одним вызовом всё той же CryptUnprotectData.
Особенность DPAPI в том, что ключи генерируются локально для каждого юзера системы. НО, никак не учитывается, КАКОЕ приложение пытается расшифровать данные. Благодаря этому недочету мы, находясь на машине, можем взять зашифрованную условным хромом строку, вызвать CryptUnprotectData и успешно расшифровать данные.
Все инфостиллеры так и работали, поскольку расшифровать данные не на машине, на которой они зашифрованы, практически нереально. Но с обновлением Chromium всё изменилось.
Как стало теперь
Бравые ребята из Google наконец пришли к тому, что Яндекс в своем Protect сделали еще год назад — ввели AES 256 GCM шифрование. Алгоритм AES-256 считается надежным, агентство национальной безопасности США рекомендует его для защиты сведений, составляющих государственную тайну уровня Top Secret, как уверяет Яндекс.
bool OSCrypt::DecryptString(const std::string& ciphertext,
std::string* plaintext) {
if (!base::StartsWith(ciphertext, kEncryptionVersionPrefix,
base::CompareCase::SENSITIVE))
return DecryptStringWithDPAPI(ciphertext, plaintext);

crypto::Aead aead(crypto::Aead::AES_256_GCM);

auto key = GetEncryptionKeyInternal();
aead.Init(&key);

std::string nonce =
ciphertext.substr(sizeof(kEncryptionVersionPrefix) - 1, kNonceLength);
std::string raw_ciphertext =
ciphertext.substr(kNonceLength + (sizeof(kEncryptionVersionPrefix) - 1));

return aead.Open(raw_ciphertext, nonce, std::string(), plaintext);
}
Из коммита Chomium версии 81.0.4022.0
Для данных, зашифрованных новым алгоритмом, предусмотрели префикс v10:
const char kEncryptionVersionPrefix[] = "v10";
Но не всё так просто, DPAPI всё еще используется и будет использоваться дальше, но теперь для шифрования мастер-ключа. Так что утащить с собой мастер-ключ и sqlite базы данных для дальнейшей расшифровки не получится).
Вместо послесловия
Хорошо, что разработчики Chromium усложняют алгоритмы защиты данных. Благодаря этому обновлению всё еще остающийся популярным среди киберпреступников AZORult прекратит свое существование.
Но, новый алгоритм не панацея — мне хватило получаса и небольшого спортивного интереса на то, чтобы написать дешифровщик паролей для новой версии. Защита ваших данных всё еще зависит только от вас — никакое шифрование не спасет от человеческой глупости.
Ну хоть написал бы, что статья от Лисовского
Пожалуйста , Вход или Регистрация чтобы увидеть ссылку!
 

Andre

Пользователь
Пользователь

Andre

Пользователь
Пользователь

Похожие публикации

Сверху Снизу