Term
네트워크 스캐닝 도구 Nmap, NSE
2017 02 22
  • Facebook
  • Twitter
  • Copy URL

Nmap은 침투테스트에서 다양한 검사와 공격을 수행할 수 있는 도구다. Nmap에는 여러 기능이 있지만 그 중 눈길을 끌 만한 기능이 하나 있으니 그것이 바로 NSE(Nmap Scripting Engine)다. 이 NSE 기능은 Nmap을 좀 더 다양하게 사용할 수 있는 도구로 만들어준다. 예를 들어 Nmap 스크립트를 사용하여 해킹을 하면 정보수집단계에서 내가 원하는 정보만 볼 수 있는 효율적인 도구로 사용할 수 있다. 오늘은 Nmap 의 NSE와 관련하여 기본적인 스크립트 몇 개와 이를 통해 수집할 수 있는 정보를 살펴볼까 한다.

이미지를 불러오는데 실패했습니다.

Nmap(Network Mapper)은 네트워크 탐색 및 보안 검사를 위해 만들어진 오픈 소스 도구로 Fyodor Vaskovich라고도 알려져 있는 고든 라이온(Gordon Lyon)이 개발한 보안 스캐너다.[1] Nmap은 호스트에서 잘 작동하지만 대규모 네트워크에서도 빠르게 검사할 수 있도록 설계되어 있으며 컴퓨터 네트워크에서 호스트와 서비스를 검색하여 일종에 네트워크의 ‘지도’를 만들 때 쓰인다.[2] 이를 위해 대상 호스트에게 특수하게 조작된 패킷을 보내 그에 대한 반응을 분석하여 정보를 얻는다. 또한, Nmap은 네트워크 내에서 존재할 수 있는 대기시간, 트래픽 정체 등 네트워크 상황에 맞춰 적응하여 작업을 수행한다. 이 프로그램은 호스트 검색, 서비스 및 운영체제 검색을 포함하여 네트워크를 검색하는데 필요한 여러 기능을 제공한다. 고급 서비스 검색, 취약점 탐지 등등 여러 기능도 NSE를 통해 사용되고 확장할 수 있어 사용하는데 있어서 효율성은 무궁무진하다. 이렇듯 Nmap의 뼈대는 고든 라이온이 했지만 Nmap의 발전은 다른 사용자에 의해서 개발되고 개선되고 있다.

Nmap에는 호스트를 탐지하거나 포트 스캔, 응용 프로그램 버전, 운영 체제를 탐지하는 것 외에도 여러 고급 기능을 가지고 있다. 특히나, NSE는 Nmap이 가지고 있는 가장 강력하며 유연한 기능으로 이를 통해 다양한 네트워킹 작업을 하고 이를 자동화할 수 있다.[3] 스크립트는 자신이 원하는 기능을 넣어 직접 구현할 수 있으며 혹은 다른 사용자가 만든 스크립트를 공유받아 사용할 수도 있다. Nmap 스크립트 이용은 작업의 효율성을 높여주고 창의적인 용도로 사용할 수 있도록 해주며 스크립트 만들기는 Nmap의 정식 사이트에서 확인할 수 있다.

Nmap의 스크립트는 크게 Network discovery, More sophisticated version detection, Vulnerability detection, Backdoor detection, Vulnerability exploitation 5 가지 카테고리를 갖는다. 5 개의 카테고리는 Nmap 개발 당시 사용자가 NSE를 보다 창의적으로 사용하고 쉽게 구별할 수 있도록 분류해 놓은 것이다.[4]  NSE의 스크립트는 루아 프로그래밍 언어 버전 5.2로 작성할 수 있다.[5]

첫 번째 카테고리 Network discovery는 Nmap 프로그램의 특징을 가장 잘 살린 것으로 예를 들어, 대상 도메인을 기반으로 whois 데이터 조회를 하거나 ARIN, RIPE 또는 APNIC 쿼리를 통해 대상 IP의 소유권을 확인하고 열린 포트에서 identd 조회 등을 할 수 있다.[6]

두 번째 카테고리 More sophisticated version detection에서는 서비스 버전을 탐지하는 스크립트를 모아 놓은 곳이다. 일반적으로 버전을 탐지하는 것은 생각보다 까다로운 일로 정규표현식 서명 기반 일치 시스템을 통해 수천 개의 서로 다른 서비스를 인식하지만 모든 서비스를 인식할 수 없다. 예를 들어 skype 버전 2 서비스를 검색하기 위해서는 두 개의 독립적인 검사 프로세스가 필요하다. 몇몇의 버전 검색은 처리하는 것이 생각보다 유연하지 않아 검색하는데 어려움이 따르기도 한다. 이를 해결하기 위해 Nmap의 NSE를 이용하여 수백 개의 다른 커뮤니티를 무차별로 검색하여 인식하면 더 많은 서비스를 인식할 수 있다.[7]

세 번째 카테고리 Vulnerability detection는 새로운 취약점이 발견되면 악의적인 공격을 받기 전 취약한 부분을 네트워크를 통해 신속하게 탐지할 수 있는 스크립트를 모아놨다. Nmap은 완전하게 포괄적인 취약성 검사 도구는 아니지만 NSE 기능을 사용하면 번거롭거나 까다로운 취약점 검사를 처리할 수 있다.[8]

네 번째 카테고리 Backdoor detection은 여러 공격자가 자신들이 다시 들어 올 수 있도록 남겨두는 백도어 탐지와 관련한 스크립트를 모아놓은 곳이다. 많은 공격자와 일부 바이러스 웜들은 나중에 쉽게 다시 들어올 수 있도록 시스템에 백도어를 설치하기도 한다. 이 중 일부는 Nmap의 정규표현식 기반 버전 감지로 탐지할 수 있다. 예를 들어 MyDoom 웜은 인터넷에 연결되어 몇 시간 만에 Nmap NSE를 통해 컴퓨터가 MyDoom 웜에 감염되었다는 것을 확인할 수 있었다. NSE가 완전하게 악성코드를 탐지할 수 있는 것은 아니지만 어느 정도는 복잡한 웜이나 백도어를 안정적으로 탐지할 수 있다.[9]

마지막으로 Vulnerability exploitation는 일반적인 스트립트 언어로 취약점을 발견하기 보다는 취약점을 악용하는데 사용할 수 있는 스크립트를 모아놓은 곳이다. Nmap에 맞춤형 공격 스크립트를 추가하면 모의 해킹하는 이들에게는 상당히 가치 있는 일이 될 수 있다. 물론, Nmap 프로그램은 Metasploit 같은 개발 프레임 워크로 전환할 계획은 없다며 관계자는 말했다.[10]

Nmap 스크립트 업데이트는 --script-update, --script-updatedb 옵션을 통해서 업데이트를 진행할 수 있다. 이 명령어를 실행하면 nmap 홈페이지에서 추가된 스크립트를 nmap 디렉토리에 저장한다. 저장된 스크립트 파일은 find나 locate 에서 찾을 수 있다. 더불어 저장된 스크립트 파일은 .nse 파일 형태를 보인다.

이미지를 불러오는데 실패했습니다.

ip-geolocation 스크립트는 주어진 IP의 출처를 확인하는 것이다. 아래 화면에는 ip-geolocation-geoplugin, ipinfodb, -map-bing, -map-google, -map-kml, -maxmind 각각의 스크립트를 통합해서 사용하여 추출한 정보다. 더불어 대상이 된 사이트는  웹 스캔을 검사해볼 수 있는 사이트로 실제 사이트에 하면 아마 더 많은 정보가 나올 것이다. 하지만 실제 서비스를 하고 있는 사이트에 하게 된다면 그것은 법에 걸린다.

이미지를 불러오는데 실패했습니다.

명령어 후이즈(whois)는 리눅스 환경에서 CMD를 통해 사용할 수 있는 명령어다. Nmap에서는 명령어 후이즈와 같은 작업을 수행하는 특정 스크립트가 존재한다. 이 명령어를 통해 후이즈의 명령어 역할을 거뜬히 해낸다. 후이즈 스크립트를 실행하면 주어진 IP의 출처와 도메인을 확인할 수 있다. IP 주소는 whois-ip, 도메인은 whois-domain으로 구분되어 필요한 스크립트만 가져와 사용할 수 있다. 명령줄에 -v를 추가하면 할당에 대한 추가 정보가 표시된다.

이미지를 불러오는데 실패했습니다.

Nmap은 스크립트를 통해 DNS 레코드 무차별 공격을 할 수 있다. DNS 레코드는 특정 도메인에 대해 많은 정보를 포함하고 있다. 물론 Nmap이 아닌 DNS 레코드 무차별 공격에 맞춰 더 많은 결과를 나타내주는 전용 프로그램 존재하지만 이러한 스크립트를 통해서도 할 수 있다는 걸 말하고 싶다. 한 가지 이를 사용할 때 특징은 dns-brute 스크립트를 사용하면 Nmap 네트워크 스캔 중에 DNS 정보를 함께 추출할 수 있다.

이미지를 불러오는데 실패했습니다.

nmap 스크립트 http-robtex-reverse-ip를 사용하면 동일한 IP 주소를 기반으로 한 추가적인 호스트 이름도 발견할 수 있다. 이는 Robtex 서비스를 이용하여 대상 IP주소에 대해 전달된 DNS 최대 100개까지 표현한다. 이 스크립트가 빛을 발휘할 때는 동일한 웹 서버에 있는 다른 웹 응용 프로그램을 찾을 때 유용하다. 

이미지를 불러오는데 실패했습니다.

Nmap은 단순히 네트워크를 검사하는 기본적인 도구로도 훌륭한 결과를 나타내지만 스크립트를 사용하면 간단하게 더 많은 정보를 확인할 수 있다. 스크립트 사용은 모의해킹 할 때에도 정보 수집 단계와 실제 검사를 시작하기 전에 가볍게 사용할 수 있어 유용하다. 이 외에도 다른 여러 Nmap 스크립트를 복합적으로 사용한다면 네트워크에 관한 검사는 어느 정도 할 수 있지 않을까 생각된다. 스크립트를 모아놓는 사이트에서 다운받을 수 있다. 만약 자신이 원하는 스크립트가 없다면 그때는 자신이 스크립트를 작성하여 커뮤니티에 기여할 시간이다.

유성경 yuopboy@grayhash.com