본문 바로가기

보안/칼리 리눅스

Nmap을 개조해보자! NMAP NSE / 취약점 분석 nse 활용하기

nmap에 간단한 설명

 

포트를 점검해보자 nmap / ctf 풀이 영상에서의 nmap 활용

포트 (port)는 논리적인 접속 장소라는 뜻으로 운영하는 서비스들의 데이터 연결 통로의 존재이다. 어느 한 서버에 웹 서버(포트:80번) 와 이메일 서버 (포트:25번)를 동시 실행중이라고 예를 들어

adm1n1.tistory.com

 

공유한 위에 게시물에서 nmap에 옵션중에 스크립트를 이용한 스캔이 있다는것을 알수 있다.

nmap에 자체적으로 포트 스캔뿐만이 아니라 취약점에 대한 스캔도 한다는 것이다 .

이것을 우리는 nmap NSE (nmap Script Engine) 이라고 불린다.

 

공유한 링크에는 -A 로 다른 옵션들과 함께 퉁 쳤지만

사실 스크립트 스캔 기능 옵션은 -sC 가 있다.해당 옵션은 --script=default 와 같은 의미로 디폴트 스크립를 실행시킨다.

그 외에는  ' --script= 스크립트 이름 ' 이런식으로 한가지 스크립트만 스캔을 할수도 있다.

 

그리고 오픈소스에 특성 답게 우리가 직접 스크립트를 짤 수도 있고 수정을 할수 있다.

해당 스크립트는 Lua 라는 언어로 작성되며 확장자명은 .nse이다 ( 파이썬이랑 비슷한 느낌을 가진 언어이다.)

그리고 스크립트의 위치는 /usr/share/nmap/scripts에 위치해 있다.

 

해당 스크립트들은 크게 4가지로 나눠진다 .

모듈 불러오기 : c 언어에서  #include< .... ,  파이썬에서 import 같은 곳이다

The Head Section: 해당 스크립트의 설명문 같은 곳

The rule section :  조건들을 작성하는 곳

The action section: 조건이 맞다면 실행을 하는 곳

 

그러면 간단한 lua 프로그래밍을 해볼것이다 

바로 nse로 사용하기 위해서 작성한 스크립트는  /usr/share/nmap/scripts에 저장을 할 것이다.

 
local shortport= require "shortport"
local http = require "http"
--the head section --
description=[[ Show test ]]

categories={"safe"}

-- The Rule Section --
portrule= function(host,port)
        return port.protocol =="tcp"
                and port.number==80
                and port.state=="open"
end


--the action section --
action =function(host,port)
        return "hello world!!!!"
end

해당 스크립트는 스캔하는 ip에 80 포트가 있으면 hello world!!!를 출력한다.

그리고 바로 사용하는 것이 아닌 업데이트를 해줘야 한다

nmap --script-updatedb

만약에 스크립트에 버그가 나면

이런식으로 업데이트가 안되고 오류가 났음을 알려준다.

 

80번 포트가 발견되자 hello world 출력이 정상적으로 이뤄짐을 발견할수 있다

이제 --script 옵션으로 원하는 스크립트를 지정을 해서 nmap을 실행을 시킬수 있다.

 


그렇다면 버전 정보를 통한 취약점 분석 nse를 다운을 받아 보고 실행을 해보자

 

https://github.com/scipag/vulscan

 

GitHub - scipag/vulscan: Advanced vulnerability scanning with Nmap NSE

Advanced vulnerability scanning with Nmap NSE. Contribute to scipag/vulscan development by creating an account on GitHub.

github.com

 

 

nmap을 통해 알아낸 버전 정보를 토대로 관련 취약점을 결과로 나타내는 스크립트를 실행 해보자

 

먼저 스크립트를 바로 넣을 수 있도록 스크립트 저장 위치에 간 후 깃 클론으로 가져온다

 

-sV 옵션은 반드시 써줘야 한다

 

해당 실습 ip는 워낙에 취약한 웹서버라 취약점이 너무 많아서 터미널창이 모든 내용을 볼수는 없었다. 

다-oA 옵션을 이용해서 실행 결과문을 저장하는 습관을 갖도록 하자..

일부나마 내용을 좀 보자면 각종 취약점 사이트에서 갖고 있는 취약점 데이터베이스들을 통합하여서

결과물들을 나타내었다.

지금까지 nmap 돌린것중 가장 오래 걸렸던 결과물인것 같다..

반응형