모의해킹/모의침투

[Kali/Port Scan] 정보수집 단계 포트 스캔 Nmap 사용법 정리

라임패션 2022. 8. 22. 00:19
728x90
반응형

칼리 리눅스에서 사용하는 포트 스캔 툴 Nmap에 대해 알아보자.

 

1. Nmap

- Nmap 기능

  • 호스트 탐지 : 네트워크 대역대의 ping 응답/특정 포트가 Open된 Host들을 식별
  • 포트 스캔 : 열린 포트 식별
  • 버전 탐지 : 대상 Host들의 응용 프로그램명과 버전 정보 확인
  • 운영 체제 탐지 : OS와 Network 인터페이스 카드 정보 확인

- Nmap 옵션 정리 및 실습

사용법 : nmap [Scan Type(s)] [Options] {target specification}

공격자 PC : Kali Linux / 192.168.0.5

희생자 PC : Linux / 192.168.0.8


TARGET SPECIFICATION
  Can pass hostnames, IP addresses, networks, etc.
  예시) scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>: <inputfilename>으로부터 target specifications를 읽어온다.
  -iR <호스트 수>: 무작위로 대상 선택 선택 / 인자값을 0으로 주게되면 스캔을 끝내지 않고 지속하게 된다.
  --exclude <host1[,host2][,host3],...>: 스캔에서 제외할 대상의 쉼표로 구분된 목록을 지정한다.
  --excludefile <exclude_file>: 파일에서 목록을 제외한다.
호스트 검색
  -sL: List Scan - list scan은 지정된 네트워크의 각 호스트를 단순히 나열한다.


  -sn: Ping Scan - 호스트 검색 후 포트 스캔을 비활성화 한다.


  -Pn: -Pn으로 호스트 검색을 비활성화하면 Nmap이 지정된 모든 대상 IP 주소에 대해 요청된 검색 기능을 시도한다.


  -PS/PA/PU/PY[portlist]:  지정된 포트에 대한 TCP SYN/ACK, UDP 또는 SCTP INIT Ping 수행
  -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
  -PO[protocol list]: IP Protocol Ping
  -n/-R: -n(DNS 확인하지 않음) / -R(항상 확인) [default: sometimes]
  --dns-servers <serv1[,serv2],...>: 사용자 지정 DNS 서버 지정
  --system-dns: OS의 DNS resolver 사용
  --traceroute: 각 호스트에 대한 hop 경로 추적


스캔 기법
  -sS/sT/sA/sW/sM: TCP SYN / TCP Connect / TCP ACK / TCP Window / TCP Maimon scans
  -sU: UDP Scan
  -sN/sF/sX: TCP Null(bit를 설정하지 않음), TCP FIN(FIN bit만 설정), TCP Xmas(FIN, PSH, URG 플래그 설정) scans
  --scanflags <flags>: 임의의 TCP 플래그 지정하여 스캔할 수 있음(URG, ACK, PSH, RST, SYN, FIN 조합 가능)
  -sI <zombie host[:probeport]>: Idle scan(실제 IP 주소에서 대상으로 패킷이 전송되지 않음)
  -sY/sZ: SCTP INIT(SCTP에 해당하는 TCP SYN 스캔) / COOKIE-ECHO(SCTP 구현은 열린 포트에서 COOKIE ECHO 청크를 포함하는 패킷을 자동으로 삭제해야 하지만 포트가 닫힌 경우 ABORT를 보내야 한다는 사실을 이용) scans
  -sO: IP protocol scan
  -b <FTP relay host>: FTP bounce scan
포트 사양 및 스캔 순서
  -p <port ranges>: Only scan specified ports
    예시) -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9


  --exclude-ports <port ranges>: 지정한 포트는 포트 스캔에서 제외


  -F: Fast mode - 디폴트 스캔보다 적은 수의 포트로 스캔


  -r: 포트를 랜덤하지 않게 연속적으로 스캔


  --top-ports <number>: 가장 자주 사용하는 포트 위에서부터 <number>에 입력한 포트만큼 스캔


  --port-ratio <ratio>: <ratio> 비율 보다 더 많은 자주 사용하는 포트 스캔(입력값은 0이상 1미만)


서비스/버전 탐지
  -sV: 서비스/버전 정보를 확인하기 위해 열린 포트 조사

  --version-intensity <level>:  0 (light)부터 to 9 (try all probes)까지
  --version-light: 가능성이 가장 높은 probes로 제한 (intensity 2)
  --version-all: 모든 단일 probe 시도 (intensity 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 scripts>: 스크립트에 대한 도움말을 표시
OS 탐지
  -O: OS 탐지 활성화


  --osscan-limit: OS 탐지를 약속된 대상으로 제한
  --osscan-guess: OS를 보다 적극적으로 추측
타이밍 및 성능
  Options which take <time> are in seconds, or append 'ms' (milliseconds),
  's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).

<time>을 사용하는 옵션은 초 단위이거나 '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>: 입력한 <time> 시간이 지나면 타겟 스캔 포기
  --scan-delay/--max-scan-delay <time>: 프로브 간 지연 조정
  --min-rate <number>: 초당 입력한 <number >보다 느리지 않은 패킷 전송
  --max-rate <number>: 초당 입력한 <number>보다 빠르지 않은 패킷 전송
방화벽/IDS 회피 및 스푸핑
  -f; --mtu <val>: fragment 패킷 (선택적으로 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 TTL(Time-to-Live) 필드 설정
  --spoof-mac <mac address/prefix/vendor name>: MAC 주소 스푸핑
  --badsum: 가짜 TCP/UDP/SCTP 체크섬으로 패킷 보내기
출력
  -oN/-oX/-oS/-oG <file>: 일반, XML, script kiddie 및 Grepable 형식의 출력 스캔을 각각 지정된 파일 이름으로 보냄
  -oA <basename>: 한 번에 3가지 주요 형식으로 출력
  -v: 자세한 정보 표시 수준 높이기(효과를 높이려면 -vv 또는 more 사용)
  -d: 디버깅 수준 높이기(효과를 높이려면 -dd 또는 more 사용)
  --reason: 포트가 특정 상태에 있는 이유 표시
  --open: 열려 있는(열려 있을 가능성이 있는) 포트만 표시
  --packet-trace: 전송 및 수신된 모든 패킷 표시
  --iflist: 호스트 인터페이스 및 경로 출력(디버깅용)
  --append-output: clobber가 아닌 지정된 출력 파일에 추가
  --resume <filename>: 중단된 스캔 재개
  --noninteractive: 키보드를 통한 런타임 상호 작용 비활성화
  --stylesheet <path/URL>: XML 출력을 HTML로 변환하는 XSL 스타일시트
  --webxml: 더 이식 가능한 XML을 위한 Nmap.Org의 참조 스타일시트
  --no-stylesheet: XSL 스타일시트와 XML 출력의 연관 방지
기타
  -6: IPv6 스캔 활성화
  -A: OS 탐지, 버전 감지, 스크립트 스캔 및 traceroute 활성화


  --datadir <dirname>: 사용자 지정 Nmap 데이터 파일 위치 지정
  --send-eth/--send-ip: raw 이더넷 프레임 또는 IP 패킷을 사용하여 전송
  --privileged: 사용자에게 모든 권한이 있다고 가정
  --unprivileged: 사용자에게 raw 소켓 권한이 없다고 가정
  -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

 

728x90
반응형