Исследование IBM Rational AppScan

Discussion in 'Реверсинг' started by neprovad, 5 Jan 2009.

  1. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    900
    Likes Received:
    275
    Reputations:
    59
    Исследование IBM Rational AppScan 7.7

    О программе
    Продукт IBM Rational AppScan - это модуль для автоматического тестирования безопасности Web-приложений, который непрерывно в автоматическом режиме просматривает Web-приложения, проверяет их на наличие проблем с безопасностью и формирует пригодные для практического использования отчеты с рекомендациями по устранению проблем, чтобы упростить процесс внесения исправлений.
    IBM Rational AppScan Standard Edition предоставляет следующие возможности:
    * Поддержка базового уровня защищенности: включая защиту от угроз, определенных в классификации угроз WASC, например SQL-injection, XSS и переполнение буфера.
    * Широкий охват приложений: включает сканирование интегрированных Web-служб, а также выполнение и синтаксический анализ JavaScript (в том числе Ajax).
    Функции настройки и расширения: инфраструктура AppScan eXtension Framework позволяет сообществу пользователей совместно использовать и разрабатывать подключаемые модули с открытым исходным кодом.
    * Расширенные рекомендации по внесению исправлений: отображается исчерпывающий список задач, которые необходимо решить для устранения проблем, выявленных при сканировании.
    Автоматизированные функции для контроля вторжений: инструменты тестирования с расширенными функциями и инфраструктура Pyscan дополняют ручное тестирование, обеспечивая более высокий уровень эффективности и производительности.
    * Отчетность о соответствии нормативным требованиям: поставляемые в комплекте 40 отчетов о соответствии, в том числе стандарт безопасности данных PCI, ISO 17799 и ISO 27001, а также Basel II.
    Такая вот информация, от себя добавлю что это еще один сканер web-уязвимостей, требующий регистрации. Ну и конечно же программа работает с ограничениями и для всеобъемлющего сканирования нам потребуется полная лицензия. Приступим..

    Подготовительный этап
    Скачаем программу Страница скачивания IBM AppScan 7.7 - Потребуется регистрация.
    прямые ссылки - AppScan 7.7.part1, AppScan 7.7.part2
    и установим все обновления. После этого версия продукта будет иметь значение 7.7.738. На этом этапе может потребоваться лицензия. Пробную можно получить от самих разработчиков, причем бесплатно.
    Итак, считаем что лицензию, пусть и временную, мы получили.
    Заглянем в меню Help-License – видим, что лицензия Demo и имеются некоторые параметры, о значении которых мы смутно можем догадываться. Текстовый поиск по папке, куда все установлено, дает ответ - лицензия находится в папке License и имеет читабельный вид. Обращаем внимание на большое число, видимо это подпись файла. Теперь найдем ту библиотеку или приложение, что считывает данные этой лицензии. Для этого ищем текстовым поиском по всем файлам в папке куда все установлено, строку FIX_RECOMMENDATION_ALL. Находим такую в файле engine_control.dll. Грузим эту библиотеку в PEiD, сканируем плагином Kanal, последний выдает интересный результат – большие числа и не менее интересные функции в импорте.
    [​IMG]

    Экспорт и импорт Engine_control.dll
    Загрузим библиотеку в дизассемблер. Будем использовать для этой цели IDA. После нескольких минут работы автоанализа видим - исследуемая библиотека содержит большое количество говорящих «имен». В импорте мы видим DSA_verify, это дает нам право считать, что та самая подпись файла лицензии основывается на алгоритме DSA.
    Code:
    .idata:67BF65CC ; Imports from LIBEAY32.dll
    .idata:67BF65CC                 extrn __imp_DES_set_key_checked:dword
    .idata:67BF65D0                 extrn __imp_DES_ecb3_encrypt:dword
    .idata:67BF65D4                 extrn __imp_DSA_free:dword ;
    .idata:67BF65D8                 extrn __imp_DSA_verify:dword ;
    .idata:67BF65DC                 extrn __imp_BN_hex2bn:dword ;
    .idata:67BF65E0                 extrn __imp_DSA_new:dword ;
    .idata:67BF65E4                 extrn __imp_RAND_seed:dword ;
    .idata:67BF65E8                 extrn __imp_SHA1:dword  ;
    Разберемся, куда ведет проверка и как она реализована. К адресу 67BF65D8 ведет только одна ссылка с 67BA4272, а оттуда на
    Code:
    .text:67B88AE4                 call    DSA_verify
    и
    .text:67B88B9D                 call    DSA_verify
    Причем оба вызова приходятся на одну функцию, которая возвращает результат Boolean. Для наглядности переименуем всю функцию в verify_sign
    Code:
    .text:67B892C8                 call    verify_sign
    .text:67B892CD                 test    al, al
    .text:67B892CF                 jnz     loc_67B893E6
    Можно предположить что это и есть место для патча. Запомним его.
    Затем обратим внимание на экспорт, названия говорят сами за себя, например bool __thiscall LicenseEngine::isLicenseOk(enum LicenseVerifier). Поставим тут бряк [адрес 67B19280] (далее станет ясно что это «верхний» уровень обертки вокруг verify_sign).
    Но остается нерешенным вопрос – что должно быть в файле лицензии? Если обойти проверку подписи, то мы её просто проигнорируем, но содержимое нам не проигнорировать, так как оно активно используется для определения лимитов в работе (такие параметры как IP, сроки работы приложения и т.д.). Поэтому займемся сбором информации.

    Собираем свою лицензию
    Вспоминаем, что при установке есть возможность получить временную лицензию непосредственно от разработчиков. Получив один раз такую лицензию, рассмотрим её содержимое:
    Code:
    ProductName=AppScan
    Version=7.0
    Type=full
    Features=FIX_RECOMMENDATION_ALL
    StartDate=02/05/2007
    EndDate=02/12/2010
    SerialNumber=0
    Organization=Demo
    ContactName=Demo
    MacAddresses=any
    DiskIds=any
    HostId=any
    AllowUpgrade=yes
    SubProduct=auditor
    Class=end-user
    Restrictions=<host=any> <ip=10.10.10.11>
    Signature=302C021441DAC0A9EABA0036089DE9FCE163E029E1D67D3E02147BDD28C2907EAC4863311CBDA8843677C9B63260
    
    Некоторые значения интуитивно понятны, например, организация или контактное имя, однако так сказать нельзя об остальных параметрах. Включаем отладчик встроенный в IDA или запускаем OllyDbg (кому что нравится), ждем срабатывания бряка LicenseEngine::isLicenseOk и начинаем запоминать, какие значения ожидает от нас программа для каждого параметра файла лицензии. Будем записывать сразу нужные нам параметры:
    Code:
    ProductName=AppScan
    Version=5.0
    Type=full
    Features=all
    StartDate=01-05-2009
    EndDate=12-31-2099
    SerialNumber=0
    Organization=forum.antichat.ru
    ContactName=neprovad
    MacAddresses=any
    DiskIds=any
    HostId=any
    AllowUpgrade=yes
    SubProduct=auditor
    Class=enterprise
    Restrictions=<host=any> <ip=any> <domain=any> <mask=any>
    Signature=302C021441DAC0A9EABA0036089DE9FCE163E029E1D67D3E02147BDD28C2907EAC4863311CBDA8843677C9B63260
    
    В целом ничего сложного для восприятия, все вполне логично. Сигнатуру скопируем от предыдущей лицензии, пусть будет. Файл с лицензией сохраним в папку License. Он нам еще пригодится.

    Модификация engine_control.dll
    Теперь, когда лицензия готова, осталось внести изменения в библиотеку. Перейдем к адресу 67B88AF8 и заменим байт 17h на 00h.
    Code:
    .text:67B88AF7                 jnz     short loc_67B88B10
    Таким образом при любом возвращаемом значении функции DSA_Verify, переход будет идти на ветку кода, сигнализирующего об успешной проверке подписи. Сохраним изменения и проверим свою работу. Оп, работает, в окне об используемой лицензии значится Enterprise – «все включено». Защита ПО, занимающего в дистрибутиве более 100 Мб, взломана заменой одного байта. Получилось вполне элегантно :)

    P.S.
    Если выглядит достойно, прошу перенести в статьи. Любая критика только приветствуется.
     
    #1 neprovad, 5 Jan 2009
    Last edited: 5 Jan 2009
    5 people like this.
  2. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    молодец.)
     
  3. PaLb14

    PaLb14 Member

    Joined:
    29 Feb 2008
    Messages:
    25
    Likes Received:
    6
    Reputations:
    0
    Интересно, надо попробывать, тока прога прилично весит(
    Почему в статьи не ушло?!
     
  4. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    900
    Likes Received:
    275
    Reputations:
    59
    объем приличный, это действительно так.
    отчего не в статьях не знаю, может мало материала, а может еще не засылалось в соответствующий раздел
     
  5. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    >> отчего не в статьях не знаю, может мало материала, а может еще не засылалось в соответствующий раздел

    В статьи беспонту перемещать... Лучше чтобы тематические статьи были в тематических разделах, так хоть посещающий контингент будет читать. так что все ок, хоть есть шанс получить нормальные комментарии, а не нечто вроде "афтар маладец", "ничего не понял, но плюсег" и тому подобное. да и в "Статьях" нет градации по тематике, что не есть хорошо.
     
    #5 0x0c0de, 20 Jan 2009
    Last edited: 20 Jan 2009
    2 people like this.
  6. Gryphusa

    Gryphusa New Member

    Joined:
    21 Jan 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    AppScan 7.8

    Hello Neprovad,

    I've seen that in the new version 7.8 of this product steps to follow to get a valid license is not possible, IBM has included a new system and I can not figure out how to unlock,

    Thanks,
     
  7. PaLb14

    PaLb14 Member

    Joined:
    29 Feb 2008
    Messages:
    25
    Likes Received:
    6
    Reputations:
    0
    А может, закрепить тему статьи, как в SEO ?
     
    2 people like this.
  8. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    тема не раскрыта - убрать листинги, картинки и т.д. от неё ничё не останется, смысл тогда? неподкованный человек ничего не черпнёт нового из неё, т.к. написано для среднего уровня. вообщем, совершенствуйся, ты можешь и лучше.
     
    #8 Hellsp@wn, 22 Jan 2009
    Last edited: 22 Jan 2009
    2 people like this.
  9. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    900
    Likes Received:
    275
    Reputations:
    59
    буду стараться, спасибо за отзыв
     
    1 person likes this.