Пассивный снифинг позволяет перехватывать лишь ту часть трафика, которая физически проходит через данный узел.
Для перехвата трафика карту необходимо перевести в неразборчивый режим, в котором на IP-уровень передаются все принятые пакеты.
Перевод интерфейса в неразборчивый режим не проходит бесследно и легко обнаруживается утилитой ifconfig.
Никакой авторизации для обновления ARP-таблицы не требуется!
Некоторые операционные системы самостоятельно обнаруживают факт захвата своего IP-адреса посторонним узлом.
Xploits. How to? / Эксплоиты под *nix для начинающих
Hi-Tech (hi-tech@nsd.ru,
Очень часто требуется добыть важную информацию, упрятанную на вражеском сервере. В большинстве случаев эта информация рядовому пользователю системы недоступна, поэтому встает вопрос о повышении прав в системе, разрешается который при помощи специальных программ – эксплоитов.
Эксплоиты – специальные программы, использующие уязвимости в том или ином компоненте системы или сервисе с целью повышения или получения прав в системе либо для деструктивных целей, например, DOS-атак. Для поиска уязвимостей чаще всего берутся сервисы или компоненты системы, запущенные с высокими привилегиями, или приложения, принадлежащие руту, у которых установлен бит SUID/SGID. Практически все программные эксплоиты используют уязвимости класса buffer overflow. Как ты, наверное, уже догадался, взломщик, а, точнее, shell-код (набор машинных инструкций, который заполняет собой переполненный буфер), встроенный в эксплоит, получит права дырявого приложения и предоставит их атакующему, например, в виде открытого на каком-либо порту shell’а с повышенными правами. Немного по-другому обстоят дела с DoS-эксплоитами, shell-код которых представляет из себя своего рода «кракозябру», не имеющую никакого лексического значения, и поэтому приложение, пытаясь понять, что же это такое, сваливается в кору (core), или, говоря простым языком, глючит и зависает. Если ты не знаешь, что значит выпадать в core, приведу аналогичный пример из Винды, с которым ты уж точно не раз сталкивался: программа зависает и выдает окошко «programm.exe – Ошибка приложения» примерно такого содержания: «Инструкция по адресу 0x12121212 обратилась к памяти по адресу 0x13131313. Память не может быть 'read'». Отличие лишь в том, что *nix-системы пишут на диск своеобразный дамп памяти, по которому можно определить причину ошибки.
Существует множество различных типов переполнения буфера, соответственно, и причин столько же. Чтобы наглядно показать тебе, каким образом получаются переполнения, я приведу пример.
#include
int main
{
char buff[10] = {0}; //как ты видишь, в самом начале все элементы.
// выделенного под переменную буфера представляют 10 нулей.
// видно, что их может быть максимум 10! Т.е. программист рассчитывает, что
// мы введем обязательно десятизначное число.
printf(«Enter your 10-digit number»); // Вводим число…
scanf(buff, «%s»); // А вот мы и добрались до бага, функция scanf в данном
// случае не проверяет длину введенного нами числа. Подумай, куда денется
// еще 10 байт информации, если мы введем не 10, а 20 знаков?
// Правильно, выйдет за пределы буфера.
}
Вот как все легко, а если после 10-го символа вставить shell-код? Более подробно обо всем этом читай в Спеце #08.04(45). Уязвимости в программе возникают из-за невнимательности и халатности программистов. Также в этом есть часть вины самой архитектуры x86. В ближайшем времени компания Intel планирует выпустить процессор с аппаратной защитой от уязвимостей переполнения буфера. Насколько она будет эффективна, мы сможем убедиться в ближайшем будущем, а пока эксплоиты, использующие эти уязвимости, живут и процветают.