Linux NMAP 명령어. 사용법 및 예제

NMAP

network mapper의 줄임말로 네트워크 탐색과 보안감사를 하는 오픈소스 툴이다. 이 툴은 거대한 네트워크를 반복적으로 스캔할 수 있도록 디자인 되었지만 단일 호스트에서도 잘 작동한다. nmap은 네트워크상의 어떤 호스트가 작동중인지, 그 호스트가 어떤 서비스를 하는지, 운영체제가 무엇인지, 어떤 패킷필터나 방화벽을 쓰는지 등을 알아내기 위해 raw ip패킷을 사용합니다. 이는 보통 보안감사용으로 쓰이지만 네트워크 목록관리 같은 정례적인 작업, 서비스 업그레이드 스케줄 관리, 호스트나 가동중인 서비스 모니터링에도 유용하다.

리눅스 및 윈도우에서도 사용 가능하고 GUI 도 지원해주기 때문에 편하게 사용할수있다.

아래는 다운로드 링크.

https://nmap.org/download.html

nmap은 옵션에 따라 스캔된 호스트의 추가 정보를 출력하는데 그 정보 중 핵심은 ‘interesting ports table’이다.
이 테이블은 스캔된 포트번호, 프로토콜, 서비스이름, 상태(state)를 출력한다. state에는 open, filtered, closed, unfilterd가 있다.


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

사용방법 및 예제

ex1) 단일 호스트 스캔하기
nmap dalso.org
nmap 192.168.132.11
좀더 많은 정보가 얻고싶으면 -v 옵션 추가


ex2) 다수의 호스트 스캔하기
CIDR 스타일 사용 가능함 192.168.10.0/24 같은걸 사용 가능
범위 지정도 가능 하이픈’-‘사용 192.168.10-13.1 같은것


ex3) 호스트 목록을 파일에서 읽어오기
-iL 옵션은 파일에서 호스트 목록을 가져올 수 있게 한다. 파일에 입력할 수 있는 포맷은 커맨드 라인에서 입력할 수 있는 것들과
동일하며 ip 주소, 호스트 이름, CIDR, ipv6, 범위지정 등.
예를 들어 nmap -iL ./scanlist.txt // scanlist 에는 스캔할 목록들이 들어있음!


ex4) 탐색 대상에서 특정 호스트 제외하기
다량의 호스트가 탐색 대상일 때 탐색할 필요가 없는 호스트는 제외가 가능. 옵션은 ‘–exclude’ 쉼표로 여러 호스트 나열 가능
위와 같이 –excludefile ./excludelist.txt로 파일도 가능.


ex5) 목적지의 운영체제와 버전확인 기능 켜기
‘-A’ 옵션은 운영체제 탐지, 버전 탐지, script scanning, traceroute 기능을 활성화 합니다.
nmap은 호스트 탐색을 커스터마이징 하기 위해 여러가지 옵션을 혼합하여 사용할 수 있습니다.


ex6) 호스트가 방화벽에 의해 보호되고 있는지 확인하기
‘-sA’ 옵션은 tcp ack 스캔으로 특정 호스트를 방화벽 같은 보안장치가 감시하고 있는지 아닌지, 어떤 포트가 필터링 되고 있는지
확인하는데 주로 사용됨.


ex7) 방화벽이 보호하는 호스트 스캔하기(deprecated)
‘-PN’ 옵션은 호스트 탐색 없이 바로 포트스캔을 시도하는 기능, 경고 메시지와 대체옵션제안은 ‘-v’로 볼수 있음.


ex8) ipv6 호스트 스캔하기
ipv6 스캔을 하려면 ‘-6’ 옵션 추가


ex9) 특정 네트워크에서 어떤 서버가 가동중인지 확인하기(deprecated)
호스트 탐색으로 알려진 ‘-sP’ 옵션은 ping 스캔을 통해 해당 호스트가 가동중인지 확인한다


ex10)빠르게 스캔하기
일반적으로 nmap은 가장 많이 쓰는 1000개의 포트를 스캔하는데 ‘F’옵션을 사용해 100개로 줄인다.


ex11)포트의 상태에 대한 원인보기
각각의 포트가 어떤 이유에 의해 현재의 상태가 되었는지 ‘–reason’ 옵션을 통해 알아볼 수 있다.


ex12)open 상태인 포트만 보이기
closed나 filterd, closed|filtered 포트의 정보가 필요하지 않다면 ‘–open’옵션을 통해 open, open|filterd, unfilterd
상태의 포트만 출력하게 합니다.


ex13)송수신된 모든 패킷 보이기
nmap은 기본적으로 송수신된 패킷의 정리된 내용만 요약하여 출력한다.
주로 ‘–packet-trace’ 옵션은 전체 패킷을 모두 출력하게 하여 디버깅용도로 사용한다.


ex14)본인의 네트워크 인터페이스와 라우트 정보 보기
‘–iflist’옵션은nmap이 탐지한 인터페이스 목록과 시스템 라우트를 출력한다. 이 옵션은 nmap이 장치이름을 이상하게 표시하거나 라우팅에 문제가 있을 때 디버깅용으로 사용할 수 있다.


ex15)특정 포트만 스캔하기
‘-p’ 다음에 포트 지정


ex16)포트 스캔 속도 지정하기
스캔 속도를 지정해 대역폭과 목표 호스트의 자원사용을 조절하도록 하는 옵션으로 ‘-T’ 뒤에 숫자를 붙인다.


ex17)원격지의 운영체제 알아내기
‘-O’ 옵션으로 운영체제 탐지 기능을 활성화 한다.


ex18)서비스 버전 알아내기
‘-sV’ 옵션으로 서버나 데몬의 버전을 출력합니다.


ex19)tcp ack, tcp syn 으로 호스트 스캔
방화벽이 icmp 핑을 막고있을 때 대안으로 사용할 수 있다. ‘-PS’옵션은 tcp syn ping으로 빈 tcp 패킷에 syn flag를 셋팅하여 호스트 탐지를 실행한다. ‘-PA’는 tcp ack ping 으로 ack flag를 셋팅하여 사용한다.


ex20)가장 일반적으로 사용되는 tcp 포트 스캔하기
tcp 스캔에는 스텔스 스캔과 완전연결 스캔이 있음, 스텔스 스캔은 3 way handshaking을 완료하지 않고 진행하는 스캔 syn을 보내고 syn/ack이 오면 rst를 보내 호스트의 open 여부를 판단하고 상대방 호스트에 로그를 남기지 않으려 연결을 중단시킴.

$ nmap -sS 172.16.9.1 // tcp를 완전히 연결하지 않는 스텔스 스캔
$ nmap -sT 172.16.9.1 // tcp 연결 스캔, 운영체제 fingerprint 스캔
$ nmap -sA 172.16.9.1 // tcp 연결 스캔, 운영체제 tcp ack 스캔
$ nmap -sW 172.16.9.1 // tcp 연결 스캔, 운영체제 tcp window 스캔
$ nmap -sM 172.16.9.1 // tcp 연결 스캔, 운영체제 tcp maimon 스캔

리눅스마스터 1급 공부했을때 정리해놨던 거…

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

홈서버 IT 커뮤니티 SVRFORUM
Link