iptables를 사용하여 트래픽을 netsed로 다시 라우팅합니다.이와 같이, 그러나 트래픽을 다른 위치로 라우팅하는 것으로 보입니다.
나는 다음과 같이 hexinject를 사용합니다.
hexinject -s -i eth0 -c 1 -f 'arp' | replace '06 04 00 01' '06 04 00 02' | hexinject -p -i eth0
하지만 hexinject의 문제점은 주입만 하고 원래 패킷을 대체하지 않고 다른 패킷을 보낸다는 것입니다.
나는 또한 ettercap + etterfilter를 사용했지만 흐름을 대체하지 않는 것 같습니다.
if (ip.proto == UDP) {
if (search(DATA.data, "\x1f\x0f\x00\x08\x00\x01")) {
log(DATA.data, "/tmp/payload");
drop();
execinject("/bin/sed s/\x1f\x0f\x00\x08\x00\x01/\x1f\x0f\x00\x08\x00\x00/g' /tmp/payload");
msg("caught!");
}
}
내가 하고 싶은 것은 단순히 마지막 비트를 0으로 변경하여 1f 0f 00 08 00 01
to의 16진수 표현을 바꾸는 것입니다 1f 0f 00 08 00 00
. 하지만 iptables + netsed, hexinject 또는 ettercap + etterfilter가 작동하도록 할 수는 없습니다.
시각화는 다음과 같습니다.
서버가 1f 0f 00 08 00 01
누군가에게 전송을 시도하면 프로그램이 1f 0f 00 08 00 00
대신 전송하도록 변경됩니다.
다음에 무엇을 시도할 수 있나요? 아니면 내가 이 프로그램을 잘못된 방식으로 사용하고 있는 것일 수도 있습니다.
답변1
HexInject를 사용하고 방화벽 규칙을 추가하여 특정 패킷이 전달되는 것을 차단할 수 있습니다.
간단하고 쉽습니다.
IPTables를 사용하여 포트 53으로 전송된 UDP 패킷을 차단하는 예:
iptables -A FORWARD -p udp --destination-port 53 -j DROP
레이어 2에서 필터링하려면 다음을 볼 수 있습니다.EB 테이블.
Layer 2 프레임을 위한 방화벽입니다.