2010년 4월 22일 목요일

Tcprewrite 를 이용한 패킷파일의 IP, 포트등 재 작성하기


이전 포스팅에서 패킷파일을 재 전송하기 위해 tcpreplay 를 이용하는 방법에 대해 소개하였다.
이번에는 패킷파일의 내용을 재 수정하는 방법에 대해 소개한다. 엄밀히 말하면 수정은 아니고,
패킷파일의 출발지IP, 목적지 IP , 맥 주소등의 재 작성 이다. 패킷파일의 세부적 수정 방법에
대해서는 추후 다시 소개할 것이다.

예를들어, 패킷 파일을 하나 가지고 있다고 하자. 이 패킷파일의 목적지 주소는 61.111.X.X 였다.
그런데 내부 장비 테스트를 위하여 해당 IP 를 내부 시스템으로 바꿔 해보고 싶다. 이럴때 목적지
IP 주소를 쉽게 바꿀 수 있는 방법중의 하나가 tcprewrite 를 이용하는 것이다. 이것은 tcpreplay 의
한 가족 라인이기도 하다 :-)

또는, 누군가에게 패킷파일을 전달해 주어야 하는데 내부 IP 가 들어있고 해서 꺼림직하다. 이럴때
IP 를 다른것으로 바꿔 전달해 줄수도 있다. 나름 유용하게 활용할 수 있는 부분이 많이 있다.

아래 그림과 같이 다양한 옵션이 있고, 어렵지 않게 사용할 수 있다.

 
자, attack.pcap 파일에서 목적지 IP 를 61.111.X.X 에서 192.168.0.2 로 변경하고자 한다면 아래와 같이
할 수 있다. 일부 IP 는 X 로 처리하였으며, 사용된 옵션은 아래와 같다.

-i : Input 으로 사용할 PCAP 파일
-o : 재작성 하여 저장될 PCAP 파일. 즉 Output 파일이다.
--dstipmap : 변경할 목적지 IP 로 인자 값을 두개 사용하였다. 앞 인자값은 원래의 주소이며, 다음 인자값은
변경할 IP 주소이다.
--srcipmap : dstipmap 과 같이 똑같이 소스IP 를 변경할 때 사용한다.
--endpoints : 출발지와 목적지 양쪽의 엔드포인트를 변경할 때 사용한다.
--portmap : TCP/UDP 포트를 변경한다.
--seed : 출발지/목적지 IP 주소를 랜덤하게 변경한다.
-C : IP/TCP/UDP 체크섬값을 재 계산한다.
-v : 세부적인 정보를 출력해 준다.


1. 61.111.X.X 에서 192.168.0.2 로 목적지 주소 변경
# tcprewrite -i attack.pcap -o attack_rewrite.pcap --dstipmap 61.111.X.X/32:192.168.0.2/32 -C -v
07:01:26.330171 IP c-76-115-162-XX.or.comcast.net.39170 > 61.111.X.X.www: S 3946446848:3946446848(0) win 8192 <mss 1460,nop,nop,sackOK>
07:01:26.330223 IP 242.XX.250.193.5138 > 61.111.X.X.www: S 2755133440:2755133440(0) win 8192 <mss 1460,nop,nop,sackOK>

변경된 목적지 주소

07:01:26.330171 IP c-76-115-162-XX.or.comcast.net.39170 > 192.168.0.2.www: S 3946446848:3946446848(0) win 8192 <mss 1460,nop,nop,sackOK>
07:01:26.330223 IP 242.XX.250.193.5138 > 192.168.0.2.www: S 2755133440:2755133440(0) win 8192 <mss 1460,nop,nop,sackOK>

2. 포트 주소 80 번을 8008 로 변경
# tcprewrite -i attack.pcap -o attack_rewrite.pcap --portmap=80:8008

3. 출발지/목적지 IP 주소를 랜덤하게 변경
# tcprewrite -i attack.pcap -o attack_rewrite.pcap --seed=586
07:01:16.192829 IP 99.198.139.41.1129 > adsl-215-216-170.kymp.net.www: . ack 1 win 64240
07:01:16.193060 IP 99.198.139.41.1129 > adsl-215-216-170.kymp.net.www: P 1:181(180) ack 1 win 64240
07:01:16.302383 IP adsl-215-216-170.kymp.net.www > 99.198.139.41.1129: P 1:401(400) ack 181 win 65535
07:01:16.494930 IP 99.198.139.41.1129 > adsl-215-216-170.kymp.net.www: . ack 401 win 63840

기존 PCAP 파일 과는 달리 완전히 새로운 주소로 랜덤하게 변경되었다.

댓글 2개:

  1. 윈도우에서도 돌아가는건가요>?

    답글삭제
  2. @모래알 - 2010/04/22 22:42
    기본적으로 유닉스/리눅스 환경에서 동작합니다. 공식적으로는 윈도우를 지원하지 않지만, Cygwin 을 이용해서 tcprewrite 를 돌릴 수 있을것으로 생각합니다. cygwin 은 윈도우 환경에서 유닉스 환경같이 사용할 수 있도록 제공해 주어 유닉스가 익숙한 분들은 정말 유용하게 사용할 수 있습니다. 언제 한번 cygwin 에 대해서도 소개하겠습니다. 또는 윈도우에 가상머신을 설치하여 리눅스 환경을 이용해 보는 것도 좋을것 같습니다.

    답글삭제