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

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

В статье автора (www.ktwo.ca/c/ADMmutate-README) был тщательно рассмотрен полиморфный управляющий код. Статья была опубликована в начале 2001 года. В коде предусмотрено использование известных на сегодняшний день уязвимостей и уязвимостей, которые могут появиться в будущем. Основой для получения полиморфного кода является постоянно присутствующая возможность вычисления одной и той же величины различными способами. Например, если при атаке нужно вычислить величину, равную четырем, то ее можно вычислить любым из следующих способов: 2 + 2, 3 + 1, 6 - 2 и т. д. Есть буквально бесконечное число способов вычисления заданной величины. Именно этим занимается код атаки, использующий некоторые машинные команды. У исследуемой сетевой трафик системы обнаружения вторжения нет возможности отождествить выражение, вычисляющее искомую величину как 2 + 2, с выражением, вычисляющим эту же величину как 3 + 1. Она получает только низкоуровневые машинные команды и сравнивает их с известным образцом. Сетевая система обнаружения вторжения не интерпретирует машинные команды, как это делает целевой хост-адресат.

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

Таблица 16.1.

Видоизменения управляющего кода_

Адреса Оригинальный код

Возможная модификация оригинального кода № 1

Возможная модификация оригинального кода № 2

0х804ЭЬ30
nop
push
?ebx
das

0x8049b01
nop
cmc

р j s h f

0х8049ЫИ2
nop
pep
£edx
inc
4ecz
0x8049b03
nop
xchg
?еаяг%edx
xchg
^eaXfSsebp
Сх8(349Ь0^
nop
lahf

pep
3edi
0x8049b05
nop
ass

push
^edi
Ок8049Ь05
nop
push
®esi
dec
3ebD
0х8О49ЬО7
nop
push
^esp
dec

Cx8G49bOS
nop
clc

lahf

Ск5О49Ь09
nop
push
^edx
:kc hg
kaz, %edx
CxS043bCla
nop
push
^esi
push
^ebx
0х8049ЬЭЬ
nop
xchg
*еакг%ebx
pu s h f

OxSQ43bOc
nop
dec
&ebp
inc
^esp
OxSQ43bOd
nop
pop
?ec*
fwai t

OxBQ49bOe
nop
inc
?edi
lahf

OxSQ49bOf
nop
dec
?edi
pop
^edi
0xSQ49bl0
nop
inc
?eCE
dec
4ecz
0xSQ49bl1
no-p
sahf

dec
leax
0xSQ43bl2
nop
pop
?edi
с wtl

CxS049bl3
nop
sti

de с
^esp
0х8049Ы4
jmp 0x8O4 9b3S
push
ieED
xch<j
ieax, Ssebx
Адреса

Оригинальный код

Возможная модификация оригинального кода № 1

Возможная модификация оригинального кода № 2
0x9049bl6
pop
iesi
repz
dec îeax
sarb
$0x45, f&ecx)
0x9049bl7
mov
î-EEi , ЗеЬх
push
^ebp
mov OxffffffSO (%ebx) r r;ebp
0*9049Ы9
mov
î.esi, Sedi
dec
%esp
dec ledi
0 х 9 0 4 9Ь d
add
$0x7,^edi
pop
%eax
mov
$0xd2 0c5 ;>e5, led!
0*9049Ые хог
leax,Seax
locpe
QxS04dalb
imuL 50x36, 0xee498S45 (%esi),3ebx
0x9049b20
s tos
%al,^es:(^edi)
js
QxSQ4d994
dec %ecx
0x9049b21
mov
ï.edi, îecx
da a

and Sah,ici
0x904 9Ь2 3
mov
&e si,
sbb
$0x15r%a
jl QxS04da3d
0x9049b25
s tos ïeax,
ïes: [S sdi)
pop
^.eax
out %al,$0x64
0x9049b26
mov
î.edi, Sedx
out
£eax, (5idx)
add ledi,leax
0x9049b29
ЛОГ
leax,îeax
push
%ebp
sari Scl, 0x4 caaa2a0 (lebp,ieax,2)
0x9049b2a
stos leax,
les : (Sedi)
dec
%ed;
HOD
0*9049Ь2Ь
mov
$0xS,3 a 1
ÎP
QxS04d966
cmp 0x5cdS7 33 (%eax) r ^ebx
3x9049b2d
add.
$0x3,Sal
movl
ies: (^ecx) ,îss
mov si
ids : (Sesi) , &es : f^edi )
0 к 9 0 4 9Ь2 f
int
$0x80
mov

$0^:1 Бс5Ь7 Sc, ïebp

push %ss
0к9О49Ъ31 лог
\eb:x,Sebx
adc iedi,
(iedi)
int $0x14
0x804ЭЬЗЗ
mov

loopr.e 0xS04d9aC
push $0xbf£ff506
0х9О49Ъ35 in с
\ eax
Dush
^ebp
xch'g $dh, ich
0x9049b36
int
$0x80
xchç
^eax, Ssecx

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

Очевидно, что большинство систем обнаружения вторжения не всегда вполне готовы к немедленному использованию. Для достижения долговременного успеха они нуждаются в частом обновлении и постоянном обслуживании. Системы обнаружения вторжения, у которых есть надежда обнаружить неизвестные ранее типы атак, являются аномалией среди систем обнаружения вторжения, основанных на сравнении сигнатур. Подобные системы не используют сигнатуры вообще. Вместо этого они контролируют все сетевые соединения и изменения в них, для того чтобы попытаться построить обобщенный образ типичного трафика. При обнаружении статистических аномалий подается сигнал тревоги. В результате самообучения и накопления энтропии в своих базах данных система обнаружения вторжения со временем, теоретически, становится все более совершенной и точной. Есть лишь один вопрос. Насколько эффективна система обнаружения вторжения, основанная только на обнаружении аномалий сетевого трафика? Ведь атаки могут маскироваться под повседневную деятельность сети. В этом случае при совпадении характерных признаков атаки с признаками повседневной деятельности сети атака может быть не обнаружена. Как это часто бывает, не так уж и плохо от каждого понемногу позаимствовать чуть-чуть полезного. Основанная на сравнении сигнатур хорошая система обнаружения вторжения, дополненная средствами обнаружения атаки по анализу аномалий сетевого трафика, должна гарантировать контроль большинства событий вторжения.

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

Резюме

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

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

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

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

Вполне допустимо аннулировать искаженные TCP/IP-пакеты в случае ошибки. В конце концов, законная система передаст их повторно. Но на более высоком уровне так делать уже нельзя. Сетевая система обнаружения вторжения может быть чрезвычайно мало осведомлена о протоколах приложения и передаваемой ими информации. Полиморфные атаки являются серьезной проблемой, которую нельзя легко разрешить в рамках систем обнаружения вторжения, основанных чисто на сравнении сигнатур. Число форм представления полиморфных атак практически бесконечно.

Уклонение от систем обнаружения вторжения продолжает оставаться образом жизни в Интернет. Можно наблюдать постоянно обновляемый поток инструментальных средств и способов, которые специально были разработаны и усовершенствованы для усложнения обнаружения вторжения (главным образом в результате усовершенствования обычных поделок хакера-новичка или любителя (script kiddie)). Следует постоянно контролировать и исследовать характеристики работы сети, для того чтобы получить представление о том, что следует ожидать во время повседневной деятельности.

Конспект

Принципы работы, основанной на анализе сигнатур системы обнаружения вторжений

• Возможности сетевых систем обнаружения вторжения определяются их базами сигнатур. Именно из этого следует необходимость повторных обновлений баз данных сигнатур сетевых систем обнаружения вторжения по мере появления новых уязвимостей. Только так можно защититься от использующих их атак.

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

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

Уклонение на уровне пакетов

Большинство разработчиков реализует протоколы TCP/IP с небольшими отклонениями от стандарта. Из-за этого сетевые системы обнаружения вторжения испытывают затруднения при построении представления сетевых соединений между другими системами. Получающееся при этом противоречивое представление позволяет злоумышленнику избежать обнаружения.

• Хосты могут не строго придерживаться спецификаций, допуская обработку некоторых типов пакетов, которые не могут обработать сетевые системы обнаружения вторжения.

• Сетевые системы обнаружения вторжения не получают достаточно информации из передаваемых по каналам связи данных для восстановления соединений TCP/IP. Благодаря предусмотренным в стеке TCP/IP опциям и состояниям возможны некоторые двусмысленности относительно интерпретации хостом принимаемой информации. Переданной во время сеанса информации недостаточно для ее правильной интерпретации.

• Программы jragrouter и congestant являются эффективными инструментальными средствами уклонения от обнаружения. В них реализован ряд зарегистрированных способов уклонения от сетевой системы обнаружения вторжения.

Уклонение на уровне приложений

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

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

• Для представления данных существуют многочисленные режимы кодирования. Опции кодирования Unicode, Unix - Unix (UUENCODE (Unix to Unix Encoding) -кодирование Unix - Unix. Метод преобразования файлов из двоичного формата в текстовый и обратно для обеспечения пересылки по сети Интернет сообщений при помощи электронной почты) или шестнадцатеричного кодирования описаны во многих прикладных протоколах. Подобное альтернативное представление данных усложняет развитие средств обнаружения вторжения.

Уклонение при помощи морфизма кода

• Обычно всегда существует более одного способа что-либо сделать. Когда обнаружение зависит от идентификации прикладного кода, то есть много способов генерации кода атаки.

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

Часто задаваемые вопросы

Вопрос: Сколько нужно систем обнаружения вторжения для повышения эффективности их работы?

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

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

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

Для начала просмотрите следующие сайты:

• апЦэес (http://anti.security.is);

• РЬгаск (www.phrack.org);

• Раске181огт (http://packetstormsecurity.org);

• ТесЬпо^ошс (www.technotronic.com).

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

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

Уклонение на уровне приложений | Защита от хакеров корпоративных сетей | Обзор автоматизированных средств оценки безопасности


Защита от хакеров корпоративных сетей



Новости за месяц

  • Июнь
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс