Как я могу общаться с хостом по указанному c интерфейсу, используя Scapy в Python? - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь действовать как фальшивая машина, которая отправляет запросы ARP на мой хост (а также на другие машины в указанной c сети, использующей указанный c интерфейс). Вот мой фрагмент кода, чтобы спамить указанный c IP-адрес хоста на указанном c интерфейсе с ARP-запросами от поддельного MA C адреса / IP-адреса:

import scapy.all
import threading
import time
import argparse


def arp_sender(iface, host_ip, guest_ip, guest_mac):
    arp_req = scapy.layers.l2.ARP(psrc=guest_ip, pdst=host_ip)
    bcast = scapy.layers.l2.Ether(
        src=guest_mac, dst='ff:ff:ff:ff:ff:ff')
    arp_req_bcast = bcast / arp_req
    while True:
        time.sleep(2)
        scapy.all.sendp(arp_req_bcast, iface=iface)


if __name__ == "__main__":
    pasrer = argparse.ArgumentParser()
    pasrer.add_argument('--iface', '-i', required=True)
    pasrer.add_argument('--host-ip', required=True)
    pasrer.add_argument('--guest-ip', required=True)
    pasrer.add_argument('--guest-mac', required=True)
    args = pasrer.parse_args()
    th = threading.Thread(target=arp_sender, args=(
        args.iface, args.host_ip, args.guest_ip, args.guest_mac
    ))
    th.start()
    th.join()

При прослушивании ответов на Wireshark другие хосты в той же сети отвечают на запросы ARP, но не на моем хосте, где находится поддельная машина, которая отправляет запросы ARP. Я также пытался отправлять запросы ARP на машину Virtualbox на моем хосте, но также не получил ответа. Что-то не так с тем, как я отправляю пакеты уровня 2 с помощью Scapy, или мне нужно что-то еще сделать на моем хосте, чтобы принимать входящие пакеты из моего скрипта?

Редактировать

Проверено на Windows 10 хосте. Во время тестирования я отключил все брандмауэры (private, publi c и domain).

1 Ответ

0 голосов
/ 24 февраля 2020

Я изначально неправильно понял и подумал, что это проблема с виртуальной машиной.

Хост-машина обнаруживает конфликт, основываясь на адресе отправителя (сама) и в этом случае, очевидно, не отвечает на запрос ARP. Я не настолько осведомлен о том, как windows обрабатывает конфликты ARP, но это должен быть один из параметров, указанных в RF C 5227 раздел 2.4

В любое время если хост получает пакет ARP (запрос или ответ), где «IP-адрес отправителя» является (одним из) собственным IP-адресом (ами) хоста, настроенным на этом интерфейсе, но «аппаратным адресом отправителя» 'не соответствует ни одному из собственных адресов интерфейса хоста, то это конфликтующий пакет ARP, указывающий, что некоторый другой хост также думает, что он правильно использует этот адрес. Чтобы разрешить конфликт адресов, хост ДОЛЖЕН ответить на конфликтующий пакет ARP, как описано в (a), (b) или (c) ниже:

Я не уверен, почему это не отправка на машину Vbox, хотя. Вы отправляете запрос ARP на компьютер vbox сразу после попытки хоста? Если это так, windows может просто игнорировать любые запросы ARP от ма c и IP-адреса, с которым обнаружен конфликт.

...