Обычно трояны используют TCP или UDP соединения между своими клиентской и серверной частями. Любой файрволл между хакером и жертвой, блокирующий входящий трафик, обычно предотвращает работу троянов. Некоторое время существовало ICMP-туннелирование, но если вы заблокируете на файрволле ICMP, вы обезопасите себя от этого. В этой статье описана другая концепция, называеvая ACK-туннелированием. ACK-туннелирование работает через файрволлы, которые не имеют в своих наборах правил TCP ACK сегментов (к этому классу файрволлов принадлежат обычные фильтры пакетов).
Обычно трояны используют TCP или UDP соединения между своими клиентской и серверной частями. Любой файрволл между хакером и жертвой, блокирующий входящий трафик, обычно предотвращает работу троянов. Некоторое время существовало ICMP-туннелирование, но если вы заблокируете на файрволле ICMP, вы обезопасите себя от этого. В этой статье описана другая концепция, называеvая ACK-туннелированием. ACK-туннелирование работает через файрволлы, которые не имеют в своих наборах правил TCP ACK сегментов (к этому классу файрволлов принадлежат обычные фильтры пакетов).
TCP – это протокол, который устанавливает виртуальные соединения по IP. Сессия создается, когда клиент посылает сегмент SYN (синхронизация - synchronize), сервер отвечает сегментом SYN/ACK, и клиент подтверждает сегментом ACK (подтверждение - acknowledge). Вся следующая сессия состоит из сегментов ACK.
Обычные файрволлы - фильтры пакетов полагаются на то, что сессия всегда начинается с пакета SYN со стороны клиента. Таким образом, они применяют свои правила на все SYN сегменты и считают что все ACK сегменты являются частью установленной сессии. Более продвинутые файрволлы применяют свои наборы правил на все сегменты, включая ACK. Некоторые файрволлы можно конфигурировать, таким образом вы можете выбирать между двумя способами обработки ACK сегментов. Причиной для того, чтобы не контролировать ACK сегменты, является объем работы. Сессия, состоящая из тысяч или миллионов ACK сегментов, имеет только один SYN сегмент. Таким образом вы значительно снизите загрузку файрволла и сэкономите деньги на дорогом оборудовании. Помните, что невозможно установить TCP соединение с системой через любой из этих типов файрволлов, если они установлены на блокирование входящих соединений.
Рассмотрим следующий случай. У вас есть файрволл, который не применяет свой набор правил к ACK сегментам. Правила состоят в полном блокировании UDP и ICMP, блокировании всех входящих TCP соединений, и разрешении всех исходящих соединений. Также заблокированы все другие протоколы. Хакер посылает троян электронной почтой пользователю за файрволлом. Пользователь запускает троян.
Чтот теперь? Как хакер снаружи соединится с трояном внутри? Существует как минимум два пути.
Либо троян создает соединение с некоторым компьютером снаружи, принимает команды и посылает результаты через это соединение; однако этот способ имеет сложности:
Во-первых, хакер должен иметь статичный IP. Если он его не имеет, он может например выгружать динамический IP при его изменении на web-сервер, с которым соединяется троян для поиска IP хакера. В любом случае, троян теперь имеет адрес, который указывает на хакера. И если он будет обнаружен, его можно будет использовать для выслеживания хакера.
Перейдем к ACK-туннелированию. Клиентская часть трояна использует только ACK сегменты для связи с серверной частью, и наоборот. Таким образом сегменты свободно проходят сквозь файрволл. Поскольку хакер знает IP зараженной системы, совершенно не важно, какой адрес у него самого, статический или динамический. Кроме того, если IP адрес зараженной системы динамический, хакер может использовать специальный сканер для поиска трояна через файрволл.
Трояну не нужно иметь какие-либо ссылки на хакера. Более того, тот кто будет подсоединяться к вирусу, может даже не знать, откуда тот пользователь получил троян. Хакер может просто просканировать сеть в надежде, что какой-то из компьютеров окажется зараженным его трояном. Конечно, хакера можно отследить с помощью сниффинга и отслеживания ACK сегментов. С другой стороны, существует огромная вероятность, что файрволл не запротоколирует это, даже если он настроен протоколировать все исходящие соединения (начинающиеся, однако, с SYN сегмента).
Для Windows 2000 написан рабочий пример трояна под названием AckCmd. Это просто удаленный Command Prompt, но его концепции могут быть расширены для создания нового протокола на основе TCP ACK сегментов, который может иметь те же признаки, что и TCP.
AckCmd посылает с 80 порта на клиентской стороне на 1054 порт на серверной стороне. Эти порты выбраны потому, что как правило файрволлы открыты для проcмотра web и этот канал будет работать.
Никаких овечек — только отборные научные факты