Я пишу программу, которая выполняет ARP-спуфинговую атаку на шлюзе и хосте, а затем пытается перехватить трафик de HTTP между ними и отображает веб-сессии в браузере. Я использую libnet и pcap для них.
Я уже успешно сделал спуфинг, и теперь я пытаюсь сделать ретранслятор, где программа реализует виртуальное соединение между хостом и шлюзом.
У меня проблемы с транзакцией TCP. Когда хост требует страницу, он сначала пытается установить TCP-соединение с злоумышленником (потому что он уже подделан), отправив пакет TCP SYN. Проблема в том, что моя машина (злоумышленник) не отвечает на SYN, затем жертва повторяет попытку подключения make de, отправляя несколько повторных передач SYN.
В своей голове я думал, что TCP-соединение было установлено автоматически pcap (или ядром). Есть ли какие-либо настройки или параметры для установки этого, или мне нужно будет выполнить транзакцию TCP самостоятельно? Если да, есть ли совет, как сделать это с максимальной производительностью?
Спасибо за совет.
Obs .: для фильтрации HTTP-запросов, я использую следующий фильтр на pcap, доступен на это страница руководства
tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)
Libpcap — это библиотека для чтения необработанных сетевых пакетов, а в версиях с pcap_sendpacket()
/pcap_inject()
, отправка сырых сетевых пакетов. «Необработанные сетевые пакеты» означают необработанные пакеты канального уровня; если вы хотите притвориться реализацией TCP, вам нужно будет предоставить своя реализация TCP — и IPv4 или IPv6 — поверх необработанного механизма чтения / отправки пакетов.
Хорошо, для тех, кто сталкивался с этой темой, я нашел умный способ установить связь между жертвой и сервером (я думаю, что это правильный путь).
Вместо того, чтобы выполнять два соединения для отправки HTTP-сообщений, одно со шлюзом, а другое с жертвой, вы должны пропустить только TCP SYN, ACK и все, что угодно. Вы действуете как «труба».
Поэтому, когда вы получаете SYN от жертвы, просто отправьте его на шлюз, который доставит его на сервер и ответит SYN ACK. Конечно, вы должны подделать заголовки de Ethernet для отправителя и получателя, чтобы проверить подделку.