자격증/기타

정보보안기사 - 네트워크(1)

곤빙글 2021. 10. 26. 16:09

1. OSI 7Layer 과 TCP/IP Protocol 비교 및 각 층의 공격 정리

[Layer 2 - 데이터 링크 ]

① 스위치 재밍 공격 (MAC Flooding 공격)
    Mac Address Table의 버퍼를 오퍼플로우(Source MAC 주소를 계속 변경하면서 패킷을 지속적으로 전송) 시켜, 스위치가 허브처럼 동작시키는 공격
※ 스위치는 Fail Safe(장애안전: 장애 발생 시 모든 기능을 허용하는 정책)를 따르는 장비로, 장애 발생 시 더미 허브처럼 연결된 모든 노드에게 패킷을 전송

② ARP 스푸핑 공격 (ARP Cache Poisoning)

    공격자가 arp reply(희생자ip:자신의MAC)를 지속적으로 보내 희생자의 ARP Cache Table의 정보를 변경하여, 송수신 패킷을 스니핑할 수 있는 공격 

※ 2계층에서 동작하므로, 공격대상도 동일 네트워크 대역에 있어야 함

HOST 희생자A
(a_ip, a_mac)
<- arp reply
(c_ip:b_mac)
지속적으로 전달
공격자B
(b_ip, b_mac)
arp reply ->
(a_ip:b_mac)
지속적으로 전달
희생자C
(c_ip, c_mac)
ARP Cache c_ip:c_mac b_mac IP Forward 기능 활성화 a_ip:a_mac b_mac

    대응방법

    ⊙ ARP Cache를 정적(static)으로 설정하여 ARP Reply을 수신해도 캐시 정보를 갱신하지 않음 = arp -S IP MAC

    ⊙ ARPWatch 등 ARP 트래픽을 실시간으로 모니터링하는 프로그램을 이용하여 변경 발생 시 즉시 확인

 

 

[Layer 3 - 네트워크 ]

③ IP 스푸핑 공격

    트러스트(IP주소로 인증하고 로그인없이 접속이 가능한 방식 = /etc/hosts.equiv, $HOME/.rhost) 관계에 있는 희생자를 DoS공격을 통해 사용 불능 상태로 만든 뒤, IP변조를 통해 세션을 새로 맺어 서버에 접속하는 공격

공격자A → ② SYN (출발지 IP를 B의IP로 변경) →
→ ④ ACK (B대신 응답) →
서버 ← 트러스트 관계 → 희생자B
→ (희생자B) ← 세션 연결 성공 → → ③ SYN+ACK (응답대기) → ① DoS 공격 ↑ 

    대응방법

    ⊙ 시스템 간 트러스트 설정을 사용하지 않기 (예. /etc/hosts.equiv파일에서 "+"는 삭제하고 필요한 호스트만 지정)

    ⊙ 트러스트된 시스템의 MAC주소를 정적으로 구성하여 단순히 IP만을 위주한 접속을 차단

 

▶ IPv6: 128비트 체계(네트워크주소-인터페이스주소), 주소 자동 설정 기증, IPsec기능 기본 제공 등

    - 듀얼스택: IPv4와 IPv6 프로토콜을 동시에 설정하여 통신 상대에 따라 선택적으로 사용

    - 터널링: IPv4네트워크를 경유(가상의 경로)하여 IPv6네트워크 간 통신, IPv4 패킷으로 캡슐화하여 전송

    - 주소/헤더변환: 패킷의 앞부분에 변환 헤더를 추가하여, 주소를 변환 후 각 변환 헤더를 제거하는 방식

 

 

▶ ICMP: IP패킷 전송 중 에러 발생 원인 및 네트워크 상태를 진단해주는 기능

    - Type 3 (Destination Unreachable): 목적지 도달 불가

       ⓐCode1 (최종 단계의 라우터에서 실패), ⓑCode2 (특정 프로토콜 사용 불가), ⓒCode3 (UDP 포트가 열려있지 않은 경우, TCP

       RST 패킷 반환), ⓓCode4 (DF플래그가 설정되어 IP 단편화를 할 수 없는 경우 반환)

   - Type 5 (Redirection): 라우팅 경로가 잘못되어, 새로운 경로를 알려주는 메시지

   - Type 11 (Time Exceeded): 타임아웃되어 IP 패킷 폐기

      ⓐCode0 (최종 목적지 도달 전에 TTL=0되어 폐기), ⓑCode1 (IP패킷 재조합 중 타임아웃 발생되어 폐기)

 

④ ICMP 리다이렉트 공격

    ICMP Type 5(Redirection)를 이용하여 희생자의 라우팅 테이블을 변조(목적지에 대한 게이트웨이 주소를 공격자 IP로 조작)하여 스니핑하는 공격

    대응방법

    ⊙ ICMP Redirection 메시지에 의해 라우팅 테이블이 변경되지 않도록 옵션 해제

        예_리눅스) #sysctl -w net.ipv4.conf.all.accept_redirects=0

 

 

[Layer 4 - 전송 ]

▶ TCP: 연결 지향 프로토콜(순서제어-전송순서 보장), 신뢰할 수 있는 프로토콜(흐름제어, 오류제어, 혼잡제어)

    - TCP 상태 플래그: 6bits, UAPRSF

       URG(긴급데이터설정) - ACK(수신확인응답) - PSH(데이터즉시처리) - RST(강제종료) - SYN(연결설정) - FIN(정상종료)

 

    - 3-Way Handshake(연결설정 과정)

      ① SYN_SENT(000010): Client에서 순서번호(랜덤한 값)를 정해 동기화를 위해 Server로 보냄

      ② SYN_RCVD(010010): Server는 연결요청에 대한 응답값(ACK)과 클라이언트로 연결요청(SYN)을 보냄

      ③ ESTABLISHED(010010): Client는 연결요청에 대한 응답값(ACK)를 보내 연결 설정을 완료

    - 4-Way Handshake(연결종료 과정)

      ① FIN_WAIT_1(010001): Client는 연결종료 패킷(FIN+ACK)을 Server에 보냄

      ② CLOSE_WAIT(010000): Server는 연결종료 패킷에 대한 수신 확인 응답(ACK)을 보냄

      ③ LAST_ACK(010001): Server는 TCP연결 종료할 때까지 대기 후, 종료되면 연결종료 패킷(FIN+ACK)을 보냄

      ④ TIME_WAIT(010000): Client는 서버에 수신 확인 응답(ACK)을 보낸 후, 2MSL시간동안 대기 후 연결을 종료

 

⑤ TCP 세션 하이재킹

   세션 식별정보(Seq num, Ack num)를 위조하여 세션을 탈취하는 공격 (ARP스푸핑을 통해 식별정보 탈취)

  - TCP는 연결설정 과정(3 way handshake)을 통해 상호간 세션을 생성 후, 식별자를 통해 상호간 인식

    대응방법

    ⊙ ACK Storm 탐지, 패킷의 유실과 재전송 증가 탐지, 기대하지 않은 접속의 리셋 확인을 수행

        ※ ACK Storm: 서로 보낸 잘못된 ACK패킷에 대해 교정하기 위해 ACK패킷을 재전송 > 반복적으로 대량 발생한 상태

 

 

2. 포트 스캐닝

     : 대상 서버의 동작 여부와 제공하는 서비스 등 확인

① TCP Open 스캔 (nmap -ST)

     - OPEN: SYN > SYN+ACK > ACK, RST+ACK

     - CLOSE: SYN > RST+ACK

     - Filtered by FW: SYN > ICMP Unreachable/응답없음

 

② TCP SYN 스캔 (nmap -sS)

     - OPEN: SYN > SYN+ACK > RST (연결설정을 완료하지 않기 때문에 시스템 로그에 남지 않음)

     - CLOSE: SYN > RST+ACK

     - Filtered by FW: SYN > ICMP Unreachable/응답없음

 

③ TCP FIN 스캔 (nmap -sF)

     - OPEN/Filtered: FIN > 응답없음

     - CLOSE: FIN > RST+ACK

 

④ TCP NULL 스캔 (nmap -sN)

     - OPEN/Filtered: No Flag Set > 응답없음

     - CLOSE: No Flag Set > RST+ACK

 

⑤ TCP Xmas 스캔 (nmap -sX)

     - OPEN/Filtered: FIN,PSH,URG > 응답없음

     - CLOSE: FIN,PSH,URG > RST+ACK

 

⑥ TCP Ack 스캔 (nmap -sA, 방화벽의 필터링 정책을 테스트)

    - Filtered: ACK > ICMP Unreachable/응답없음

    - 방화벽 없음: ACK > RST

 

⑦ UDP 스캔 (nmap -sU)

     - OPEN: UDP > UDP/응답없음

     - CLOSE: UDP > ICMP Unreachable