Top

Nmap NSE를 활용한 보안 취약점 진단 [엔맵 스크립트 엔진으로 하는 네트워크와 웹서비스 보안 분석]

  • 지은이조정원, 박병욱, 이준형, 서준석
  • ISBN : 9788960774933
  • 40,000원
  • 2013년 11월 29일 펴냄
  • 페이퍼백 | 544쪽 | 188*250mm
  • 시리즈 : 해킹과 보안

책 소개

모의해킹 업무 및 웹서비스 보안 업무에서는 서비스 상태 정보를 수집하기 위해 엔맵(Nmap)을 많이 활용한다. 하지만 엔맵을 단순히 포트 스캔 수준으로만 활용한다면 엔맵의 진정한 매력을 느낄 수 없다. 이 책에서는 엔맵 스크립팅 엔진(Nmap Scripting Engine)인 NSE를 활용해 분석하고, 스크립트 중에서 업무에 바로 적용하고 효율적인 업무 프로세스를 만들 수 있도록 실습과 함께 가이드를 제시했다. 특히 NSE에서 기본적으로 제공하는 430여 개의 크고 작은 스크립트 중에서 실무에 바로 사용할 수 있는 50여 가지의 효율적인 스크립트를 선정해 다뤘다. 네트워크, 웹서비스, 악성코드 분석 등 각 환경에 맞게 분석한 예제들과 스크립트 개발 방법 등 이 책에서 다루는 내용을 참고해 개발을 한다면 업무 효율을 높일 수 있을 것이다.

이 책에서 다루는 내용

■ NSE의 구조와 다양한 환경에서 활용할 수 있는 주요 스크립트 분석 및 개발 방법
■ NSE 라이브러리와 타 분야 지식을 융합해 만들어진 창의적인 기능 소개와 분석
■ 자사 서비스의 정기적인 진단/보안 모니터링을 강화하는 효율적인 방법
■ 네트워크, 웹서비스, 데이터베이스 등 외부/내부 서비스를 진단할 때 활용 가능한 스크립트 소개와 분석
■ 임직원 PC를 대상으로 악용될 수 있는 악성코드 감염/확산 예방에 활용되는 스크립트 소개와 분석
■ 마이크로소프트 운영체제 취약점 사례 상세 소개와 분석

이 책의 대상 독자

이 책은 NSE의 쓰임과 보안 기술적 진단에 대해 궁금증을 갖고 있는 입문자부터 실무자를 대상으로 한다. 특히 다음과 같은 독자들에게 이 책을 추천한다.

■ 실무에서 NSE를 활용하기 원하는 사람
■ 루아(Lua) 기반의 NSE 스크립트 언어를 활용하기 원하는 사람
■ 프로토콜별 개념과 보안 진단 개념을 이해하기 원하는 사람

이 책의 구성

이 책은 기술 진단을 하면서 자동화된 프로세스를 구축하고 싶은 독자들과 취약점 진단에 관심을 가진 독자를 위해 다음과 같이 구성했다.

1장, NSE 개요는 NSE(Nmap Scripting Engine)에 대한 개요와 구조를 살펴본다. 엔맵을 포트 스캔정도로만 활용할 수 있다는 생각에서 벗어나 루아(Lua) 언어의 스크립트로 구성돼 있는 NSE의 구조를 살펴본다. 이미 정해진 스크립트 룰(Rule)이 있기 때문에 스크립트를 신규로 작성하거나 수정해서 적용하는 데 큰 어려움이 없을 것이다.

2장, 루아 프로그래밍과 와이어샤크 사용은 스크립트를 분석하기 전에 선수 학습이 필요한 부분으로, 루아 프로그래밍과 와이어샤크(Wireshark) 사용법을 설명한다. 루아 프로그래밍은 NSE 스크립트의 기반이 되는 언어이기 때문에 문법 이해와 라이브러리 사용에 대한 이해를 위해서는 중요한 부분을 짚고 넘어가야 한다. 네트워크 패킷 도구의 대명사로 일컬어지는 와이어샤크는 스크립트를 분석하는 과정에서 네트워크 전송 여부를 판단하는 데 사용한다. 두 개의 주제는 각 권의 책으로 설명할 만한 분야이므로, 이 장에서는 스크립트를 분석하는 데 사용될 정도로만 가볍게 다뤘다.

3장, 네트워크 프로토콜 분석은 네트워크 프로토콜 분석에 관련된 스크립트를 살펴본다. 서버와 관련 네트워크를 진단하면 다양한 프로토콜 환경을 접하게 된다. SSH, 텔넷(Telnet), FTP 등 내부 네트워크 대역에서 접근할 수 있는 범위는 더욱 넓어진다. 이렇게 각 프로토콜을 점검할 때 수동으로 점검해야 하는 부분이 있지만, 자동 점검을 통해 어느 정도 지원할 수 있다면 스크립트 도구를 활용하는 편이 좋다. 따라서 이 장에서는 각 프로토콜에 대한 개념 설명과 관련된 스크립트를 분석했다.

4장, 악성코드 분석 서비스는 악성코드 분석 서비스에 관련된 스크립트를 살펴본다. 웹서비스와 모바일 서비스를 통해 매일 다량의 악성코드가 배포되고 있다. 개인 PC와 서버에 설치된 의심스러운 악성코드부터 외부의 의심스러운 사이트에 접근함에 있어서 불필요한 접근을 제한하려면 외부에서 지원하는 API를 이용하는, 최대한 효율적인 관리 방안이 필요하다. 이에 대한 다양한 접근 방법과 스크립트를 분석했다.

5장, 웹서비스 진단은 웹서비스에 관련된 스크립트를 살펴본다. 대외적인 서비스는 항상 웹서비스를 통해 지원하게 된다. 모바일 단말기를 이용하더라도 대부분 웹서비스 기반을 전제로 서비스가 이뤄진다. 웹서비스를 통한 침투는 여전히 가장 높은 비율로 이뤄지고 있다. 그만큼 관리해야 하는 범위가 많으며, 어떤 취약점을 통해 침투될지 진단할 항목이 많기 때문이다. 기존에 사용했던 자동 웹서비스 진단 도구 못지않게 NSE에서도 많은 자동 스크립트를 지원한다. 이 장에서는 이와 같은 진단 항목에 대한 설명과 스크립트를 분석했다.

6장, 데이터베이스 진단은 데이터베이스 진단과 관련된 스크립트를 살펴본다. 데이터베이스는 항상 중요한 자산 정보를 갖고 있다. 공격자는 항상 이 데이터베이스의 정보를 노리고 있다. 대외적인 서비스가 침투된다면 데이터베이스까지의 침투 가능성은 항상 존재하며, 내부에 접근 권한이 있는 사용자에 의해 데이터베이스는 항상 노출된 경우가 많다. 많이 사용되는 데이터베이스를 정리하고, 데이터베이스의 취약점과 스크립트를 분석했다.

7장, 기업 업무 활용 스크립트 분석은 기타 정보를 획득하는 스크립트를 살펴본다. 2장에서 6장까지 대역별로 다룬 스크립트와 달리 다양한 환경에서 사용할 수 있는 스크립트 중에서 효율적으로 응용 가능한 스크립트를 선정해 별도로 구성했다. 여기에서 다루는 스크립트는 일반 환경에서는 잘 접하지 않지만, 한 번 짚고 넘어가면 이후에 이와 같은 환경을 만났을 때 다시 떠올려 활용할 수 있다.

8장, NSE 스크립트 심화 학습은 심화 학습 단원으로, 이제까지 진행한 스크립트 분석을 토대로 직접 스크립트를 개발해 반영하는 과정이다. 웹서비스에서 활용할 수 있는 서버의 버전 정보를 원격에서 체크할 수 있는 스크립트를 예제로 소개한다. 또한 마이크로소프트 윈도우 운영체제 취약점을 예제로 들어 NSE가 앞으로 취약점 분석의 많은 부분에서 활용할 수 있다는 점을 살펴보고 분석한다.

9장, 마이크로소프트 운영체제 취약점 분석 사례는 마이크로소프트 운영체제 취약점 분석 사례를 살펴본다. 8장에서 스크립트 분석을 토대로 다뤘다면 이와 유사한 사례의 취약점을 분석가 입장에서는 어떻게 기술적 분석을 활용해 진행하는지 자세히 살펴본다. 이는 차후에 스크립트를 신규 개발하거나 업데이트할 때 참고할 수 있는 연구 보고서 형태다. 또한 정기적으로 발표되는 유사 마이크로소프트 운영체제의 취약점을 연구 목적으로 분석할 때 도움이 될 것이다.

저자/역자 소개

저자 서문

NSE가 활발하게 개발되던 즈음에 나도 처음 NSE를 접했다. 당시에는 NSE에서 활용할 수 있는 스크립트가 지금처럼 많이 개발될 것이라고는 상상도 못했다. 엔맵으로는 단순히 포트만 스캔함으로써 응답 값의 한계로 인해 많은 것을 할 수 있으리라고는 판단하지 않았기 때문이다. 그런데 NSE로 인해 이제는 생각이 확 바뀌었다. NSE의 라이브러리와 다른 영역의 아이디어를 융합하는 창의적인 기능들이 추가되고 있고, 앞으로도 많은 사람들의 호응을 얻을 것이다. 엔맵은 공격자 입장보다는 자사의 서비스를 관리하는 입장에서 더 효율적으로 사용할 수 있다. 자사의 서비스 진단도 하나의 공격 패턴을 이용하는 것이지만, 엔맵을 활용해 자사의 서비스를 위협으로부터 지켜내고 보안 모니터링을 강화하며 진단 결과에 대한 통합 로그를 유지할 수 있는 방법도 연구할 수 있다. 앞으로도 나는 엔맵 NSE를 어떤 영역에서 활용할 수 있을지 많이 고민해보고 개발할 예정이다. 이 책이 NSE의 종착역이 아니고 함께 시작하는 출발점이라고 생각하자.
- 조정원

엔맵이라고 하면 단순 네트워크 포트 스캐너로만 알고 있는 사람이 대부분일 것이다. 나도 마찬가지로 엔맵을 더욱더 유연하게 사용할 수 있는 NSE를 만나기 전까지 같은 생각을 했다. NSE를 사용하기 시작하면서 강력함과 편리함을 알게 됐고, NSE에 대해 깊이 알고 싶어 소스코드들을 하나씩 분석하기 시작했다. 소스코드를 분석하면서 새로 알게 된 내용도 많았지만, 기존에 알던 내용을 좀 더 깊이 알게 되는 계기가 됐다. 이런 내용들을 고스란히 책에 수록했다. 수록된 내용들이 책을 읽는 독자들에게도 조금이나마 도움이 됐으면 한다.
NSE는 네트워크 프로토콜 분석, 웹서비스 점검, 취약점 점검 등 다양한 스크립트가 들어있는 팔방미인이다. 더욱이 오픈소스이기 때문에 언제든지 스크립트를 수정할 수 있으며, 스크립트 생성 또한 자유롭다는 점에서 더욱 매력적이다. 되돌아보면 NSE 소스코드 분석을 참 재미있게 한 것 같다. 이 책에서 언급한 스크립트가 전부라고 생각하지는 말기 바란다. 현재 430여 개가 넘는 스크립트가 있으며, 이 책에서 언급한 스크립트 이외에도 사용자 환경에 맞는 스크립트를 잘 선택해 활용한다면 업무에 많은 도움이 되리라 생각한다.
-박병욱

근래 들어 대형 해킹 보안 사고가 빈발하면서 보안에 관한 일반인들의 관심이 굉장히 높아졌다. 이로 인해 일반인들이 보안을 공부할 수 있는 여러 책들이 집필되고, 학원에도 강좌들이 개설됐다. 하지만 현재 보안을 공부하고 있는 초중급자들이 볼 만한 책은 전혀 없는 것이 현실이다. 초중급자들의 실력을 한층 높이려면 중급 기술의 서적들이 많이 나와야 함에도 불구하고 아직까지 보안업계는 이를 뒷받침해주지 못한다.
이러한 상황에서 엔맵 NSE를 다룬 이 책은 초중급자들에게 큰 도움이 될 수 있을 것이다. 아직까지 국내의 그 어떤 책에서도 엔맵 NSE를 이렇게 자세히 다룬 책은 없었다. 네트워크나 모의해킹 관련 책들에서 하나의 절이나 장으로만 엔맵 NSE가 거론됐을 뿐, 실제 엔맵 NSE의 기초나 활용 방안 등을 언급한 책은 없었으므로, 혹시 엔맵 NSE에 관심이 있는 독자들이나, 모의해킹에 관심이 많고 실력을 높이고 싶어 하는 독자들은 이 책에서 도움을 받을 수 있으리라 생각한다. 이 책을 읽는 모든 독자들이 엔맵 NSE를 이용해 쉽고 빠르게 모의해킹을 수행할 수 있기를 바란다.
-이준형

최근 공격 동향을 볼 때 웹 기반으로 전파되는 악성코드의 위험성이 날로 증가하고 있다. 웹 기반 악성코드의 경우 클라이언트 시스템에 설치된 프로그램이나 서비스의 취약점을 이용해 시스템에 침투한다. 나는 NSE가 제공하는 많은 기능 중에서 취약점 분석 관점에서 활용할 수 있는 기능들에 주목했다. 시스템에 어떤 취약한 서비스가 동작 중인지 빠르고 쉽게 판단할 수 있는 NSE의 기능에 공개된 취약점 정보를 더하면 엄청난 시너지 효과가 생겨난다. CVE에 등록된 일부 취약점의 경우 시스템 손상 없이 취약 여부를 판단하는 것도 가능하다.
이 책을 다 읽었다고 해서 NSE를 완전히 이해했다고 볼 수는 없다. 하지만 이만큼 NSE에 대해 체계적인 접근을 한 책은 여태껏 없었다고 자부한다. 처음부터 꼼꼼히 살펴보면서 전반적인 스크립트의 기능에 대해 이해하는 것도 좋지만, 내 경우(취약점 분석)처럼 자신이 원하는 방향과 결합해 새로운 시너지를 창출해내는 방법을 택하는 것도 좋을 것이다. 이 책이 많은 사람의 연구에 도움이 되기를 바란다.
-서준석

저자 소개

조정원

KB투자증권에서 보안 업무를 담당하며, 현재 보안프로젝트(www.boanproject.com) 운영자로 활동 중이다. 에이쓰리시큐리티에서 5년 동안 모의 해킹 컨설턴트를 했으며, 모의 해킹 프로젝트 매니저, 웹 애플리케이션, 소스코드진단 등 다양한 영역에서 취약점 진단을 수행했다. 이후 KTH 보안 팀에서 모바일 서비스, 클라우드 서비스 보안, 침해사고 대응 업무를 했다. 공동 저서로 『백트랙을 활용한 모의해킹』(에이콘출판), 『디지털 포렌식의 세계』(인포더북스), 『크래커 잡는 명탐정 해커』(성안당) 등이 있으며, 보안프로젝트 멤버들과 다양한 영역에서 연구원과 저자로 꾸준히 활동 중이다.

박병욱

두잇시스템 보안파트에 몸담고 있다. 현재 국회도서관에서 보안 시스템 운영하고 있으며, 각종 로그들을 분석해 내외부의 불법적인 침입 시도와 오/남용, 악의적인 행위 등 위험 요소에 대한 사전 차단과 침해사고 대응 업무를 수행 중이다. 보안프로젝트에서는 백트랙/칼리 리눅스 도구 분석, 엔맵 스크립팅 엔진 소스코드와 원리 분석, 안드로이드 악성 코드 분석 등을 진행하고 있다. 공동 저서로 『백트랙을 활용한 모의해킹』(에이콘출판)이 있다.

이준형

건양대학교에 재학 중(2009~)이며, 모의해킹, 버그 헌팅 프리랜서로 활동 중이다. 프리랜서 활동 중에 2013 코드게이트 해킹방어 대회에서 문제 출제를 맡았고, 공동 저서로 『디지털 포렌식의 세계』(인포더북스)가 있으며, 주로 디지털 포렌식과 관련된 주제로 여러 프로젝트를 진행하고 있다. 현재 관심 있게 공부하는 분야는 디지털 포렌식과 버그 헌팅, 헬스케어 같은 유비쿼터스 보안, 융합 보안이다.

서준석

(주)한국정보보호교육센터에서 교육 관련 사업 관리와 콘텐츠 연구를 수행했으며, 보안프로젝트에서는 메타스플로잇 분석, 취약점 분석 부문 연구를 총괄하고 있다. 우리나라의 보안 교육 수준 발전에 기여하고 싶은 작은 소망을 가진 열정적인 청년이다. 현재는 시스템 취약점 진단과 보안 관련 프레임워크 개발에 무게를 두고 개인 연구를 수행 중이다.

목차

목차
  • 1장 NSE 개요
  • 1.1 NSE의 개념
  • 1.2 NSE 환경 구성
    • 1.2.1 백트랙/칼리 리눅스 환경
    • 1.2.2 윈도우 환경
  • 1.3 테스트 환경 구성
  • 1.4 스크립트를 분석하기 전에 알면 좋은 것
    • 1.4.1 엔맵 개발자 페이지
    • 1.4.2 엔맵 기본 명령어
    • 1.4.3 디버깅 옵션
    • 1.4.4 메타스플로잇에서 엔맵 활용
  • 1.5 스크립트 카테고리 요약
  • 1.6 NSE 포맷 설명
    • 1.6.1 description 필드
    • 1.6.2 categories 필드
    • 1.6.3 author 필드
    • 1.6.4 license 필드
    • 1.6.5 dependencies 필드
    • 1.6.6 NSEDoc
    • 1.6.7 Rules
    • 1.6.8 Action
  • 1.7 라이브러리의 이해
  • 1.8 정리

  • 2장 루아 프로그래밍과 와이어샤크 사용
  • 2.1 루아 프로그래밍에 대한 이해
    • 2.1.1 루아 프로그래밍 실습 환경 구축
    • 2.1.2 반복문
    • 2.1.3 테이블과 반복문
    • 2.1.4 함수
    • 2.1.5 테이블의 여러 가지 도구
    • 2.1.6 문자열 다루기
  • 2.2 패킷 분석 도구 와이어샤크
    • 2.2.1 와이어샤크란?
    • 2.2.2 와이어샤크의 인터페이스
    • 2.2.3 File 메뉴
    • 2.2.4 Edit 메뉴
    • 2.2.5 Go 메뉴
    • 2.2.6 Capture 메뉴
    • 2.2.7 Analyze 메뉴
    • 2.2.8 Statistics 메뉴
    • 2.2.9 Tool 메뉴
  • 2.3 정리

  • 3장 네트워크 프로토콜 분석
  • 3.1 텔넷 계정 정보 획득: telnet-brute.nse 분석
  • 3.2 텔넷 암호 수준 파악: telnet-encryption.nse 분석
  • 3.3 핑거 취약점 진단: finger.nse 분석
  • 3.4 FTP의 익명 계정 확인: ftp-anon.nse 분석
  • 3.5 NFS 취약점 진단: nfs-showmount.nse 분석
  • 3.6 원격 서비스 취약점 진단: rexec-brute.nse 분석
  • 3.7 NetBios 취약점 진단: nbstat.nse 분석
  • 3.8 broadcast-netbios-master-browser.nse 분석
  • 3.9 SMB 취약점 진단: smb-enum-shares.nse 분석
  • 3.10 SMB 보안 수준 확인: smb-security-mode.nse 분석
  • 3.11 SSH 프로토콜 진단: sshv1.nse 분석
    • 3.11.1 SSH 개념
    • 3.11.2 SSH 종류
    • 3.11.3 공개 키/개인 키 암호화 방식(비대칭 암호화 방식)
  • 3.12 SSH 공개 키 확인: ssh-hostkey.nse 분석
  • 3.13 정리

  • 4장 악성코드 분석 서비스
  • 4.1 악성코드 온라인 서비스 활용: http-virustotal.nse 분석
  • 4.2 구글 세이프 브라우징 활용: http-google-malware.nse 분석
  • 4.3 악성코드 의심 호스트 정보 확인: http-malware-host.nse 분석
  • 4.4 위치 정보 수집: ip-geolocation-ipinfobd.nse 분석
  • 4.5 위치 정보 수집: ip-geolocation-geobytes.nse 분석
  • 4.6 정리

  • 5장 웹 서비스 진단
  • 5.1 HTTP 프로토콜의 이해
  • 5.2 메소드 정보 수집: http-method.nse 분석
  • 5.3 Trace 사용 여부 확인: http-trace.nse 분석
  • 5.4 페이지 내 특정 패턴 활용 검색: http-grep.nse 분석
  • 5.5 자동 스크린샷 기능: http-screenshot-html.nse 분석
  • 5.6 php 버전 정보 확인: http-php-version.nse 분석
  • 5.7 워드프레스 플러그인 취약점 진단: http-wordpress-plugins.nse 분석
    • 5.7.1 워드프레스 플러그인 취약점 진단 예제
  • 5.8 이메일 정보 수집: http-email-harvest.nse 분석
  • 5.9 robots 파일 정보 수집: http-robots.nse 분석
  • 5.10 웹 서비스 사용자 디렉터리 정보 수집: http-userdir-enum.nse 분석
  • 5.11 웹 서비스 인증 페이지 검색: http-auth-finder.nse 분석
  • 5.12 웹페이지 응답 시간 체크: http-chrono.nse 분석
  • 5.13 정리

  • 6장 데이터베이스 진단
  • 6.1 MS-SQL 정보 수집: ms-sql-info.nse 분석
  • 6.2 MySQL 정보 수집: mysql-info.nse 분석
  • 6.3 MySQL 무차별 공격: mysql-brute.nse 분석
  • 6.4 MySQL 사용자 정보 수집: mysql-users.nse 분석
  • 6.5 계정 정보가 설정되지 않은 정보 수집: mysql-empty-password.nse 분석
  • 6.6 SQL 인젝션 진단: sql-injection.nse 분석
  • 6.7 정리

  • 7장 기업 업무 활용 스크립트 분석
  • 7.1 취약점 분석 데이터베이스 활용: exploitdb.nse 분석
  • 7.2 취약점 분석 데이터베이스 활용: vulscan.nse 분석
  • 7.3 포트 결과 역출력 기능: reverse-index.nse 분석
  • 7.4 페이지 내 주석 필터링: http-comments-displayer.nse 분석
  • 7.5 페이지 내 스크립트 진단: http-referer-checker.nse분석
  • 7.6 VNC 버전 정보 확인: vnc-info.nse 분석
  • 7.7 정리

  • 8장 NSE 스크립트 심화 학습
  • 8.1 개발 시에 참고할 사항
  • 8.2 NSE 스크립트 개발 첫 단계
    • 8.2.1 첫 단계는 항상 Hello
    • 8.2.2 서비스 응답/요청 테스트
    • 8.2.3 버전 정보 체크
  • 8.3 마이크로소프트 취약점 진단
    • 8.3.1 스크립트 분석
    • 8.3.2 마이크로소프트 취약점 개요
    • 8.3.3 분석 요약
    • 8.3.4 상세 분석
  • 8.4 정리

  • 9장 마이크로소프트 운영체제 취약점 분석 사례
  • 9.1 취약점 개요
    • 9.1.1 분석 추진 배경
    • 9.1.2 MS12-20 취약점 요약
    • 9.1.3 MS12-20 취약점 원리
  • 9.2 상세 분석
    • 9.2.1 공격 기법과 기본개념
    • 9.2.2 공격 코드 상세 분석
    • 9.2.3 공격 기법 분석
    • 9.2.4 대응 방안

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안