Методы информационной подготовки программных атак
Успех атаки во многом зависит от информации об объекте атаки, которой владеет атакующий.
Сведения, которые атакующему необходимо (желательно) иметь, прежде чем начать саму атаку, определяются его целями и особенностями объекта.
В общем случае среди них можно выделить две важнейшие группы:
- сведения о путях доступа к объекту (или сведения, на основе которых можно получить сведения о путях доступа к объекту);
- сведения про уязвимые характеристики объекта (или сведения, на основе которых можно получить сведения про уязвимые характеристики объекта).
Согласно видам доступа сведения первой группы можно разделить на сведения о путях локального (физического) доступа к объекту, и сведения о путях отдаленного доступа к объекту. В обоих случаях наиболее ценными для атакующего есть аутентификационные сведения (например, идентификаторы и пароли пользователей). Относительно же путей отдаленного доступа, полезными для атакующего во многих случаях оказываются следующие сведения:
- адреса узлов сети объекта;
- сведения о маршрутах доступа к узлам сети объекта.
Среди последних наибольшую ценность представляют сведения о том, какие узлы сети объекта выполняют функции маршрутизаторов (как правило, эти узлы играют важную роль в системе обеспечения безопасности объекта).
Сведения про уязвимые характеристики объекта в подавляющем большинстве случаев можно довольно легко получить, если известно, какое программное обеспечение выполняется в объекте (включительно с версиями программ), и как оно сконфигурировано. Наиболее ценными здесь, как правило, оказываются сведения о следующих составных программного обеспечения объекта:
- операционные системы сетевых узлов объекта;
- программы, которые обеспечивают функционирование сетевых служб;
- программы, которые осуществляют управление данными;
- программы, которые выполняют защитные функции.
Общие сведения про источники, методы и средства сбора информации об объекте атаки
В общем случае можна выделить два основных источника информации об объекте атаки:
- окружение объекта атаки;
- сам объект атаки.
К окружению отнесем:
- документальные материалы, которые содержат информацию об объекте атаки;
- людей, которые имеют отношение к объекту атаки;
- внешнюю по отношению к объекту атаки систему связи.
Среди документальных материалов, которые могут стать источником полезной для атакующего информации, выделим:
- открытые документальные материалы;
- документальные материалы, не предназначенные для общего ознакомления (т.е. закрытые).
К первый можно отнести, например, открытые публикации, общедоступные базы данных, выступления на конференциях и т.п. Среди них выделим базы данных службы whois, которые широко применяются при подготовке атак через Интернет для определения имен доменов, IP-Адресов сетей и серверов DNS, связанных с объектом атаки, Web-Сайты владельца объекта, которые в большенстве случаев становятся источниками разнообразной полезной для атакующего информации.
Среди вторых выделим:
- документальные материалы, которые создаются в согласии с политикой безопасности объекта (собственно политика безопасности, техническая документация объекта и т.д.);
- документальные материалы, которые не предусмотрены политикой безопасности объекта (записи с паролями, кадры видео- или фотосъемок, внутренняя документация, для которой политикой безопасности не предусмотрены процедуры безопасного хранения).
Все перечисленное может выступать источником какой-либо информации об объекте атаки, т.е., как информации о путях доступа к объекту, так и информации про уязвимые характеристики объекта (за исключением баз данных службы whois, которая может выступить только как источник информации о путях доступа к объекту).
Рассмотрим теперь в общих чертах методы добывания информации из каждого из этих источников.
Методы добывания информации из документальных источников (включая во многих случаях добывания самих источников) чрезвычайно разнообразные, как и сами документальные источники. Заметим только, что документальные материалы, которые создаются в согласии с политикой безопасности объекта, по обыкновению надлежащим образом охраняются, в то время как те, что не предусмотрены политикой безопасности объекта, могут стать достоянием атакующего случайно или в результате несложных поисковых действий (таких, как исследование мусорников или похищение личных записей пользователей объекта).
Люди могут выступить в роли пособий атакующего (не только во время сбора информации об объекте атаки) сознательно или бессознательно. В зависимости от этого, различают и методы привлечения людей в качестве источников информации об объекте атаки. Если атакующий привлекает человека к сознательному пособничеству, то это вербовка, но если к несознательному – то “социальная инженерия”. Люди могут стать также косвенными виновниками утечки критической, с точки зрения безопасности, информации, когда, например, записывают свои пароли или выбрасывают дискеты, которые содержат конфиденциальную информацию.
При добывании информации об объекте атаки часто тяжело определить, является источником информации сам объект, или внешняя по отношению к нему система связи. Поэтому в дальнейшем не будем заострять внимание на их размежевании.
Методы добывания информации об объекте атаки из самого объекта и внешней по отношению к нему системы связи, прежде всего, разделим на две группы. К первой группе отнесем методы, которые предусматривают проведение вспомогательных программных атак. Ко второй – те, которые не предусматривают проведения программных атак. В дальнейшем, по умолчанию, речь будет идти о методах второй группы.
Эти методы будем классифицировать по трем критериям:
- по характеру влияния на источник информации;
- по расположению атакующего относительно объекта атаки;
- по уровню взаимодействия с источником информации.
По характеру влияния на источник информации будем выделять активные и пассивные методы.
По расположению атакующего относительно объекта атаки – методы отдаленного и локального сбора информации.
По уровню взаимодействия с источником информации – методы сетевого уровня (уровня сетевой инфраструктуры) и методы системного и прикладного уровня (уровня системного и прикладного программного обеспечения)
Методы сетевого уровня и пассивные методы применяются только при удаленном поиске информации.
В следующих статьях рассмотрим более конкретно наиболее распространенные методы отдаленного сбора информации на сетевом и системном уровне.
В конце концов, заметим, что добывание информации из самого объекта атаки и внешней по отношению к нему системы связи, осуществляется исключительно техническими (программными и программно-аппаратными) средствами.
Методы инвентаризации объекта атаки на сетевом уровне
Тему рассмотрим на примере инвентаризации компьютерных систем, подключенных к IP-Сети.
В общем случае можно выделить такие методы инвентаризации объекта атаки на сетевом уровне:
- исследование (анализ) баз данных о подключении объекта атаки к сети (прежде всего, баз данных службы whois (если речь идет об Интернете) и DNS);
- исследование (анализ) маршрутов доступа к объекту атаки;
- исследование (анализ) реакции объекта атаки на присланные ему сообщения (активное исследование объекта атаки);
- исследование (анализ) сетевого трафика объекта атаки (пассивное исследование объекта атаки).
Исследование (анализ) баз данных о подключении объекта атаки к сети
Исследование (анализ) баз данных службы whois
Базы данных службы whois широко применяются в качестве источника информации про имена доменов, IP-Адреса сетей и серверов DNS, связанных с объектом атаки.
Исследование (анализ) баз данных DNS
DNS — распределенная база данных, предназначенная для преобразования IP-Адресов в имена узлов и наоборот. Если сервер DNS, что обслуживает объект атаки, не настроенный на обеспечение максимальной степени безопасности, с его помощью можно получить информацию про имена и IP-Адреса узлов внутренней сети объекта атаки.
Распространенным конкретным методом добывания информации из базы данных DNS-Сервера есть выполнение несанкционированного перенесения зоны (zone transfer) DNS.
С помощью перенесения зоны вторичный DNS-Сервер обновляет собственную базу данных зоны, получая данные от первичного сервера. По обыкновению достаточно, чтобы перенесение зоны выполнялось только вторичным сервером. Однако, многие DNS-Серверы настроенны таким образом, чтоб предоставлять копию зоны любому узлу, который ее запросит.
Перенесение зоны DNS может быть выполнено с помощью клиента nslookup и производных от него утилит. Клиент nslookup по обыкновению входит в комплект поставки UNIX и Windows NT.
С помощью клиента nslookup выполняется так называемый “ручной перенос зоны”. Это означает, что клиент nslookup разрешает за один раз обратиться, во-первых, только к одному серверу DNS, во-вторых, только к одному домену. Производные от nslookup утилиты (например, host, Sam Spade, axfr, dig) разрешают автоматизировать этот процесс.
Исследование (анализ) маршрутов доступа к объекту атаки
После определения сетевых адресов, отслеживая маршруты доступа к узлам объекта, можно определить топологию сети объекта.
Наиболее распространенными конкретными методами отслеживания маршрутов в IP-Сетях есть:
- TTL-Модуляция;
- передача IP-Пакета с опцией ‘Traceroute’.
Первый метод базируется на том, что, согласно протоколу IP, значение поля TTL (Time To Live) заголовка IP-Пакета уменьшается на единицу каждым маршрутизатором, через который проходит пакет. Если, после уменьшения на единицу, значение этого поля достигает нуля, маршрутизатор должен прислать узлу сообщение, что он является источником пакета, ICMP-Сообщение типа ‘Time Exceeded’. Если атакующий будет присылать по IP-Адресу объекта атаки IP-Пакеты, в которых значение поля TTL равняется 1, 2, 3 и т.д. до тех пор, пока не получит ответ от объекта атаки, он может определить IP-Адреса маршрутизаторов, через которые проходит посланный им IP-Пакет на пути к объекту атаки.
Этот метод применяется, в частности, утилитой traceroute, которая входит в комплект поставки практически всех версий UNIX и Windows NT (в системе Windows NT название утилиты адаптировано к формату 8.3 — tracert).
Второй метод базируется на том, что при поступлении IP-Пакета с опцией ‘Traceroute’ (это может быть, например, ICMP-Сообщение типа ‘Echo Request’) маршрутизаторы должны прислать источнику пакета ICMP-Сообщение типа ‘Traceroute’ (согласно RFC1393).
Этот метод реализован, например, в утилите ping, которая тоже входит в комплект поставки практически всех версий UNIX и Windows NT.
Второй метод имеет ряд преимуществ по сравнению с первым:
- требует передачи меньшего количества пакетов (если первый метод для отслеживания маршрута, который проходит через n маршрутизаторов, требует передачи 2(n+1) пакетов, то второй — только (n+2) пакетов);
- работает быстрее;
- не чувствительный к колебаниям маршрута на протяжении выполнения теста;
- разрешает отслеживать обратный маршрут (благодаря тому, что в ответ на IP-Пакет с опцией ‘Traceroute’, узлы должны присылать пакет с такой же опцией (например, ICMP-Сообщение типа ‘Echo Reply’ в ответ на ‘Echo Request’); причем маршрутизаторы, обрабатывая обратный пакет, должны присылать ICMP-Сообщение типа ‘Traceroute’ по этому узлу, которому направляется пакет (т.е. по этому, который выполняет тест));
- разрешает получать дополнительную информацию о маршруте (например, скорость передачи данных и максимальную длину пакета на отдельных участках маршрута; благодаря применению специального ICMP-Сообщения (типа ‘Traceroute’).
Преимуществом первого метода является то, что далеко не все современные маршрутизаторы обрабатывают опцию ‘Traceroute’.
ping и traceroute – это утилиты командной строки. Существуют графические утилиты аналогичного действия (например, VisualRoute, NeoTrace).
Активное исследование объекта атаки.
Активное исследование объекта атаки заключается в исследовании (анализе) реакции объекта атаки на присланные ему сообщения.
Реакция узлов сети на присланные им сообщения определяется, во-первых, требованиями (рекомендациями) стандартов на соответствующие коммуникационные протоколы, во-вторых, особенностями реализации данных протоколов в программном обеспечении узлов.
Исследование реакции объекта атаки на присланные ему сообщения разрешает, прежде всего:
- выяснить, которым из сетевых адресов, выделенных объекту атаки, действительно отвечают узлы объекта атаки (идентифицировать узлы объекта атаки);
- идентифицировать коммуникационные службы (серверы), доступные на узлах объекта атаки;
- идентифицировать (определить тип и версию) операционных систем узлов объекта атаки;
- идентифицировать (определить тип и версию) программное обеспечение коммуникационных служб (серверов), доступных на узлах объекта атаки.
В более конкретном плане можно выделить такие методы активного исследования объекта атаки (в IP-Сетях):
- ICMP-Зондирование (сканирование);
- TCP-Зондирование (сканирование);
- UDP-Зондирование (сканирование);
- активное исследование реализации стека TCP/IP;
- сбор маркеров (заголовков коммуникационных служб).
ICMP-Зондирование (сканирование).
ICMP-Зондирование (сканирование) компьютерной системы заключается в посылке ICMP-Запросов на IP-адреса, выделенные узлам компьютерной системы, и анализе ответов на эти запросы. Чаще всего ICMP-Зондирование (сканирование) осуществляется с помощью запросов типа ‘Echo Request’. О зондировании говорят, когда присылается один запрос, о сканировании – когда осуществляется последовательное или одновременное зондирования нескольких (из диапазона) IP-Адресов.
ICMP-Зондирование (сканирование) объекта атаки разрешает, прежде всего, идентифицировать его узлы (выяснить, которым из IP-Адресов, выделенных объекту атаки, действительно отвечают узлы объекта атаки). Показателем наличия узла есть факт получения предусмотренным протоколом ICMP ответом на присланный запрос (на запросы типа ‘Echo Request’ узлы IP-Сетей должны отвечать ICMP-Сообщениями типа ‘Echo Reply’).
Базовым средством ICMP-Зондирования (сканирования) сети (узлов компьютерной системы) есть утилита ping (применяет запросы типа ‘Echo Request’).
Применение утилиты ping для сканирования больших сетей осложнено тем, что за один запуск эта утилита может обработать только один IP-Адрес. Автоматизировать сканирование большого количества сетевых адресов можно с помощью командных сценариев (скриптов) или какой-нибудь из многочисленных специальных утилит (fping, nmap, Pinger и др.).
TCP- и UDP-Зондирование (сканирование).
TCP-Зондирование (сканирование) компьютерной системы заключается в посылке разных видов TCP-Сегментов на IP-адреса, выделенные узлам компьютерной системы. В анализе реакции на эти сегменты с целью выявления состояния (открытые, закрытые или заблокированные (фильтруются межсетевым экраном)) TCP-Портов узлов данной компьютерной системы.
UDP-Зондирование (сканирование) компьютерной системы заключается в посылке разных видов UDP-Датаграмм на IP-адреса, выделенные узлам компьютерной системы. В анализе реакции на эти датаграммы с целью выявления состояния (открытые или закрытые) UDP-Портов узлов данной компьютерной системы.
Зондированием называют процедуру выявления состояния отдельного порта. О сканировании говорят, когда осуществляется несколько последовательных или одновременных зондирований, объединенных общей целью (например, определить открытые порты отдельного узла или определить узлы в каком-либо диапазоне IP-Адресов, в котором открыты определенные порты).
Вид TCP-Сегмента определяется установленными в TCP-Заголовке флажками. TCP-Сегменты с установленным флажком SYN будем называть сообщениями SYN, TCP-Сегменты с установленными флажками SYN и ACK — сообщениями SYN/ACK и т.д.
Рассмотрим наиболее распространенные методы TCP-Зондирований. Заметим, что в рамках отдельного зондирования сообщения всегда направляются на тот же порт.
TCP-Зондирование с полным установлением соединения (с подключением) (TCP connect probe). Осуществляется попытка установить виртуальное соединение по протоколу TCP с одним из портов одного из узлов объекта, с прохождением полной процедуры установления соединения (handshake). Если это удалось, зондирующий разрывает установленное соединение. Исследуемый порт считается открытым, если соединения удалось установить; в другом случае порт считается закрытым или заблокированным.
TCP-Зондирование с незавершенным установлением соединения (TCP half-open probe), или SYN-Зондирование (TCP SYN probe). Осуществляется только первая фаза процедуры установления соединения. Если в ответ на сообщение SYN поступает сообщение SYN/ACK, зондирующий разрывает еще не до конца установленное соединение передачей сообщения RST. Исследуемый порт считается открытым, если в ответ на сообщение SYN были получены сообщения SYN/ACK. Исследуемый порт считается закрытым, если в ответ на сообщение SYN были получены сообщения RST/ACK.
TCP FIN-Зондирование (TCP FIN probe). На исследуемый порт присылается сообщение FIN. Если этот порт закрыт, то, согласно стандарту на протокол TCP (RFC 793), в ответ должно быть прислано сообщение RST.
TCP-Зондирование по методу “рождественской елки” (TCP Xmax Tree probe). На исследуемый порт присылается сообщение FIN/URG/PUSH. Если этот порт закрыт, то, согласно стандарту на протокол TCP (RFC 793), в ответ должно быть прислано сообщение RST.
TCP нуль-зондирование (TCP null probe). На исследуемый порт присылается TCP-Сегмент без установленных флажков. Если этот порт закрыт, то, согласно стандарту на протокол TCP (RFC 793), в ответ должно быть прислано сообщение RST.
Последние три метода не срабатывают для ОС, которые не выполняют соответствующих требований RFC 793 (например, ОС MS Windows).
Метод TCP-Зондирование (сканирование) с полным установлением соединения есть простейшим в реализации, поскольку интерфейс прикладного программирования практически всех сетевых операционных систем содержит соответствующие подпрограммы. В тот же время, это наименее скрытый метод: в журнале регистрации практически любой операционной системы останется соответствующая запись. В отличие от него, другие методы не оставляют следов в журналах регистрации операционных систем (но не в журналах регистрации специальных средств выявления атак J), поскольку не предусматривают установления соединения; поэтому такие методы называют еще методами стелс— (stealth-) зондирования (сканирования).
В отличие от TCP-Сегментов, UDP-датаграммы не имеют флажков. Поэтому UDP-Зондирование не отмечается таким многообразием методов, как TCP-Зондирование. Если порт, на который направлена UDP-Датаграмма, закрыт, в ответ должно быть прислано ICMP-Сообщение ‘Port Unreachable’. Если этот порт открыт, реакция зависит от того, которым именно сервером прослушивается порт; как правило, никакого ответа в таком случае не присылается.
TCP- и UDP-Зондирование (сканирование) объекта атаки дает возможность:
- идентифицировать активные узлы объекта атаки;
- идентифицировать коммуникационные службы (серверы), доступные на узлах объекта атаки;
- идентифицировать операционные системы узлов объекта атаки.
При TCP-Зондировании (сканировании) с полным или неполным установлением соединения показателем того, что какой-либо из IP-Адресов действительно отвечает узлу сети, есть поступление подтверждения того, что по этому адресу есть открытый порт.
При TCP-Зондировании (сканировании) другими методами (из числа перечисленных) и при UDP-Зондировании такими показателями являются поступления подтверждения того, что по этому адресу есть закрытый порт.
Идентификация коммуникационных служб (серверов) и операционных систем осуществляется по номерам открытых портов. За каждой службой, как правило, закреплены те или иные номера портов. Некоторые комбинации открытых портов характерные только для тех или иных операционных систем (например, открытый TCP-Порт 139 указывает на то, что данный узел функционирует под управлением операционной системы семейства MS Windows).
Отдельный сеанс TCP- или UDP-Сканирования по обыкновению, включает или ряд соответствующих (TCP- или UDP-) зондирований с общим номером порта, или ряд соответствующих зондирований с общим адресом узла. Второй вид сканирования применяют для идентификации сетевых служб и операционных систем.
Среди наиболее известных средств TCP- и UDP-Сканирования (зондирования) можно выделить SATAN, nmap, netcat.
Активное исследование реализации стека TCP/IP.
В разных операционных системах стек протоколов TCP/IP реализован тоже по-разному. Исследование реализации стека TCP/IP дает возможность быстро определить тип и даже версию операционной системы узла IP-Сети с высокой степенью достоверности.
Активное исследование реализации стека TCP/IP предусматривает передачу сообщений исследуемому узлу и анализ его реакции на эти сообщения (выполнение тестов).
В качестве примера рассмотрим некоторые из тестов, что выполняются при активном исследовании реализации стека TCP/IP.
Тест путем передачи сообщений FIN (FIN probe). Сообщение FIN (TCP-Сегмент с установленным флажком FIN) присылается на открытый порт. Согласно стандарту на протокол TCP (RFC 793), узел не должен отвечать на такое сообщение. Однако, некоторые из операционных систем отвечают на них, отправляя сообщение FIN/ACK.
Тест путем установления лишнего флажка (Bogus Flag probe). Отправляется сообщение SYN с дополнительно установленным флажком, значение которого не определено спецификацией протокола TCP. Некоторые операционные системы, например, Linux, в пакете, который присылается в ответ, устанавливают этот флажок.
Тест с применением поля TOS ICMP-Сообщений. Проверяется поле TOS (Type Of Service) ICMP-Сообщений “Port Unreachable”. В большинстве реализаций это поле имеет значение 0, однако, иногда используются другие значения.
Наиболее известным (если не единым) средством активного исследования реализации стека TCP/IP есть nmap.
Проведя достаточное количество тестов можно с достаточной достоверностью идентифицировать операционную систему.
Сбор маркеров.
Во многих случаях серверы коммуникационных служб после установления соединения с клиентом выдают текстовый заголовок (маркер), в котором сообщают информацию о себе. Среди этой информации может быть (и, как правило, бывает) название и версия программы, которая реализует сервер. Потому сбор маркеров дает возможность атакующему определить уязвимости программного обеспечения объекта атаки (узнавая названия и версии коммуникационных серверов, он может узнать их уязвимости, воспользовавшись общедоступными базами данных уязвимостей или другими источниками информации, например, андеграундными конференциями или результатами собственных исследований).
Наиболее распространенными средствами сбора маркеров в IP-Сетях есть стандартный клиент telnet и утилита netcat.
Пассивное исследование объекта атаки.
Пассивное исследование объекта атаки заключается в исследовании (анализе) сетевого трафика объекта атаки.
Пассивное исследование объекта атаки дает возможность, кроме того, что раскрыть пароли и другую конфиденциальную информацию, идентифицировать коммуникационные службы, их программное обеспечение и операционные системы узлов объекта атаки. Для идентификации коммуникационных служб могут применяться такие показатели, как номера портов и протоколы прикладного уровня OSI, которые применяются в сети. Для идентификации программного обеспечения коммуникационных служб – маркеры и другие особенности работы на прикладном уровне OSI. Для идентификации ОС – особенности реализации стека коммуникационных протоколов.
Пассивное исследование реализации стека TCP/IP.
Пассивное исследование реализации стека TCP/IP заключается в прослушивании и анализе информационного обмена (сетевого трафика) исследуемого узла IP-Сети.
Пассивное исследование реализации стека TCP/IP, как и активное, может применять разнообразнейшие признаки. Например:
- поле TTL (Time To Live) в заголовках IP-Пакетов (не все операционные системы устанавливают одинаковое значение поля TTL для исходных пакетов);
- поле TOS (Type Of Service) в ICMP-Сообщениях (операционные системы по-разному устанавливают значение этого поля).
Наиболее известным средством пассивного исследования стека TCP/IP есть утилита siphone.
Отследив достаточное количество признаков можно с достаточной достоверностью идентифицировать операционную систему.
Дерзайте, все в Наших руках!
Твитнуть