24.09.2003

Враг внутри: файрволы и Backdoors

Эта статья представляет краткий обзор современных backdoor технологий, обсуждает то, как они могут быть использованы для обхода инфраструктуры защиты, которая существует в большинстве сетей, призывает задуматься людей, которые полагаются на эти технологии для защиты их систем/сетей.

Vollter, по материалам SecurityFocus

Может ли ваша инфраструктура безопасности защитить вас, если вы оставили ключ под ковриком?

Как современный IT-профессионал, вы сделали все: вы защитили вашу сеть файрволами и/или прокси, установили антивирусное программное обеспечение на всех компьютерах и защитили ваши мобильные рабочие станции персональными файрволами. Казалось бы – все сделано по инструкциям, все правильно настроено. Но даже со всем этим, действительно ли системы в безопасности? Могут ли ваши многочисленные защитные системы противостоять современным методам вторжения?

Эта статья представляет краткий обзор современных backdoor технологий, обсуждает то, как они могут быть использованы для обхода инфраструктуры защиты, которая существует в большинстве сетей, призывает задуматься людей, которые полагаются на эти технологии для защиты их систем/сетей.

Фундамент - файрвол

Перед обсуждением современных backdoor технологий необходимо сначала взглянуть на то, через какие препятствия должен пройти нападающий. Файрвол - неотъемлемая часть всесторонней структуры безопасности для вашей сети. Если на них возлагать слишком много, то они также могут быть и самым слабым звеном в вашей стратегии защиты.

Существуют различные разновидности/комбинации «стандартных» файрволов для выбора в зависимости от ваших условий:

Packet-filtering firewall (Межсетевой экран с фильтрацией пакетов) — межсетевой экран, который является маршрутизатором или компьютером, на котором работает программное обеспечение, сконфигурированное таким образом, чтобы отфильтровывать определенные виды входящих и исходящих пакетов. Фильтрация пакетов осуществляется на основе информации, содержащейся в TCP- и IP-заголовках пакетов (адреса отправителя и получателя, их номера портов и др.)

  • Работают на 3 уровне
  • Также известны, как файрволы на основе порта
  • Каждый пакет сравнивается со списками правил (адрес источника/получателя, порт источника/получателя)
  • Недорогой, быстрый, но наименее безопасный
  • Технология 20-летней давности
  • Нарушает более сложные приложения (например, FTP)
  • Пример: access control lists (ACL) маршрутизатора

Circuit-level gateway (Шлюз сеансового уровня) — межсетевой экран, который исключает прямое взаимодействие между авторизированным клиентом и внешним хостом. Сначала он принимает запрос доверенного клиента на определенные услуги и, после проверки допустимости запрошенного сеанса, устанавливает соединение с внешним хостом. После этого шлюз просто копирует пакеты в обоих направлениях, не осуществляя их фильтрации.

  • Работает на 4 уровне
  • Передает TCP подключения, основываясь на порте
  • Недорогой, но более безопасный, чем фильтр пакетов
  • Вообще требует работы пользователя или программы конфигурации для полноценной работы
  • Пример: SOCKS файрвол

Application-level gateways (Шлюз прикладного уровня) - межсетевой экран, который исключает прямое взаимодействие между авторизированным клиентом и внешним хостом, фильтруя все входящие и исходящие пакеты на прикладном уровне модели OSI. Связанные с приложением программы-посредники перенаправляют через шлюз информацию, генерируемую конкретными сервисами TCP/IP.

  • Работает на 5 уровне
  • Специфический для приложений
  • Умеренно дорогой и медленный, но более безопасный и допускает регистрацию деятельности пользователей
  • Требует работы пользователя или программы конфигурации для полноценной работы
  • Пример: Web (http) proxy

Stateful inspection firewall — межсетевой экран экспертного уровня, который проверяет содержимое принимаемых пакетов на трех уровнях модели OSI: сетевом, сеансовом и прикладном. При выполнении этой задачи используются специальные алгоритмы фильтрации пакетов, с помощью которых каждый пакет сравнивается с известным шаблоном авторизированных пакетов.

  • Фильтрация 3 уровня
  • Проверка правильности на 4 уровне
  • Осмотр 5 уровня
  • Высокие уровни стоимости, защиты и сложности
  • Пример: CheckPoint Firewall-1

Некоторые современные файрваллы используют комбинацию вышеперечисленных методов и обеспечивают дополнительные способы защиты, как сетей, так и систем:

«Персональные»/host файрволы

Этот класс файрволов позволяет далее расширять защиту, допуская управление по тому, какие типы системных функций или процессов имеют доступ к ресурсам сети. Эти файрволы могут использовать различные типы сигнатур и условий, для того, чтобы разрешать или отвергать трафик. Вот некоторые из общих функций персональных файрволов:

  • Блокирование драйвера протокола – не разрешать «нестандартным» драйверам протокола быть загруженными и использоваться программами
  • Блокирование на уровне приложений – позволять лишь некоторым приложениям или библиотекам исполнять сетевые действия или принимать входящие подключения
  • Блокирование на основе сигнатуры – постоянно контролировать сетевой трафик и блокировать все известные атаки.

Дополнительный контроль увеличивает сложность управления безопасностью из-за потенциально большого количества систем, которые могут быть защищены персональным файрволом. Это также увеличивает риск повреждения и уязвимости из-за плохой настройки.

Динамические межсетевые экраны

Динамические файрволы объединяют в себе стандартные файрволы (перечислены выше) и методы обнаружения вторжений, чтобы обеспечить блокирование «на лету» сетевых подключений, которые соответствуют определённой сигнатуре, позволяя при этом подключения от других источников к тому же самому порту. Например, можно блокировать деятельность сетевых червей, не нарушая работу нормального трафика.

Основы Backdoor технологий

Что такое Backdoor? Backdoor - это «механизм, тайно внедрённый в компьютерную систему для облегчения несанкционированного доступа к системе и может быть классифицирован на (не менее чем) три категории:

Активные

Активные Backdoor создают подключения с одним или более удаленными компьютерами. Эти могут быть либо постоянные сетевые подключения (например, туннели) между компьютерами, либо backdoor активно контролирует скомпрометированную систему, собирает информацию, отправляет данные отдельными «порциями» и получает подтверждения и/или команды от удалённых систем.

Пассивные

Пассивные Backdoor прослушивают один или более портов на входящие подключения от одного или более удаленных компьютеров. Подобно активным Backdoor, эти программы могут использоваться, чтобы установить туннель в скомпрометированную сеть, либо для принятия команд и возвращения нужной информации.

Атакующие Backdoor

Как правило, такие Backdoor являются результатом переполнения буфера в плохо написанной программе, который приводит к некоторому типу доступа (например, уровня root/администратора, либо уровня пользователя). 

Есть один общий признак трёх типов Backdoor – они все работают, обходя сложную, «эшелонированную» инфраструктуру защиты, которую вы старательно разрабатывали. Настоящий хакер (т.е. не недоученный подросток и не пользователь готовых скриптов) может довольно быстро определить, стоит ли нападать на вашу систему лобовой атакой. Стандартные методы могут быть относительно легко использованы для обнаружения типов и конфигурации оборудования, которое защищает границы вашей сети. Некоторые из этих средств могут даже помочь обнаружить активные IDS. Большинство сетей достаточно хорошо защищены по периметру, поэтому Backdoor являются основным методом проникновения в сеть по ряду причин:

Они не будут немедленно обнаружены даже правильно сконфигурированными файволами, NIDS и HIDS системами

Лобовая атака обязана (или, по крайней мере, должна) вызвать ошеломляющий эффект – все защитные системы просто взвоют сигналами тревоги. И если вы не заказывали испытания на возможность взлома, это значит, что вас атакуют.

Некоторые защитные системы будут немедленно блокировать IP-адрес сканирующего. Но даже если это не так, все равно избегая лобовой атаки, хакер удаляет первичную причину тревоги, и получает возможность работать свободно и без помех.

Они полагаются на специализированные методы нападений.

Что труднее: построение точного SYN-Frag нападения, необходимого для переполнения буфера в CheckPoint файрволах (такая возможность была обнаружена дважды за последние 4 года) или заставить пользователя открыть вложенный файл?

Для осуществления лобовой атаки, требуется 4-6 специализированных хакерских методов, без гарантии того, что один из них не приведёт к зависанию или перезагрузке системы, что сделает всю попытку бесполезной. Это трудно, так как требует определенных знаний и навыков. Вместо этого можно намекнуть юзеру, что по электронной почте он получил крайне важное или интересное послание – новую работу с астрономической зарплатой, астрологический прогноз или фотографии обнаженной Анны Курниковой…

Они используют уязвимости программ внутренней сети.

Сколько в вашей сети компьютеров с Windows или *nix? Сколько пользователей используют каждую из этих систем? Сколько у вас маршрутизаторов, файрволов и IDS? Скорее всего, много. Или очень много. В большинстве организаций хакеру значительно проще найти непропатченную Windows иди *nix систему внутри, чем найти уязвимость в защищенном периметре.

Внутренняя работа

Хотя эта статья рассматривает Backdoor в контексте попыток вторжения внешних злоумышленников, они не ограничены этой узкой областью практики. Backdoor могут использоваться служащими, клиентами или сотрудниками, чтобы обеспечить себе не обнаруживаемый удалённый доступ в вашу сеть.

Независимо от типа backdoor, существует два первичных способа ввести их в вашу сеть. Первый метод: пользователи неосторожно загружают и выполняют программу в своей системе. Чрезвычайно распространенные примеры - это вложенные файлы в электронной почте, которые эксплуатируют неисправленную уязвимость в системе клиента, страница в интернете, которая содержит неожиданный скрытый «груз», и программы "spyware". К сожалению, эти методы слишком обычны и могут привести к серьезной потерей конфиденциальности и секретности. В случае "spyware" установлены нужные программы, заданы ключи реестра, что позволяет прослеживать каждое движение в сети, которое делает пользователь. Это слежение не ограничено интернет-сайтами, позволяя, таким образом, легко составлять карту из всех важных мест внутренней сети компании.

Даже не загружая "spyware" backdoor, пользователь может все еще быть подвержен к более легальным формам backdoor. Real Networks player постоянно поддерживают связь со своей домашней сетью, и это почти невозможно дезактивировать без его переустановки. Пользователей Windows можно контролировать, если они используют Automatic Updates или синхронизируют время с серверами Microsoft.

Второй метод состоит в фактическом пребывании в вашей сети. Тривиальный пример: установка программы, которая имеет заранее созданный самим программистом backdoor. Эти типы backdoor могут быть злонамеренны, но они обычно программируются в обход стандартных процессов разработки программного обеспечения, чтобы сэкономить время. Это может быть backdoor самой старой разновидности, который первоначально использовался для обхода telnet/rlogin ограничения. Установка является довольно простой: пользователь устанавливает программу, которая не требует повышенных привилегий для выполнения, затем программа запускается, и ждет соединений на порту, который не блокирован устройствами контроля доступа. Этот удалённый доступ может быть к многопользовательской системе или на автоматизированное индивидуальное рабочее место. Первоначально ориентированные на Unix, эти типы программ весьма распространились и могут быть весьма трудны для обнаружения.

Этот тип backdoor более легко воспринимается на конкретном примере:

Программа:

BindShell

URL:

http://www.securitylab.ru/_exploits/bindshell.c.txt

Категория:

Пассивный

Эта программа легко модифицируется для запуска на любом определённом порту – например, TCP 1234 – и не поддерживает пароль, таким образом, позволяя всем осуществлять подключения. Для подключения удалённый пользователь просто устанавливает телнет соединение с нужным хостами на определённом порту:

telnet some.insecure.host.org 1234

Существуют несколько технологий для обнаружения этой программы, не одна из технологий не обеспечивает простой или прямой изоляции. Во всех случаях необходимо знание нормального состояния ОС.

  • netstat -aэта программа, которая поставляется вместе с операционной системой UNIX и используется для просмотра статуса сетевых подключений. Может просматривать порты, которые не находятся в нормальном состоянии.
  • nmap[5] илиstrobe[6] сканеры портов, которые могут использоваться для идентификации активных и прослушиваемых портов. Опять же знание нормального состояния может быть полезно.
  • lsof -i[7] программа, которая может быть использована для просмотра всех открытых файлов и используемых ими ресурсов. Может искать запущенные пользователем необычные приложения, которые требуют использования сетевых портов.

Программа:

Sneakin

URL:

http://www.securitylab.ru/_exploits/sneakin.tgz

Категория:

Активный

Эта программа требует поднятых привилегий и в основном ждёт два специально обработанных ICMP пакета, для того чтобы создать что-то очень похожие на обратный телнет сеанс, который устанавливается с удалённой системой. Sneakin требует LINUX и netcat[8].

Режим «прослушивания» столь же сложно обнаружить, как и в вышеупомянутом примере. Внешний сканер портов не будет работать, т.к. программа перехватывает и обрабатывает ICMP пакеты, пока разрешён доступ к ним ядром операционной системы. LSOF покажет процесс, который обращается к сетевому адаптеру в беспорядочном режиме. Вообще LSOF мог бы быть лучшим инструментом, чтобы обнаружить NIC в этом режиме. Netcat также обеспечит ключ к этому специфическому backdoor, т.к. покажет два ICMP порта использующих сырой протокол. Когда «sneakin» перейдёт в АКТИВНОЕ состояние, LSOF и Netcat покажут дополнительные процессы, которые используют сетевые порты.

Программа:

GIFtpD

URL:

http://www.security-express.com/archives/bugtraq/1999-q4/0442.html

Категория:

На основе нападения

GIFtpD - один из стандартных примеров атакующих backdoor. Нападающий пользуется преимуществом от нескольких плохо сконфигурированных особенностей ftp-сервера, что позволяет закачать и выполнить backdoor код, в этом случае BindShell.

Sneaking и bindshell – классические средства, используемые против слабой файрвол-стратегии. Многие сайты развертывают чрезвычайно сильную стратегию, мешая получить прямой доступ к прослушивающимся портам. Без прямого доступа, большинство backdoor не могут работать. Однако даже самая сильная стратегия может быть легко уничтожена активными backdoor, используя методику «туннелирования». Туннель, в контексте backdoor, лучше всего объясняется как программа, которая находится внутри защищенной части сети и устанавливает подключение с внешним хостом, что приводит к потоку двунаправленного трафика между этими системами и/или сетями. Это серьезная угроза даже самой современной архитектуре безопасности. Популярный пример такого соединения мог бы создать зашифрованное сетевое подключение между двумя компьютерами, используя VPN программное обеспечение.

Должным образом сконфигурированный VPN туннель должен обеспечить полный и неограниченный доступ к сетям, для которых компьютеры это шлюзы. Когда обеспечивается законный удаленный доступ для служащих и деловых партнеров, VPN может увеличить производительность, сэкономить время и уменьшить затраты. Когда же они используются в незаконных целях, то они будут иметь только противоположный эффект.

VPN технология все еще довольно нова и требует больше чем случайного знакомства с установкой и с поддержкой, когда они используется законно. И тем более странно, когда они используются как инструмент backdoor. Не обязательно использовать VPN для туннеля. Делая шаг назад, скажу, что два компьютера можно подключить, используя более традиционное и широко известное программное обеспечение – secure shell. Secure shell - или SSH [9], поскольку на неё чаше всего ссылаются - может использоваться, чтобы установить туннель между двумя компьютерами, позволяя переназначить порт на клиенте (вне файрвола) к порту на сервере (за файрволом). Например, можно зарегистрировать клиентский 2200 порт к 23 порту на сервере. Пользователь обращается к клиенту (вне файрвола), подключается через telnet к localhost на 2200 порт и получает 23 порт на удалённом компьютере (за файрволом). Слабая стратегия позволяет подключению быть сгенерированным компьютером за файрволом. Это простая и популярная уловка.

Также чрезвычайно просто получить доступ к внутренним web сайтам организации. Пользователь просто устанавливает копию прокси агента - например, «squid» web прокси или Apache «httpd» [11] демоне с поддержкой прокси, откомпилированной в некоторой внутренней системе. Может использоваться стандартная программная конфигурация для любого агента. Пользователь тогда использовал бы SSH порт, чтобы подключить клиентский порт 3128 к серверу на 3128 порт. Клиент, опять же вне файрвола, теперь имеет прокси-доступ к внутреннему web серверу организации через 3128 прокси порт.

Этот пример может быть далее расширен, для того чтобы дать возможность больше чем одному внешнему компьютеру иметь доступ к внутренним web-узлам. Добавление простой системы переадресации порта [12] может сделать туннелированное прокси-подключение доступным (на 3128 порту) всем пользователям удаленной сети.

Обычные методы не могут использоваться для идентификации существования туннеля этого типа. В зависимости от используемой платформы, можно контролировать использование сети и искать непротиворечивые или постоянные процессы с установленными сетевыми подключениями с внешней стороной. На уровне хоста, идентифицируя backdoor этим способом, требуется создание и обслуживание базового сетевого состояния (возможно использование программных методов, упомянутых ранее). Также возможно опрашивать граничные файрволы и контролировать таблицы состояний подключений, исследуя установленные подключения.

Готовая Защита

Есть небольшой способ, который может полностью защитить сеть от использования backdoor. Использование сетевых IDS или host-IDS трудно для конфигурирования, развертывания и эффективного использования, особенно в больших организациях. Без развития программ специального назначения, предназначенных для контроля систем и сетей на предмет присутствия backdoor, единственный способ защититься от этих методов это изменение мышления. Руководители службы безопасности, которые думают, что они могут просто скрыть свои сети за файрволами, а потом сидят и упрямо твердят, что "никто не может войти, я закрыл все двери", должны изменить свои взгляды. Хорошая защита против backdoor должна начаться с изменения в философии доступа к сети. Начать следует с разработки сильной стратегии доступа в Internet и технологий, которые смогли бы ограничить доступ через хорошо сконфигурированный файрвол.

На сетевом уровне, предотвратить backdoor - означает делать очень трудным для них установить подключения вне вашей инфраструктуры. Один подход состоял бы в том, чтобы использовать шлюз сеансового уровня (т.е. SOCKS/порт redirection) как средство ограничения backdoor от использования любых TCP портов. В то время как это ограничивает число внешних ресурсов, к которым могут получить доступ приложения, это также может создать дополнительные административные и рабочие нагрузки и может не работать с некоторыми приложениями. С современными SOCKS шлюзами, администрирование может стать на глобальный уровень стратегии с небольшим воздействием на работу и с почти никаким воздействием на приложения.

Альтернативно можно использовать сильно ограниченную стратегию доступа – в которой разрешаются очень немногие прямые внешние подключения - и Web/(специфические для приложения) прокси, которые предварительно требуют идентификации, преже, чем разрешается доступ. Цель подобна переназначению порта: остановить бесконтрольный доступ к внешним компьютерам. В то время, как самые традиционные методы защиты предлагают закрыть все двери и окна, современному бизнесу для нормального функционирования необходимо иметь доступ к внешним ресурсам. К сожалению, почти любой механизм внешнего доступа потенциально может использоваться, чтобы обеспечить тунель для backdoor. Архитектура сети, использующая прокси сервер, дает детальный контроль над тем, что позволяется вне вашей сети, так как приложения должны "говорить на правильном языке", чтобы получить доступ. Туннели могут быть установлены [13] через прокси (особенно через SSL-подключения [14]), но они намного тяжелее для конфигурирования и правильного развертывания.

Даже с этими методами, требующими значительного времени и ресурсов для их развертывания - разработка архитектуры доступа в сеть, которая облегчит пользователям выполнение своей работы и затруднит работу для backdoor, это не тривиальная задача. Ваша цель должна состоять в том, чтобы проектировать инфраструктуру, которая сделает ее настолько эффективной, насколько это вообще возможно, чтобы связать сетевые подключения с пользователями.

[1]The Packet Filter: A Basic Network Security Tool -http://www.sans.org/rr/firewall/packet_filter.php
[2]Application-Level Firewalls: Smaller Net, Tighter Filter - http://www.networkcomputing.com/1405/1405f3.html
[3]Anatomy of a Stateful Firewall - http://www.sans.org/rr/firewall/anatomy.php
[4]Detecting Backdoors - http://www.icir.org/vern/papers/backdoor/
[5]nmap home - http://www.insecure.org/
[6]strobe source code - http://www.packetstormsecurity.org/UNIX/scanners/strobe-1.04.tgz
[7]lsof main distribution - ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof
[8]Netcat - The TCP/IP Swiss Army Knife - http://www.sans.org/rr/audit/netcat.php
[9]OpenSSH home - http://www.openssh.org/
[10]Squid Web Proxy Cache home - href="http://www.squid-cache.org/"
[11]Apache httpd Project - http:///httpd.apache.org/
[12]Port Forwarding Tools - http://nucleo.freeservers.com/portfwd/tools.html
[13]rwwwshell - http://www.thc.org/releases/rwwwshell-2.0.pl.gz
[14]ssh-tunnel.pl - http://www.fwtk.org/fwtk/patches/ssh-tunnel.pl

или введите имя

CAPTCHA