NMAP
엔맵은 GPLv2의 조건(특허 등의 이유로 요금을 지불해야돼서 소스코드 공개가 불가능한 경우 실행파일까지 배포가 불가능하다)에 따라 재배포 및 수정할 수 있는 무료 오픈소스 소프트웨어이다.
대상 시스템의 정보를 획득할 때 사용되는 유용한 도구. (네트워크의 호스트 및 포트스캔, OS, 취약점 스캔 등)
테스트용 사이트 : scanme.nmap.org
Nmap 7.80 (https://nmap.org)
사용법 : nmap [스캔 유형] [옵션] {대상 사양}
대상 사양 :
호스트 이름, IP 주소, 네트워크 등을 전달할 수 있습니다.
예 : scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <inputfilename> : 호스트 / 네트워크 목록에서 입력
-iR <호스트 수> : 임의의 대상을 선택합니다
--exclude <host1 [, host2] [, host3], ...> : 호스트 / 네트워크 제외
--excludefile <exclude_file> : 파일에서 목록 제외
호스트 디스커버리 :
-sL :리스트 스캔-스캔 할 대상을 간단히 나열합니다.
-sn : Ping Scan-포트 스캔 비활성화
-Pn : 모든 호스트를 온라인으로 처리-호스트 검색 건너 뛰기
-PS / PA / PU / PY [portlist] : 주어진 포트에 대한 TCP SYN / ACK, UDP 또는 SCTP 검색
-PE / PP / PM : ICMP 에코, 타임 스탬프 및 넷 마스크 요청 감지 프로브
-PO [프로토콜 목록] : IP 프로토콜 핑
-n / -R : DNS 확인 / 항상 해결 안 함 [기본값 : 가끔]
--dns-servers <serv1 [, serv2], ...> : 사용자 정의 DNS 서버 지정
--system-dns : OS의 DNS 확인자 사용
--traceroute : 각 호스트에 대한 추적 홉 경로
스캔 기술 :
-sS / sT / sA / sW / sM : TCP SYN / Connect () / ACK / Window / Maimon 스캔
-SU : UDP 스캔
-sN / sF / sX : TCP 널, FIN 및 Xmas 스캔
--scanflags <flags> : TCP 스캔 플래그 사용자 정의
-sI <zombie host [: probeport]> : 유휴 스캔
-sY / sZ : SCTP INIT / COOKIE-ECHO 스캔
-sO : IP 프로토콜 스캔
-b <FTP 릴레이 호스트> : FTP 바운스 스캔
포트 사양 및 스캔 순서 :
-p <포트 범위> : 지정된 포트만 검색
예 : -p22; -p1-65535; -p U : 53,111,137, T : 21-25,80,139,8080, S : 9
--exclude-ports <포트 범위> : 지정된 포트를 검색에서 제외
-F : 빠른 모드-기본 스캔보다 적은 수의 포트 스캔
-r : 포트를 연속적으로 스캔-무작위 화하지 않음
--top-ports <number> : <number> 가장 일반적인 포트 스캔
--port-ratio <ratio> : <ratio>보다 일반적인 포트 스캔
서비스 / 버전 탐지 :
-sV : 서비스 / 버전 정보를 확인하기위한 프로브 개방 포트
--version-intensity <level> : 0 (라이트)에서 9 (모든 프로브 시도)로 설정
--version-light : 가장 가능성있는 프로브로 제한 (강도 2)
--version-all : 모든 단일 프로브 시도 (강도 9)
--version-trace : 자세한 버전 검색 활동 표시 (디버깅)
스크립트 스캔 :
-sC : --script = default와 동일
--script = <Lua scripts> : <Lua scripts>는 쉼표로 구분 된
디렉토리, 스크립트 파일 또는 스크립트 범주
--script-args = <n1 = v1, [n2 = v2, ...]> : 스크립트에 인수를 제공하십시오
--script-args-file = filename : 파일에 NSE 스크립트 인수 제공
--script-trace : 보내고받은 모든 데이터 표시
--script-updatedb : 스크립트 데이터베이스를 업데이트하십시오.
--script-help = <Lua 스크립트> : 스크립트에 대한 도움말을 표시합니다.
<Lua scripts>는 쉼표로 구분 된 스크립트 파일 목록입니다.
스크립트 카테고리.
OS 탐지 :
-O : OS 감지 사용
--osscan-limit : 유망한 대상으로 OS 감지 제한
--osscan-guess :보다 적극적으로 OS를 추측
타이밍 및 성능 :
<시간>이 걸리는 옵션은 초 단위이거나 'ms'(밀리 초)를 추가합니다.
's'(초), 'm'(분) 또는 'h'(시간)를 값 (예 : 30m)으로 설정하십시오.
-T <0-5> : 타이밍 템플릿 설정 (높을수록 빠름)
--min-hostgroup / max-hostgroup <size> : 병렬 호스트 스캔 그룹 크기
--min-parallelism / max-parallelism <numprobes> : 프로브 병렬화
--min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout <time> : 지정
프로브 왕복 시간.
--max-retries <tries> : 포트 스캔 프로브 재전송 횟수를 제한합니다.
--host-timeout <time> : 오랜 시간이 지난 후 포기
--scan-delay / --max-scan-delay <time> : 프로브 간 지연 조정
--min-rate <number> : 초당 <number>보다 느리지 않은 패킷을 보냅니다.
--max-rate <number> : 초당 <number>보다 빠른 패킷 전송
방화벽 / IDS 회피 및 스푸핑 :
-f; --mtu <val> : 프래그먼트 패킷 (선택적으로 제공된 MTU 포함)
-D <decoy1, decoy2 [, ME], ...> : 미끼로 스캔 망토
-S <IP_Address> : 스푸핑 소스 주소
-e <iface> : 지정된 인터페이스 사용
-g /-source-port <portnum> : 주어진 포트 번호 사용
--proxies <url1, [url2], ...> : HTTP / SOCKS4 프록시를 통한 릴레이 연결
--data <hex string> : 전송 된 패킷에 사용자 정의 페이로드 추가
--data-string <string> : 전송 된 패킷에 사용자 정의 ASCII 문자열을 추가합니다
--data-length <num> : 전송 된 패킷에 임의의 데이터 추가
--ip-options <options> : 지정된 ip 옵션으로 패킷을 보냅니다.
--ttl <val> : IP 활성 시간 필드 설정
--spoof-mac <mac 주소 / 접두사 / 공급 업체 이름> : MAC 주소 스푸핑
--badsum : 가짜 TCP / UDP / SCTP 체크섬으로 패킷을 보냅니다.
산출:
-oN / -oX / -oS / -oG <파일> : 일반 출력 스캔, XML, s | <rIpt kIddi3,
주어진 파일 이름으로 각각 Grepable 형식을 지정할 수 있습니다.
-oA <basename> : 세 가지 주요 형식으로 한 번에 출력
-v : 상세 수준을 높입니다 (더 큰 효과를 보려면 -vv 이상 사용).
-d : 디버깅 수준을 높입니다 (효과를 높이려면 -dd 이상 사용).
--reson : 포트가 특정 상태 인 이유를 표시합니다.
--open : 열려있거나 열린거라 생각되는 포트만 표시
--packet-trace : 보내고받은 모든 패킷 표시
--iflist : 호스트 인터페이스 및 경로 인쇄 (디버깅 용)
--append-output : 클로버 지정 출력 파일이 아닌 추가
--resume <filename> : 중단 된 스캔 다시 시작
--stylesheet <path / URL> : XML 출력을 HTML로 변환하는 XSL 스타일 시트
--webxml :보다 이식 가능한 XML을위한 Nmap.Org의 참조 스타일 시트
--no-stylesheet : XSL 스타일 시트와 XML 출력의 연관 방지
기타 :
-6 : IPv6 스캔 사용
-A : OS 감지, 버전 감지, 스크립트 검색 및 추적 경로 사용
--datadir <dirname> : 사용자 정의 Nmap 데이터 파일 위치 지정
--send-eth /-send-ip : 원시 이더넷 프레임 또는 IP 패킷을 사용하여 전송
--privileged : 사용자에게 모든 권한이 있다고 가정
--unprivileged : 사용자에게 원시 소켓 권한이 없다고 가정
-V : 인쇄 버전 번호
-h :이 도움말 요약 페이지를 인쇄하십시오.
예 :
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
추가 옵션 및 예는 매뉴얼 페이지 (https://nmap.org/book/man.html)를 참조하십시오.
주요 옵션
스캔 관련
-p <포트범위> : 포트범위 지정. ex) -p 22,23,80,443 / -p 1-3000,6000-9000
-O : OS 탐지
-sV : 서비스 버전 탐지
# nmap -p 81,444 --script http-methods xxx.test.co.kr
PORT STATE SERVICE
81/tcp open hosts2-ns
444/tcp open snpp
# nmap -p 81,444 -sV --script http-methods xxx.test.co.kr
PORT STATE SERVICE VERSION
81/tcp open http Apache Tomcat/Coyote JSP engine 1.1
| http-methods:
| Supported Methods: GET HEAD POST PUT DELETE TRACE OPTIONS PATCH
|_ Potentially risky methods: PUT DELETE TRACE PATCH
|_http-server-header: Apache-Coyote/1.1
444/tcp open ssl/snpp?
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, Help, Kerberos, RPCCheck, RTSPRequest, SMBProgNeg, SSLSessionReq, TLSSessionReq:
| HTTP/1.1 400 Bad Request
| Date: Wed, 28 Aug 2019 08:12:23 GMT
| Connection: close
| Server: Server
| GetRequest:
| HTTP/1.1 200 OK
| Content-Type: application/json;charset=UTF-8
| Date: Wed, 28 Aug 2019 08:12:21 GMT
| Connection: close
| Server: Server
| {"Hello":"World"}
| HTTPOptions:
| HTTP/1.1 200 OK
| Cache-Control: private
| Expires: Thu, 01 Jan 1970 09:00:00 KST
| Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
| Content-Length: 0
| Date: Wed, 28 Aug 2019 08:12:23 GMT
| Connection: close
|_ Server: Server
--open : 열린 포트만 확인
--reason : 해당 STATE로 결과가 출력된 이유
출력 관련
-v : 상세 내역 확인 (-vv)
-d : 디버깅 내역 확인 (-dd)
-oN / -oX <파일경로>: 일반 출력(.txt), XML 출력 (지정한 경로에 쓰기권한이 있어야한다.)
'네트워크 > Tool' 카테고리의 다른 글
NMAP : http.lua (4) (0) | 2019.10.14 |
---|---|
NMAP : 쓸만한 NSE 스크립트 (3) (0) | 2019.08.25 |
NMAP : 스캔 원리 (2) (0) | 2019.08.25 |