[원문: http://tools.kali.org/information-gathering/nmap]


정의

Nmap (“Network Mapper”) is a free and open source (license) utility for network discovery and security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and OS versions) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. It was designed to rapidly scan large networks, but works fine against single hosts. Nmap runs on all major computer operating systems, and official binary packages are available for Linux, Windows, and Mac OS X. In addition to the classic command-line Nmap executable, the Nmap suite includes an advanced GUI and results viewer (Zenmap), a flexible data transfer, redirection, and debugging tool (Ncat), a utility for comparing scan results (Ndiff), and a packet generation and response analysis tool (Nping).


Nmap was named “Security Product of the Year” by Linux Journal, Info World, LinuxQuestions.Org, and Codetalker Digest. It was even featured in twelve movies, including The Matrix Reloaded, Die Hard 4, Girl With the Dragon Tattoo, and The Bourne Ultimatum.

 기존과는 다르게 nmap은 간략하게 소개 할 수가 없다. nmap에는 상당히 많은 기능과 옵션이 존재하기 때문이다.

그래도 굳이 정의하자면 포트스캐닝 도구로서 호스트나 네트워크를 스캐닝 할 때 매우 우용한 도구다. 라고 표현하고 싶다.

위의 정의를 보면 nmap은 네트워크 검사나 보안 감사를 위한 무료이자 오픈소스 유틸리티로 표현하고 있다.

nmap은 raw ip 패킷을 이용하여 네트워크상의 호스트 검사, 사용하는 서비스가 무엇인지, 운영하는 OS, 사용 중인 패킷 필터, 방화벽 타입 등을 검사한다.

 원문 페이지를 방문하면 nmap에 대한 장점을 소개하였는데 간략하게 소개하자면

1) 다양한 포트스캐닝 메커니즘(TCP&UDP), os 감지, 버전 감지, ping sweeps 등을 제공하는 유연성

2) huge network 상에서 제공할 수 있는 강력함

3) 윈도우, 리눅스, 솔라리스, 맥 등에서 사용할 수 있음

4) 자세한 다큐먼트 등을 소개하고 있다.


Usage

위에서 볼 수 있듯이 엄청많다....


#nmap [Scan Type(s)] [Options] {target specification}

기본 syntax는 위와 같다.

자주 사용하는 옵션에 대해 소개하고자 한다. 나머지 옵션 및 기능들은 man page 참고!

(분류는 보기좋게(?) 개인적으로 판단하였습니다.)

[Scan Type(s)]

1)Port Scanning

-sT: TCP connect() scan: TCP scanning의 가장 기초적인 형태로 connect()함수를 사용해서 모든 포트에 대해 스캔

-sS: TCP SYN scan: full TCP접속을 하지 않으므로 "half-open" 스캐닝이라 한다. 하나의 SYN 패킷을 보내어 SYN|ACK 응답이 오면 그 포트는 listening 상태임을 나타내며, RST(ReSeT)응답이 오면 non-listener임을 나타냄

이 기술은 하나의 패킷을 보내어 응답을 받으면 그 즉시 RST 패킷을 보내서 접속을 끊어버리기 때문에 로그를 남기지 않는 경우가 대부분임. 즉 추적이 어렵다.

-sF: Stealth FIN: SYN 패킷을 막아놓은 방화벽이나 패킷 필터 또는 Synlogger와 Courtney 같은 스캔을 탐지하는 프로그램들을 무사히 통과할 수 있다. open 포트로 FIN 패킷을 보내면 이 패킷을 무시하고, closed 포트로 보내면 RST 패킷이 온다.

-sX: Xmas Tree: FIN, URG, PUSH 코드 비트를 설정한 채 패킷을 보냄. RESET은 포트가 닫혔다는 것을 말해주며, 반응이 없는 것은 포트가 열려있음을 뜻함

-sN: Null scan: 어떤 코드 비트도 설정하지 않은 패킷을 보냄. RESET은 포트가 닫힌 것을 말하며, 반응이 없는 것은 포트가 열린 것을 뜻함

-sP: Ping scanning: 네트워크의 어느 호스트가 살아있는지를 알고 싶을 때 사용(-sn 과 동일)

-sU; UDP scan, 시간이 상당히 오래 걸림

-sA: ACK scan 

-sW: window scan 

-sR: RPC scan

2)Service And Version Detection

-sV:Version detection

-sR:RPC scan

3)OS Detection

-O: Enable OS detection

리눅스 3.x를 사용한다고 추측하고 있다. 정확한 버전까지는 확인할 수 없으나 대략적으로 판단할 수 있다.


[Options]

1)Port Specification And Scan Order

-p: port ranges(Only scan specified ports): 특정 포트를 지정하는 것으로 예를 들어 -p 80 식으로 지정함, '-' 범위 지정 가능
(Udp:53, 111, 137, Tcp:21-25, 80, 139, 8080)

-F(fast scan)

-r(Don't randomize ports)

2) Timing and Performance

-T:paranoid|sneaky|polite|normar|aggressive|insane

->The first two are for IDS evasion. Polite mode slows down the scan to use less bandwidth and target machine resources. Normal mode is the default and so -T3 does nothing. Aggressive mode speeds scans up by making the assumption that you are on a reasonably fast and reliable network. Finally insane mode. assumes that you are on an extraordinarily fast network or are willing to sacrifice some accuracy for speed.

주로 4번(-T4)을 많이 사용하는 것 같음

3) Verbosity

nmap을 쓰는 사람은 기본적으로 v옵션을 사용

-v: Increase verbosity level: 자세히

Use it twice or more for even greater verbosity: -vv, or give a verbosity level directly, for example -v3


{target specification}

타겟을 지정하는 데 있어 단일 호스트 192.168.100.5, 다중 호스트 192.168.100.3-20 으로 주어지는게 가능하다.

또한 CIDR-style을 지원한다. 예를 들어 192.168.100.0/24는 192.168.100.0번부터 192.168.100.255까지 256의 호스트를 스캔

-iL inputfilename

작성한 파일이 제대로 동작하는지 tab기능과 enter를 통해 작성 결과 모두 정상적으로 출력되는 것을 확인할 수 있었다.

비록 위의 결과는 3개의 호스트에 대해서만 출력하였지만 같은 IP대역이 아닌 다양하고 상당히 많은 수의 호스트 리스트가 필요할 수 있다. 이 때 유용하게 쓰일 것으로 사료된다.


nmap을 모두 설명하기에는 실력의 부족도 있지만 nmap에 대한 기능만 다룬 두꺼운 책 한권이 있을 정도로 다루는 범위가 방대하다. 해당 포스트는 nmap에 대한 소개 정도로 보면 좋을 듯 싶다. 하지만 기능은 매우 강력하다라는 것을 표현하고 싶다.

반응형

'해킹 > kali tools' 카테고리의 다른 글

[Information-Gathering27]recon-ng  (0) 2016.04.12
[Information-Gathering26]p0f  (0) 2016.04.07
[Information-Gathering24]miranda  (0) 2016.03.29
[Information-Gathering23]masscan  (0) 2016.03.24
[Information-Gathering22]hping3  (0) 2016.03.18

풋프린팅이 정보를 담고 있는 공간을 찾는 행위라면 스캐닝은 잠재적인 출입구가 될 수 있는 문이나 창문을 찾는 것과 같다.

풋프린팅 정보는 (http://kkn1220.tistory.com/61 참고)


-스캔의 개념

-> 스캔은 서비스를 제공하는 서버의 작동 여부와 제공하고 있는 서비스를 확인하기 위한 것

   TCP 기반의 프로토콜은 기본적으로 질의(Request)를 보내면 응답(Response)을 보냄

-> 스캐닝은 이러한 기본적인 메커니즘에 기본하는 것으로, open port, 제공 중인 서비스, 동작중인 데몬 버전, os version,   취    약점 등 다양한 정보를 얻는 것이 가능


- 시스템 활성화 여부 결정

- Ping & ICMP Scan

- ping은 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 간단한 유틸리티

- ICMP(Internel Control Messaging Protocol)를 사용

- 각각의 네트워크는 고유한 ping이 존재하며, 일반적으로 알려진 ping은 TCP/IP 네트워크에서의 ping을 말함


윈도우에서의 ping


linux에서의 ping

- ping은 결국 ICMP의 Echo request(type 8), reply(type 0)을 따름

 즉, ping 도구는 ICMP Echo Request  메시지를 전송하여 목적지시스템으로부터 ICMP Echo Reply 메시지로 응답을 받  는데 걸린 시간을 측정하며 네트워크 연결을 검사 할 수 있다.


ICMP 스캔

-> ICMP를 이용한 스캔 방법으로는 다음의 네 가지를 생각 할 수 있다.

- Echo Request(type 8)와 Echo Reply(type 0)을 이용한 방법

- Timestamp Request(Type 13)와 Timestamp Reply(Type 14)를 이용한 방법

- Information Request(Type 15)와 Information Reply(Type 16)를 이용한 방법

- ICMP Address Mask Request(Type 17)와 ICMP Address Mask Reply(Type 18)를 이용한 방법


Timestamp Request는 원격지 시스템의 현재 시간을 알아보기 위한 패킷임
Timestamp 패킷은 송신자가 패킷을 받은 시간(Originate Timestamp)과 수신자가 패킷을 받은 시간(Receive Timestamp), 송신자가 수신자에게 전송하는 동안 걸린 시간(Transmit Timestamp)으로 공격대상의 현재 시스템 시간을 알 수 있다.

하지만 Timestamp Request 패킷에 Reply 패킷을 돌려보내오는 시스템이 시간만을 알려준다고 생각할 수는 없는데 상대 시스템이 Reply 패킷이 돌아온다는 것은 상대 시스템이 활성화 되어 있음을 말함


Information Request와 Reply 패킷은 메인 프레임의 터미널과 같이 부팅할 때 자신의 디스크가 없는 시스템에 스스로 설정할 수 있도록 하는 패킷으로, 자신의 네트워크를 찾기 위해 개발됨

기본 목적은 RARP, Bootp, DHCP와 같은 프로토콜과 같으나 다른 프로토콜을 이용한 방법에 비해 원시적

Timestamp 패킷과 마찬가지로 죽은 시스템이 Reply패킷을 보내지 않음


ICMP Address Mask Request와 Reply패킷은 Information Request 패킷과 같이 터미널이 부팅 될 때 자신이 속해 있는 네트워크의 서브넷 마스크를 알기 위해 보내는 프로토콜

마찬가지로 Reply 패킷을 돌려보내오는지 확인하면서 활성화 여부 확인


- ARP(Address Resolution Protocol) 호스트 탐색

ARP는 IP 주소값으로 MAC 주소값을 알아내는 프로토콜이다

예) #arp-scan 192.168.100.0/24


대상시스템이 원격에 위치한 네트워크일 경우 실효성이 떨어지는 ARP탐색보다는 ICMP또는 TCP/UDP 탐색 방법을 사용하여야 함


- 포트스캐닝

- 네트워크매퍼(nmap): 호스트와 서비스 검색과 관련된 도구

nmap은 상당히 상당히 강력한 도구이다. 기능도 엄청 많다.

(자세한 사항은 kkn1220.tistory.com/103 참고)

스캐닝 옵션 (192.168.100.5는 현재 우분투 test 대상)

-sT: TCP connect() scan: TCP scanning의 가장 기초적인 형태로 connect()함수를 사용해서 모든 포트에 대해 스캔


-sS: TCP SYN scan: full TCP접속을 하지 않으므로 "half-open" 스캐닝이라 한다. 하나의 SYN 패킷을 보내어 SYN|ACK 응답이 오면 그 포트는 listening 상태임을 나타내며, RST(ReSeT)응답이 오면 non-listener임을 나타냄

 이 기술은 하나의 패킷을 보내어 응답을 받으면 그 즉시 RST 패킷을 보내서 접속을 끊어버리기 때문에 로그를 남기지 않는 경우가 대부분임

-sF: Stealth FIN: SYN 패킷을 막아놓은 방화벽이나 패킷 필터 또는 Synlogger와 Courtney 같은 스캔을 탐지하는 프로그램들을 무사히 통과할 수 있다. open 포트로 FIN 패킷을 보내면 이 패킷을 무시하고, closed 포트로 보내면 RST 패킷이 온다.

-sX: Xmas Tree: FIN, URG, PUSH 코드 비트를 설정한 채 패킷을 보냄. RESET은 포트가 닫혔다는 것을 말해주며, 반응이 없는 것은 포트가 열려있음을 뜻함

-sN: Null scan: 어떤 코드 비트도 설정하지 않은 패킷을 보냄. RESET은 포트가 닫힌 것을 말하며, 반응이 없는 것은 포트가 열린 것을 뜻함

-sP: Ping scanning: 네트워크의 어느 호스트가 살아있는지를 알고 싶을 때 사용

그밖에 -sU; UDP scan, -sA: ACK scan, -sW: window scan, -sR: RPC scan 등 다양하다....

반응형

'해킹 > 해킹' 카테고리의 다른 글

스니핑(sniffing) 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01
maltego(footprinting tool) 소개  (0) 2016.01.28
MITM 공격을 위한 ettercap 소개  (0) 2016.01.21
웹 퍼징 도구 DirBuster 소개  (0) 2016.01.19

+ Recent posts