스푸핑

- 스푸핑(Spoofing)
- 원래 의미 : 다른 사람을 흉내 내는 것 혹은 따라하는 짓궂은 장난
- 공격자는 마치 자신이 수신자인 것처럼 행세하여 송신자가 보낸 메시지를 강탈(수신자 역할)
- 공격자가 마치 공격 대상자인 것처럼 행세하는 것(송신자 역할)
- 스니핑 vs 스푸핑
- 송·수신자 간의 메시지 전달 여부에 차이가 있음
- 스니핑 : 수동적 공격
- 스푸핑 : 능동적 공격
- 스니핑은 송·수신자 간의 메시지 전달 잘 됨(엿듣기)
- 스푸핑은 공격 대상자(송신자 or 수신자)인 것처럼
행세하므로 메시지 전달이 불완전
스푸핑
- 다양한 스푸핑 기법의 종류들
- 2계층 공격 : 공격자가 같은 스위치 내에 존재
- 3계층 or 7계층 공격 : 공격자가 내부 네트워크 및 외부 네트워크에서도 공격 가능
- 네트워크 환경의 예

ARP의 개념
- ARP(Address Resolution Protocol)
- MAC 주소를 결정(Resolution)하기 위한 통신 프로토콜
- IP주소를 MAC 주소(하드웨어 주소)로 변환하는 역할
- 하드웨어 주소 : 네트워크 카드별로 부여되는 고유한 번호
- 공격자가 공격 대상자의 MAC 주소를 가로채는 공격
- IP 주소(3계층)로 보내더라도 내부적으로는 MAC주소(2계층)로 변환되어 전송됨
ARP의 개념
- ARP의 동작 원리(같은 로컬 네트워크에 단말이 있는 경우)
- ARP 요청의 예: IP 주소 IPB에 대한 MAC 주소가 없는 경우
(1) 단말 A : 단말 B의 MAC 주소를 모르기 때문에 스위치로 ARP 요청(ARP Request)을 보냄
(2) 스위치 : ARP 요청을 전달받게 되면, 자신에게 접속된 모든 단말에게 ARP 요청을 브로드캐스트(Broadcast)
방식으로 전송
(3) 단말 B : ARP 요청을 전달받은 단말 중에서 실제 요청한 IP 주소를 가진 단말이 있다면 이 단말은 ARP
응답(ARP Reply)을 보냄
(4) 단말 A : ARP 응답을 전달 받아 자신의 ARP 테이블에 B의 MAC 주소를 추가

ARP의 개념
• ARP의 동작 원리(같은 로컬 네트워크에 단말이 있는 경우)

ARP의 개념
- ARP의 동작 원리(외부 네트워크에 단말이 있는 경우)
- 외부의 네트워크에 있기 때문에 외부 네트워크의 통로가 되는 게이트웨이(Gateway)의 MAC 주소가
해당 IP의 MAC 주소로 설정
- ARP 응답의 예 : 외부 망에 있는 단말 C에 대한 MAC 주소 추가

ARP 스푸핑
- 핵심
- 공격자가 스위치 내의 다른 단말에 가짜 ARP 응답을 보내는 것
- (ARP 요청이 오지 않았는데도 불구하고) ARP 응답을 스위치 내의 다른 단말에 지속적으로 보냄
→ 가짜 MAC 주소를 자신의 ARP 테이블에 반영
ARP 스푸핑
- Step-1: B의 MAC 주소를 가짜 MAC 주소로 변경
- 공격자 I: 스위치에 연결된 다른 단말 A에 ARP 응답을 보냄
- 가짜 ARP 응답에 의해 A의 ARP 테이블에 B의 MAC 주소가 MACI로 변경

ARP 스푸핑
- Step-2: B로 가야 하는 메시지가 공격자 I에게 전송됨
- A가 B에게 네트워크로 메시지 전송
- A는 B의 IP 주소인 IPB로 메시지 전송
- IPB에 해당하는 MAC 주소는 MACI로 변경
- 실제로는 공격자 I에게 메시지가 전달됨

ARP 스푸핑
- ARP 스푸핑을 이용한 스니핑 공격
- Step-1: 스위치 내의 모든 단말의 MAC 주소를 공격자의 MAC 주소로 변경

ARP 스푸핑
- ARP 스푸핑을 이용한 스니핑 공격
- Step-2: 공격자에게로 전달된 메시지를 원래의 수신자에게 재전송함

ARP 스푸핑
- ARP 스푸핑의 현상과 탐지
- (1) 지속적인 ARP 응답 발생
- ARP 스푸핑을 성공하고자 ARP 응답 혹은 ARP 요청을 주기적으로 보냄
- 와이어샤크(Wireshark) 같은 패킷 분석 프로그램을 이용하여 확인
- 예) ARP 응답으로 IP 주소 192.168.2.1에 해당하는 기존 MAC 주소 70:f3:95:8f:92:3a와 다른 새로운 MAC 주소
00:0e:2e:60:b7:22가 전달

ARP 스푸핑
- ARP 스푸핑의 현상과 탐지
- (2) ARP 테이블에서 중복된 MAC 주소 확인
- 명령어 실행: arp –a
- 예) IP 주소(172.30.1.1)와 다른 IP 주소들(172.30.78.188, 172.30.78.38)
- 같은 MAC 주소인 b8-03-05-6c-a0-bb 사용

ARP 스푸핑
-
ARP 스푸핑의 현상과 탐지
- (3) ARP 테이블 감시 프로그램 활용
- ARP 테이블을 직접확인 어려움 → 도구 이용(xarp, arpwatch 등)
- xarp의 실행 예

- (4) 네트워크 속도 저하
- 송신자가 보낸 메시지가 공격자를 한번 거쳐 재전송
ARP 스푸핑
-
ARP 스푸핑 방지 대책
-
a. 정적인 ARP 테이블 관리
-
공격자가 보낸 arp 응답에 대해 MAC 주소가 변하지 않도록 정적 주소 설정
-
현실적 어려움 : 관리 비용 증가
-
단말의 추가나 변경이 발생할 때 게이트웨이의 ARP 테이블을 수정해야 됨
-
웹 서버와 같이 중요 단말만을 묶어서 별도의 서브 네트워크 (Sub-network)를 구성하고, 이들에 대해서만 정적인 ARP 테이블을 관리

-
B. PC와 서버의 보안 수준 강화
- 보안 취약점이 있는 PC 혹은 서버로부터 공격이 시작되므로, 정기적인 보안 업데이트 및 최신화
IP 스푸핑
- IP 스푸핑(IP Address Spoofing)
- 공격자의 IP 주소를 다른 IP 주소로 속이는 공격 방법
- 자신이 보내는 메시지 안의 IP 주소를 변조
- IP 헤더 정보에 저장된 출발 IP 주소(Source IP Address) 변조

IP 스푸핑

IP 스푸핑
- IP 스푸핑을 이용한 보안 공격
- 공격자는 먼저 B와 트러스트 관계인 서버 A를 공격
- 서비스 거부 공격(DoS: Denial of Service) 등으로 공격
- 출발 IP 주소를 IPA로 변조한 메시지를 서버 B로 보냄
- 서버 B는 출발 IP가 IPA인 공격자의 메시지를 인증 절차 없이 허용함

IP 스푸핑
- IP 스푸핑의 방지 방법
- IP 주소 기반의 트러스트 관계를 맺지 않음
- 서버 클러스터링(Clustering)이 꼭 필요한 경우 : 트러스트 관계에 있는 서버들의 보안 수준 강화
- 정기적인 보안 업데이트 & 보안 취약점 분석 & 모니터링
- 패킷 필터링(Packet Filtering)
- 게이트웨이 밖에서 시도되는 IP 스푸핑 공격에 대한 방지 수단
- 게이트웨이 : 외부에서 내부 네트워크로 전달되는 메시지가 거쳐 가는 중간 관문
- 외부에서 내부로 전달되는 메시지 중에서 출발 IP가 내부 IP로 설정된 메시지를 필터링 (차단)

웹 성능 프로그램
- IP 스푸핑의 합법적인 사용: 웹 성능 테스트 프로그램
- 웹 사이트 성능 테스트 프로그램
- 내부적으로 IP 변조 기능 사용
- 대량의 가상 사용자를 생성하여 마치 이들이 실제 사용자인 것처럼 시뮬레이션
- 가상 사용자별로 서로 다른 IP 주소를 할당
- 동시에 여러 사용자가 웹 사이트를 정상적으로 이용하는 것을 확인
- 예) HP LoadRunner, Apache JMeter 등


ICMP
- ICMP(The Internet Control Message Protocol)
- 네트워크 상에 현재 오류가 없는지 진단하거나 제어하는 목적으로 사용되는 프로토콜
- IP 프로토콜의 약점 보완 목적으로 사용
- ICMP의 사용 목적 1: 네트워크 진단
- 네트워크 연결 여부 확인: ping 또는 traceroute
- 네트워크가 끊어져 있다면 응답을 받을 수 없고, 이것을 통해 네트워크 연결이 정상인지 판단

ICMP
- ICMP의 사용 목적 2: 네트워크 흐름 통제
- 게이트웨이가 2개인 네트워크 환경에서 게이트웨이의 IP 메시지 재전송
- 게이트웨이 1이 default gateway 역할을 할 경우, A가 C로 메시지 전송할 경우 게이트웨이 1로 전송
- IP를 확인하고 내부망에 해당되면, 게이트웨이2로 재전송
- ICMP는 네트워크 흐름 통제를 위해 다음부터 게이트웨이 2로 보내라는 의미로 ICMP 리다이렉트 메시지 보냄
- 그 밖에 부하조절의 목적으로 활용
- 특정 게이트웨이로 트래픽이 몰릴 경우, ICMP 리다이렉트 메시지를 이용해 다른 여러 게이트웨이로 분산 가능


ICMP 스푸핑
-
Step-1: ICMP 리다이렉트 보내기 재전송
- 공격자가 게이트웨이인 것처럼 속여 A가
메시지 전송하도록 함

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

-
Step-3: 스니핑 성공을 위해 기존 게이트웨이로 재전송
- 아무 일도 없는 것처럼 하기 위해 공격자는 원래 게이트웨이를 통해 메시지를 전송

- 주의할 점
- ICMP는 3계층 공격이므로 스위치 외부 뿐만 아니라 게이트웨이 바깥에서도 공격 가능
- 최근의 게이트웨이는 ICMP 스푸핑을 막기 위해 방화벽 등을 이용해 ICMP 차단!
DNS
- DNS(Domain Name Service, 도메인 네임 서비스)
- 접속하려는 URL 주소 이름으로 IP 주소를 구하는 서비스

DNS 스푸핑
- DNS 스푸핑의 개념
- 공격 대상에게 전달되는 IP 주소를 변조하거나, DNS 서버에 변조된 IP 주소가 저장되게 하여 공격
대상이 의도하지 않은 주소로 접속하게 하는 공격 방법
- 가짜 은행 사이트의 예

DNS 스푸핑
- DNS 스푸핑
- 일반 사용자가 자신이 공격을 당했는지를 판단하기 쉽지 않음
- ‘보안 관련 인증 절차’라는 가짜 메시지 내용을 통해 사용자의 PC에 악성코드 설치 유도
→ 향후 2차, 3차의 추가적인 보안 사고 발생 가능

DNS 스푸핑

- Step-2: 변조된 DNS 응답의 선택
- UDP 방식으로 DNS 응답이 전달되기 때문에 DNS 응답 중에서 먼저 도착한 메시지만 선택되고, 이후에 도착한 메시지는 무시
- 공격자가 DNS 서버보다 공격 대상자에 좀 더 가까운 곳(같은 스위치에 연결)에 있음
→ 공격자의 DNS 응답이 먼저 도착해서 공격자가 보낸 변조된 IP 주소를 선택하게 됨
DNS 스푸핑
- DNS 서버의 IP 주소 변조
- DNS 서버의 동작 방식: 순환 질의(Recursive Query) 방식
- 구해진 IP 주소는 DNS 서버에 캐시(Cache)로 저장

DNS 스푸핑
- DNS 캐시 포이즈닝 - DNS 서버의 IP 주소 변조

DNS 스푸핑
- 랜덤 ID 생성 기반의 DNS 캐시 포이즈닝
- Step-1: 대규모 DNS 질의를 보냄
- DNS 서버는 공인 네임 서버의 DNS 응답이 자신이 보낸 요청에 대한 응답인지 확인하기 위해 ID 생성
- 스니핑 혹은 스푸핑 등으로 ID를 알아내야 함 → 하지 만 쉬운 방법으로 랜덤 ID 생성해 여러 번 시도

DNS 스푸핑

- 여러 개의 서로 다른 ID 값을 랜덤(Random)하게 생성하여, DNS 응답을 동시에 보냄→ DNS 서버와 공인 네임 서버가 공유하는 ID 값을 우연히 알아 맞춤
- 일단 ID 값이 같다면 공격자가 보낸 DNS 응답이 공인 네임 서버에서 보내는 DNS 응답 대신에 선택됨
- 대부분 공격자가 공인 네임 서버보다 DNS 서버에 가까워, 먼저 도착함
DNS 스푸핑
- DNS 캐시 포이즈닝 - DNS 서버의 IP 주소 변조
- 생일 공격(Birthday Attack) 기법
- 생일 역설(Birthday Paradox) : 한 반에 동시에 23명의 사람이 모여 있을 때 그 중에 생일이 같은 사람이 있을 확률이 50% 이상. 우리가 예상하는 확률보다 실제 확률이 뜻밖에 높다
- DNS 질의에서 사용되는 ID는 크기 : 2바이트(16비트)
- 모두 65,536개의 값을 가질 수 있음 : 0 ~ 65,535
- 만약, 임의로 728이란 값을 선택하면, 약 750번의 랜덤 값을 생성시키면 728이라는 같은 값을 얻을 수 있음
- 공격자가 랜덤하게 750개 이상의 DNS 응답 ID를 생성 → 그 중 1개는 성공


DNS 스푸핑
- DNS 캐시 포이즈닝 공격의 대비책
- DNS 서버의 소프트웨어(예를 들어 bind)의 최신 버전으로 업데이트
- BIND(Berkeley Internet Name Domain) : DNS를 를 운용하기 위한 데몬 프로그램
- 외부에서 요청되는 DNS 질의에 대해서는 DNS 서버가 순환 질의를 하지 않도록 설정
- DNSSEC(Domain Name System Security Extensions) 사용
서비스 거부 공격
- 서비스 거부 (DoS: Denial Of Service) 공격
- 서비스가 정상적으로 제공되지 못하도록 방해하는 공격
- 도스 공격 or 디오에스 공격
- 공격의 목적 : 가용성(Availability)을 떨어트리는 것
- 대규모의 가짜 요청을 만들어서 공격 대상자의 시스템에 과부하를 일으켜 정상적인 서비스 불능 상태 만듦
- 스니핑 & 스푸핑은 원래의 정보를 변조하려는 목적이나 서비스 거부 공격은 공격 대상자를 망가뜨림(파급효과 큼)
- 분산 서비스 거부(DDoS: Distributed Denial Of Service) 공격
- 공격자가 여러 곳에서 동시에 서비스 거부 공격을 하는 방법
- 악성코드 등을 이용해 좀비 PC 만들어 활용

서비스 거부 공격

- 서비스 거부 공격은 명백한 범법 행위
- 왜 서비스 거부 공격을 할까?
- 공격자가 자신의 능력을 자랑하기 위해서
- 경쟁사의 서비스를 방해하기 위해서 : 반사 이익이 목적
- 서비스 중단을 빌미로 서비스 제공자를 협박하여 돈을 갈취
서비스 거부 공격
- TCP SYN 플러딩
- SYN 패킷을 대량으로 보내어 웹 서버의 네트워크 대역폭을 낭비해서 일반 사용자들이 아예 웹 서버로 접속을 못 하게 만드는 공격 방법
- SYN 패킷을 넘치게 하는 공격, 신 플러딩(SYN Flooding)이라고도 함
- TCP의 3-웨이 핸드셰이킹(3-way Handshaking)의 특징을 악용하는 방법
- 처음의 두 단계가 이루어진 다음에 송신자가 세 번째 단계인 ACK 패킷을 보내지 않음
→ 수신자는 송신자가 ACK 패킷을 보낼 때까지 계속 기다림
- 운영체제에서 설정된 최대 시간까지 기다리는데 보통 10초에서 1분 정도

서비스 거부 공격
- TCP SYN 플러딩(예시)
- 최대 1,000명의 사용자에게 서비스할 수 있는 웹 서버로 공격자가 1,000개 혹은 그 이상의 SYN
패킷을 동시에 전송
- 대기 큐에서 지워지는 속도보다 채워지는 속도가 더 빠르도록 만듦

서비스 거부 공격
- TCP SYN 플러딩 대응 방안
- 대기 큐의 크기 증가( 서버의 가용성 증가) : 자원 증가의 한계 있음
- 최대 접속 대기 시간 감소 : ACK 패킷이 2초 내에 오지 않을 때에 강제 접속 종료
- 보안 솔루션 적용 : 침입 방지 시스템(IPS: Intrusion Prevention Systems) 등
서비스 거부 공격
- ICMP 플러딩 : 스머프 공격
- 대량의 ICMP echo 응답을 만들어 공격
- 브로드캐스팅 방식으로 동작하는 ICMP 프로토콜의 특성을 악용
- ICMP echo의 출발 IP 변조
- 스머프(Smurf) 공격이라고도 부름
- 서비스 거부 공격의 수단으로 사용되는 단말 : 에이전트(Agent), 슬레이브(Slave), 봇 (Bot), 좀비(Zombie)

서비스 거부 공격

서비스 거부 공격
- ICMP 플러딩: 스머프 공격
- Step-2: 에이전트에 의한 공격 실행
- 변조된 ICMP echo 요청을 받은 에이전트들이 동시에 ICMP echo 응답을 공격 대상자에게 보냄

서비스 거부 공격
- 분산 서비스 거부 공격의 구조
- 4가지 구성요소 : 공격자, 공격 대상자, 에이전트, 마스터
- 에이전트 : 공격 대상자에게 실제 공격을 하는 주체 (슬레이브, 봇, 좀비)
- 마스터 : 중간 증폭기 역할 (전달 공격자로부터 공격 명령을 받아 에이전트로 전달

서비스 거부 공격

서비스 거부 공격
- IP 플러딩
- 서비스 거부 공격을 하기 위해 공격자가 IP 관련 내용을 변조하는 공격 방식
- 랜드(LAND) 공격 : 출발지 IP 주소를 변조하는 공격
- 티어드랍(Teardrop) 공격 : IP 패킷의 순서를 변조하는 공격
서비스 거부 공격 - IP 플러딩
- 랜드(LAND: Local Area Network Denial) 공격
- 1997년 처음 발견, 패킷을 보낼 때 출발지 IP 주소와 도착지 IP주소를 같게 하여 보냄
→ 내보낸 메시지가 다시 자기 자신으로 돌아와서 무한 루프(Infinite Loop)에 빠짐
- 대처 방안
- 윈도우 서버 2003, 윈도우 XP SP2 이후 버전의 운영체제는 패치가 적용되어 있음
- 방화벽 및 기타 네트워크 보안 솔루션 : 출발지와 도착지 IP가 같은 경우에 대한 예외처리 제공

서비스 거부 공격 - IP 플러딩
- 티어드랍(Teardrop)
- IP 패킷(IP Fragments)의 헤더를 서로 중첩되도록 조작해서, IP 패킷을 재조합 과정에서 오류를
발생시키도록 하는 공격
- 네트워크 연결이 끊어지거나 혹은 블루 스크린(Blue screen) 등의 시스템 자체가 중단되기도 함
- 정상적인 IP 패킷 vs. 비정상적인 IP 패킷

- 대처 방안
- 윈도우 XP 이상의 운영체제에서는 이러한 티어드랍 공격에 대한 패치가 포함
- 시퀀스 번호에 오류가 있는 IP 패킷은 무시
서비스 거부 공격 - HTTP GET 플러딩
- HTTP GET 플러딩
- 특정 웹페이지를 동시에 여러 에이전트가 요청하여 웹 서버가 이를 감당하지 못하게 만들어 서비스
거부를 일으키는 공격 방법
- 특정 서버를 대상으로 하여 특정 서버가 제공하는 서비스만을 중단
- 대처가 어려움 : 정상적인 HTTP 요청 → 단순히 요청 자체를 거부해서는 안 됨

- 대응 방안 : 임계치 기반의 방어 기법
- 특정 IP에서 임계치 값을 넘어서 대량의 HTTP GET 요청이 지속
→ 해당 IP에서 전달되는 HTTP GET 요청 무시
서비스 거부 공격 - HTTP GET 플러딩
- HTTP GET 플러딩(변종 공격)
- HTTP CC 공격과 동적 HTTP 요청 공격

서비스 거부 공격 - HTTP GET 플러딩
- HTTP CC 공격
- 더 많은 부하를 발생시키기 위해 (HTTP 1.1 표준에 정의된) HTTP 헤더의 CC(Cache-Control) 옵션 값 사용
- 웹 서버에서 캐시(Cache) 기능을 사용하지 않게 만듦
→ 캐시를 사용하지 않아 항상 새로운 응답 메시지를 만들어야 하므로 웹 서비스 부하 증가

- 방어 방법 : 임계치 기반의 방어 기법
- 같은 IP에서 보낸 대량의 HTTP GET 요청을 무시
서비스 거부 공격 - HTTP GET 플러딩
- HTTP GET 플러딩
- 동적 HTTP 요청 공격
- 요청되는 웹 페이지 주소가 동적으로 바뀌는 공격
- 매번 요청되는 웹 페이지의 URL 주소가 변경 → DDoS 공격인지 판단이 어려움
- 예) view.jsp?id=101, 102, 103, ...
- 특정 게시판의 글 내용을 요청하는 경우 뒤의 글 번호 ID 값이 변경
- 웹 페이지 주소를 기반으로 임계치를 적용하는 것이 어려움
- 단, 출발지 IP 주소는 동일
- 출발지 IP 주소 기반의 임계치 기반의 차단 정책
- 특정 IP가 짧은 시간 내에 많은 요청을 할 경우 이를 차단