서론
네트워크를 분석하는 도구는 용도에 따라 여러가지 도구(Tools)가 있습니다.
그 중 하나인 NMAP에 대해 알아 보려고 합니다.
Nmap(Network Mapper)
네트워크 탐사 및 보안 평가 도구로 널리 사용되는 오픈 소스 소프트웨어입니다.
Nmap은 네트워크 호스트들 간의 연결 상태, 오픈 포트, 서비스 버전 정보 등을 확인하는 데 사용됩니다.
이 도구는 다양한 운영 체제에서 실행할 수 있으며, 명령 줄 인터페이스를 통해 사용자가 명령을 입력하여 실행할 수 있습니다.
Nmap의 주요 기능 및 용도
1. **포트 스캐닝:**
Nmap은 네트워크 호스트들의 오픈 포트를 탐지하고 그 상태를 확인하는 데 사용됩니다. 이를 통해 시스템의 보안 취약점을 파악하고 네트워크의 취약성을 평가할 수 있습니다.
2. **OS 감지:**
Nmap은 호스트의 운영 체제(OS)를 추측하는 데 사용됩니다. 네트워크에서 상호 작용하고 있는 시스템의 운영 체제를 식별하여 보안 평가나 대응 방안 수립에 활용될 수 있습니다.
3. **서비스 식별:**
Nmap은 오픈된 포트에서 동작하는 서비스의 버전 정보를 식별할 수 있습니다. 이를 통해 해당 서비스의 취약성 여부를 확인하고 업데이트 여부를 파악할 수 있습니다.
4. **스크립트 가능성:**
Nmap은 NSE(Nmap Scripting Engine)라는 기능을 통해 사용자 지정 스크립트를 실행할 수 있습니다. 이를 통해 더 자세한 정보를 수집하거나 특정 시나리오에 따른 테스트를 수행할 수 있습니다.
5. **보안 평가 및 감사:**
네트워크 보안 전문가는 Nmap을 사용하여 시스템의 취약성을 평가하고 보안 문제를 식별할 수 있습니다. 또한, 시스템 관리자는 네트워크 환경의 변화를 모니터링하고 네트워크 장비의 구성 상태를 확인할 수 있습니다.
Nmap 다운로드
Nmap 7.94은 여기서 다운로드가 가능합니다.
Kali Linux에서 Nmap 사용법
매뉴얼 페이지https://nmap.org/book.man.html
사용법: 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 스캔 - 포트 스캔 비활성화
-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 Null, FIN 및 Xmas 스캔
--scanflags <플래그>: TCP 스캔 플래그 사용자 정의
-sI <좀비 호스트[: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 <번호>: <번호>개의 가장 일반적인 포트를 검색합니다.
--port-ratio <ratio>: <ratio>보다 더 일반적인 포트를 검색합니다.
서비스/버전 감지:
-sV: 서비스/버전 정보를 확인하기 위해 열린 포트를 조사합니다.
--version-intensity <level>: 0(약함)에서 9(모든 프로브 시도)까지 설정합니다.
--version-light: 가능성이 가장 높은 프로브로 제한(강도 2)
--version-all: 모든 단일 프로브를 시도합니다(강도 9).
--version-trace: 자세한 버전 검색 활동 표시(디버깅용)
스크립트 스캔:
-sC: --script=default와 동일
--script=<Lua 스크립트>: <Lua 스크립트>는 쉼표로 구분된 목록입니다.
디렉토리, 스크립트 파일 또는 스크립트 카테고리
--script-args=<n1=v1,[n2=v2,...]>: 스크립트에 인수를 제공합니다.
--script-args-file=filename: 파일에 NSE 스크립트 인수 제공
--script-trace: 보내고 받은 모든 데이터 표시
--script-updatedb: 스크립트 데이터베이스를 업데이트합니다.
--script-help=<Lua 스크립트>: 스크립트에 대한 도움말을 표시합니다.
<Lua 스크립트>는 쉼표로 구분된 스크립트 파일 목록입니다.
스크립트 카테고리.
OS 감지:
-O: OS 감지 활성화
--osscan-limit: OS 감지를 유망한 대상으로 제한합니다.
--osscan-guess: OS를 더욱 적극적으로 추측합니다.
타이밍 및 성능:
<time>이 걸리는 옵션은 초 단위이거나 'ms'(밀리초)를 추가합니다.
's'(초), 'm'(분) 또는 'h'(시간)를 값(예: 30m)으로 바꿉니다.
-T<0-5>: 타이밍 템플릿 설정(높을수록 빠릅니다)
--min-hostgroup/max-hostgroup <크기>: 병렬 호스트 스캔 그룹 크기
--min-parallelism/max-parallelism <numprobes>: 프로브 병렬화
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <시간>: 다음을 지정합니다.
프로브 왕복 시간.
--max-retries <tries>: 포트 스캔 프로브 재전송 횟수를 제한합니다.
--host-timeout <time>: 이 시간이 지나면 목표를 포기합니다.
--scan-delay/--max-scan-delay <시간>: 프로브 간 지연 조정
--min-rate <숫자>: 초당 <숫자>보다 느리지 않게 패킷을 보냅니다.
--max-rate <숫자>: 초당 <숫자>보다 빠르지 않게 패킷을 보냅니다.
방화벽/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 <옵션>: 지정된 IP 옵션을 사용하여 패킷을 보냅니다.
--ttl <val>: IP TTL(Time-To-Live) 필드 설정
--spoof-mac <mac 주소/접두사/공급업체 이름>: MAC 주소를 스푸핑합니다.
--badsum: 가짜 TCP/UDP/SCTP 체크섬을 사용하여 패킷을 보냅니다.
산출:
-oN/-oX/-oS/-oG <file>: 일반, XML, s|<rIpt kIddi3의 출력 스캔,
및 Grepable 형식을 각각 주어진 파일 이름에 적용합니다.
-oA <basename>: 세 가지 주요 형식을 동시에 출력합니다.
-v: 자세한 정보 수준을 높입니다(효과를 높이려면 -vv 이상을 사용하세요).
-d: 디버깅 수준을 높입니다(효과를 높이려면 -dd 이상을 사용하세요).
--reason: 포트가 특정 상태에 있는 이유를 표시합니다.
--open: 열려 있는(또는 열려 있을 가능성이 있는) 포트만 표시합니다.
--packet-trace: 보내고 받은 모든 패킷을 표시합니다.
--iflist: 호스트 인터페이스 및 경로 인쇄(디버깅용)
--append-output: 지정된 출력 파일을 방해하는 대신 추가합니다.
--resume <filename>: 중단된 스캔을 재개합니다.
--noninteractive: 키보드를 통한 런타임 상호 작용 비활성화
--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
'Network' 카테고리의 다른 글
네트워크 패킷 분석[Network Packet Analysis] - 3 (0) | 2023.07.20 |
---|---|
네트워크 패킷 분석[Network Packet Analysis] - 2 (0) | 2023.07.18 |
네트워크 패킷 분석[Network Packet Analysis] - 1 (0) | 2023.07.17 |
댓글