23.12.24 삭제예정/Unix 서버 취약점 점검

취약점 진단 수행 절차

몽블86 2017. 6. 23. 15:42

웹 프로그램 취약점 진단을 효율적이고 확실하게 수행하는 수행 절차를 설명한다.

웹 프로그램 취약점 진단에는 자동 진단 도구를 사용한 진단과 수동 진단 보조 도구를 사용한 수작업 진단 두가지 방법 모두 필요하다. 자동 진단은 도구를 사용해 자동으로 웹 프로그램 취약점 진단을 수행한다. 그렇다면 수동 진단은 필요없는 걸까?


자동진단 도구의 특징을 안다면 수동 진단도 필요하다는 것을 알수 있다.

취약점 진단 수행절차

웹 프로그램 취약점 진단은 다음과 같은 절차로 진행된다.


1.. 테스트 케이스 작성- 진단 대상기록, 시나리오 작성

2. 취약점 진단 실시- 자동 진단 도구를 사용한 진단, 수동 진단 보조 도구를 사용한 진단

3. 진단 결과 검증- 수동 진단을 통한 결과 검증

4. 보고서 작성- 진단 도구를 사용한 보고서 작성, 수작업을 통한 보고서 작성

테스트 케이스 작성

웹 프로그램 취약점 진단은 진당 대상 웹 페이지와 해당 페이지 내의 기능, 매개변수, 진단을 수행하는 절차 등을 정리한 테스트 케이스를 만들어야 한다. 작성한 테스트 케이스를 바탕으로 취약점 진단을 실시하고 진단 후 보고서 작성을 수행한다.
다음은 테스트 케이스에 기재할 주요 항목이다.
● 어디를 진단하는가?
URL
웹페이지내의 특정기능
GET이나 POST데이터, 헤더필드와 같은 매개변수
● 어떤 순서로 진단하는가?
페이지에 따른 우선순위
특정 기능을 이용하기 위한 화면 이동 순서

테스트 케이스를 만들고 그에 따라 진단을 수행해 대상 웹 프로그램을 누락없이 진단할수 있다.

취약점 진단 수행

앞서 만든 테스트 케이스를 바탕으로 웹 프로그램 취약점 진단을 수행한다.

웹 프로그램 취약점 진단에는 자동으로 취약점을 찾아내는 자동진단도구를 사용한 진단과 수작업으로 취약점을 찾아내는 진단이 있다. 자동 진단 도구로는 발견하기 어려운 취약점이나 자동으로 갖아내기 곤란한 부분이 있기 때문에 수동 진단을 병행해서 수행해야 한다.

진단 결과 검증

취약점 진단을 수행해서 발견한 취약점이 정말 문제가 되는지, 위협이 되는지를 검증한다. 수동 진단 도구를 사용한 진단의 경우 취약점 진단을 수행할 때 함께 검증 하기도 한다. 자동 진단 도구를 사용해 진단을 했다면 수동 진단으로 진단 결과를 검증해야 하는 경우도 있다.

보고서 작성

발견한 취약점을 보고하기 위한 보고서를 작성한다.
보고서에는 발견한 취약점의 위치와 취약점 개요, 취약점이라고 판단한 이유, 취약점 재현 방법, 위험도, 대응 방법 등을 기입한다. 또한 취약점 진단 결과 외에도 수행 일자 등 진단 개요와 환경도 함께 기재한다.

자동 진단 도구를 통한 진단

자동 진단 도구는 웹 프로그램의 취약점이나 보안 기능이 부족한 부분을 효율적으로 찾아내는 것을 목적으로 하는 프로그램으로, 취약점 스캐너나 취약점 검사 도구라고 한다.

자동 진단 도구의 주요기능

자동 진단 도구의 주요 기능은 아래의 3가지가 있다.

● 테스트 케이스 작성 기능

● 취약점 진단 수행 기능

● 보고서 작성 기능

테스트 케이스 작성 기능

테스트 케이스 작성 기능은 취약점 진단을 실시할 때의 절차나 수행 내용은 결정하는 기능이다. '진단 대상을 기록하는 기능'과 '시나리오 작성 기능' 2가지를 사용한다.


'진단대상을 기록하는 기능'은 웹 사이트를 자동 또는 수동으로 크롤링(웹 페이지를 순환하며 주소를 모으는 행위)해 진단 대상 웹 프로그램의 페이지나 요청 내용을 기록하는 기능이다. 이때 자동 진단 도구는 정상적인 요청과 응답을 기록한다.


일반적으로 지단 대상 웹사이트를 자동으로 크롤링하는 자동 크롤링 기능과 수작업으로 기록하는 수동 크롤링 기능이 있다. 이 자동 크롤링 기능은 스파이더라고도 한다.

자동 크롤링 기능은 완전히 자동화된 것은 아니다. 링크를 따라가는 크롤링은 자동으로 이루어지지만 폼 입력은 사람이 직접해야 한다.

취약점 진단을 할때 특정 단계에 따라 페이지 이동을 해야 하는 경우가 있다. 예를 들어 쇼핑 사이트에서 로그인 이후 상품을 선택하고, 장바구니에 넣은 후 결제를 하는 것처럼 일련의 흐름을 따라가야 하는 경우가 있다. 이런 흐름을 '시나리오'라고 한다.


예제) 쇼핑몰에서 상품을 구입하는 시나리오

로그인-->상품 선택-->카트담기-->결제처리


'시나리오 작성 기능'은 기록한 진단 대상을 바탕으로 진단 대상을 진단하는 절차와 수행 내용을 정하는 기능이다.

이 테스트 케이스를 어떻게 만드냐에 따라 진단 결과가 달라질수 있다. 필요한 항목을 정확하게 진단할수 없어 취약점을 발견하지 못하거나 불필요한 테스트로 인해 서버에 과부하를 주는 등 서비스 자체에 악영향을 끼칠수 있다. 그 외에도 불필요한 항목을 진단하거나 화면 이동이 많아지는 경우 비효율적인 진단이 될수 있다.

취약점 진단 수행 기능

취약점 진단 수행 기능은 테스트 케이스 작성에서 만든 테스트 케이스를 바탕으로 웹 페이지 취약점을 찾아내는 기능이다.

취약점은 주로 아래와 같은 방법으로 찾아낸다.


● 기록된 매개변수에 취약점 진단 검사 패턴을 삽입해 정상적인 응답과 검사 패턴 삽입 시의 응답을 비교

● 서버로부터 응답에 포함된 특정 문자열을 검출

보고서 작성 기능

보고서 작성 기능은 취약점 진단 수행 기능으로 발견한 취약점을 정리해 보고서를 만드는 기능이다. 보고서에는 발견한 취약점 이름과 개요, URL 및 전송한 요청과 그에 대한 응답, 취약점이라고 판단한 이유, 취약점 긴급도, 대응 방법등이 기재돼 있다.

자동 진단 도구의 특징 및 전문 분야

자동 진단 도구의 가장 큰 특징은 속도다. 수동으로 진행하는 취약점 진단에 비하면 진단에 걸리는 시간을 큰 폭으로 줄일수 있다. 게다가 보고서도 자동으로 만들어주기 때문에 전체 시간을 따지면 매우 시간이 적게 걸린다.


● 매개변수에 값을 삽입해 발견해야 하는 취약점

● HTML이나 쿠키 등 보안기능의 미비

● 디렉터리 및 파일 발견

매개변수에 값을 삽입해 발견해야 하는 취약점

자동 진단 도구는 인젝션으로 분류되는 SQL인젝션이나 XSS와 같은 종류의 취약점을 발견하가에 매우 좋다.

자동 진단 도구가 갖추고 있는 다양한 검사 패턴을 GET 또는 POST 데이터와 같은 매개변수에 차례로 삽입해 서버로부터 각각 응답을 받게 된다. 자동 진단 도구는 이 응답을 분석해 취약점을 발견한다.

HTML이나 쿠키 등 보안 기능 미비

자동완성기능이 활성화돼 있는지, 쿠키에 HttpOnly 속성이 설정돼 있는지, 응답 헤더에 X-Frame-options 헤더필드가 있는지와 같은 응답 내용을 판단해 보안 기능이 제대로 설정돼 있는지 등을 찾아낼수 있다.

디렉터리 파일 발견

웹 페이지내에 링크된 URL을 자동으로 탐색하며 전체 사이트의 구조를 파악할수 있다. 검색 엔진의 크롤링 제한 설정을 위한 robots.txt 파일의 내용을 읽어 추가적인 디렉터리를 파악할수도 있고, crossdomain.xml처럼 특정 프로그램에서 사용하는 설정 파일을 찾아 낼수 있다. 경우에 따라서는 자동 진단 도구가 제공하는 사전 기능을 통해 숨겨진 파일이나 디렉터리를 찾아낼수도있다.

자동 진단 도구에서 발견하기 어려운 취약점 및 기능

자동진단도구는 매년진화하고 있어 많은 취약점을 발견할수 있게 된다. 하지만 아직도 모든 취약점을 발견하지는 못한다.

자동 진단 도구로 찾아내기 힘든 취약점에는 다음과 같은 것이 있다.
● 인증 제어의 미비 및 누락
● 비즈니스 로직문제
● 메일 헤더 인젝션
● 크로스 사이트 요청 변조(CSRF)

인증제어의 미비 및 누락이나 비즈니스 로직 문제는 올바르게 작동하는지 여부를 사람이 직접 판단해야 하기 때문에 자동 진단 도구만으로는 취약점을 발견하기 힘들다. 그리고 메일을 직접 받아야 하는 매일 헤더 인젝션과 외부로부터의 요청송신 또는 토큰 등의 매개변수와 관련된 CSRF를 찾아내는 것도 어렵다.

사람의 판단과 조작이 필요한 것

● 메일수신

● CAPTCHA

● 2단계 인증(2-Factor Authentication), 다중 요소 인증

● 게임과 같이 사람이 직접 조작해야 하는 것

● 한 번만 실행해서는 알 수 없는 기능

● 입력 값의 영향이 그 다음 화면이 아니라 전혀 별개의 화면에서 이루어지는 것


자동 진단 도구에 따라 발견이 어려운 취약점이 있을 수도 있고, 없을수도 있다. 하자민 자동 진단도구는 모든 취약점을 발견할수 없으며, 진단 결과의 검증은 인간의 판단이 필요한 경우가 많다.

그렇기 때문에 웹 취약점 진단에서는 수동 진단을 병행해야 한다.

수동진단 보조 도구를 통한 진단

수동 진단 보조도구는 수작업으로 진단을 수행할 때 웹 브라우저만으로는 수행하기 어려운 요청 내용 변조, 응답내용 확인, 검사 패턴 연속 삽입 등을 수행할수 있다.

수동 진단 보조 도구의 주요기능