즉석에서 UDP 패킷을 교체하는 방법은 무엇입니까?

즉석에서 UDP 패킷을 교체하는 방법은 무엇입니까?

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 01to의 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 프레임을 위한 방화벽입니다.

관련 정보