nmap 명령어
네트워크 탐지 및 포트 스캐닝을 위한 명령어로, nmap [scan type] [option] 목적지 형식을 사용한다.
systemctl stop firewalld
본격적으로 실습에 들어가기전에, 공격 대상이 될 Rocky 의 방화벽을 가동 중지시켜야 한다.
-sn 옵션 (네트워크 스캐닝)
특정 네트워크 대역에서 동작하고 있는 host 의 IP 주소를 확인한다.
nmap -sn 10.10.10.0/24
현재 10.10.10.0/24 네트워크 상에는, 10.10.10.10 과 10.10.10.254 의 IP 주소가 살아있음을 확인할 수 있다.
-sn 옵션을 통해 network ping 스캐닝을 수행하면, KALI 에서 10.10.10.0/24 네트워크를 향해 대역의 첫 IP 부터 순차적으로 ping ICMP requst 보내게 된다. 이 때, 활성화되어있는 host 인 Rokcy 10.10.10.10 이 reply 하면 해당 주소가 살아있음이 확인되므로 networking 이 수행된 것을 확인할 수 있다.
이때, 와이어샤크 필터를 통해 ICMP 패킷만을 확인할 수 있다.
icmp&&ip.src==10.10.10.10&&ip.dst==20.20.20.20
출발지의 IP 주소가 10.10.10.10, 도착지의 IP 주소가 20.20.20.20 인 ICMP 패킷을 확인한다.
icmp&&ip.src==20.20.20.20&&ip.dst==10.10.10.10
출발지의 IP 주소가 20.20.20.20, 도착지의 IP 주소가 10.10.10.10 인 ICMP 패킷을 확인한다.
icmp[0]==8&&ip.src==10.10.10.0/24&&ip.dst==20.20.20.0/24
ICMP 패킷 헤더 맨 첫 부분인 type 필드를 통해, request 패킷만을 검색한다. (request 는 type 8번을 사용한다.) 또한, 특정 네트워크 주소가 아닌 네트워크 대역으로도 검색이 가능하다.
icmp[0]==0&&ip.src==10.10.10.0/24&&ip.dst==20.20.20.0/24
ICMP 패킷 헤더 맨 첫 부분인 type 필드를 통해, reply 패킷만을 검색한다. (request 는 type 0번을 사용한다.)
따라서, ping 패킷을 막아 다음과 같은 취약점을 보완해야 한다.
cat 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Rocky 에서 icmp_echo_ignore_all 의 값을 1로 수정하여, ICMP ping 패킷을 차단한다.
하지만, ping scanning 이 여전히 수행되는 것을 확인할 수 있을 것이다. 왜일까? ICMP 의 timestamp 때문이다.
firewall-cmd --add-icmp-block={echo-request,echo-reply,timestamp-reply,timestamp-request}
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -p icmp --icmp-type 3 -j DROP
따라서, 다음과 같이 echo 와 timestamp 를 모두 차단하도록 설정한다.
*network 스캔 보안 대책*
원리 : 특정 네트워크 대역에 ping 을 보내서 request [8] 에 대한 reply [0] 을 확인
칼리 == (request[8]) ===> 서버
칼리 <== (reply[0] ) ==== 서버 OUTPUT
보안대책 : icmp reply를 차단, 허용된 ARP만 접근 허가 (NAC, ip와 mac주소를 매칭)
hping3 -1 -a 20.20.20.200 10.10.10.10
20.20.20.20 의 IP 주소가 마치 20.20.20.200 의 IP 주소로 ping 을 보낸 것처럼 IP Spoofing 이 이루어진 것을 확인할 수 있다. 주의할 점은 20.20.20.20 의 MAC 주소와 20.20.20.200 의 MAC 주소가 동일하다는 것이다. 따라서 허용된 ARP 만을 접근 허가하도록 하여, MAC 주소를 통한 차단으로 ping scanning 의 취약점을 보완할 수 있다.
-sU 옵션 (UDP 스캔)
UDP를 사용하는 포트 및 서비스만을 스캐닝한다. 포트가 열려있다면 무응답 이고, 닫혀있다면 ICMP Unreachable 오류 메시지가 응답으로 온다.
현재, Rocky 리눅스의 UDP 를 사용하는 named 데몬이 활성화된 상태이다.
nmap -sU 10.10.10.10 -p 50-55
하지만, UDP 스캐닝을 수행했을 때 domain 서비스가 close 상태인 것을 확인할 수 있다.
Rocky 의 name-server 가 local 에서만 사용 가능하도록 설정되어있기 때문이다.
vi /etc/named.conf
-> listen-on port 53 { any; };
-> allow-query { any; };
service named.service restart -> 네임 서버 데몬 재실행
따라서, named 데몬의 설정 파일인 /etc/named.conf 파일을 다음과 같이 수정한다.
nmap -sU 10.10.10.10 -p 50-55
파일 수정 후 named.serivce 데몬을 재실행하게 되면, UDP 스캐닝을 수행했을 때 domain 서비스가 open 상태로 변화한 것을 확인할 수 있다.
Rocky -> service firewalld start
KALI -> nmap -sU 10.10.10.10 -p 53-55
Rocky 에서 방화벽을 재구동한 뒤, KALI 에서 UDP 스캐닝을 진행하게 되면 domain 서비스가 filtered 상태로 변한 것을 확인할 수 있다.
이때 패킷을 캡쳐해보면, KALI 공격자가 UDP 패킷을 계속해서 보낼 때 Rocky 서버 공격 대상에서는 Destination Unreachable 오류 메시지로 응답하는 것을 확인할 수 있다.
firewall-cmd --permanent -add-port 53/udp
firewall-cmd --reload
firewall-cmd --list-all
nmap -sU 10.10.10.10 -p 53-55
방화벽 정책에 53/udp 포트만을 추가하여 방화벽을 해제하도록 설정하면, domain 서비스만 open 상태로 변한 것을 확인할 수 있다.
이때 패킷을 캡쳐해보면, KALI 공격자가 UDP 패킷을 계속해서 보내지만 Rocky 서버 공격 대상에서는 아무런 응답이 없음을 확인할 수 있다.
*UDP 스캔 보안 대책*
장점 : 단방향이기 때문에 로그가 남기 어려움 , 방화벽 활성화 여부 확인 가능
단점 : icmp에 확실한 증거가 남기 때문에 발각이 쉬움 (주기적인 unrechable)
방화벽에 의해 패킷이 차단될 경우 open / closed의 여부 확인이 어려움 (filtered)
대책: 필요한 UDP 포트만 오픈, 주기적인 모니터링을 통해 ICMP unreachable 을 확인하여 UDP 스캔으로 의심되는 패킷 차단
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)
'Security > Network Security' 카테고리의 다른 글
[Linux / KALI] nmap 명령어 (TCP 스캐닝) (0) | 2025.02.02 |
---|---|
[Linux / KALI] hping3 명령어 (DOS 공격) (0) | 2025.02.02 |
[Linux / GNS] GNS KALI, Rocky 상호 연결 (0) | 2025.02.02 |
[Linux / Rocky] 공격 대상 서버, 서비스 설치 및 방화벽 설정 (0) | 2025.02.01 |
[Linux / KALI] KALI 리눅스 설치 및 초기 설정 (0) | 2025.02.01 |