eXeLab
eXeL@B ВИДЕОКУРС !

Курс видеоуроков «Программирование и взлом 2O18»
(актуальность: июнь 2018)
Свежие инструменты, новые видеоуроки!

  • 300+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: hypn0, freudz (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Опознать тип шифрования CryptoPP
Посл.ответ Сообщение
c0deh1der

Ранг: 11.1 (новичок)
Статус: Участник

Создано: 2 июня 2018 08:08 · Поправил: c0deh1der New!
· Личное сообщение · #1

Помогите опознать какой тип шифрования используется.

Опишу принцип:

Вижу в отладчике, что создается дамп 1024 байта (0x400)
и далее берется зашифрованный файл и каждый байт расшифровывается типом XOR
только не побайтно а сразу по 4 байта (DWORD), но это в принципе никакого значения не имеет.
Расшифровывается блоками по 256 байт(0x100), то есть 4 куска.

Библиотека CryptoPP используется.

Так бы, конечно просто было бы вытащить дамп, ключа, но он генерируется всего 1024 байта и так весь файл. Файл может быть большой и хотелось бы поняв что за алгоритм, найти исходный ключ, который скорее всего 16 байт, на базе которого и генерятся эти блоки.

Может есть методика какая, как по каким-то опорным точкам определить тип шифрования? )

P.S. Добавлю по наблюдениям: дамп для XOR создается сначала первые 16 байт, потом после нескольких скачков по функциям остальные 1008 байт. Вижу как сразу весь кусок добавлется.
И шифрование видно что симметричное, так как в разных файлах одни и те же байты в одних и тех же местах зашифрованные байты одинаковы. Рисунок "матрицы" совпадает.

Рядом в коде вижу такие штуки типа: TestAuthenticatedSymmetricCipher
ajax


Ранг: 308.0 (мудрец)
Статус: Участник
born to be evil

Создано: 2 июня 2018 08:33 New!
· Личное сообщение · #2

c0deh1der
сигнатуры для ида поищи или сделай сам. криптопп в сырках на офсайте.
c0deh1der

Ранг: 11.1 (новичок)
Статус: Участник

Создано: 2 июня 2018 09:57 New!
· Личное сообщение · #3

Много там разного находится, не относящегося к делу. Поэтому проги для сканирования сигнатур не катят. Про CryptoPP это я тоже знаю, но библиотека поддерживает такое кол-во видов, что если только пробовать каждый, компилить и потом идой смотреть как он выглядит чтобы сравнить))))))) Мне кажется это садомазо)))
Archer


Ранг: 1935.8 (!!!!)
Статус: Модератор
retired

Создано: 2 июня 2018 10:36 New!
· Личное сообщение · #4

c0deh1der
ajax пишет:
сигнатуры для ида

Гугл IDA FLIRT.
hypn0

Ранг: 10.2 (новичок)
Статус: Участник

Создано: 2 июня 2018 13:28 New!
· Личное сообщение · #5

c0deh1der А если попробовать Crypto Checker? (CC by Aleph)
Он хоть всякие sbox-ы и прочие константы покажет. И в зависимости от того что покажет дальше разбираться.
Можно и Detect It Easy попробовать, но CC больше криптосигнатур знает.

А вообще файл в студию. Людям тоже интересно посмотреть.
f13nd

Ранг: 7.7 (гость)
Статус: Участник

Создано: 2 июня 2018 14:37 · Поправил: f13nd New!
· Личное сообщение · #6

Факт того, что при одинаковых данных на входе каждый раз те же данные на выходе, указывает не на симметричный алгоритм, а отсутствие соли. Если известно что за библиотека, я бы посоветовал найти ее в виде dll и по константам/строкам выяснить имена используемых функций. Это был бы самый простой и быстрый способ.
c0deh1der

Ранг: 11.1 (новичок)
Статус: Участник

Создано: 2 июня 2018 16:16 · Поправил: c0deh1der New!
· Личное сообщение · #7

Попробовал FLIRT, и кучу других плагинов, попробовал CC by Aleph.
Находят очень много всего)))
Теперь еще сложнее. Все дело в том, что в этой библиотеке много разных функций для разных задач. Например, есть работа с HASP, но он нам не нужен. Есть разные CRC и прочее.

f13nd, обычно шифрование каждый последующий байт шифрует на основе предыдущих данных. Таким образом изменение одного байта приводит к изменению всего файла после этого байта. Здесь же такого нет.

В архиве, расшифрованная dll, взятая из памяти. и файлы .cfg зашифрованные и расшифрованные для двух разных версий (для сравнения).
(.cfg читает эта dll и расшифровывает в памяти для себя)

если IDA открыть, то начинается с чтения этого файла тут: sub_12431960
sub_12438860 - собирается ключ
3E FC D2 98 C7 AF 7A D5 36 B0 3E 9A 66 0E 19 5B
D9 C6 14 3B 44 10 AF 48 83 3B 3C 3E FC D2 98 C7
два по 16 байт
думаю это ключ и IV
только пробовал декодировать используя их всякими утилитами - не катит.

Во благо народного достояния, готов отблагодарить немного, если поможете. А то я уже все декодировал, нужное так из памяти выдрал. Но дело принципа не дает мне покоя)))

Я подсунул вместо cfg ему файл с нулями размером в 10 метров, и из IDA выдрал созданный декодированный дамп точно такого же размера, по сути являющийся xor. С помощью него можно декодировать любой файл меньшего размера... но ведь не по фен шую))
r_e

Ранг: 543.1 (!)
Статус: Модератор

Создано: 2 июня 2018 16:55 New!
· Личное сообщение · #8

c0deh1der
Это какой-то потоковый крипто. Вероятно, производный от блокового.
Если бы вы выложили софт - было бы гораздо проще.
f13nd

Ранг: 7.7 (гость)
Статус: Участник

Создано: 2 июня 2018 17:28 · Поправил: f13nd New!
· Личное сообщение · #9

c0deh1der
То есть ты получил 10метровый файл, поксорив на который зашифрованный файл ты получаешь оригинал? Очень сомневаюсь, что это имеет отношение к серьезным криптографическим библиотекам.
c0deh1der

Ранг: 11.1 (новичок)
Статус: Участник

Создано: 2 июня 2018 18:05 New!
· Личное сообщение · #10

r_e,
Дистриб: http://catcut.net/ACwv

Та dll, которая присутствует в оригинале, внутри содержит зашифрованную dll, которую я выложил в предыдущем посту. Я ее кладу рядом c родной и запускаю lecroySparqapp.exe с отладкой расшифрованной dll. И все работает.
Все это в папке: c:\Program Files\LeCroy\XStream\

Сразу над пофиксить IsDebuggerPresent().

f13nd,

В том и дело ж-)
В предыдущей версии они пользовали Blowfish. И вроде все было понятно, но когда их рассекретили, они побыстрому "пофиксили" и сделали какую-то муть, что не понятно - вроде и шифрование и вроде где-то кто-то кого-то нае^^^.
r_e

Ранг: 543.1 (!)
Статус: Модератор

Создано: 2 июня 2018 18:58 New!
· Личное сообщение · #11

c0deh1der
Не вижу выше ни либ ни имен, но криптопп нашлось только в одном файле ConfigMgrSvr.dll.
На первый взгляд шифрование идет через
CryptoPP::TF_VerifierImpl<CryptoPP::TF_SignatureSchemeOptions<CryptoPP::TF_SS<CryptoPP::PKCS1v15,CryptoPP::SHA1,CryptoPP::RSA,int>,CryptoPP::RSA,CryptoPP::PKCS1v15_SignatureMessageEncodingMethod,CryptoPP::SHA1>>

Надеюсь смогете понять как это в с++ будет. Параметры инициализации для нее в sub_100AE481

Добавлено спустя 1 минуту
Кстати, раз уж вы Lecroy копаете, может подскажете есть ли для его девайсов генераторы кодов активации фич?
f13nd

Ранг: 7.7 (гость)
Статус: Участник

Создано: 2 июня 2018 19:07 New!
· Личное сообщение · #12

Таблицу формирует в 124080C0, по ней тупоксорит 1024байта в 12406168. Если это тебя вдохновляет на подвиг, можешь разобраться как, но я бы ограничился этим 10мб файлом. Смотря для чего это тебе надо.
c0deh1der

Ранг: 11.1 (новичок)
Статус: Участник

Создано: 2 июня 2018 19:51 New!
· Личное сообщение · #13

f13nd,
да но что это за алгоритм? )))

Так то понятно что все работает как-бы... но топик называется иначе)

| Сообщение посчитали полезным: sefkrd

f13nd

Ранг: 7.7 (гость)
Статус: Участник

Создано: 2 июня 2018 21:01 · Поправил: f13nd New!
· Личное сообщение · #14

c0deh1der такая хурма, как я уже говорил, к серьезной криптографии относиться не может. Поэтому что за алгоритм? - любительская поделка, с характерным "ты состаришься пока разберешь эти два мегабайта кода". Мне нечто подобное иногда попадается в устройствах управления, но скорей как защита от дурака и потому что не всякий контроллер потянет что-то сложней за приемлемое время посчитать. Ну скорей не подобное, а в точности такое же

Code:
  1. proc xxxx_decrypt_encrypt,pData,nSize,pCounter,pPoly1,nPoly2,nPoly3
  2.                     pushad
  3.                     mov esi,[pCounter]
  4.                     mov edi,[pPoly1]
  5.                     xor ebx,ebx
  6.             .next: .if ebx < [nSize]
  7.                         .if DWORD[esi] = 0
  8.                               test DWORD[edi],1b
  9.                              .if ZERO?
  10.                                    mov eax,[nPoly2]
  11.                                    add DWORD[edi],eax
  12.                              .else
  13.                                    mov eax,[nPoly3]
  14.                                    xor DWORD[edi],eax
  15.                              .endif
  16.                               ror DWORD[edi],1
  17.                               mov DWORD[esi],4
  18.                         .endif
  19.                          mov ecx,4
  20.                          sub ecx,DWORD[esi]
  21.                          imul ecx,ecx,8
  22.                          mov eax,DWORD[edi]
  23.                          shr eax,cl
  24.                          mov edx,[pData]
  25.                          xor BYTE[edx + ebx],al
  26.                          inc ebx
  27.                          dec DWORD[esi]
  28.                          jmp .next
  29.                    .endif
  30.                     popad
  31.                     ret
  32. endp

просто по какому-то закону генерируется бесконечная последовательность чисел, на которые данные ксорятся. У этого алгоритма нету названия, его придумал азиатский инженер.
r_e

Ранг: 543.1 (!)
Статус: Модератор

Создано: 2 июня 2018 22:12 New!
· Личное сообщение · #15

f13nd пишет:
такая хурма, как я уже говорил, к серьезной криптографии относиться не может.

Это неверное утверждение. Такое шифрование называется "гаммирование" и обладает той же стойкостью что и задающий генератор.
f13nd

Ранг: 7.7 (гость)
Статус: Участник

Создано: 2 июня 2018 23:47 New!
· Личное сообщение · #16

r_e спасибо, не слыхал даже. В таком случае скорей всего один из high speed stream ciphers: ChaCha (8/12/20), Panama, Sosemanuk, Salsa20 (8/12/20), XSalsa20. Одним словом Recommended for applications where speed is more important than confidence.
c0deh1der

Ранг: 11.1 (новичок)
Статус: Участник

Создано: 3 июня 2018 07:40 New!
· Личное сообщение · #17

Спасибо! ))))))))
 eXeL@B —› Основной форум —› Опознать тип шифрования CryptoPP

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS