웹 모의해킹법 (1/4)
강유(yulguang@hotmail.com)
최종 갱신일 : 2003년 11월 29일
웹 모의해킹
모의해킹이란 시스템 또는 응용 프로그램에 대한 가상의 공격을 하는 행위를 의미한다. 모의해킹을 하는 이유는 해커가 시스템에 침입하기 전에 먼저 문제점을 찾아내 그것에 대한 조치를 취하기 위해서다.
모의해킹은 크게 호스트 전체에 대한 모의해킹과 특정 서비스에 대한 모의 해킹으로 나눌 수 있다. 호스트 모의 해킹은 호스트 시스템의 파일 구조, 응용 프로그램, 네트워크 연결등 모든 분야에 대한 해킹을 시도하는 것이고 특정 서비스 모의 해킹은 HTTP, FTP등의 특정 프로토콜에 대한 전문적인 모의 해킹을 시도하는 것을 의미한다. 이 글의 주제인 웹 모의해킹이 특정 서비스 모의 해킹에 속한다.
웹 모의해킹은 HTTP 프로토콜을 이용한 웹 서비스에 대한 모의 침투 테스트를 수행하는 것을 의미한다.
웹 모의해킹 대상
어떤 호스트에 대한 웹 모의해킹을 하기로 결정했다고 하자. 그러면 정확히 무엇을 모의해킹해야 할까? 가장 기본적으로 웹 모의해킹에서는 웹 서비스(HTTP)에 대한 공격을 시도한다. 웹 서비스를 제공하는 것이 웹 서버이기 때문에 웹 모의해킹의 주된 공격 대상은 웹 서버다.
하지만 웹 서버는 한 종류만 있는 것이 아니라 매우 다양한 종류가 존재한다. 가장 많이 쓰이는 Apache 웹 서버 외에도 Microsoft의 IIS, WebLogic 등 다양한 웹 서버가 있다. 그리고 웹 서버에서 쓰이는 기술도 PHP, ASP, JSP, Servlet 등 매우 다양하게 존재한다. 웹 모의 해킹을 할 때는 자신이 공격해야 할 대상에 대해 가능한 많은 정보를 파악하는 것이 좋다. 이 때 단순히 웹 서버에 대한 정보뿐만 아니라 웹 서버가 동작하는 호스트에 대한 정보나 취약점을 파악하는 것도 큰 도움이 된다.
주의 : 이 글을 읽고 아무 웹 서버에나 모의 해킹을 하려고 시도하는 사람이 없기를 바란다(물론 그럴 리는 없겠지만). 웹 모의해킹을 할 때는 자신의 행위가 법에 저촉될 위험이 없는지 확인해야 한다. 간단히 말하면 자신이 관리하고 있지 않은 어떤 서버에 대한 모의해킹도 불법이다. 그리고 자신이 관리하고 있는 서버라도 상급자의 허락을 받아야 할 경우가 있으니 주의해야 한다. 만약 상급자의 허락을 받아야 한다면 문서화된 형태로 근거를 남겨두는 것이 좋다.
웹 공격 종류
웹 서버에 대한 공격은 매우 다양한 형태로 존재한다. 웹 모의해킹을 하기 위해서는 이러한 공격 패턴을 알고 실제로 적용할 수 있어야 한다. 웹 공격은 크게 5가지 종류로 나눌 수 있다.
- 기존에 알려진 웹 서버 취약점
각 웹 서버의 버전마다 약점이 존재한다. 웹 모의해킹에서는 이러한 웹 서버의 취약점 정보를 이용하여 버그가 존재하는지를 검사한다.
- 쿠키 조작
쿠키는 웹 서버가 클라이언트에 남겨 놓은 정보다. 웹 서버는 쿠키를 이용해서 인증, 정보 저장등의 작업을 수행한다. 그러나 쿠키는 클라이언트가 마음대로 조작하는 것이 가능하기 때문에 웹 모의해킹에서는 이러한 쿠키를 조작해서 서버에 어떤 일이 일어나는지를 검사해야 한다.
- 입력값 조작
웹 서버와 웹 클라이언트는 다양한 방법으로 데이터를 주고 받는다. 위에서 소개한 쿠키도 그 중의 한 방법이다. 사용자가 입력한 데이터가 서버로 전달되는 가장 일반적인 방법은 <INPUT> 태그를 통해서다. 웹 페이지에 사용자가 입력할 수 있는 텍스트 박스가 있다면 그 곳에 <INPUT> 태그가 있는 것이다. 이 <INPUT> 태그에 넣는 값을 웹 서버에서 제대로 필터링하지 않는다면 공격자는 많은 일을 할 수 있다.
- XSS(Cross Site Scripting)
Cross Site Scripting(이하 XSS) 도 결국 사용자의 입력을 검사하지 않아서 생기는 문제다. 그러나 '입력값 조작' 공격이 웹 서버를 대상으로 한다면 XSS는 클라이언트를 대상으로 한다. 공격자는 XSS 공격을 통해 다른 사용자에게 가짜 로그인 페이지등을 제시하여 사용자의 인증 정보를 얻어내는 것을 목표로 한다.
- 파일 접근
웹 서버에는 많은 웹 페이지가 있다. 일부 웹 서버는 디렉터리 접근 권한을 제대로 설정해 놓지 않아 디렉터리 목록을 공격자에게 그대로 노출시키곤 한다. 그리고 웹 페이지를 개발하는 중에 생긴 임시 페이지를 지우지 않아서 공격자에게 중요 정보를 노출시키기도 한다.
출처 :
웹 모의해킹법 (2/4)
강유(yulguang@hotmail.com)
최종 갱신일 : 2003년 12월 21일
전체 과정
1부에서는 웹 공격의 종류에 대해 알아봤다. 그러면 실무자의 입장에서 웹 모의해킹의 전체 과정에 대해 알아보자. 웹 모의해킹은 크게 4단계로 수행한다.
- 정보 수집
- 범용 툴을 사용한 점검
- 웹 전용 툴을 사용한 점검
- 수동 점검
각 단계별로 시도해 볼 공격은 조금씩 다르다. 물론 이 공격들이 위에서 살펴본 웹 공격 종류에 속하는 것은 당연한 말이다. 각 단계별로 주로 수행하는 공격 방법이 <그림 2.1>에 나와 있다.

그러면 각 단계별로 할 일에 대해 알아보자.
- 정보 수집
정보 수집이란 공격 대상 웹 서버와 웹 애플리케이션에 대한 가능한 많은 정보를 얻어내는 과정을 의미한다. 이 단계에서 얻어낸 정보가 바로 공격으로 이어지지는 않지만 나중에 수행할 공격에 중요하게 쓰일 수 있다. 이 단계에서 얻어내는 정보에는 서버의 OS, 서버 OS의 버전, 웹 서버 포트, 웹 서버 종류 및 버전, 웹 서버 애플리케이션 종류 및 버전 등이 있다. 이 단계에서는 수동 점검과 자동 툴 점검을 병행하는데 자동 툴로는 nmap과 같은 포트스캐너가 주로 쓰인다.
- 범용 툴 점검
범용 툴 점검이란 ISS, Nessus와 같은 범용 취약점 스캐너를 이용해 웹 서버를 점검하는 것이다. 범용 취약점 스캐너는 웹 전용 스캐너에 비해 웹 취약점 검색 기능이 떨어지기는 하지만 전반적인 시스템의 보안을 진단해 주고 일부 기존에 알려진 취약점을 점검해 준다는 측면에서 꼭 필요한 점검이라 할 수 있다.
- 전용 툴 점검
전용 툴 점검은 특수한 웹 전용 툴을 사용해 웹 서버의 취약점을 확인하는 방법이다. 이 단계에서 쓰이는 툴로는 Nikto, Whisker, Kavado 등이 있다.
- 수동 점검
수동 점검은 자동 툴로는 하지 못하는 미묘한 공격을 직접 사용자가 수행하는 과정을 의미한다. 예를 들어 웹 페이지의 미묘한 입력 값 조작을 자동화된 툴로 하는 것은 상당히 어렵다. 바로 이 단계에서 모의 해킹 수행자의 노하우와 지식이 많이 반영된다. 수동 점검이라고 해서 전혀 툴을 사용하지 않는 것은 아니다. 사용자가 수동으로 만든 데이터를 보내는데는 터미널 에뮬레이터(CRT 같은)가 필요하며 인자 조작에는 Achilles와 같은 툴이 유용하게 쓰인다. '수동 점검' 단계가 '전용 툴 점검' 단계와 다른 점은 전용 툴 점검 단계에서는 사용자가 아무런 입력을 하지 않고 단지 클릭 한번만 하면 모든 스캔이 끝나지만 '수동 점검' 단계에서는 사용자의 역할이 80%를 넘어간다는 데 있다.
참고 : 자동 툴을 쓸 경우 웹 모의해킹에 대한 지식이 아무 소용이 없는가?
자동 툴을 쓰면 빠른 시간 안에 모의해킹을 할 수 있기 때문에 생산성 면에서 장점이 있다. 그러나 자동 툴을 쓸 경우에도 웹 모의해킹에 대한 지식이 큰 도움이 된다. 자동 툴이 취약점이라고 발견하는 모든 내용이 실제 취약점은 아니다. 모의해킹 수행자는 자동 툴의 결과를 실제로 확인하고 검증할 수 있어야 한다. 자동 툴은 모의해킹 수행자의 작업을 수월하게 해 줄 수는 있지만 모의해킹 수행자를 완전히 대신할 수는 없다.
'Hacking > web' 카테고리의 다른 글
토마토 님께서 3탄까지 올려서 뒤부분 올립니다. ^^* (0) | 2009.01.12 |
---|---|
Web Hacking 4탄 쿠키취약점 (0) | 2009.01.12 |
[쿠키의 모든 것] (0) | 2009.01.12 |
IP Fragmentation and Teardrop Attack (0) | 2009.01.12 |
IP Fragmentation을 이용한 공격기술들 (0) | 2009.01.12 |