최근 수정 시각 : 2024-10-13 01:08:54

nmap


1. 개요2. 활용법3. 기타4. 외부 링크

1. 개요

nmap은 Network Mapper의 약자로 네트워크 스캐닝 툴의 일종이다. 쉽고 유연하며 좋은 쪽으로도 나쁜 쪽으로도 강력한 기능들이 미리 스크립팅 되어있다.

네트워크상의 호스트를 찾아내거나, 호스트의 정보(가령 운영체제는 무엇이고 어떤 포트를 어떤 프로그램이 사용하고 있는지, 버전은 어떤지 등) 스캔, 스텔스 스캔, 방화벽 사용 감지, 보안 취약점 검사 등등을 할 수 있다.

1997년 해킹 매거진 phrack에 소스코드와 함께 처음 공개되어 지금까지 오픈소스로 개발되어 엄청난 점유율을 자랑하며 수많은 베리에이션을 낳았다.

모든 보안 프로그램이 그러하듯, 이 역시 좋은 목적으로 사용하면 관리에 편의를 제공하지만 공격자가 사용하면 풋프린팅의 기초가 되는 프로그램이다.

2. 활용법

설치는 리눅스 데비안 환경에서 아래 명령어로 할 수 있다.
apt-get install nmap
이후의 실행은 아래처럼 할 수 있다.
nmap (사용할 인수)

당연히 로우(raw) 소켓을 사용하기 때문에 루트 권한이 없으면 사용할 수 없다.

사용법이야 그냥 nmap만 쳐도 매뉴얼을 보여준다만, 정말 유용하게 쓰이는 필수적인 인수를 몇 가지 나열해보자면 아래와 같다.
  • -sn 192.168.0.*
    이 명령은 1에서부터 254까지 접속되어있는 호스트의 맥주소와 기본적인 정보(Apple이라든지 Samsung이라든지)의 내용을 핑스캔을 통해 보여준다. 가령 와이파이에 접속하여 위 명령을 실행하면 그 와이파이에 접속된 기기들을 확인할 수 있다. 다만 현재 최신 iOS와 안드로이드 기반 모바일 기기들은 강해진 개인정보 보호 기능으로 기본적으로 비공개 네트워크 주소를 띄우기 때문에 죄다 unknown값을 출력한다.[1] 이런 무차별 스캔과 추적을 방지하기 위함이라서 단순 스캔으론 특정 기기를 추적할 수 없게끔 되어있다. 물론 기기에서 비공개 주소를 끄면 기기 이름은 보고될 수 있다.
  • -Pn
    이 명령은 반대로 핑을 사용하지 않는다. nmap은 스캔에 있어 사전에 핑을 통해 호스트가 살아있음을 확인하고 진행하는데, 보안 문제로 인해 핑을 무시하는 호스트에 대해서는 스캔을 할 수가 없다. 그러한 경우에는 위 명령을 통해 확인 절차를 스킵하자.
  • -sT
    일반적인 TCP의 3-Way-Handshake 방식을 이용한 포트 스캔, 당연히 위 절차를 통해 로그가 남는다.
  • -sS
    TCP 스탤스 스캔, 위 절차에서 마지막에 보내야 하는 ACK 대신 RST를 보내 절차 성립을 방해하여 로그를 남기지 않.... 기는 무슨 남을 로그는 남는다.
  • -sN, -sF, -sX
    차례대로 TCP Null 스캔, Fin 스캔[2], Xmas 스캔이다. 스텔스 스캔의 일종으로 로그를 남기지 않... 는다고 생각할 수 있지만 그러다가 잡힌 사람이 있다.
  • -sU
    UDP 방식을 이용한 스캔이다.
  • -p
    특정 포트만을 지정하여 스캔할 수 있도록 도와주는 인수다. 가령 -p 22는 SSH 포트만을 스캔한다.
  • -sV
    그 호스트의 포트를 통해 어떤 버전의 어떤 프로그램이 돌아가고 있는지 상세히 알려준다. 앞서 말한 운영체제도 이를 통해 알 수 있다.
  • -O
    단순히 운영체제만을 알 수 있게 해주는 스캔이다.
  • -f
    어떤 경우에는 방화벽이 스캔 패킷을 차단할 수도 있다. 그를 막기 위해 패킷을 단편화하여 보내는 인수이다.
  • -S
    스캔에 가짜 아이피를 사용할 필요가 있다면 사용하는 인수이다.
  • -A
    정보 수집계의 종합선물 세트 sV보다 더 상세하게 많은 것을 알려준다. 적극적(aggressive) 혹은 고급(Advanced) 모드를 뜻한다고 생각하면 이해하기 쉬울 것이다.

3. 기타

앞서도 실컷 말했지만, 단순한 스캔도 '공격'이다. 가령 아무 생각 없이 날린 패킷이 서비스 장애를 불러일으킬 수도 있다. 하지만 반대로 말하면 서비스 서버를 아무 생각 없이 운영/관리하고 있었다는 말이다. Nmap으로 장애가 발생할 정도면 그 서비스는 평소 관리가 개판이라는 뜻이고, 정상이라면 Nmap 포트 스캔으로 장애가 발생하지 않아야 한다. 가끔씩 서비스 관리자(서버, 네트워크, 어플리케이션 포함)가 포트 스캔으로 장애가 났다고 자기 책임이 아니라는 식으로 말하곤 하는데. 사실 어찌보면 부끄러운 줄 알아야 하는 짓이다. 그리고 정보통신망법에 명확히 위배되는 행위이므로, 사전 허락을 득했거나 가령 교수님 서버라든지, 자신의 서버에서만 하도록 하자. 127.0.0.1을 공격하면 자기 자신을 공격하는 것이 된다.

파일:external/nmap.org/trinity-nmapscreen-hd-crop-1200x728.jpg
컴퓨터가 나오는 영화에서도 단골로 출현하기도 한다. 그래서 nmap의 공식 홈페이지에도 영화에서 나오는 장면을 모아놓은 페이지가 있다. 사진의 영화는 매트릭스 2 리로디드이다.

자체 방화벽이 있는 백신 프로그램은 nmap의 스캔을 막는 기능이 있다. 대표적으로 AhnLab V3 365이다. 인터넷상에서도 랜덤으로 불법적인 스캔이 발생하고 있어서 V3 Lite를 사용하다가 V3 365으로 갈아타면 간혹 네트워크 차단 팝업 창이 나온다.(Port Scan이거나 Null Scan이거나...)

GUI 버전인 Zenmap도 있다. 정말 편하다.

4. 외부 링크


[1] 보통 네트워크에 접속되면 게이트웨이에 MAC주소나 기기 이름, OS 종류 등 접속된 기기를 특정할 수 있는 민감한 정보들이 보고되고 기록된다. 데스크탑 등 개인 집에서만 쓰는 기기야 상관없고, 오히려 기기 구분이 쉬워지지만 스마트폰 등 모바일 기기들은 여기저기 접속되며 기록들을 남기면 당연히 좋을 리가 없기에 기기 정보 보고를 하지 않고, 각 네트워크마다 가짜 MAC주소와 IP정보를 보고하여 추적을 막는다.[2] 이 신호로 열린 포트가 있는지 알 수 있다.