상세 컨텐츠

본문 제목

네트워크보안3 - Spoofing

보안

by oose. 2023. 4. 19. 14:28

본문

1. 개요 
 1) 스푸핑(Spoofing)
  • 공격자가 마치 공격 대상자(victim)인 것처럼 행세하는 것
   - 원래 의미: 다른 사람을 흉내 내는 것, 혹은 따라하는 짓궂은 장난
  • 공격자는 마치 자신이 수신자인 것처럼 행세하여 송신자가 보낸 메시지를 강탈
 
2. 다양한 Spoofing 기법의 종류들
 - 2계층 공격: 공격자가 같은 스위치 내에 존재
 - 3계층 혹은 7계층 공격: 공격자가 내부 network 및 외부 network에서도 공격 가능

구분 공격 계층
ARP 스푸핑 2계층
IP 스푸핑 3계층
ICMP 리다이렉트
DNS 스푸핑 7계층

 
3. ARP Spoofing
 - ARP(Address Resolution Protocol)
  • MAC 주소를 결정(Resolution)하기 위한 통신 프로토콜
  • IP주소를 MAC 주소(하드웨어 주소)로 변환하는 역할
 - IP 주소(3계층)로 보내더라도 내부적으로는 MAC주소(2계층)로 변환되어 전송되는 성질을 악용하는 공격
 - 공격방식
  • 공격자가 스위치 내의 다른 단말에 가짜 ARP reply를 보내는 것
  • ARP request가 없는 경우에도 ARP reply를 스위치 내의 다른 단말에 지속적으로 보내어 가짜 MAC 주소를 ARP 테이블에 반영하게 만듦
 
 1) step-1: B의 MAC 주소를 가짜 MAC 주소(공격자의 MAC)로 변경
  • 공격자 I가 스위치에 연결된 다른 단말 A에 ARP 응답을 보냄
  • 가짜 ARP 응답에 의해 A의 ARP 테이블에 B의 MAC 주소가 MACI로 변경

ARP 스푸핑 공격 step-1

 2) step-2: B로 가야 하는 메시지가 공격자 I에게 전송됨
  • A가 B의 IP 주소인 IPB로 메시지 전송
  • IPB에 해당하는 MAC 주소는 MACI로 설정
  • 실제로는 공격자 I에게 메시지가 전달됨

ARP 스푸핑 공격 step-2

 -ARP Spoofing을 이용한 sniffing 공격

 1) step-1: 스위치 내의 모든 단말의 MAC 주소를 공격자의 MAC 주소로 변경

 2) step-2: 공격자에게로 전달된 메시지를 sniffing한 후 원래의 수신자에게 재전송함

- ARP Spoofing의 현상과 탐지

 1) 지속적인 ARP 응답 발생

    – 와이어샤크(Wireshark) 같은 패킷 분석 프로그램을 이용하여 확인 » http://www.wireshark.org/ » 예) ARP 응답으로 IP 주소 192.168.2.1에 해당하는 기존 MAC 주소 70:f3:95:8f:92:3a와 다른 새로운 MAC 주소 00:0e:2e:60:b7:22가 전달

 2) ARP 테이블에서 중복된 MAC 주소 확인

  – 명령어 실행: arp –a

  – 서로 다른 IP 주소가 같은 MAC 주소인 b8-03-05-6c-a0-bb 사용

 

 3) ARP 테이블 감시 프로그램 활용

 ex. XArp, arpwatch 등(온라인에서 download 가능)

 

 4) network 속도 저하

  – 일반적으로 spoofing에 이어 sniffing까지 이루어지는 경우가 많아 경로가 늘어나므로 속도가 저하됨

 

 

- ARP Spoofing 방지 대책

 1) 정적인 ARP 테이블 관리

  – 현실적 어려움: 관리 비용 증가

  – 단말의 추가나 변경이 발생할 때 게이트웨이의 ARP 테이블을 수정해야 됨

  – 웹 server와 같이 중요 단말만을 묶어서 별도의 Subnetwork를 구성하고, 이들에 대해서만 정적인 ARP 테이블을 관리        >>규모가 큰 망에는 적합하지 않음

 2) PC와 server의 보안 수준 강화

  - OS, DBMS 등의 보안 update를 정기적 시행, 백신 프로그램 설치 등

 

4. IP Spoofing

 - IP Spoofing(IP Address Spoofing): 공격자의 IP 주소를 다른 IP 주소로 속이는 공격 방법

 - 핵심: 자신이 보내는 메시지 내의 IP 주소를 변조

 - IP 헤더 정보에 저장된 출발 IP 주소(Source IP Address) 변조

IP 헤더 정보

1) IP Spoofing을 이용한 보안 공격

 • IP Spoofing 자체가 위협적일 수 있는 상황

   – IP 주소가 인증(Authentication)의 수단이 될 때 예) A server와 B server가 IP 주소 기반의 트러스트(Trust) 관계

   – 출발 IP가 신뢰하는 server인 A의 주소 IPA인 경우 B는 IP 주소가 IPA인 모든 요청에 대해서 인증 절차 없이 허용

 • 공격자는 먼저 B와 트러스트 관계인 server A를 공격

   – 서비스 거부 공격(DoS: Denial of Service) 등으로 공격

    » server A를 동작 불능 상태로 만듦

   – 출발 IP 주소를 IPA로 변조한 메시지를 server B로 보냄 

   » server B는 출발 IP가 IPA인 공격자의 메시지를 인증 절차 없이 허용함

서버 A 공격 후, IP 스푸핑을 이용한 보안 공격

 2) IP Spoofing의 합법적인 사용: 웹 성능 테스트 프로그램

 • 웹 사이트 성능 테스트 프로그램

  – 내부적으로 IP 변조 기능 사용

  – 대량의 가상 사용자를 생성하여 마치 이들이 실제 사용자인 것처럼 시뮬레이션

  – 가상 사용자별로 서로 다른 IP 주소를 할당

  – 동시에 여러 사용자가 웹 사이트를 정상적으로 이용하는 것을 확인

   ex. HP사의 LoadRunner 등

 

 3) IP Spoofing의 방지 방법

 • IP 주소 기반의 트러스트 관계를 맺지 않음

  – 서버 클러스터링(Server Clustering)이 꼭 필요한 경우: 트러스트 관계에 있는 server들의 보안 수준 강화

 • 패킷 필터링(Packet Filtering)

  – Gateway 밖에서 시도되는 IP Spoofing 공격에 대한 방지 수단

  – 외부에서 내부로 전달되는 메시지 중에서 출발 IP가 내부 IP로 설정된 메시지를 필터링 (차단)

5. ICMP Spoofing

 • network 상에 현재 오류가 없는지 진단하거나 제어하는 목적으로 사용되는 프로토콜

 • IP 프로토콜의 약점 보완 목적

  – IP 프로토콜 자체는 메시지 전송 중 오류가 발생한 경우 특별한 대처방안이 없음

 

1) ICMP의 사용 목적 1: network 진단

 • network 연결 여부 확인: ping 또는 traceroute

ICMP 프로토콜의 예 : ping 프로그램의 동작 원리

  2) ICMP의 사용 목적 2 : network 흐름 통제

  • Gateway가 2개인 network 환경 가정

   – Gateway1: 외부망과의 연동기능

   – Gateway2: 회사의 다른 망과의 연동기능

  • Host A에서 C로 데이터를 보내는 경우

   – GW1은 GW2로 메시지를 전달하고, A에게 ICMP redirect를 보내 이후로는 GW2로 메시지를 직접 전송하도록 제어

게이트웨어의 IP 메세지 재전송

 

ICMP 리다이렉트의

 3) ICMP의 네트워크 제어기능을 악용하는 공격 방법

  • step-1: ICMP redirect 보내기

  • step-2: 단말 A에서 보낸 메시지는 먼저 공격자 I에게로 전송됨

  • step-3: sniffing 성공을 위해 기존 게이트웨이로 재전송

   -> 많은 경우 방화벽 등에서 ICMP 메시지 자체를 차단하는 경우가 많음

 

6. DNS Spoofing

 - 접속하려는 URL 주소 이름으로 IP 주소를 구하는 서비스

 1) DNS Spoofing의 개념

  • 공격 대상에게 전달되는 IP 주소를 변조하거나, DNS server에 변조된 IP 주소가 저장되게 하여 공격 대상이 의도하지 않은 주소로 접속하게 하는 공격 방법

  • 가짜 은행 사이트의 예

가짜 은행 사이트의 예

  • 일반 사용자가 자신이 공격을 당했는지 판단하기 쉽지 않음

  • ‘보안 관련 인증 절차’ 등의 가짜 메시지 내용을 통해 사용자의 PC에 악성코드 설치 유도

  → 향후 2차, 3차의 추가적인 보안 사고 발생 가능

가짜 포털 사이트의 예

 2) DNS query sniffing을 이용한 공격

 • step-1: DNS query를 sniffing(사전에 ARP spoofing 등 선행작업 필요)

 • step-2: client에 변조되거나 위조된 DNS reply를 전송

 • step-3: victim 시스템이 변조된 DNS reply를 선택

  – UDP 방식으로 DNS reply가 전달되기 때문에 DNS reply 중에서 먼저 도착한 메시지만 선택되고 이후에 도착한 메시지는 무시

  >> 공격자가 DNS server보다 공격 대상자에 좀 더 가까운 곳(같은 스위치에 연결)에 있음

     → 공격자의 DNS reply가 먼저 도착하면 공격자가 보낸 변조된 IP 주소를 선택

 3) DNS cache poisoning - DNS server의 IP 주소 변조

  (1) DNS server의 동작 방식: 순환 질의(Recursive Query) 방식

    – DNS server는 Authoritative Name Server(공인네임서버)에 계층적으로 도메인의 주소를 query

DNS의 순환 질의

     – 구해진 IP 주소는 DNS server에 캐시(Cache)로 저장

 

  (2) Random ID 생성 기반의 DNS cache poisoning

    – step-1: 동일한 domain name에 대해 다수의 DNS query를 보냄

    – step-2: 대규모 DNS 응답을 보냄

    – 여러 개의 서로 다른 ID 값을 랜덤(Random)하게 생성하여 DNS 응답을 동시에 보냄

     → DNS server와 공인 네임 서버가 공유하는 ID 값을 알아맞히기 위해

    – 일단 ID 값이 같다면 공격자가 보낸 DNS 응답이 공인 네임 서버에서 보내는 DNS 응답 대신에 선택됨

    – 대부분 공격자가 공인 네임 서버보다 DNS server에 가까워 먼저 도착

 

    – 생일 공격(Birthday Attack) 기법 이용

   >> 생일 역설(Birthday Paradox): 한 반에 동시에 23명의 사람이 모여 있을 때 그 중에 생일이 같은 사람이 있을 확률이 50% 이상

    – DNS query에서 사용되는 ID의 크기: 2바이트(16비트)

    – 공격자가 random하게 750개 이상의 DNS 응답 ID를 생성

    → 그 중 1개는 성공 – Spoofing이 필요 없고 비교적 간단한 공격

    – 같은 스위치에 연결된 단말도 필요 없고 외부에서도 공격시도 가능

 

 4) DNS cache poisoning 공격의 대비책

  • DNS server의 소프트웨어를 최신 버전으로 업데이트

  • DNSSEC(Domain Name System Security Extensions) 사용

  – 암호화하여 DNS query 및 응답 전달

 

7. Session Hijacking

 – 두 시스템 간의 연결이 활성화된 상태, 즉 로그인된 상태를 가로채는 것

 

8. TCP Session Hijacking

  – TCP의 고유한 취약점을 이용하여 정상적인 접속을 빼앗는 방법

  – Server와 client에 각각 잘못된 sequence number를 사용해서 연결된 session에 잠시 혼란을 준 뒤 자신이 끼어 들어가는 방식

  ① client와 server 사이의 패킷을 통제하고 ARP spoofing 등으로 통신 패킷 모두가 공격자를 지나가게 함

  ② server에 client 주소로 연결을 재설정하기 위한 RST reset 패킷을 보냄

  ③ server는 패킷을 받아 client의 시퀀스 넘버가 재설정된 것으로 판단하고 다시 TCP 3-way handshaking을 수행

  ④ 공격자는 client 대신 연결되어 있던 TCP 연결을 그대로 물려받음

  – 대응책

  • telnet과 같은 취약한 프로토콜을 이용하지 않고 SSH와 같이 세션 인증 수준이 높은 프로토콜로 server에 접속하기

  • client와 server 사이에 MAC 주소를 고정하기

관련글 더보기