오늘날 인터넷이 발달됨에 따라 Web Security에 대한 문제가 크게 이슈화 되고 있다.
그리고 뛰어난 방화벽이나 IDS등의 개발로 예전에 비해서는 네트워크나 운영체제 자체의 보안이 점점 강화되어 가고 있다.
그래서 최근의 크래킹 사건은 열려있는 80번 포트등을 이용해 정상적인 접근을 가장해서 공격이 가해지던지 아니면 웹 어플리케이션 자체의 버그를 이용한 웹해킹
등이 실제 많이 이루어지고 있다.
이는 기존의 방화벽이나 IDS로 차단하기가 쉽지 않고 공격 기법들도 크게 어렵지 않으면서 버그들이 수없이 존재하기 때문에 보안 전문가들의 우려를 낳고 있다.
그 중 많이 쓰이는 기법인 XSS와 윈도우 IIS서버를 이용한 공격방법등
에 대해 알아보고 이에 대한 방어에 대해 알아보기로 하자.
2. 기본 개념
해커의 입장에서 하나의 타겟 서버가 있을 때 어떤 방식과 과정으로 침
투를 하여 공격을 하는지 알아보겠다.
우선 해킹기법들에 대해서 간단히 알아 보겠다.
(1) XSS(Cross Site Scripting)
WEB(World Wide Web) 브라우져를 이용해 웹사이트를 방문하다가 보
면 주소를 잘못 입력하여 “이 페이지를 찾을 수 없습니다” 라는 에러
페이지를 자주 볼 수 있을 것이다.
실제 melong.html이라는 문서가 존재하지 않기 때문에 웹사이트는
다음과 같은 에러 메시지를 리턴시키게 될 것이다.
<HTML>
스크립트 파일과 코드 파일을 열 수가 없습니다.
파일: /home/httpd/www/babo.html HTTP/1.1 200 OK Date: Tue, 09 Mar 2004 03:39:04 GMT Server: Apache Connection: close Transfer-Encoding: chunked Content-Type: text/html c00
</HTML>
여기서 melong.html 이라는 페이지는 본인이 임의로 입력한 페이지임을
기억해보자.
Cross Site Scripting은 위의 경우에 적용시킬 시 melong.html에 악의적인 스크립트를 포함시켜서 웹서버가 공격 대상자의 브라우저로 악의적인 스크립트나 HTML이 포함되어 있는 페이지를 보내도록 유도하는 기법이다.
(XSS는 CSS라도고 하는데 Cascading Style Sheets 와 혼동이 되기도 하
기 때문에 전문가들은 크로스 사이트 스크립팅을 주로 XSS로 표기한다.)
얼마전에 발표되었던 Ms 익스플로러의 버그였던 URL 스푸핑의 기법도
XSS공격을 위한 가짜 사이트로의 유도를 위한 것이었음을 볼 때 XSS공격
의 위험성을 잘 인지할 수 있을 것이다.
URL 스푸핑이란 선의적인 사이트를 악의적인 사이트나 음란 사이트로 연
결할때 주로 사용되며 웹 브라우저에 사용자가 그 링크를 클릭했을 때 고
의로 악의적인 사용자가 꾸며놓은 원본 site와 똑같은 곳으로 가게 되어
사용자를 속이는 방법이다.
url 스푸핑을 클릭하게 되면 사용자는 주소창에 www.microsoft.com
으로 연결되는 것을 보는 동시에 사실상 root.pe.kr로 이동을 하게
되는 것이다. (0X01이라는 포워딩문자를 볼 수 있다.)
XSS가 적용된 간단한 실예를 들어보겠다.
A라는 사람이 HACKER의 웹사이트를 클릭해서 살펴보다가 shoping.com
이라는 자신이 평소 이용하던 쇼핑물 사이트에 관심을 가지게 되어 shoping.com을 클릭하고선 자신의 아이디와 비밀번호를 넣고 엔터키를
누른다. 별 문제없이 모든 일이 순조롭게 진행되는 듯 하지만, 사실은
여기까지의 A가 입력한 정보가 HACKER에게로 전송이 되는 것이다.
- XSS의 원리
: 공격자가 악의적인 스크립트를 서버에 보내면 이 스크립트는 합법적인
서버로부터 온 합법적인 스크립트의 권한으로 실행된다.
서버는 Melong.html이라는 스크립트를 사용자의 브라우저로 명령어를
리턴시킬 것이고 브라우저는 이 스크립트를 실행 할 것이다.
위의 예를 보면 HACKER는 shoping.com 과 똑같은 정상적인 페이지로
위장하기 위해서 HTML과 스크립팅을 사용한 것이다.
: Melong.html 대신,
: <script>alert(‘crack’)</script>
을 사용하면 script 안의 내용이 브라우져에서 실행되는 것이다.
HACKER는 이 스크립트에 URL 스푸핑을 이용하던지, 불법적인 프로그
램을 심어놓을 수 있다.
또한, document.cookie를 추출하여 사용자의 정보를 빼오는 것이 가능하
다.
웹 스크립트들이 실행되는 게시판의 경우, 무척이나 취약할 수 있다는 것을
예상할 수 있을 것이다.
3. 모의 공격 예
hotmail 웹서버를 공격할 수 있는 xss 기법을 연구해보자.
또한 아울러서 여기서 제공되는 안티바이러스 기능을 우회할 수 있는
기법도 생각해 보기로 하자.
본인은 타인의 메일서버를 공격할 계획을 가지고 있기로 가정한다.
그러기 위해서는 ActiveX 의 도움이 필요한데 상대방이 이것을 브라우저에서 사용불
가로 해놓았거나 "모질라"를 사용하게 된다면 문제가 발생할 것이다.
다음의 내용이 시스템을 점검해본 결과이다.
1. xss 버그 존재 발견 - good
2. 코드삽입같은 쿠키공격 불가 - bad
3. 스크립트코드 사용가능 - good
4. IP 기반의 세션 트래킹 방식 존재여부 불확실 - bad
5. 공격대상 클라이언트의 출력방향 전환 가능 - good
6. 공격에 사용된 코드(ActiveX, XML, http request 등등) 이 브라우저에 독립적인 경항 - bad
위의 결과를 종합해보니 공격할 수 있는 유일한 길은 자바스크립트 뿐이었다.
이번의 경우는 xss 공격의 전형적인 기법인 HTML 삽입법이 통할것 같지 않았다.
첨부파일이 열리는 곳으로 부터 URL 을 볼때 세션 식별자와 메세지 식별자를 볼 수가 있다.
여기서 우리가 보낸 같은 메세지로 리퀘스트를 보낼 수가 있게 되는 것이다.
같은 메세지(같은 식별자는 )는 많은 첨부파일들을 가질 수 있다.
그렇기 때문에 같은 메세지에 다른 첨부파일을 가진 리퀘스트를 만들어낼 수 있다.
왜 그럴까낭..?~
HTTP 리퀘스트의 약간을 수정함으로써 안티바이러스 기능을 통과할 수 있다고 상상해보라...
xss 코드를 보낼때 사용한 것과 같은 첨부파일을 사용할 수는 없을 것이다.
왜냐하면 상대방의 브라우저에서 직접 열리게 되기 때문에 안티바이러스에 감지가 된다.
그래서 다른 첨부파일(같은 메세지가 있는)을 여는 xss 코드를 위조해 보냄으로써 이 안티바이러스 기능이 실행되는 것을 막을 수 있다.