Nano Hash - криптовалюты, майнинг, программирование

Как я могу общаться с хостом через определенный интерфейс с помощью Scapy в Python?

Я пытаюсь действовать как фальшивая машина, которая отправляет ARP-запросы моему хосту (а также другим машинам в определенной сети с использованием определенного интерфейса). Вот мой фрагмент кода для спама определенного IP-адреса хоста на определенном интерфейсе с запросами ARP с поддельного MAC-адреса / 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. Во время тестирования я отключил все брандмауэры (частные, общедоступные и доменные).

24.02.2020

Ответы:


1

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

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

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

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

24.02.2020
  • @ falhumai96 Какой сетевой режим VirtualBox вы используете? Их список через пару абзацев сверху здесь: nakivo.com/ blog / virtualbox-network-setting-guide Можно ли использовать режим мостового адаптера? Однако это может потребовать или может потребовать прав администратора. Если можете, попробуйте и проверьте, какой IP-адрес получает гость, и попробуйте отправить ARP-запросы на этот IP-адрес. 24.02.2020
  • Я использую мостовой режим для моей сети LAN. Виртуальная машина Virtualbox доступна как для моей локальной сети, так и для моего хоста. Проблема в том, что фальшивая машина для спама ARP, которую я создал с помощью Scapy, не получает никаких ответов от моего хоста или моей виртуальной машины Virtualbox, но она действительно получает ответы от хостов за пределами моего хоста в той же локальной сети (скажем, я пингую контроллер Raspberry Pi в той же локальной сети). 24.02.2020
  • Основная цель этого вопроса - решить проблему, которую я поднял в этом вопросе о переполнении стека: stackoverflow.com/questions/60295128/. 24.02.2020
  • @ falhumai96 Просто для пояснения, машина для рассылки спама ARP находится в QEMU, а виртуальная машина - это та, к которой вы пытаетесь добраться? Если да, вы можете указать это в своем вопросе (а также информацию, которую вы указали выше) и присвоить ему тег QEMU, поскольку это более актуально. У меня создалось впечатление, что спамер ARP был vbox, пока я не прочитал ваш связанный вопрос. 24.02.2020
  • в этом случае сценарий рассылки спама ARP находится на моем хосте. Он предназначен для воспроизведения проблемы, которую я вижу в scapy_br.py в связанном вопросе. Этот вопрос напрямую не связан с QEMU как таковым, а скорее с тем, как я буду общаться между моим хостом (или другой виртуальной машиной внутри хоста) и Scapy на определенном интерфейсе. 24.02.2020
  • Вот почему я не хотел добавлять тег QEMU в вопрос, поскольку основное предназначение - это канал связи между Scapy (или WinPcap / Npcap в Windows, libpcap в Unix) и тем же хостом, на котором запущен скрипт Scapy. 24.02.2020
  • Ой, как плохо. Я случайно перепутал «fake» с «virtualbox» 1 строчкой ниже в последнем абзаце и подумал, что у вас есть виртуальная машина, которая пытается притвориться, что у нее другой IP-адрес. Ты прав. Это не проблема QEMU или Vbox. Вам это поможет? serverfault.com/ questions / 219837 / 24.02.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..