• 검색 결과가 없습니다.

Ⅱ. Nmap

2. Nmap 설치

11

Ⅱ. Nmap 스캐너

1 Nmap 소개

Nmap은 기본적으로 포트 스캔 도구로 널리 알려져 있으며, 아주 유용한 시스템보안 도구로써 기본적인 시스템 취약점을 알려준다. 서버를 운영할 때 관리자 스스로도 해당 서버의 개방된 포트가 어떤 것인지 또 어떤 서버 비스가 제공 중인지 파악하기 힘든 경우가 발생하기 마련이며 이러한 경우 Nmap을 이용하면 열려있는 포트와 해당 서비스를 일목요연하게 파악함으 로써 관리자에게 도움을 줄 수 있다.

이를 공격자 입장에서 생각하면 대상 서버에서 운영 중인 서비스를 파악 함으로써 다양한 침투경로를 파악하는 데 도움을 주는 강격한 해킹도구로 사용할 수 있다는 의미도 된다.

12

홈페이지 취약점 점검 시 점검자는 기본적으로 Nmap을 실행하여 대상 서버에서 운영 중인 포트와 서비스를 파악한다. 이는 공격자의 입장에서 점 검을 수행하는 것으로 대상 서버에 침투할 수 있는 모든 경로를 확보하기 위한 사전 준비 작업이라고 할 수 있다.

기관의 전산관리자는 Nmap을 이용하여 주기적으로 서버 군에 대한 포 트 스캔을 수행함으로써 비정상적으로 개방된 포트 탐지 등을 통해서 침해 여부를 일부나마 인지하는 데 도움이 되기도 한다.

2. Nmap

13

2 Nmap 설치

Nmap은 Windows, Linux, UNIX, Mac OSX 등 다양한 OS에서 사용할 수 있도록 소스코드와 실행파일이 배포되고 있다. 여기에서는 가장 많이 사 용되공 있는 Windows와 Linux용 실행파일 설치 방법을 소개한다.

<Nmap 다운로드 홈페이지>

Windows용 Nmap은 Windows NT, 2000, XP, Vista, Windows 7, Windows Server 2003/2008 등에서 실행된다. Windows용 Nmap은 텍 스트 기반의 Nmap과 GUI 기반의 Zenmap이 배포되고 있는데 여기에서는 텍스트 기반의 Nmap의 설치 및 활용에 대해서 소개한다.

14

Nmap은 다운로드 홈페이지에서 압축파일이 다운로드 가능하며 압축파 일 이름은“namp-<version>.zip”으로 되어있다. 2014년 12월 현재 최 신 버전은 다음과 같이 다운로드 된다.

‣ http://nmap.org/dist/nmap-6.47-win32.zip

다운로드 한 Nmap 압축파일을 설치하고자 하는 위치에 압축 해제한다.

압축을 해제하면 namp-<version> 이름의 디렉토리가 생성된다.

<Nmap 압출파일 내용>

Windows에서 Nmap을 실행하기 위해서는“WinPcap”패캣 캡쳐 라이 브러리가 설치되어 있어야 한다. 설치되어 있지 않은 상황에서 Nmap을 실 행시키면 다음과 같은 오류가 발생한다.

2. Nmap

15

C:\nmap-6.47>nmap -v -A 127.0.0.1

Starting Nmap 6.47 ( http://nmap.org)at2014-12-16 15:39대한민국 표준시

WARNING: Could not import all necessary WinPcap functions. You may need to upgr ade to version 3.1 or higher from http://www.winpcap.org. Resortingtoconnect(

) mode -- Nmap may not function completely NSE: Loaded 118 scripts for scanning.

NSE: Script Pre-scanning.

Initiating Ping Scan at 15:39

Only ethernet devices can be used for raw scans on Windows. Use the --unprivileged option for this scan.

16

Linux용 Nmap은 RPM 패키지로 다운로드 홈페이지(http://nmap.org/

download.html)에서 배포되고 있다. 설치하고자 하는 버전에 따라서 다운 로드 위치를 지정하여 다음과 같이 rpm으로 설치한다.

# rpm -vhU http://nmap.org/dist/nmap-6.47-1.i386.rpm Retrieving http://nmap.org/dist/nmap-6.47-1.i386.rpm

Preparing... ########################################### [100%]

1:nmap ########################################### [100%]

각 OS별로 배포되고 있는 Nmap 설치 방법을 자세히 알고 싶으면 Nmap 설치 매뉴얼“http://nmap.org/book/install.html”을 참고한다.

2. Nmap

17 3 Nmap 점검 및 결과

일반적으로 웹 취약점 점검에서는 단일 서버를 대상으로 하기 때문에 대상 서버에 대해서 다음과 같이 간단하게 포트스캔을 수행한다.

# nmap -A -v <서버이름> -o <서버이름>-nmap.txt 스캔옵션

-A : OS 탐지, 서비스 버전 탐지, traceroute 등 상세한 스캔 옵션 -v : 스캔 중 상세한 정보를 화면에 출력하는 옵션

취약점 점검에서는 nmap의 인자로 -A 옵션만을 주로 사용하며, -o 옵션을 통하여 그 결과를 파일로 저장할 수 있다. 아래는 그 예이다.

18

# Nmap 6.47 scan initiated Sun Dec 21 16:27:04 2014 as: nmap -A -v -o www.test.re.kr-nmap.txt www.test.re.kr

Nmap scan report for www.test.re.kr (192.168.58.167) Host is up (0.00040s latency).

Not shown: 991 closed ports

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu4 (Ubuntu Linux; protocol 2.0)

| ssh-hostkey:

| 1024 ea:83:1e:45:5a:a6:8c:43:1c:3c:e3:18:dd:fc:88:a5 (DSA)

|_ 2048 3a:94:d8:3f:e0:a2:7a:b8:c3:94:d7:5e:00:55:0c:a7 (RSA)

80/tcp open http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3

PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/...)

|_http-favicon: Unknown favicon MD5: 1F8C0B08FB6B556A6587517A8D5F290B

| http-methods: GET HEAD POST OPTIONS TRACE

| Potentially risky methods: TRACE

|_See http://nmap.org/nsedoc/scripts/http-methods.html

|_http-title: owaspbwa OWASP Broken Web Applications

139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 143/tcp open imap Courier Imapd (released 2008)

|_imap-capabilities: SORT NAMESPACE CAPABILITY THREAD=REFERENCES THREAD=ORDEREDSUBJECT ACL CHILDREN OK IDLE completed ACL2=UNIONA0001 UIDPLUS IMAP4rev1 QUOTA

443/tcp open ssl/http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3

PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/...)

|_http-favicon: Unknown favicon MD5: 1F8C0B08FB6B556A6587517A8D5F290B

| http-methods: GET HEAD POST OPTIONS TRACE

| Potentially risky methods: TRACE

|_See http://nmap.org/nsedoc/scripts/http-methods.html

위와 같이 www.test.re.kr이라는 가상 서버를 대상으로 점검한 결과 는 아래와 같다(결과파일: www.test.re.kr-nmap.txt). 주의사항: 이 서 버 명은 실제 운영 서버이므로 시험 대상으로 사용하지 않아야 한다.

2. Nmap

| MD5: 0fb9 ca0b e9b7 b26f de6c 3555 6186 2399

|_SHA-1: e469 e1f2 9877 40c3 3aec ee7c f630 ca19 31be 05ae

|_ssl-date: 2014-12-20T12:22:55+00:00; -19h04m23s from local time.

445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 5001/tcp open ovm-manager Oracle VM Manager

8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1

| http-methods: GET HEAD POST PUT DELETE OPTIONS

| Potentially risky methods: PUT DELETE

|_See http://nmap.org/nsedoc/scripts/http-methods.html

|_http-title: Apache Tomcat/6.0.24 - Error report 8081/tcp open http Jetty 6.1.25

| http-methods: GET HEAD POST TRACE OPTIONS

| Potentially risky methods: TRACE

Uptime guess: 0.336 days (since Sun Dec 21 08:24:05 2014) Network Distance: 1 hop

TCP Sequence Prediction: Difficulty=193 (Good luck!) IP ID Sequence Generation: All zeros

Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Host script results:

| nbstat: NetBIOS name: OWASPBWA, NetBIOS user: <unknown>, NetBIOS MAC: <unknown>

(unknown)

20

| Account that was used for smb scripts: guest

| User-level authentication

| SMB Security: Challenge/response passwords supported

|_ Message signing disabled (dangerous, but default)

|_smbv2-enabled: Server doesn't support SMBv2 protocol TRACEROUTE

HOP RTT ADDRESS

1 0.40 ms www.test.re.kr (192.168.58.167) Read data files from: /usr/bin/../share/nmap

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

# Nmap done at Sun Dec 21 16:27:19 2014 -- 1 IP address (1 host up) scanned in 15.16 seconds

2. Nmap

21

80/tcp open http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/...)

|_http-favicon: Unknown favicon MD5: 1F8C0B08FB6B556A6587517A8D5F290B

| http-methods: GET HEAD POST OPTIONS TRACE

| Potentially risky methods: TRACE

443/tcp open ssl/http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3

PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/...)

|_http-favicon: Unknown favicon MD5: 1F8C0B08FB6B556A6587517A8D5F290B

| http-methods: GET HEAD POST OPTIONS TRACE

| Potentially risky methods: TRACE

| MD5: 0fb9 ca0b e9b7 b26f de6c 3555 6186 2399

|_SHA-1: e469 e1f2 9877 40c3 3aec ee7c f630 ca19 31be 05ae

|_ssl-date: 2014-12-20T12:22:55+00:00; -19h04m23s from local time.

22

443 포트에서는 80 포트에서와 동일한 구성을 보여주며 http-title 또 한 동일하다. 이로부터 443 포트의 서비스는 80 포트의 SSL 버전임을 알 수 있다. 웹 취약점 점검에서 80 포트와 443 포트에서는 거의 유사한 취 약점들이 발견될 것임을 예측할 수 있다.

8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1

| http-methods: GET HEAD POST PUT DELETE OPTIONS

| Potentially risky methods: PUT DELETE

| http-methods: GET HEAD POST TRACE OPTIONS

| Potentially risky methods: TRACE

2. Nmap

23

점검 대상인 www.test.re.kr 서버에 대한 웹 취약점 점검을 위해서 는 80 포트의 서비스만을 대상으로 해서는 안되며, 443, 8080, 8081 포트의 서비스에 대해서도 추가적인 취약점 점검을 수행하여야 보다 안 전한 진단 결과를 얻을 수 있다.

3

Nikto2

(웹 서버 스캐너)

3. Nikto2

27

Ⅲ. Nikto2

1 Nikto2 소개

Nikto2는 perl을 기반으로 개발된 웹 서버 스캔 프로그램이다. 2012년 이후로 개발이 중단된 상태이지만 현재까지 개발되고 운용중인 대다수의 기본적인 취약점을 점검하는 데 있어서 매우 유용한 도구이다.

Nikto2는 GPL로 배포되는 공개용 웹 서버 스캐너로 웹 서버를 대상으 로 6,700개 이상의 취약한 파일/프로그램과 270개의 서버에 대한 취약한 설정 등을 탐지한다. 더불어 취약한 서버 설정, HTTP 옵션 등에 대한 스

28

캔도 수행한다. Nikto2는 웹 어플리케이션 취약점 보다는 웹 서버 자체 및 그 운용 환경에서의 문제점을 도출하는 데 있어서 탁월한 성능을 보여준다.

이러한 점을 이용하면 Nikto2를 이용하여 웹 서버를 보호하는 보안장비가 제대로 작동하는 지의 여부도 검증할 수 있다.

3. Nikto2

29

# tar zxvf nikto-2.1.4.tar.gz

# cd nikto-2.1.4

# perl nikto.pl

2 Nikto2 설치

Nikto2는 아래 그림에서 볼 수 있는 Nikto2 홈페이지에서 배포되고 있 으며 다음과 같이 두 가지 압축 형태로 직접 다운로드 가능하다.

‣ https://cirt.net/nikto/nikto-2.1.5.tar.bz2 ‣ https://cirt.net/nikto/nikto-2.1.5.tar.gz

<Nikto 홈페이지>

Nikto2는 다운로드한 압축파일을 해제하면 바로 사용이 가능하다. 따라 서 Perl이 기본적으로 설치되어 있는 Linux 환경에서는 다음과 같이 압축 해제후 perl을 이용하여 실행한다.

30

Windows 환경에서는 Perl이 설치되어 있지 않기 때문에 Perl을 우선 설치하여야 한다.

Windows 환경에서 사용 가능한 Perl은 Activestate에서 배포하는 Activestate Perl과 오픈소스 프로젝트로 진행되고 있는 Strawberry Perl 이 대표적이다. 여기에서는 오픈소스로 배포되고 있는 Strawberry Perl에 대한 설치 방법을 소개한다.

<Strawberry Perl 홈페이지>

Strawberry Perl은 http://strawberryperl.com/에서 Perl 인스톨러를 다운로드해서 설치할 수 있다.

2014년 12월 현재 최신 버전인 strawberry-perl-5.20.msi 파일을 다 운로드하여 설치하면 아래 그림과 같이 설치가 시작된다.

3. Nikto2

31

Strawberry Per은 기본적으로는 아래 그림과 같이“C:\Strawberry"

디렉토리에 설치된다.

설치 시 기본적으로 PATH 환경변수에“C:\strawberry\c\bin;C:\straw berry\perl\site\bin;C:\strawberry\perl\bin”값이 추가되어 어느 위치에서

32

든 실행 가능하도록 설치된다. 설치가 완료된 후 Strawberry Perl이 정상 적으로 설치되어 있는지 확인한다.

C:\>perl -v

This is perl 5, version 20, subversion 1 (v5.20.1) built for MSWin32-x64-multi-t hread

Copyright 1987-2014, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.

C:\>^Z

다운로드한 Nikto2 압축파일을 사용할 디렉토리에 위치하여 해제한다.

3. Nikto2

33

설치된 Nikto2는 nikto.pl 파일을 Perl을 이용하여 실행시키거나 직접 실행시킬 수 있다.

C:\nikto-2.1.5>perl nikto.pl -host localhost -port 80

C:\nikto-2.1.5>nikto.pl -host localhost -port 80

34

3 Nikto2 점검 및 결과

점검 대상 서버를 대상으로 nikto2를 실행하는 경우에는 서버 이름과 포트를 지정하여 웹 서버 설정을 스캔한다.

# nikto -host <서버이름> -port <포트> -o <서버이름>-nikto-<포트>.txt 스캔옵션

-host : 스캔대상 서비스의 서버이름 -port : 스캔대상 포트. 80, 443, 8080 등

-o : 점검결과를 저장할 파일 이름. 확장자를 html로 지정 가능.

아래는 www.test.re.kr 서버의 80 포트를 대상으로 한 점검 예이다.

3. Nikto2

35

- Nikto v2.1.6/2.1.5

+ Target Host: www.test.re.kr + Target Port: 80

+ GET Server leaks inodes via ETags, header found with file /, inode: 286483, size:

26727, mtime: Fri Sep 27 12:41:25 2013

+ GET The anti-clickjacking X-Frame-Options header is not present.

+ OSVDB-3268: GET /cgi-bin/: Directory indexing found.

+ GET IP address found in the 'location' header. The IP is "127.0.1.1".

+ OSVDB-630: GET IIS may reveal its internal or real IP in the Location header via a request to the /images directory. The value is "http://127.0.1.1/images/".

+ GET Uncommon header 'tcn' found, with contents: list

+ GET Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. See http://www.wisec.it/sectou.php?id=4698ebdc59d15.

The following alternatives for 'index' were found: index.css, index.html

+ HEAD Apache/2.2.14 appears to be outdated (current is at least Apache/2.4.7). Apache 2.0.65 (final release) and 2.2.26 are also current.

+ HEAD mod_ssl/2.2.14 appears to be outdated (current is at least 2.8.31) (may depend on server version)

+ HEAD mod_perl/2.0.4 appears to be outdated (current is at least 2.0.7) + HEAD mod_mono/2.4.3 appears to be outdated (current is at least 2.8)

+ HEAD OpenSSL/0.9.8k appears to be outdated (current is at least 1.0.1e). OpenSSL 0.9.8r is also current.

+ HEAD Python/2.6.5 appears to be outdated (current is at least 2.7.5)

+ HEAD PHP/5.3.2-1ubuntu4.5 appears to be outdated (current is at least 5.4.26) + HEAD Perl/v5.10.1 appears to be outdated (current is at least v5.14.2)

+ HEAD proxy_html/3.0.1 appears to be outdated (current is at least 3.1.2)

+ HEAD proxy_html/3.0.1 appears to be outdated (current is at least 3.1.2)

관련 문서