Presentation is loading. Please wait.

Presentation is loading. Please wait.

TCP/IP Network Experimental Programming [패킷 모니터링 실험]

Similar presentations


Presentation on theme: "TCP/IP Network Experimental Programming [패킷 모니터링 실험]"— Presentation transcript:

1 TCP/IP Network Experimental Programming [패킷 모니터링 실험]
cheol-joo chae

2 목차 패킷 모니터링의 기초 지식 데이터 링크 액세스 인터페이스 패킷 모니터링

3 패킷 모니터링의 기초 지식 패킷 모니터링 네트워크 안을 흐르는 패킷을 들여다보는 것을 패킷 모니터링이라함
패킷 모니터링을 위해서는 네트워크 analyzer, LAN analyzer, 프로토콜 analyzer 등의 전용 하드웨어가 필요 Linux, FreeBSD에는 tcpdump라는 패킷 모니터 프로그램이 있음 호스트 A 호스트 B 호스트 C TO : 호스트 C FROM : 호스트 A 내용 C

4 허브와 어드레스 학습 기능 제한 사항과 문제점

5 Promiscuous 모드 Promiscuous 모드
보통 NIC의 디바이스 드라이버는 다른 MAC 어드레스 앞에 보내온 Ethernet 프레임을 폐기 이를 위해 패킷을 모니터링해도 다른 프레임을 들여다 볼 수 없음 다른 호스트 앞의 프레임을 폐기하지 않고 상위 층이 받아들이는 모드를 promiscuous 모드라고 함 MAC 어드레스가 어떤 번호로 되어 있을지라도 구별하지 않고 NIC가 패킷을 수신 CPU의 부하 때문에 평상시에는 promiscuous를 사용하지 않음

6 Promiscuous 모드 Promiscuous 모드

7 Promiscuous 모드 Promiscuous 모드 Linux인 경우(설정) Linux인 경우(해제)
ifconfig 인터페이스명 promisc ifconfig 인터페이스명 - promisc

8 Promiscuous 모드 Promiscuous 모드 Linux에서 promiscuous 모드가 아닌 경우

9 Promiscuous 모드 Promiscuous 모드 Linux에서 promiscuous 모드인 경우

10 데이터 링크 액세스 인터페이스 데이터 링크 액세스 인터페이스
Ethernet 등의 패킷을 애플리케이션 프로그램으로부터 직접처리하기 위해 데이터 링크 액세스 인터페이스를 이용 데이터 링크 액세스 인터페이스를 사용하면 TCP, UDP, IP를 통하지 않고 Ethernet 등의 데이터 링크 헤더를 직접 조작하는 것이 가능 데이터 링크 액세스 인터페이스는 TCP헤더나 IP 헤더, Ethernet 헤더를 전부 자신이 작성하거나 네트워크에서 흘러들어 온 패킷을 전수 수신하고 싶은 경우 사용 패킷 모니터링 프로그램 작성시 데이터 링크에 액세스하기 위한 범용 라이브러리로 pcap을 사용 개발처 URL 최신버전 URL

11 데이터 링크 액세스 인터페이스 Linux 소켓을 이용하여 데이터 링크에 액세스
Ethernet을 직접 이용해서 패킷을 송수신 하고 싶을 경우 PF_PACKET은 모든 프로토콜을 다루기 위한 프로토콜 패밀리 IP 패킷만들 다룰때 사용 s = socket(PF_PACKET,SOCKET_PACKET, htons(ETH_P_ALL)); s = socket(AF_PACKET,SOCKET_PACKET, htons(ETH_P_IP));

12 데이터 링크 액세스 인터페이스 BPF(BSD Packet Filter)
BSD계열 UNIX에서만 이용할 수 있는 데이터 링크 엑세스 인터페이스 BPF에서는 디바이스 파일을 이용해서 읽기/쓰기를 실행(/dev/bpf0, /dev/bpf1, /dev/bpf2, /dev/bpf3) BPF를 오픈한 경우 패킷을 입출력하는 인터페이스 명의 설정 등은 ioctl 시스템 콜을 사용 BPF를 이용할 때는 write, read 시스템 콜을 사용하여 패킷의 송수신을 실행

13 패킷 모니터링 ipdump main open_buf (BPF를 오픈한다. FreeBSD의 경우에만) print_ethernet
mac_ntoa (MAC 어드레스를 아스키 문자열로 변환한다) print_arp (ARP 패킷을 출력한다) ip_ttoa print_ip (TOS를 아스키 문자열로 변환한다) main (ip 헤더를 출력한다) ip_ftoa (패킷 헤더의 수신, 해석) (FLAG를 아스키 문자열로 변환한다) print_icmp (icmp 헤더를 출력한다) print_tcp tcp_ftoa (tcp 헤더를 출력한다) (control 플래그를 아스키 문자열로 변환한다) print_udp (udp 헤더를 출력한다) print_packet (패킷 내용을 16진수 및 아스키 문자로 표시한다) help (idump 사용 방법을 표현한다)

14 패킷 모니터링 ipdump 흐름

15 패킷 모니터링 ipdump 호스트 간의 통신 패킷을 모니터링하고 싶을때는 ifconfig 명령어를 사용하여 promiscuous 모드로 변경 ipdump 실행 서식 -a : 모든 패킷의 정보를 표시, -a를 지정하지 않을 경우에는 Ethernet 타입이 ARP나 IP인 경우만 표시 -e : Ethernet 타입이 ARP나 IP인 경우만 표시, -a를 지정하지 않을 경우에는 Ethernet 타입이 ARP나 IP인 경우만 표시 -d : 패킷의 내용을 16진수와 아스키 문자로 표시합니다. h는 help를 의미하고, 이용 방법을 간단히 표시 -i ifname : 패킷을 읽고 이해하는 인터페이스 명을 지정, 지정하지 않을 경우 lo를 통해서 통신한 패킷도 표시 -p protocol : 표시하고 싶은 패킷을 지정, 지정할 수 있는 패킷은 arp, ip, icmp, tcp, udp ./ipdump [-aedh] [-i ifrname] [-p protocol]

16 패킷 모니터링 ipdump ipdump 실행 시 Ethernet Frame과 IP Protocol 부분

17 패킷 모니터링 ipdump ipdump 실행 시 TCP Protocol 부분

18 패킷 모니터링 ipdump ipdump 실행 시 Ethernet 헤더의 16진수 표현

19 Tcpdump 네트워크 인터페이스 상에 있는 패킷 중에서 보고자 하는 패킷의 헤더 정보를 보여주는 툴 기대효과
IP의 동작과 네트워크 특성에 관하여 자세히 알 수 있다. 침입탐지나 트래픽 분석을 하여 시스템 ,네트워크 보호가능

20 Tcpdump 분석 패킷 출력 분석 ① 타임스탬프 (패킷 캡쳐 시간) ② 발신지 주소.포트 ③ 방향 ④ 목적지 주소.포트
15:49: > caldera.hannam.ac.kr.telnet: . ack win (DF) 15:49: caldera.hannam.ac.kr.telnet > : P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] ① 타임스탬프 (패킷 캡쳐 시간) ② 발신지 주소.포트 ③ 방향 ④ 목적지 주소.포트 ⑤ 플래그 ⑥ 데이터 길이 ⑦ ack 번호 ⑧ 수신측 윈도우 크기 ⑨ DF – Don Fregmentation ⑩ tos  Type Of Service 설정

21 Tcpdump 옵션 tcpdump –n (도메인  IP) tcpdump –N (도메인을 미출력)
tcpdump –O (출력하지 않음) tcpdump: listening on eth0 15:09: > telnet: . ack win (DF) 15:09: telnet > : P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] 15:09: > telnet: . ack 29 win (DF) 15:09: telnet > : P 29:226(197) ack 0 win 5840 (DF) [tos 0x10] tcpdump: listening on eth0 15:11: roka.3339 > caldera.telnet: . ack win (DF) 15:11: caldera.telnet > roka.3339: P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] 15:11: roka.3339 > caldera.telnet: . ack 29 win (DF) 15:11: caldera.telnet > roka.3339: P 29:198(169) ack 0 win 5840 (DF) [tos 0x10] tcpdump: listening on eth0 15:12: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack win (DF) 15:12: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] 15:12: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack 29 win (DF) 15:12: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 29:250(221) ack 0 win 5840 (DF) [tos 0x10]

22 Tcpdump 옵션 tcpdump –p (promiscuous 모드 x) tcpdump –q (프로토콜 정보 줄임)
tcpdump –R (raw 소켓인터페이스) tcpdump: listening on eth0 15:15: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack win (DF) 15:15: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] 15:15: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack 29 win (DF) 15:15: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 29:250(221) ack 0 win 5840 (DF) [tos 0x10] tcpdump: listening on eth0 15:16: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: tcp 0 (DF) 15:16: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: tcp 28 (DF) [tos 0x10] 15:16: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: tcp 0 (DF) 15:16: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: tcp 181 (DF) [tos 0x10] tcpdump: listening on eth0 15:17: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack win (DF) 15:17: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] 15:17: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack 29 win (DF) 15:17: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 29:250(221) ack 0 win 5840 (DF) [tos 0x10]

23 Tcpdump 옵션 tcpdump –VV (더욱 상세한 정보) tcpdump –t (timestamp 출력하지 않음)
tcpdump: listening on eth0 15:25: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . [tcp sum ok] : (0) ack win (DF) (ttl 128, id 19684, len 40) 15:25: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P [tcp sum ok] 1:29(28) ack 0 win 5840 (DF) [tos 0x10] (ttl 64, id 63774, len 68) 15:25: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . [tcp sum ok] 0:0(0) ack 29 win (DF) (ttl 128, id 19685, len 40) 15:25: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 29:356(327) ack 0 win 5840 (DF) [tos 0x10] (ttl 64, id 63775, len 367) tcpdump: listening on eth0 roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack win (DF) caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack 29 win (DF) caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 29:218(189) ack 0 win 5840 (DF) [tos 0x10] tcpdump: listening on eth0 15:23: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . [tcp sum ok] ack win (DF) (ttl 128, id 19620, len 40) 15:23: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P [tcp sum ok] 1:29(28) ack 0 win 5840 (DF) [tos 0x10] (ttl 64, id 63727, len 68) 15:23: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . [tcp sum ok] ack 29 win (DF) (ttl 128, id 19621, len 40) 15:23: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 29:331(302) ack 0 win 5840 (DF) [tos 0x10] (ttl 64, id 63728, len 342)

24 Tcpdump 옵션 tcpdump –x (패킷을 16진수로)
15:26: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack win (DF) d c6b2 cbf7 27bd cbf7 274e 0d0b c 5db9 f3d3 9cec 5010 f7e4 3ccd 15:26: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] f a59 cbf7 274e cbf7 27bd d0b f3d3 9cec 988c 5db9 d0 0efa d 703a 206c e69 6e67 206f 6e 6830 0d0a

25 Tcpdump 옵션 tcpdump –X (패킷 소켓 인터페이스 사용)
15:26: roka.hannam.ac.kr.3339 > caldera.hannam.ac.kr.telnet: . ack win (DF) d c6b2 cbf7 27bd cbf7 274e 0d0b c 5db9 f3d3 9cec 5010 f7e4 3ccd 15:26: caldera.hannam.ac.kr.telnet > roka.hannam.ac.kr.3339: P 1:29(28) ack 0 win 5840 (DF) [tos 0x10] f a59 cbf7 274e cbf7 27bd d0b f3d3 9cec 988c 5db9 d0 0efa d 703a 206c e69 6e67 206f 6e 6830 0d0a

26 Q & A


Download ppt "TCP/IP Network Experimental Programming [패킷 모니터링 실험]"

Similar presentations


Ads by Google