Live Host Identification
arping
- ARP(Address Resolution Protocol)를 사용하여 네트워크에서 호스트의 MAC 주소를 확인하거나, 특정 IP 주소의 사용 가능성을 검사하는 도구
arping 2.25, by Thomas Habets <thomas@habets.se>
사용법: arping [ -0aAbdDeFpPqrRuUvzZ ] [ -w <초> ] [ -W <초> ] [ -S <호스트/IP> ]
[ -T <호스트/IP> ] [ -s <MAC> ] [ -t <MAC> ] [ -c <개수> ]
[ -C <개수> ] [ -i <인터페이스> ] [ -m <유형> ] [ -g <그룹> ]
[ -V <vlan> ] [ -Q <우선순위> ] <호스트/IP/MAC | -B>
옵션:
-0 소스 IP 주소 0.0.0.0으로 ping을 사용합니다. 인터페이스를 아직 구성하지 않았을 때 사용하십시오. 이 경우 MAC ping이 응답하지 않을 수 있습니다. 이는 -S 0.0.0.0의 별칭입니다.
-a 소리로 ping을 보냅니다.
-A 요청된 주소와 일치하는 주소만 계산합니다. (이 기능은 대부분의 작업을 중단할 수 있습니다. 여러 호스트를 동시에 arping할 때만 유용합니다. arping-scan-net.sh 예제를 참조하십시오).
-b -0과 유사하지만 소스 브로드캐스트 주소(255.255.255.255)를 사용합니다. 이 경우 응답이 없을 수 있습니다.
-B 호스트 대신 255.255.255.255 주소를 사용합니다.
-c 개수
요청을 개수만큼만 보냅니다.
-C 개수
-c 및 -w와 관계없이 이 응답 개수만큼 기다립니다.
-d 중복 응답을 찾습니다. 두 개의 서로 다른 MAC 주소로부터 응답이 있을 경우 1로 종료합니다.
-D 응답을 느낌표로 표시하고 누락된 패킷을 점으로 표시합니다.
-e 응답이 없을 경우 소리로 알림.
-F 인터페이스 이름에 대해 스마트하지 않게 처리합니다. (이 스위치가 주어지지 않더라도 -i는 우선합니다).
-g 그룹
nobody 그룹 대신 이 그룹으로 setgid()합니다.
-h 도움말 메시지를 표시하고 종료합니다.
-i 인터페이스
지정된 인터페이스를 사용합니다.
-m 유형
수신 패킷의 타임스탬프 유형을 설정합니다. ping할 때 -vv를 사용하여 사용 가능한 유형을 나열합니다.
-q 오류 메시지를 제외한 모든 메시지를 표시하지 않습니다.
-Q pri 802.1p 우선순위를 설정합니다. 802.1Q(-V)와 함께 사용해야 합니다. 기본값은 0입니다.
-r 원시 출력: 각 응답에 대해 MAC/IP 주소만 표시합니다.
-R 원시 출력: -r과 유사하지만 "상대방"을 표시합니다. -r과 결합하여 사용할 수 있습니다.
-s MAC 소스 MAC 주소를 설정합니다. 이 경우 -p를 사용해야 할 수 있습니다.
-S IP -b 및 -0과 유사하지만 설정된 소스 주소를 사용합니다. 이 경우 대상이 IP에 대한 라우팅이 없으면 응답하지 않을 수 있습니다. 자신이 사용하는 IP를 소유하지 않는 경우 인터페이스에서 프롬프트 모드를 활성화해야 할 수 있습니다(-p 사용). 이 스위치를 사용하면 호스트의 IP 주소를 알 수 있습니다.
-t MAC MAC 주소를 ping할 때 사용할 대상 MAC 주소를 설정합니다.
-T IP 브로드캐스트 ping에 응답하지 않는 MAC에 ping할 때 사용할 -T를 대상으로 합니다.
예제:
MAC-A의 주소를 확인하려면 MAC-B 및 IP-B에 대한 지식을 사용하십시오.
$ arping -S <IP-B> -s <MAC-B> -p <MAC-A>
-p 인터페이스에서 프롬프트 모드를 활성화합니다. 사용하는 MAC 주소를 "소유"하지 않을 경우 사용합니다.
-P ARP 요청 대신 응답을 보냅니다. -U와 함께 사용할 수 있습니다.
-u MAC을 ping할 때 수신/전송을 표시합니다.
-U 요청되지 않은 ARP를 보냅니다.
-v 자세한 출력. 더 많은 메시지를 위해 두 번 사용할 수 있습니다.
-V num 802.1Q 태그를 추가합니다. 기본값은 VLAN 태그 없음입니다.
-w 초 ping이 전송되거나 수신된 패킷 수와 관계없이 종료되기 전까지 대기할 초를 지정합니다.
-W 초 ping 사이의 대기 시간을 설정합니다.
-z seccomp 활성화
-Z seccomp 비활성화 (기본값)
- 특징
- MAC 주소 확인: 특정 IP 주소에 대한 MAC 주소를 조회하여 해당 호스트가 네트워크에 존재하는지를 확인할 수 있다.
- ARP 요청 전송: ARP 요청을 보내 특정 IP 주소에 대한 응답을 기다리고, 응답이 올 경우 해당 IP 주소와 연관된 MAC 주소를 수신한다.
- Ping 기능: 일반적인 Ping 명령어와 유사하게 작동하여 네트워크의 호스트가 활성 상태인지 확인할 수 있다.
- 소스 IP 설정: ARP 요청을 보낼 때 사용할 소스 IP 주소를 설정할 수 있다.
- 프롬프트 모드 활성화: 요청을 보낼 때 사용하는 MAC 주소를 직접 설정할 수 있는 기능을 제공한다.
- 중복 응답 탐지: 동일한 IP에 대해 두 개 이상의 다른 MAC 주소에서 응답이 올 경우 이를 탐지하여 네트워크의 구성 상태를 진단할 수 있다.
- 출력 내용
- 보낸 ARP 요청: 어떤 IP 주소에 대한 ARP 요청이 전송되었는지를 나타낸다.
- 응답 받은 MAC 주소: 해당 IP 주소에 대해 응답을 보내온 MAC 주소가 표시된다.
- 패킷 통계: 전송된 패킷 수, 수신된 패킷 수, 손실된 패킷 수와 같은 통계 정보가 제공된다.
- 출력 예시
┌──(root㉿kaya)-[~]
└─# arping 172.16.20.6
ARPING 172.16.20.6
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=0 time=337.420 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=1 time=271.535 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=2 time=233.644 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=3 time=251.227 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=4 time=141.939 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=5 time=281.855 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=6 time=283.949 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=7 time=166.876 usec
60 bytes from 00:50:56:2b:51:f3 (172.16.20.6): index=8 time=150.986 usec
^C
--- 172.16.20.6 statistics ---
9 packets transmitted, 9 packets received, 0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.142/0.235/0.337/0.064 ms
nmap
- 네트워크 탐지 및 보안 감사 도구
사용법: nmap [스캔 유형] [옵션] {대상 사양}
대상 사양:
호스트 이름, IP 주소, 네트워크 등을 지정할 수 있습니다.
예: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <inputfilename>: 호스트/네트워크 목록에서 입력
-iR <num hosts>: 랜덤 대상을 선택
--exclude <host1[,host2][,host3],...>: 호스트/네트워크 제외
--excludefile <exclude_file>: 파일에서 제외 목록
호스트 탐지:
-sL: 리스트 스캔 - 단순히 스캔할 대상을 나열합니다.
-sn: 핑 스캔 - 포트 스캔 비활성화
-Pn: 모든 호스트를 온라인으로 간주 -- 호스트 탐지 건너뜀
-PS/PA/PU/PY[portlist]: 주어진 포트에 대해 TCP SYN/ACK, UDP 또는 SCTP 탐지
-PE/PP/PM: ICMP 에코, 타임스탬프 및 넷마스크 요청 탐지
-PO[protocol list]: IP 프로토콜 핑
-n/-R: DNS 해석을 전혀 하지 않거나/항상 해석합니다 [기본값: 때때로]
--dns-servers <serv1[,serv2],...>: 사용자 지정 DNS 서버 지정
--system-dns: OS의 DNS 리졸버 사용
--traceroute: 각 호스트에 대한 홉 경로 추적
스캔 기술:
-sS/sT/sA/sW/sM: TCP SYN/연결()/ACK/윈도우/마이몬 스캔
-sU: UDP 스캔
-sN/sF/sX: TCP 널, FIN 및 크리스마스 스캔
--scanflags <flags>: TCP 스캔 플래그 사용자 지정
-sI <zombie host[:probeport]>: idle 스캔
-sY/sZ: SCTP INIT/COOKIE-ECHO 스캔
-sO: IP 프로토콜 스캔
-b <FTP relay host>: FTP 바운스 스캔
포트 사양 및 스캔 순서:
-p <port ranges>: 지정된 포트만 스캔합니다.
예: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <port ranges>: 스캔에서 지정된 포트를 제외합니다.
-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 scripts>: 스크립트에 대한 도움말 표시.
<Lua scripts>는 스크립트 파일 또는 스크립트 카테고리의 쉼표로 구분된 목록입니다.
OS 탐지:
-O: OS 탐지를 활성화합니다.
--osscan-limit: 유망한 대상에 대한 OS 탐지 제한
--osscan-guess: OS를 더 공격적으로 추측합니다.
타이밍 및 성능:
<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>: 이 시간 이후에 대상을 포기합니다.
--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 address/prefix/vendor name>: 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: XML 출력과 XSL 스타일시트의 연관 방지
기타:
-6: IPv6 스캔 활성화
-A: OS 탐지, 버전 탐지, 스크립트 스캔 및 트레이서우트 활성화
--datadir <dirname>: 사용자 지정 Nmap 데이터 파일 위치 지정
--send-eth/--send-ip: 원시 이더넷 프레임 또는 IP 패킷 사용하여 전송
--privileged: 사용자가 완전한 권한을 갖고 있다고 가정
- 특징
- 호스트 탐지: Nmap은 네트워크에서 활성화된 호스트를 식별할 수 있다. 이는 ICMP 핑, TCP 핑, UDP 핑 등의 방법을 통해 수행된다.
- 포트 스캐닝: 사용자가 지정한 호스트에서 열린 포트를 스캔하고, 각 포트에서 실행 중인 서비스 정보를 수집할 수 있다. Nmap은 TCP 및 UDP 포트를 스캔할 수 있는 여러 가지 방법을 제공한다.
- 서비스 및 버전 탐지: 열린 포트에 대해 Nmap은 서비스 및 해당 버전 정보를 수집할 수 있다. 이는 보안 취약점을 평가하는 데 유용하다.
- 운영 체제 탐지: Nmap은 호스트의 운영 체제를 식별하는 기능을 제공한다. 이는 TCP/IP 스택의 특성을 분석하여 수행된다.
- 스크립트 엔진: Nmap은 Lua로 작성된 스크립트를 실행하여 다양한 기능을 추가할 수 있는 Nmap Scripting Engine(NSE)을 제공한다. 이를 통해 특정 서비스에 대한 공격 탐지, 정보 수집 및 자동화된 작업이 가능하다.
- 타이밍 및 성능 조정: Nmap은 스캔 속도 및 패킷 전송 간의 지연 시간을 조정할 수 있는 다양한 옵션을 제공하여 네트워크 환경에 맞는 최적의 스캔을 수행할 수 있도록 한다.
- 방화벽 및 IDS 회피: Nmap은 방화벽 및 침입 탐지 시스템(IDS)을 우회할 수 있는 다양한 스캔 기법을 제공하여 사용자에게 더 많은 유연성을 제공한다.
- 출력 내용
- 시작 정보:
Nmap의 버전 정보와 실행 시간. - 호스트 정보:
스캔 대상 IP 주소와 해당 호스트의 상태 (예: "Host is up" 또는 "Host is down").
왕복 지연 시간 (latency). - 포트 상태:
스캔한 포트 목록과 각 포트의 상태 (예: "open", "closed", "filtered").
각 포트에 할당된 서비스 정보 (예: SSH, HTTP 등). - MAC 주소:
해당 호스트의 MAC 주소와 제조사 정보. - 스캔 완료 메시지:
스캔한 IP 주소 수, 활성 호스트 수, 스캔에 걸린 시간.
- 시작 정보:
┌──(root㉿kaya)-[~]
└─# nmap 172.16.20.6
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-21 14:15 KST
Nmap scan report for 172.16.20.6
Host is up (0.000072s latency).
Not shown: 987 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
139/tcp open netbios-ssn
143/tcp open imap
443/tcp open https
445/tcp open microsoft-ds
3306/tcp open mysql
8080/tcp open http-proxy
9090/tcp open zeus-admin
MAC Address: 00:50:56:2B:51:F3 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds
nmap 포트 스캐닝 방식
- TCP SYN Scan (-sS)
- 작동 원리
- Nmap은 대상 포트에 SYN 패킷을 전송하고, 응답을 통해 포트 상태를 판단한다.
열린 포트는 SYN-ACK 응답을 보내고, 닫힌 포트는 RST 응답을 보낸다.
- Nmap은 대상 포트에 SYN 패킷을 전송하고, 응답을 통해 포트 상태를 판단한다.
- 해석 방법:
- SYN-ACK 응답은 해당 포트가 열려 있음을 나타내며, RST 응답은 닫혀 있음을 나타낸다.
- 장점:
- 탐지되지 않으며, 비공식적인 연결을 시도하므로 방화벽 우회에 유리하다.
- 단점:
- 일부 방화벽에서는 SYN 스캔을 차단할 수 있다. 따라서 모든 포트의 상태를 정확하게 파악할 수 없다.
- 작동 원리
- TCP Connect Scan (-sT)
- 작동 원리:
- Nmap은 TCP 연결을 설정하기 위해 대상 포트에 SYN 패킷을 전송하고, 연결을 완료한 후 연결을 종료한다.
- 해석 방법:
- 연결이 성공하면 포트가 열려 있다고 판단하고, 실패하면 닫혀 있다고 판단한다.
- 장점:
- 간단하고 신뢰성이 높다. 방화벽 설정에 관계없이 사용할 수 있다.
- 단점:
- 완전한 연결을 시도하기 때문에 탐지될 위험이 있다.
- 작동 원리:
- TCP ACK Scan (-sA)
- 작동 원리:
- Nmap은 ACK 패킷을 전송하여 방화벽이나 필터링 장비가 어떻게 구성되어 있는지 파악한다.
- 해석 방법:
- 응답이 없으면 포트가 필터링되고 있다고 판단하고, RST 응답이 오면 포트가 열려 있다고 판단한다.
- 장점:
- 방화벽의 존재 여부와 설정을 파악할 수 있다.
- 단점:
- 포트 상태를 정확하게 파악할 수 없고, 방화벽 설정에 따라 오해의 소지가 있다.
- 작동 원리:
- UDP Scan (-sU)
- 작동 원리:
- Nmap은 대상 포트에 UDP 패킷을 전송하고, 응답 패킷을 통해 포트 상태를 판단한다.
- 해석 방법:
- ICMP 포트 불가 메시지가 오면 포트가 닫혀 있다고 판단하고, 응답이 없으면 포트가 열려 있거나 필터링되고 있다고 판단한다.
- 장점:
- UDP 서비스 탐지에 유용하다.
- 단점:
- 응답이 없는 경우 해석이 어려우며, 스캔 속도가 느리고 탐지가 쉽다.
- 작동 원리:
- Idle Scan (-sI)
- 작동 원리:
- Nmap은 제3의 호스트를 이용하여 타겟의 포트 상태를 확인한다. 이때, 공격자는 해당 호스트의 IP를 이용하여 간접적으로 타겟을 스캔한다.
- 해석 방법:
- 응답 패킷을 통해 타겟 포트 상태를 판단한다.
- 장점:
- 탐지되지 않고 스캔할 수 있다.
- 단점:
- 제3의 호스트가 필요하며, 결과가 불확실할 수 있다.
- 작동 원리:
- SCTP INIT Scan (-sY)
- 작동 원리:
- SCTP 프로토콜의 INIT 패킷을 사용하여 포트 상태를 파악한다.
- 해석 방법:
- 응답에 따라 포트 상태를 판단한다.
- 장점:
- SCTP 서비스를 사용하는 시스템에서 유용하다.
- 단점:
- SCTP를 지원하지 않는 시스템에서는 사용할 수 없다.
- 작동 원리:
- IP Protocol Scan (-sO)
- 작동 원리:
- Nmap은 다양한 IP 프로토콜(예: ICMP, TCP, UDP 등)을 전송하여 해당 프로토콜이 열려 있는지를 확인한다.
- 해석 방법:
- 응답을 통해 프로토콜 상태를 판단한다.
- 장점:
- 다양한 프로토콜을 탐지할 수 있다.
- 단점:
- 특정 프로토콜만을 지원하는 시스템에서는 한계가 있다.
- 작동 원리: