정보보안기사 - 네트워크(1)
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: |
IP Forward 기능 활성화 | a_ip: |
대응방법
⊙ 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