본문 바로가기

보안/LINUX

arp apoofing, DNS Cache Poisoning 공격 및 대처

Arp spoofing은 근거리 통신망 하에 주소 결정 프로토콜 메시지를 이용하여 상대방의 데이터 패킷을 중간에 가로채는 중간자 공격 기법이다. 이 공격은 데이터 링크 상의 프로토콜인ARP 프로토콜인 ARP 프로토콜을 이용하기 때문에 근거리 상의 통신에서만 사용할 수 있는 공격이다. 희생자에게 잘못된 MAC주소가 담긴 ARP REPLY를 보내 희생자의 ARP 캐시를 조작하여 희생자로부터 정보를 빼내는 해킹기법으로 ARP REPLY 패킷으로 받은 MAC주소가 진짜인지 아닌지 검증하는 인증시스템이 없다는 취약점을 이용한 공격이다.

출처 : https://security-nanglam.tistory.com/191

실습을 위해 칼리 리눅스(1.0.0.1), W2008(1.0.0.2), W7(1.0.0.3)을 준비하였다.

칼리리눅스를 통해서 서버(w2008)와 클라이언트(w7)arp값을 임의로 바꾸는 공격을 하여서 통신이 안되게 해보겠다.

Ettercap을 이용하여서 공격하겠다. 그래서 칼리 리눅스에서 Ettercap –G를 실행!

 

Setting에 오류가 있어서 저 디렉토리를 0으로 세팅해주겠다.

다시 Ettercap –G를 실행한다. Sniff에서 unified sniffing을 클릭한다.

 

네트워크 인터페이스 이더넷0 선택!

먼저 같은 대역의 host들을 scan하겠다.

Host list에 들어가 list들을 확인하면 w7 w2008ip가 보인다.

W7target2으로 w2008target1로 지정하겠다.

타겟을 지정한 후 arp값을 오염시킬 것이므로 arp poisoning 선택!

Sniff remote connections를 꼭 체크해야 한다.

View- connection에서 확인해 보면 w7w2008사이에 상태가 open된 것을 확인!

원래 기존에는 클라이언트(W7)에서 칼리와 서버(w2008)의 맥 주소는 달랐다.

공격 후에는 서버의 맥 주소가 칼리의 맥 주소와 같아진다.

그렇기 떄문에 클라이언트 입장에서 서버의 맥 주소로 데이터 전송 시 칼리가 데이터를 가로채서 보안에 좋지 않고 arp값이 오염되었음을 확인할 수 있다.

클라이언트입장에서 이 공격을 방어할 수 있는 방법이 뭐가 있을까? 첫번째로 arp가 동적으로 설정되어있기 떄문에 공격이 가능해지는데 arp를 정적으로 스스로 설정하게 되면 공격에서 방어가 가능해진다. Arp –s(static) 명령어를 사용한다.

하지만 회사나 단체 같은 경우 컴퓨터가 많아지면 일일이 맥주소를 정적으로 설정하는 것은 무리이다. 그렇기 때문에 nac(ip주소와 맥주소를 대칭해서 가지고 있는 파일)이 존재한다.

 

DNS Cache Poisoning

실제 DNS 서버를 해킹해서 Public record내용을 변경하는 것이 아니라 DNS 메모리에 저장된 쿼리 정보를 위/변조하는 방법을 말한다. 팀원과 실습을 했다. 나는 팀원의 DNS를 오염시켜서 특정도메인에 대하여 원래의 페이지가 아닌 임의의 웹 페이지로 이동하게 할 것이다.

출처 : https://zrungee.tistory.com/310

팀원과 나는 같은 192.168.2.X 대역에 있고, 브릿지카드를 사용하였다. 팀원의 DNS를 공격하기 위해 kali를 한대 만들고 ip192.168.2.101설정하였다.

그 전에 dns설정을 임의로 만들어야 한다.

칼리에서 vi /etc/Ettercap/etter.dns

모든 DNS값들을 주석 처리한 후 DNS 값을 설정해준다.

Kgitbank.com의 도메인으로 접속하면 192.168.2.101의 웹 페이지가 나타나게 했다.

192.168.2.101은 칼리의 ip로서 kgitbank로가면 칼리의 웹 페이지가 나온다.

dns설정은 완료되고 ettercap –G을 실행!

Sniff -> Unified sniffing 클릭한다.

네트워크 인터페이스는 이더넷이므로 eth0 선택한다.

연결된 대상 호스트 스캔을 한 후 호스트 리스트를 확인한다.

팀원의 pc와 게이트 사이를 침범할 것이므로 팀원의 ip 192.168.2.6 게이트웨이 192.168.2.1을 각각 타겟으로 정해준다.

먼저 정보를 훔치기 위해 arppoisoning 한다.

Remote connections 꼭 체크!

DNS공격을 추가해주기 위해 Manage the plugins 선택한다.

Dns-spoof 작동시키게 되면 공격은 끝이 난다.

팀원의 pc에서 아까 도메인에 임의로 등록했던 kgitbank.com을 들어가보았다.

Kgitbank의 사이트가 아닌 칼리의 웹페이지가 작동함을 확인할 수 있다. (dns 오염)

이러한 DNS 공격의 대처하는 방법은 뭐가 있을까? DNSSEC이다. DNSSEC DNS Security Extensions의 약자로서 DNS 보안 취약점을 해결하기 위해 등장했다. DNS Cache Poisoning을 해결하는 방법은 DNSSEC 구현 외에는 다른 대안이 없다고 한다. DNSSEC이란 DNS 서버로 하여금 도메인 서버로부터 받은 Data를 확인 하도록 하는 것이다. 확인할 때 PKI 암호 기술을 사용하여 데이터 위조 및 변조를 발견해 낸다. DNSSECDNS를 대체하는 것이 아니라. 기존의 DNS에 공개키 암호화 방식의 보안기능을 추가 부여하여 DNS의 보안성을 대폭 강화는 역할을 한다고 한다.

'보안 > LINUX' 카테고리의 다른 글

metaspolitable2취약점을 이용한 공격  (0) 2019.08.06
http, telnet 통신 정보 가로채기  (0) 2019.08.06
Linux SSL 인증서 설정(WEB, FTP, MAIL)  (0) 2019.07.19
kali DHCP 공격! (Window , Linux)  (0) 2019.07.19
kali vmware tool 설치  (0) 2019.07.12