본문 바로가기
정보보안기사 필기/1. 정보보안 일반

정보보안기사 필기 3-2. 네트워크 보안(ARP/RARP, IP 프로토콜, IPv6)

by kkmin93 2022. 4. 19.
반응형

정보보안기사 필기 3-2. 네트워크 보안(ARP/RARP, IP 프로토콜, IPv6)

1. ARP / RARP 프로토콜

 1) ARP 및 RAPR 프로토콜 특징

  • 논리적인 주소(Logical Address)와 물리적인 주소(Physical Address) 사이의 변환을 담당하는 프로토콜
  • ARP(Address Resolution Protocol) : 논리적인 IP주소를 물리적인 MAC 주소로 변환해주는 역할을 수행
  • RARP(Revers ARP) : 물리적인 MAC 주소를 논리적인 IP주소로 변환해주는 역할을 수행

 

 2) ARP 동작방식

  • 최초 상대방의 MAC 주소를 알지 못하고 IP 주소만 알고있는 상태이기 때문에 ARP Request 패킷을 만들어 로컬 네트워크에 브로드캐스트 한다.
  • 대상 호스트에서는 ARP Reply 패킷을 만들어서 응답하며, 대상 호스트가 아닌 호스트들은 수신한 브로드캐스트 패킷을 폐기한다.
  • 각 시스템은 ARP Cache Table이 있고 여기에 MAC 주소정보를 보관해둔다.

A 호스트가 다른 네트워크의 B 호스트의 MAC을 직접 ARP Request 패킷을 요청할 수 있는가?
  • ARP, RARP는 IP를 이용하지 않기 때문에 다른 네트워크로 전달이 불가능하다.

[ 그림 1-1. TCP/IP Stack 구조 ]

  • 따라서 인접한 노드, 로컬 네트워크 내에서만 ARP, RARP 쿼리 질의가 가능하다.

ARP와 Ping 의 동작관계(다른 네트워크의 경우)
  • A 호스트가 다른 네트워크에 존재하는 B 호스트에게 ICMP Request 패킷을 전송하게 된다.
  • A 호스트는 B 호스트와 통신하기 원하지만 서로의 네트워크 대역이 다르므로 A 호스트는 게이트웨이에게 보내야한다.
    • A 호스트는 게이트웨이의 MAC 주소를 모르기 때문에 최초 ICMP Request 패킷을 전송한 후 ARP Request 패킷을 이용하여 게이트웨이의 MAC 주소를 찾게된다. 
    • 출발지 IP : A 호스트 IP | 목적지 IP : 게이트웨이 IP
    • 출발지 MAC : A 호스트 MAC | 목적지 MAC : ?

 

  • A 호스트는 ARP Request를 로컬 네트워크에 브로드캐스트 하게되고 ARP Request 패킷을 수신한 게이트웨이는 ARP Request 패킷안에 IP가 자신인것을 확인한 후 ARP Reply 패킷안에 게이트웨이의 MAC 주소를 첨부하여 A 호스트에게 보낸다.
  • A 호스트는 ARP Reply 패킷을 응답받고 해당 정보를 참조하여 두 번째 ICMP Request 패킷을 B 호스트에게 보낸다.
  • 게이트웨이가 ICMP Request 패킷을 수신받고, 해당 패킷 내 IP 헤더를 참고한다.
  • 게이트웨이는 B 호스트의 IP가 다른 네트워크 대역인 것을 확인 후, Routing Table을 참조한다.
  • 게이트웨이는 B 호스트의 MAC 주소를 확인하기 위하여 ARP Request 패킷을 만들어 브로드캐스트한다.
    • 출발지 IP : 게이트웨이 IP | 목적지 IP : B 호스트 IP
    • 출발지 MAC : 게이트웨이 MAC | 목적지 MAC : ?

 

  • B 호스트가 ARP Request 패킷을 수신받아 MAC 주소를 담은 ARP Reply 패킷을 게이트웨이로 응답해준다.
  • 게이트웨이는 ARP Reply 패킷을 받아 정보를 자신의 ARP Cache Table에 업데이트 한 후 ICMP Request 패킷을 ARP Cache Table을 참조하여 B 호스트에게 Forwarding 한다.
    • 출발지 IP : A 호스트 IP | 목적지 IP : B 호스트 IP
    • 출발지 MAC : 게이트웨이 MAC | 목적지 MAC : B 호스트 MAC

 

  • B 호스트는 ICMP Request 패킷을 받아 확인 후 ICMP Reply 패킷을 응답한다.
  • 게이트웨이는 ICMP Reply 패킷을 받아 IP 헤더에 IP 정보를 확인 한 후 목적지가 A 호스트인 것을 확인하여 자신의 ARP Cache Table을 참조하여 Forwarding 진행한다.
  • A 호스트는 ICMP Request 패킷에 대한 ICMP Reply 패킷을 받아보게 된다.
    • 네트워크에서 통신하기 위해서는 IP 주소전에 MAC 주소를 먼저 알고 있어야 한다.
    • ARP Cache Table을 참조하여 해당 MAC 주소가 저장되어 있지 않다면 ARP 프로토콜로 MAC 주소를 확인한다.
    • 게이트웨이 MAC 주소를 ARP Cache Table에 맵핑하는 과정을 먼저 거친 후 다른 네트워크 대역과 통신한다.
    • 3 계층 이상의 장비를 거치게 된다면 프레임 헤더의 MAC 주소가 변경되고, IP 헤더의 IP 주소는 그대로 유지된다.

 3) 3계층 브로드캐스트 주소

  3-1) Local(Limited) Broadcast 주소

  • 동일 네트워크 내에서의 모든 노드로 브로드캐스트 패킷 전달
  • 255.255.255.255

  3-2) Directed Broadcast 주소

  • 다른 대역의 네트워크에 브로드캐스트 패킷 전달
  • IP 주소의 Network ID를 제외한 Host ID를 모두 1로 지정한 IP주소를 입력
  • EX) 192.168.0.0/24의 Directed Broadcast 주소는 192.168.0.255이다.

 

 4) ARP Cache Table

  4-1) 'arp -a' 명령을 통해 ARP Cache Table을 확인가능하다.

  • dynamic으로 설정된 것은 ARP에 의해 동적으로 설정된 MAC 주소이다.
  • static으로 설정된 것은 관리자에 의해 정적으로 설정된 MAC 주소이며, 시스템 종료 전까지 유지된다.

  4-2) 'arp -d' 명령을 통해 ARP Cache Table 캐시 내용 삭제가능하다.

  • 윈도우의 경우 MAC 주소의 구분자로 "-"을 사용한다.
  • 유닉스/리눅스의 경우 MAC 주소의 구분자로 ":"을 사용하며, IP를 명시해주어야 한다.

  4-3) 'arp -s' 명령을 통해 static으로 MAC 주소를 설정가능하다.

  • 유닉스/리눅스의 경우 'PERM(Permanent)'으로 설정된 정보가 보인다.

 

 5) ARP Spoofing 공격(ARP Cache Poisoning)

  • L2 스위치 환경에서 스니핑하기 위한 목적으로 사용되는 공격이다.

  5-1) ARP Spoofing 공격방식

  • 공격자가 A, B 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply 패킷을 만들어 지속적으로 A, B 호스트에게 전송한다.
    • ARP Cache Table의 동적인 정보는 일시적이기 때문에 공격자는 지속적으로 ARP Reply 패킷을 전송해야한다.
  • ARP 프로토콜 특성 상 인증과정이 없기 때문에 A, B 호스트의 ARP Cache Table의 MAC 주소정보가 공격자의 MAC 정보로 변경된다.
  • 공격자는 A, B 호스트가 ARP Spoofing 공격을 눈치채지 못하도록 IP Forward 기능을 활성화 시킨다.
  • 이를 통해 A, B 호스트간 송수신되는 패킷을 공격자는 스니핑할 수 있게 된다.
    • ARP Spoofing은 2계층 주소인 MAC 주소를 위조하여 트래픽을 스니핑하는 것으로 서로 다른 네트워크로 라우팅되지 않기 때문에 공격 대상도 동일 네트워크 대역에 있어야한다.

 

  5-2) 실습

[ 그림 1-2. ARP Spoofing 실습 환경 ]
[ 그림 1-3. ARP Spoofing 전 A, B 호스트의 ARP Cache Table ]

  • 공격자 PC(Kali) ARP Spoofing을 위한 프로그램 설치
    • #apt-get install dsniff
    • #apt-get install fragrouter
  • 공격자 PC(Kali)에서 A, B 호스트에게 각 변조된 ARP Reply 패킷을 지속적으로 전송 및 IP Forward 기능 활성화
    • #arpspoof -i [인터페이스] -t [A 호스트 IP] [B 호스트 IP] : A 호스트에게 B 호스트의 MAC 주소를 공격자의 MAC 주소로 ARP Reply를 보낸다.
    • #arpspoof -i [인터페이스] -t [B 호스트 IP] [A 호스트 IP] : B 호스트에게 A 호스트의 MAC 주소를 공격자의 MAC 주소로 ARP Reply를 보낸다.
    • #fragrouter -B1 : IP Forward 기능 활성화

[ 그림 1-4. 공격자 PC에서 ARP Spoofing 공격 ]

  • A 호스트의 ARP Cache Table 및 와이어샤크 모습 

 

2. IP(IPv4) 프로토콜

 1) 개요

  • 비연결형과 연결형의 구분은 가상/논리적인 연결통로를 맺어 통신하는지에 따라 구분된다.
  • IP 프로토콜은 비연결형 프로토콜로 연결상태를 유지하지 않기 때문에 패킷 전송 순서를 보장하지 않는다.
  • IP는 목적지 주소를 기반으로 라우팅을 담당하는 인터넷 계층의 대표 프로토콜이며, 라우팅은 라우팅 알고리즘을 통해 최적의 경로를 설정하여 목적지로 찾아가게 해주는 기술을 말한다.

 

 2) IP 프로토콜 구조

[ 그림 2-1. IP 프로토콜 헤더 구조 ]

  • VER(4 bits) : IP의 버전정보, 일반적으로 IPv4 사용
  • HLEN(4 bits) : 헤더의 길이, 4 bytes 단위로 표현, 즉 4 bits = 2⁴ = 16 X 4 bytes = 60 bytes로 최대길이 표현가능
  • Service Type(8 bits) : 서비스 품질을 위한 용도, 현재 사용하지 않음
  • Total Length(16 bits) : 헤더부와 데이터부를 포함한 전체 IP Packet의 길이
  • Identification(16 bits) : 단편화 / 재조합 관련 필드
    • IP 데이터그램을 여러조각으로 분할하는 것을 단편화(Fragmentation)이라하고 분할된 단편(Fragment)들을 조합하여 원본 IP 데이터그램을 완성시키는 것을 재조합(Reassembly)이라 한다.
    • 단편화 전 원본 IP 데이터그램(Original Datagram)을 식별하기 위한 IP
  • Flags(3 bits) : 단편화 / 재조합 관련 필드
    • 첫 번째 필드 : 사용안함
    • 두 번째 필드 : Don't Fragment bit
    • 세 번째 필드 : More Fragment bit
  • Fragmentation offset(13 bits) : 단편화 / 재조합 관련 필드
    • IP의 특성상 원본 IP 데이터그램의 단편들이 순서대로 전송되는것이 아니므로 이를 순서대로 조합하기 위한 현재 단편의 상대위치(offset)를 저장한 필드
    • 8 bytes 단위로 표현한다.
  • Time To Live(8 bits) : IP 패킷의 생존시간을 지정하는 필드
    • 패킷이 라우터/L3 스위치에 도착하면 TTL 값을 1 감소시키고 그 값이 0이 되면 해당 패킷을 폐기한다.
    • 라우터/L3 스위치를 통해 패킷 라우팅을 하던 중 라우팅 테이블 오류 및 네트워크 장애로 무한 루핑(Looping)이 발생하여 목적지에 도달할 수 없는 패킷이 생존하여 네트워크 대역을 차지하는 상태를 방지하기 위함
    • 일반적으로 Linux는 64, Window는 128, Unix는 255로 선정된다.
  • Protocol(8 bits) : 상위 프로토콜을 식별하기 위한 프로토콜 번호를 저장하는 필드
    • 상위 프로토콜과 다중화, 역다중화를 위한 식별값
    • ICMP(1), TCP(6), UDP(17) 등이 있다.

 

 3) IP 단편화(Fragmentation)

  3-1) 개요

  • IP 패킷/데이터그램은 MTU에 따른 단편화(Fragmentation)가 발생한다.

IP 단편화와 재조합이 발생하는 이유
  • 데이터 링크 계층 프로토콜을 물리적인 네트워크 프로토콜이라고 하는데, 이는 물리적인 네트워크와 직접적인 연관이 있기 때문이다.
  • 이러한 데이터 링크 계층의 프로토콜이 가진 물리적인 특성으로 인해 한 번에 데이터 전송을 할 수 있는 크기가 제한되어 있다. 이러한 제한을 MTU(Maximum Transmission Unit)라 한다.
  • IP 프로토콜은 하위 물리적인 네트워크 프로토콜의 크기제한인 MTU 크기에 맞춰서 전달되어야 하기 때문에 IP 단편화와 재조합 기능이 존재하게 된다.

  • IP 패킷이 LAN 또는 WAN의 다양한 프로토콜의 상위 프로토콜을 사용할 수 있는 이유가 이런 단편화를 이용한 패킷크기 조절이 가능하기 때문이다.
  • 단편화는 최초 출발지뿐만 아니라 라우터/L3 스위치 중계구간의 MTU에 따라 추가적으로 발생하지만 패킷의 통신 효율을 위해 중계구간의 MTU가 달라진다고 해도 재조합되지 않으며 최종 목적지에서만 재조합된다.

 

  3-2) 동작방식

 

[ 그림 2-2. IP 단편화 동작방식 ]

 

 4) IP 라우팅(Routing)

  4-1) 라우팅 규칙

  • 첫 번째 목적지 주소가 자신과 동일한 네트워크에 있다면 직접 호스트가 전송한다.
  • 두 번째 목적지 주소가 자신과 동일한 네트워크에 속하지 않는다면 직접 전송이 불가하기 때문에 1차 경유지(Gateway) 주소를 라우팅 테이블에서 참조하여 찾는다.
    • 라우팅 테이블은 임의의 목적지로 가기위한 경로 정보를 저장하고 있는 자료구조이다.
    • "netstat -rn" 명령을 통해 호스트의 라우팅 테이블의 정보를 확인할 수 있다.

[ 그림 2-3. 호스트 라우팅 테이블 ]

 

  4-2) 라우팅 테이블 검색 방식 및 우선순위

  • 검색방식 : IP 패킷의 목적지 IP와 라우팅 테이블의 netmask/genmask를 bit and(&)연산을 수행 후 라우팅 테이블의 destination 필드와 비교, 일치하는 경로를 선택하여 패킷을 전송한다.
    • 패킷의 목적지 IP와 netmask/genmask를 bit and(&)연산 하는 이유는 목적지 IP에서 네트워크 ID 부분을 추출하기 위한 과정이다.
  • 검색우선 순위
    • 먼저 목적지 IP와 일치하는 경로를 찾는다.
    • 일치하는 경로가 없으면 목적지 네트워크 주소와 일치하는 경로를 찾는다.
    • 일치하는 경로가 없으면 default gateway(0.0.0.0)으로 보낸다.

 

  4-3) 실습

  • 라우팅 테이블("netstat -rn" OR "route")

[ 그림 2-4. 라우팅 테이블 ]

  • Destination : 목적지 호스트 또는 네트워크 주소
  • Gateway : 목적지로 전송하기 위한 Gateway 주소
  • Genmask : 범용(General) 목적의 마스크로 다음과 같은 역할을 수행한다.
    • 목적지 호스트를 식별하기 위한 마스크 : 255.255.255.255
    • 목적지 네트워크 ID를 식별하기 위한 마스크 : Netmask를 의미
    • default gateway를 식별하기 위한 마스크 : 0.0.0.0
  • Flags : 해당 경로에 대한 상태정보를 플래그
    • U(Route is UP) : 경로가 활성화 되어있음(직접 송신가능)
    • G(Use Gateway) : gateway를 사용함
    • H(Target is a Host) : 목적지가 호스트를 의미

 

 5) IP Spoofing

  5-1) 개요

  • IP 스푸핑(Spoofing)은 IP를 속이고 통신하는 공격으로 1995년 캐빈 미트닉이 이를 이용하여 실제 해킹을 시도하여 널리 알려진 공격방식이다.
  • 시스템간 트러스트(Trust)관계를 이용, 트러스트 관계가 맺어진 서버와 클라이언트를 확인한 후 신뢰관계가 있는 클라이언트를 연결 불가능한 상태로 만들고 공격자가 클라이언트의 IP로 위조하여 접속하는 방식이다.
    • 트러스트 관계 설정은 ID, PW기반의 로그인이 아닌 신뢰관계에 있는 IP를 등록하여 해당 IP로 접근하는 것을 허용해주는 방식이다.
    • IP주소로 인증하고 로그인 없이 접속이 가능하도록 해주는 방식이다.
    • 트러스트 설정은 다수의 시스템을 관리하는 관리자의 입장에서 ID, PW를 관리해야하는 어려움을 해결하고 접속과정에서 ID, PW가 스니핑되는것을 차단하지만, IP 스푸핑에는 매우 취약하다.
  • 유닉스, 리눅스 시스템에서 트러스트 관계 설정파일로 '/etc/hosts.equiv' '$HOME/.rhosts' 파일이 있다.

  5-2) 대응책

  • 시스템 간 트러스트 설정을 사용하지 않는다. r계열 서비스 사용 X
  • 반드시 사용해야할 경우 트러스트 된 시스템의 MAC 주소를 정적(static)으로 구성하여 단순히 IP만을 위조한 접속을 차단한다.

  5-3) $HOME/.rhosts, /etc/hosts.equiv 사용금지

  • r계열 서비스(rlogin, rsh, rexec 등)를 통한 원격 접속은 보안상 매우 취약하여 서비스 포트가 열려 있을 경우 중요 정보 유출 등 침해사고의 원인이 될 수 있다.
  • /etc/hosts.equiv 및 $HOME/.rhosts 파일 소유자를 root 또는 해당 계정으로 변경한다.
    • chown root /etc/hosts.equiv
  • /etc/hosts.equiv 및 $HOME/.rhosts 파일 권한을 600이하로 변경한다.
    • chmod 600 /etc/hosts.equiv
  • /etc/hosts.equiv 및 $HOME/.rhosts 파일에서 "+"를 제거하고 반드시 필요한 호스트 및 계정만 등록한다.

 

 6) IPv6

  6-1) 개요

  • IPv6는 IPv4 주소가 고갈되는 문제를 해결하기 위하여 새로운 128비트 체계로 2¹²⁸개의 주소를 갖는 인터넷 프로토콜 주소를 말한다.
  • IPv6 주소는 16비트 단위로 구분하며 각 단위는 16진수로 변환되어 콜론(:)으로 구분하여 표기한다.
  • 128비트의 앞에 64비트는 네트워크 주소를 의미하고 뒤에 64비트는 호스트 주소를 의미한다.\

  6-2) 장점

  • 확대된 주소 공간
  • 단순해진 헤더 포맷
    • Pv4 주소 헤더의 불필요한 필드를 제거하여 보다 빠른 처리가 가능
  • 간편해진 주소 설정 기능
    • IPv6 프로토콜에 내장된 주소 자동 설정 기능(네트워크 대역정보 + MAC 주소)을 이용하여 플러그 앤 플레이 설치가 가능
  • 강화된 보안성 및 개선된 모바일 IP

  6-3) IPv6 전환기술

  • 듀얼스택(Dual Stack)
    • IPv4와 IPv6 프로토콜을 동시에 설정하여 통신 상대에 따라 선택적으로 사용할 수 있도록 하는 방식
    • 호스트, 라우터 등에 듀얼스택을 적용하여 IPv4와 IPv6 패킷을 모두 처리할 수 있도록 해준다.
    • 장기적으로 보았을 때 가장 추천되는 방식이다.
  • 터널링(Tunneling)
    • IPv4 네트워크를 경유하여 IPv6 네트워크 간 통신을 위한 방식으로 IPv4 네트워크를 통과하는 가상의 경로를 만들어 통신하는 방식을 말한다.
    • 터널링 기술은 호스트와 라우터에서 IPv6 패킷을 IPv4 패킷으로 캡슐화하여 전송함으로써 캡슐화된 IPv6 패킷이 IPv4 네트워크를 통과하게 하는 기술이다.
  • 주소 변환(Address Transmission) 또는 헤더 변환
    • 주소 변환 방식은 IPv4 주소를 IPv6 주소로 변환하거나 IPv6 주소를 IPv4 주소로 변환하여 통신하는 방식을 말한다.
    • 패킷의 앞부분에 변환 헤더를 추가함으로써 주소를 변환하여 송신하고 수신측에서 변환 헤더를 제거하는 방식으로 통신한다.
    • 소수의 IPv6 사이트가 대규모의 IPv4 인터넷에 연결되는 전환의 초기 단계와 소수의 IPv4 사이트가 대규모의 IPv6 인터넷에 연결되는 전환의 마지막 단계에서 사용할 수 있다.
반응형