Поиск криптоалгоритмов

Тема в разделе "WASM.CRYPTO", создана пользователем binomus, 1 июл 2008.

  1. binomus

    binomus New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2008
    Сообщения:
    2
    Возникла проблема с поиском криптоалгоритмов в программах без исходников. Посмотрел несколько утилит для определения крипторов (СС, PeID/kanal, Cryto Searcher), плагин findcrypto2 для IDA. В них поиск производится по характерным константам. Как можно искать
    алгоритмы без привязки к константам, есть ли какой-нить семантческий поиск с элементами искусственного интеллекта или что-то в таком духе?
     
  2. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    binomus
    IDA + мозги?
     
  3. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    Это и руками то совсем не трудно делать. Пока что нет ни одного шифра, в котором бы не использовался XOR и сдвиги-перестановки. Он смешивается либо с ADD и ROL/ROR (если нет циклических сдвигов, то сдвиги в обоих направлениях должны присутствовать или как минимум сдвиг вправо) где почти всегда присутствуют редкие легко отличимые константы, либо с поисками по таблицам, которые либо присутствуют в виде случайно выглядящего мусора с заранее известными байтами (например 63 7C 77 для AES), либо строятся по известным константам, опять же с применением тех же самых операций. RC4 легко отличить по массиву из 256 байт который заполняется числами от 00 до FF и по трём переставленным байтам и двум индексным байтам, а все остальные шифры - по их константам и таблицам.
     
  4. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Ruptor
    если прога не накрыта протом типа вм прота, гы, особенно по крипто алгам. Удачи разобрать=))
     
  5. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    k3internal Если код защищён, то конечно тривиальные утилиты бесполезны, но для расшифровки и деобфускации кода тоже есть инструменты, да и мозги могут реально помочь их написать без всякой удачи.
     
  6. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Поскольку компиляторы их не используют, то эти инструкции всегда служат маркерами либо ассемблерной вставки (оптимизация), либо защиты. Искать лучше всего в IDA.

    Лучше не пользоваться. Ищет мало и, большей частью, неверно.
     
  7. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    gazlan Используют. MSVC и Intel Compiler их используют в виде intrinsic functions _lrotl и _lrotr, а GCC к тому же автоматически распознаёт комбинации сдвигов и заменяет их на ROL/ROR, но кроме шифрования они почти нигде не используются.
     
  8. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    ThanX. Не знал. Тем не менее, полагаю что ROL/ROR все же пригодны как маркеры.Статистики не вел, но в PE файлах от M$/Borland эти инструкции попадались только в защите (крипто) и на глаз, это был код, написанный "вручную". ELF не анализировал.
     
  9. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    ROL / ROR не единственные действия в надежном крипторе. Еще же есть простенькие фокусы от банальной подмены истинного смещения ложным, которые выполняются обычным mov, и обязательно перед операцией ROL, до прочих мелких, но непреодолимых для программ такого толка решений. Имхо только руками, как указал выше Ruptor, используя такие программы только как вспомогательные, да и то с оглядкой.

    Конечно это не относится к т.н. распаковщикам, заточеным под уже известные протекторы.
     
  10. n0hack

    n0hack New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2008
    Сообщения:
    71
    Криптографические алгоритмы выдают циклы с небольшим числом итераций с простыми математическими и логическими операциями над небольшими блоками данных. Для повышения производительности циклы часто разворачивают. Конечно, не всякий шифр можно так распознать, RC4 к примеру.