Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

네트워크 스캔 본문

정보보안

네트워크 스캔

세레프 2023. 7. 3. 23:26

 접근가능한 port나 IP주소를 확인하기 위해서 네트워크 스캔(nmap)을 한다. nmap이란 네트워크 패킷을 통해 서버에서 열려있는 port와 서버에서 사용하는 서비스를 확인하는 것으로, port가 열려있다는 것은 외부로부터 서버로 접근이 가능하다는 것을 의미한다.

 

 클라이언트가 서버의 서비스를 사용하기 위해서는 해당 서비스의 port가 열려있어야 한다. 그래서 공격자도 해당 port를 통해 서버로 접근이 가능하며, 네트워크 공격을 할 수 있다.  그래서 보안 솔루션 엔지니어는 네트워크 공격에 대한 정책을 마련해야 한다.

 

  • nmap  [scan type] [목적지] : 패킷을 통해 해당 목적지와 연결이 가능한지 확인하는 명령어
    • nmap  [scan type] -p [포트범위] [목적지] : 해당 목적지의 포트가 연결이 가능한지 확인하는 명령어
    • nmap  [scan type] [목적지] -D RND : source IP주소를 변경해서 스캔하는 명령어 (Decoy  스캔)
      • Decoy 스캔은 IP 주소는 변경하지만 MAC주소를 변경하지 못하기에 , NAC(MAC주소와 HOST를 매칭해서 막는 보안장비)를 통해 보안이 가능

 

scan type 스캔 종류
-sT TCP Scan
-sS Syn stealth Scan
-sF Fin Scan
-sX X-mas(URG,PSH,FIN) Scan
-sN null Scan
-sU UDP Scan
-sn Ping Scan
-sA Ack Scan

Ping scan

  • nmap -sn [IP 주소/profix] : ICMP(ping)를 통해 해당 호스트와 연결 가능성 확인하는 명령어
  • 원인 : 네트워크 대역에 ping을 보내서 요청(request)을 보내서 요청에 대한 응답 (reply)을 확인
    • 통신 가능한 호스트 : reply패킷이 리턴
    • 통신 불가능한 호스트 : 리턴 없음
  •  보안 대책 : 서버측에서의 reply를 차단하고 ip와 mac주소를 매칭해서 허용된 ARP만 접근 허가
    • /proc/sys/net/ipv4/icmp_echo_igonore_all : ping의 reply 활성화 유무 파일

Ping Scan 결과
Ping Scan 패킷 경로



UDP scan

  • nmap -sU [IP주소] : UDP를 통해 서버의 포트에 접근할  수 있는 지 확인하는 명령어
    • nmap -sU -p [포트 범위] [IP주소] : UDP를 통해 범위에 있는 포트의 접근 가능성을 확인하는 명령어 
  • 원인 : udp 패킷을 보내서 해당 포트에서 udp 패킷이 리턴되는 지 확인
    • 접근 가능 포트 (opend) : 해당 서버의 UDP 패킷이 리턴
    • 서비스가 없는 포트(closed) : icmp에 unreachable가 리턴
    • 방화벽이 설정되어 있는 포트(filtered) : icmp에 unreachable가 리턴
  • 보안 대책 : 특정 UDP만 오픈하고, 주기적인 모니터링을 통해 ICMP unreachable을 확인하여 udp스캔인 패킷을 차단
UDP Scan 결과 ( 서버 방화벽 ON) UDP Scan 결과 (서버 방화벽 OFF)
UDP Scan 패킷 경로 (서버 방화벽 ON) UDP Scan 패킷 경로 (서버 방화벽 OFF)
  • filtered : 해당 포트에 방화벽이 활성화 상태 (접근 불가 상태)
  • closed : 해당 포트에 방화벽이 비활성화 상태에서 해당 포트에 서비스가 없거나 비활성화 상태 (접근 불가 상태)
  • open :  해당 포트에 방화벽이 비활성화 상태에서 해당 포트에 서비스가 활성화 상태 (접근 가능 상태)
방화벽 비활성화 포트 추가, 삭제
firewall-cmd --permanent --add-port=[포트/[UDP/TCP]] 추가
firewall-cmd --permanent --remove-port=[포트/[UDP/TCP]] 삭제
firewall-cmd --reload 방화벽 새로고침
firewall-cmd --list-all 방화벽 적용 확인

 

TCP scan

  • nmap -sT [IP주소] : 3way handshack를 통해 서버의 포트에 접근할 수 있는지 확인하는 명령어
    • nmap -sT -p [포트 범위] [IP주소] : 3way handshack를 통해 해당 포트범위에 있는 포트의 접근 가능성 확인
  • 원인 : 클라이언트가 Syn를 전송하면  서버가 Syn+Ack를 리턴하고 해당 패킷을 받은 클라이언트가  Ack까지 받음 (3way handshack) 그리고 클라이언트 측에서 바로 Rst + Ack 를 전송
    • 접근 가능한 포트(open) : ACK 받은 뒤, 클라이언트 측에서 RST+ACK를 리턴
    • 서비스가 없는 포트(closed) : 서버측에서 바로 RST+ACK를 리턴
    • 방화벽이 설정되어 있는 포트(filtered) : icmp에 unreachable가 리턴
  • 보안 대책 : 같은호스트에서 다수의 포트들을 검색하는 내용 모니터링하고 세션완료후 RST+ACK 를 보낼경우 차단 
TCP Scan 결과 ( 서버 방화벽 ON) TCP Scan 결과 ( 서버 방화벽 OFF)
TCP Scan 패킷 경로 (서버 방화벽 ON) TCP Scan 패킷 경로 (서버 방화벽 OFF)
  • filtered : 해당 포트에 방화벽이 활성화 상태 (접근 불가 상태)
  • closed : 해당 포트에 방화벽이 비활성화 상태에서 해당 포트에 서비스가 없거나 비활성화 상태 (접근 불가 상태)
  • open :  해당 포트에 방화벽이 비활성화 상태에서 해당 포트에 서비스가 활성화 상태 (접근 가능 상태)
TCP flag
syn  요청
ack  응답
fin 종료 ( 연결이 된 이후 정상적으로 연결이 종료되는 경우)
rst 재시도 (클라이언트가 강제적으로 연결을 종료하거나 서버가 해당 서버를 이용할 수 없도록 하는 경우)
urg 긴급
psh 밀어넣기 (해당 패킷의 순위를 최우선으로 변경)
none 어떠한 flag가 없음

 

 

Syn stealth scan (half open scanning)

  • nmap -sS [IP주소] : 3way handshake 세션이 완료하기 전에 연결을 종료시켜서 서버의 포트에 접근할 수 있는지 확인하는 명령어
    • nmap -sS -p [포트 범위] [IP주소] : 3way handshake 세션이 완료하기 전에 연결을 종료시켜서 해당 포트의 접근가능성을 확인하는 명령어
  • 원인 : TCP 스캔에서 Syn+Ack만 확인한 후 RST를 전송해서 세션을 강제종료
    • 접근 가능한 포트(open) : Syn+Ack 받은 뒤, 클라이언트 측에서 RST를 리턴
    • 서비스가 없는 포트(closed) : 서버측에서 바로 RST+ACK를 리턴
    • 방화벽이 설정되어 있는 포트(filtered) : icmp에 unreachable가 리턴
  •  보안 대책 : 주기적인 모니터링을 통해서 같은 호스트에서 다수의 포트를 검색하면서 syn+ack를 넘기고 바로 ack가 아닌 RST 를 보내는 IP주소를 확인
Syn Scan 결과 (서버 방화벽 ON) Syn Scan 결과 (서버 방화벽 OFF)
Syn Scan 패킷 경로( 서버 방화벽 ON) Syn Scan 패킷 경로(서버 방화벽 OFF)
  • filtered : 해당 포트에 방화벽이 활성화 상태 (접근 불가 상태)
  • closed : 해당 포트에 방화벽이 비활성화 상태에서 해당 포트에 서비스가 없거나 비활성화 상태 (접근 불가 상태)
  • open :  해당 포트에 방화벽이 비활성화 상태에서 해당 포트에 서비스가 활성화 상태 (접근 가능 상태)

 

ACK scan

  • nmap -sA [IP주소] : ACK 패킷을 통해 서버에서 방화벽이 활성화 되어있는 포트를 확인하는 명령어
    • nmap -sA -p [포트 범위] [IP주소] : ACK 패킷을 통해 포트 범위에서 방화벽이 활성화 되어있는 포트를 확인하는 명령어
  • 원인 : Ack만 보냄으로써 해당 포트에 방화벽이 활성화 되어 있는지 판단
    • 방화벽이 설정되어 있는 포트 (filtered) : 응답이 없거나 icmp에 unreachable가 리턴
    • 방화벽이 설정되어 있지않은 포트 (unfiltered) : RST가 리턴
Ack Scan 결과 (서버 방화벽 ON) Ack Scan 결과 (서버 방화벽 OFF)
Ack Scan 패킷 경로( 서버 방화벽 ON) Ack Scan 패킷 경로(서버 방화벽 OFF)
  • filtered : 방화벽이 활성화 중인 포트 (접근 불가)
  • unfiltered : 방화벽이 비 활성화 중인 포트 (접근 가능)

 

Fin scan

  • nmap -sF [IP주소] : FIN 패킷을 통해 포트에 서비스가 작동하는지 확인하는 명령어 
    • nmap -sF -p [포트 범위] [IP주소] : FIN 패킷을 통해 해당 벙뮈에서 서비스가 작동하는 포트를 확인
  • 원인 : FIN 패킷을 보내고 해당 패킷의 리턴 확인
    • 서비스 존재하지 않는 포트 : rst+ack 리턴
    • 서비스 존재하는 포트 : 리턴 없음
  • 보안 대책 : 한 호스트가 FiN으로 여러 포트를 스캐닝할 경우 차단
Fin Scan 결과 (서버 방화벽 ON) Fin Scan 결과 (서버 방화벽 OFF)
Fin Scan 패킷 경로( 서버 방화벽 ON) Fin Scan 패킷 경로( 서버 방화벽 OFF)

 

x-mas scan

  • nmap -sX [IP주소] : FIN, PSH, URG을 한 패킷에 보내어서 포트에 서비스가 작동하는지 확인하는 명령어  
    • nmap -sX -p [포트 범위] [IP주소] : FIN, PSH, URG을 사용하는 패킷을 통해 해당 포트 범위에서 작동하는 서비스 확인
  • 원인 : FIN, PSH, URG을 포함한 패킷을 보내고 해당 패킷의 리턴 확인
    • 서비스 존재하지 않는 포트 : rst+ack 리턴
    • 서비스 존재하는 포트 : 리턴 없음
  • 보안 대책 : fin과 psh urg를 같이 보내면 fin만 필터링하는 정책을 무시하기에,  fin 스캔과 동일하지만 해당 psh와 urg 플레그를 합쳐서 검사 
x-mas Scan 결과 (서버 방화벽 ON) x-mas Scan 결과 (서버 방화벽 OFF)
x-mas Scan 패킷 경로( 서버 방화벽 ON) x-mas Scan 패킷 경로( 서버 방화벽 OFF)

 

null scan

  • nmap -sN [IP주소] : TCP flag를 사용하지 않은 패킷에 보내어서 포트에 서비스가 작동하는지 확인하는 명령어
    • nmap -sN -p [포트 범위] [IP주소] : TCP flag를 사용하지 않은 패킷을 통해 해당 범위의 포트에 서비스의 존재 유무를 확인
  • 원인 : tcp flags를 완전히 비워내서 패킷을 보내고 해당 패킷의 리턴 확인
    • 서비스 존재하지 않는 포트 : rst+ack 리턴
    • 서비스 존재하는 포트 : 리턴 없음
  • 보안 대책 : null 플레그 검사
 
null Scan 결과 (서버 방화벽 ON) null Scan 결과 (서버 방화벽 OFF)
 
null Scan 패킷 경로( 서버 방화벽 ON) null Scan 패킷 경로( 서버 방화벽 OFF)

 

 

 

'정보보안' 카테고리의 다른 글

윈도우 설치 및 보안 정책  (0) 2023.07.05
네트워크 공격  (0) 2023.07.05
CentOS 7 mini와 KALI 리눅스  (0) 2023.06.30
GNS3  (0) 2023.06.29
DHCP와 NAT  (0) 2023.06.28
Comments