— Что это за странное чувство? — Внезапно закралась в голову мысль. — Как будто я безумно рад возможности снова использовать этот жёсткий диск…
Когда я подключил жесткий диск, волна азарта окончательно накрыла мой разум. Алгоритм начал работать, комп перезагрузился, а затем полностью перешёл в режим виртуальной машины с новой операционкой и прогами. Что ни говори, безумно удобная штука, стоит высунуть жесткий диск и на компе не останется даже следа от хакерской деятельности. Обычно для операционок Линукс используют флешки, но жесткий диск безопаснее, туда легче «вшить» системы защиты. Так, теперь главное не перепутать пароль, две ошибки — и он начнёт безвозвратное форматирование. Ну да, этот пароль я не забуду даже при смерти… Столько раз его вводил…
В момент, когда загрузилась операционка, я почувствовал, будто снова оказался дома, точнее, до дома меня отделяет всего одна надпись в консоли — startx!!! О… Да. До сих пор помню, как вручную прикручивал исходные коды на пустую консоль. Вот они, командные строки бэкдорчиков, тут мой любимый текстовый редактор с возможностью конвертации кода, о, а это грабер айпишников, который находит открытые порты… Наверное, это всё уже не работает, надо патчить, но всё равно так и хочется сказать — Hello, world!
После минутки приятных воспоминаний я открыл флешку, которую мне дал Санёк, и увидел — ЭТО. Именно ЭТО, потому что эта хрень настолько была изуродована обфускатором и шифрованием, что даже отдалённо не напоминала программный код. Чудо, если ЭТО вообще работает… Так, ладно, надо собраться. А это ещё что, чёрт возьми… Мать честная… Да это же 512-битное симметричное шифрование, я его только в мечтах видел. И как вишенка на дерьмовом торте — добавление недействующих конструкций и замена статистических данных на динамические, чтобы мои проги не смогли вычислить закономерности. Так, сначала попробую избавиться от обфускации, чекну закономерности по всем известным на данный момент алгоритмам.
Пока моя самописная прога сравнивала алгоритм обфускации ЭТОГО, со всеми известными, на данный момент, алгоритмами запутывания кода, мне написал Санёк через анонимный приватный чат. Удивительно, но этот защищённый чат, который мы настроили ещё лет семь назад, до сих пор работал. Надо будет убрать его из автозапуска…
— С возвращением в свободный мир. — В своей манере написал он.
— Я не буду спрашивать, из какой задницы ты достал этот код, но без дополнительной инфы я его не расшифрую.
— Подожди секунду, сейчас отправлю кое-что интересное. На флешку не стал закачивать, так безопаснее.
Как раз к этому моменту моя прога выдала, что значительных закономерностей с существующими алгоритмами обфускации — не найдено. Идеально, это ещё и авторский алгоритм запутывания кода… Просто шикарно, твою мать!
— Прими файл брат по клавиатуре. Наш общий знакомый по форуму, закинул троянчика на нужный комп, да не просто троянчика, а который засветил большую часть криптографического протокола, включая работу закрытого ключа.
— А не проще тогда с помощью трояна узнать пароль?
— Там одноразовые пароли, которые действуют одну минуту. Генерируются случайным образом по запросу, в соответствии с привилегиями сотрудника. В общем, там не всё так просто.
— Это секретная правительственная лаборатория? Что за контроль?
— В общем, изучи файл. Белым выделены не задействованные части кода, синим — задействованные, красным — предполагаемо-ключевые части кода. Но проблема в том, что основную работу по обработке запроса принял на себя автономный плагин, который отсылает данные куда-то вглубь сервака и там они уже обрабатываются. Поэтому троян оказался фактически бесполезным, во всяком случае, для меня.
Все мы знаем фразу ломать — не строить. Но в криптографии всё наоборот, намного легче строить, чем ломать. Ещё Шнайер сказал, что каждый способен составить защитный алгоритм, который он сам же не сможет взломать. Чертовски верно! Особенно, когда за тридцатку лет так и не появилось ничего принципиально нового, кроме банального брута. Кстати…
— Если я правильно понимаю, до того как сервак провёл аутентификацию пользователя, абсолютно весь код был зашифрован? — Торопливо я написал в чат.
— Ну да, там три фазы аутентификации. На первой, до обмена протоколами, там вообще всё зашифровано.
— Скинь мне полностью зашифрованный код, который отображается на первой фазе аутентификации.
— Окей… — Последовал ответ в чате через десяток секунд. — Вот он. Что ты с ним будешь делать?
— Очевидно же, что линейный или дифференциальный криптоанализ. Начну с линейного. Ты что, даже этого не знаешь?
— Да я больше по скриптам как-то…
— Ну ты и хацкер… — Тут же написал я ему в ответ. Терпеть не могу недохакеров, которые не знают криптографии. — Ладно, будет тебе ключ.
— О, узнаю нашего Макса. Я то хоть хацкер, а ты луркер вонючий=), это куда хуже. — С заветным смайлом в конце обозвал он. Санёк явно обрадовался, если я говорю, что ключ будет — значит, он будет.
— Кстати, ключ то будет, но что если система выдаёт сессионные ключи шифрования, или меняет их каждый день? — На всякий случай я уточнил.
— Это точно не сессионные ключи. Но насчёт замен — не знаю… — Явно поник Санёк.
— Ладно, не сцы. В крайнем случае, попытаюсь сделать обратное преобразование модульной арифметики, давно хотел попробовать этот полумифический метод.
— Понятие не имею чё это, но звучит круто. Рад, что ты не растерял хватку.
Суть линейного криптоанализа проста, если на случайный подбор ключа требуется пару миллионов лет, а тебе лень столько ждать, то можно просто снизить количество вариаций, находя закономерности между зашифрованным и расшифрованным кодом. Самое главное, тут целая куча кода, а значит можно выявить тысячи закономерностей, код почти на блюдечке… Но нет же, твою мать, «он больше по скриптам как-то», аж бесит. Сто раз ему говорил подтянуть знания в криптографии, это же основы основ.
Когда метод криптоанализа найден, дальше — дело техники, вернее скриптов. В левый столбец копируем зашифрованный код, в правый — этот же код, только расшифрованный, а дальше пьём чай и надеемся, что материнка не сгорит к чертям. Хотя, у меня стоит прога, которая отслеживает температуру центрального процессора, так что можно спокойно пить чай. Кстати, надо будет на днях почистить системник…
Переодевшись в свою стандартную домашнюю одежду с парочкой пятен, я заварил чай и вернулся к компу. Моя чудо-прога, к этому времени, выдала ошибку, вот чёрт, совсем забыл… Я же её лет пять не патчил… Ууу… Тогда это надолго, хотя…
— Санёк, у тебя нет актуальной проги для линейного криптоанализа? Мою надо патчить… Надо было, лет 5 назад.
— Подожди, чёто подобное у меня точно было. Вчера я скинул этот код одному парнишке, он продаёт проги, только своим. Сам он сыканул взяться, но скинул прогу.
— А, знаю таких. Продают проги специально для взлома, но сами как бы ни причём, и вообще белые пушистые, продают исключительно для тестирования безопасности. Ну-ну.
— Ну да, типа того, принимай файл. Но даже так, проги у него толковые, причём с гарантией, целый месяц может бесплатно патчить.
— О, как всё продуманно. А акций у него нет? Ну или подарочных сертификатов. Я уже вижу вывески: «подари жене трояна на 8 марта!». Или, «2 эксплоита по цене одного! Спеши! Акция длится 0day!».
— Ха-ха, очень смешно. В общем, распакуй и разберись. Он уверяет, что прога использует новые гибридные методы анализа. Комбинирует брут, линейный анализ, дифференциальный, и ещё кучу всяких уникальных методов сопоставления.
— Короче, я так понял, за каждое навороченное слово ты ему доплачивал штукарь зелёных. Ладно, посмотрим. При моих мощностях, без крутых навороченных программ, тут в лучшем случае две недели анализа.
— Вот… А он говорит, что этот срок можно уменьшить в 100 раз, если брать не мощностями, а качеством ПО. Кроме того, для его ПО нужно минимальное количество пар кода, опять же, из-за более высокого качества анализа.