DNS Spoofing을 실습해보고 분석해보자.
1) Foot Printing : 공격을 시도할 지역에 관한 정보를 수집하는 작업
EX) Domain Name, IP, 사용자 목록
=> Whois로 확인, nslookup, 사회공학적
2) Scanning : 공격을 시도할 표적들에 대한 진행 중인 서비스 점검
EX) 어떤 Port가 열려 있는지 확인 => 어떤 서비스가 진행 중인지 알 수 있다.
=> Nmap, Winscan, Superscan 등을 이용
3) Enumeration : Scanning을 통해서 수집된 정보를 바탕으로 사용자 계정 수집 및 취약한 시스템의 자원 공유를 정리 수집 단계
EX) User, Group 이름, OS, RoutingTable, SNMP 정보 수집
=> Telnet으로 접속해서 커널 정보를 볼 수 있다.
=> Solarwinds : SNMP 목록화
4) Gainning Access : 수집된 데이터를 통해 공격 목표에 접근을 시도하여 접근권한 취득
EX) 패스워드 도청, 패스워드 파일 취득
=> Tcpdump, wireshark, NetBIOS, pwdump2
5) Escalating Privilege : 시스템 권한 상향 조정
EX) admin에 대한 정보 수집 및 탈취
=> 패스워드 크랙, Lophtcrack, John the Ripper
6) Pilfering : 서버의 접근 확보 후 신뢰된 시스템들에 대한 접근 확보를 위해, 필요한 정보 재 수집 과정
EX) 구성원들에 대한 정보 재 수집
=> Cain & Abel
7) Covering Track : 공격 대상에 대한 제어 권한을 취득한 후 자취 삭제
EX) 로그 삭제, Tool 감추기
=> Event Log 삭제, Elzap
8) Creating Back Door : 공격 대상에 대해서 재 침입이 용이하도록, Backdoor를 설치
=> at, nc(Netcat)
Spoofing이란 사전적 의미로 ‘도용하다, 패러디하다’ 뜻으로 IP 주소, 호스트 이름, MAC 주소를 속이는 공격을 말한다. 네트워크로 연결되어 있으면 Spoofing이 가능하다.
자신의 IP와 MAC 주소를 속이는 IP Spoofing, MAC Spoofing, DNS를 속이는 DNS Spoofing이 있다. Spoofing은 그냥 사용하는 것보다는 Sniffing을 사용하기 위한 준비 단계로 많이 사용된다.
Sniffing이란 사전적 의미로 ‘코를 훌쩍이는; 킁킁거리며 냄새를 맡는.’라는 의미로 스니퍼를 이용하여 네트워크 상의 데이터를 도청하는 행위를 말한다. 네트워크 주변을 지나다니는 패킷을 엿보면서 정보를 가로채는 행위를 말한다.
Hub를 사용하는 곳에서는 패킷을 broadcast로 보내기 때문에 모든 PC에서 패킷을 볼 수 있다. 그러나 패킷의 목적지 IP가 자신의 IP가 아니면 버리게 되는데 이때 Promiscuous 모드를 이용하면 그 패킷을 버리지 않는다.
사용하는 Tool로는 Wireshark를 통해서 패킷을 획득할 수 있다.
LAN Card 또는 NIC(Network Interface Card)를 구분하는 유일한 주소인 MAC 주소를 Spoofing 하여 악의적인 목적으로 위조하는 기법이다. 가장 대표적인 것은 ARP Spoofing으로 OSI 7 계층 중 Layer 2에서 가능하다.
MAC Address Changer를 이용하면 가능하다.
ARP Spoofing이란 공격자가 공격 대상의 ARP Cache를 조작하고 유지하기 위해서 ARP 응답 패킷을 계속해서 보내는 공격을 말한다.
※ ARP(Address ResolutionProtocol)은 네트워크 상에서 IP주소를 물리적 네트워크 주소로 대응시키기 위해서 사용되는 프로토콜이다. IP주소를 MAC 주소로 변환하는 것으로 네트워크 통신에서 제일 처음 이뤄진다. ARP Request와 ARP Request를 통해서 IP주소를 MAC 주소로 변환한다.
※ ARP Request : MAC 주소를 알기 위해서 Boradcast(IP .255, MAC은 FF:FF:FF:FF:FF:FF)로보낸다
※ ARP Apply : 해당하는 IP가 자신의 MAC 주소를 Unicast로 보낸다.
윈도우에서는 Winarp를 사용해서 ARP Spoofing을 할 수 있다.
DNS Spoofing이란 말 그대로 사용자와 DNS 서버 간의 통신을 개입해서 공격자가 DNS인 것처럼 Spoofing 하는 것을 말한다. DNS Spoofing을 하면 비정상적인 DNS 응답을 통해서 fishing이 가능해진다.
실습 환경은 다음 표와 같다.
이번 실습은 DNS Spoofing을 이용한 피싱 사이트 구축이다. DNS Spoofing으로 Naver를 공격자가 만들어 놓은 피싱사이트로 접속하게 하는 것이 이번 실습의 목표이다.
1) 먼저 피싱 사이트를 구축해 놓는다.
2) 그리고 피싱 사이트를 구동한다.
3) ARP Spoofing을 해서 우회시킨다.
4) DNS Table을 만든다.
5) DNS Spoofing을 한다.
6) 희생자가 인터넷 접속을 한다.
이번 실습을 하기 위해서는 먼저 피싱 사이트를 구축해야 한다. 피싱사이트 구축 방법은 위험하므로 이미지로 대체한다. 피싱사이트를 만들어 놓았으면 이제 그 피싱사이트를 서비스하기 위해서 서비스를 실행시킨다.
이번 실습에서는 공격자(Kail Linux)의 서버를 서비스하기 때문에 service apache2 start/restart를 이용해서 웹 서비스를 시작/재시작시켜준다.
다음으로 희생자 PC를 우회시키기 위해서 ARP Spoofing을 해야 한다. ARP Spoofing은 Kail Linux에서 제공하는 arpspoof 서비스를 이용해서 ARP Spoofing을 해준다.
여기서 인터페이스는 Kail Linux에서 ifconfig를 입력하면 나오는 eth[x]를 입력하면 된다. 희생자 IP는 192.168.108.130이고 게이트웨이는 192.168.108.2인 것을 이용해서 ARP Spoofing을 하면 다음 그림과 같다.
밑에서 더 자세히 얘기할 것이지만 ARP Spoofing을 보면 MAC 주소 끝이 75인 공격자의 MAC 주소와 끝이 42인 희생자의 MAC주가 나오고 ARP Reply를 보내는 것을 알 수가 있다. 이것은 계속 ARP Reply를 통해서 ARP Spoofing을 하는 것을 알 수 있다. ARP Spoofing을 하는 명령 창은 끄지 않아야 한다.
ARP Spoofing 이 완료되면 DNS Table을 만들어야 하는데 DNS Table은 vi 에디터를 아래와 같이 만들어 줘야 한다.
이번 실습과 같은 경우에는 URL을 바꿔줄 IP는 웹 서비스를 해주는 IP인 공격자의 IP 192.168.108.128로 해주고, URL은 네이버를 피싱하기 때문에 www.naver.com를 적어주면 된다.
이제 DNS Spoofing 할 준비를 다 했기 때문에 DNS Spoofing을 하면 된다. DNS Spoofing은 Kail Linux에서 제공하는 dnsspoof를 이용할 것이고 옵션은 다음과 같다.
이번 실습에서 사용할 DNS Table이름은 dns이므로 DNS Table파일 이름은 현재 폴더의 dns파일이기 때문에./dns를 입력해주면 된다.
이렇게 DNS Spoofing까지 완료되었다. DNS Spoofing 명령 창이 아무런 변화가 없는 이유는 아직 희생자가 접속을 하지 않았기 때문이다. 조금 있다가 희생자 PC가 접속을 하면 반응이 있다.
이젠 희생자 PC를 이용해서 네이버에 접속해보겠다. 네이버에 접속하기 전에 희생자 PC에 기록되어 있는 DNS Table을 지워야 한다. DNS Table을 지우는 명령어는 ipconfig –flushdns 이다. DNS Table을 지우지 않으면 이 전에 접속한 기록에 의해서 피싱사이트로 접속을 하지 않는다.
DNS Table을 지우고 나서 웹 브라우저를 통해서 네이버에 접속하면 아래 그림과 같이 공격자가 만든 피싱사이트로 접속하게 되는 것을 볼 수 있다.
먼저 희생자 PC(Window XP)에 패킷을 분석해보면 MAC Address의 끝자리가 75인 공격자가 끝자리가 5A인 희생자 PC에게 게이트웨이(192.168.108.2)가 공격자라고 ARP reply 패킷을 보내고 있는 것을 알 수 있다. ARP Reply 패킷이 계속 보내지는 것을 보고 ARP Spoofing이라는 것을 알 수 있다.
그러고 나서 패킷을 확인하면 희생자가 www.naver.com에 대해서 IP를 알기 위해서 DNS에게 패킷을 보낸다. DNS에게 보내는 패킷을 보면 희생자의 IP 130에서 IP 2번으로 www.naver.com의 IP가 무엇인지 물어보고 DNS Spoofing에 DNS Table이 변조가 되어서 www.naver.com에 IP를 128로 알려준다.
그러고 나서 희생자는 DNS가 알려준IP로 접속하게 되고 TCP 연결을 하게 돼서 아래 그림과 같이 SYN, SYN/ACK, ACK와 같이 3-way-handshaking을 하게 된다. 3-way-handshaking가 완료되면 공격자가 만들어 놓은 피싱사이트로 접속하게 된다.
공격자의 패킷도 희생자의 패킷이랑 비슷하다. 아래의 그림은 공격자가 희생자에게 ARP Spoofing을 하는 패킷이다. 공격자는 희생자에게 게이트웨이가 자신이라고 ARP Reply 패킷을 계속 보내게 된다.
그러고 나서 DNS Spoofing에 의해서 정상 URL를 피싱사이트의 IP로 우회시키는 것을 아래의 그림으로 볼 수 있다.