우선 dns를 victim 에 설정한다.
배포판 : CentOS 7
-- 조건 --
도메인명 포워드 존파일 IP주소
sbs.com sbs.com.zone 192.168.108.100
kbs.com kbs.com.zone 192.168.108.100
mbc.com mbc.com.zone 192.168.108.100
www.kbs.com kbs.com.zone 192.168.108.100
www.mbc.com mbc.com.zone 192.168.108.100
-- 조건 --
1. 네트워크 설정
Victim# nmtui
IPv4 설정 : <수동>
IP 주소 : 192.168.108.100/24
게이트웨이 : 192.168.108.2
DNS 서버 : 168.126.63.1
Victim# systemctl restart network
2. DNS 서버 설치
서버에 bind 패키지를 설치한다.
Victim# yum -y install bind*
/etc/named.conf 를 수정한다.
Victim# vi /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
3. 도메인 등록
도메인 설정 파일 : /etc/named.rfc1912.zones
/etc/named.rfc1912.zones 파일에 도메인을 등록한다.
등록하는 형식은 아래처럼 등록해야 한다.
zone "도메인명" IN {
type 네임서버종류;
file "포워드존파일";
allow-update { none; };
};
Victim# vi /etc/named.rfc1912.zones
:
:(생략)
zone "sbs.com" IN { type master; file "sbs.com.zone"; allow-update { none; }; };
zone "kbs.com" IN { type master; file "kbs.com.zone"; allow-update { none; }; };
zone "mbc.com" IN { type master; file "mbc.com.zone"; allow-update { none; }; };
4. 포워드 존파일 생성
/etc/named.rfc1912.zones 에 저장된 도메인에 해당하는 파일을 생성한다.
/etc/named.conf : directory "/var/named";
/etc/named.rfc1912.zones : file "kbs.com.zone"; , file "mbc.com.zone";
포워드 존파일 : 도메인을 요청했을 때 IP주소 정보를 저장하고 있는 파일
리버스 존파일 : IP주소 정보를 요청했을 때 도메인 정보를 저장하고 있는 파일
Victim# cd /var/named/
sbs.com 도메인의 포워드 존파일을 생성한다.
:set noai
:set paste
Victim# vi sbs.com.zone
$TTL 60
@ IN SOA ns root (
202108121; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
IN NS ns
IN A 192.168.108.100
ns IN A 192.168.108.100
www IN A 192.168.108.100
admin IN A 192.168.108.10
phone IN A 192.168.108.11
niapc IN A 192.168.108.12
netma IN A 192.168.108.13
navtest IN A 192.168.108.14
kbs.com 도메인의 포워드 존파일을 생성한다.
Victim# vi kbs.com.zone
$TTL 60
@ IN SOA ns root (
2021081201; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
IN NS ns
IN A 192.168.108.100
ns IN A 192.168.108.100
www IN A 192.168.108.100
mbc.com 도메인의 포워드 존파일을 생성한다.
Victim# vi mbc.com.zone
$TTL 60
@ IN SOA ns root (
2021062901; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
IN NS ns
IN A 192.168.108.100
ns IN A 192.168.108.100
www IN A 192.168.108.100
소유권과 허가권의 권한을 변경한다.
Victim# chgrp named *.zone
Victim# chmod o-r *.zone
5. 네임서버 시작
네임서버를 시작하기 전에 설정 파일들을 체크한다.
named-checkconf : /etc/named.rfc1912.zones 체크
named-checkzone : 포워드 존파일 체크
Victim# named-checkconf /etc/named.rfc1912.zones
Victim# named-checkconf /etc/named.conf
Victim# for i in sbs kbs mbc
do
named-checkzone $i.com $i.com.zone
done
zone sbs.com/IN: loaded serial 202108121
OK
zone kbs.com/IN: loaded serial 2021081201
OK
zone mbc.com/IN: loaded serial 2021081201
OK
Victim# systemctl restart named
6. 도메인 질의
/etc/resolv.conf 파일에 네임서버를 127.0.0.1로 수정한다.
nmtui에서 영구적으로 설정하거나 /etc/resolv.conf 파일을 임시적으로 변경한다.
Victim# vi /etc/resolv.conf
nameserver 127.0.0.1
Victim# for i in sbs kbs mbc
do
nslookup www.$i.com
nslookup $i.com
done
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.sbs.com
Address: 192.168.108.100
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: sbs.com
Address: 192.168.108.100
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.kbs.com
Address: 192.168.108.100
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: kbs.com
Address: 192.168.108.100
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.mbc.com
Address: 192.168.108.100
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: mbc.com
Address: 192.168.108.100
Victim# for i in sbs kbs mbc
do
echo ">>> $i.com <<<"
dig $i.com +short
dig www.$i.com +short
echo
done
>>> sbs.com <<<
192.168.108.100
192.168.108.100
>>> kbs.com <<<
192.168.108.100
192.168.108.100
>>> mbc.com <<<
192.168.108.100
192.168.108.100
7. 네임서버 변경
Attacker가 Victim의 네임서버로 설정해야 한다.
Attacker ~# vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.108.100
Attacker ~# for i in sbs kbs mbc
do
echo ">>> $i.com <<<"
dig $i.com +short
dig www.$i.com +short
echo
done
>>> sbs.com <<<
192.168.108.100
192.168.108.100
>>> kbs.com <<<
192.168.108.100
192.168.108.100
>>> mbc.com <<<
192.168.108.100
192.168.108.100
axfr (영역 전송)
윈도우 cmd에서 nslookup을 이용하는 방법
nslookup
sbs.com
set type=any
ls -d sbs.com
리눅스에서 dig을 이용하는 방법
Attacker ~# dig sbs.com axfr
; <<>> DiG 9.17.19-3-Debian <<>> sbs.com axfr
;; global options: +cmd
sbs.com. 60 IN SOA ns.sbs.com. root.sbs.com. 202108121 86400 3600 604800 10800
sbs.com. 60 IN NS ns.sbs.com.
sbs.com. 60 IN A 192.168.108.100
admin.sbs.com. 60 IN A 192.168.108.10
navtest.sbs.com. 60 IN A 192.168.108.14
netma.sbs.com. 60 IN A 192.168.108.13
niapc.sbs.com. 60 IN A 192.168.108.12
ns.sbs.com. 60 IN A 192.168.108.100
phone.sbs.com. 60 IN A 192.168.108.11
www.sbs.com. 60 IN A 192.168.108.100
sbs.com. 60 IN SOA ns.sbs.com. root.sbs.com. 202108121 86400 3600 604800 10800
;; Query time: 0 msec
;; SERVER: 192.168.108.100#53(192.168.108.100) (TCP)
;; WHEN: Wed Dec 29 05:19:34 EST 2021
;; XFR size: 11 records (messages 1, bytes 322)
Attacker ~# dig @192.168.108.100 sbs.com axfr
; <<>> DiG 9.17.19-3-Debian <<>> @192.168.108.100 sbs.com axfr
; (1 server found)
;; global options: +cmd
sbs.com. 60 IN SOA ns.sbs.com. root.sbs.com. 202108121 86400 3600 604800 10800
sbs.com. 60 IN NS ns.sbs.com.
sbs.com. 60 IN A 192.168.108.100
admin.sbs.com. 60 IN A 192.168.108.10
navtest.sbs.com. 60 IN A 192.168.108.14
netma.sbs.com. 60 IN A 192.168.108.13
niapc.sbs.com. 60 IN A 192.168.108.12
ns.sbs.com. 60 IN A 192.168.108.100
phone.sbs.com. 60 IN A 192.168.108.11
www.sbs.com. 60 IN A 192.168.108.100
sbs.com. 60 IN SOA ns.sbs.com. root.sbs.com. 202108121 86400 3600 604800 10800
;; Query time: 0 msec
;; SERVER: 192.168.108.100#53(192.168.108.100) (TCP)
;; WHEN: Wed Dec 29 05:23:44 EST 2021
;; XFR size: 11 records (messages 1, bytes 322)
실습> axfr 로그 확인하기
===========================
Victim ~# tail -f /var/log/messages
Attacker ~# dig sbs.com axfr
===========================
AXFR 로그를 확인하기 위해서 /var/log/messages를 모니터링 한다.
Victim ~# tail -f /var/log/messages
:
:(생략)
Attacker ~# dig sbs.com axfr
; <<>> DiG 9.17.19-3-Debian <<>> sbs.com axfr
;; global options: +cmd
sbs.com. 60 IN SOA ns.sbs.com. root.sbs.com. 202108121 86400 3600 604800 10800
sbs.com. 60 IN NS ns.sbs.com.
sbs.com. 60 IN A 192.168.108.100
admin.sbs.com. 60 IN A 192.168.108.10
navtest.sbs.com. 60 IN A 192.168.108.14
netma.sbs.com. 60 IN A 192.168.108.13
niapc.sbs.com. 60 IN A 192.168.108.12
ns.sbs.com. 60 IN A 192.168.108.100
phone.sbs.com. 60 IN A 192.168.108.11
www.sbs.com. 60 IN A 192.168.108.100
sbs.com. 60 IN SOA ns.sbs.com. root.sbs.com. 202108121 86400 3600 604800 10800
;; Query time: 0 msec
;; SERVER: 192.168.108.100#53(192.168.108.100) (TCP)
;; WHEN: Wed Dec 29 05:26:20 EST 2021
;; XFR size: 11 records (messages 1, bytes 322)
/var/log/messages에 남겨진 AXFR 로그
Victim ~# tail -f /var/log/messages
:
:(생략)
Dec 29 19:26:20 web1 named[3996]: client @0x7f7b8012cb70 192.168.108.102#42833 (sbs.com): transfer of 'sbs.com/IN': AXFR started (serial 202108121)
Dec 29 19:26:20 web1 named[3996]: client @0x7f7b8012cb70 192.168.108.102#42833 (sbs.com): transfer of 'sbs.com/IN': AXFR ended
sbs.com 에 대한 AXFR 을 허용하지 않도록 설정한다.
| zone "sbs.com" IN { type master; file "sbs.com.zone"; allow-update { none; }; allow-transfer { none; }; // AXFR 허용안함 }; |
Victim ~# systemctl reload named
AXFR이 금지 되었기 때문에 아무것도 나오지 않는다.
Attacker ~# dig sbs.com axfr
; <<>> DiG 9.17.19-3-Debian <<>> sbs.com axfr
;; global options: +cmd
; Transfer failed.
/var/log/messages 에 남겨진 AXFR 로그
Victim ~# tail -f /var/log/messages
:
:(생략)
Dec 29 19:35:42 web1 named[3996]: client @0x7f7b8011e3d0 192.168.108.102#34925 (sbs.com): zone transfer 'sbs.com/AXFR/IN' denied
sbs.com 만 적용이 되었기 때문에 kbs.com/mbc.com 에 대해서는 적용받지 않게 된다.
그러므로 이를 해결하기 위해서는 전체 설정으로 변경해야 한다.
Victim ~# vi /etc/named.conf
options {
allow-transfer { none; };
};
Victim ~# tail -f /var/log/messages
:
:(생략)
/etc/named.conf 의 option 영역 부분에 설정하면 전체 도메인에 설정되므로
kbs.com, mbc.com에 대한 공격도 막을 수 있다.
'Linux > 모의해킹' 카테고리의 다른 글
| 로그 설정과 Brute Forcing Attack (0) | 2021.12.29 |
|---|---|
| dnsmap (0) | 2021.12.29 |
| .swp 파일 접근 금지 설정 (0) | 2021.12.29 |
| Bee-Box 설정하기 (0) | 2021.12.28 |
| [Kali] dropip.sh 파일을 cron 에 등록하기 (0) | 2021.12.28 |