17.04.2024
Расшифровка паролей и файлов Telegram, анализ баз данных Photo Database, Media Player и другое
Прощай, Syskey!Fare thee well, and if for ever still for ever fare thee well.
Незадолго до официального выхода очередного большого обновления операционных систем Windows 10 Fall Creators Update и Windows Server 2016 RS3 компания Microsoft опубликовала список изменений в новых версиях. Среди компонентов для замены и удаления значится утилита syskey.exe. Microsoft объясняет этот факт так:
Многие информационные порталы и агентства обошли эту новость стороной, хотя событие знаковое. Зная о функционировании Syskey не понаслышке, мы постараемся разобраться и показать, что большинство аргументов против Syskey, мягко выражаясь, неправда. По крайней мере, присутствует определенная недосказанность. Заинтригованы и хотите узнать подробности? Тогда приступим.
Для начала давайте разберемся, чтобы представляет из себя Syskey. Syskey это прозрачная программная надстройка, придуманная для дополнительной защиты хэшей пользователей, предотвращения оффлайн атак на базу данных хэшей SAM и защиты хэшей пользователей от атак с использованием радужных таблиц.
Впервые Syskey была представлена в операционной системе Windows NT 4.0 SP3. По-умолчанию функция дополнительной защиты изначально включена в Windows XP и более поздних операционных системах, и отключить ее невозможно. Вы уже догадались, почему последняя фраза выделена жирным? Все верно. Многие сайты неправильно перевели или преподнесли новость отказа от Syskey. Компания Microsoft отказывается не от защиты Syskey, а от утилиты syskey.exe. Как будет показано ниже, это большая разница. На физическом уровне Syskey представляет собой алгоритм шифрования при помощи уникального 128-битного ключа Syskey. А утилита syskey.exe просто обеспечивает выбор места хранения этого ключа. Всего предусмотрено три места хранения:
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/LsaJD HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/LsaSkew1 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/LsaData HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/LsaGBG Доступ к этим веткам закрыт всем, кроме системы. Но имея права администратора, несложно прочитать и извлечь Syskey.
Итак, в новой версии Windows 10 и Windows Server 2016 будет удалена утилита syskey.exe. Следовательно, нельзя будет выбрать способ хранения ключа Syskey. Теперь он всегда будет храниться в реестре! "А в чем подвох?", - спросите вы. Подвох в том, что те способы хранения Syskey, которые пойдут под нож, обеспечивают более сильную защиту персональных данных пользователей. И хотя им пользовались единицы, профессионалы в области компьютерной безопасности знают, что если, например, выбрать способ хранения Syskey на дискете, то без этой дискеты никакой злоумышленник, даже если он получить физический доступ к компьютеру, не сможет ни расшифровать файлы, зашифрованные EFS, ни персональные данные учетной записи.
Давайте пройдемся по причинам отказа от syskey.exe, на которые указывает Microsoft.
Неверно. Хранение Syskey на дискете или генерация его по начальному паролю позволяет кардинально улучшить сохранность персональных данных пользователя при оффлайн атаках. Например, при установленном начальном пароле Syskey, даже если злоумышленник получит доступ к паролям skype/IE/chrome/wifi/lan и т.д., то без знания начального пароля Syskey расшифровать их не получится. После того, как выйдет очередное обновление Windows и ключ Syskey будет храниться только в реестре, жизнь потенциальных злоумышленников заметно упростится.
Не совсем так. Алгоритм получения ключа шифрования учетных записей SAM из ключа Syskey показан в конце статьи. Этот алгоритм, придуманный около двух десятков лет назад, несомненно, имеет свои минусы: скомпрометированная хэш функция MD5 и слабый потоковый алгоритм шифрования RC4. Кстати, в последних версиях Windows 10 они были заменены на SHA-256 и AES. Давайте попробуем посчитать, насколько быстро можно взломать защиту с установленным паролем или дискетой Syskey. Скорость подбора пароля Syskey на современном оборудовании составляет порядка 10-20 миллионов паролей в секунду для старого алгоритма (для нового - намного медленнее). Мы будем пессимистами и округлим это значение до 100. Но даже при таком раскладе взлом пароля Syskey будет проходить примерно в 100 раз медленнее, чем пароля учетной записи Windows. На перебор Syskey пароля 'Letmein123' потребуется пара с половиной сотен лет. А вот подбор ключа, хранимого на дискете, произойдет не раньше смерти солнечной системы.
Не очень понятно, что именно имеется в виду. Скорее всего невозможность защиты некоторых файлов при помощи EFS. Например, системного реестра. В качестве альтернативы Microsoft предлагает использовать Bitlocker. Самое забавное при этом, что при включении шифрования Bitlocker для учетной записи Microsoft, ключ восстановления автоматически отправляется на серверы Microsoft. В домене все ключи восстановления Bitlocker хранятся в Active Directory, и любой, имеющий доступ к серверу, может легко расшифровать какой угодно ПК в домене. Мы уже писали об этом в одной из наших статей про уязвимость паролей доменных пользователей.
В 2014-2017 годах пользователи Windows подверглись одной из самых обширных атак с использованием встроенной утилиты syskey.exe. Как правило, это выглядело следующим образом: пользователю поступал звонок от якобы технической поддержки Microsoft. Человек на другом конце провода с сильным Индийским акцентом и невероятно английским именем, типа John Smith, утверждал, что на компьютере пользователя установлена вредоносная программа и для ее устранения требуется доступ к ПК. После того, как доверчивая жертва открывала доступ к своему компьютеру, злоумышленники запускали утилиту syskey.exe и устанавливали там стартовый пароль Syskey. Основная проблема восстановления компьютеров после syskey-атаки заключается в недостаточности сброса настроек и ключа Syskey. Для полной дешифрации требуется знание стартового пароля.
Без сомнений, отказ от syskey.exe сведет эту мошенническую схему к нулю. Но надеяться, что мошенники не будут использовать другие схемы обмана, по крайней мере, наивно. Люди, отвечающие за безопасность в Microsoft, скажите, кто помешает скаммерам менять не Syskey, а к примеру, пароль учетной записи? Сброс пароля на вход еще проще, чем установка Syskey. После получения доступа к компьютеру жертвы хакеру достаточно просто ввести в командной строке с правами администратора такую команду: net user USERNAME NEWPASSWORD. Знание старого пароля при этом необязательно. Таким образом, после выхода обновления Windows 10 Fall Creators Update и отказа от утилиты syskey.exe, файлы и пароли пользователей станут более открыты как для мошенников, так и для спецслужб. Если Microsoft продолжит свою бездумную политику упрощения доступа к персональным данным пользователей, это кончится тем, что обычные пользователи, организации и целые страны начнут постепенно мигрировать на другие операционные системы. Достаточно сделать один финальный аккорд: прекратить поддержку обычных локальных учетных записей, оставив только учетные записи Microsoft. После этого шага пользователи больше не смогут рассматривать свои приватные данные как полностью безопасные. От слова, совсем. С одной стороны, для среднестатистического порядочного пользователя Сети это скорее плюс. С другой стороны, угнетает сознание того, что вся твоя частная жизнь может стать не только твоей, да и не совсем частной. Благо это или зло - решайте сами.
Приложение 1. Алгоритм получения ключа шифрования SAM из ключа Syskey.BYTE hash[16], pDecodedData[32]; static BYTE samc1[]="!@#$%^&*()qwertyUIOPAzxcvbnmQQQQQQQQQQQQ)(*@&%"; static BYTE samc2[]="0123456789012345678901234567890123456789"; //Generate decrypt key Md5Init(); Md5Update(pSamSessionKey+8,16); Md5Update(samc1,0x2F); Md5Update(syskey,16); Md5Update(samc2,0x29); Md5Final(hash); //Decrypt memcpy(pDecodedData,pSamSessionKey+24,32); Rc4SetKey(hash,16); Rc4Decrypt(pDecodedData,32); //Check sign Md5Init(); Md5Update(pDecodedData,16); Md5Update(samc2,0x29); Md5Update(pDecodedData,16); Md5Update(samc1,0x2F); Md5Final(hash); if( memcmp(pDecodedData+16,hash,16)==0 ) { memcpy(pDecodedSamSessionKey,pDecodedData,16); return TRUE; } return FALSE; Приложение 2. Расшифровка Syskey из реестра.BOOL DecryptSyskey(LPCTSTR szJD, LPCTSTR szSkew1, LPCTSTR szGBG, LPCTSTR szData) { BYTE p[]={0xb,0x6,0x7,0x1,0x8,0xa,0xe,0x0,0x3,0x5,0x2,0xf,0xd,0x9,0xc,0x4}; BYTE pEncryptedKey[16]; if( !szJD || !szSkew1 || !szGBG || !szData ) return FALSE; //convert to binary _stscanf_s(szJD,_T("%X"),(LPDWORD)&pEncryptedKey[0]); _stscanf_s(szSkew1,_T("%X"),(LPDWORD)&pEncryptedKey[4]); _stscanf_s(szGBG,_T("%X"),(LPDWORD)&pEncryptedKey[8]); _stscanf_s(szData,_T("%X"),(LPDWORD)&pEncryptedKey[12]); //Permutate for( int i=0; i<16; i++ ) m_pSyskey[i]=pEncryptedKey[p[i]]; return TRUE; }
Документ доступен для свободного распространения |