Nmap 은 호스트 상태를 어떻게 통계합니까?
Nmap 는 네트워크의 호스트 (호스트 검색), 호스트의 열린 포트 (포트 검색 또는 열거), 해당 포트의 소프트웨어 및 버전 (서비스 검색), 운영 체제, 하드웨어 주소 및 소프트웨어 버전 감지의 취약성 (Nmap 의 스크립트) 을 감지하는 데 사용할 수 있는 매우 강력한 유틸리티입니다. Nmap 은 명령줄 인터페이스와 그래픽 사용자 인터페이스가 있는 매우 일반적인 도구입니다. 주요 내용은 다음과 같습니다. Nmap 검색, 운영 체제 테스트의 중요한 매개 변수 소개. Nmap 는 자습서 Nmap 를 사용하여 TCP connect () 스캔, TCP 역방향 인식 스캔, FTP 바운스 스캔 등 다양한 기술을 사용하여 검사를 수행합니다. 이러한 모든 스캔 유형에는 장점과 단점이 있습니다. 이러한 문제는 다음에 살펴보겠습니다. Nmap 사용은 단순 (기본) 검색과 사전 스캔 간에 차이가 있기 때문에 대상 호스트에 따라 달라집니다. 올바른 결과를 얻으려면 방화벽과 침입 탐지/방어 시스템을 우회하는 첨단 기술이 필요합니다. 다음은 몇 가지 기본 명령과 사용 예입니다. 단일 호스트를 스캔하고 명령은 다음과 같습니다.
코드는 다음과 같습니다.
# nmapnxadmin.com # nmap192.168.1.2
다음 명령을 사용하여 전체 서브넷을 검색합니다.
코드는 다음과 같습니다.
# nmap192.168.1.1/24
다음 명령을 사용하여 여러 대상을 스캔합니다.
코드는 다음과 같습니다.
# nmap192.168.1.2192.1;
다음과 같이 일련의 대상을 스캔합니다.
코드는 다음과 같습니다.
# nmap192.168.1-100 (스캔된 IP 주소는/kloc-0 입니다
Ip 주소 목록이 있는 경우 txt 파일로 저장하고 namp 와 같은 디렉토리에 배치한 다음 이 txt 에 있는 모든 호스트를 검색합니다. 이 명령은 다음과 같습니다.
코드는 다음과 같습니다.
#nmap -iL target.txt
검색하는 모든 호스트 목록을 보려면 다음 명령을 사용합니다.
코드는 다음과 같습니다.
# nmap-sl192.168.1.1/24
하나의 IP 를 제외한 모든 서브넷 호스트를 검색합니다. 명령:
코드는 다음과 같습니다.
# nmap192.168.1.1/24-/kloc-0 제외
스캔 파일에서 IP 이외의 서브넷 호스트 명령.
코드는 다음과 같습니다.
# nmap192.168.1.1/24-exclu val xxx.txx
특정 호스트에서 포트 80,21,23 을 검색합니다. 이 명령은 다음과 같습니다
코드는 다음과 같습니다.
#nmap-p80, 2 1, 23192.168.1./kloc
위에서 우리는 Nmap 의 기초를 배웠다. 이제 Nmap 의 스캐닝 기술에 대해 좀 더 자세히 살펴보겠습니다.
Tcp SYN 스캔 (sS) 은 Nmap 가 전체 핸드쉐이크 없이 원격 호스트의 정보를 얻을 수 있도록 하는 기본적인 스캔 방법으로, 반오픈 스캔이라고 합니다. Nmap 은 원격 호스트에 SYN 패킷을 전송하지만 세션을 생성하지 않습니다. 따라서 세션이 구성되지 않았기 때문에 대상 호스트에 로깅을 생성하지 않습니다. 이것이 바로 SYN 스캔의 장점입니다. Nmap 명령에 스캔 유형이 지정되지 않은 경우 기본값은 Tcp SYN 입니다. 그러나 루트/관리자 권한이 필요합니다.
코드는 다음과 같습니다.
# nmap-ss192.168.1.1
Tcp 접속 () 검색 (sT) SYN 검색이 선택되지 않은 경우 Tcp 접속 () 검색이 기본 검색 모드입니다. Tcp SYN 스캔과는 달리 TCP connect () 스캔은 세 번의 핸드셰이크를 완료하고 시스템의 connect () 를 호출해야 합니다. Tcp connect () 스캔 기술은 Tcp 및 UDP 포트 찾기에만 적용됩니다.
코드는 다음과 같습니다.
# nmap-ST192.168.1.1
Udp 스캔 (sU) 은 이름에서 알 수 있듯이 대상 호스트에서 열린 UDP 포트를 찾는 데 사용됩니다. 이 기술은 UDP 포트용이므로 SYN 패킷을 보낼 필요가 없습니다. UDP 스캔은 대상 호스트에 UDP 패킷을 보내고 응답을 기다립니다. ICMP 도달 불가 오류 메시지가 반환되면 포트가 닫히고 정확하고 적절한 응답을 받으면 포트가 열립니다.
코드는 다음과 같습니다.
# nmap-su192.168.1.1
FINscan(sF)
때때로 TcpSYN 스캔은 방화벽이 있기 때문에 가장 좋은 스캔 방법이 아닙니다. 대상 호스트에 IDS 및 IPS 시스템이 있을 수 있으며 방화벽이 SYN 패킷을 가로채는 경우가 있습니다. FIN 플래그가 있는 패킷을 보낼 때는 TCP 핸드셰이크가 필요하지 않습니다.
코드는 다음과 같습니다.
& LTA href = "mailto: root @ Bt: ~ # nmap-SF192.168./kloc-; /a > & lt/p & gt;; & LTP> starting nmap 5.51at2012-07-0819: 2/kloc- 표시되지 않음: 999 closedportsportstateservice111/TCP open | filtered rpcbind
FIN 스캔은 대상 호스트에 로그를 생성하지 않습니다 (FIN 스캔의 장점 중 하나). 모든 유형의 스캔은 다릅니다. FIN 스캔에서 보낸 패킷에는 FIN ID 만 포함되며 빈 스캔은 패킷에 바이트를 보내지 않습니다. 크리스마스 스캐닝은 FIN, PSH 및 URG 로고가 있는 패킷을 보냅니다.
펄스 스캔
PING 스캔은 호스트가 네트워크에 있는지 확인하는 데만 사용된다는 점에서 다른 검색 방법과 다릅니다. 포트가 열려 있는지 확인하는 데는 사용되지 않습니다. PING 스캔에는 루트 권한이 필요합니다. 사용자에게 루트 권한이 없으면 connect () 를 사용하여 PING 검색을 호출합니다.
코드는 다음과 같습니다.
# nmap-sp192.168.1.1
버전 감지 (sV)
버전 감지 대상 호스트 및 포트에서 실행 중인 소프트웨어 버전을 검색할 수 있습니다. 다른 스캐닝 기술과 달리, 타겟 호스트의 오픈 포트를 스캔하는 것이 아니라 오픈 포트에서 정보를 가져와서 소프트웨어 버전을 결정해야 합니다. 버전 감지 검사를 사용하기 전에 열려 있는 포트를 스캔해야 합니다.
코드는 다음과 같습니다.
# nmap-SV192.168.1..1
유휴 스캔 (sL)
Idlescan 은 고급 스캐닝 기술입니다. 실제 호스트 Ip 를 사용하여 패킷을 보내는 대신 다른 대상 네트워크의 호스트를 사용하여 패킷을 보냅니다.
코드는 다음과 같습니다.
# nmap-sl192.168.1.6192./kloc-
Idlescan 은 이상적인 익명 스캐닝 기술로 대상 네트워크의 호스트192.168.1.6 으로 데이터를 전송하여1을 얻습니다
또한 FTP 바운스, 세그먼트 스캔 및 IP 프로토콜 스캔과 같은 추가 스캔 기술이 필요합니다. 위에서 주요 스캐닝 방법에 대해 논의했습니다.
Nmap 운영체제 검사 (o)
Nmap 의 가장 중요한 기능 중 하나는 운영 체제와 소프트웨어를 원격으로 감지할 수 있다는 것입니다. Nmap 의 OS 감지 기술은 침투 테스트에서 원격 호스트의 운영 체제와 소프트웨어를 이해하는 데 유용하며, 얻은 정보를 통해 알려진 취약점을 파악할 수 있습니다. Nmap 에는 2600 개 이상의 운영 체제에 대한 정보를 포함하는 nmap-OS-DB 라는 데이터베이스가 있습니다. Nmap 은 TCP 및 UDP 패킷을 타겟 시스템으로 전송한 다음 데이터베이스와 대조하여 결과를 확인합니다.
코드는 다음과 같습니다.
Initiatingsynstealthscanat10: 21scanning localhost (127.0.; Kloc-0/1/TCP on127.0.0.1completedsynstealthscanat/
위의 예는 Nmap 가 먼저 열린 포트를 검색한 다음 패킷을 전송하여 원격 운영 체제를 검색한다는 것을 분명히 보여 줍니다. 운영 체제 감지 매개변수는 o (대문자 o) 입니다
Nmap 운영 체제 지문 인식 기술;
디바이스 유형 (라우터, 워크그룹 등). ) 운영 체제 실행 (운영 체제 실행) 세부 정보 (운영 체제 이름 및 버전) 네트워크 거리 (대상과 공격자 간의 거리 홉 수)
원격 호스트에 방화벽, IDS 및 IPS 시스템이 있는 경우 -PN 명령을 사용하여 원격 호스트에 ping 을 수행하지 않도록 할 수 있습니다. 방화벽으로 인해 ping 요청이 차단되는 경우도 있기 때문입니다. PN 명령은 Nmap 에게 원격 호스트에 대해 ping 을 수행하지 말라고 지시합니다.
코드는 다음과 같습니다.
# nmap-o-pn192.168.1.1/24
위의 명령은 원격 호스트가 네트워크에서 활성 상태이므로 PING 요청을 보낼 필요가 없다고 발신자에게 알립니다. -PN 스위치를 사용하면 ping 명령을 무시할 수 있지만 호스트의 시스템 검색에 영향을 주지 않습니다.
Nmap 의 운영 체제 테스트는 열려 있거나 닫혀 있는 포트를 기반으로 합니다. OSS 에서 열려 있거나 닫혀 있는 하나 이상의 포트를 감지할 수 없는 경우 다음 오류가 반환됩니다.
코드는 다음과 같습니다.
경고: osscanresultsmaybeunreliable 최소한 1 open 과 1closedport 를 찾을 수 없기 때문입니다
OSScan 결과는 열려 있거나 닫혀 있는 하나 이상의 포트를 찾을 수 없기 때문에 신뢰할 수 없습니다.
이 상황은 이상적이지 않습니다. 원격 호스트가 운영 체제 감지를 방지해야 합니다. Nmap 에서 원격 운영 체제 유형을 감지할 수 없는 경우 -osscan_limit 테스트를 사용할 필요가 없습니다.
Nmap 를 통해 원격 운영 체제를 정확하게 감지하기가 어렵기 때문에 Nmap 의 추측 기능 옵션과-osscan-guess 를 사용하여 목표에 가장 가까운 일치하는 운영 체제 유형을 추측해야 합니다.
코드는 다음과 같습니다.
# nmap-o-osscan-guess192.168.1.1
다음은 스캔 유형에 대한 설명입니다
-sTTCPconnect () 스캔: 가장 기본적인 TCP 스캔 방법입니다. Connect () 는 연결을 열기 위해 운영 체제에서 제공하는 시스템 호출입니다. 대상 포트가 수신 중이면 connect () 가 성공적으로 반환됩니다. 그렇지 않으면 포트가 도달할 수 없습니다. 이 기술의 가장 큰 장점은 루트 권한이 필요하지 않다는 것입니다. 모든 UNIX 사용자는 이 시스템 호출을 자유롭게 사용할 수 있습니다. 이 검색은 쉽게 감지할 수 있으며 타겟 호스트의 로그에 대량의 접속 요청 및 오류 정보가 기록됩니다.
-sSTCPSYN: 모든 TCP 연결을 열 필요가 없기 때문에 이 기술을 일반적으로 반개라고 합니다. TCP 동기화 패킷 (SYN) 을 보내고 응답을 기다릴 수 있습니다. 상대방이 SYN|ACK 패킷을 반환하면 대상 포트가 수신 중인 것입니다. RST 패킷이 반환되면 대상 포트에 리스너가 없음을 의미합니다. SYN|ACK 패키지를 받으면 소스 호스트는 즉시 RST (리셋) 패키지를 보내 타겟 호스트와의 연결을 끊습니다. 이는 실제로 운영 체제 커널에 의해 자동으로 수행됩니다. 이 기술의 가장 큰 장점은 시스템 로그에 이를 기록할 수 있는 시스템이 거의 없다는 것입니다. 하지만 SYN 패키지를 사용자 정의하려면 루트 권한이 필요합니다.
-sF-sX-sN secret FIN 패킷 스캔, XmasTree 및 null 스캔 모드: SYN 스캔이 확실하지 않은 경우에도 사용됩니다. 일부 방화벽 및 패킷 필터링 소프트웨어는 제한된 포트로 전송되는 SYN 패킷을 모니터링할 수 있으며, synlogger 및 Courtney 와 같은 일부 프로그램은 이러한 검색을 감지할 수 있습니다. 이러한 고급 스캐닝 방법은 이러한 간섭을 피할 수 있습니다. 일부 스캔 방법의 이론적 근거는 닫힌 포트가 프로브 패킷의 RST 패킷에 응답해야 하고 열린 포트는 문제가 있는 패킷을 무시해야 한다는 것입니다 (RFC793 64 페이지 참조). FIN 스캔은 노출된 FIN 패킷을 사용하여 탐지하고 크리스마스 트리 스캔은 열린 패킷의 FIN, URG 및 PUSH 플래그를 켭니다. 불행히도, Microsoft 는 이 기준을 완전히 무시하고 다른 부뚜막을 만들기로 결정했다. 따라서 이 스캔 방법은 Windows95/NT 에 유효하지 않습니다. 하지만 다른 관점에서 볼 때, 이 방법으로 두 개의 다른 플랫폼을 구분할 수 있습니다. 이 검색 방법을 사용하여 열린 포트를 찾을 수 있다면 대상이 Windows 를 실행하고 있지 않은지 확인할 수 있습니다. -sF, -sX 또는 -sN 검색을 사용하여 모든 포트 종료를 표시하고 SYN 검색을 사용하여 열린 포트를 표시하면 대상 호스트에서 Windwos 시스템을 실행 중일 수 있음을 확인할 수 있습니다. 이제 nmap 에는 임베디드 운영 체제 감지 기능이 있기 때문에 이 방법은 별로 쓸모가 없습니다. 시스코, BSDI, HP /UX, MYS, IRIX 등 windows 와 동일한 처리 방법을 사용하는 시스템도 있습니다. 패킷이 폐기되어야 할 때 이러한 시스템은 모두 열린 포트에서 재설정 패킷을 보냅니다.
-sPping 검사: 때로는 현재 네트워크에서 실행 중인 호스트를 알고 싶을 때가 있습니다. Nmap 은 지정된 네트워크의 각 IP 주소로 ICMPecho 요청 패킷을 전송하여 이 작업을 수행할 수 있습니다. 호스트가 실행 중인 경우 응답합니다. 불행히도 microsoft.com 과 같은 일부 웹 사이트는 ICMPecho 가 패킷을 요청하지 못하도록 합니다. 그러나 기본적으로 nmap 은 TCPack 패킷을 포트 80 으로 보낼 수도 있습니다. RST 패킷을 받으면 호스트가 실행 중임을 의미합니다. Nmap 에서 사용하는 세 번째 기술은 SYN 패킷을 보낸 다음 RST 또는 SYN/ACK 패킷을 기다리는 것입니다. Root 는 루트가 아니고 nmap 은 connect () 메서드를 사용합니다. 기본적으로 (루트 사용자) nmap 은 ICMP 와 ACK 기술을 동시에 사용합니다. Nmap 은 어떤 상황에서도 ping 검색을 수행하고 대상 호스트가 실행 중인 경우에만 후속 검색을 수행합니다. 대상 호스트가 실행 중인지 여부만 알고 다른 검색은 하지 않으려는 경우 이 옵션을 사용합니다.
-sUUDP 검색: 호스트에서 사용할 수 있는 UDP (user datagram protocol, RFC768) 서비스를 알고 싶은 경우 이 검색 방법을 사용할 수 있습니다. Nmap 은 먼저 대상 호스트의 각 포트에 0 바이트의 UDP 패킷을 보냅니다. 포트가 도달 할 수없는 ICMP 메시지를 받으면 포트가 닫힙니다. 그렇지 않으면 열려 있다고 생각합니다. 어떤 사람들은 UDP 스캔이 무의미하다고 생각할지도 모릅니다. 그러나, 나는 종종 최근의 solarisrpcbind 결함을 생각한다. Rpcbind 는 32770 보다 큰 공개되지 않은 UDP 포트에 숨겨져 있습니다. 따라서 포트111(Portmap 에 잘 알려진 포트 번호) 이 방화벽에 의해 차단되어도 중요합니다. 그런데 어떤 포트가 30,000 보다 크고 프로그램 감청을 할 수 있나요? UDP 로 스캔하면 됩니다! CDcBackOrifice 의 백도어 프로그램은 Windows 호스트의 구성 가능한 UDP 포트 중 하나에 숨겨져 있습니다. 몇 가지 일반적인 보안 결함이 있지만 SNMP, TFTP 및 NFS 와 같은 일부 서비스는 UDP 프로토콜을 사용합니다. 불행하게도 대부분의 호스트가 ICMP 오류 메시지의 비율을 제한하기 때문에 UDP 스캔은 때때로 매우 느립니다 (RFC 18 12 권장). 예를 들어 Linux 커널 (net/ipv4/icmp.h 파일) 에서는 4 초마다 80 개의 대상 CMP 메시지만 나타날 수 있습니다. 이 비율을 넘으면 1/4 초 벌을 받아야 한다. Solaris 는 초당 약 2 개의 ICMP 도달 불가 메시지만 허용하여 스캔 속도가 더 느립니다. Nmap 는 이 제한의 비율을 감지하여 대상 호스트에서 폐기되는 쓸데없는 패킷을 많이 보내는 대신 전송 속도를 늦춥니다. 그러나 Micro$oft 는 RFC 18 12 의 이 제안을 무시하고 이 비율에 제한이 없습니다. 따라서 Win95/NT 를 실행하는 호스트의 모든 65K 포트를 신속하게 검색할 수 있습니다.
-sAACK 스캔: 이 고급 스캔 방법은 일반적으로 방화벽을 통과하는 규칙 세트에 사용됩니다. 일반적으로 이렇게 하면 방화벽이 완벽하게 작동하는지 또는 들어오는 SYN 패킷만 차단하는 단순 패킷 필터를 확인하는 데 도움이 됩니다. 이 검색은 무작위 응답/일련 번호를 사용하여 특정 포트로 ACK 패킷을 보내는 것입니다. RST 패킷이 반환되면 포트는 필터링되지 않은 것으로 표시됩니다. 반환된 내용이 없거나 도달할 수 없는 ICMP 메시지가 반환된 경우 포트는 필터 클래스로 분류됩니다. Nmap 은 일반적으로 필터링되지 않은 포트를 출력하지 않으므로 검색된 모든 포트는 일반적으로 출력에 표시되지 않습니다. 분명히, 이 스캔 방법은 열린 포트를 찾을 수 없다.
-슬라이딩 윈도우 sW 스캔: 이 고급 스캔 기술은 ACK 스캔과 매우 비슷하지만 슬라이딩 윈도우 크기가 불규칙하고 일부 운영 체제에서 크기를 보고할 수 있다는 점을 제외하고는 열린 포트를 감지할 수 있습니다. 이러한 시스템에는 최소한 일부 버전의 AIX, Amiga, BeOS, BSDI, Cray, Tru64UNIX, DG/UX, OpenVMS, DigitalUNIX, OpenBSD, openbsd 가 포함됩니다 전체 목록은 nmap- 해커 메일 목록 3 문서에 나와 있습니다.
-sRRPC 검사. 이 방법은 nmap 의 다른 포트 스캔 방법과 결합됩니다. 열려 있는 모든 포트를 선택하고, SunRPC 프로그램의 NULL 명령을 실행하고, RPC 포트인지 확인하고, 그렇다면 어떤 소프트웨어와 버전 번호를 결정합니다. 그래서 방화벽에 대한 정보를 얻을 수 있습니다. 미끼 스캔은 아직 RPC 스캔과 결합할 수 없습니다.
-bFTP 바운스 공격: FTP 프로토콜 (RFC959) 의 흥미로운 기능 중 하나는 프록시 FTP 연결을 지원하는 것입니다. 즉, evil.com 에서 target.com 의 FTP 서버에 연결할 수 있습니다. 이 FTP 서버에 인터넷 어디에서나 파일을 보내도록 요청할 수 있습니다! RFC959 가 1985 에서 완료되면 이 기능이 제대로 작동합니다. 하지만 오늘날의 인터넷에서는 FTP 서버를 납치하여 인터넷의 어떤 노드로도 데이터를 보낼 수 없습니다. 호빗이 1995 에 쓴 한 문장 에서 말했듯이, 이 프로토콜은 "가상적으로 접근할 수 없는 메일과 뉴스를 전달하고, 각종 사이트에 들어가는 서버, 하드 드라이브 채우기, 방화벽 생략 및 기타 괴롭힘 활동, 추적하기가 어렵다" 고 말했다. 이 기능을 사용하여 프록시 FTP 서버의 TCP 포트를 검색할 수 있습니다. 따라서 방화벽 뒤에 있는 FTP 서버에 연결하고 포트를 검색해야 합니다. 이 FTP 서버에 읽을 수 있는 디렉토리가 있으면 원하는 대로 대상 포트로 데이터를 보낼 수 있습니다 (그러나 nmap 는 이를 도울 수 없습니다). -b 함수 옵션에 전달되는 인수는 프록시로 사용할 FTP 서버입니다. 구문 형식은 -b 사용자 이름: 암호 @ 서버: 포트입니다. 서버를 제외한 모든 것은 선택 사항입니다. 어떤 서버에 이런 결함이 있는지 궁금하시면 제가 Phrack5 1 에 발표한 문장 참고해주세요. 너는 또한 nmap 웹사이트에서 이 문장 최신 버전을 얻을 수 있다.
일반 옵션 이러한 내용은 필수는 아니지만 유용합니다.
-P0 검사 전에 호스트를 ping 할 필요가 없습니다. 일부 네트워크의 방화벽은 ICMPecho 요청이 통과되는 것을 허용하지 않습니다. 이 옵션을 사용하여 네트워크를 검색합니다. Microsoft.com 이 그 예이므로 이 사이트를 스캔할 때는 항상 -P0 또는 -PT80 옵션을 사용해야 합니다.
-PT 검사를 시작하기 전에 TCPping 을 사용하여 실행 중인 호스트를 확인합니다. Nmap 은 ICMPecho 요청 패킷을 보내고 응답을 기다리는 대신 TCPACK 패킷을 타겟 네트워크 (또는 단일 호스트) 로 보내고 응답을 기다립니다. 호스트가 실행 중이면 RST 패킷이 반환됩니다. 이 옵션은 대상 네트워크/호스트가 ping 패킷을 차단하지만 여전히 스캔할 수 있는 경우에만 유효합니다. 루트가 아닌 사용자의 경우 connect () 시스템 호출을 사용하여 이 기능을 구현합니다. -PT 를 사용하여 대상 포트를 설정합니다. 기본 포트 번호는 80 입니다. 이 포트는 일반적으로 필터링되지 않기 때문입니다.
-PS 루트 사용자의 경우 이 옵션을 사용하면 nmap 에서 ACK 패킷 대신 SYN 패킷을 사용하여 대상 호스트를 검색할 수 있습니다. 호스트가 실행 중이면 RST 패킷 (또는 SYN/ACK 패킷) 을 반환합니다.
-PI nmap 에서 실제 ping(ICMPecho 요청) 을 사용하여 타겟 호스트가 실행 중인지 검사하도록 설정합니다. 이 옵션을 사용하면 nmap 에서 실행 중인 호스트를 검색할 수 있으며 nmap 은 직접 서브넷 브로드캐스트 주소도 관찰합니다. 직접 서브넷 브로드캐스트 주소 일부 외부에서 액세스할 수 있는 IP 주소는 외부 패킷을 안쪽 IP 브로드캐스트 패킷으로 변환하여 컴퓨터 서브넷으로 보냅니다. 이러한 IP 브로드캐스트 패킷은 smurf 와 같은 서비스 거부 공격을 일으킬 수 있으므로 삭제해야 합니다.