본문 바로가기

Ubuntu/linux Command

Linux Command (nmap, netstat)

728x90

nmap은 network mapper의 줄임말로 네트워크 탐색과 보안감사를 하는 오픈소스 툴입니다. 이 툴은 거대한 네트워크를 반복적으로 스캔할 수 있도록 디자인 되었지만 단일 호스트에서도 잘 작동합니다.

 

기능

  • 호스트 탐지 - 네트워크상의 컴퓨터들을 확인한다. 예를 들어 ping 응답이나 특정 포트가 열린 컴퓨터들을 나열한다.
  • 포트 스캔 - 하나 혹은 그 이상의 대상 컴퓨터들에 열린 포트들을 나열한다.
  • 버전 탐지 - 응용 프로그램의 이름과 버전 번호를 확인하기 위해 원격 컴퓨터의 네트워크 서비스에 주의를 기울인다.
  • 운영 체제 탐지 - 원격으로 운영 체제와 네트워크 장치의 하드웨어 특성을 확인한다.


Port Status

  • open: 스캔된 포트가 listen 상태임을 나타냄
  • filtered: 방화벽이나 필터에 막혀 해당 포트의 open, close 여부를 알 수 없을 때
  • closed: 포트스캔을 한 시점에는 listen 상태가 아님을 나타냄
  • unfiltered: nmap의 스캔에 응답은 하지만 해당 포트의 open, close 여부는 알 수 없을 때

 

사용례

1. 단일 호스트 스캔하기

nmap에서 스캔 대상을 지정하는 가장 간단한 방법은 그냥 ip 주소를 지정하거나 호스트이름을 입력하는 방법입니다.

$ nmap scanme.nmap.org

$ nmap 172.16.9.1

 

2. 다수의 호스트 스캔하기

네트워크에 인접한 호스트 여러대를 스캔하고 싶을 경우 cidr 스타일을 사용할 수 있습니다. 예를 들어 172.16.9.0/24로 주소를 지정한다면 앞에서 24개 비트만 고정하고 172.16.9.0 부터 172.16.9.255 까지의 256개 호스트를 스캔합니다. 172.16.9.100/24 처럼 주소를 지정해도 결과는 동일합니다. 이 방법에 호스트 이름을 사용할 수도 있습니다. 

 

$ nmap 172.16.0.0/24

$ nmap scanme.nmap.org/24

cidr 스타일은 간단하지만 유연성이 떨어집니다. 예를들어 172.16.9.0/24를 스캔하고 싶지만 특수용도 주소인 .0 이나 .255를 제외하고 싶다면 cidr 스타일만으로는 힘듭니다. 이런 경우 때문에 nmap에는 ip 주소의 범위를 지정할 수 있는 옵션이 있습니다. 사용 방법은 하이픈('-')으로 범위를 지정하거나 쉼표로 여러 범위를 지정하는 것입니다. 예를 들어 172.16.3-5,7.1 : 172.16.3.1, 172.16.4.1, 172.16.5.1, 172.16.7.1을 스캔하라는 명령

172.16.9.-: 0-255와 같은 의미.

또한 스캔하고싶은 호스트들에 일정한 패턴이 없다면 앞에서 언급한 여러가지 스타일을 한번에 사용할 수도 있습니다.

$ nmap 172.16.3-5,7.1

$ nmap scanme.nmap.org 172.16.9.0/24 10.0.0,1,3-7.-v


3. 호스트 목록을 파일에서 읽어오기

'-iL' 옵션은 파일에서 호스트 목록을 가져올 수 있게 합니다. 파일에 입력할 수 있는 포멧은 커맨드 라인에서 입력할 수 있는 것들과 동일하며 ip 주소, 호스트 이름, cidr, ipv6, 범위지정 입니다. 각각의 검색 대상은 스페이스, 탭, 새 줄로 구분해야 합니다. 만약 표준입력을 입력파일로 지정하고 싶으면 파일이름 대신 하이픈을 사용합니다. 여기서 주석은 '#'으로 표시하고 '#'에서 시작하여 그 줄의 끝까지가 주석의 범위입니다.

 

$ cat ./scanlist.txt

scanme.nmap.org

172.16.9.0/24

172.16.9.1/24

10.0.0,1,3-7.-

$ nmap -iL ./scanlist.txt

 

 

4. 탐색 대상에서 특정 호스트 제외하기

다량의 호스트가 탐색 대상일 때 탐색할 필요가 없는 호스트는 제외할 수 있습니다. 옵션은 '--exclude'이고 쉼표로 여러 호스트를 나열할 수 있습니다. 또한 '–-excludefile' 옵션을 통해 제외할 대상을 파일에서 읽어올 수 있습니다.

 

$ nmap 172.16.9.0/24 --exclude 172.16.9.5

$ nmap 172.16.9.0/24 --exclude 172.16.9.0,172.16.9.255

$ nmap -iL ./scanlist.txt --excludefile ./excludelist.txt


5. 목적지의 운영체제와 버전확인 기능 켜기

$ nmap -A 172.16.9.1

$ nmap -v -A 172.16.9.1

$ nmap -A -iL ./scanlist.txt 



6. 호스트가 방화벽에 의해 보호되고 있는지 확인하기

'-sA' 옵션은 tcp ack 스캔으로 특정 호스트를 방화벽 같은 보안장치가 감시하고 있는지 아닌지, 어떤 포트가 필터링 되고 있는지를 확인하는데 주로 사용합니다. 

$ nmap -sA 172.16.9.1

$ nmap -sA scanme.nmap.org

 

 

 

Reference
https://nmap.org/

 

Nmap: the Network Mapper - Free Security Scanner

Download Reference Guide Book Docs Zenmap GUI In the Movies Get Nmap 7.92 here Nmap.org has been redesigned! Our new mobile-friendly layout is also on Npcap.com, Seclists.org, Insecure.org, and Sectools.org. Nmap 7.90 has been released with Npcap 1.00 alon

nmap.org

 

occupied port 정보알아 오는 방법

sudo ss -lntu 사용하는 port 정보를 나타낸다
sudo netstat -lntp  
netstat -tulpen port usage 정보를 알수 있다

 

'Ubuntu > linux Command' 카테고리의 다른 글

Linux Command (groupadd, addgroup, groupmod, groups, groupdel, newgrp)  (0) 2022.05.07
Linux Command (unlink)  (0) 2022.05.07
Linux Command (mount, unmount )  (0) 2022.05.07
Nuget  (0) 2022.02.10
Linux command (rcp)  (0) 2021.09.22