본문 바로가기

10./11. Network

[포트스캐너/NMAP] nmap은 해커를 위한 툴이 아니라 보안 전문가를 위한툴!

nmap은 해커를 위한 툴이 아니라 보안 전문가를 위한 툴!

이라고 말하고 싶지만,

모든 해킹 툴이 그렇듯이.

보안관리자가 내 네트워크 취약점을 알고 보안하겠다면 보안툴이고

해커가 남의 네트워크 취약점을 알겠다는 것만으로 해킹이고 해킹툴인거다



포트 스캐너란 ? 

검사 할 네트워크 장비나 서버에 포트 사용여부를 알수있는 툴이다.

한마디로, 서비스를 하면 그 포트가 열려있는데..

내가 서비스하는 포트 외에 백도어나 다른 트로이목마로 인하여 포트가 열려있나 확인할수있는거다.



nmap을 공부해야하는 이유는!!

- 빠른 핑(ping) 및 포트 스캐닝 기능

- 운영 체제 핑거프린팅(fingerpring) 

- 순서 번호 추측(sequence prediction)

- TCP 기반 연결을 다양하게 흉내

- 스푸핑(spoofing) 기능

- 스캔 속도와 순서 조절 기능

- 출력을 텍스트 파일에 저장하는 기능

- 텍스트 파일에서 입력 정보를 읽는 기능

nmap 설치는 www.nmap.org 에서 다운받거나 리눅스계열은 yum 이나 apt-get 으로 받을수있다.





기본적인 사용법은

]# nmap [스캔하고자 원하는 호스트]

nmap은 기본적으로 호스트에 ICMP를 전송

 

nmap을 설치하고 도움말은 -h 옵션으로 확인 할 수 있다.

]# nmap -h


많은 옵션들을 볼수있다 그중에가 가장 많이 사용 하는 옵션은

-p0 :    ICMP를 전송하지 않고, 실제로 네트웍과 연결돼 있는 지 검사.

ps는 nmap에서 이 정보가 정확하지 않을수도 있다고 써있다

-sP :    스텔스(stealth) 옵션, 방화벽이나 IDS에 발각되지 않게 패킷을 보낸다

-PT :    ICMP대신 TCP패킷을 사용. ACK를 보내여 RST패킷을 받길 기달린다

-sT :    완전한 TCP 연결을 맺는다

syn패킷을 보내고 ack를 받으면 또 ack를 보내는 형식으로 맺어지면 포트스캔 가능

-sS :    TCP패킷의 syn패킷만 보낸다 half-open 연결

-O :     운영체제 버전을 추측할수있다. 이건 운영체제 버전을 안다는것은 가장 위험한 일이다.

운영체제 버전이 낮을수록 그 취약점은 이미 다 인터넷에 떠돌기 때문에

만일 스캔한 호스트가 운영체제가 버전이 낮다면 쉽게 뚫을수있을것이다. !!

-v :    자세한 정보를 출력




예제

만일 내 네트워크 주소가 192.168.0.0 이고 서브넷 마스크가 255.255.255.0 이라면

]# nmap -sP 192.168.0.0/24

라고 실행한다 만일 -v 옵션을 사용하면, 시스템 모록도 볼수있다.

만일 원격 호스트에 ping을 보내려는데 중간에 라우터나 방화벽이 icmp패킷을 허용 안하면,

-sT 옵션도 좋다

]# nmap -sS -O -P0 192.168.0.1

tcp half-open 스캔을 수행하고 운영체제 정보를 알아내고 싶다면 이런 명령어도 좋다

 

선별적인 스캔

만일 nmap으로 ftp와 DNS를 운영중인 서버를 포트 스캔한다면

]# nmap -sX -p 21,53 -oN port.txt 192.168.0.56/24

라고 실행할수있다

-p : 포트를 지정

-oN : 출력 결과를 저장

-sX : Xmas 스캔 으로 TCP의 여러 플래그 bit(FIN, PSH, URG)를 설정하고 보내는 방법

비트를 설정하면 패킷에 플래그의 장소가 크리스마스 전구 모양같다고해서 x-mas

 

스텔스(stealth) 기능 추가

-sF : TCP의 FIN 비트가 설정

-sX : 'Xmas 트리'로 TCP의 FIN, URG, PUSH플리그 설정

-sN : 'Null' 스캔으로 TCP 플래그를 모든 끈 상태로 패킷을 보낸다

 

-D : 스캔의 출발지 주소를 내가 원하는 주소로 바꿀수 있다

 

sF, sX, sS, sN은 nmap을 사용할때 옵션을 모두 사용할수 없고 이중 1개만 사용가능하다

텍스트 파일에 저장, 텍스트 파일에서 읽기

-oN [filename] : 파일에 저장

-oM [filename] : 바이너리 포맷으로 저장

-iL : nmap에서 텍스트 파일을 읽어들임

      이 옵션은 유용하게 내가 원하는 주소를 파일에 미리 넣어 파일만

      읽어드리면 보낼수 있게 만들수도 있다!!



방화벽과 침입 탐지 시스템 테스트

-f : 스캔하는 패킷을 작은 ip조각으로 나눈다

-S Address : 스캔 공격이 시작된 출발지 주소를 지정할수있다. 

                  이 옵션을 사용할때는 -e -P0를 같이 사용한다 -e 는 인테페이서 설정이다

                  -D 옵션도 스캔 공격 출발지를 속일수있다는 면에서 유사

-g port : nmap은 스캔 공격을 하기위해 임시포트(1024)를 사용한다.

            이를 알고 많은 방화벽에서 미리 막아두지만, 출발포트를 정할수있는 옵션이다