220 likes | 441 Views
Технологии Реализации Атак. Классификация атак. 1. По характеру воздействия Активное Пассивное 2. По цели воздействия нарушение конфиденциальности информации Нарушение целостности информации Нарушение работоспособности(доступности) системы 3. По условию начала осуществления воздействия
E N D
Классификация атак 1. По характеру воздействия Активное Пассивное 2. По цели воздействия нарушение конфиденциальности информации Нарушение целостности информации Нарушение работоспособности(доступности) системы 3. По условию начала осуществления воздействия Атака по запросу от атакуемого объекта Атака по наступлению ожидаемого события на атакаемом объекте Безусловная атака 4. По наличию обратной связи с атакуемым объектом С обратной связбю Без обратной связи(однонаправленная атака) 5. По расположению атакующего относительно атакуемого объекта Внутресегментное Межсегментное 6. По количеству атакующих Распределённая Не распределённая 7. По уровню модели OSI на котором осуществляется воздействие
Атаки на переполнение буффера Основа атак с использованием этой уязвимости - принцип функционирования операционных систем, где программа получает привилегии и права запустившего ее пользователя или процесса. Использование данной уязвимости подразумевает изменение хода выполнения привилегированной программы, например, запуск командной оболочки с правами администратора. Реализации атаки требует решения двух подзадач: • Подготовка кода, который будет выполнятся в контексте привилегированной программы. • Изменение последовательности выполнения программы с передачей управления подготовленному коду.
1. Пути решения подзадачи подготовки кода • Подготавливаемый код представляет собой исполняемый машинные инструкции соответствующего процессора и может передаваться в программу в качестве ее параметра или команды. • код не передается в программу, так как он уже присутствует в ней самой или в ее адресном пространстве и требуется лишь его параметризация. • Если параметризированный код уже присутствует в адресном пространстве программы, то подготовки кода не требуется.
Способы передачи управления подготовленному коду: • Искажение адреса возврата из функции int namelen (void) { char name[21]; gets(name); return strlen(name); }
Способы передачи управления подготовленному коду: • Искажение указателя функции void dummy(void) { printf("Hello world!\n"); } int main(int argc, char **argv) { void (*dummyptr)(); char buffer[100]; dummyptr=dummy; strcpy(buffer, argv[1]); // Уязвимость (*dummyptr)(); }
Способы передачи управления подготовленному коду: • Искажение таблиц переходов • Искажение указателей данных foo(char * arg) { char * p = arg; // уязвимый указатель char a[40]; // переполняемый буфер gets(a); // применение gets() реализует уязвимость gets(p); // искажение кода }
Классификация атак по переполнению буфера
FORMAT STRINGS fprintf(), printf(), sprintf(), snprintf(), vfrintf(), vsprintf(), vsnprintf(), setproctitle() и syslog() Форматная строка выполняет следующие задачи: • Указывает сколько аргументов передано функции. • Как интерпретировать переданные аргументы и конвертировать их в строку символов | переменные, сохр регистры, | рост | активационные записи вызова других функций | стека |-----------------------------------------------------------------------| | параметры, переданные в функцию; | | адрес возврата из функции; | |------------------------------------------------------------------------| | сохранённые регистры; | | локальные переменные функции; |
FORMAT STRINGS Возможность чтения из стека • при вызове функция printf() думает, что в стеке содержится достаточное количество аргументов и потому читает из него столько, сколько указано в форматной строке. Возможность записи в память • Использование спецификатора %n printf(“1234%n”, &i) Данная уязвимость была найдена во многих программных продуктах, в частности были написаны эксплойты: • Remote exploits: wu-ftpd, BSD ftpd, proftpd, rpc.statd, PHP 3 и 4, TIS Firewall Toolkit • Local exploits: lpr, LPRng, ypbind, BSD chpass и fstat, libc with localization. • Червь ramen использовалданнуюуяывимостьв wu-ftpd, rpc.statd, LPRng.
Dos атаки NUKE • Имитация ошибки маршрутизации WINNUKE • Соединение с WINDOWS-машиной через 139-й порт и посылка туда нескольких байтов OOB-данных ICPM • PING с большим размером пакета (Ping-flood) SPING • сильно фрагментированный ICMP-пакет(кусочками до одного килобайта) большого размера (на пару байт больше 64 килобайт). LAND • посылается SYN-пакет с адресом отправителя, совпадающим с адресом получателя, жертвы. TEARDROP • Пересылка вложенных фрагментов BACKORIFICE • в 135-й порт посылается некая "левая" датаграмма с адресом отправителя, измененным на адрес другой NT-машины
BOTNET and DDOS • AgoBot - Пожалуй самый известный/лучший/с большими возможностями, такими как: DoS/Граббинг паролей/Стелс/Обход фаерволлов и множество других возможностей. В данный момент насчитывается около 100 модификация этого бота. • PhatBot - Нашумевшая модификация AgoBot'a с кучей возможностей, отличительная черта: самораспространение через баги в RPC, LSASS и т.п. • Rx-Bot - Достаточно новый бот, не уступающий возможностям AgoBot. Основные команды, используемые в ботнетах: • cycle <seconds> <channel> - уйти на N-кол-во времени с канала, а потом зайти. • die – самоубийство. • execute <visibility> <file> [parameters] - запустить файл на компьютере жертвы. • download <url> <destination> <action> - скачать файл на комьютер-зомби. Очень полезно когда нужно затроянить всех зомби другим трояном или модификацией бота. • ping <host> <# of pings> <packet size> <timeout> - пинг хоста.
Сетевые черви К данной категории относятся программы, распространяющие свои копии по локальным и/или глобальным сетям с целью: • проникновения на удаленные компьютеры; • запуска своей копии на удаленном компьютере; • дальнейшего распространения на другие компьютеры сети. Для своего распространения сетевые черви используют разнообразные компьютерные и мобильные сети: электронную почту, интернет-пейджеры, файлообменные (P2P) и IRC-сети, LAN, сети обмена данными между мобильными устройствами (телефонами, карманными компьютерами) и т. д.
Программные закладки Программные закладки могут выполнять перечисленные ниже действия: • Вносить произвольные искажения в коды программ, находящихся и оперативной памяти компьютера (программная закладка первого типа); • Переносить фрагменты информации из одних областей оперативной или внешней памяти компьютера в другие (программная закладка второго типа); • Искажать выводимую на внешние компьютерные устройства или в канал связи информацию, полученную в результате работы других программ (программная закладка третьего типа). По методу их внедрения в компьютерную систему: • программно-аппаратные закладки • загрузочные закладки • драйверные закладки • прикладные закладки • исполняемые закладки • закладки-имитаторы • замаскированные закладки
Трояны • Троянской программой (троянцем, или троянским конем) называется программа, которая, являясь частью другой программы с известными пользователю функциями, способна втайне от него выполнять некоторые дополнительные действия с целью причинения ему определенного ущерба; программа с известными ее пользователю функциями, в которую были внесены изменения, чтобы, помимо этих функций, она могла втайне от него выполнять некоторые другие действия.
Integer overflow int main(int argc,char **argv) { //создаем переменные для хранения данных char chLogin[100]; char chPassword[100]; int intPasswordLength; //заносим в них пользовательские данные strcpy(chLogin,argv[1]); strcpy(chPassword,argv[2]); intPasswordLength=atoi(argv[3]);//флаг администратора int admin=0; char chOriginalPassword[100]="administrator"; //простаяпроверка if(intPasswordLength<1) intPasswordLength=0; intPasswordLength++; if(chLogin="admin") { admin=1; for(i=0;i<=intPasswordLength;i++) if((chPassword[i])!=chOriginalPassword[i])admin=0; } setUserStastusAdmin(admin); }
В Windows NT 3.5–4Internet Explorer и Netscape Navigator при заходе по ссылке отправляют на сервер логин и хэш пароля пользователя. • Guest аккаунт с пустым паролем. Открыта на чтение папка %SystemRoot%\Repair в которой хранится резервная копия sam-файла • Анонимный пользователь, обладает правами на просмотр списка пользователей, разделенных ресурсов и некоторых (между прочим, достаточно многих) ветвей системного реестра. Ветвь реестра <HKLM\Software\Microsoft\Windows\CurrentVersion\Run> доступна для чтения и модификации. • Анонимным пользователям доступен специальный ресурс IPC$ (inter-process communication). Злоумышленник получает возможность запускать User Manager для просмотра пользователей и групп, Event Viewer для просмотра журнала событий, а так же другие средства удаленного администрирования, основанные на протоколе SMB. • В Windows NT password policy доступны всем, в том числе и анонимному пользователю (даже после установки Service Pack 3!). Злоумышленник сможет узнать: минимальную длину пароля, как часто меняются пароли, и какое количество неудачных попыток регистрации блокирует учетную запись (если блокировка включена). Также, в policy открытым текстом хранятся предыдущие используемые пароли.
Компания Microsoft утверждает, что Windows NT позволяет ограничить рабочие станции, с которых пользователь может входить в систему. Прикладной протокол SMB реализуется поверх транспортных протоколов, совместимых с интерфейсом NetBIOS. А при установлении соединения по протоколу NetBIOS, сервер проверяет имя, сообщенное ему клиентом, а не его IP адрес! • В базе MIB Windows NT среди содержится следующая информация: · Таблица сервисов, запущенных на сервере, включая название и состояние сервиса · Число парольных нарушений, зарегистрированных на сервере · Тип разграничения доступа (на уровне пользователей или на уровне ресурсов) · Перечень сессий, включая имена станций клиентов и состояние сессии · Перечень учетных записей сервера · Перечень разделяемых ресурсов сервера, с указанием локальных путей • функция NtAddAtom из ntoskrnl.exe не контролирует значение аргумента, указывающего адрес для записи результатов успешности своей работы.