Network Security DAY_009 DNS 서버구축 , 스캔 목록 이용한 스캐닝 , 출발지 IP 주소 스푸닝, 보안 솔루션 우회, 랜덤 IP로 스푸핑 ,포트스캐닝 ,port , scanning , 스캔내용저장 , DNS scan , DNS Server , 리눅스 ..

2024. 1. 24. 23:11Information Security 정보보안/Network Security 네트워크 보안

728x90

배울 내용:  

DNS 서버구축

스캔 목록 이용한 스캐닝

출발지 IP 주소 스푸닝

보안 솔루션 우회

랜덤 IP로 스푸핑 

포트스캐닝

port scanning 

스캔내용저장

DNS scan

DNS Server 

리눅스 환경설정파일 설정 

 

 

 

 

 

 

 

 

 

제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.

틀린게 있으면 댓글로 써주시면 고치겠습니다.

 

 

 

 

 

 

먼저 KALI , Centos, Window10  VM 을켜준다

 

각각의 IP는 

KALI : 192.168.10.100

CentOs : 192.168.10.101

Window10 : 192.168.10.200 

 

기억하자

 

 

 

 

 

[ 스캔 목록을 이용한 스캔 ]

 

 

 

KALI에서 Window를 먼저 

scanning 해보자

 

 

이렇게 한개한개 할수도있지만

 

여러개를 한번에  할수도있고 도메인도  가능하다 

 

 

먼저 scan.txt 를 만든뒤 에 

 

 

 

 

 

 

이렇게 1칸 뛰우면서 IP주소 또는 DNS 주소를 써주고

 

 

 

 

nmap -iL /root/scan.txt 를해준다

 

 

nmap: 네트워크 스캐닝 및 감사 도구를 실행하는 명령어입니다.

-iL: 입력 목록 파일을 지정하는 옵션으로, 뒤에 파일 경로가 옵션 값으로 제공됩니다.

/root/scan.txt: 이 파일에는 스캔 대상이 될 호스트의 IP 주소나 도메인 이름이 포함됩니다.

 

그러면

 

 

이렇게 3개의 부분에서 열린포트를 스캐닝한걸 볼수있다 

 

이것은 스캔리스트를 만들어서 스캐닝을 한것이다 

 

 

 

 

 

 

 

 

 

 

 

 

[  출발자 IP 주소 스푸핑 ] 

 

 

 

이번에는 CentOS 로가서

 

Wireshark 를 킨다음에 

 

 

 

 

 

이렇게 한뒤에 다시 Kali에서

아까 목록으로 다시 Scanning 해보자

(아무 옵션안주면 SYN Scan) 

 

 

 

 

 

이렇게 나오는데 회색으로 된걸 보면 SYN을 보낸걸아는데 

이렇게 SYN을 엄청많이 보낸걸 알수있다 

 

 

시스템에서는 SYN을 nmap 에 보안 솔루션 우회

 

-T0 : Paranoid : 5분~10분
-T1 : Sneaky   : 수 분(조금느림)
-T2 : Polite   : 느림
-T3 : Default(Normal) : 일반적
-T4 : aggressive : 빠름 
-T5 : Insane : 아주 빠름
ex) nmap -T0 google.com

 

이런 옵션을 줘서 보내는 속도를 낮춰서  차단을 피해간다 

 

예를들면 

nmap google.com 을 계속 하게되면 google 에서 차단을하는데

옵션으로 T0 등을 줘서 차단하는걸 우회해서 차단되는걸 피해간다 

 

 

예를들어 구글쪽에서 1초에 50개의 요청이 오면 차단해라 

등등 임계값에 도달하면 차단되는걸 설정했다고 했을때

1초에 40개만 보내게 설명하면 임계값에 도달하지 못하기  때문에

차단을 피해간다 

 

 

 

다시 wireshark 를 킨 상태에서 

 

이번에는 Kali(공격자)에서 IP주소를 스푸핑

 

 nmap -D 100.100.100.100 192.168.10.101  
(IP주소를 100.100.100.100으로 변조) 

 

이렇게 해보자 

 

 

 

 

그러면 

 

 

 

 

이렇게 된다 

 

실제론 100.100.100.100 이란 IP 주소는 존재하지않지만

CentOS 에서는 100.100.100.100에서 SYN 을 받은걸 확인할수있다

 

 

 

 

 

 

 

 

 

 

2개의 IP로 스푸핑 

 

 

 

 

 

 nmap -D 100.100.100.100 200.200.200.200 192.168.10. 101     
(여러개를한번에 변조 )

 

 

 

 

 

 

 

 

 

 

100개의  랜덤 IP로 스푸핑 

 

 

 

 

 

 nmap -D RND:100 192.168.10. 101  

주의!  (100개랜덤 .  본인IP 포함 보낸다! )

 

 

-D RND:100: 이 옵션은 여러 소스 IP 주소를 가상으로 만들어서 스캐닝을 하는데 사용됩니다.

 

-D는 디코이 (decoy) 옵션으로, 타깃 시스템에 대한 스캐닝을 할 때 가상의

호스트들을 함께 사용하여 보안 시스템을 속이는 데 도움이 됩니다.

 

RND:100은 100개의 랜덤한 IP 주소를 생성하여 사용한다는 것을 의미합니다

 

 

 

 

 

 

 

 

 

 

[ 패킷을 분할하여 우회 ]

 

 

 

 

nmap -f 192.168.10.101

이걸로 스캐닝할수있음

 

 

 

 

오른쪽에 보면 Fragmented IP protocol 로 해체된 IP 프로토콜 이 보인다 

 

 

여기서 사용된 옵션은 -f입니다.  -f 옵션은 IP 프래그먼트화를 지원합니다.

 

IP 프래그먼트화는 패킷을 작은 조각으로 나누어 전송하는 프로세스를 말합니다.

이 기능을 사용하면 네트워크 방화벽과 같은 보안 장치에서 패킷을 탐지하고 차단하기 어려워지며,

특히 패킷 필터링 및 IDS/IPS (Intrusion Detection System/Intrusion Prevention System)

기능을 우회하거나 회피할 때 유용할 수 있습니다.

 

소스포트 변조

또한 nmap --source-port 777 192.168.10.101 로 출발지 포트를 777로도 바꿀수있다 

 

 

 

 

 

 

[ 공격 대상 범위 지정 ] 

 


nmap --randomize-hosts 192.168.10.1-100

 

 

192.168.10.1~ 192.168.10.100 까지 스캐닝하는것 

 

 

 

 

 

추가적으로 

아래와 같은 방법으로 다양하게 할수있다 

 

 

 0~255 까지 순서대로  
nmap 192.168.10.0/24  

 

특정 IP 제외하고 스캔 
nmap 192.168.10.0/24 -exclude 192.168.10.10 

 

특정  IP 들 제외하고 스캔  

nmap 192.168.10.0/24 -exclude 192.168.10.150,192.168.10.243 

 

 

 

 

 

 

 

 

 

[ 스캔 내용 파일 저장 ]

 

 


nmap -iL scan.txt -o /root/nmap2.scan

또는
nmap -iL scan.txt > /root/nmap2.scan

 (리다이렉션 , 리눅스 기본옵션) 

 

 

이렇게하면 

 

 

이런식으로 scan.txt 에 있는 주소들에 스캐닝한뒤에 

 

 

 

/root/nmap2.scan  이라는 경로에 저장되는데 

저걸 열어보면 

 

 

 

 

아까 포트 스캐닝했던 기록을 그대로 저장해놨다 

-o 옵션을 쓰든 > 리다이렉션을 쓰든 똑같이 저장된다 

 

 

 

-o /root/nmap2.scan: 이 옵션은 스캔 결과를 파일에 저장

 

 

 

 

 

 

 

 

 

 

 

[ DNS Scan ]

 

 

먼저 DNS Scan을 하기위해선 설치와 기본설정을해야한다

 

 

 DNS  Server 설치(centos)

 


yum -y install bind*

 

 

 

 

 

 환경설정 파일 설정


/etc/named.conf                     주환경설정 파일 
/etc/named.rfc1912.zones     도메인 등록 파일 
/var/named/test.co.kr.zone      도메인 레코드 파일

 

 

 

 

먼저 vi /etc/named.conf 로 한뒤에

 

 

14 번째를 주석처리하고 

     21         allow-query     { any; };

이렇게 21번째 줄에 allow-query 를 any 로 바꿔준다 

 

이게 DNS 환경의 주 환경설정이다 

 

 

 

 

 

 

이제 

vi /etc/named.rfc1912.zones 

하면 도메인 등록 파일이 나온다

 

그리고 제일 밑에 

 

 

 

zone "test.co.kr IN {

 type master;

file "test.co.kr.zone";

allow-update {none;};

}; 

 

이렇게 추가해주고 저장해주고 나간다 

 

 

 

 

 

그리고 아까 만들어줬던 파일 이름을 만들어줘야한다

 

 

 

 

cd /var/named 로 간뒤에

vi test.co.kr.zone 으로 만들고

 

 

 

 


$TTL    0
@       IN      SOA     test.co.kr.     admin.test.co.kr.       (

                        20231121        ;Serial
                        1D              ;Refresh
                        1H              ;Retry
                        1W              ;Expire
                        1W              ;Minimum TTL

)

 

이렇게 저장한다 

 

참고로 이때 스페이스로 뛰우는게 아니라 TAB 으로 뛰어준다

그렇게 하지않으면 에러 뜨니 잘적길 바란다

 

 

위에것을 만든거는

이 코드는 DNS (Domain Name System) 데이터베이스의 SOA (Start of Authority) 레코드를 정의하는 것

인데  중요하지 않으니 넘어가도 좋다 

그러나 한번 봐도 무난하다 

 

 

  1. $TTL 0: TTL (Time To Live)  해당 존의 모든 레코드가 실시간으로 갱신되어야 함을 의미합니다.
  2. @ IN SOA test.co.kr. admin.test.co.kr. ( ... ): "@"는 현재 존의 기본 도메인을 나타냅니다. "IN"은 레코드의 클래스를 나타냅니다. "SOA"는 레코드 타입으로, Start of Authority를 의미합니다. 이 레코드는 존에 대한 기본 정보를 제공합니다.
  3. test.co.kr. admin.test.co.kr. ( ... ): SOA 레코드의 첫 번째 필드는 존의 이름을 나타내며, 두 번째 필드는 존의 관리자의 이메일 주소를 나타냅니다.
  4. 20231121: 이 부분은 SOA 레코드의 시리얼 번호(serial number)입니다. 이 숫자는 존의 변경 사항을 추적하기 위해 사용되며, 변경이 있을 때마다 증가시켜야 합니다.
  5. 1D: Refresh 값은 다른 DNS 서버로부터 존의 정보를 다시 가져오는 주기를 나타냅니다. 여기서는 1일(1일 = 1D)로 설정되어 있습니다.
  6. 1H: Retry 값은 다른 DNS 서버에서 존의 정보를 가져오지 못했을 때 다시 시도하는 주기를 나타냅니다. 여기서는 1시간(1시간 = 1H)로 설정되어 있습니다.
  7. 1W: Expire 값은 존 정보의 유효 기간을 나타냅니다. 다른 DNS 서버로부터 정보를 가져올 수 없는 경우, 이 기간이 지나면 해당 존 정보가 더 이상 사용되지 않게 됩니다. 여기서는 1주일(1주일 = 1W)로 설정되어 있습니다.
  8. 1W: Minimum TTL 값은 존 내의 다른 레코드들에 대한 최소 TTL을 나타냅니다. 여기서는 1주일(1주일 = 1W)로 설정되어 있습니다.

 

 

 

 

 

 

        IN      NS      test.co.kr.
        IN      A       192.168.10.150
www     IN      A       192.168.10.151
ftp     IN      A       192.168.10.152
mail    IN      A       192.168.10.153
blog    IN      A       192.168.10.154
cafe    IN      A       192.168.10.155
~                                          

 

그리고 이렇게 더 추가 해주는데 

 

  1. cafe IN A 192.168.10.155: "cafe" 서브도메인에 대한 A 레코드로, "cafe.test.co.kr" 도메인의 IP 주소를 192.168.10.155으로 설정하고 있습니다.

각각의 레코드는 도메인과 IP 주소 간의 매핑을 정의하며,

DNS 서버는 이러한 정보를 사용하여 도메인 이름을 실제 IP 주소로 해석하거나

반대로 IP 주소를 도메인 이름으로 변환한다 

 

 

 

 

이렇게 작성후 저장하고 

 

systemctl restart named 

 

하면 정상적으로 DNS 서버를 구축한것이다

이러면 Domain을 사용할수있다 

 

 

 

 

 

DNS 서버 주소 지정

 

 

 

vi /etc/resolve.conf 에서

 

 

이렇게 설정하고

 

 

 

Kali 에서도 

똑같이

 

기존의 DNS 였던 192.168.10.2를

DNS 를 centos Server 인 192.168.10.101 로 바궈주고 저장한다

 

 

 

 

 

그뒤에 Kali 에서 ping test.co.kr ( 아까만들었던 도메인 ) 

 

 

안된다 . 

 

 

 

 

 

 

물론 앞에  CentOS 에서 systemctl restart named 를 해줘야 적용된다

 

이렇게 한뒤에 다시 Ping 을 하면

 

 

 

 

제대로 Ping 되는걸 볼수있다

 

DNS 서버를 구축했으니 

이제 다음 부터는 DNS Scanning 을 본격적으로 해볼수있다 

 

 

 

그럼 20000

 

 

 

728x90