Nikto 스캔 속도 향상을 위한 DNS 조회 비활성화

Kali LinuxBeginner
지금 연습하기

소개

Nikto 는 인기 있는 오픈 소스 웹 서버 스캐너로, 6,700 개 이상의 잠재적으로 위험한 파일/프로그램, 1,250 개 이상의 서버의 오래된 버전 확인, 270 개 이상의 서버에 대한 버전별 문제 등 다양한 항목에 대해 웹 서버를 포괄적으로 테스트합니다.

기본적으로 Nikto 는 웹 서버 콘텐츠에서 발견된 IP 주소에 대해 역방향 DNS 조회를 수행합니다. 이는 관련 호스트 이름을 발견하는 데 유용할 수 있지만, 특히 대규모 네트워크나 응답하지 않는 대상을 스캔할 때 스캔 속도를 상당히 늦출 수 있습니다.

이 실습에서는 -nolookup 옵션을 사용하여 이 기능을 비활성화하고 스캔 시간을 비교하여 성능 이점을 이해하는 방법을 배우게 됩니다.

-nolookup 옵션의 목적 이해하기

이 단계에서는 Nikto 의 -nolookup 옵션에 대해 알아보겠습니다.

Nikto 가 웹 서버를 스캔할 때 서버의 설정 파일, 로그 또는 웹 페이지에서 IP 주소를 찾을 수 있습니다. 기본적으로 Nikto 는 이러한 각 IP 에 대해 역방향 DNS 조회를 시도하여 관련 호스트 이름을 찾습니다. 이 과정은 시간이 오래 걸릴 수 있습니다.

-nolookup 옵션은 Nikto 에게 이 단계를 완전히 건너뛰도록 지시합니다. 이렇게 하면 스캔 속도가 훨씬 빨라질 수 있지만, 대상과 관련된 다른 호스트 이름에 대한 잠재적으로 유용한 정보를 놓칠 수 있습니다.

Nikto 도움말 메뉴를 보면 이 옵션과 다른 옵션들을 볼 수 있습니다. 지금 바로 확인해 보겠습니다.

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

nikto -Help

출력을 스크롤하여 -nolookup 옵션을 찾으십시오. 간단한 설명과 함께 나열될 것입니다.

...
-nolookup           이름 조회 건너뛰기
...

이제 -nolookup이 무엇을 하는지 이해했으므로, 실제로 작동하는 것을 볼 차례입니다.

IP 주소를 사용하여 대상에 대한 기준 스캔 실행하기

이 단계에서는 로컬 웹 서버에 대해 표준 Nikto 스캔을 수행합니다. time 명령을 사용하여 스캔에 걸리는 시간을 측정합니다. 이것이 비교를 위한 기준이 될 것입니다.

실습 환경에서는 이미 127.0.0.1에서 실행되는 간단한 Nginx 웹 서버가 시작되었습니다. 이를 대상으로 사용할 것입니다.

스캔을 실행하고 시간을 측정하려면 다음 명령을 실행하십시오.

time nikto -h 127.0.0.1

스캔이 시작되고 다음과 유사한 출력이 표시됩니다. 완료하는 데 1 분 정도 걸릴 수 있으므로 잠시 기다려 주십시오.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m15.543s
user    0m14.987s
sys     0m0.312s

마지막 세 줄, 즉 time 명령의 출력에 주의하십시오. real 시간은 경과된 총 실제 시간입니다. 다음 단계를 위해 이 값을 기록해 두십시오.

-nolookup 플래그를 사용하여 동일한 스캔 다시 실행하기

이제 기준 실행 시간을 확보했으므로, -nolookup 플래그를 추가하여 동일한 스캔을 정확히 다시 실행해 보겠습니다. 이렇게 하면 Nikto 가 역방향 DNS 조회를 수행하지 못하게 됩니다.

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

time nikto -h 127.0.0.1 -nolookup

스캔이 다시 실행됩니다. Nikto 자체 출력은 이전 스캔과 매우 유사하지만, time 명령에서 보고하는 실행 시간에 차이가 있음을 알 수 있습니다.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m8.123s
user    0m7.890s
sys     0m0.201s

출력에서 Target Hostnamelocalhost 대신 127.0.0.1로 변경된 것을 확인하십시오. 이는 Nikto 가 IP 를 호스트 이름으로 확인하기 위한 역방향 조회를 수행하지 않았기 때문입니다. 또한 새로운 real 시간도 기록해 두십시오.

두 스캔의 실행 시간 비교하기

이 단계에서는 이전 두 단계의 결과를 분석하여 -nolookup 플래그의 성능 영향을 살펴보겠습니다.

두 명령의 real 시간을 살펴보겠습니다.

스캔 1 (기준): real 0m15.543s (시간은 약간 다를 수 있습니다)

스캔 2 (-nolookup 포함): real 0m8.123s (시간은 약간 다를 수 있습니다)

보시다시피 -nolookup 플래그를 사용한 스캔이 훨씬 빠르게 완료되었습니다. 이 예에서는 거의 두 배 빨랐습니다. DNS 조회가 시간 초과될 수 있는 느리거나 잘못 구성된 네트워크에서 여러 호스트 또는 대상을 스캔할 때 성능 향상은 훨씬 더 극적일 수 있습니다.

이 간단한 비교는 Nikto 스캔에서 DNS 조회를 비활성화하는 직접적인 성능 이점을 보여줍니다.

이 성능 최적화를 언제 사용할지 분석하기

마지막 단계에서는 절충점을 논의하고 -nolookup 옵션을 언제 사용하는 것이 적절한지 결정합니다.

-nolookup은 명확한 성능 향상을 제공하지만, 잠재적으로 정보를 놓칠 수 있다는 단점이 있습니다. 역방향 DNS 조회를 통해 IP 주소와 관련된 다른 호스트 이름 및 가상 호스트를 발견하는 데 도움이 될 수 있으며, 이는 포괄적인 보안 평가에 중요할 수 있습니다.

그렇다면 -nolookup은 언제 사용해야 할까요?

  • 초기 스캔 및 분류: 많은 수의 호스트를 스캔하고 잠재적 취약점에 대한 빠른 개요를 얻고 싶을 때입니다. 이 단계에서는 철저한 세부 정보보다 속도가 더 중요합니다.
  • IP 주소별 스캔: 대상 목록이 IP 주소로만 구성되어 있고 관련 도메인 이름을 발견하는 데 관심이 없다면 -nolookup을 사용하는 것이 논리적인 선택입니다.
  • 신뢰할 수 없는 네트워크: DNS 쿼리가 실패하거나 시간 초과될 수 있는 느리거나 신뢰할 수 없는 네트워크 연결을 통해 스캔할 때 -nolookup은 스캔이 중단되는 것을 방지할 수 있습니다.
  • 속도가 중요할 때: 침투 테스트 대회 또는 신속한 사고 대응과 같이 시간이 중요한 상황에서는 이 옵션을 통해 얻는 속도가 매우 중요할 수 있습니다.

-nolookup피해야 할 때는 언제인가요?

  • 포괄적인 평가: 특정 대상에 대한 완전하고 심층적인 보안 감사를 수행할 때 가능한 한 많은 정보를 원합니다. DNS 조회를 통해 발견된 호스트 이름은 추가적인 공격 표면을 드러낼 수 있습니다.
  • 가상 호스트 검색: 대상 IP 가 여러 웹사이트 (가상 호스팅) 를 호스팅한다고 의심되는 경우, Nikto 가 이를 식별하는 데 도움이 되도록 조회를 수행하도록 허용해야 합니다.

속도와 철저함 사이의 이러한 절충점을 이해하면 다양한 시나리오에 대해 Nikto 를 더 효과적으로 사용할 수 있습니다.

요약

이 실습에서는 Nikto 스캔 속도를 최적화하는 방법을 배웠습니다. 역방향 DNS 조회를 비활성화하는 -nolookup 플래그의 목적을 이해하는 것부터 시작했습니다.

그런 다음 기준 스캔과 -nolookup 옵션을 사용한 두 번째 스캔을 수행했습니다. time 명령으로 실행 시간을 비교하여 상당한 성능 향상을 관찰했습니다.

마지막으로 절충점을 분석했으며, -nolookup은 신속하고 대규모 스캔 또는 속도가 우선시될 때 이상적이며, 포괄적인 평가를 위한 전체 스캔은 가능한 한 많은 정보를 수집하기 위해 이 플래그를 생략해야 한다고 결론지었습니다.