살구월드

잠깐, 리눅스, C 언어, Java, Python 등
각종 예제 검색하기

 

Nmap 설치 및 사용법 포스팅

2020/06/18 - [Security] - [정보보안] Linux Nmap 설치 및 사용법 - 2(port scan)

 

정보보안 포스팅 관련 링크 목록

2020/06/18 - [Security] - [정보보안] Linux Nmap 설치 및 사용법 - 2(port scan)

2020/06/17 - [Security] - [정보보안] Linux Nmap 설치 및 사용법 - 1(port scan)

2020/04/29 - [Security] - [정보보안] PMI(Privilege Management Infrastructure)

2020/04/28 - [Security] - [정보보안] SAML(Security Assertion Markup Language)

2019/08/05 - [Security] - [정보보안] 랜섬웨어(Ransomware)

2019/08/03 - [Security] - [정보보안] 메모리 기반 실행 방지 기술 (DEP, NX)

 

 

 

 

Nmap이란

Nmap은 컴퓨터의 보안 취약점을 확인할 수 있도록 도와주는 유틸리티입니다.

현재 사용중인 PC의 운영체제 정보, 열려있는 포트 목록, 사용중인 프로그램들의 버전 등의 고유한 정보를 스캔 하여 사용자에게 보여줍니다. 여기서 정보를 확인한 사용자는 자신의 PC의 보안 취약점을 확인하기 위해 Nmap을 사용할 수도있으며 또한 다른 사용자의 PC를 공격하기 위한 목적으로 고유한 정보를 확인할 수도 있습니다.

만약 다른 사용자의 PC에서 보안에 취약한 Python 2.x 버전을 사용하고 있다고 가정하여 봅시다.

이때 공격자는 Nmap을 사용하여 다른 사용자의 PC에서 Python 2.x 버전을 사용하고 있다는 것을 확인하고 이 취약점을 중점으로 공격을 시도하여 중요한 개인정보 또는 비즈니스 로직이 공격당할 수도 있습니다.

따라서 Nmap 유틸리티 프로그램은 양날의 도끼처럼 외부로부터의 공격에서 내 PC를 보호하기 위한 예방책으로도 사용될 수 있으며 반대로 특정 PC를 공격하기 위해 사용될 수도 있습니다.

Nmap을 활용한 여러 검사 과정은 매년 정보보안기사에도 출시되는 문제입니다.

 

 

Nmap 대표 이미지

 

시험환경

우선 Nmap을 테스트 해보기에 앞서 설치를 먼저 진행하도록 하겠습니다.

Nmap은 윈도우, 리눅스 등의 플랫폼을 대상으로 제공되고 있습니다. 이 포스팅에서는 아래와 같은 시험환경에서 Nmap 소스코드를 빌드하고 설치하여 테스트를 진행하도록 하겠습니다.

반드시 16.04일 필요는 없지만 이하 버전에서 비정상 작동할 수도 있으니 각자의 리눅스 환경을 확인해보시길 바랍니다.

 

Linux Ubuntu 16.04 LTS x64

Linux aav-cn-vmm 4.15.0-106-generic #107~16.04.1 Ubuntu SMP Thu Jun 4 15:40:05 U TC 2020 x86_64 x86_64 x86_64 GNU/Linux

 

소스코드 다운로드

아래의 명령을 실행하여 Nmap 디렉토리를 생성하고 그 경로에 nmap 6.47 버전의 소스코드를 다운로드 합니다.

이후 소스코드를 빌드하고 리눅스 환경에 Nmap 바이너리를 설치합니다.

중간 "./configure" 명령은 현재 PC의 환경에 맞게 nmap 을 빌드할 수 있도록 환경설정 파일을 생성합니다. 이후 이 "make" 명령을 수행하면 이 환경설정 파일을 로드하여 사용합니다.

마지막으로 "make install" 명령을 수행할때에는 꼭 관리자(root) 권한으로 수행합니다.

따라서 빌드 환경에 바뀌면 꼭 환경설정 파일을 다시 생성해주어야 합니다.

 

$ mkdir ~/nmap
$ cd ~/nmap
$ wget http://nmap.org/dist/nmap-6.47.tgz
$ tar zxvf nmap-6.47.tgz
$ cd nmap-6.47
$ ./configure
$ make
$ sudo make install

 

아래는 환경설정 및 빌드 과정에서 나타나는 화면입니다.

 

./configure 명령을 통해 환경설정 파일이 정상적으로 생성된 모습
make 명령을 통해 소스코드가 정상적으로 빌드된 모습
make install 명령을 수행하여 정상적으로 설치된 모습

 

 

 

Nmap을 활용한 예제

Nmap 설치가 완료되었다면 보안성 스캔의 몇가지 예제를 실행해보겠습니다.

[Ping 정보확인]

[TCP 포트 확인]

[UDP 포트 확인]

[OS 정보 확인]

Nmap 옵션으로는 -sP 가 있습니다.

이 옵션은 Ping Scanning의 약자로 대상 PC에 Ping이 보내지고 응답이 수신되는지 확인하는 명령입니다.

우선, Nmap이 설치된 PC와 같은 로컬환경에 있는 아이피 주소 "172.16.0.1" 의 PC가 켜져있거나 같은 로컬 환경에 있는지 확인하기 위해서는 아래와 같은 명령을 수행합니다. 

[단일 대상에 Ping 정보 확인]

$ sudo nmap -sP 172.16.0.1

 

단일 대상에 대한 Ping 정보 조회

 

다음으로 단일 대상이 아닌 같은 넷마스크 영역의 로컬 PC에 대한 상태를 조회하기 위해서는 아래와 같은 명령을 수행합니다.

[동일 넷마스크 영역의 로컬 PC들에 대한 Ping 정보 확인]

$ sudo nmap -sP 172.16.0.1/24

 

동일 넷마스크 영역의 로컬 PC들에 대한 Ping 정보 조회

 

다음은 대상의 PC에 어떤 TCP 포트들이 열려 있는지 확인하는 명령어입니다.

-sT 옵션을 사용합니다.

T는 Transport(TCP)의 약자를 사용합니다.

 

 

[단일 대상의 현재 열려있는 TCP 포트 조회]

$ sudo nmap -sT 172.16.0.1

 

172.16.0.1 PC에 현재 열려있는 TCP 포트들이 확인되는 모습

 

[동일 넷마스크 영역의 로컬 PC들에 대한 TCP 포트 조회]

$ sudo nmap -sT 172.16.0.1/24


[단일 대상의 현재 열려있는 UDP 포트 조회]

$ sudo nmap -sU 172.16.0.1

 

다음으로는 대상의 OS 정보를 확인하는 방법입니다.

대상의 PC가 어떤 운영체제를 사용하는지와 어떤 버전인지 등의 자세한 내용을 확인할 수 있습니다. 이런 정보를 바탕으로 취약점 공격의 대상이 될 수도 있습니다.

 

[단일 대상의 OS 정보 조회]

$ sudo nmap -O 172.16.0.1

 

단일 대상의 OS 정보 조회

 

 


 결론

Nmap은 보안성 검사에도 최고의 유틸리티이지만 반대로 최고의 공격 유틸리티가 될 수도 있습니다. 실제 공격을 하는 건 아니지만 취약점을 찾아내 공격을 수행할 수 있도록 도와줍니다.

 

다음 포스팅에서는 더 자세한 Nmap 옵션에 대하여 알아보겠습니다

잠깐, 리눅스, C 언어, Java, Python 등
각종 예제 검색하기

공유하기

facebook twitter kakaoTalk kakaostory naver band