Nikto 로 특정 포트 스캔하기

Kali LinuxBeginner
지금 연습하기

소개

Nikto 는 인기 있는 오픈 소스 웹 서버 스캐너로, 6,700 개 이상의 잠재적으로 위험한 파일/프로그램, 1,250 개 이상의 서버의 오래된 버전 확인, 270 개 이상의 서버에 대한 버전별 문제 등 다양한 항목에 대해 웹 서버를 포괄적으로 테스트합니다. 기본적으로 Nikto 는 80 및 443 과 같은 표준 HTTP/HTTPS 포트를 스캔합니다. 그러나 실제 시나리오에서는 웹 서비스가 종종 비표준 포트에서 호스팅되어 숨겨집니다.

이 랩에서는 대상의 특정 비표준 포트를 스캔하기 위해 Nikto 를 사용하는 방법을 배우게 됩니다. 이는 모든 웹 노출 서비스가 어떤 포트에서 작동하든 관계없이 취약점에 대해 적절하게 평가되도록 하는 기본적인 기술입니다.

대상의 비표준 HTTP 포트 식별

이 단계에서는 먼저 대상 시스템에서 열린 포트를 식별합니다. Nikto 로 특정 포트를 스캔하기 전에 어떤 포트가 열려 있고 잠재적으로 서비스를 호스팅하고 있는지 알아야 합니다. 이를 위해 강력한 네트워크 스캐닝 도구인 nmap을 사용할 것입니다.

설정한 웹 서버를 찾기 위해 로컬 머신 (localhost) 의 포트 범위를 스캔해 보겠습니다. 8000 부터 9000 까지의 포트 범위를 스캔할 것입니다.

터미널에서 다음 명령을 실행하십시오.

nmap -p 8000-9000 localhost

다음과 유사한 출력이 표시되어야 하며, 이는 80018088 포트가 열려 있음을 나타냅니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
Not shown: 98 closed ports
PORT     STATE SERVICE
8001/tcp open  vcom-tunnel
8088/tcp open  radan-http

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

이 출력은 지정된 범위 내의 비표준 포트에서 두 개의 서비스가 실행 중임을 확인합니다. 첫 번째 Nikto 스캔에서는 8088 포트에 집중할 것입니다.

대상 포트 지정을 위한 -p 플래그 사용

이 단계에서는 포트 스캔에 사용되는 특정 Nikto 플래그에 대해 알아보겠습니다. 기본적으로 Nikto 는 포트 80 을 스캔합니다. Nikto 가 다른 포트를 스캔하도록 지시하려면 -p (또는 -port) 명령줄 옵션을 사용해야 합니다.

구문은 간단합니다.

nikto -h <대상_호스트> -p <포트_번호>

예를 들어, 이전 단계에서 발견한 localhost 호스트의 8088 포트를 스캔하려면 명령 구조는 다음과 같습니다.

nikto -h localhost -p 8088

이 명령은 Nikto 에게 전체 테스트를 수행하되, 모든 테스트를 호스트 localhost의 포트 8088로 지시하도록 합니다. 다음 단계에서는 이 명령을 실행하고 결과를 확인할 것입니다.

대상 및 특정 포트에 대한 스캔 실행

이제 대상 포트를 지정하는 방법을 알았으니 스캔을 실행해 보겠습니다. 이전 단계의 명령 구조를 사용하여 localhost8088 포트에 대한 Nikto 스캔을 시작합니다.

터미널에서 다음 명령을 실행하십시오.

nikto -h localhost -p 8088

Nikto 가 시작되고 진행 상황과 발견 사항을 자세히 설명하는 출력이 표시됩니다. 출력은 다음과 유사하게 보일 것입니다 (일부 세부 정보는 다를 수 있습니다).

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8088
+ Start Time:         2023-10-27 10:05:10 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ OSVDB-3092: /cgi-bin/: This might be interesting...
+ 7558 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2023-10-27 10:05:25 (GMT0) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

비표준 포트에 대한 대상 취약점 스캔을 성공적으로 수행했습니다.

비표준 서비스에 대한 결과 분석

이 단계에서는 방금 수행한 Nikto 스캔의 출력을 분석합니다. 결과를 이해하는 것은 스캔 자체를 실행하는 것만큼 중요합니다.

이전 단계의 출력에서 주요 발견 사항을 검토해 보겠습니다.

  • + Target Port: 8088: Nikto 가 지정한 포트를 올바르게 대상으로 했음을 확인합니다.
  • + Server: SimpleHTTP/0.6 Python/3.10.12: 이것은 매우 가치 있는 정보입니다. Nikto 는 웹 서버 소프트웨어와 버전을 식별했습니다. 이 경우 Python 에서 제공하는 간단한 서버입니다. 서버 기술을 알면 공격자가 특정 익스플로잇에 집중하는 데 도움이 됩니다.
  • 보안 헤더 누락: The anti-clickjacking X-Frame-Options header is not present와 같은 줄은 보안 구성 오류를 나타냅니다. 이러한 헤더는 클릭재킹 및 크로스 사이트 스크립팅 (XSS) 과 같은 일반적인 공격으로부터 웹 애플리케이션을 보호하는 데 도움이 됩니다.
  • + OSVDB-3092: /cgi-bin/: This might be interesting...: Nikto 는 cgi-bin이라는 디렉토리를 식별했습니다. 이 디렉토리는 전통적으로 실행 가능한 스크립트를 보유하고 있어 취약점을 찾는 공격자에게 가치 있는 대상이 됩니다.

이 분석은 비표준 포트의 간단한 서비스조차도 검색 가능한 특성과 잠재적인 보안 약점을 가질 수 있음을 보여줍니다.

단일 호스트의 포트 범위 스캔

이 마지막 단계에서는 Nikto 에 확인할 포트 범위를 제공하여 스캔을 더욱 효율적으로 만드는 방법을 배웁니다. 이는 nmap 스캔에서 여러 잠재적 포트를 식별했거나 특정 범위 내에서 서비스가 실행 중일 수 있다고 의심되는 경우 매우 유용합니다.

-p 플래그는 하이픈으로 지정된 포트 범위도 허용합니다. 구문은 다음과 같습니다.

nikto -h <target_host> -p <start_port>-<end_port>

이를 사용하여 localhost8000-8100 범위를 스캔해 보겠습니다. 이 범위에는 실행 중인 두 웹 서버 (포트 80018088) 가 모두 포함됩니다.

다음 명령을 실행하십시오.

nikto -h localhost -p 8000-8100

Nikto 는 이제 지정된 범위의 각 포트를 반복합니다. 먼저 포트 8000 을 스캔하고 아무것도 찾지 못한 다음 8001 로 이동하여 웹 서버를 찾고 스캔한 다음 결과를 보고합니다. 포트 8088 의 서버도 스캔하면서 포트 8100 에 도달할 때까지 이 프로세스를 계속합니다.

출력은 방대하며 발견된 각 활성 포트에 대한 두 개의 별도 스캔 보고서를 표시합니다.

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8001
... (Results for port 8001) ...
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8088
... (Results for port 8088) ...
---------------------------------------------------------------------------
+ 2 host(s) tested

이를 통해 단일 명령으로 단일 호스트의 여러 포트를 얼마나 효율적으로 확인할 수 있는지 알 수 있습니다.

요약

이 실습에서는 Nikto 의 스캔 기능을 표준 웹 포트 이상으로 확장하는 방법을 배웠습니다. nmap을 사용하여 비표준 포트에서 실행 중인 서비스를 식별하는 것으로 시작했습니다. 그런 다음 Nikto 의 강력한 -p 플래그를 사용하여 단일 특정 포트를 대상으로 지정하고 결과 출력을 분석하여 서버 기술 및 잠재적인 구성 오류를 식별했습니다.

마지막으로 -p 플래그를 사용하여 포트 범위를 스캔하는 방법을 배웠습니다. 이는 대상에서 숨겨진 웹 서비스를 효율적으로 검색하는 강력한 기술입니다. 타겟 스캔을 마스터하는 것은 효과적이고 철저한 웹 애플리케이션 보안 테스트를 위한 중요한 기술입니다.