Показано с 1 по 10 из 10.

Бронежилет для файрвола

  1. #1
    Junior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    30.03.2008
    Адрес
    Ангарск, Иркутская область
    Сообщений
    82
    Вес репутации
    71

    Бронежилет для файрвола

    Автор: Крис Касперски
    Дата: 14.02.2008

    Источник xakep.ru


    Очень часто антивирусы и брандмауэры превращаются из охотников в жертвы. В борьбе с активной малварью еще и не такое случается. И хотя разработчики всячески пытаются защититься от посягательств со стороны зловредного кода, воздвигая целый комплекс средств противовоздушной обороны, при схватке с грамотно спроектированным зловредным кодом они обречены на поражение. Как усилить защиту уже существующих антивирусов/брандмауэров, не вмешиваясь в их машинный код и не ковыряя исходные тексты, которых у нас все равно нет? Реально ли это вообще? Еще бы!
    Мужская часть населения еще помнит те давние время, когда антивирус (вместе со всеми базами и самой MS-DOS) умещался на одной «стерильной» дискетке с защитой от записи откуда его настоятельно рекомендовалось запускать. Запуск антивируса из-под зараженной операционной системы часто приводил к ложным негативным срабатываниям. То есть антивирус не находил даже известные ему вирусы, а все потому, что зловредный код слишком хорошо знал антивирус и модифицировал его код, отвечающий за распознавание заразы.
    Современные антивирусы на дискету уже не влезают и вынуждены сражаться с активной малварью, в арсенале которой помимо многочисленных маскировочных методов имеется и оружие возмездия. Аналогичным образом дела обстоят и с персональными брандмауэрами. Их тяжело пробить снаружи (то есть с удаленной машины), но легко отключить локально, внедрившись в адресное пространство брандмауэра или поигравшись с элементами управления путем эмуляции клавиатурного/мышиного ввода (атаки типа WM_).
    Конечно, разработчики всячески защищаются от нападок со стороны вредоносного кода (например, путем проверки целостности собственного тела). Однако получается у них не очень хорошо, и вообще создается впечатление, что они в первую очередь озабочены качеством детекции и количеством распознаваемых вирусов, то есть предпочитают нападать, а не обороняться. Вот только, вырвавшись вперед, они рискуют оказаться в плотном кольце окружения. «Независимые» обзоры также не уделяют защите никакого внимания, тестируя антивирусы/брандмауэры в лабораторных условиях.
    Проактивные технологии, проверяющие все открываемые файлы на лету, действительно имеют хорошие шансы остановить распространение заразы, поскольку малварь уничтожается еще до того, как получит управление. А вот автономные сканеры, запускаемые раз в несколько дней (а то и недель), намного более уязвимы и, как показывает практика, очень плохо справляются с поиском руткитов. А если вспомнить, что зловредный код часто распространяется через дыры в безопасности (антивирусами не контролируемые), их судьба становится совсем незавидной.
    Статья построена на основе анализа большого количества малвари. Мыщъх исследовал наиболее популярные техники противодействия антивирусам/брандмауэрам и разработал простые и эффективные «бронежилеты», пригодные для защиты уже существующих программ без какой бы то ни было их переделки. Поэтому не волнуйся: дизассемблер тебе не понадобится!

    Стратегические ракеты межпроцессорного назначения

    Как работает малварь? Какие приемы используются для ослепления защитных механизмов? Возможных способов очень много, и каждый день появляются все новые и новые. Чтобы навести в этом хаосе хотя бы какое-то подобие порядка, необходимо классифицировать основные методы, а также их производные. Тогда станет понятно, от кого и как нам обороняться.
    Порядка 80% зловредных программ открывают процесс-жертву API-функцией OpenProcess, получая (в случае успешного завершения операции) дескриптор процесса, передаваемый API-функции ReadProcessMemory. Последняя читает содержимое памяти процесса-жертвы и копирует его во внутренний буфер малвари, которая путем сигнатурного поиска пытается отловить все известные ей защитные программы (список активных процессов можно получить средствами TOOLHELP32). Если подобная программа обнаруживается, малварь смотрит в свою базу сигнатур, извлекая смещение машинных команд, которые надлежит нейтрализовать, что осуществляется путем перезаписи памяти жертвы API-функцией WriteProcessMemory. В большинстве случаев достаточно заменить пару условных переходов, навсегда отучив антивирус/брандмауэр ругаться грязными словами.
    В более сложных случаях малварь впрыскивает внутрь защитной программы свой код, ведущий партизанскую войну с защитным механизмом с учетом конкретных ситуаций, что намного более предпочтительно, поскольку новые версии антивирусов/брандмауэров выходят достаточно часто и создателю малвари приходится постоянно обновлять базу сигнатур. С закрытых позиций (то есть из соседнего процесса) нанести прицельный удар не так-то просто! Ошибка в один единственный байт может привести к зависанию, что не есть хорошо. Напротив, оказавшись внутри антивируса/брандмауэра, хакерский код без проблем обезвредит все «детонаторы» вполне универсальным путем: например, установит еще один перехватчик открываемых файлов поверх установленного антивирусом, а перед передачей управления последнему сотрет в проверяемом файле все следы своего присутствия (естественно, сотрет только в памяти).
    Внедрение в посторонние процессы осуществляется различными путями. Классический способ (работающий только в NT-подобных системах) — создать удаленный поток вызовом API-функции CreateRemoteThread или NativeAPI-функции NtCreateThread, однако перед этим необходимо забросить зловредный код внутрь атакуемого процесса. И тут хакеру на помощь приходят API-функции: AllocateVirtualMemory (для выделения блока памяти) или QueryVirtualMemory (для поиска уже выделенного блока, пригодного для внедрения) с последующим вызовом WriteProcessMemory.
    Внедрение в стиле модерн апеллирует к манипуляциям с процессорным контекстом. Новые потоки при этом не создаются. Внутрь процесса-жертвы записывается зловредный код (и тут без WriteProcessMemory никак не обойтись!), а затем API-функциями GetThreadContext/SetThreadContext регистр-указатель команд перемещается на начало зловредного кода, длина которого обычно составляет несколько десятков байт — вполне достаточно, чтобы загрузить свою динамическую библиотеку или «открыть портал». Но это уже детали реализации.
    Некоторые (между прочим, достаточно многие) антивирусы/брандмауэры перехватывают вызовы WriteProcessMemory/SetThreadContext и поднимают тревогу, если запись происходит в секцию кода. Однако этот перехват достаточно легко обойти: например, вызывать API-функции не с первого байта, эмулируя выполнение пропущенных команд; или же внедряться в область данных. Правда, при активном аппаратном DEP попытка внедрения в область данных ведет к исключению, завершающему работу атакуемого приложения в аварийном режиме.
    Обойти контроль за SetThreadContext можно путем подключения псевдоотладчика (созданного малварью) к процессу-жертве API-функцией DebugActiveProcess, за которой не следит ни один известный мне защитный механизм; и хакер может преспокойно получать контекст потока в свое распоряжение через генерацию отладочных событий. Такой способ внедрения в антивирусы/брандмауэры встречается все чаще и чаще.
    Примерно 10% зловредных программ лезут в следующую ветку системного реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs, добавляя туда свою динамическую библиотеку, которую операционная система будет проецировать на адресное пространство всех GUI-приложений, передавая ей бразды правления до их запуска. Практически все современные защитные комплексы следят за AppInit_DLLs и начинают жутко материться, если там обнаруживается новая DLL. Однако, если малварь хакнула AppInit_DLLs до запуска антивируса/брандмауэра, им остается только утереться, поскольку кто первый получает управление, тот царь и король.
    Еще приблизительно 10% зловредных программ борются с защитами через оконный интерфейс. Что может быть проще! Находим окно по его заголовку (API-функции FindWindow или EnumWindows), добираемся до элементов интерфейсного управления и начинаем хачить их по своему усмотрению. Зловредный код может подавить появление нежелательных окон (например, сделав их невидимыми — API-функция ShowWindow), найти кнопку с надписью «Yes» и «надавить» на нее путем посылки соответствующих Windows-сообщений. Или же заблокировать все кнопки (API-функция WindowDisable). Наконец, можно забраться в настройки и отключить защиту, а чтобы пользователь ничего не заметил, каждый раз подсовывать ему поддельный экран. И это не фантастика! Такие вирусы уже есть, причем совсем не один, а написать их может даже школьник, едва осиливший Delphi и пролиставший по диагонали SDK.
    Другой излюбленный объект атаки - файл \WINNT\System32\Drivers\etc\hosts, позволяющий сопоставлять IP-адреса с доменными именами и имеющий приоритет над DNS-сервером. То есть если малварь не хочет, чтобы антивирус обновлялся, то она просто добавляет в hosts-файл одну строчку, перенаправляя запросы к серверу обновлений куда-нибудь еще, например на локальный узел жертвы (которому соответствует адрес 127.0.0.1) или, что еще хуже, на сервер самого создателя малвари, распространяющий вредоносные обновления, которые содержат не только сигнатуры, но и машинный код. И хотя антивирусные базы в большинстве своем защищены цифровыми подписями и другими криптографическими средствами, при большом желании со стороны хакера их можно обойти.
    Впрочем, пора уже разобрать несколько эффективных приемов обороны от всего этого безобразия.

    Способ 1. Используем «бронежилет»

    Малварь нужно бить еще на взлете. Самое простое, что можно только сделать, — это упаковать антивирус/брандмауэр достойным протектором, препятствующим сигнатурному поиску и внедрению в охраняемый процесс постороннего кода. Крутых протекторов сейчас как никогда много, взять хотя бы туже Themid'у (которая в просторечии завется Фемидой). Правда, на официальном сайте (www.oreans.com) лежит только демонстрационная версия…
    Чем хороша Фемида? А тем, что перехватывает и блокирует следующие API-функции: NtAllocateVirtualMemory, NtCreateThread, NtQueryVirtualMemory, NtReadVirtualMemory, ZwTerminateProcess, NtWriteVirtualMemory. Префикс Nt означает, что мы имеем дело с NativeAPI-функциями, самыми низкоуровневыми системными функциями, доступными на прикладном уровне, что одним махом срубает до примерно 80% всей малвари. Конечно, если малварь работает на уровне ядра, то это другое дело, но и в этом случае ей придется изрядно напрячься, поскольку тело упакованного файла зашифровано и расшифровывается динамически по ходу его исполнения, тут же зашифровываясь вновь.
    Без функции NtReadVirtualMemory малварь обломается с чтением содержимого защищенного процесса, а значит, не сможет отличить антивирус/брандмауэр от остальных программ. Запрет на создание удаленных потоков NariveAPI-функцией NtCreateThread не позволит внедриться в адресное пространство жертвы, тем более что NtWriteVirtualMemory все равно не работает. Ну и как бедная малварь должна копировать зловредный код?
    Аналогичным образом обстоят дела и с другими атаками. Обработанный Фемидой файл практически неуязвим. Зачастую настолько неуязвим, что вообще неработоспособен. Фемида не самый корректный упаковщик, и простейший контроль целостности, выполняемый антивирусом/брандмауэром, тут же показывает, что с файлом что-то не то. Как следствие, антивирус/брандмауэр выдает на экран предупреждающее сообщение или вообще отказывается работать. В такой ситуации нам остается либо взять в лапы hiew и вырезать из антивируса/брандмауэра систему самоконтроля, которая нам только мешает, либо же, поигравшись с настройками протектора, выбрать компромиссный вариант, который и от малвари защищает и ругательств со стороны защиты не вызывает.

    Способ 2. Зовем на помощь отладчик

    Если примирить защиту с протектором никак не получается, имеет смысл обратиться за помощью к отладчику, например к бесплатно распространяемому OllyDdb. Просто загружаем защищаемую программу в Ольку (или прицепляется к уже запущенному процессу: «File -> Attach») и нажимаем <F9> (Run) для нормального продолжения выполнения программы без трассировки.
    Что это дает? Во-первых, поскольку отладка в Windows нереентерабельна, то процесс, находящийся под покровительством Ольки, не может отлаживать никто другой, и попытки малвари зацепиться за него ни к чему не приведут. Так же Олька позволяет отслеживать появление новых потоков (как локальных, так и удаленных). Достаточно в меню «Options -> Debugging Options» взвести галочку «Break on new thread» во вкладке Event. Тогда отладчик будет останавливаться всякий раз при создании нового потока. И хотя антивирусы/брандмауэры активно создают свои собственные потоки в целях производственной необходимости (что очень надоедает), все-таки такая защита лучше, чем совсем никакой.
    А если еще взвести и галочку «Break on new module» (DLL), то отладчик будет останавливаться при загрузке всякой динамической библиотеки. И хотя опять-таки антивирусы/брандмауэры могут подгружать библиотеки по ходу дела, обычно это происходит в строго определенных ситуациях при совершении пользователем тем или иных действий. Беспричинная загрузка DLL с вероятностью, близкой к единице, свидетельствует об атаке!

    Способ 3. Используем биты NX/XD

    Наконец, высший пилотаж — защита кодовых секций от внедрения. Работает только на процессорах с поддержкой битов NX/XD (то есть достаточно современных процессорах) и с XP SP2 с задействованным аппаратным DEP для всех приложений (по умолчанию DEP распространяется только на системные компоненты).
    В отладчике нажимаем <ALT-M>, чтобы увидеть карту адресного пространства. Находим там модуль, имя которого совпадает с именем антивирусного процесса; видим секцию .text (реже CODE), щелкаем правой клавишей мыши, в контекстом меню выбираем пункт «Set Access -> Execute» - и все! С этого момента любая попытка чтения секции кода приведет к исключению, отлавливаемому отладчиком и блокирующему атаку. Напоминаю, что этот трюк действует только при соответствующей поддержке со стороны операционной системы и процессора (за подробностями отсылаю к своей статье, где все это описано). Правда, если антивирус/брандмауэр попытается подсчитать контрольную сумму кодовой секции для проверки собственной целостности, то его встретит жестокий облом. Впрочем, мы можем нажать <F9> для продолжения выполнения кода или на время снять запрет на чтение кодовой секции, только это все равно не спасет от малвари, модифицирующей стек или секцию данных. Но, к счастью, умной малвари в живой природе практически не встречается, и все больше приходится бороться со студенческими поделками.
    Другая возможная проблема - антивирус/брандмауэр может не захотеть запускаться из-под отладчика, например, потому что доверху нашпигован различными антиотладочными приемами. Ну и что нам делать?!

    Способ 4. Настраиваем права доступа

    Хорошая идея — запустить антивирус/брандмауэр от имени администратора, а самим работать в пользовательской сессии. Тогда малварь, обладающая пользовательскими правами, просто не сможет открыть процесс защищенного приложения. Запуск программ от имени другого пользователя (в данном случае администратора) осуществляется штатной командой runas с ключами /profile и /env, копирующими профиль и среду текущего пользователя. Без этих ключей антивирус/брандмауэр, не найдя своих настроек, может просто не запуститься!
    Запуск приложений от имени администратора - достаточно надежное средство защиты от посягательств на адресное пространство защищаемого процесса со стороны малвари, но! Эмуляция клавиатурного/мышиного ввода продолжает работать, что не есть хорошо. Как этому противостоять?! Увы, ответ обескураживающий. Даже со всеми нововведениями Windows Vista — никак. Единственная зацепка — заголовок окна. Большинство зловредных программ именно так и «палит» антивирусы/брандмауэры. Ну, изменить заголовок не проблема. Это умеет делать любой продвинутый твикер, например старый-добрый Customiser. Он же умеет двигать элементы управления (например, кнопки), изменяя их размеры. Зачем это нужно?! А затем, что более продвинутая малварь не смотрит на заголовок главного окна, а сечет раскладку дочерних элементов управления, поскольку положение и размеры элементов управления уникальны для каждого приложения, и их (в целях маскировки) рекомендуется слегка изменять. Customizer (как и большинство других твикеров подобного типа) позволяет сохранять профили изменений, автоматически восстанавливая их при каждом запуске и освобождая нас от необходимости делать эту рутинную работу вновь и вновь.

    Способ 5. Защищаем hosts-файл

    Следи также за файлом \WINNT\System32\Drivers\etc\hosts, удаляя посторонние записи. В принципе ничего не мешает грохнуть и сам файл hosts, поскольку очень мало пользователей использует его по назначению.

    Следуя обозначенным рецептам защиты, мы намного увеличим безопасность своего компьютера, нанося малвари сокрушающий ответный удар. Но в мире нет и не может быть защиты, которую нельзя обойти. Поместив антивирус/брандмауэр в «бронежилет», мы всего лишь уменьшаем вероятность прямых попаданий, отсекая большое количество «шрапнели», пущенной пионерами. Приемы, предлагаемые нами, не претендуют ни на универсальность, ни на полноту. Однако они не требуют никакой квалификации и доступны каждому пользователю. А многолетний опыт автора показывает, что защищаться от малвари можно и нужно.
    Используй описанные методы на свой страх и риск. Учти, что в случае неумелого использования и в некоторых других конкретных случаях можно не увеличить защиту, а скорее навредить.
    Последний раз редактировалось anton_dr; 16.04.2008 в 13:16.
    [INDENT]i += (i+2 > i*2)? i++ : i-- ;
    ShowMessage(i) ;[/INDENT]

  2. Будь в курсе!
    Реклама на VirusInfo

    Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:

    Anti-Malware Telegram
     

  3. #2
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    27.08.2006
    Сообщений
    2,453
    Вес репутации
    0
    @ Sept

    Спасибо за статью. Однако - просьба уважать авторские права, и впредь по крайне мере указать ссылку на источник, ОК?

    Paul

  4. #3
    Junior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    30.03.2008
    Адрес
    Ангарск, Иркутская область
    Сообщений
    82
    Вес репутации
    71
    Источника нет. по мылу прислал один добрый человек
    [INDENT]i += (i+2 > i*2)? i++ : i-- ;
    ShowMessage(i) ;[/INDENT]

  5. #4
    Expert Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для DVi
    Регистрация
    28.08.2006
    Адрес
    moscow
    Сообщений
    3,698
    Вес репутации
    2154
    Sept, до Вас эту статью скопипастили уже как минимум 5 сайтов. Оригинал тут: http://www.xakep.ru/post/42352/default.asp

  6. #5
    Junior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    30.03.2008
    Адрес
    Ангарск, Иркутская область
    Сообщений
    82
    Вес репутации
    71
    DVi, и что теперь? Я это увидел в своем почтовом ящике.
    И теперь вместо спасибо я читаю скопипастили .
    Я лишь поделился интересным материалом
    [INDENT]i += (i+2 > i*2)? i++ : i-- ;
    ShowMessage(i) ;[/INDENT]

  7. #6
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    27.08.2006
    Сообщений
    2,453
    Вес репутации
    0
    @ Sept

    Не обижайтесь, пожалуйста. Просто у админов могут возникнуть проблемы с обвинением о плагиате (виноваты будут они, а не вы) если не указывать источник статьей или контекст ('Мне прислал один добрый человек', допустим). Не воспринимайте это как атаку, а как добрый совет.
    P.S.: Можно и пытаться умело перефразировать - тогда статья уже становится немного вашей...

    Paul
    Последний раз редактировалось XP user; 16.04.2008 в 13:01. Причина: Добавлено

  8. #7
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для drongo
    Регистрация
    17.09.2004
    Адрес
    Israel
    Сообщений
    7,165
    Вес репутации
    974
    По теме:
    Я за вариант номер 4 ( у меня так работает несколько лет) Насчёт изменения чего-либо и интерфейса в частности - по моему не очень удачное решение, возможны лишние баги.
    Дополнительная защита паролем -то ест,ь при нажатии на "разрешить/пропустить/добавить в доверенную зону"- должен быть запрос на повторное нажатие пароля. Я уже предлагал такую систему дополнительной защиты лаборатории касперского. Может быть добавят. Чем больше людей напишут такую просьбу в антивирусную компанию - тем быстрее добавят.
    Последний раз редактировалось drongo; 16.04.2008 в 14:15.

  9. #8
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    09.08.2006
    Адрес
    Google
    Сообщений
    971
    Вес репутации
    500
    Напомню что для comodo firewall существует CMF , защищающий от переполнения буфера.
    Blink 182 = BoxCar Racer + plus 44 + Angels & Airwaves

  10. #9
    Expert Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    06.12.2004
    Сообщений
    927
    Вес репутации
    422
    Цитата Сообщение от Surfer Посмотреть сообщение
    CMF, защищающий от переполнения буфера.
    Скорее, делающий вид, что защищает. Стек и куча всё равно исполняемые без NX/XD-бита...
    http://www.softsphere.com - DefenseWall, DefencePlus

  11. #10
    Junior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    04.09.2007
    Сообщений
    584
    Вес репутации
    637
    Эмуляция клавиатурного/мышиного ввода продолжает работать, что не есть хорошо. Как этому противостоять?! Увы, ответ обескураживающий. Даже со всеми нововведениями Windows Vista — никак. Единственная зацепка — заголовок окна. Большинство зловредных программ именно так и «палит» антивирусы/брандмауэры.
    вот в этом месте посмеялси от души.... похоже может стоит малость вспомнить архитектуру виндов.

    способы есть и достаточно надежные, правда мелкомягкие не очень их афишируют
    начиная с НТ4 (далее 2000, ХР, виста) появилось множественность рабочих столов!
    ну для примера: поле где вы вводите логин и пароль для входа в систему, это стол "Winlogon" а рабочий стол пользователя это обычно "Default"
    и у каждого стола свои настройки безопасности!, тоесть даже с правами админа фиг "нырнеш" напрямую в стол "Winlogon"
    и нам соответственно ничего не мешает создать свой отдельный Desktop? да еще для другого пользователя, да с правами помудрить...
    и все FindWindow или EnumWindows отдыхают! (кстати данный способ успешно использую в самописном аналоге runas но с гуи+возможность создания и прыжков в другие столы) помимо безопасности это дает максимум удобства (ну типа как в линухе 4 стола), жаль только что M$ похоже это для себя придержали

    а если еще вспомнить что все столы крутятся на
    WindowStation а их тоже может быть несколько, вроде...

    ЗЫ кстати начиная с windows xp появился еще какойто незадействованный с виду стол "Disconnect" обнесенный забором вдоль и поперек, может кто знает зачем...?
    Последний раз редактировалось Virtual; 01.07.2008 в 08:38.

Похожие темы

  1. Ошибка при загрузке файрвола
    От FlexX_CooL в разделе Помогите!
    Ответов: 2
    Последнее сообщение: 11.08.2011, 09:06
  2. Руководство по настройке персонального файрвола
    От Макcим в разделе Межсетевые экраны (firewall)
    Ответов: 30
    Последнее сообщение: 22.02.2011, 07:10
  3. Ответов: 6
    Последнее сообщение: 16.09.2010, 13:34
  4. Бронежилет для Антивируса
    От Cewer в разделе Антивирусы
    Ответов: 3
    Последнее сообщение: 06.01.2009, 20:59
  5. Обзор бесплатного файрвола R-Firewall
    От anton_dr в разделе Межсетевые экраны (firewall)
    Ответов: 0
    Последнее сообщение: 06.09.2005, 06:54

Свернуть/Развернуть Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Page generated in 0.00235 seconds with 16 queries