50 способов обойти систему обнаружения атак
Фред Коэн (Fred Cohen)
Опубликовано: dl, 17.04.02 01:02
перевод Алексея Лукацкого, НИП "Информзащита"
Предисловие переводчика: небольшое введение к оригинальной статье было удалено, т.к. оно не относилось к делу. В нем описывалось как к Фреду пришла идея написать этот материал. Я его пропустил. Единственное, что надо добавить, - автор предупреждает, что к этому материалу надо относиться одновременно и серьезно и с определенной долей иронии. Многие пути применимы только для ОС Unix.
- Вставка посторонних символов в атаку, что обычно приводит к невозможности ее обнаружения. (Примечание переводчика - это касается систем обнаружения злоупотреблений, которые используют сигнатуры атак).
- Использование табуляций вместо пробелов в командах. Такое изменение разделителя может также привести к невозможности обнаружения атаки.
- Очень близкий путь к п.2. Вы могли бы изменить символ разделителя в системе (например, на %), что приведет к определенным проблемам с системами обнаружения атак.
- Измените стандартную последовательность действий при атаке. Например, если атака одинаково осуществляется и при 'a;b;c' и при 'b;a;c', то большинство систем обнаружения атак обнаружит первый вариант реализации атаки, но "заглохнет" на ее вариации.
- Разделите атаку между несколькими пользователями. Если взять пример выше, то 'a;b' осуществляет первый пользователь, а 'c' - второй. Такое разделение не обнаруживается многими системами обнаружения атак.
- Разделите атаку между несколькими сессиями (сеансами). Например, в такой последовательности: Login -> 'a;b' -> Logout -> Login -> 'c'.
- Разделите атаку между несколькими удаленными IP-адресами/системами. Например, с узлов X и Y запустите 'a' с X, 'b' с Y, а затем 'c' опять с X.
- Определите макрос для команды, используемой в атаке. Например, для команды 'cp' определите макрос '$ZZ' и в дальнейшем используйте его вместо 'cp'.
- Определите макрос как параметр, используемый в атаке. Например, используйте '$P' вместо строки '/etc/passwd'.
- Создайте скрипт, который заменит команды, используемые при атаке. Если тщательно реализовать эту операцию, то система обнаружения атак не сможет связать вместе название скрипта и команд для атаки, что приведет к ее пропуску.
Дополнительная атака - добавьте комментарий к строке атаки.
- Используйте различные команды для выполнения одинаковых функций. Например, в Unix 'echo *' это почти то же самое, что и 'ls'.
- Измените имена в атаках. Например, если атака использует временный файл 'xxx', то измените его на 'yyy'.
- Создайте code-book translator для ключевых слов атаки. Это может быть выполнено пересылкой всех команд атаки через фильтр с использованием 'sed' для строковых замен.
- Кодируйте атаку в кодировке 'ebcdic' и измените тип терминала на 'ebcdic'. Система обнаружения атак не может определить атаки в различных кодировках.
- Реализуйте атаки по зашифрованному каналу.
- Используйте постфиксную нотацию для передачи данных или команд атаки, а затем возврат обратно по ее окончании. Система обнаружения атак не сможет распознать команды, посланные в таком виде. (Примечание переводчика - главное, чтобы атакуемая система тоже смогла понять обратный порядок).
- Включите полнодуплексный (full duplex) режим соединения с целью атаки. Дополнительные символы, создаваемые в этом режиме, будут путать систему обнаружения атак.
- Смешайте несколько атак, чередуя команды из каждой. Система обнаружения атак не должна правдоподобно распознавать ни одну из них.
- Кодируйте результаты атак таким образом, чтобы они не совпадали с шаблонами и не могли быть использованы для обнаружения атак. Например, вместо того, чтобы сразу послать себе по почте файл паролей, используя ошибку в sendmail, пропустите этот файл через скрипт 'sed' и замените все символы ':' на '-'. Тем самым, вы несущественно измените файл паролей, который уже не будет соответствовать шаблону.
- Атака "пропускается" через скрипт замены символов, написанный на awk. Это вводит в заблуждение систему обнаружения атак.
Дополнительная атака - Выполните команды, выбираемые из таблицы выполненных перед этим команд по номеру строки этой таблицы. Например, для выполнения команды 'dir *.com' вы могли бы дать команду '15 *.com'.
- Подавите порт модуля слежения. Например, вы могли бы посылать echo на порт модуля слежения, тем самым делая невозможным прием других данных.
- Пошлите системе обнаружения атак пакеты PING большого размера. Многие системы будут выведены из строя.
- Уничтожьте систему обнаружения атак нападая на узел, на котором она установлена. Скомпрометировав этот узел, вы сможете вывести из строя и саму систему обнаружения атак.
- Создайте ложные записи в журналах регистрации для введения в заблуждение системы обнаружения атак. Например, создайте между событиями, характеризующими атаку, ложное событие, приводящее к обману системы обнаружения атак.
- Займите все дисковое пространство, выделенное для системы обнаружения атак. Например, вы можете создать очень много событий, которые переполнят журналы системы обнаружения атак и не позволяет ей регистрировать остальные атаки.
- Остановите процесс генерации и сбора данных об атаках. Например, вы можете породить большое число процессов, тем самым не давая создать системе обнаружения атак процесс для сбора необходимых данных.
- Заставьте систему обнаружения атак прервать соединение. Например, некоторые системы обнаружения атак могут завершать соединение с атакующим узлом. Вы можете создать трафик от узла, который вы хотите атаковать. Система обнаружения атак будет блокировать все пакеты, исходящие от скомпрометированного узла, тем самым давая вам возможность атаковать этот узел так, как вам надо.
- Повтор
- Повтор
- Используя редактор 'emacs' команды атаки заносите в буфер 'cmd' вместо набора на клавиатуре. Система обнаружения атак будет "видеть" только нажатия "горячих" клавиш, в то время, как интерпретатор команд на компьютере жертвы будет получать команды атаки. (Примечание переводчика - перевел криво, но смысл в целом понятен).
Дополнительная атака - Осуществляйте атаку очень медленно. Т.к. размеры буфера для хранения регистрационных данных ограничены, то ваши первые команды для атаки могут быть потеряны к тому моменты, когда вы реализуете последние команды атаки.
- Измените таблицу маршрутизации, чтобы избежать попадания трафика к системе обнаружения атак.
- Небольшая модификация предыдущего примера.
- Используйте маршрутизацию источника, чтобы направить составляющие атаки по различным маршрутам, тем самым обманывая одиночные системы обнаружения атак.
- Начните исходящую сессию с жертвой через модем и по этому соединению проведите атаку. Сетевые системы обнаружения атак пропустят это нападение.
- Измените инфраструктуру между жертвой и системой обнаружения атак. С системах удаленного управления и сетевых системах обнаружения атак часто достаточно для этого изменить маршрутизацию трафика (например).
- Используйте промежуточный узел. Вашу атаку смогут блокировать, но в этом случае очень трудно отследить источник атаки, особенно в том случае, если ваши противники не умеют этого.
- Начните атаку с редко используемого или неиспользуемого порта. Очень часто системы обнаружения атак не контролируют такие порты.
- Используйте модифицированные протоколы, типа тех, которые обращают байты в слова (см. для примера PDP-11 и VAX).
- Используйте IPX над IP. Система обнаружения атак возможно обратит внимание на IP-пакеты, но не поймет их содержание.
- Используйте различные туннелированные протоколы для атаки.
Дополнительная атака - определите свой собственный протокол и приложение и атакуйте через них.
- Атаки через коммутируемые соединения. Сетевые системы обнаружения атак никогда не обращают внимания на такие соединения. (Примечание переводчика - достаточно спорный момент. По крайней мере система RealSecure контролирует такие соединения).
- Создайте большое число ложных событий для увеличения уровня "шума" для системы обнаружения атак. Это серьезно увеличит время и ресурсы, затрачиваемые на обнаружение реальной атаки.
- Вставьте команды атаки внутрь макроса WinWord. Возможно система обнаружения атак не сможет обнаружить такую атаку.
- Вставьте команды атаки внутрь макроса различных программных пакетов (PowerPoint, Excel, Access, 123 и т.д.). Возможно система обнаружения атак не сможет обнаружить такую атаку.
- Поместите атаку в скомпилированную программу (т.е. троянский конь) и пусть жертва загрузить и выполнит этот файл.
- Используйте редко используемые протоколы для атаки. Возможно система обнаружения атак не сможет интерпретировать пакеты этого протокола.
- Транслируйте атаку на другой язык, отличный от того на котором была впервые опубликована оригинальная версия.
- Используйте нетехнические меры для атаки (например, социальный инжинириг). Т.к. системы обнаружения атак оперируют только битами и байтами, то многие из атак, используемых сегодня, не будут обнаружены.
- Нападайте на любой узел, функционирующий не под управлением Unix. Почти все существующие системы обнаружения атак не обнаруживают атаки, направленные не на Unix. (Примечание переводчика - этот путь уже давно устарел).
- Используйте одну из тысяч атак, пока не обнаруживаемых системами обнаружения атак.
Дополнительная атака - создайте свою атаку.