Linux/모의해킹

axfr 로그 허용 차단하기

GGkeeper 2021. 12. 29. 19:44

우선 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