Сейчас на форуме: zds, -Sanchez- (+9 невидимых)

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

Ранг: 15.8 (новичок), 1thx
Активность: 0.01=0.01
Статус: Участник

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

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

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

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

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

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

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

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

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




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

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

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

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 15.8 (новичок), 1thx
Активность: 0.01=0.01
Статус: Участник

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

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

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

Гугл IDA FLIRT.



Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

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

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

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

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

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

-----
2 оттенка серого




Ранг: 15.8 (новичок), 1thx
Активность: 0.01=0.01
Статус: Участник

Создано: 02 июня 2018 16:16 · Поправил: c0deh1der
· Личное сообщение · #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. С помощью него можно декодировать любой файл меньшего размера... но ведь не по фен шую))



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

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

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

-----
старый пень





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

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

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

-----
2 оттенка серого




Ранг: 15.8 (новичок), 1thx
Активность: 0.01=0.01
Статус: Участник

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

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

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

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

f13nd,

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



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 02 июня 2018 18:58
· Личное сообщение · #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 копаете, может подскажете есть ли для его девайсов генераторы кодов активации фич?

-----
старый пень





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

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

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

-----
2 оттенка серого




Ранг: 15.8 (новичок), 1thx
Активность: 0.01=0.01
Статус: Участник

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

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

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

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


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 02 июня 2018 21:01 · Поправил: f13nd
· Личное сообщение · #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

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

-----
2 оттенка серого




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

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

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

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

-----
старый пень





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 02 июня 2018 23:47
· Личное сообщение · #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.

-----
2 оттенка серого




Ранг: 15.8 (новичок), 1thx
Активность: 0.01=0.01
Статус: Участник

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

Спасибо! ))))))))


 eXeL@B —› Основной форум —› Опознать тип шифрования CryptoPP
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати