Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
2/30
Contents
학습목표
스푸핑 공격을 이해한다.
ARP, IP, DNS 스푸핑 공격을 실행할 수 있다.
스푸핑 공격을 탐지할 수 있다.
스푸핑 공격에 대처하고 예방하는 방법을 알아본다.
내용
스푸핑 공격
ARP 스푸핑
IP 스푸핑
DNS 스푸핑
3/30
스푸핑(spoofing)은‘속이다’는 의미
인터넷이나 로컬에서 존재하는 모든 연결에 스푸핑 가능
정보를 얻어내는 것 외에 시스템을 마비시킬 수도 있음
스푸핑 공격
4/30
브로드캐스트 ping 보내기 fping -a -g 192.168.0.1/24
MAC 주소 확인 arp -a
1
실습 9-1 시스템의 IP와 MAC 주소 수집하기
• 공격자 시스템 : 리눅스 페도라 12
• 공격 대상 시스템 : 리눅스 페도라 12
• 필요 프로그램 : fping
실습환경
2
5/30
ARP(Address Resolution Protocol)와 RARP(Reverse ARP) ARP는 IP 주소 값으로MAC 주소 값을 알아내는 프로토콜
RARP는 MAC 주소값으로 IP 주소값을 알아내는 프로토콜
ARP 스푸핑은 2계층 MAC 주소를 공격자의 MAC 주소로 속이는 것
ARP 스푸핑 예제
ARP 스푸핑
① 명호는 철수에게 영희(IP 주소 10.0.0.3)의MAC 주소가 명호 자신의 MAC 주소인CC라고 알린다. 마찬가지로 영희에게도 철수(IP 주소 10.0.0.2)의MAC 주소가 CC라고 알린다.
② 명호는 철수와 영희로부터 패킷을 받는다. ③ 명호는 각자에게 받은 패킷을 읽은 후에 철수가 영희에게 보내려던 패킷을 영희에게 보내주고, 영희가
철수에게 보내려던 패킷을 철수에게 정상적으로 보내준다.
6/30
ARP 스푸핑 공격 개념도
ARP 스푸핑
7/30
실습 9-2 ARP 스푸핑을 이용해 스니핑하기
• 공격자 시스템 : 리눅스 페도라 12
• 공격 대상 시스템 : 윈도우 XP
• 필요 프로그램 : arpspoof, dnsspoof
실습환경
8/30
fake 설치와 사용법 확인 ➊ rpm -Uvh fake-1.1.2-1.i386.rpm ➋ send_arp
공격 전 시스템의 MAC 주소 테이블 확인 ➊ ping 192.168.0.100 ➋ arp -a
1
실습 9-2 ARP 스푸핑을 이용해 스니핑하기
2
[그림 9-8] ARP 스푸핑 공격 전 서버의 MAC 주소 테이블
[그림 9-9] ARP 스푸핑 공격 전 공격자의 MAC 주소 테이블
9/30
패킷 릴레이와 TCP Dump 수행
➊ ./fragrouter -B1
➋ 창을 하나 더 열어 tcpdump -xvX host 192.168.0.100send_arp 실행
ARP 스푸핑 공격 수행 send_arp 192.168.0.100 00:16:D3:CA:85:67 192.168.0.101 00:1E:68:ED:2A:39
3
실습 9-2 ARP 스푸핑을 이용해 스니핑하기
4
10/30
공격 후 각 시스템의 MAC 주소 테이블 확인 arp -a
텔넷 연결 telnet 192.168.0.100
53
실습 9-2 ARP 스푸핑을 이용해 스니핑하기
6
11/30
스니핑 : TCP Dump를 이용해 ARP 스푸핑 공격 시 캡처한 패킷
73
실습 9-2 ARP 스푸핑을 이용해 스니핑하기
12/30
Wireshark를 이용해 캡처한 ARP 스푸핑 패킷 분석
83
실습 9-2 ARP 스푸핑을 이용해 스니핑하기
13/30
Wireshark를 이용해 캡처한 ARP 스푸핑 패킷 분석
83
실습 9-2 ARP 스푸핑을 이용해 스니핑하기
14/30
MAC 테이블의 static 설정을 통해 막을 수 있음 ➊ arp -a 명령을 입력하고 [Enter] 키를 입력한다. 현재 MAC 주소 테이블을 볼 수 있
다.
➋ static으로 설정하고자 하는 IP 주소와 MAC 주소를 확인한 뒤 arp -s <IP 주소>
<MAC 주소> 형식으로 명령을 입력한다.
➌ 다시 arp -a 명령으로MAC 주소 테이블을 확인하면 뒷부분에 PERM(Permanent)
옵션 또는 static이 있다. 이렇게 설정된 IP 주소와MAC 주소 값은 ARP 스푸핑 공격
이 들어와도 값이 변하지 않는다.
모든 관리 시스템에 static 옵션을 지정할 수는 없음. 또한, 리부팅하면 static 옵션이 사라지므로 계속 사용하려면 배치 파일 형태로 만들어두고, 리부팅 시마다 자동으로 수행되도록 설정해야 함
ARP 스푸핑 보안 대책
15/30
한 시스템이 여러 시스템에 로그인하고자 할 경우 각 시스템마다 계정과 패스워드가 필요. 각 시스템마다 계정과 패스워드를 설정해야 하는데, 시스템이 많으면 관리자가 모두 외우기 힘듦. 보안상 아주 취약하지만 아직도 흔히 쓰이는 텔넷은 로그인 시 계정과 패스워드를 암호화하지 않은 평문으로 네트워크로 흘려본내 스니핑 공격자에게 좋은 먹이가 됨
이에 대한 한 가지 대책이 트러스트. 시스템에 접속할 때 자신의 IP 주소로 인증을 하고 로그인 없이 접속이 가능하게 만든 것
하지만 트러스트 설정은 스니핑은 막았으나 IP 스푸핑에 치명적인 약점을 드러냄
IP 스푸핑은 시스템 간의 트러스트(trust) 관계 이용 트러스트 관계가 맺어진 서버와 클라이언트를 확인한 후 클라이언트에 DoS 공격하여
연결 끊음
그러고 나서 공격자가 클라이언트의 IP 주소를 확보하여 서버에 실제 클라이언트처럼
패스워드 없이 접근
IP 스푸핑
16/30
유닉스와 리눅스 시스템에서는 트러스트 관계를 형성하기 위해 주로 다음 파일 사용 ./etc/hosts.equiv
.$HOME/.rhost
IP 스푸핑
17/30
IP 스푸핑 개념 예
IP 스푸핑
18/30
가장 좋은 대책은 트러스트를 사용하지 않는 것
부득이하게 트러스트를 사용할 경우에는 트러스트된 시스템의 MAC 주소를 static으로 지정 해커가 연결을 끊을 수는 있지만, 잘못된 IP 주소로 위장해 접근하더라도 MAC 주소까
지 같을 수는 없기 때문에 세션을 빼앗기지는 않음
IP 스푸핑 보안 대책
19/30
DNS(Domain Name System) 스푸핑은 웹 스푸핑과 비슷한 의미로 이해되기도 함 단순히 DNS 서버를 공격하여 해당 사이트에 접근하지 못하게 만들면 DoS 공격이 되
지만 조금 응용하면 웹 스푸핑
정상적인 DNS 서비스
DNS 스푸핑
➊ 클라이언트가 DNS 서버에 접속하고자 하는 IP 주소(www.wishfree.com 같
은 도메인 이름)를 물어본다. 이때 보내는 패킷은 DNS Query다.
➋ DNS 서버가 해당 도메인 이름에 대한 IP 주소를 클라이언트에 보내준다.
➌ 클라이언트는 DNS 서버에서 받은 IP 주소를 바탕으로 웹 서버를 찾아간다.
20/30
DNS 스푸핑 공격 ➊ 클라이언트가 DNS 서버로 DNS Query 패킷을 보내는 것을 확인한다. 스위칭 환경일
경우에는 클라이언트가 DNS Query 패킷을 보내면 이를 받아야 하므로 ARP 스푸핑
과 같은 선행 작업이 필요하다. 만약 허브를 쓰고 있다면 모든 패킷이 자신에게도 전달
되므로 자연스럽게 클라이언트가 DNS Query 패킷을 보낼 경우 이를 확인할 수 있다.
DNS 스푸핑
21/30
DNS 스푸핑 공격 ➋ ~ ➌ 공격자는 로컬에 존재하므로 DNS 서버보다 지리적으로 가깝다. 따라서 DNS 서
버가 올바른 DNS Response 패킷을 보내주기 전에 클라이언트에 위조된 DNS
Response 패킷을 보낼 수 있다.
DNS 스푸핑
22/30
DNS 스푸핑 공격 ➍ 클라이언트는 공격자가 보낸 DNS Response 패킷을 올바른 패킷으로 인식하고 웹에
접속한다. 지리적으로 멀리 떨어진DNS 서버가 보낸 DNS Response 패킷은 버린다.
DNS 스푸핑
23/30
웹 서버 구축 service httpd start
1
실습 9-3 DNS 스푸핑하기
• 공격자 시스템 : 리눅스 페도라 12
• 공격 대상 시스템 : 윈도우 XP
• 필요 프로그램 : arpspoof, dnsspoof
실습환경
24/30
웹 사이트 정상 접속 확인
DNS 스푸핑 파일 설정
➊ vi /etc/dsniff/dnsspoof.hosts
➋ 192.168.0.2 *.google.com
2
실습 9-3 DNS 스푸핑하기
3
25/30
ARP 스푸핑과 패킷 릴레이
➊ arpspoof -t 192.168.0.101 192.168.0.1
➋ ./fragrouter -B1
4
실습 9-3 DNS 스푸핑하기
26/30
DNS 스푸핑 공격 수행
5-1 DNS 스푸핑 툴 도움말 확인과 동작 수행
➊ dnsspoof –help ➋ dnsspoof -i eth0 -f /etc/dsniff/dnsspoof.hosts
5-2 DNS 스푸핑 툴 도움말 확인과 동작 수행공격 후 www.google.com 사이트에 접속
5
실습 9-3 DNS 스푸핑하기
27/30
5-3 공격 실패 시 클라이언트의 DNS 정보 삭제
ipconfig /flushdns
5-4 공격 후 클라이언트에서 www.google.com에 ping 보내기
ping www.google.com
실습 9-3 DNS 스푸핑하기
28/30
도메인 이름을 브라우저에 입력했을 때 무조건 DNS Query를 생성하는 것은 아님 사이트에 접속하면 MAC처럼 캐시에 도메인 이름에 대한 IP 주소가 저장되었다가 다시
접속했을 때 DNS Query를 보내지 않고 캐시에서 읽어 들임
그런 다음 hosts 파일을 통해 도메인 이름에 대한 IP 주소를 해석
hosts 파일에 중요 사이트의 IP 주소를 적어두면, 이 파일에 있는 사이트에 대해서는 DNS 스푸핑 공격을 당하지 않을 수 있음
DNS 스푸핑 보안 대책
29/30
DNS 서버에 대한 DNS 스푸핑 공격에 대한 보안 대책 BIND(Berkeley Internet Name Domain)를 최신 버전으로 바꿈
BIND 최신 버전은 PTR 레코드뿐만 아니라, PTR 레코드에 의한 A 레코드 정보까지
확인한 후 네임 서버의 데이터베이스 파일 변조 여부까지 판단
• PTR은 Reverse Zone(리버스 존)에서 가장 중요한 레코드로, IP 주소에 대한 도메인 이름 해석
• A 레코드는 Forward Zone에서 도메인 이름에 대한 IP 주소 해석
if (gethostbyname(gethostbyaddr(getpeername())) != getpeername())
{ /* DNS 스푸핑의 위험을 알리고 종료 */ }
PTR 레코드뿐만 아니라 A 레코드까지 스푸핑한 경우 현재는 DNS 스푸핑을 막을 방법
이 없고 DNS에만 의존하는 서비스를 외부에 지원하지 않는 것이 최선의 방책
DNS 스푸핑 보안 대책
영동대학교 스마트IT학부: 컴퓨터와 해킹