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