Nmap 스크립팅 엔진 (NSE) 사용
Nmap Scripting Engine (NSE) 은 Lua 스크립트를 사용하여 Nmap 의 기능을 확장할 수 있는 강력한 도구입니다. Lua 는 가벼운 프로그래밍 언어이며, 이러한 스크립트는 광범위한 작업을 수행할 수 있습니다. 예를 들어, 네트워크 장치에서 어떤 서비스가 실행 중인지 더 정확하게 식별하는 고급 서비스 감지에 도움이 될 수 있습니다. 또한 시스템의 보안 취약점을 찾는 데 중요한 취약점 스캔에도 사용할 수 있습니다.
HTTP 서버에 대한 더 많은 정보를 수집하기 위해 NSE 를 사용해 보겠습니다. NSE 스크립트는 다양한 범주로 그룹화됩니다. 이러한 범주에는 일반적으로 사용되고 안전한 스크립트가 포함된 "default", 네트워크 서비스를 찾는 "discovery", 대상 시스템에 해를 끼치지 않는 "safe", 취약점 스캔에 사용되는 "vuln"이 있습니다.
먼저, 어떤 HTTP 관련 스크립트를 사용할 수 있는지 확인하고 싶습니다. 이를 위해 다음 명령을 사용합니다.
ls /usr/share/nmap/scripts/http*
이 명령은 /usr/share/nmap/scripts/ 디렉토리에서 http로 시작하는 모든 NSE 스크립트를 나열합니다. 이 명령을 실행하면 HTTP 서비스와 상호 작용하도록 설계된 스크립트 목록이 표시됩니다. 이러한 스크립트는 웹 페이지 제목 가져오기와 같은 간단한 정보 수집부터 HTTP 서비스의 취약점을 스캔하는 것과 같은 더 복잡한 작업까지 다양한 기능을 수행할 수 있습니다.
이제 http-title 스크립트를 사용하여 웹 페이지에서 제목을 추출해 보겠습니다. http-title 스크립트는 HTTP 서비스를 살펴보고 제공하는 웹 페이지의 제목을 찾는 방식으로 설계되었습니다. 이 스크립트를 실행하는 명령은 다음과 같습니다.
sudo nmap --script=http-title -p 8000 localhost > /home/labex/project/nmap_script_output.txt
이 명령에서 sudo는 일부 Nmap 작업에 필요할 수 있으므로 관리자 권한으로 명령을 실행하는 데 사용됩니다. nmap은 기본 명령이고, --script=http-title은 Nmap 에게 http-title 스크립트를 사용하도록 지시합니다. -p 8000은 HTTP 서버가 실행 중인 포트 8000 을 대상으로 지정함을 지정합니다. localhost는 대상이며, 이는 자체 머신에서 스캔을 실행하고 있음을 의미합니다. > 기호는 명령의 출력을 /home/labex/project/nmap_script_output.txt 파일로 리디렉션합니다.
명령의 출력을 확인해 보겠습니다. 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.
cat /home/labex/project/nmap_script_output.txt
cat 명령은 파일의 내용을 표시하는 데 사용됩니다. 이 명령을 실행하면 웹 페이지 제목에 대한 정보가 포함된 출력이 표시됩니다. 출력은 다음과 같을 수 있습니다.
Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).
PORT STATE SERVICE
8000/tcp open http-alt
|_http-title: Directory listing for /
Nmap done: 1 IP address (1 host up) scanned in X.XX seconds
이제 여러 스크립트를 사용하여 더 포괄적인 스캔을 시도해 보겠습니다. "default" 범주에는 대상에 대한 유용한 정보를 제공하는 안전한 스크립트가 포함되어 있습니다. 포트 8000 에서 HTTP 서버에 대해 "default" 범주의 모든 스크립트를 실행하려면 다음 명령을 사용합니다.
sudo nmap --script=default -p 8000 localhost > /home/labex/project/nmap_default_scripts.txt
이 명령은 이전 명령과 유사하지만 단일 스크립트를 지정하는 대신 Nmap 에게 "default" 범주의 모든 스크립트를 실행하도록 지시합니다.
이 스캔의 결과를 살펴보겠습니다. cat 명령을 다시 사용하여 이 작업을 수행할 수 있습니다.
cat /home/labex/project/nmap_default_scripts.txt
출력에는 기본적으로 실행되는 다양한 NSE 스크립트에서 수집한 HTTP 서버에 대한 더 자세한 정보가 포함됩니다.
마지막으로, 특정 스크립트에 대해 자세히 알아보려면 스크립트 도움말 기능을 살펴보겠습니다. http-title 스크립트에 대해 자세히 알고 싶다면 다음 명령을 사용할 수 있습니다.
nmap --script-help=http-title
이 명령은 http-title 스크립트에 대한 문서를 표시합니다. 문서에는 스크립트의 목적, 사용 방법 및 출력 형식이 포함되어 있습니다. 특정 작업에 NSE 를 사용할 때는 스크립트 문서를 이해하는 것이 필수적입니다. 스크립트가 수행하는 작업과 이를 올바르게 사용하는 방법을 알 수 있기 때문입니다.