Атака канального уровня ARP-spoofing и как защитить коммутатор Cisco

    Данная статья не является руководством для кулхацкеров. Все ниже написанное является частью изучения курса Cisco SECURE.
    В данном материале я покажу как на практике провести атаку канального уровня на коммутатор Cisco, а также покажу как защитить свою сеть от этого. Для лабораторного стенда я использовал Cisco 881 и Catalyst 3750G.
    Наверное все, кто сталкивался хоть немного с сетями знают, что такое протокол ARP.
    Вкратце напомню. Протокол ARP используется для преобразования IP-адреса в MAC-адрес. Рассмотрим такую топологию:



    Что произойдет, если с хоста H1 пропинговать Gateway? Первым делом будет работать ARP протокол. H1 отправит широковещательный запрос (ARP-request), в котором будут указаны MAC и IP хоста H1 и IP получателя (GATEWAY). Далее GATEWAY получит запрос и видя, что в поле IP получателя содержится его адрес, дописывает к нему свой MAC и отправляет ответ ARP-reply. Хост H1 получает ответ и заносит его в ARP-таблицу.

    Как можно перехватить трафик идущий от H1 к GATEWAY? Допустим атакующий (ATTACKER) находится в одном широковещательно домене с GATEWAY и H1. Если атакующий запустит сниффер, к примеру Wireshark, то в сниффере ничего интересного он не увидит, кроме своих броадкастов и прочей служебной информации. Для перехвата трафика можно использовать слабости протокола ARP. Данный протокол не имеет никакой защиты, никакой проверки подлинности запросов. А еще возможна отправка ARP ответов без ARP запросов, это так называемый gratuitous-ARP.
    Это как раз то, что нужно. Использовать для атаки будем софт Cain & Abel, но для начала посмотрим ARP-таблицы на хосте H1 и на ATTACKER:

    H1 ARP-таблица



    ATTACKER ARP-таблица



    Далее запускаем Cain&Abel, включаем сниффер и добавляем все хосты из широковещательного домена.



    Далее переходим на вкладку ARP, жмем + и выбираем адрес шлюза и хост, с которого будем перехватывать трафик.



    Жмем кнопку ARP-poisoning и процесс изменения таблицы ARP на хосте H1 запустился.



    Теперь посмотрим, как изменилась ARP-таблица на хосте H1.



    Видим подмену MAC-адреса для IP 192.168.1.1

    Теперь запустим на хосте H1 putty и попробуем зайти на GATEWAY через небезопасный протокол telnet. Так как протокол telnet передает данные в plain text, то атакующий в сниффере должен будет увидеть всю нужную информацию, то есть логин и пароль. Заходим и вводим логин/пароль и пароль enable.



    Теперь на ATTACKER в сниффер, вкладка Passwords. Видно что какую-то информацию отловили



    Смотрим эту запись и видим текст такого содержания:
    ============================================
    === Cain's Telnet sniffer generated file ===
    ============================================
    яы яы яэ яэ

    User Access Verification

    Username: яы яы яы яы'яэ яы яэ яъ P яряю яъ яряю'яэ яъ XTERMяряы$яю$admin

    Password: cisco

    Router>eennaa

    Password: Cisco


    Все. Пароль от телнета перехвачен.

    А теперь самое главное. Как защитить свою сеть от таких атак. На помощь нам приходит инструмент Dynamic ARP Inspection (DAI).
    DAI предназначен для регулировки ARP-запросов, то есть решает — какие пропускать, а какие отбросить. Грубо говоря, DAI полностью защищает сеть от атаки ARP-spoofing, которая происходит на канальном уровне, благодаря незащищенности протокола ARP.
    Немного о том, как работает DAI. Для того, чтобы работал этот механизм, нам необходимо в сети использовать DHCP и на коммутаторе должен быть включен DHCP Snooping. Если в сети используется статическая адресация, то DAI работать не будет.
    Как работает DHCP Snooping. Допустим DHCP сервер у нас настроен на GATEWAY. Злоумышленник ATTACKER решил поднять у себя dhcp сервер и раздавать какие-то свои адреса. DHCP snooping предназначен для регулировки запросов и будет отбрасывать запросы сервера злоумышленника. Все очень просто. Есть Untrusted и Trusted порты. Надежным портом мы назначаем порт, которые ведет к GATEWAY, так как он у нас будет авторизованным DHCP сервером. Все остальные порты будут ненадежными и серверные запросы от них будут отбрасываться.



    При этом строится таблица соответствия адресов dchp snooping database. Включаем на коммутаторе SW функцию DHCP snooping

    ip dhcp snooping vlan 1

    ip dhcp snooping database flash:/dhcp-snoop.db
    ip dhcp snooping

    На порту, смотрящему в сторону GATEWAY

    SW(config-if)# ip dhcp snooping trust



    Смотрим, что получилось

    SW#sh ip dhcp snooping
    Switch DHCP snooping is enabled
    DHCP snooping is configured on following VLANs:
    1
    DHCP snooping is configured on the following Interfaces:
    Insertion of option 82 is enabled
    circuit-id format: vlan-mod-port
    remote-id format: MAC
    Option 82 on untrusted port is not allowed
    Verification of hwaddr field is enabled
    Interface Trusted Rate limit (pps)
    — — — FastEthernet1/0/47 yes unlimited


    И посмотрим, что появилось в таблице соответствия

    SW#sh ip dhcp snooping binding
    MacAddress IpAddress Lease(sec) Type VLAN Interface

    — — — — — — E8:03:9A:BE:0C:D8 192.168.1.50 26268 dhcp-snooping 1 FastEthernet1/0/13
    50:B7:C3:78:B4:1A 192.168.1.10 69421 dhcp-snooping 1 FastEthernet1/0/1
    Total number of bindings: 2



    Теперь, если атакующий захочет стать dhcp сервером, то запросы его коммутатор будет отбрасывать.

    На основании базы dhcp snooping, где содержится соответствие всех MAC и IP адресов и будет работать механизм Dynamic ARP Inspection.

    Перейдем к настройке. На коммутаторе Cisco данный инструмент включается для каждого vlan отдельно. В нашем случае, достаточно на коммутаторе SW дать команду:
    SW(config)#ip arp inspection vlan 1

    Оба хоста и шлюз находятся в vlan 1. В DAI для портов коммутатора есть две настройки: Trusted и Untrusted. По-умолчанию, все порты коммутатора
    Untrusted, то есть ненадежные. Порт, который идет к шлюзу или порт, в который включен транком еще один коммутатор можно сделать Trusted, тогда ARP-запросы приходящие через него будут считаться надежными.

    SW(config-if)#ip arp inspection trust

    Теперь повторим атаку с самого начала. Пробуем делать ARP-poisoning через Cain&Abel. Атака не проходит и в логах коммутатора появились следующие записи:

    18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/0000.0000.0000/192.168.1.1/18:11:19 UTC Mon Mar 1 1993])
    18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:19 UTC Mon Mar 1 1993])
    18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.1/50b7.c378.b41a/192.168.1.10/18:11:19 UTC Mon Mar 1 1993])
    18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:19 UTC Mon Mar 1 1993])
    18:11:21: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:21 UTC Mon Mar 1 1993])
    18:11:21: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.1/50b7.c378.b41a/192.168.1.10/18:11:21 UTC Mon Mar 1 1993])
    18:11:21: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:21 UTC Mon Mar 1 1993])
    18:11:24: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:24 UTC Mon Mar 1 1993])
    18:11:25: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:25 UTC Mon Mar 1 1993])


    Коммутатор отбрасывает «неправильные» arp-запросы. Теперь атакующий ничего не сможет перехватить.
    Включим еще дополнительную проверку DAI

    SW(config)#errdisable recovery cause arp-inspection

    Данная опция позволяет восстановить порт и состояния errdisabled через 300 секунд. Если конечно несоответствие MAC-IP будет на этом порту продолжаться, то порт восстановлен не будет.

    Просмотреть trusted и untrusted порты и статистику можно командой

    SW#show ip arp inspection interfaces

    На этом всё.
    Спасибо за внимание.



    UPD дополнил про dhcp-snooping
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 21

      0
      Стоит отметить, что у свитча должна быть база валидных соответствий ip-mac, для чего включается dhcp snooping. Без него работать не будет.
        0
        Да, спасибо, не учел это.
          0
          Можно и без snooping-а, используя arp acl-ы.
          0
          Рассчитывал увидеть хотя бы в двух словах как работает Dynamic ARP Inspection…
            0
            Я особо не стал вдаваться в теорию, ее очень много в сети. Можно считать, что это просто лабораторная работа.
            0
            в случае со статическими ip-адресами такая функция не вывезет. А еще можно защититься при помощи port isolation + proxy arp. Трафик конечно будет ходить через роутер, но атаки второго уровня провести будет сложнее.
              0
              Вы правы. Со статическими DAI не спасет.
                0
                Если появится гирлянда свитчей, то и это не спасет.
                  0
                  А мы добавим уходящий в гирлянду порт в группу изолированных и так на всех. Даже самый удаленный от центра пользователь сети будет работать только через маршрутизатор
                  0
                  Ошибаетесь. Использовать DAI и прочие штуки зависящие от dhcp snooping-а можно и без последнего, если использовать arp access-list-ы. Например так:

                  Switch(config)#arp access-list MY-ARP
                  Switch(config-arp-nacl)#permit ip host 10.0.0.1 mac host aa.bb.cc
                  Switch(config)#ip arp inspection filter MY-ARP vlan 10
                    0
                    Можно и так. Но если адресов >1000? Думаю все же лучше перейти на использование DHCP.
                      0
                      Ну, когда в организации >20 компьютеров, использовать статику это ад :)
                  0
                  С арп-спуфингом DAI действительно справляется, но полноценно и тотально защититься от невалидных связок IP-MAC может только IP Source Guard (так же использует собранные dhcp snooping-ом данные). Пара хостов, имеющие левые IP вполне нормально общаются между собой при статических арп-записях в своих ОС. DAI при этом не при делах, так как arp запросов/ответов при статических arp записях не возникает.
                    0
                    Отличная статья. Проверино также на телнете — работает. Однако, пробывал цепляться к «вебморде» с H1 на GATEWAY (:80) — пароль не перехватывается вовремя прослушки.
                      0
                      Странно, а там обычный http или https?
                      0
                      парни, подскажите плз. а если логин на роутер через cgi скрипт, инфу перехватить легко? image
                        +1
                        А какая разница через какой скрипт? Главное, что он в виде plain text передается. Перехватить можно.

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