Page 1


책1.indb 1

2017-02-16 오후 3:21:56


IV

들어가며

웹 응용프로그램은 등장 이후 계속 주목을 받아온 기술이지만, 동시에 공격자에게 쉬운 공격의 대상이 되고 있다. 하지만 지키는 쪽에서도 대책 없이 공격을 받기보다는 안전한 웹 응용프로 그램을 만들기 위한 방법을 계속 강구하고 있다. 시큐어 코딩 등을 사용해 안전한 웹 응용프로그램을 구축한다면 공격을 막을 수는 있지만, 아 직도 피해를 받는 웹사이트가 많다. 피해를 받는 웹사이트는 정말 안전하게 만들어져 있던 것 일까? 그리고 안전하게 만들어졌다는 것을 보장할 수 있었을까? 이 책은 취약점을 발견하기 위한 방법인 ‘취약점 진단’에 대해 다룬 책이다. ‘취약점’은 프로그 램 버그의 일종으로, 버그를 악용해 피해를 입힐 수 있는 것을 취약점이라고 한다. 그리고 취약 점은 ‘시큐리티 홀(Security Hole)’이라고도 한다. ‘취약점 진단’이라는 것은 시스템에 그 취약점이 있는지를 확인하는 기술이다. 즉, 취약점 진단 은 시스템에 악용될 수 있는 버그가 있는지를 발견하는 기술이다. 그리고 보안과 관련된 기능 이 미흡한지 여부도 취약점 진단으로 발견할 수 있다. 취약점 진단은 ‘보안 진단’이라고도 한다. 이 취약점 진단은 보안 회사가 실시하는 경우가 대부분이다. 이것은 취약점 진단이라는 기술이 특수하기 때문에 숙련된 보안 전문가가 아니면 수행할 수 없다는 오해가 있기 때문일지도 모 른다. 하지만 실제로는 꼭 그렇지는 않다. 절차를 알고, 방법을 알면 누구나 수행할 수 있는 기 술이다. 오히려 시스템 사양을 알고 있는 개발자가 취약점 진단을 한다면 시스템을 잘 모르는 보안 전문가가 수행하는 것보다 더 나은 결과를 도출할 수도 있다. 이 책에서는 웹 응용프로그램 취약점 진단을 수행하기 위해 필요한 기초 지식, 진단에 필요한 도구, 취약점을 효율적으로 발견하기 위한 진단 절차, 보고서를 작성하는 법 등을 다룬다. 이 책이 웹 응용프로그램 개발자, 외주로 시스템을 도입해 검사를 수행해야 하는 담당자, 웹 응 용 프로그램의 취약점 진단 기술을 공부하고 싶은 학생 등 웹에 관련된 많은 분께 도움이 되는 책이 됐으면 한다. 독일 허쉬호른의 고성 호텔에서 2016년 3월의 좋은 날 주식회사 트라이코더 우에노 센

책1.indb 4

2017-02-16 오후 3:21:56


VI

목차 _ 기초편

01

1-1 취약점 진단이란 ‘취약점을 발견하기 위한 테스트 방법’ �������������������������������� 2 취약점이란................................................................................................................ 2

1-2 이 책의 취약점 진단 대상과 웹사이트 취약점 대응 ���������������������������������������� 4

취약점 진단이란

취약점 진단 대상...................................................................................................... 4 플랫폼 취약점 대응.................................................................................................. 4 웹 응용프로그램 취약점 대응................................................................................... 6 이 책의 취약점 진단 대상......................................................................................... 8

1-3 취약점 진단자에게 필요한 지식과 기술.......................................................... 9 취약점 진단자 스킬 맵(Skill Map)............................................................................ 9 보안 이외에 취약점 진단자에게 요구되는 지식..................................................... 12

1-4 취약점 진단자에게 요구되는 윤리관............................................................. 14

2-1 HTTP란....................................................................................................... 16

02

웹을 구성하는 3개의 기술..................................................................................... 16 HTTP 버전............................................................................................................ 16

진단에 필요한 HTTP 기본 지식

TCP/IP는 프로토콜 집합....................................................................................... 19

2-2 TCP/IP와 HTTP의 관계.............................................................................. 19 TCP/IP의 통신 흐름.............................................................................................. 20

2-3 HTTP와 깊게 연관된 프로토콜 - IP / TCP / DNS ������������������������������������� 21 전송을 담당하는 IP................................................................................................ 21 신뢰성을 담당하는 TCP........................................................................................ 21 이름 변환을 담당하는 DNS................................................................................... 23 IP / TCP / DNS와 HTTP의 관계......................................................................... 23

2-4 URL과 URI.................................................................................................. 25 URI는 자원 식별자................................................................................................. 25 URI 형식................................................................................................................ 26 퍼센트 인코딩........................................................................................................ 27

책1.indb 6

2017-02-16 오후 3:21:57


목차 _ 기초편

VII

2-5 단순 프로토콜 HTTP................................................................................... 29 HTTP는 클라이언트와 서버 간 통신을 수행......................................................... 29 통신은 요청(Request)과 응답(Response)의 교환............................................... 29 HTTP 메시지 구조................................................................................................ 31 요청 메시지와 응답 메시지 구조........................................................................... 32 요청 URI로 자원 식별하기..................................................................................... 35 메서드로 서버에 명령 내리기................................................................................ 36 GET과 POST........................................................................................................ 37 결과를 알려주는 HTTP 상태 코드(Status Code)................................................. 39 HTTP는 상태를 보존하지 않는 프로토콜.............................................................. 40

03

3-1 웹 프로그램 공격이란................................................................................... 43 HTTP에는 필요한 보안 기능이 없다..................................................................... 43 웹 프로그램 공격................................................................................................... 44

웹 응용프로그램의 취약점

웹 프로그램 공격 패턴........................................................................................... 44 이 책이 대상으로 하는 웹 프로그램 취약점.......................................................... 46

3-2 웹 프로그램 취약점...................................................................................... 48 SQL 인젝션........................................................................................................... 49 Command 인젝션................................................................................................ 53 CRLF 인젝션......................................................................................................... 56 크로스 사이트 스크립트(XSS)............................................................................... 62

3-3 웹 프로그램 취약점...................................................................................... 71 인증....................................................................................................................... 71 인증 우회............................................................................................................... 72 로그아웃 기능 미비 또는 미구현........................................................................... 72 과도한 로그인 시도에 대한 대책 미비 또는 누락.................................................. 73 취약한 패스워드 정책............................................................................................ 73 복호화 가능한 패스워드 저장................................................................................ 74 패스워드 초기화 기능 미비.................................................................................... 75

책1.indb 7

2017-02-16 오후 3:21:57


VIII

목차 _ 기초편

3-4 접근제어 기능 미비 또는 누락 - 웹 프로그램 취약점 ����������������������������������� 76 접근제어 기능 미비 또는 누락............................................................................... 76 권한 상승............................................................................................................... 77 강제 브라우징........................................................................................................ 77 매개변수 조작을 통한 기능 사용........................................................................... 78

3-5 세션 관리 미비 - 웹 프로그램 취약점........................................................... 79 세션 관리 미비....................................................................................................... 79 세션 고정............................................................................................................... 80 사이트 간 요청 변조(CSRF).................................................................................. 81 쿠키에 HttpOnly 속성 미설정............................................................................... 82 추측 가능한 세션 ID.............................................................................................. 83

3-6 정보 노출 - 웹 프로그램 취약점.................................................................... 84 정보 노출............................................................................................................... 84 매개변수를 통한 정보 노출.................................................................................... 85 캐시로부터의 정보 노출........................................................................................ 86 패스워드 필드의 마스킹 미흡................................................................................ 86 에러 메시지를 통한 정보 노출............................................................................... 87 민감 정보 표시....................................................................................................... 88 HTTPS를 사용할 때 secure 속성 없이 구성된 쿠키정보 ������������������������������������ 88 민감 정보의 평문 저장........................................................................................... 89 부적절한 HTTPS 사용.......................................................................................... 89 불필요한 정보 저장............................................................................................... 91

3-7 기타 - 웹 프로그램 취약점............................................................................ 92 경로 탐색............................................................................................................... 92 오픈 리다이렉트.................................................................................................... 94 원격 파일 참조(RFI)............................................................................................... 96 클릭재킹................................................................................................................ 98

책1.indb 8

2017-02-16 오후 3:21:57


목차 _ 기초편

04

IX

4-1 진단 업무의 흐름....................................................................................... 101 진단 업무의 흐름................................................................................................. 101

4-2 진단 수행 사전 준비................................................................................... 103

취약점 진단 흐름

진단 수행 사전 준비............................................................................................ 103

4-3 취약점 진단 수행 절차............................................................................... 110 취약점 진단 수행 절차......................................................................................... 110 자동 진단 도구를 통한 진단................................................................................ 111 수동 진단 보조 도구를 통한 진단........................................................................ 115

05

5-1 진단 도구 준비........................................................................................... 121 웹 프로그램 취약점 진단 도구............................................................................. 121 자바 환경(JDK) 설정............................................................................................ 125

실습 환경 준비

OWASP ZAP 설치.............................................................................................. 128 Burp Suite 설치.................................................................................................. 136

5-2 진단을 위한 웹 브라우저 설정.................................................................... 140 파이어폭스 설정.................................................................................................. 140 프록시 및 인증서 설정......................................................................................... 145

5-3 실습 환경 설정........................................................................................... 155 실습 환경에 대해................................................................................................. 155 BadStore 설치.................................................................................................... 157

5-4 실제 진단에서의 주의사항.......................................................................... 164 진단에 필요한 준비............................................................................................. 164 진단 도구 설정을 할 때 주의점. .......................................................................... 165

책1.indb 9

2017-02-16 오후 3:21:57


X

목차 _ 실전편

06

6-1 자동 취약점 도구를 사용한 취약점 진단 수행 절차 ������������������������������������ 168 6-2 OWASP ZAP 기본 조작............................................................................ 170 OWASP ZAP 기본 조작..................................................................................... 170

자동 진단 도구를 통한 취약점 진단 수행

요청과 응답의 기록 및 확인................................................................................ 173

6-3 OWASP ZAP에 진단 대상 기록................................................................ 180 OWASP ZAP에 진단 대상 기록......................................................................... 180

6-4 OWASP ZAP에서 진단 실행..................................................................... 192 동적 스캔의 실행 및 확인.................................................................................... 192 보고서 생성......................................................................................................... 196 OWASP ZAP이 찾아낼 수 있는 취약점............................................................. 197

7-1 수동 진단 보조 도구를 사용한 취약점 진단 실시 절차 ������������������������������� 202

07

7-2 웹 프로그램 취약점 진단 방법.................................................................... 204 진단 방법과 기준................................................................................................. 204

수동 진단 보조 도구를 통한 취약점 진단 수행

7-3 Burp Suite 기본 조작............................................................................... 206 Burp Suite 기본 조작......................................................................................... 206 요청과 응답 기록................................................................................................. 209 범위 등록............................................................................................................. 217

7-4 진단 리스트 작성....................................................................................... 220 진단 리스트 개요................................................................................................. 220 진단 리스트 작성................................................................................................. 222

책1.indb 10

2017-02-16 오후 3:21:58


목차 _ 실전편

XI

7-5 Burp Suite의 각종 기능 사용 방법............................................................ 229 요청 재전송(Repeater)....................................................................................... 229 요청 연속 전송(Intruder)..................................................................................... 230 세션 관리 보조 기능............................................................................................ 238

7-6 Burp Suite를 사용한 취약점 진단............................................................. 246 매개변수 값에 탐지 패턴 삽입............................................................................. 246 응답 메시지를 확인............................................................................................. 257

7-7 Burp Suite를 사용한 취약점 진단............................................................. 264 정형적인 탐지 패턴 이외의 취약점 진단............................................................. 264 Google Hacking Database(GHDB)................................................................. 269

08

8-1 진단 보고서 기재사항................................................................................. 273 진단 보고서에 대해............................................................................................. 273 진단 보고서 기재사항.......................................................................................... 275

진단 보고서 작성

8-2 종합 평가 및 개별 취약점 보고................................................................... 277 종합평가.............................................................................................................. 277 개별 취약점 보고................................................................................................. 278

8-3 위험 평가................................................................................................... 282 공통 취약점 평가 시스템 CVSS v3.................................................................... 282

책1.indb 11

2017-02-16 오후 3:21:58


XII

목차 _ 실전편

09

9-1 취약점 진단과 관련된 법률, 규칙, 기준 등.................................................. 287 취약점 진단에 관련된 법률 및 처벌.................................................................... 287 S/W 신규 취약점 신고 포상제. ........................................................................... 288

관계 법령 및 가이드라인

보안에 관한 기준................................................................................................. 289

A-1 실습 환경 구축........................................................................................... 293

부록

BadStore 구축.................................................................................................... 293

실습 환경 구축 (Oracle VM VirtualBox)

책1.indb 12

2017-02-16 오후 3:21:58


이 책의 구성

XIII

기초편 제1장 취약점 진단이란 취약점 진단이 무엇인지 설명한다. 웹사이트나 웹 프로그램의 취약점이란 어떤 것인지, 또 취 약점을 발견하기 위한 방법인 취약점 진단은 무엇인지 배운다. 제2장 진단에 필요한 HTTP 기본 웹의 주요 프로토콜인 HTTP의 기본에 대해 설명한다. HTTP라는 프로토콜의 구조, 통신할 때 주고받는 메시지의 구성 등을 배운다. 제3장 웹 응용프로그램 취약점 웹 응용프로그램의 취약점에 대해 설명한다. 웹 응용프로그램 공격이란 어떤 것이며 어떤 종류 가 있는지 배운다. 제4장 취약점 진단 흐름 웹 응용프로그램 취약점 진단의 흐름에 대해 설명한다. 진단 수행 전 어떤 준비가 필요한지, 취약점 진단은 어떤 절차로 수행하는지 배운다. 제5장 실습 환경 준비 실전편에 들어가기 전 취약점 진단에 필요한 진단 도구, 웹 브라우저, 실습 환경 설치를 완료 한다.

책1.indb 13

2017-02-16 오후 3:21:58


XIV

이 책의 구성

실전편 제6장 자동 진단 도구를 통한 취약점 진단 수행 자동 진단 도구인 OWASP ZAP에 대해 설명한다. 자동 진단 도구를 사용한 취약점 진단 수행 절차를 비롯한 OWASP ZAP 기본 조작, 취약점 진 단 수행 방법 등을 배운다. 제7장 수동 진단 보조 도구를 통한 취약점 진단 수행 수동 진단 도구인 Burp Suite에 대해 설명한다. Burp Suite를 사용한 취약점 진단 수행 절차를 비롯한 취약점 진단 기준, 진단 리스트 작성 방 법, Burp Suite 기본 조작, 각종 도구 사용 방법, 취약점 진단 수행 방법 등을 배운다. 제8장 진단 보고서 작성 취약점 진단을 수행한 결과를 정리한 진단 보고서의 작성 방법, 기입해야 할 사항과 개별 취약 점 보고 방법, 위험 평가 방법 등을 설명한다. 제9장 관련 법령 및 가이드라인 취약점 진단에 관한 법률, 진단할 때의 규칙이나 진단 결과 취급, 보안에 관련된 기준, 가이드라 인 등에 대해 설명한다. 부록 ‘실습환경 설정(Oracle VM VirtualBox)’ 무료 소프트웨어인 ‘Oracle VM VirtualBox’를 사용해 실습 환경을 설정하는 방법을 소개한다.

책1.indb 14

2017-02-16 오후 3:21:58


기초편

1

취약점 진단이란

이 장에서는 취약점 진단이란 어떤 것인지를 배운다. 웹사이트와 웹 응 용프로그램 취약점이란 어떤 것인지, 그것을 발견하기 위한 방법인 취 약점 진단은 어떤 것인지를 알아보자.

책1.indb 1

2017-02-16 오후 3:21:58


기초편 01 _ 취약점 진단이란

1-1

취약점 진단이란 ‘취약점을 발견하기 위한 테스트 방법’

취약점이란 컴퓨터에 어떤 명령을 내리고 싶다면 프로그램이 필요하다. 올바르게 만들어진 프로그램이라면 컴 퓨터는 의도한 대로 작동한다. 만약 프로그램을 잘못 만들었다면 결과물이 다르게 나오거나 도중에 멈추는 등 의도하지 않은 동작을 수행한다. 이렇게 프로그램이 잘못 작동하는 것을 ‘버그(Bug)’라고 한다. 의도한 대로 프로그램을 동작시키고 싶다면 프로그램에 있는 버그를 없애야 한다. 버그 중에는 이를 악용해 정보를 유출하거나 데이터를 변경하는 등의 피해를 주는 것이 있다. 이렇 게 악용 가능한 버그를 일컬어 ‘취약점’이라고 한다. 유명한 취약점으로는 ‘SQL 인젝션’과 ‘크로스 사이트 스크립팅’ 같은 것이 있다.

취약점 진단이란 프로그램의 버그는 테스트를 통해 발견하고 수정한다. 취약점도 마찬가지다. 취약점을 발견하기 위 한 테스트 방법을 ‘취약점 진단’이라고 한다. 취약점 진단에서는 ‘취약점’ 외에도 ‘보안 기능 미흡’에 대한 것도 찾아낼 수 있다. 보안 기능 미흡 이란 보안 수준을 높일 수 있는 기능이 제대로 구현되지 않거나 잘못 사용되는 것을 뜻한다. 이것 은 버그는 아니지만, 제대로 구현돼 있다면 보안성을 높여 특정 공격을 방어할 수 있다. 예를 들면

HTTPS를 통한 암호화 통신을 사용하는 경우나 보안 기능을 가진 HTTP 헤더 필드를 사용하는 경 우가 이에 해당한다. 보안 기능을 구현할지의 여부는 웹 응용프로그램을 구축할 때의 보안 요건에 달렸지만, 가능하면 많 은 기능을 구현하는 것이 좋다.

책1.indb 2

2017-02-16 오후 3:21:59


1-1 취약점 진단이란 ‘취약점을 발견하기 위한 테스트 방법’

Column - 취약점 진단과 침투 테스트 취약점 진단은 ‘보안 테스트(Security Testing)’라고 번역하지만, ‘침투 테스트(Penetration Test)’라고 번역하는 경우도 있다. 침투 테스트는 일반 취약점 진단과 차이가 있다. 취약점 진단에서는 해당 취약점을 발견하고 종료하지만 침투 테스트는 발견한 취약점을 이용해 관리자 권한을 획득하는 등 실제 침투가 가능한지 확인한다. 경우에 따라서는 여러 개의 취약점을 이용해

3

기 초 편 1 장

침입을 시도하기도 한다. 하지만 사이트의 취약점을 모두 점검하는 것은 아니기 때문에 일부 취약점을 발견하지 못할 가능성도

이 책에서 다루는 것은 보안 테스트이며 웹사이트의 취약점을 종합적으로 찾는 방법이다. 웹사이트에 존재하는 위험한

실전편

있다.

취약점은 물론 영향도가 낮은 취약점도 찾아낸다. 테스트 명칭은 보안 진단을 수행하는 회사에 따라 다르게 사용하기도 한다.

책1.indb 3

2017-02-16 오후 3:21:59


기초편 01 _ 취약점 진단이란

1-2

이 책의 취약점 진단 대상과 웹사이트 취약점 대응

이 책에서 다룰 취약점 진단 대상은 주로 웹 응용프로그램이다. 이 절에서는 취약점 진단 대상이 어 떤 것인지를 알아보고 웹사이트에 대한 취약점 및 대응 방안에 대해 살펴본다.

취약점 진단 대상 취약점 진단은 진단할 대상에 따라 구분된다. 주요 진단 대상은 아래의 두가지다. ■■ 플랫폼

취약점 진단

• 대상은 ■■ 웹

운영체제나 미들웨어, TCP/IP의 각종 서비스 등의 프로덕트

응용프로그램 취약점 진단

• 대상은

웹 응용프로그램

이 밖에 소스 코드 진단이나 데이터베이스 진단, 스마트폰 앱 진단, 무선 랜 진단, 임베디드 장비 진 단 등이 있다.

플랫폼 취약점 대응 플랫폼의 구성 요소 일반적인 웹사이트는 웹 응용프로그램만으로 만들어지는 것은 아니다. 웹 응용프로그램은 웹사이트 를 구성하는 요소 중 하나일 뿐이다. 웹사이트는 웹 응용프로그램 외에도 아래와 같은 요소들이 필요하다. ■■운영체제(리눅스, ■■웹

윈도우 등)

서버(Apache HTTP Server, Microsoft IIS 등)

■■데이터베이스(오라클 ■■언어

책1.indb 4

데이터베이스, 마이크로소프트 SQL Server 등)

환경(PHP, 자바 등)

2017-02-16 오후 3:22:00


5

1-2 이 책의 취약점 진단 대상과 웹 사이트 취약점 대응

■■응용프로그램

서버(Oracle WebLogic Server, Apache Tomcat 등) 1

■■프레임워크(루비온레일스, ■■라이브러리(AngularJS,

아파치 스트럿츠 등)

CGI.pm 등)

그리고 웹사이트는 웹 서버만으로 동작하는 것도 아니다. 웹사이트 운영과 관련된 서비스에는 다음

■■콘텐츠 ■■웹

변경을 위해 사용할 서비스(FTP, SSH 등)

실전편

과 같은 것이 있다.

기 초 편 1 장

서버의 운영체제나 그 밖의 서버 운영과 관련된 프로그램을 유지보수 하기 위해 사용할 서비스(Telnet, SSH 등)

■■데이터베이스(오라클

데이터베이스, 마이크로소프트 SQL Server 등)

이 책에서는 이 모든 요소를 통틀어 플랫폼이라고 표현한다. 그 밖의 구성 요소로는 하드웨어나 가상 머신 같은 환경이 있지만, 이 책에서는 다루지 않는다.

플랫폼 취약점 대응 플랫폼에서 대응해야 할 취약점은 주로 아래와 같은 두가지가 있다. ■■ 알려진

취약점

• 취약점이 • 기술 ■■ 설정

있는 오래된 버전을 사용하는 경우

지원이 종료돼 더 이상 취약점 수정이 되지 않는 경우

미흡

• 최신

버전을 사용하더라도 보안과 관련된 설정을 제대로 하지 못해 취약점이 발생하는 경우

플랫폼에 존재하는 취약점을 없애기 위해서는 아래와 같은 방법을 사용한다. ■■ 알려진 • 최신

취약점을 제거 버전으로 업데이트한다

• 지원을 ■■ 설정

받을 수 있는 다른 제품으로 변경한다

변경

• 보안과 • 개발

관련된 설정을 수정한다

환경과 서비스 환경의 설정을 일치시킨다

1 [역자주] WAS(Web Application Server)라고도 한다.

책1.indb 5

2017-02-16 오후 3:22:00


6

01 _ 취약점 진단이란

플랫폼에는 취약점 외에도 보안 기능이 부족해서 문제가 발생할 수도 있다. ■■ 안전하지 • 암호화 ■■ 취약한

않은 프로토콜 사용 통신으로 보호되지 않는 프로토콜(FTP, Telnet 등)을 사용

암호 사용

• 길이가

짧은 암호를 사용

• 특수문자,

숫자 등을 포함해서 사용하지 않음

• 추측하기

쉬운 암호를 사용

이런 문제는 다음과 같이 대응할 수 있다. ■■ 안전한

프로토콜 사용

• 암호화 ■■ 안전한 • 긴

통신을 사용해 데이터를 보호할 수 있는 프로토콜(SSH, Microsoft Remote Desktop 등)을 사용

암호 사용

문자열 사용

• 특수문자,

숫자를 포함해 암호를 구성

• 추측하기

어려운 암호를 사용

• 다른 ■■ 암호

암호와 번갈아가며 사용하지 않음

외 별도의 인증 방법 사용

• SSH

공개 키 인증을 사용

이런 취약점에 대응하기 위해서는 네트워크 시스템이나 플랫폼을 진단할 수 있는 보안 스캐너 (Nessus, OpenVAS, Retina 등)를 활용해 취약점을 확인하고 그 결과를 통해 대책을 마련하는 것 이 좋다.

웹 응용프로그램 취약점 대응 어떤 시스템을 웹 응용프로그램으로 만들어야 하는 경우 다음과 같은 두개의 선택지 중 하나를 선택 하게 된다. 1. CMS(WordPress, EC-CUBE 등)나 그룹웨어(IBM Notes / Domino 등)와 같이 패키지화된 제품을 사용 2. 신규 개발 또는 패키지 제품을 사용자화(Customize)한 웹 응용프로그램을 사용

책1.indb 6

2017-02-16 오후 3:22:00


7

1-2 이 책의 취약점 진단 대상과 웹 사이트 취약점 대응

패키지화된 제품의 취약점 대응 이런 제품은 대부분 버전 관리가 잘 이뤄지고 있다. 그리고 제품 지원이 계속되는한 취약점이 발견 되더라도 그 취약점이 수정된 새로운 버전이 제공된다.

기 초 편 1 장

따라서 이런 제품의 취약점 대응 방법도 플랫폼 취약점 대응 방법과 동일하다.

• 최신

취약점을 제거 버전으로 업데이트한다

• 지원을 ■■ 설정

실전편

■■ 알려진

받을 수 있는 다른 제품으로 변경한다

변경

• 보안과 • 개발

관련된 설정을 수정한다

환경과 서비스 환경의 설정을 일치시킨다

신규 개발 또는 기존 제품을 수정해 만든 웹 응용프로그램의 취약점 대응 이런 제품은 일반적으로 개발 회사가 요건 정의, 설계, 구현, 테스트를 수행하고 서비스를 시작한다. 패키지화된 제품과 가장 큰 차이점은 취약점이 발견된다 해도 직접 손을 대지 않는 이상 수정할 수 없다는 점이다. 따라서 보안 대응은 스스로 해야 한다. 이런 경우 다음과 같은 보안 대책을 수립하고 수행해야 한다. ■■적절한

책1.indb 7

보안 요건 정의 수행

■■보안

요건 정의를 기반으로 적절한 설계 및 구현

■■보안

요건 정의대로 구현됐는지 테스트를 수행(취약점 진단)

■■취약점이

될 수 있는 버그가 있는지 여부를 확인(취약점 진단)

■■제삼자가

개발한 시스템을 도입할 때 기능 및 성능 테스트와 함께 보안 테스트를 수행(취약점 진단)

2017-02-16 오후 3:22:00


8

01 _ 취약점 진단이란

이 책의 취약점 진단 대상 이 책의 취약점 진단 대상

[웹 응용프로그램]

[그 외 웹 응용프로그램]

[패키지 제품] ■

CMS나 그룹웨어 같은 패키지 제품

■신  규

개발 또는 기존 제품을 수정해 만든 응용프로그램

[플랫폼] ■O  S,

웹 서버, 데이터베이스, 언어, 응용프로그램 서버, 프레임워크, 라이브러리 등 웹사이트 구성 요소 ■ SSH, FTP, DNS, SMTP, 데이터베이스 등 각종 서비스 그림 1-1: 이 책의 진단 대상

이 책의 주요 취약점 진단 대상은 ‘신규 개발 또는 기존 제품을 수정해 만든 웹 응용프로그램’이다(그 림 1-1). 이런 형태의 웹 응용프로그램이 적절한 보안 요건 정의대로 개발됐는지를 테스트하는 방 법과 취약점과 관련된 버그는 없는지 테스트하는 방법, 즉 취약점 진단을 하는 방법을 배워본다. 이런 형태의 웹 응용프로그램은 공격자가 먼저 취약점을 발견하고 악용할 가능성이 있다. 이런 상태 에서의 공격을 ‘제로데이 공격(Zero-day attack)’이라고 하며 취약점에 대처할 방법이 없는 상태에 서 위협에 직면하기 때문에 위험한 상태가 될 가능성이 있다. 따라서 악의를 가진 공격자가 취약점을 찾아 공격하기 전에 취약점을 찾아내고 수정해 공격자가 이 를 악용할 수 없도록 적극적으로 취약점에 대한 대응을 하자. Column - 적절한 보안 요건 정의에 대해 보안 요건 정의는 개발 회사, 개발자가 안전한 시스템을 개발하도록 하기 위해 발주자와 개발 회사(개발자)가 어떤 보안 요구 조건을 넣어서 만들지 결정하는 것이다. 개발할 때만 필요한 것이 아니라 납품 후 문제가 발생한 경우에 계약에 따른 책임을 명확히 하기 위해서도 필요하다. 웹 응용프로그램을 개발할 때도 반드시 보안 요건 정의를 해야 한다. 필자가 대표로 있는 OWASP Japan2에서는 많은 웹 응용프로그램에 범용적으로 사용할 수 있는 ‘웹 시스템/웹 응용프로그램 보안 요건서를 공개하고 있으니 활용해 보길 바란다. https://github.com/ueno1000/secreq

2 OWASP - Open Web Application Security Project란 웹을 기반으로 하는 소프트웨어 보안 환경 현황, 소프트웨어를 개발할 때 보안상 안전하게 개발할 수 있게 도움을 주는 기술이나 프로세스에 관한 정보 공유를 목적으로 하는 오픈 소스 소프트웨어 커뮤니티다. OWASP Japan은 OWASP의 일본 챕터다. https://www.owasp.org/index. php/Japan

책1.indb 8

2017-02-16 오후 3:22:01


기초편

1-3 취약점 진단자에게 필요한 지식과 기술

1-3

취약점 진단자에게 필요한 지식과 기술

기 초 편 1 장

실전편

웹 응용프로그램 취약점 진단을 배우는 데 필요한 지식과 기술을 알아보자.

취약점 진단자 스킬 맵(Skill Map) 웹 응용프로그램 취약점 진단을 수행하는 기술자에게 필요한 지식과 기술을 정리한 ‘취약점 진단자 (Web 응용프로그램) 스킬 맵 & 실라버스’라는 자료가 OWASP Japan과 일본 보안 오퍼레이션 사업 자 협의회(ISOG-J)3의 보안 오퍼레이션 가이드라인 WG(WG1)가 주최하는 공동 워킹 그룹인 ‘취 약점 진단자 스킬맵 프로젝트4’에 공개돼 있다. 이 자료는 취약점 진단을 수행하는 개인의 기술적인 능력을 구체적으로 측정해 취약점 진단을 수행 하는 기술자(취약점 진단자)의 스킬맵과 학습 지침이 되는 실라버스5를 정비한 것이다.

취약점 진단자 스킬 취약점 진단자에게 필요한 스킬은 다음과 같은 방침을 바탕으로 정한다 ■■취약점

진단 업무에 필요한 기술적인 능력을 대상으로 한다

■■매니지먼트 ■■취약점

스킬이나 커뮤니케이션 스킬은 대상이 아니다

진단자에게 필요한 스킬을 명확히 한다

■■특정

취약점 진단 도구나 환경에 의존하지 않도록 한다

■■현재

필요하다고 생각되는 기술 수준을 바탕으로 만든다

■■취약점

진단자가 가져야 할 스킬의 지표일 뿐이며, 회사가 제공하는 취약점 진단 서비스의 품질은 대상이 아니다.

3 http://isog-j.org 4 https://www.owasp.org/index.php?Pentester_Skillmap_Project_JP 5 [역자주] Syllabus, 교육과정

책1.indb 9

2017-02-16 오후 3:22:02


10

01 _ 취약점 진단이란

취약점 진단자(웹 응용프로그램) 스킬맵 구성은 아래와 같다. ■■ 기초지식(기술) • 표준

프로토콜과 기술

• 보안

기술

• 웹

관련 기술

• 기타

■■ 기초

지식(취약점)

• 웹

응용프로그램의 취약점

• 웹

응용프로그램이 동작하는 환경의 진단 항목

■■ 기초

지식(진단 업무)

• 진단

전 준비

• 진단 • 진단

■■ 진단

실시 후 사후 지원

기술(진단 도구)

• 자동

진단 도구의 특징

• 자동

진단 도구 선택

• 자동

진단 도구 준비

• 자동

진단 실시 준비, 설정

• 자동

진단 도구 스캔 수행

• 자동

진단 도구로 진단한 결과 확인

• 자동

진단 도구의 기타 기능

• 수동

진단 보조 도구 기능

• 수동

진단 보조 도구 준비

■■ 보고서,

리스크 산출

• 리스크

산출 방법

• 보고서

종류

• 보고서에

책1.indb 10

기재할 내용

2017-02-16 오후 3:22:02


11

1-3 취약점 진단자에게 필요한 지식과 기술

■■ 법률 • 법률과

범죄

• 진단할

때의 규칙, 윤리

• 보안에

대한 기준

기 초 편 1 장

거의 언급하지 않으므로 필요하다면 별도로 공부하자.

실전편

이 책도 위와 같은 내용으로 구성돼 있다. TCP/IP와 웹 관련 기술 같은 기초 지식(기술)에 대해서는

취약점 진단자 랭크 취약점 진단자 스킬맵에는 Silver와 Gold, 2개의 랭크가 정의돼 있다. ■■ Silver

(표 1)

• 취약점 ■■ Gold

진단 업무에 종사하는 사람이라면 알아야 하는 기술

(표 2)

• 단독으로

진단 업무를 수행하는 데 필요한 기술

표 1: Silver

대상

자사의 웹 응용프로그램 취약점 진단 (신청을 받아서 진단)을 수행하는 자 취약점 진단 업무에 종사하고자 하는 자 (학생 등)

업무 및 역할

Gold 랭크를 가진 사람의 지시하에 취약점 진단을 수행 자사 IT 시스템 취약점 진단을 수행

필요 기술 수준

IT 시스템을 진단하는 데 필요한 기술과 지식

표 2 : Gold

대상

웹 응용프로그램 취약점 진단을 수행하는 자 취약점 진단을 서비스로 제공하는 업무에 종사하는 자

업무 및 역할

취약점 진단 업무를 관리하고 진단 방침을 결정하며 작업 지시를 실시하는 등 전반적인 진단 업무를 수 행하며 평가를 진행함 취약점 진단 보고서를 작성하고 기술적인 설명을 함

필요 기술 수준

취약점 진단 서비스를 제공하기 위해 충분한 기술과 지식이 필요함

이 책에서 공부할 취약점 진단 기술은 위의 스킬 맵에서 Sliver에 해당하는 기술이다.

책1.indb 11

2017-02-16 오후 3:22:02


12

01 _ 취약점 진단이란

보안 이외에 취약점 진단자에게 요구되는 지식 취약점 진단을 할 때 반드시 알아야 할 필요는 없지만, 알아두면 더 많은 취약점을 발견할 수 있는 지식이 있다(그림 1-2).

웹 응용프로그램 개발 관련 지식

진단 대상 시스템에 대한 이해

그림 1-2: 취약점 진단을 수행할 때 도움이 되는 지식

■■웹

응용프로그램 개발 관련 지식

■■진단

대상 시스템에 대한 이해

웹 응용프로그램 개발 관련 지식 언어와 상관없이 웹 응용프로그램을 개발한 경험이 있다면 취약점 진단에 대한 이해도가 높다. 또한 발견할 수 있는 취약점 개수도 경험이 없는 사람에 비해 많아질 수 있다. 웹 응용프로그램 취약점 진단의 대부분은 웹 응용프로그램의 소스 코드를 직접 보는 것이 아니라 외 부로부터 요청(Request)을 보내거나 응답(Response)을 확인하는 블랙박스 테스트다. 하지만 개발 경험이나 프로그램을 만들어본 경험이 있다면 프로그램의 흐름 자체를 이해하거나 개 발자의 특성을 잘 이해할 수 있기 때문에 취약점이 발견될 수 있는 곳을 더 쉽게 찾아낼 수 있다.

진단 대상 시스템에 대한 이해 취약점 진단을 수행하는 경우 진단 대상 시스템에 대해 어느 정도 이해하고 있어야 한다. 취약점 진 단자는 다음과 같은 지식이 필요하다.

책1.indb 12

■■시스템이

요구하는 설계 명세 이해

■■시스템을

이용하는 업무에 대한 지식

2017-02-16 오후 3:22:02


13

1-3 취약점 진단자에게 필요한 지식과 기술

취약점 진단에서 요구되는 것은 취약점이나 보안상 문제점을 찾아내는 것이지 설계 명세대로 구현 됐는지 확인하는 것이 아니다. 하지만 시스템이 올바르게 작동하는지 판단하지 못하거나 사용 방법 을 제대로 모른다면 제대로 된 보안 진단을 수행하지 못할 가능성이 있다. 쇼핑 사이트나 그룹웨어와 같이 일반적으로 사용하는 시스템이라면 비슷한 시스템을 이용한 경험이

기 초 편 1 장

있으니 어느 정도 시스템 동작을 이해하고 있을 것이다. 하지만 평소에 전혀 사용할 일이 없는 의료 실전편

용 시스템이나 제어 관련 시스템이라면 진단하는 데 지장이 있을 수 있다. 해당 시스템 개발자 정도의 지식까지 필요하지는 않지만 적어도 시스템이 정상 작동하는지 판단할 수 있는 지식과 시스템 사용 방법은 이해해야 한다.

책1.indb 13

2017-02-16 오후 3:22:02


기초편 01 _ 취약점 진단이란

1-4

취약점 진단자에게 요구되는 윤리관

앞 절에서 소개한 취약점 진단자 스킬맵 설명6에 다음과 같은 설명이 있다. ‘취약점 진단자는 올바른 윤리를 가지고 적절한 방법으로 IT 시스템 취약점 진단을 수행하고 취약점 진단자 스킬맵 & 실라버 스에서 요구하는 기술과 지식을 가지고 있는 사람에게 주어지는 호칭이다’ 이처럼 취약점 진단자는 기술뿐 아니라 올바른 윤리관도 가지고 있어야 한다. 지금부터 공부할 취약점 진단 방법 중에는 악의를 가진 공격자의 공격 수법과 동일한 것도 있다. 이 기술을 악용하면 다른 사람에게 불이익을 주거나 범죄행위를 저지를 수도 있다. 따라서 취약점 진단 기술은 결코 잘못된 방법으로 사용해서는 안 된다.

자신이 권리를 갖고 있지 않은 곳에 함부로 취약점 진단을 하지 말 것 취약점 진단 기술을 익히면 웹 서핑을 할 때 ‘이 웹사이트는 혹시 취약점이 있을지도 모르니 잠시 테 스트를 해주자’라는 생각으로 테스트 공격을 할 수 있다. 하지만 앞에서 언급한 것과 같이 취약점 진 단 기술은 실제 공격 수법과 같은 것도 있기 때문에 허가를 받지 않은 시스템에는 절대 취약점 진단 을 해서는 안 된다. 최근에는 취약점을 찾아 신고하면 포상금을 주는 버그 바운티 프로그램(Bug Bounty Program)을 하는 곳도 있다. 이런 곳은 자유롭게 취약점 진단을 해도 되지만 별도의 규칙이 있는 경우도 있으니 사이트 규칙을 확인해야 한다.7

6 취약점 진단자(웹 응용프로그램) 스킬맵 & 실라버스에 대해 https://www.owasp.org/images/c/c3/About-Pentester-Web-Skillmap_and_Syllabus-201603.pdf 7 [역자주] 이후 ‘웹 응용프로그램 취약점 진단’은 ‘웹 취약점 진단’으로 표기한다. 또한 ‘웹 응용프로그램’은 ‘웹 프로그램’으로 표기한다

책1.indb 14

2017-02-16 오후 3:22:03


기초편

2

진단에 필요한 HTTP 기본 지식

이 장에서는 웹의 주요 프로토콜인 HTTP의 기본에 대해 공부한다. 웹 취약점 진단을 수행하기 위해서는 웹의 주요 통신 프로토콜인 HTTP를 이해하고 있어야 한다. HTTP라는 프로토콜의 구조나 통신할 때 주고받는 메시지 구조에 대해 알아보자.

책1.indb 15

2017-02-16 오후 3:22:03


기초편 02 _ 진단에 필요한 HTTP 기본 지식

2-1

HTTP란

네트워크를 사용해 통신하기 위해서는 서로 정해진 절차와 데이터 형식을 지켜야 한다. 이것을 지키 기 위해 미리 정해둔 약속을 ‘프로토콜’이라고 한다. 웹에서 주로 사용되는 프로토콜은 ‘HTTP(HyperText Transfer Protocol)’이다.

웹을 구성하는 3개의 기술 HTTP는 인터넷이 막 시작할 무렵인 1989년 3월에 탄생했다. CERN(유럽 입자 물리 연구소)의 팀 버너스 리(Tim Berners-Lee) 박사는 원격지에 있는 연구자끼리 지식을 공유하기 위한 구조를 고 안했다. 처음 고안한 것은 여러 개의 문서를 서로 참조할 수 있도록 만드는 것이었다(HyperText). 이것이

WWW(World Wide Web)의 기본 개념이 됐다. 이 WWW를 구성하는 기술은 문서를 작성하는 언어인 SGML을 기반으로 한 HTML(HyperText

Markup Language), 문서 전송 프로토콜인 HTTP, 문서의 위치를 지정하는 방법인 URL(Uniform Resource Locator)의 3개가 제안돼 있다. WWW라는 명칭은 지금 말하는 웹 브라우저, 그 당시에는 하이퍼 텍스트를 보기 위한 클라이언트 프로그램의 명칭이었다. 현재는 WWW라고 하면 단순히 웹을 지칭하는 말이다.

HTTP 버전 현재 사용되는 HTTP에는 여러 버전이 있다. HTTP가 등장한 당시에는 주로 텍스트를 전송하기 위 한 프로토콜이었으나 프로토콜 자체가 단순하기 때문에 다양한 응용 방법이 고안되고 구현되고 있 다. 그리고 그 요구에 맞게 프로토콜도 진화하고 있다.

책1.indb 16

2017-02-16 오후 3:22:03


17

2-1 HTTP란

HTTP/0.9 HTTP가 등장한 것은 1990년으로 그 무렵의 HTTP는 정식 규격이 없었다. 그 무렵의 HTTP는 1.0 이전의 것이라는 의미로 HTTP/0.9라고 부른다.1

정식 규격으로 HTTP가 공개된 것은 1996년 5월이다. HTTP/1.0으로 RFC1945가 발행됐다. 초기

실전편

HTTP/1.0

기 초 편 2 장

버전이지만 아직도 많은 서버에서 이 버전을 사용한다. ■■ RFC1945

- Hypertext Transfer Protocol -- HTTP/1.0

• https://tools.ietf.org/html/rfc1945

HTTP/1.1 현재 주류가 되는 HTTP 버전은 1997년 1월에 공개된 HTTP/1.1이다. 초기 발표 사양은 RFC2068 로 이후 개정판인 RFC2616(1999년 6월 공개)이 15년 정도 사용됐다. 지금은 2014년에 개정된

RFC7230~RFC7235로 분할된 버전이 가장 최신 버전이다. ■■ RFC7230

- Hypertext Transfer Protocol (HTTP/1.1): Message Syntax andRouting

• https://tools.ietf.org/html/rfc7230 ■■ RFC7231

- Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

• https://tools.ietf.org/html/rfc7231 ■■ RFC7232

- Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

• https://tools.ietf.org/html/rfc7232 ■■ RFC7233

- Hypertext Transfer Protocol (HTTP/1.1): Range Requests

• https://tools.ietf.org/html/rfc7233 ■■ RFC7234

- Hypertext Transfer Protocol (HTTP/1.1): Caching

• https://tools.ietf.org/html/rfc7234 ■■ RFC7235

- Hypertext Transfer Protocol (HTTP/1.1): Authentication

• https://tools.ietf.org/html/rfc7235

1 [역자주] 현재의 HTTP와 다르게 헤더가 없으며 GET 메서드만 사용한다. 현재는 프로토콜 자체를 사용하지 않는다.

책1.indb 17

2017-02-16 오후 3:22:04


18

02 _ 진단에 필요한 HTTP 기본 지식

HTTP/2 HTTP /2 는 2015 년 5 월에 RFC7540 으로 문서화돼 16 년 만에 HTTP 버전업이 이루어졌다. HTTP/2는 HTTP/1.1과의 호환성을 유지하며 연결의 다중화와 헤더의 압축 등 통신을 보다 효율적 으로 하는 것을 목표로 개발됐다. ■■ RFC7540

- Hypertext Transfer Protocol Version 2 (HTTP/2)

• https://tools.ietf.org/html/rfc7540

HTTP/2가 등장했지만 이 책을 집필한 시점에서 당분간은 HTTP/1.1이 주류로 있을 것으로 생각한 다. 따라서 이 책에서는 HTTP/1.1을 다룬다. 그 밖의 웹 프로토콜로는 WebSocket이나 QUIC 같 은 것이 있지만 이 책에서는 다루지 않는다. 이후 HTTP/2가 주류가 된다고 해도 진단에 사용하는 도구가 HTTP/2를 지원하면 진단을 수행하 는 데 아무 지장이 없다. 단, HTTP/2 고유의 취약점이 나중에 발견될 수도 있으니 HTTP/2의 취약 점 동향은 눈여겨보는 것이 좋다.

책1.indb 18

2017-02-16 오후 3:22:05


기초편

2-2 TCP/IP와 HTTP의 관계

2-2

TCP/IP와 HTTP의 관계

기 초 편 2 장

사용되는 네트워크는 TCP/IP라는 프로토콜을 통해 통신을 한다. HTTP는 그중 하나다.

실전편

HTTP를 이해하기 위해서는 TCP/IP를 어느 정도 알고 있어야 한다. 인터넷을 포함해 일반적으로

여기서는 HTTP를 이해하기 위해 알아둬야 할 TCP/IP의 개요만을 간단히 설명한다. TCP/IP에 대 해 더 자세한 내용을 알고 싶다면 프로토콜을 다룬 전문 서적을 참고하기 바란다.

TCP/IP는 프로토콜 집합 컴퓨터나 네트워크 장비가 서로 통신을 하기 위한 프로토콜은 여러 가지가 있다. 케이블 규격, IP 주 소 지정 방법, 떨어져 있는 상대를 찾는 방법, 상대에게 접속하기 위한 절차, 웹을 표시하는 방법 등 다양하다. 이렇게 인터넷에 관계된 프로토콜을 모은 것을 ‘TCP/IP’ 또는 ‘TCP/IP 프로토콜 스위트(SUITE)’라 고 한다(그림 2-1). TCP와 IP라는 프로토콜을 가리켜 TCP/IP라고 부르기도 하지만, IP라는 프로 토콜을 이용한 모든 통신을 TCP/IP로 총칭한다.

DHCP TCP

SMTP

ARP IEEE 802.11

HTTP DNS

IPv4 ICMP IPv6 UDP

SSL

TCP/IP

그림 2-1: 인터넷 관련 프로토콜을 통틀어 TCP/IP라고 한다

책1.indb 19

2017-02-16 오후 3:22:05


웹 보안 담당자를 위한 취약점 진단 스타트 가이드  

우에노 센 지음 | 양현 옮김 해킹 & 보안 시리즈_009 | ISBN: 9791158390556 | 25,000원 | 2017년 02월 27일 발행 | 312쪽 | Burp Suite, HTTP, OWASP, OWASP ZAP, 보안, 웹, 취약점

Read more
Read more
Similar to
Popular now
Just for you