часть 1 Типы брандмауэров
часть 2 Варианты обхода брандмауэров
часть 3 IDS Системы обнаружения вторжений
часть 5 Honeypot, типы и обнаружение
Давайте посмотрим на некоторые механизмы уклонения от обфускации, называемые полиморфным кодом. Это популярный шаблон не только для обхода IDS-ов, но и для обхода некоторых антивирусов. Здесь мы говорим о возможности видоизменять или модифицировать код. Таким образом, исходный алгоритм по-прежнему работает так, как задумано, но больше не придерживается предсказуемого шаблона. Это также может означать, что код меняется при каждом запуске. Это полиморфная природа, так как он может принимать несколько разных форм. Часто это также означает шифрование компонентов полезной нагрузки. Давайте рассмотрим другой подход, называемый шеллкодом ASCII. Шеллкод ASCII — это еще один способ обойти IDS. В кодировании как метод уклонения широко используется во всей информационной безопасности. Когда вы можете представлять символы, используя кодировку, такую как ASCII, где она не меняет их функции при выполнении, но улучшает шаблон, с которым они отображаются, это может быть правильным способом, особенно для уклонения от сортировки на основе подписи. Точно так же, как полиморфный код, он по-прежнему выполняет одно и то же действие при выполнении. Он представлен таким образом, что его нельзя обнаружить. Давайте рассмотрим несколько других подходов к обфускации. Существует множество различных способов маскировки вредоносных полезных нагрузок очень невинно выглядящими способами.
Одним из них является Unicode, и это позволяет злоумышленнику иметь разные представления одного и того же символа, которые будут выполняться одинаково, но могут избежать обнаружения, поскольку они не придерживаются искомого шаблона. Другой называется зашифрованной или сжатой полезной нагрузкой. Если IDS явно не распаковывает полезную нагрузку или если шифрование, особенно шифрование на транспортном уровне, не расшифровывается перед прохождением через IDS, вредоносные полезные нагрузки могут пройти прямо через нее. Их невозможно обнаружить, потому что они путают его со сжатыми или зашифрованными пакетами. Наконец, есть еще один, называемый сплайсингом сеансов. Некоторые IDS-ы не восстанавливают сеанс до того, как будет выполнено сопоставление с образцом. Например, если злоумышленник может доставлять пакеты с достаточной задержкой между ними, чтобы IDS перестала их собирать и просто пропускала, он может скрыть эту полезную нагрузку и обойти средства управления IDS. Это всего лишь еще несколько способов уклонения от обфускации. Они скрывают атаки таким образом, что они проскальзывают прямо через IDS. Давайте перейдем к другому набору техник уклонения - Фрагментации.
Атака фрагментации
Мы собираемся рассмотреть несколько различных способов обхода IDS путем разбиения IP-датаграмм. Другими словами, мы будем фрагментировать пакеты. Представьте, что злоумышленник пытается обойти IDS, у которого тайм-аут фрагментации составляет 15 секунд. Здесь мы говорим о тайм-ауте повторной сборки IP-фрагмента. Это относится к максимальному количеству времени, в течение которого фрагмент будет храниться в разобранном виде, прежде чем истечет срок его действия и он будет сброшен. Рассмотрим любой хост, разговаривающий по TCP с несколькими проходящими через него фрагментами, которые необходимо собрать заново. Этот тайм-аут повторной сборки фрагмента — это то, что не дает ему бесконечно удерживать незавершенные фрагменты. Предположим, у нас есть 15-секундный тайм-аут на IDS. Затем у нас есть машина жертвы с 30- секундным тайм-аутом повторной сборки фрагментации. Злоумышленник собирается отправить фрагмент номер один, который будет храниться в IDS, а затем передаваться жертве. В этом фрагменте нет ничего плохого. Машина жертвы также держит фрагмент номер один. Далее происходит то, что злоумышленник ждет более 15 секунд, потому что через 15 секунд IDS-ы собираются удалить фрагмент. Затем злоумышленник возвращается и отправляет фрагмент номер два в IDS, который затем проходит на машину жертвы. У IDS есть фрагмент номер два и только номер два, потому что он потерял номер один. Но у жертвы есть оба фрагмента, и оба фрагмента вместе образуют вредоносную полезную нагрузку. IDS никогда не видел все это вместе, потому что он отбрасывал первый фрагмент после этих начальных 15 секунд. Следовательно, при атаке с фрагментацией злоумышленник просто разрушает этот
пакет и убеждается, что IDS никогда не получит все это и сможет идентифицировать вредоносную полезную нагрузку.
Эта конкретная атака работает, когда тайм-аут на IDS меньше, чем тайм-аут на машине жертвы. Но злоумышленник все еще может использовать эту атаку, когда все наоборот. Когда тайм-аут IDS больше, чем у жертвы, злоумышленник снова фрагментирует пакет, отправляет достаточное количество пакетов, содержащих вредоносную полезную нагрузку, жертве, ждет, пока не будет превышено время ожидания фрагментации жертвы, а затем отправляет дополнительные пакеты в течение времени ожидания фрагментации. IDS, которые являются поддельными и заставляют IDS отбрасывать весь пакет. Поэтому это работает и наоборот, но результат все равно тот же. Жертва — единственная машина, которая в конечном итоге поддерживает все фрагменты, создающие полезную нагрузку, в то время как IDS либо отбрасывает часть вредоносной полезной нагрузки, либо получает другие фрагменты, которые делают ее недействительной.
Атака перекрывающимися фрагментами
Порядковые номера TCP помогают упорядочивать наши пакеты, и они делают это за счет комбинации порядковых номеров, номеров подтверждения и размера самого пакета. Когда все работает правильно, все выстраивается. Номер подтверждения становится суммой порядкового номера и длины предыдущего пакета. Но что происходит, когда он не выстраивается правильно? Ну, это называется атакой перекрывающихся фрагментов. Название говорит само за себя, но давайте пройдемся по нему. В этом сценарии давайте снова добавим нашего злоумышленника, нашу IDS и нашу жертву. В обычных условиях злоумышленник собирается отправить данные в IDS, а затем снова отправить их в виде фрагментированного пакета. Но у нас есть три фрагмента, и все наши порядковые номера совпадают. IDS, естественно, передаст их на машину жертвы, и пакет будет повторно собран на другом конце. Но давайте уберем это и попробуем немного по-другому. Мы собираемся заставить злоумышленника отправить фрагменты таким образом, чтобы они перекрывались. Хитрость атаки с перекрывающимися фрагментами заключается в том, что разные машины будут собирать перекрывающиеся фрагменты по разному. Скажем, приоритет фрагмента три и фрагмента два над фрагментом один, но когда они передаются на компьютер жертвы, он делает это наоборот. Он отдает приоритет первому фрагменту, а не трем и двум, и эти фрагменты не только перекрываются, но и отправляются не по порядку. То, как эти машины собирают их вместе, определяет разницу между восстановлением законного пакета, содержащего вредоносную полезную нагрузку, и восстановлением пакета, который затем отбрасывается, поскольку он выглядит искаженным. Хитрость заключается в построении перекрывающихся фрагментов таким образом, что IDS — это тот, кто не видит вредоносную полезную нагрузку в пакете, а жертва — тот, кто реконструирует эти перекрывающиеся фрагменты таким образом, чтобы выполнить содержимое.
Атака Time-to-Live
В этом сценарии у нас снова есть наш злоумышленник, наша IDS и наша жертва. Теперь атакующий собирается отправить фрагмент с высоким значением TTL. Затем этот фрагмент пройдет весь путь до жертвы. Значение TTL достаточно велико, чтобы оно достигло пункта назначения. Затем злоумышленник собирается отправить еще один фрагмент, но на этот раз с низким TTL и плохой полезной нагрузкой. TTL будет достаточно высоким, чтобы достичь IDS, но достаточно маленьким, чтобы не достичь жертвы. Затем он отправит еще один фрагмент, также с высоким TTL, и он дойдет до жертвы. Наконец, злоумышленник может повторно отправить вторую часть, но на этот раз с разумной полезной нагрузкой и высоким значением TTL, чтобы она прошла весь путь до жертвы. Хитрость здесь в том, что IDS, получив эту вредоносную полезную нагрузку из начального фрагмента с низким TTL, будет игнорировать пакет. Это не выглядит разрешённым, но поскольку жертва никогда не получала плохую полезную нагрузку, она получала только согласованные фрагменты, а затем собирала эти фрагменты в пакет, который содержал вредоносную полезную нагрузку. Вся предпосылка принуждения IDS к чтению недопустимых пакетов иногда известна как атака вставкой, и это попытка запутать ее и скрыть основную атаку, которая существует в этих других запрещенных пакетах.
DoS-атака и флуд-атака
Есть много других способов обойти IDS, и о дин из этих методов может быть реализован с помощью атак типа «отказ в обслуживании». Атака DoS не обязательно должна отключать систему, и она также может привести к тому, что людям будет сложно выполнять свою работу. Вот пример: злоумышленник может решить залить IDS трафиком, который заставит IDS выдавать предупреждения. Этот трафик, возможно, никогда не предназначался для использования какого-либо скрытого риска в системе, но если IDS отправляет целую кучу предупреждений администраторам, и они заняты их обработкой, злоумышленнику гораздо легче проскользнуть среди этого обширного диапазона угроз. Существует еще одна атака, предназначенная для эксплуатации целевой системы; иногда это называется атакой с флудом, потому что вы будете заливать IDS предупреждениями. В прошлом существовали инструменты, такие как Stick и Snot, специально предназначенные для того, чтобы IDS генерировала предупреждения. Оповещения могут сильно затруднить идентификацию законных атак из-за большого количества шума. Вы также можете увидеть эту атаку, называемую False Positive Generation. Да, IDS генерирует оповещения, нет, это не оповещения о каких-либо действиях, которые действительно собираются использовать систему, стоящую за IDS. Генерация ложных срабатываний не только связывает административные ресурсы, но и ограничивает способность системы обнаружения вторжений проверять трафик. Это может привести к отказу в обслуживании IDS, или, если генерируется достаточно трафика, это может привести к исчерпанию емкости диска.