Thief of Wealth
article thumbnail
Published 2019. 5. 3. 23:34
Nmap 사용하기 개발/네트워크보안

네트워크 보안에서는

다른 host로의 접근하기 위한 방법으로써 네트워크 취약점을 분석해야합니다.

이때 사용하는것이 nmap 즉 network map이라고 할 수 있겠습니다.


사용하는 목적은 host의 alive여부, host의 port의 open여부를 검사하는것이 주된 목적이라고 할 수 있습니다.


칼리리눅스를 써본사람이라면 nmap을 사용해봤을 수 있겠지만, 

이번엔 OS X 환경에서 nmap을 사용해보겠습니다. 


1. 먼저 자신의 OS환경에 맞게 nmap을 설치해줍니다.


https://nmap.org/download.html


2. 설치를 하면 됩니다. 이때 Zenmap을 설치하면 nmap을 툴처럼 GUI로 확인할 수 있습니다.


3. 명령어들을 정리해보겠습니다.


-sT

일반적인 TCP 포트스캐닝.

-sS

이른바 'half-open' 스캔으로 추적이 어렵다.

-sP

ping 을 이용한 일반적인 스캔.

-sU

-sF

-sN

-sX

UDP 포트 스캐닝.

FIN scan

NULL scan

Xmas scan

-PO

대상 호스트에 대한 ping 응답을 요청하지 않음 .

log 기록과 filtering 을 피할 수 있다.

-PT

일반적이 ICMP ping이 아닌 ACK 패킷으로 ping 을 보내고

RST 패킷으로 응답을 받는다.

-PI

일반적인 ICMP ping 으로 방화벽이나 필터링에 의해 걸러진다.

-PB

ping 을 할 때 ICMP ping 과 TCP ping을 동시에 이용한다.

-PS

ping 을 할 때 ACK 패킷대신 SYN 패킷을 보내 스캔.

-O

대상 호스트의 OS 판별.

-p

대상 호스트의 특정 포트를 스캔하거나, 스캔할 포트의 범위를 지정.

ex) -p 1-1024

-D

Decoy 기능으로 대상 호스트에게 스캔을 실행한 호스트의 주소를 속인다.

-F

/etc/services 파일 내에 기술된 포트만 스캔.

-I

TCP 프로세서의 identd 정보를 가져온다.

-n

IP 주소를 DNS 호스트명으로 바꾸지 않는다. 속도가 빠르다.

-R

IP 주소를 DNS 호스트명으로 바꿔서 스캔. 속도가 느리다.

-o

스캔 결과를 택스트 파일로 저장.

-i

스캔 대상 호스트의 정보를 지정한 파일에서 읽어서 스캔.

-h

도움말 보기



출처: https://windowbox.tistory.com/144 [Feel so Gooday.]





4. 명령어들을 알았으니 사용법은 간단합니다.

그저 nmap -명령어1 -명령어2 www.naver.com 같이

nmap과 target URL 사이에 사용하고 싶은 기능의 명령어만 입력해주면 됩니다.


nmap -[instruction] [targetURL]


그럼 실제로 예를 들어서 설명해보도록 하겠습니다.


5. 실습

대한민국에서 가장 유명한 사이트인  네이버(https://www.naver.com/)로 실험을 해보도록 하겠습니다.


- host alive 체크

-sP는 ping을 이용해서 대상의 alive여부만 판단하기 때문에 -sP로 몇가지 테스트를 해보겠습니다.

nmap -sP www.naver.com  을 치면,

 Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds    라는 메세지가 출력될 것입니다.

 해당 target으로 ping을 체크해봤더니 1개의 IP address가 나왔다는 것입니다.


그럼 만약 주소를 http://www.n2v3r.com/를 한다면 어떻게 될까요?

위 주소는 실제로 없는 주소입니다.   

 nmap -sP http://www.n2v3r.com/ 를 치면 

WARNING: No targets were specified, so 0 hosts scanned.

Nmap done: 0 IP addresses (0 hosts up) scanned in 0.06 seconds

라는 메세지가 출력될 것입니다.  alive한 IP를 못찾았다는 것이지요.



- 특정 host port 체크 

위 명령어에서 1가지 명령어만 추가해서 port를 스캔해보도록 하겠습니다.

nmap -sP -PT80 www.naver.com

를 입력하면, 위 에서 host alive체크와 동시에 port 80가 열려있는지도 체크할 수 있습니다.

위 명령어를 실행하면

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

1개의 IP주소, 1 host 즉, ip도 유효하고, port 80으로 open되어 있기까지 하다고 할 수 있겠습니다.


위랑 결과값이 똑같은데, 뭐냐고요?

그럼 위랑 결과값이 다르게 해보죠. 앞서 테스트한 포트 80은 대부분의 시스템이 open하고 있습니다. 인터넷연결과 관련된 port거든요.

그럼 81로 체크해볼까요?

nmap -sP -PT81 www.naver.com 를 하면

 Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn

 Nmap done: 1 IP address (0 hosts up) scanned in 2.04 seconds

위와 같은 메세지가 뜹니다.

host  가 다운된것 같다네요.

자세히보면, 1 IP에 0 host인 것을 알 수 있습니다. 즉, IP주소는 유효한데 포트 81로 열린 host가 없다고 해석할 수 있겠지요.


- 모든 host port 체크


이번엔 해당 IP의 모든 port를 체크해 보도록 하겠습니다.

-sT를 사용할 건데요. 일반적인 TCP open scan 입니다.

해당 IP의 open된 모든 port를 스캔하죠. 물론 TCP방법으로요.


nmap -sT www.naver.com

위명령어를 수행하면

Nmap scan report for www.naver.com (125.209.222.141)

Host is up (0.052s latency).

Other addresses for www.naver.com (not scanned): (생략)

Not shown: 978 filtered ports

PORT      STATE  SERVICE

80/tcp    open   http

443/tcp   open   https

8080/tcp  closed http-proxy

10000/tcp closed snet-sensor-mgmt

10002/tcp closed documentum

10003/tcp closed documentum_s

10004/tcp closed emcrmirccd

10009/tcp closed swdtp-sv

10010/tcp closed rxapi

10012/tcp closed unknown

10024/tcp closed unknown

10082/tcp closed amandaidx

10243/tcp closed unknown

10566/tcp closed unknown

10617/tcp closed unknown

10621/tcp closed unknown

10626/tcp closed unknown

10628/tcp closed unknown

10629/tcp closed unknown

11111/tcp closed vce

11967/tcp closed sysinfo-sp

12000/tcp closed cce4x


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


와우 56초나 걸렸네요. port의 개수도 엄청많구요.

그 open된 포트가 80, 443이네요. 둘다 인터넷관련 포트지만 443은 좀더 보안성이 뛰어난 ssl용입니다.


과연 열려있는 포트가 저거 2개일까요?

다시 한번확인해봅시다.


위의 closed port가 너무 많으니 open된 port만 보도록합시다.

nmap -sT -open www.naver.com 를 하면 open된 port만 볼 수 있습니다.

Not shown: 990 filtered ports, 8 closed ports

Some closed ports may be reported as filtered due to --defeat-rst-ratelimit

PORT    STATE SERVICE

80/tcp  open  http

443/tcp open  https


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


오 이런, 진짜 2개밖에 없네요.

그리고 23초가 걸렸어요. 2배 정도 줄었으나, 여전히 긴 숫자죠.

그 이유는 포트를 1000씩이나 스캔하기 때문입니다.


속도를 빠르게하려면 약 100개정도만 스캔하도록 설정하면 됩니다.

nmap -sT -open -F www.naver.com 처럼 fast옵션을 주면됩니다.

PORT    STATE SERVICE

80/tcp  open  http

443/tcp open  https


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


스캔량이 10배 줄었으니 거의 10배가까이 빨라졌네요!





- stealth mode 로 스캔하기


이전까지와 같은 스캔을 하면 서버의 log기록에 남고, 서버관리자가 스캔기록을 보고, 

우리 IP를 차단할 수도 있습니다.

그래서 해커들은 log기록에 남지 않는, 방법을 만들어내었습니다.

그것이 바로 stealth scan이라고 불리는 것입니다.

거기에 더해서

log기록도 남기지 않을 뿐더러, 공격대상도 속이고, 자신의 위치까지 안들킬 수 있죠.

대표적으로 

TCP Half Open Scan / FIN scan / Xmas scan / NULL scan 등이 있습니다.


1) TCP Half Open Scan

이전 명령어 옵션을 좀써서 하겠습니다.

nmap -sS -open -F www.naver.com

을 해주면 

PORT    STATE SERVICE

80/tcp  open  http

443/tcp open  https


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

라는 메세지가 뜹니다.

이전 방법과 출력값이 같지만, 서버에는 log가 남지 않았습니다!


다른 포스팅에서 설명하겠지만, 이 방식은 TCP의 연결초기단계인 3way handshaking에서 마지막 세션을 맺지않습니다.


예를 들면 아래는 기본적인 TCP의 3-way handshaking 입니다.


그리고 아래는 half open scan방식입니다.

port가 close되어 있을때는 같지만

open되어있을때는 응답이 있으면 세션을 끊어버립니다. 어장관리같네요.



2) FIN scan / NULL scan / Xmas scan


FIN/NULL/Xmas scan의 작동원리는 다음과 같습니다.

간단히 설명하자면, 정상적이지 않은 TCP패킷을 보내서 응답을 체크하는 것입니다.

port 가 open 되어있다면 실제 host는 그 패킷을 무시할것이므로, 응답이 없을것이고,


close되어 있다면, 연결이 애초애 성립될 수 없으므로 세션을 끝는 메세지가 날아오는 방식을 이용한 것입니다.


차례대로 보죠

- FIN scan은 -sF 옵션을 사용합니다.

nmap -sF -open -F www.naver.com

All 100 scanned ports on www.naver.com (125.209.222.141) are open|filtered

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

응답이 일정시간동안 날아오지 않아서 port 가 open되어있다는 것을 알 수 있겠군요!


만약 없는 주소로 스캔한다면 3초보다 빨리 RST메세지가 날아와서 결과값이 뜨겠죠?


-NULL scan은 -sN 옵션을 사용합니다.

nmap -sN -open -F www.naver.com

All 100 scanned ports on www.naver.com (125.209.222.142) are open|filtered

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


-Xmas scan은 -sX 옵션을 사용합니다.

nmap -sX -open -F www.naver.com

All 100 scanned ports on www.naver.com (125.209.222.142) are open|filtered

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






- 해당 네트워크의 모든 IP체크하기.

만약 어떤 host의 ip가 192.168.10.44 라면, 

nmap -sP 192.168.10.0/24

또는 

nmap -sP 192.168.10.*

를 함으로써 192.168.10.0 ~ 192.168.10.255까지 할당된 IP들을 체크할 수 있다.

보통 같은 subnet에서는 C또는 D클래스만 다르기 때문에, 2개의 자릿수만 체크하면된다.

D클래스만 체크한다면, 255개만 체크할 것이고,

C,D클래스를 체크한다면 65535개 정도 체크할 것이다.


C,D 클래스를 사용하는지는 서브넷 마스크를 확인하면 알 수 있다.

subnet mask가 255.255.255.0 이라면, D클래스만 사용하므로 0~255까지 256개의 IP가 1개의 서브넷에 할당되어 있을 것이다.


- UDP 체크

nmap -sU xxx.xxx.xxx.xxx



'개발 > 네트워크보안' 카테고리의 다른 글

[네트워크 해킹과 보안] 1. 네트워크와 보안  (0) 2019.06.23
False positive, False negative 정리  (0) 2019.06.13
Firewall과 IDS  (0) 2019.04.19
RSA 복호화 증명  (0) 2019.04.02
profile on loading

Loading...