nmap - 윈디하나의 솔라나라
|
주의깊고 책임감 있게사용해야 한다. 특히 자신이 관리하고 있지 않고 있는 호스트를 스캔 하지 않는 것이 좋다. 해킹을 시도한다고 오해받기 쉽기 때문이다. 특히 솔라나라를 스캔하지 말자.
root@wl ~/src # wget https://nmap.org/dist/nmap-7.70.tar.bz2
root@wl ~/src # tar xvfj nmap-7.70.tar.bz2
root@wl ~/src # cd nmap-7.70
root@wl ~/src/nmap-7.70 # ./configure CC=gcc CXX=g++ \
--with-openssl=/usr/local/ssl \
CFLAGS="-m64 -D_XOPEN_SOURCE=700 -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS" \
CXXFLAGS="-m64 -D_XOPEN_SOURCE=700 -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS " \
LDFLAGS="-lxnet -R/usr/local/ssl/lib"
...
o
o
o
o o
o o
o o
o o o
o o o
888b 888 o o o
8888b 888 o o o
88888b 888 o o o
888Y88b 888 o
888 Y88b888 o
888 Y88888
888 Y8888
888 Y888
--[NPING]--
...
config.status: creating config.h
. .
\`-"'"-'/
} 6 6 {
==. Y ,==
/^^^\ .
/ \ ) Ncat: A modern interpretation of classic Netcat
( )-( )/
-""---""--- /
/ Ncat \_/
( ____
\_.=|____E
Configuration complete.
___.-------.___
_.-' ___.--;--.___ `-._
.-' _.-' / .+. \ `-._ `-.
.' .-' |-|-o-|-| `-. `.
(_ <O__ \ `+' / __O> _)
`--._``-..__`._|_.'__..-''_.--'
``--._________.--''
____ _____ ____ ____ _ _______
|_ \|_ _||_ \ / _| / \ |_ __ \
| \ | | | \/ | / _ \ | |__) |
| |\ \| | | |\ /| | / ___ \ | ___/
_| |_\ |_ _| |_\/_| |_ _/ / \ \_ _| |_
|_____|\____||_____||_____||____| |____||_____|
1)
NMAP IS A POWERFUL TOOL -- USE CAREFULLY AND RESPONSIBLY
Configured with: ndiff zenmap nping openssl zlib libssh2 lua ncat
Configured without: localdirs nmap-update
Type make (or gmake on some *BSD machines) to compile.
root@wl ~/src/nmap-7.70 # make
root@wl ~/src/nmap-7.70 # make install
1) configure를 실행할 때 마다 다른 아스키 아트가 출력된다.
nmap [스캔 타입] [옵션] {목적지 지정}옵션 설명을 보기 전에 네트워크에 대한 광범위한 지식을 알고 있어야 한다. 특히 TCP/IP, ICMP에 대한 지식은 필수다.
,를 사용해 두개이상의 타겟 구문을 지정할 수 있다. 아래에 몇가지 예제가 있다.
-iL <파일명>: 파일에 지정된 호스트/네트워크 포함-iR <num hosts>: 임의의 타겟을 선택--exclude <host1[,host2][,host3],...>: 지정한 호스트/네트워크 제외--excludefile <exclude_file>: 파일에 지정된 호스트/네트워크를 제외-sL: 목록 스캔 - 기본 스캔 방법-sn: 핑 스캔 - 포트 스캔 하지 않음-Pn: 모든 타겟 호스트를 온라인으로 가정(호스트 탐색 하지 않음)-PS/PA/PU/PY[포트목록]: TCP SYN/TCP ACK/UDP/SCTP를 사용한 호스트 탐색
-PE/PP/PM: ICMP 에코/타임스탬프/넷마스크요청탐색 프로브 사용
-PO[프로토콜목록]: IP 프로토콜 핑-n/-R: DNS 탐색 사용 안함/항상 사용. 기본값은 가끔 사용.--dns-servers <서버1[,서버2],...>: DNS 서버 지정--system-dns: 운영체제의 DNS 탐색기 사용--traceroute: 라우터 트레이싱-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon 스캔-sU: UDP 스캔-sN/sF/sX: TCP Null/FIN/Xmas 스캔--scanflags <플래그>: TCP 스캔시 지정한 플래그 사용-sI <zombie host[:probeport]>: Idle 스캔-sY/sZ: SCTP INIT/COOKIE-ECHO 스캔-sO: IP 프로토콜 스캔-b <FTP relay host>: FTP 릴레이(바운스) 스캔-p <포트범위>: 지정한 포트만 스캔. 예) -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9-F: 빠른 스캔. 기본 포트 100개만 스캔-r: 연속해서 스캔 (랜덤하게 포트 번호를 스캔하지 않음) --top-ports <번호>: 지정한 개수의 일반적인 포트를 스캔--port-ratio <비율>: 지정한 비율보다 더 일반적인 포트를 스캔/usr/local/share/nmap/nmap-services파일에 정의되어있다.-sV: 서비스 및 버전 정보 감지를 위해 열린 포트 프로브--version-intensity <레벨>: 버전 감지 레벨 지정. 0 ~ 9까지 지정할 수 있으며, 9가 가장 높다--version-light: 버전 감지레벨을 2로 설정--version-all: 버전 감지 레벨을 9로 설정--version-trace: 버전 감지시 스캔 내역을 보임. (디버깅 용도)-sC: --script=default와 동일--script=<Lua scripts>: 사용할 Lua 스크립트. 콤마로 구분해 디렉토리나 스크립트 파일을 지정--script-args=<n1=v1,[n2=v2,...]>: 스크립트 인자--script-args-file=filename: NSE 인자를 담은 파일 지정--script-trace: 스크립트 트레이싱. 데이터를 주고 받는것을 보임--script-updatedb: 스크립트 데이터베이스 업데이트--script-help=<Lua scripts>: 지정한 스크립트에 대해 설명/usr/local/share/nmap/scripts에서 볼 수 있다. 포크스캔을 통해 포트가 열려있고 어떤 포트인지 알아낸 후, 스크립트를 사용해 좀 더 자세한 포트 정보를 알아낼 수 있다.운영체제 감지에 대한 전반적인 사항은 Chapter 8. Remote OS Detection을 참고하자.
-O: 운영체제 감지 활성화--osscan-limit: 제한된 OS 감지 사용--osscan-guess: 포괄적 OS 감지 사용
# nmap -O --osscan-guess -v localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2019-06-10 00:00 KST
Initiating SYN Stealth Scan at 00:00
...
Device type: general purpose
Running (JUST GUESSING): Oracle Solaris 11|10 (94%), illumos OpenIndiana (93%), Sun Solaris 11 (87%)
OS CPE: cpe:/o:oracle:solaris:11 cpe:/o:illumos:openindiana cpe:/o:oracle:solaris:10 cpe:/o:sun:sunos:5.11
Aggressive OS guesses: Oracle Solaris 11 (94%), OpenIndiana (93%), Oracle Solaris 10 (87%), Sun Solaris 11 (87%), Oracle Solaris 11 or OpenIndiana (86%), Sun Solaris 11.3 (86%)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
...
Uptime guess: 0.025 days (since Mon Jun 10 17:54:11 2019)
Network Distance: 0 hops
TCP Sequence Prediction: Difficulty=259 (Good luck!)
IP ID Sequence Generation: All zeros
Read data files from: /usr/local/bin/../share/nmap
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 41.72 seconds
Raw packets sent: 1299 (61.206KB) | Rcvd: 2412 (106.648KB)
-T<0-5>: 타이밍 템플릿 지정(숫자가 높을수록 빠름)--min-hostgroup/max-hostgroup <크기>: 병렬 호스트 스캔 그룹개수 지정--min-parallelism/max-parallelism <프로브개수>: 프로브 병렬화시 프로브 개수 지정--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <시간>: 라운드 트립 시간 지정--max-retries <재시도>: 재시도 회수 지정--host-timeout <시간>: 호스트 타임아웃 시간 지정--scan-delay/--max-scan-delay <시간>: 탐색시 스캔 지연 시간--min-rate <number>: 최소 초당 패킷 전송 비율--max-rate <number>: 최대 초당 패킷 전송 비율-f; --mtu <val>: 패킷 단편화. --mtu 는 주어진 MTU로 단편화-D <decoy1,decoy2[,ME],...>: 디코이를 사용한 클록 스캔-S <IP_Address>: 지정한 IP를 소스로 사용해 스캔(IP Spoof)-e <iface>: 지정한 네트워크 인터페이스 사용-g/--source-port <portnum>: 주어진 포트 번호를 소스 포트번호로 지정--proxies <url1,[url2],...>: 지정한 HTTP/SOCKS4 프록시를 사용해 스캔--data-length <num>: 패킷에 붙일 랜덤한 데이터 길이 지정--ip-options <options>: 지정한 IP 옵션을 붙여 스캔--ttl <val>: 지정한 TTL 사용--spoof-mac <mac address/prefix/vendor name>: 지정한 맥 주소를 소스로 사용해 스캔--badsum: 올바르지 않은 TCP/UDP/SCTP 체크섬 사용-oN/-oX/-oS/-oG <file>: 파일 출력 포맷 (기본/XML/s|<rIpt kIddi3/Grepable) 지정-oA <basename>: 3가지 주요 포맷을 한번에 출력-v: 더 상세히 출력. -vv시 더더욱 상세히 출력-d: 디버깅 출력 레벨 올림. -dd시 더더욱 상세히 디버깅 출력--reason: 포트 상태 원인 출력?--open: 열린 포트만 출력--packet-trace: 모든 주고 받은 패킷 출력--iflist: 모든 인터페이스 및 라우팅 정보 출력(디버깅)--log-errors: 출력 파일에 오류 로그 쓰기--append-output: 출력 파일 붙이기--resume <filename>: 취소된 스켄을 이어 하기--stylesheet <path/URL>: XML을 HTML로 변환할 XSL 스타일 시트 지정--webxml: nmap.org의 스타일 시트 참조(더 잘 보임)--no-stylesheet: XML 출력시 스타일 시트 사용하지 않음-6: IPv6 스캔 활성화-A: 모든 감지 옵션(OS감지, 버전감지, 스크립트 스캔, traceroute) 활성화--datadir <dirname>: nmap 데이터 디렉토리 지정--send-eth/--send-ip: raw 이더넷 프레임 또는 IP 패킷 사용--privileged: 사용자가 모든 소켓 권한을 가지고 있는 것으로 가정--unprivileged: 사용자가 모든 소켓 권한을 가지고 있지 않은 것으로 가정-V: 버전 정보 보임-h: 도움말 보임nmap -sU -p 포트번호 IP주소클라이언트에서 서버의 TCP 포트 오픈 확인
nmap -p 포트번호 IP주소
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
ndiff [옵션] 파일1 파일2
-h, --help: 도움말 출력-v, --verbose: 변경되지 않았어도 호스트와 포트 정보 보임--text: 텍스트 형식으로 출력 (기본값)--xml: XML 형식으로 출력root@wl ~ # nmap -F scanme.nmap.org -oX scanme-1.xml Starting Nmap 7.12 ( https://nmap.org ) at 2016-10-07 19:50 KST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.15s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f Not shown: 94 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 3128/tcp filtered squid-http Nmap done: 1 IP address (1 host up) scanned in 13.95 seconds root@wl ~ # nmap -F scanme.nmap.org -oX scanme-2.xml Starting Nmap 7.12 ( https://nmap.org ) at 2016-10-07 19:51 KST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.16s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f Not shown: 94 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 3128/tcp filtered squid-http Nmap done: 1 IP address (1 host up) scanned in 15.94 seconds root@wl ~ # ndiff -v scanme-1.xml scanme-2.xml -Nmap 7.12 scan initiated Fri Oct 07 19:50:47 2016 as: nmap -F -oX scanme-1.xml scanme.nmap.org +Nmap 7.12 scan initiated Fri Oct 07 19:51:06 2016 as: nmap -F -oX scanme-2.xml scanme.nmap.org scanme.nmap.org (45.33.32.156): Host is up. Not shown: 94 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh 80/tcp open http 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 3128/tcp filtered squid-http root@wl ~ # ndiff scanme-1.xml scanme-2.xml
-4: IPv4 만 사용-6: IPv6 만 사용-U, --unixsock: 유닉스 도메인 소켓만 사용-C, --crlf: EOL에 CRLF 사용-c, --sh-exec <command>: /bin/sh 를 사용해 주어진 명령을 실행-e, --exec <command>: 지정한 명령을 실행--lua-exec <filename>: 지정한 Lua 스크립트를 실행-g hop1[,hop2,...]: Loose source routing hop points (8 max)-G <n>: Loose source routing hop pointer (4, 8, 12, ...)-m, --max-conns <n>: 최대 n 개의 동시 접속 사용-h, --help: 도움말-d, --delay <time>: 읽기/쓰기시 지연-o, --output <filename>: 파일로 덤프-x, --hex-dump <filename>: 16진 형식으로 데이터 덤프-i, --idle-timeout <time>: 읽기/쓰기 Idle 타임아웃-p, --source-port port: 사용할 포트를 지정-s, --source addr: 사용할 주소를 지정-l, --listen: 지정한 포트를 BIND 한 후 LISTEN-k, --keep-open: LISTEN 한 채로 유지(기본값은 1회 접속된후 LISTEN 하지 않음)-n, --nodns: DNS 를 사용해 호스트이름 Resolve 하지 않음-t, --telnet: 텔넷 Negotiation 에 응답-u, --udp: TCP 대신 UDP 사용--sctp: TCP 대신 SCTP 사용-v, --verbose: 자시히 출력. -v 를 여러번 사용해 레벨 조절 가능-w, --wait <time>: 접속 타임 아웃 지정--append-output: Append rather than clobber specified output files--send-only: 데이터 송신만 허용(수신된 데이터는 무시됨, EOF 수신시 종료됨)--recv-only: 데이터 수신만 허용(아무것도 보내지 않음)--allow: 주어진 호스트에서만 접속 허용--allowfile: Ncat 에서 접속 허용할 호스트를 담은 파일 경로--deny: 주어진 호스트에서 접속 거절--denyfile: Ncat 에서 접속 거절할 호스트를 담은 파일 경로--broker: Ncat 을 브로커 모드로 활성화--chat: Ncat 채팅 서버 시작--proxy <addr[:port]>: 지정한 프록시 사용--proxy-type <type>: 프록시 종료 지정 ("http", "socks4", "socks5")--proxy-auth <auth>: 프록시 인증 지정--ssl: SSL 사용--ssl-cert: SSL 인증파일(PEM 형식)--ssl-key: SSL 개인키 파일(PEM 형식)--ssl-verify: 신뢰할 수 있는 SSL 인증서 목록에서 인증서 검증--ssl-trustfile: 신뢰할 수 있는 SSL 인증서 파일(PEM 형식)--ssl-ciphers: 사용할 SSL Cipher 목록--version: 버전 정보 보임ncat -u -p "포트번호" "IP주소"클라이언트에서 서버의 TCP 포트 오픈 확인
ncat -p "포트번호" "IP주소"
네트워크 패킷 생성,
패킷 응답 분석,
응답 시간 측정을 위한 오픈소스 툴이라고 소개하고 있다. 주요 특징은 아래와 같다.
아래와 같은 방법으로 사용할 수 있다.
nping [탐색모드] [옵션] {목적지 정의}
목적지는 호스트명이나 IP주소, 네트워크를 나타낼 수 있다. 아래와 같이 형식을 가진다.
scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.*.1-24--tcp-connect: 권한 없는 TCP 접속 탐색 모드. 일반적으로 RAW 레벨로 패킷을 생성해 보내려면 루트 권한이 필요하다. NPING을 일반 사용자로 실행한 경우 제한적인 기능이라도 사용할 수 있다.--tcp: TCP 탐색 모드--udp: UDP 탐색 모드--icmp: ICMP 탐색 모드--arp: ARP 탐색 모드--tr, --traceroute: 라우팅 추적(Traceroute) 모드. TCP/UDP/ICMP 모드에서만 사용 가능-p, --dest-port <port spec>: 목적지 포트 지정-g, --source-port <portnumber>: 소스 포트 지정-g, --source-port <portnumber>: 소스 포트 지정-p, --dest-port <port spec>: 목적지 포트 지정--seq <seqnumber>: 일련 번호 지정--flags <flag list>: TCP 플래그(ACK,PSH,RST,SYN,FIN...) 지정--ack <acknumber>: ACK 번호 지정--win <size>: 윈도 크기 지정--badsum: 임의의 올바르지 않은 체크섬 사용-g, --source-port <portnumber>: 소스 포트 지정-p, --dest-port <port spec>: 목적지 포트 지정--badsum: 임의의 올바르지 않은 체크섬 사용--icmp-type <type>: ICMP 타입--icmp-code <code>: ICMP 코드--icmp-id <id>: ICMP ID--icmp-seq <n>: ICMP 일련 번호--icmp-redirect-addr <addr>: ICMP Router Redirect 기능으로 리다이렉트될 주소--icmp-param-pointer <pnt>: Parameter Problem 메시지의 Pointer 값--icmp-advert-lifetime <time>: Router Advertisement 시간 설정--icmp-advert-entry <IP,pref>: Router Advertisement 엔트리 추가--icmp-orig-time <timestamp>: originate 타임스탬프--icmp-recv-time <timestamp>: receive 타임스탬프--icmp-trans-time <timestamp>: transmit 타임스탬프--arp-type <type>: 타입: ARP, ARP-reply, RARP, RARP-reply.--arp-sender-mac <mac>: 발신자 MAC 주소--arp-sender-ip <addr>: 발신자 IP 주소--arp-target-mac <mac>: 목적지 MAC 주소--arp-target-ip <addr>: 목적지 IP 주소-S, --source-ip: 소스 IP 주소--dest-ip <addr>: 목적지 IP 주소 ({목적지 정의}의 또다른 형태로 사용)--tos <tos>: 서비스 필드 타입 지정 (8 비트).--id <id>: Set identification field (16 비트).--df: 단편화 하지 않음 플래그를 세팅--mf: 조각이 더 있음 플래그를 세팅--ttl <hops>: TTL 지정 [0-255].--badsum-ip: 임의의 올바르지 않은 체크섬 사용--ip-options <S|R [route]|L [route]|T|U ...>: IP 옵션 지정--ip-options <hex string>: IP 옵션 지정--mtu <size>: MTU 지정. MTU 가 충분히 작은 경우 패킷은 단편화됨(fragmented)-6, --IPv6: IPv6 사용.--dest-ip: 지정한 목적지 주소 사용 ({목적지 정의}의 또다른 형태로 사용)--hop-limit: 홉 제한 설정 (IPv4 TTL과 같음).--traffic-class <class>: 트래픽 클래스(Traffic Class)--flow <label>: 흐름 레이블(Flow Label) 설정--dest-mac <mac>: 목적지 MAC 주소 지정 (ARP resolution 비활성화)--source-mac <mac>: 소스 MAC 주소 지정--ether-type <type>: 이더넷 타입 값 지정--data <hex string>: Include a custom payload.--data-string <text>: Include a custom ASCII text.--data-length <len>: Include len random bytes as payload.--echo-client <passphrase>: 클라이언트 모드로 실행--echo-server <passphrase>: 서버 모드로 실행--echo-port <port>: 커스텀 포트를 사용해 LISTEN 하거나 접속--no-crypto: 암호화 및 인증 비활성화--once: 일회 접속 후 서버 중단--safe-payloads: 반향된 패킷에서 어플리케이션 데이터 삭제초이며, 'ms' (milliseconds), 's' (seconds), 'm' (minutes), or 'h' (hours) 를 붙여 해당값으로 지정할 수 있다. 예) 30m, 0.25h
--delay <time>: 탐색시 각각의 탐색 사이의 지연 조정--rate <rate>: 초당 보낼 패킷 수-h, --help: 도움말 표시-V, --version: 현재 버전 표시-c, --count <n>: N회 후 정지-e, --interface <name>: 지정된 네트워크 인터페이스 사용-H, --hide-sent: 전송 패킷 표시 안함-N, --no-capture: Do not try to capture replies.--privileged: 사용자가 권한을 가지고 실행--unprivileged: 사용자가 로우 패킷에 대해 일부 권한을 가지고 실행--send-eth: 로우 이더넷 레이어에서 패킷 전송--send-ip: IP 소켓 레이어에서 패킷 전송--bpf-filter <filter spec>: BPF 필터 지정-v: 출력 레벨을 1단계 상승-v[level]: 츨력 레벨을 지정 예) -v4-d: 디버깅 레벨을 1단계 상승-d[level]: 디버깅 레벨을 지정 예) -d3-q: 출력 레벨을 1단계 내림-q[N]: 출력 레벨을 N 회 내림--quiet: 출력 레벨과 디버깅 레벨을 최소값으로 낮춤--debug: 출력 레벨과 디버깅 레벨을 최대값으로 높임nping scanme.nmap.org nping --tcp -p 80 --flags rst --ttl 2 192.168.1.1 nping --icmp --icmp-type time --delay 500ms 192.168.254.254 nping --echo-server "public" -e wlan0 -vvv nping --echo-client "public" echo.nmap.org --tcp -p1-1024 --flags ack
등록된 노트가 없습니다
| RSS ATOM XHTML 5 CSS3 |
Copyright © 2004-2025 Jo HoSeok. All rights reserved. |