2010-11-20 5 views
2

리눅스에서 파이썬으로 호스트 A에서 호스트 B까지 특정 포트의 유선 패킷을 가로 채는 작은 프로그램을 작성 중입니다. 호스트 C는 중간에 남자 역할을합니다 모든 트래픽은 호스트 C (arp poisoning method)를 통해 진행됩니다. successfuly 부분을 가로 채기로 작성 했으므로 화면의 모든 데이터를 볼 수 있지만 헤더 데이터를 변경하지 않고 패킷 데이터를 수정해야합니다 (물론 Cheksum이 변경 될 것입니다). pcapy/impacket으로 도청 된 패킷을 사용하여 이것을 어떻게 얻을 수 있습니까?

약간 흐릿 할 수도 있지만 주요 아이디어는 아래에 나와 있습니다.
1. 호스트 A는 호스트 B에게 'Hello'를 보냅니다 (호스트 A와 B는 트래픽이 호스트 C를 통과하도록 스푸핑 됨).
2. 호스트 C는 호스트 A에서 'Hello'를 가져옵니다 (기본적으로 호스트 C는 'Hello'를 호스트 B로 리디렉션합니다. 그러나 다른 것을 원합니다 - 포인트 3 참조)
3. 호스트 C가 'Hello' 호스트 'B'로 리디렉션됩니다 (커널의 ip_forward?).
4. 호스트 B가 '안녕'을 얻습니다.

어쩌면 거기에 몇 가지 리눅스 메커니즘을 사용하여 이것을 달성 할 수 있습니까? 지금 당황스럽고 어떤 아이디어라도 감사 할 것입니다.pcapy/impacket으로 패킷 데이터 변경하기

답변

1

이 응용 프로그램의 경우 scapy을 선호합니다. 이것은 강력한 파이썬 패키지로서 프로토콜 스택의 다양한 레이어에서 패킷을 캡처, 조작 및 전송할 수있게합니다.

man-in-the-middle 공격을 수행하는 데는 여러 가지 방법이 있습니다. 아마 호스트 A에서 패킷을 캡처하는 필터와 함께 "스 니프"기능을 사용할 것입니다. "sendp"를 사용하여 패킷을 수정하고 호스트 B로 재전송하는 콜백을 지정합니다 ("prn"매개 변수를 통해). scapy에는 내장 "arpcachepoison"기능도 포함되어 있습니다.