책 소개
모의해킹 업무 및 웹서비스 보안 업무에서는 서비스 상태 정보를 수집하기 위해 엔맵(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장에서 스크립트 분석을 토대로 다뤘다면 이와 유사한 사례의 취약점을 분석가 입장에서는 어떻게 기술적 분석을 활용해 진행하는지 자세히 살펴본다. 이는 차후에 스크립트를 신규 개발하거나 업데이트할 때 참고할 수 있는 연구 보고서 형태다. 또한 정기적으로 발표되는 유사 마이크로소프트 운영체제의 취약점을 연구 목적으로 분석할 때 도움이 될 것이다.
목차
목차
- 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 대응 방안