Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2 | | ДОСТУПНЫЙ ОТДЫХ
Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2
Интересное

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

В данной статье узнаем про функцию crypt, узнаем как подбирать пароли к ZIP архиву с незашифрованными именами файлов, познакомимся с утилитой xortool, а так же разберемся с генератором псевдослучайных чисел. Предыдущие статьи на эту тему:

Часть 1 — Кодировки, шифр сдвига, брут хешей и создание картинки с помощью PIL python.

Организационная информацияСпециально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.

Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

ELF64 — PID encryption
Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Смотрим исходный код. Программа принимает в качестве аргумента строку и сравнивает ее с тем, что вернет функция cryрt от РID программы и строки «$1$awesome».

Функция cryрt — библиотечная функция, которая используется для вычисления хеша пароля. На выходе функции не просто хеш, а строка текста, которая также содержит соль, используемый хеш-алгоритм и параметры, с которыми был получен хеш, такие, как количество раундов и другие опции.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Данная функция включена в языки программирования Perl, PHP, Pike, Python и Ruby. Таким образом нужно угадать PID, с которым будет запущена программа. Подключившись по SSH видим, что нам дают программу, ее исходник, и файл с паролем.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

В Linux каждое новое запущенное приложение будет получать наиболее приближенный инкрементированое свободное значение PID. К примеру, несколько раз подряд выполним ps. PID с каждым разом инкременитруется.

Читать  Игривый взрослый пес уже 9 лет ждет в приюте (6 фото)

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Так можно посчитать хеш от любого свободного PID, и с этим значением в качестве аргумента бесконечно запускать программу. Давайте вомем PID, к примеру 30000 и выполним функцию crypt. Я сделаю это в python.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Теперь запустим бесконечный цикл выполнения программы.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

И спустя минуту, получаем облочку, откуда читаем пароль.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

File — PKZIP
Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Скачиваем файл, который нам дают. Это ZIP архив, защищенный паролем. Давайте переберем пароль. Так как имена файлов не зашифрованы, сделаем это утилитой fcrackzip, а в качестве словаря возьмем rockyou.txt.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Разархивировав, получаем текстовый файл, где написано, что ответом является пароль от архива.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Known plaintext — XOR
Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Нам дают зашифрованную с помощью XOR BMP картинку. Так как у нас использовался XOR (предполагаю с ключем малой длины) и имеется большой шифртекст, то можно использовать xortool.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Таким образом xortool считает, что наиболее вероятная длина ключа 6. Попросим его определить ключ.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Отлично. Ключ определен, но xortool уже сам расшифровал файл и сохранил в дирректорию xortool_out.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Code — Pseudo Random Number Generator
Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Нам дают программу, с помощью которой зашифрован файл, а так же сам файл. К тому же говорят, что шифрование происходило в декабре 2012. Давайте рабирать код.

В самом начале программы запоминается текущее время (точнее пройденное с 1 января 1970). Далее проверяется наличие параметра программы — путь к файлу.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Далее этот файл открывается для чтения и создается новый файл для записи. Дескрипторы обоих файлов передаются в функцию crypt_file.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

В crypt_file функция genere_key() вовращает ключ 32 байта, который используется для XOR шифрования файла. Результат шифрования записывается в новый созданный файл.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Ключ состаявляется псевдослучайным образом. Из представленного алфавита на каждом шаге выбирается значение взависимости от значения holdrand, которое также изменяется на каждом шаге, при этом в самом начале оно равно текущему времени.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Таким образом, нам нужно нам нужно сгенерировать возможные ключи. Начальный код на python выглядит так.
keys = []
charset = «abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789»
l = len(charset)
holdrand = None

def Rand():
global holdrand
holdrand = holdrand * 214013 + 2531011
return ((holdrand >> 16) & 0x7fff)

Читать  Сколько всего в мире золота - подсчитали ученые

def genere_key():
key = «».join( [ charset[Rand()%l] for _ in range(32) ] )
keys.append(key)

start = ?
fin = ?

for ts in range(start, fin):
holdrand = ts
genere_key()

Теперь разберемся границами времени. Так как шифрование производилось в декабре 2012, то нам нужно перебрать все возможные значения от 1 до 31 декабря.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

start = 1354320000
fin = 1356998400

С границами определились, но ключей все равно будет очень много. Благо в файле сохранилось его разрешение — это bz2.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

То есть первые три байта файла должны быть “BZh”, четверым должен быть один из символов от “1” до “9”, и следующие шесть байт — 0x314159265359. Допишем для ключей фильтр. Для этого нам нужны первые байты шифртекста.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

def key_filter(key):
ctext = «x23x17x5dx70x5ax11x6dx67x37x08»
BZh = «BZh»
sign = «».join( [ chr(ord(ctext[i])^ord(BZh[i])) for i in range(3) ] )
byte4 = «».join( [ chr(ord(ctext[3])^ord(i)) for i in «123456789» ] )
bytePI = chr(ord(ctext[4])^0x31)
if sign in key[:3] and key[3] in byte4 and key[4] in bytePI:
print(key)

И получим всего один ключ.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

И с помощью того же xortool можно проксорить файл с ключем.

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2

Таким обазом вы расшифровали архив.

Вы можете присоединиться к нам в Telegram. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
Источник

I heart FeedBurner