NSE(Nmap Scripting Engine)는 Nmap(Network Mapper) 도구에 스크립트 기능을 추가한 것으로, Nmap은 네트워크 탐사 및 보안 감사에 널리 사용되는 도구입니다.
NSE를 통해 Nmap은 스캔 결과를 보다 심층적으로 분석하거나 특정 취약점을 찾아내기 위해 사용자 정의 스크립트를 실행할 수 있습니다.
NSE(Nmap Scripting Engine) 개요
- 목적
NSE의 주요 목적은 Nmap의 기능을 확장하고, 네트워크 스캔의 유연성과 깊이를 더하는 것입니다. NSE 스크립트는 다음과 같은 다양한 작업을 수행할 수 있습니다.
- 특정 서비스의 버전 확인
- 취약점 탐지
- 네트워크 정책 준수 확인
- 추가 정보를 수집하는 다양한 네트워크 조사
- 스크립트 언어
NSE 스크립트는 주로 Lua 프로그래밍 언어로 작성됩니다. Lua는 가볍고 빠르며, 내장형 스크립팅 언어로 널리 사용됩니다.
- 스크립트 실행
NSE 스크립트는 Nmap 스캔의 여러 단계에서 실행될 수 있습니다. 예를 들어, 서비스 버전 탐색 후나 특정 포트가 열려 있을 때 실행됩니다. 스크립트는 스캔 대상의 호스트와 포트 정보에 접근할 수 있으며, 이를 통해 다양한 네트워크 서비스를 분석합니다.
NSE 스크립트 구조
- 헤더
- 스크립트의 이름, 설명, 작성자, 라이선스, 카테고리 등을 정의합니다.
예시:
description = [[
Checks if an FTP server allows anonymous logins.
]]
author = "Your Name"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"default", "auth", "safe"}
- 모듈 로드
- 스크립트에서 사용할 Lua 모듈을 로드합니다.
예시:
local nmap = require "nmap"
local shortport = require "shortport"
local stdnse = require "stdnse"
- 포트 규칙
- 스크립트가 실행될 포트나 서비스 조건을 정의합니다.
예시:
portrule = shortport.port_or_service(21, "ftp")
- 액션 함수
- 스크립트의 주요 기능을 정의하는 함수입니다. 이 함수는 Nmap이 스크립트를 실행할 때 호출됩니다.
예시:
action = function(host, port)
-- 주요 로직
end
스크립트 실행
다음과 같은 Nmap 명령을 통해 특정 NSE 스크립트를 실행할 수 있습니다.
nmap --script=<nse-script-name> <target-ip>
'InfoSec Log > NSE' 카테고리의 다른 글
[NSE, Wireshark] ftp-anon.nse 스크립트 분석 및 네트워크 패킷 분석 (0) | 2024.07.01 |
---|