NMAP(Network MAPper)이란?

  • 시스템에 열려있는 TCP나 UDP 포트를 검색하는 프로그램

  • 시스템 관리자가 네트워크를 통해 서비스를 구동하는 서버에 자가 테스트를 시행하여 외부와 연결되는 포트가 어떤 것이 열려있는지, 각 포트는 어떤 프로그램이 사용하는지 확인하는 프로그램

  • 원격지 또는 로컬 호스트의 열려진 포트를 검색하는 프로그램



NMAP의 특징

  • SYS scan, FIN scan, Xmas scan, Null scan 등 다양한 스캔 방법 제공

  • 방대한 네트워크 스캐닝 시 살아있는 호스트 목록을 만들어 모두 스캔할 수 있도록 지원

  • TCP/IP Stack fingerprinting 기법을 이용해 시스템의 운영체제를 검색

  • TCP Sequence Number 추측 기능을 지원해 IP Spoofing 공격 가능성을 평가

  • ident 정보를 얻는 기능 지원

  • 스캐닝 결과를 로그 파일로 기록

  • GUI 환경 지원

  • GPL 라이선스로 자유롭게 사용 가능



NMAP 프로그램 다운 및 설치

  • 다운로드

    • NMAP 프로그램은 http://www.insecure.org/nmap에서 다운로드 받을 수 있음

    • 소스 프로그램과 RPM 패키지 프로그램 두 가지 모두 제공하고 있으니 원하는 형식의 프로그램을 다운받은 후 설치

  • yum으로 설치

$ yum install -y nmap



NMAP 사용 형식

  • nmap [스캔타입] [옵션] <스캔대상 서버[도메인 혹은 IP 주소]>

  • 스캔 타입

    • -sT : connect() 함수를 이용한 Open 스캔

    • -sS : 세션을 성립시키지 않는 SYN 스캔

    • -sF : FIN 패킷을 이용한 스캔

    • -sN : NULL 패킷을 이용한 스캔

    • -sX : XMAS 패킷을 이용한 스캔

    • -sP : ping을 이용한 호스트 활성화 여부 확인

    • -sU : UDP 포트 스캔

    • -sR : RPC 포트 스캔

    • -sA : ACK 패킷에 대한 TTL 값의 분석

    • -sW : ACK 패킷에 대한 윈도우 크기 분석

    • -b : FTP 바운스 스캔

  • 옵션

    • -f : 스캔할 때 방화벽을 통과할 수 있도록 패킷을 조각냄

    • -v : 스캔의 세부사항 표시

    • -P0 : 스캔 전 ping을 하지 않음(ICMP Echo Request를 허용하지 않는 호스트에 대한 스캔을 할 때 설정)

    • -PT : Ping의 대용으로 ICMP 패킷을 이용하지 않고, TCP 패킷을 이용하여 해당 시스템이 작동 중인지 검사

    • -PS : TCP의 SYN 패킷만을 보내 시스템의 활성화 여부 검사

    • -PI : 시스템의 활성화 여부를 ICMP로 검사

    • -PB : TCP와 ICMP 둘 다 사용해서 호스트들의 활성화 여부 검사

    • -O : 시스템의 운영체제 추정

    • -I : Identification 프로토콜(RFC 1413)을 사용해 열려있는 프로세스가 어떤 사용자에 의한 것인지 검사

    • -n : DNS 룩업(lookup)을 하지 않음

    • -R : DNS 룩업(lookup)을 함

    • -P : 특정 포트 스캔 (ex> nmap –sF –P 21,23 172.16.0.3)

  • 시간 차 옵션

    • -T 0 : Paranoid (ex> nmap –sS –T 0 172.16.0.4)

    • -T 1 : Sneaky

    • -T 2 : Polite

    • -T 3 : Normal

    • -T 4 : Aggressive

    • -T 5 : insane

  • 예제

    • 열린 포트 확인 : nmap localhost
$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2019-10-16 17:34 KST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000070s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
25/tcp open  smtp

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds



방화벽에 따른 예시 - nmap –p 80 localhost로 포트에 접근해보기

  • 방화벽 정책이 ACCEPT이고, 80 port 사용중일 때(apache start)

    • STATE : open

    image

  • 방화벽 정책이 APPCET이고, 80 port 미사용일 때(apache stop)

    • STATE : closed

    image

  • 방화벽 정책이 REJECT일 때,

    • STATE : filtered

    image

  • 방화벽 정책이 DROP일 때,

    • STATE : filtered

    • 추가 응답 메시지 없음

    image