웹 프로그램 취약점 진단을 효율적이고 확실하게 수행하는 수행 절차를 설명한다.
웹 프로그램 취약점 진단에는 자동 진단 도구를 사용한 진단과 수동 진단 보조 도구를 사용한 수작업 진단 두가지 방법 모두 필요하다. 자동 진단은 도구를 사용해 자동으로 웹 프로그램 취약점 진단을 수행한다. 그렇다면 수동 진단은 필요없는 걸까?
자동진단 도구의 특징을 안다면 수동 진단도 필요하다는 것을 알수 있다.
취약점 진단 수행절차
웹 프로그램 취약점 진단은 다음과 같은 절차로 진행된다.
1.. 테스트 케이스 작성- 진단 대상기록, 시나리오 작성
2. 취약점 진단 실시- 자동 진단 도구를 사용한 진단, 수동 진단 보조 도구를 사용한 진단
3. 진단 결과 검증- 수동 진단을 통한 결과 검증
4. 보고서 작성- 진단 도구를 사용한 보고서 작성, 수작업을 통한 보고서 작성
테스트 케이스 작성
취약점 진단 수행
앞서 만든 테스트 케이스를 바탕으로 웹 프로그램 취약점 진단을 수행한다.
웹 프로그램 취약점 진단에는 자동으로 취약점을 찾아내는 자동진단도구를 사용한 진단과 수작업으로 취약점을 찾아내는 진단이 있다. 자동 진단 도구로는 발견하기 어려운 취약점이나 자동으로 갖아내기 곤란한 부분이 있기 때문에 수동 진단을 병행해서 수행해야 한다.
진단 결과 검증
취약점 진단을 수행해서 발견한 취약점이 정말 문제가 되는지, 위협이 되는지를 검증한다. 수동 진단 도구를 사용한 진단의 경우 취약점 진단을 수행할 때 함께 검증 하기도 한다. 자동 진단 도구를 사용해 진단을 했다면 수동 진단으로 진단 결과를 검증해야 하는 경우도 있다.
보고서 작성
자동 진단 도구를 통한 진단
자동 진단 도구는 웹 프로그램의 취약점이나 보안 기능이 부족한 부분을 효율적으로 찾아내는 것을 목적으로 하는 프로그램으로, 취약점 스캐너나 취약점 검사 도구라고 한다.
자동 진단 도구의 주요기능
자동 진단 도구의 주요 기능은 아래의 3가지가 있다.
● 테스트 케이스 작성 기능
● 취약점 진단 수행 기능
● 보고서 작성 기능
테스트 케이스 작성 기능
테스트 케이스 작성 기능은 취약점 진단을 실시할 때의 절차나 수행 내용은 결정하는 기능이다. '진단 대상을 기록하는 기능'과 '시나리오 작성 기능' 2가지를 사용한다.
'진단대상을 기록하는 기능'은 웹 사이트를 자동 또는 수동으로 크롤링(웹 페이지를 순환하며 주소를 모으는 행위)해 진단 대상 웹 프로그램의 페이지나 요청 내용을 기록하는 기능이다. 이때 자동 진단 도구는 정상적인 요청과 응답을 기록한다.
일반적으로 지단 대상 웹사이트를 자동으로 크롤링하는 자동 크롤링 기능과 수작업으로 기록하는 수동 크롤링 기능이 있다. 이 자동 크롤링 기능은 스파이더라고도 한다.
자동 크롤링 기능은 완전히 자동화된 것은 아니다. 링크를 따라가는 크롤링은 자동으로 이루어지지만 폼 입력은 사람이 직접해야 한다.
취약점 진단을 할때 특정 단계에 따라 페이지 이동을 해야 하는 경우가 있다. 예를 들어 쇼핑 사이트에서 로그인 이후 상품을 선택하고, 장바구니에 넣은 후 결제를 하는 것처럼 일련의 흐름을 따라가야 하는 경우가 있다. 이런 흐름을 '시나리오'라고 한다.
예제) 쇼핑몰에서 상품을 구입하는 시나리오
로그인-->상품 선택-->카트담기-->결제처리
'시나리오 작성 기능'은 기록한 진단 대상을 바탕으로 진단 대상을 진단하는 절차와 수행 내용을 정하는 기능이다.
이 테스트 케이스를 어떻게 만드냐에 따라 진단 결과가 달라질수 있다. 필요한 항목을 정확하게 진단할수 없어 취약점을 발견하지 못하거나 불필요한 테스트로 인해 서버에 과부하를 주는 등 서비스 자체에 악영향을 끼칠수 있다. 그 외에도 불필요한 항목을 진단하거나 화면 이동이 많아지는 경우 비효율적인 진단이 될수 있다.
취약점 진단 수행 기능
취약점 진단 수행 기능은 테스트 케이스 작성에서 만든 테스트 케이스를 바탕으로 웹 페이지 취약점을 찾아내는 기능이다.
취약점은 주로 아래와 같은 방법으로 찾아낸다.
● 기록된 매개변수에 취약점 진단 검사 패턴을 삽입해 정상적인 응답과 검사 패턴 삽입 시의 응답을 비교
● 서버로부터 응답에 포함된 특정 문자열을 검출
보고서 작성 기능
보고서 작성 기능은 취약점 진단 수행 기능으로 발견한 취약점을 정리해 보고서를 만드는 기능이다. 보고서에는 발견한 취약점 이름과 개요, URL 및 전송한 요청과 그에 대한 응답, 취약점이라고 판단한 이유, 취약점 긴급도, 대응 방법등이 기재돼 있다.
자동 진단 도구의 특징 및 전문 분야
자동 진단 도구의 가장 큰 특징은 속도다. 수동으로 진행하는 취약점 진단에 비하면 진단에 걸리는 시간을 큰 폭으로 줄일수 있다. 게다가 보고서도 자동으로 만들어주기 때문에 전체 시간을 따지면 매우 시간이 적게 걸린다.
● 매개변수에 값을 삽입해 발견해야 하는 취약점
● HTML이나 쿠키 등 보안기능의 미비
● 디렉터리 및 파일 발견
매개변수에 값을 삽입해 발견해야 하는 취약점
자동 진단 도구는 인젝션으로 분류되는 SQL인젝션이나 XSS와 같은 종류의 취약점을 발견하가에 매우 좋다.
자동 진단 도구가 갖추고 있는 다양한 검사 패턴을 GET 또는 POST 데이터와 같은 매개변수에 차례로 삽입해 서버로부터 각각 응답을 받게 된다. 자동 진단 도구는 이 응답을 분석해 취약점을 발견한다.
HTML이나 쿠키 등 보안 기능 미비
자동완성기능이 활성화돼 있는지, 쿠키에 HttpOnly 속성이 설정돼 있는지, 응답 헤더에 X-Frame-options 헤더필드가 있는지와 같은 응답 내용을 판단해 보안 기능이 제대로 설정돼 있는지 등을 찾아낼수 있다.
디렉터리 파일 발견
자동 진단 도구에서 발견하기 어려운 취약점 및 기능
사람의 판단과 조작이 필요한 것
● 메일수신
● CAPTCHA
● 2단계 인증(2-Factor Authentication), 다중 요소 인증
● 게임과 같이 사람이 직접 조작해야 하는 것
● 한 번만 실행해서는 알 수 없는 기능
● 입력 값의 영향이 그 다음 화면이 아니라 전혀 별개의 화면에서 이루어지는 것
자동 진단 도구에 따라 발견이 어려운 취약점이 있을 수도 있고, 없을수도 있다. 하자민 자동 진단도구는 모든 취약점을 발견할수 없으며, 진단 결과의 검증은 인간의 판단이 필요한 경우가 많다.
그렇기 때문에 웹 취약점 진단에서는 수동 진단을 병행해야 한다.
수동진단 보조 도구를 통한 진단
수동 진단 보조도구는 수작업으로 진단을 수행할 때 웹 브라우저만으로는 수행하기 어려운 요청 내용 변조, 응답내용 확인, 검사 패턴 연속 삽입 등을 수행할수 있다.
수동 진단 보조 도구의 주요기능
'23.12.24 삭제예정 > Unix 서버 취약점 점검' 카테고리의 다른 글
진단 리스트 작성 (0) | 2017.06.26 |
---|---|
웹 취약점 분석방법 (0) | 2017.06.24 |
★진단수행사전준비 (0) | 2017.06.23 |
취약점 점검을 위한 방법- 웹취약점 점검 툴 (0) | 2017.06.22 |
패스워드 최소길이 설정 (0) | 2017.06.21 |