책 소개
요약
해커 양성이 전 세계적인 이슈로 떠오르면서 해커에게 요구되는 정보와 기술의 양도 급격히 증가하고 있다. 세계적인 해킹대회인 데프콘에서 수상한 경력을 비롯해 여러 국내외 해킹대회에서 다수 우승하며 활약 중인 화이트햇 해커들이 집필한 이 책은 '해킹'과 '해커'를 둘러싼 다양한 지적 호기심을 충족시켜줄 것이다. 특히 해커를 꿈꾸는 이들이 꼭 알아야 할 필수 지식과 핵심 기술을 전달하는 데 초점을 맞췄다. 이 책은 해킹의 개요를 시작으로 웹 해킹, 리버스 엔지니어링, 시스템 해킹, 버그 헌팅, 디지털 포렌식, 취약점/해킹 마켓 등의 주제를 8개 장에 걸쳐 차례로 다룰 뿐 아니라, 건전한 보안의식 함양 등 화이트햇 해커의 기본을 전달하는 데에도 노력을 기울였다. 블랙햇 해커의 해킹 공격에 맞서고자 하는 미래의 화이트햇 해커들에게 이 책은 풍부한 설명과 예제가 담긴 유용한 입문서다.
감수의 글
이 책은 세계 최고의 해킹팀이 전하는 해킹 입문서다. 이 책의 저자진은 세계 최고의 해킹대회 우승팀이며, 구글과 한글과컴퓨터 사에 취약점 정보를 신고해 각 사로부터 감사의 부상을 받기도 했던 자타가 공인하는 세계 최고의 화이트햇 해커팀이다. 저자진은 독자들이 이 책을 통해 쉽게 해킹의 원리를 이해할 수 있도록 자신들이 겪은 시행착오를 비롯한 다양한 지혜와 경험을 담았다. 따라서 이 책은 독자들이 내용을 읽고 이해하며 혹은 직접 따라해보기도 하면서 시스템 전문가의 길로 들어설 수 있도록 유도하는 길라잡이라 할 수 있겠다.
특히 해킹 원리와 취약점 찾기, 익스플로잇 개발, 리버싱과 같이 해커에게 꼭 필요한 기술뿐 아니라 해킹 관련 축제나 취약점 신고 포상제 등과 같이 해커의 생활을 들여다볼 수 있는 내용까지 담고 있다. 1장 ‘맛보기’에서는 해커의 유형, 법과 윤리, 해킹 학습 노하우부터 해커들의 축제인 해킹대회에 이르기까지 전반적인 내용을 소개하고 있으며, 2장 ‘웹 해킹’에서는 인터넷을 대표하는 웹 서비스와 관련된 해킹 기술을 전달하기 위해 구글 검색을 이용한 해킹부터 파일 업로드, 크로스 사이트 스크립팅, 데이터베이스 해킹 기술 등을 안내한다. 3장 ‘리버스 엔지니어링’을 통해서는 바이너리 프로그램을 분석하는 리버싱 기법을 예제와 함께 설명하며 4장 ‘시스템 해킹’에서는 컴퓨터 프로그램 실행 시에 하드웨어와 소프트웨어의 동작 원리를 풀어냈다. 5장 ‘버그 헌팅’에서는 소스 코드 감사, 바이너리 감사, 퍼징 등 알려지지 않은 제로데이 취약점을 찾는 기술을 소개한다. 6장 ‘디지털 포렌식’은 해킹 사건의 단서를 찾아내는 기법에 대한 정보를 제공한다. 그리고 7장 ‘취약점 마켓’과 8장 ‘해킹 마켓’ 단원에서는 취약점 신고와 보상, 그리고 블랙마켓의 현황 등을 파악할 수 있도록 구성했다.
해커의 유형에는 사람들에게 피해를 주는 블랙햇 해커(Black Hat Hacker)와 세상을 이롭게 하는 화이트햇 해커(White Hat Hacker)가 있다. 화이트햇 해커로서 기술적인 전문가에 머물지 않고 선의의 피해자를 줄이며 더 나아가 세상에 도움이 되는 기술을 창조한다면 그보다 큰 업적은 없을 것이다. 전화 신호를 조작해 무료 통화를 가능케 한 블루박스를 만들었던 스티브 잡스는 아이폰으로 스마트 세상을 열었고, 악성코드를 리버싱하던 안철수 박사는 악성코드로부터 시스템을 지킬 수 있는 백신 프로그램을 만들어 사람들이 더 안심하고 IT를 활용하는 데 도움을 줬다. 이 책이 해커의 세계에 입문하고자 하는 독자들로 하여금 스티브 잡스나 안철수 박사와 같이 해킹 기술의 전문성을 생산적인 일로 승화시켜 세상을 더 이롭게 하는 화이트햇 해커로서의 꿈을 키워나가는 데 기여할 수 있길 기대한다.
더불어, 이 책은 회사의 보안 책임자인 CISO, 보안정책을 입안하는 정부 관료 등 여러 조직에서 관련 정책을 만들고 실행하는 책임자들이 해킹의 원리와 최근 기술 동향을 접하고 이해하는 과정에서 매우 가치 있게 활용될 것이다. 사이버 공격에 대한 피해는 시간의 함수이기 때문에 해킹 원리에 대한 책임자들의 수준 높은 이해는 빠르고 정확한 의사결정을 내리고 피해를 최소화하는 데 큰 도움이 될 것으로 확신한다.
- 이희조 / 고려대학교 컴퓨터학과 교수
추천의 글
‘그 집을 모래 위에 지은 어리석은 사람 같으리니 비가 내리고 창수가 나고 바람이 불어 그 집에 부딪치매 무너져 그 무너짐이 심하니라.’ 성경에 나오는 한 대목이다. 우리 인류는 정보화 시대에 들어선 이후 더 빠른 속도로 ICT 분야의 발전을 이뤄내고 있다. 스마트폰, 무인자동차, 사물인터넷 등으로 인해 미래 세상에서나 가능하리라 상상하던 것들이 현실에서 속속 이뤄지고 있다.
이러한 놀라운 ICT 기술이 우리에게 경제적인 부와 편리함을 가져다주고 있지만, 한편으론 ‘모래 위에 지은 집’이 되지 않을까라는 불안한 생각이 들기도 한다. 사이버 안전 분야에서 오래 몸담아온 내 경험에 비춰볼 때 ‘비가 내리고 창수가 나고 바람이 부는’ 해킹으로 말미암아 ‘무너짐이 심하면 어쩌나.’라는 걱정이 생겨나기 때문이다.
사이버테러가 걱정스러울 정도로 진화하고 있다. 기술적인 호기심, 개인의 금전적 이익, 기업 간의 경쟁 수단, 단체와 국가 간의 사이버전 등으로 그 목적과 형태가 다양하게 변화하면서 이제는 개인에게 손실을 입힐 뿐만 아니라 기업의 생존과 사회의 안정, 국가 안보에까지 영향을 미치고 있다.
그렇기 때문에 기업이나 국가에서 사이버테러에 대응할 수 있는 화이트햇 해커의 수요가 급증하고 있다. 하지만 ‘어떻게 화이트햇 해커를 양성할 것인가?’라는 질문에는 아직 시원하게 답을 할 수 없다. 현재 국가적 차원에서 해커 양성에 나서고는 있지만 수요에 비해 그 숫자가 턱없이 부족한 실정이기 때문이다.
나는 국가를 위해 헌신할 수 있는 화이트햇 해커를 양성하기 위해 오랫동안 다양한 노력을 기울여왔지만 적절한 방안이 없어 해킹 기술을 가르치기도 어려웠고, 또 해커 지망자가 스스로 배우게 하기도 쉽지 않았다.
이러한 고민을 하던 차에 이 책이 출간되어 무척 기쁘다. 이 책은 철이 철을 날카롭게 하듯이 화이트햇 해커의 시선에서 작성되었고 다양한 해킹의 범주를 고루 경험할 수 있도록 구성되어, 많은 해커 지망자들이 스스로 화이트햇 해커로 성장할 수 있도록 도와줄 것으로 확신한다. 뿐만 아니라 대학에서 관련 내용을 배우는 수업에 교재로 활용하기에도 적합한 책이다.
ICT 기술로 전 세계가 서로 엮이면서 빠른 속도로 발전하고 번영하는 반면에, 사이버테러로 몸살을 앓고 있는 것이 지구촌의 현주소다. 따라서 우리가 지금 누리는 번영이 모래 위에 지은 집이 되지 않도록, 진화하는 사이버테러에 맞서야 할 것이다. 이 책을 읽는 독자들이 창의적이고 도전적인 자세로 기업과 국가 차원을 넘어 세계 인류의 번영을 위해 노력하는 화이트햇 해커로서 원대한 꿈을 꼭 이루기 바란다.
- 옥도경 / 전 국군사이버사령관
이 책에서 다루는 내용
■ 해커의 의미, 해커 윤리, 해킹 학습 노하우, 합법적 해킹 실습 방법, 해커들의 축제
■ 구글 해킹, 파일 업로드, XSS, SQL 삽입 공격 및 대응 방법
■ 리버스 엔지니어링, 디버깅, 어셈블리, 코드 패치, 메모리 패치, 디컴파일
■ 명령어 삽입 공격, 레이스 컨디션 공격, 메모리 오염 공격, 버퍼 오버플로우
■ 데이터 삭제, 데이터 복구, 메모리 포렌식, 안티 포렌식
■ 취약점 마켓, 버그 바운티, 블랙마켓, 악성코드, 공격 툴
이 책의 대상 독자
■ 해킹과 보안 분야에 입문하려는 독자
■ 해킹과 보안 분야를 공부하고 있는 독자
■ 해킹과 보안 분야를 기술적 관점에서 이해하고 싶은 독자
이 책의 구성
책의 각 장은 별개의 주제로 이뤄져 있지만 각 장의 절에서 ‘개요’, ‘사례’, ‘실전’, ‘음미하기’, ‘마치며’를 공통으로 포함하도록 짜임새를 두고 구성했다. 우선 ‘개요’는 말 그대로 각 장을 배우기 전에 읽어야 할 도입 부분에 해당하고 ‘사례’는 각 장을 본격적으로 설명하기에 앞서 해당 주제가 실제로 적용되었던 사례들을 알아보는 부분이다. 이후 본격적인 설명이 이어진 뒤 ‘실전’을 통해 앞서 배운 내용을 문제풀이 형태로 직접 실습해볼 것이다. 각 장의 주제마다 제공되는 ‘음미하기’에서는 이 책에서 해당 내용에 대해 맛보기를 한 이후에 독자들이 좀 더 심도 있게 학습할 수 있도록 방향성을 제시한다. 마지막으로 ‘마치며’에서는 각 장을 마무리하는 내용을 정리해서 언급 할 것이다. 책 전반의 주제에 대한 기반 내용을 다루는 1장 ‘맛보기’와 그 설명 자체로써 ‘사례’, ‘실전’을 대체하는 5장 ‘버그 헌팅’, 7장 ‘취약점 마켓’, 8장 ‘해킹 마켓’ 등은 예외적으로 절 구성에서 일부 공통 요소를 적용하지 않았다. 각 장에서 다루는 내용은 다음과 같다.
1장, ‘맛보기’
에서는 ‘해커’에 대한 소개를 시작으로 해킹 입문 전에 가장 중요하게 학습해야 할 윤리의식을 짚고 넘어간다. 이후 이 책을 구성하는 각 장의 주제들이 실제 어떤 상황에서 필요한지 해커의 공격 시나리오를 통해 하나씩 대입해보며 책의 주제 별 필요성을 되새겨본다. 또한 학습에 좀 더 실질적인 도움이 될 수 있도록 해킹 공부 노하우와 합법적인 해킹 실습 방법을 소개한다. 마지막으로 해킹 분야에 대한 흥미를 고취시키기 위해 해커들의 축제에는 어떤 것들이 있는지 간단히 알아본다.2장, ‘웹 해킹’
에서는 다양한 웹 해킹 공격 기법과 방어 기법들을 다룬다. 구글 해킹, 파일 업로드, 크로스 사이트 스크립팅, 데이터베이스 해킹에 관해 입문자도 쉽게 익힐 수 있도록 기본 지식부터 예제를 통해 차례로 설명한다. 또한 각 공격 기법에 따른 효과적인 방어 기법을 제시하면서 웹 개발자라면 기본적으로 익혀야 하는 지식을 담았다.3장, ‘리버스 엔지니어링’
에서는 프로그램 분석의 기본이 되는 리버스 엔지니어링에 대해 알아본다. 이 장을 통해 자신이 작성한 프로그램 분석을 시작으로, 어떤 언어라도 분석할 수 있는 기초를 마련할 수 있다. 3장에서 예제로 활용한 프로그램 파일은 에이콘출판사 도서 정보 페이지(http://www.acornpub.co.kr/book/hacking-guide)에서 다운로드 할 수 있다.4장, ‘시스템 해킹’
에서는 명령어 삽입 공격, 레이스 컨디션 공격, 메모리 오염 공격 등의 시스템 해킹 공격이 이용하는 각 취약점들의 발생 원리를 설명하고 이를 어떻게 공격할 수 있는지 알아본다.5장, ‘버그 헌팅’
에서는 실제 웹, 안드로이드, 윈도우 소프트웨어 등에서 발생한 취약점들을 설명하며, 어떻게 취약점을 발견했고 어떻게 이들 취약점을 익스플로잇 할 수 있는지 살펴볼 것이다.6장, ‘디지털 포렌식’
에서는 디지털 포렌식의 개요와 사례 소개를 시작으로, 해킹 대회에 주로 출제되는 유형인 파일 삭제 복구, 메모리 포렌식, 안티 포렌식에 대해 다룬다. 이 장은 입문자에게 알맞은 난이도의 실습 가능한 내용 위주로 구성되었을 뿐 아니라, 현재 진행되고 있는 디지털 포렌식 챌린지에 대한 소개와 문제 풀이, 기술적 발전을 위한 조언 등을 모두 담아내 챌린지를 준비하는 사람들이 실전감각을 익힐 수 있게 돕는다.7장, ‘취약점 마켓’
에서는 발견한 취약점을 거래하는 방법에 대해 다룬다. 이를 위해 취약점에 대한 보상 프로그램인 버그 바운티 프로그램을 운영하는 기업과 단체를 기술하고, 이들이 어떻게 프로그램을 운영하는지와 어떻게 프로그램에 참여할 수 있는지에 대해 알아본다.8장, ‘해킹 마켓’
에서는 블랙마켓에서 거래되는 다양한 상품과 서비스에 대해 알아본다. 이와 같은 것들을 구매하기 위해 마켓에 접근하고 상품을 찾고 거래하기 위해 대금을 결제해 상품을 받는 단계까지 일련의 과정을 살펴본다.목차
목차
- 1장 맛보기
- 1.1 개요
- 1.2 해커의 정확한 의미
- 1.3 해킹 입문 시 가장 중요한 것
- 1.4 해커의 공격 시나리오
- 1.5 해킹 학습 노하우
- 1.5.1 효과적인 해킹 학습 방법론
- 1.5.2 교류를 통한 배움
- 1.6 해킹 실습의 정석
- 1.6.1 워게임
- 1.6.2 해킹대회
- 1.6.3 가상 환경
- 1.6.4 허가된 시스템
- 1.7 해커들의 축제
- 1.7.1 컨퍼런스
- 1.7.2 이벤트
- 1.8 마치며
- 2장 웹 해킹
- 2.1 개요
- 2.2 사례
- 2.3 환경 구축
- 2.3.1 윈도우 환경에서의 APM 구축
- 2.3.2 툴 설치
- 2.4 구글 해킹
- 2.4.1 검색을 이용한 공격
- 2.4.2 구글 해킹 예제
- 2.4.3 구글 해킹 도구
- 2.4.4 방어 기법
- 2.5 파일 업로드
- 2.5.1 웹 쉘 제작
- 2.5.2 파일 업로드 취약점 공격
- 2.5.3 파일 업로드 우회 기법
- 2.5.4 파일 업로드 방어 기법
- 2.6 크로스 사이트 스크립팅
- 2.6.1 크로스 사이트 스크립팅
- 2.6.2 쿠키 공격
- 2.6.3 크로스 사이트 스크립팅으로 가능한 것들
- 2.6.4 사이트 간 요청 위조 공격
- 2.6.5 방어 기법
- 2.7 데이터베이스 해킹
- 2.7.1 공격에 필요한 구문
- 2.7.2 공격
- 2.7.3 방어 기법
- 2.8 웹 해킹 음미하기
- 2.9 마치며
- 3장 리버스 엔지니어링
- 3.1 개요
- 3.2 사례
- 3.2.1 컴퓨터 원리와 구조 이해
- 3.2.2 프로그램 유지보수
- 3.2.3 개발에 활용
- 3.2.4 보안점검 및 취약점
- 3.2.5 악성코드 분석
- 3.3 환경 구축
- 3.3.1 Visual Studio Express
- 3.3.2 올리디버거
- 3.3.3 계산기
- 3.4 기초 지식
- 3.4.1 중앙연산처리장치
- 3.4.2 레지스터
- 3.4.3 메모리 구조
- 3.4.4 어셈블리어 vs. C 언어
- 3.4.5 컴파일, 디컴파일
- 3.4.6 바이트 오더
- 3.4.7 디버깅
- 3.5 한 줄 리버싱
- 3.5.1 지역 변수
- 3.5.2 전역 변수
- 3.5.3 구조체
- 3.5.4 if 리버싱
- 3.5.5 switch 리버싱
- 3.5.6 for 리버싱
- 3.5.7 while 리버싱
- 3.6 함수 리버싱
- 3.6.1 콜링 컨벤션
- 3.6.2 함수 호출 리턴값 확인
- 3.6.3 함수 프롤로그, 에필로그
- 3.6.4 지역 변수, 전역 변수, 포인터
- 3.7 패치
- 3.7.1 원하는 코드 위치 찾기
- 3.7.2 메모리 패치
- 3.7.3 코드 패치
- 3.7.4 파일 저장
- 3.8 실전
- 3.8.1 비밀번호
- 3.8.2 시리얼
- 3.8.3 네트워크 통신
- 3.9 리버스 엔지니어링 음미하기
- 3.10 마치며
- 4장 시스템 해킹
- 4.1 개요
- 4.2 사례
- 4.3 시스템 해킹 기법의 목표
- 4.4 환경 구축
- 4.4.1 파이썬
- 4.5 명령어 삽입 공격
- 4.5.1. 개요
- 4.5.2 명령어 처리기
- 4.6.3 명령어 삽입 공격
- 4.5.4 명령어 삽입 취약점이 발생하는 패턴
- 4.5.5 명령어 삽입 공격에 사용되는 명령어 처리기 연산자
- 4.6 레이스 컨디션
- 4.6.1 개요
- 4.6.2 레이스 컨디션 취약점
- 4.7 메모리 오염 공격
- 4.7.1 메모리 오염 공격
- 4.7.2 버퍼 오버플로우 공격
- 4.7.3. 형식 문자열
- 4.7.4 정수 오버플로우/언더플로우 공격
- 4.8 실전
- 4.8.1 크래시 발생시키기
- 4.8.2 EIP 덮어쓰기
- 4.9 시스템 해킹 음미하기
- 4.10 마치며
- 5장 버그 헌팅
- 5.1 개요
- 5.2 취약점을 찾는 방법
- 5.2.1 소스 코드 감사
- 5.2.2 바이너리 감사
- 5.2.3 퍼징
- 5.3 취약점의 종류
- 5.3.1 메모리 오염
- 5.3.2 설계
- 5.4 웹에서의 버그 헌팅
- 5.4.1 제로보드 XE 원격 코드 실행 1
- 5.4.2 제로보드 XE 원격 코드 실행 2
- 5.5 안드로이드에서 버그 헌팅
- 5.5.1 애플리케이션 권한 상승 취약점
- 5.6 윈도우 소프트웨어에서 버그 헌팅
- 5.6.1 곰플레이어 원격 코드 실행 취약점
- 5.6.2 한글 원격 코드 실행 취약점
- 5.7 버그 헌팅 음미하기
- 5.8 마치며
- 6장 디지털 포렌식
- 6.1 개요
- 6.2 사례
- 6.3 환경 구축
- 6.4 파일 삭제 복구
- 6.4.1 실습 파일 생성 및 기본 구조 확인
- 6.4.2 파일 삭제
- 6.4.3 파일 카빙
- 6.5 메모리 포렌식
- 6.5.1 메모리 포렌식 기초 지식
- 6.5.2 메모리 덤프
- 6.5.3 메모리 분석
- 6.6 안티 포렌식
- 6.6.1 안티 포렌식 기본 개념
- 6.6.2 스테가노그래피
- 6.6.3 데이터 완전 삭제
- 6.7 실전
- 6.7.1 디지털 포렌식 챌린지
- 6.7.2 국제 해킹대회 포렌식 문제
- 6.8 디지털 포렌식 음미하기
- 6.9 마치며
- 7장 취약점 마켓
- 7.1 개요
- 7.2 사례
- 7.3 환경 구축
- 7.4 취약점 시장
- 7.4.1 ZDI
- 7.4.2 iDefense
- 7.5 취약점 보상 프로그램
- 7.5.1 구글
- 7.5.2 페이스북
- 7.5.3 트위터
- 7.5.4 삼성전자
- 7.5.5 마이크로소프트
- 7.5.6 국가기관
- 7.6 마치며
- 8장 해킹 마켓
- 8.1 개요
- 8.2 블랙마켓
- 8.2.1 구조
- 8.2.2 가입
- 8.2.3 다양한 공격 툴
- 8.2.4 튜토리얼
- 8.2.5 마켓
- 8.2.6 거래 상품
- 8.3 마켓 거래
- 8.4 마치며
도서 오류 신고
정오표
정오표
2015-01-22 인쇄 발행본 수정 사항
p7 - 10행
키우게 해주길 기대한다.
→
키워나가는 데 기여할 수 있길 기대한다.
p19 - 11행
자체로서
→
자체로써
p64 - 맨 하단 내용 추가
그리 어렵지 않게 설치할 수 있다.
→
그리 어렵지 않게 설치할 수 있다. 설치에 어려움이 있다면 http://www.apmsetup.com/ 을 이용하여 APM을 한 번에 설치할 수 있다. 해당 프로그램의 HTTP 루트 폴더는 C:\APMSETUP\htdocs\ 에 존재한다.
p69 - 5행
그림 2-5와 같은 5.2 버전이 나온다
→
그림 2-6과 같은 5.2 버전이 나온다
p77 - 11행
이 프로그램은 자바 기반으로 제작되어 있어 JRE(Java runtime environment)라는 자바 실행도구가 필요하다.
→
이 프로그램은 http://www.parosproxy.org/에서 다운로드 할 수 있으며, 자바 기반으로 제작되어 있어 JRE(Java runtime environment)라는 자바 실행도구가 필요하다.
p103 - 아래에서 3행
htm 등
→
html 등
p131 - 맨 하단 내용 추가
8. 크로스 사이트 요청 변조
9. 알려진 취약점이 있는 컴포넌트 사용
10. 검증되지 않은 리다이렉트 및 포워드
(출처 : https://www.owasp.org/)
일반적으로 웹 해킹을 할 때는 요청값과 응답값을 유심히 살펴본 후 서버 사이드 코드를 추측해 공격해야 하기 때문에, 다양한 지식이 있을수록 많은 추측을 할 수 있다. 여기서 언급한 10대 위험을 잘 숙지하고 ASP, JSP, MS-SQL, 장고(Django) 등 다양한 플랫폼을 익힌다면 좀 더 넓은 분야의 웹 해킹 기술들을 습득할 수 있을 것이다.
p136 - 18행
던
→
든
2015-02-10 2쇄 수정 사항
[p.15 : 아래서 14행]
4.6.3 명령어 삽입 공격
->
4.5.3 명령어 삽입 공격
[p.68 : 8~12행 삭제]
Shortopentag = On
// PHP 선언을 “<?”로도 허용
magicquotesgpc = On
// GET, POST, COOKIE에서의 널(%00), 작은따옴표('), 큰따옴표(") 앞에 역슬래시() 처리(SQL 삽입 방지 문자열 처리)
[p.148 : 아래서 2행]
2진수-F5 키, 8진수-F6 키, 10진수-F7 키, 16진수-F8 키다.
->
2진수-F8 키, 8진수-F7 키, 10진수-F6 키, 16진수-F5 키다.
[p.152: 7행]
32비트(0 ~ 232-1)
->
32비트(0 ~ 2³²-1)
[p.165 : 1행]
0x01313C47 주소에서
->
0x01313C2E 주소에서
[p.166 : 4행]
지역 변수인 [EBP-D0]
->
지역 변수인 [EBP-8]
[p.217 : 8, 10, 11, 13행]
[EBP-9]
->
[EBP-8]
[p.241 : 5행]
4.6.3 명령어 삽입 공격
->
4.5.3 명령어 삽입 공격