Authenticode

Тема в разделе "WASM.WIN32", создана пользователем dmk, 19 апр 2006.

  1. dmk

    dmk New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    20
    Адрес:
    Russia
    Доброго времени суток!



    а никто случайно не встречал какую-нить утилиту (ну или просто набор исходников) для проверки САБЖа у РЕ фалйов?

    нужно разобраться как такое сделать без использования виндовой CryptoAPI (желательно на С)



    если вдруг у кого-то есть ссылка на полезные доки/статьи, буду благодарен!
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    The ChkTrust program checks the validity of a signed file by:



    1. Extracting the PKCS #7 signed-data object.

    2. Extracting the X.509 certificates from the PKCS #7 signed-data object.

    3. Computing a new hash of the file and comparing it with the signed hash in the PKCS #7 object.



    If the hashes agree, ChkTrust then verifies that the signer's X.509 certificate is traceable back to the root certificate and that the correct root key was used. If all these steps are successful, it means that the file has not been tampered with, and that the vendor who signed the file was authenticated by the root authority.



    Форматы стандартизированые (исходники должны быть), какие участки PE попадут в хеш надо см. в отладчике ф-цию WinVerifyTrust
     
  3. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    bogrus

    ChkTrust, как и остальные утилиты MS работают строго через cryptoapi
     
  4. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    разумеется, что разобраться в проверке я и предлагаю ему - посмотреть как это делает MS (основной алгоритм был приведен выше), я сам когда-то там рылся



    т.е. запустить в отладчике ChkTrust (это можно сказать - "пустой" экзешник с вызовом одной ф-ции), поставить бряк на WinVerifyTrust и потом на бумажечку выписывать подробный алгоритм, по моей памяти он должен быть примерно таким:



    - размапить или прочитать PE (MSPECOFF.PDF)

    - вытянуть из PE_директории_сертификата PKCS #7

    - вытянуть из PKCS #7 сертификат X.509

    - вытянуть из сертификата X.509 публичный RSA ключ

    - вытянуть из PKCS #7 ЭЦП

    - расшифровать из ЭЦП хеш1 используя RSA ключ

    - посмотреть в отладчике какие участки PE попадают в хеш-объект

    - посчитать от них MD5 или SHA1

    - сверить посчитаный хеш2 с хешем1

    - если ок, то ещё сверить подпись сертификата X.509 с корневым (тем кому MS доверяет их подписывать)



    * - на PKCS #7, X.509, RSA, MD5 или SHA1 описание и исходники без cryptoapi должны в сети быть
     
  5. dmk

    dmk New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    20
    Адрес:
    Russia
    bogrus: огромное спасибо! этот как раз то, что мне было нужно...



    пинок в нужную сторону иногда оказывается намного полезнее, чем готовое решение!



    спасибо!