[준비]

  • 시작 - 제어판 - 프로그램 및 기능 - Windows 기능 사용/사용 안함 - 텔넷 클라이언트 설치(옵션)
  • 시작 - 제어판 - Windows 방화벽 설정 또는 해제 - 모든 방화벽을 해제한다(RST packet을 확인하기 위하여)
  • loopback interface 추가하기 : http://www.gilgil.net/18334



[TCP error의 이해]

  • logserver.exe를 띄워 놓는다(winsock error를 확인하기 위하여).
  • NetClient로 "1.1.1.1:80"(존재하지 않는 transport addr)에 접속을 시도하고, TCP timeout(10060) 에러가 나는지 확인하고 이에 대한 패킷을 분석한다.
  • NetClient로 "<파트너IP>:80"(상대방 transport addr) 명령어로 TCP connection refused(10061)에러가 나는지 확인하고 이에 대한 패킷을 분석한다.
  • NetClient로 "<파트너IP>:80"을 연결한 이후 ARPSpoof.exe를 이용하여 relay를 uncheck한 뒤 TCP data(a,bb,ccc)를 보내어 TCP timeout(10060) 에러가 나는지 확인한다. 이 경우 전송되는 TCP data가 축적(합쳐짐)되는지를 확인해 본다.



[TCP backward RST의 구현 - tcp_kill(2014.11.21).zip ]

  • NetClient 프로그램을 이용하여 "1.1.1.1:80"으로 TCP connection을 시도한다.
  • pcap을 이용하여 직접 수신되는  backward RST 패킷을 작성하여 자기 스스로에게 전송하고, 10060이 아닌 10061 에러가 나는지를 확인한다.
  • ethHdr, ipHdr, tcpHdr의 일부 field에 임의의 값으로 변경하여 테스트를 해 본다(ip_tos, ip_id, ip_off, ip_ttl, th_seq, th_ack, th_flags 등등)


[TCP forward RST의 구현]
  • NetServer를 실행시키고 Port 80으로 open을 해 놓는다.
  • forward RST 패킷을 작성하고 위와 동일한 테스트를 진행한다(TCP 연결이 실패하면서 10061 에러가 나야 함).


[TCP RST의 이해 - TCP 송수신 과정에서(연결 과정이 아닌) 한쪽만 끊긴 것처럼 보이기]
  • TCP 연결이 이루어 지고 나서 TCP data를 보낼 때만 forward RST 패킷을 작성하고 전송을 하고(filter에 "length > 70" 추가), 한쪽에서만 연결이 끊기는지를 확인한다.


[fake message의 이해]
  • HTTP 트래픽을 차단해야 하는 경우, Web Server에게는 RST 패킷을, Web Client에게는 HTTP fake message를 보내는 것을 실습한다.


[SnoopSpy3 활용]

  • packet을 잡아서 pcap 파일로 저장하기.
  • packet을 잡아서 loopback interface로 전송하기.
  • 원하는 프로세스의 packet을 잡아서 loopback interface로 전송하기.
  • TCP packet의 forward RST 및 backward RST를 보내어 보기.
  • TCP packet의 forward FIN 및 backward FIN을 보내어 보기.