정보보안 전문가를 꿈꾸며 작성하는 블로그입니다.

SK 쉴더스 루키즈

[SK 쉴더스] 네트워크보안 1일차 -- 추가예정

minjoo 2022. 9. 26. 16:58

* 인터넷을 만든 사람? 빈트 서프, 로버트 칸(1970년 초반)

* 인터넷의 종류 : WWW, FTP, Telnet, Torrent, SSH, Archie, Gopher 등

* 인터넷을 만들게 된 이유

- 미 국방부 산하에 국방과학연구소(ARPA)에서 전쟁에 쓰이는 무기를 연구(신무기 개발)

- 멀리 떨어진 연구기관 및 대학교 등을 연결할 필요성을 느낌 → 문제 : 통신 방법이 다 다름(서로 다른 장비 사용)

- 서로 다른 회사의 네트워크 장치를 사용하다보니 호환이 안됨

→ 알파에서 공통의 프로토콜을 만들기로 함 → ARPAnet

* 전세계 미군 부대를 연결할 계획(1960년대) → APRAnet을 둘로 나눠서 미군 전용 네트워크(Milnet)와 인터넷(TCP/IP)로 분리(1970년대 초)

→ TCP : Application 식별, IP : 시스템 식별

 

1.1 헤더와 주소체계

- FCS(오류검사), DATA, TCP Header(출발지Port, 목적지Port), IP Header(출발지 IP주소, 목적지 IP주소), Frame Header(목적지 MAC 주소, 출발지 MAC 주소)

- MAC 주소 : 2계층 주소

- IP 주소 : 3계층 주소

- Port 번호 : 4계층 주소

 

1.2 OSI 7계층

- 1계층 : 물리계층

- 2계층 : 데이터링크 계층

- 3계층 : 네트워크 계층

- 4계층 : 전송 계층

- 5계층 : 세션 계층

- 6계층 : 표현 계층

- 7계층 : 응용 계층

 

1.3 TCP/IP

- 1계층 : 네트워크 장치

- 2계층 : IP

- 3계층 : TCP/UDP

- 4계층 : Application(data)

- Segment : Application + TCP/UDP

 

1.4 TCP/UDP

1) TCP를 이용하는 경우 : 속도보다 정확성이 중요할 때

→ 주로 User가 데이터를 송/수신 할 때, 데이터가 큰 경우, 전송이 확실해야 할 때(확인이 필요)

→ 파일, 사진, 동영상, 로그인 등

→ FTP, Telnet, HTTP, SSH, SMTP 등 

2) UDP를 이용하는 경우 : 정확성보다 속도가 중요할 때 

→ 시스템 간 정보를 교환할 때(SNMP), 실시간으로 음성/비디오 등 전송하는 경우

 

* TCP/UDP를 이용하지 않는 경우

- ICMP

- IGMP

 

1.5 패킷과 프레임의 구조

- TCP Segment : Data + TCP Header

- Packet : Data + TCP Header + IP Header

  → 최초 출발지에서 최종 목적지까지 그대로 전달

- Frame : FCS + Data + TCP Header + IP Header + Frame Header

  → 각 구간별 통신 방식에 따라 달라질 수 있음

- TCP Segment는 Packet에 들어있고, Packet은 Frame을 타고 전송됨

→ TCP 대신 UDP를 사용하는 경우에는 TCP Header 자리에 UDP Header

→ Ethernet의 경우 최대 전송단위가 1500byte, →Data + TCP + IP 모두 합해 1500byte 이내여야 함

 

* Frame 전송 방식의 종류

- Wi-Fi, Ethernet, Token Ring, FDDI → LAN(근거리 통신)

- ATM, PPP, HDLC, Frame-Relay 등 → WAN(원거리 통신)

* 카톡을 보내면?

- Wi-Fi →(공유기)→ Ethernet →(라우터/스위치)→ 광랜(Ethernet) → Frame-Relay → ATM → FDDI → Ethernet

 

* Segmentation : 데이터의 분할 (TCP)

- IP헤더(20byte), TCP헤더(20byte)의 크기를 제외하고 1460byte씩 데이터를 분할해 패킷 생성 및 전송

→ 모든 패킷에 IP헤더, TCP헤더가 붙음

* Fragmentation : 데이터의 단편화 (IP)

- IP가 데이터를 분할

- 데이터를 1480byte로 분할 후 IP헤더(20byte)를 붙여 전송

→ 모든 패킷에 IP헤더가 붙고, 마지막 패킷에만 프로토콜의 헤더가 붙음(ex. ICMP 헤더)

→ 데이터 분할의 우선순위 : TCP > IP (TCP를 사용하는 경우에는 TCP가 데이터를 분할하고 TCP를 사용하지 않는 경우에는 IP가 데이터를 단편화 함)

 

2.1 MAC Address

* Ethernet은 누가 만들었을까?

- Xerox의 연구원이었던 Dr.Metcalf가 만듦(1974)

- MAC Address라는 주소체계를 만들어서 장비마다 번호를 부여하는 방식

- 현재 가장 많이 사용되는 LAN 방식

- 표준화하면서 이름을 IEEE 802.3으로 지정(속칭 Ethernet 2)

- MAC 주소 : 각 자리는 16진수, 16은 2의 4승 → 4bit    ex) 84-5C-F3-94-67-90

→ 4bit가 12자리(8bit가 6자리)이므로 48bit 주소체계 → 주소의 개수는 2의 48승개

- 앞의 24bit : OUI(제조사 식별코드) : 어느 회사 제품인지

- 뒤의 24bit : 제품 일련번호(의미 x)

 

2.2 IP Address

* IPv4 주소

- 0부터 255까지의 번호가 4자리로 구분되어있음(구분자 : . )

- 각 자리는 8bit로 되어있음 → 8bit는 2의 8승이므로 256개

- 8bit씩 4자리이므로 32bit 주소체계

→ MAC 주소보다 작아서 주소 고갈 문제 발생

- 네트워크 부분과 호스트 부분으로 나눠짐(네트워크 : 집안이름, 호스트 : 개인이름)

→ 어디까지가 네트워크 부분인지 알 수 없음(가변적)

 

* 네트워크 부분과 호스트 부분을 구별하는 방법

1) Classful : 클래스기반

- Class A : N.H.H.H  →  Host 부분은 사용 범위 : 8bit*3 = 24bit

- Class B : N.N.H.H  →  Host 부분은 사용 범위 : 8bit*2 = 16bit

- Class C : N.N.N.H  →  Host 부분은 사용 범위 : 8bit

- Class D : 멀티캐스트용으로 지정

- Class E : Not Use

→ 주소낭비가 심해 Classful 방식을 더이상 사용하지 않기로 함(1992)

 

2) Classless : 클래스를 무시하는 방식(현재 사용)

- 네트워크와 호스트를 서브넷 마스크로 구분(1에 해당하는 IP부분은 Network, 0에 해당하는 IP주소 부분은 Host)

  ex) 255.255.255.0

- 네트워크 주소를 표기할 때는 호스트부분을 0으로 사용  ex) 192.168.5.0

- 네트워크 주소를 알면 목적지를 찾을 수 있음

 

* IPv4 헤더

- Verstion(4bit) _ _ _ _ : 0100 = 4 → ipv4

- Total Length : IP 프로토콜이 만들 수 있는 최대 크기 (Frame에 실어 보내려면 1500bit로 잘라서 전송)

- TTL (Time to Live : 패킷의 수명) : 다른 네트워크로 이동할 때마다 TTL 값이 1씩 줄어듦 → TTL이 0이되면 라우터가 버림(더이상 전달 x)

  → TTL이 0이 된 패킷을 버리는 이유는 네트워크의 혼잡을 방지하기 위함(목적지를 못찾는 패킷을 버림)

  → 내부망에서만 서비스를 하는 서버(외부로 패킷이 나가면 안되는 경우) : TTL을 1 또는 0으로 설정

- 운영체제에 따라 TTL의 초기값이 다름 : Unix-255, Windows : 128, Linux : 64(보통 공유기에서는 Linux 기반 사용, 관리자가 설정 변경 가능)

- Protocol(8bit) : IP헤더 뒤에 오는 프로토콜 정보

- Check-sum(16bit) : 오류검사

 

* 지역 DNS 로드밸런싱

- 사용자가 접속한 위치(국가별, ISP)에 따라 다른 서버에 접속

 

* 출발지 IP주소를 다른 주소로 바꿀 수 있음 : IP Spoofing

* 목적지 IP 주소는 다른 주소로 바꿀 수 없음(바꾸면 다른 곳으로 전송됨)

* IP주소는 IANA(인터넷 주소관리 위원회)에서 관리

  → IPv4, IPv6, Port 번호, AS번호(기관식별자)

* IP주소는 컴퓨터를 식별하기 위한 목적으로 사용

 

2.3 Port 번호(16bit 할당)

- 컴퓨터 내부의 서비스를 식별하기 위해 사용(Application 식별)

- 16bit = 2의 16승

1) System Port : 1~1023번(과거 Well-Known Port) : 범용 서비스를 위한 포트

  ex) http(80), FTP(21), SSH(22), Telnet(23), SMTP(25), https(443)

- 용도를 미리 지정해놓으면 물어보지 않아도 됨(IP주소는 DNS가 알려줌)

 

2) Registered Port : 1024~49151

- 사설 Application을 개발하는 경우 사용하는 포트

- Application을 개발하면, 다른 기존을 Application과 중복되지 않는 번호를 사용해야 함

- 등록하고 사용하면 중복을 막을 수 있음

  ex) MySQL : 3306

- 어떤 포트가 열려있다는 것은 어떤 서비스가 실행중임을 알 수 있음을 의미함

- 포트스캐닝 : 어떤 포트가 열려있는지 조사하는 것

 

3) Dynamic Port : 49152~65535

- 주로 클라이언트용 프로그램들이 사용하는 포트  ex) Web Browser 등

- 사용에 제한이 없음

 

* 포트번호 확인하기

- 윈도우 cmd) netstat -na

- 내 컴퓨터와 연결된(사용중인) 외부의 IP 주소 및 포트번호 확인

- 외부 주소의 서버 포트가 443 또는 80이면 로컬주소에서 사용하는 포트는 웹 브라우저일 가능성이 높음

 

3. 실습준비

- Wireshark 설치

- Npcap(Nmap Packet Capture) 설치 : Nmap에서 만든 Packet Capture 도구

 

* Libpcap : Packet Capture Library

* Winpcap : Windows Packet Capture Program → 현재는 사용 x

 

* Wireshark : 패킷 분석도구(캡쳐x)

- 최근 기능이 확장되어 USB 트래픽을 분석할 수 있음, 다양한 PAN도 분석 가능

- 가장 많이 사용하는 오픈소스

- 실행해서 트래픽이 많은 네트워크를 선택하면 트래픽 확인 가능

 

3.1 Wireshark

- Ethernet II, IP 헤더, TCP/UDP 헤더, 데이터 확인 가능

- 메뉴의 정지버튼을 통해 패킷 캡쳐 중단 가능

- Time : 패킷 캡쳐 시간

- Source : 출발지

- Destination : 도착지

- Protocol : 주요 프로토콜

- Length : 패킷 길이

- Info : 주요 내용

 

* UTC(Coordinated Universal Time) : 표준시(그리니치 천문대)

- 서버가 글로벌하게 배치되어있는 경우, 시간을 통일해서 봐야 함