티스토리 뷰

어떻게쓰는거야

쿠키변조

LANIAN 2006. 9. 15. 01:15

안녕하세요? 한 달에 한 번 최신 해킹 기법을 소개하고 있는 포항공대 플러스의 조성현입니다. LGNSYS와 함께 일반인들의 보안 마인드 확산을 위해 본 코너를 진행하고 있습니다.

이번 달에는 두 달전에 소개한 쿠키 스니핑과 관련된 이야기를 쿠키 스푸핑을 곁들여서 좀 더 해볼까 합니다. 지난번에도 얘기했듯이 쿠키란 웹사이트를 이용하는 사용자의 정보를 임시로 담아두는 것을 말합니다. 그리고 쿠키 스니핑이란 남의 쿠키를 훔쳐보는 것을 말하며, 스푸핑이란 현재 자기의 쿠키를 속이는 것을 말합니다.

월드 와이드 웹에서 이용하는 인터넷 프로토콜인 HTTP(?HyperText Transfer Protocol)은 텔넷이나 FTP와는 다르게 연결을 계속 맺고 있질 않습니다. 따라서 어떤 사용자가 특정 웹 사이트에 로그인을 하였을 경우, 로그인 상태를 계속 유지하고 있기 위해서는 특별한 방법이 필요합니다. 웹 서비스를 제공하는 서버 쪽에서 사용자의 로그인 여부를 기억해 두고 새로운 웹 페이지가 불려질 경우, 로그인 여부에 따라 다른 페이지를 보여 줄 수도 있지만, 이럴 경우, 서버에 많은 양의 데이터가 저장되어야 하기 때문에 이러한 방법은 일반적으로는 사용자의 로그인 여부를 서버에 저장하지 않습니다. 따라서 사용자가 로그인을 한 상태인지를 기억해 두기 위해서 서버 이외의 장소를 이용하게 되는데, 바로 사용자의 컴퓨터에 저장하게 됩니다. 이러한 데이터를 바로 쿠키를 이용하여 저장하게 됩니다.

특정 웹 사이트에 접속하였을 때, 사용자의 쿠키는 새롭게 만들어져 저장되는데요. 간단하게 어떠한 쿠키가 저장되는지는 웹 브라우저의 주소창에 다음과 같은 것을 쳐 보는 것으로 확인할 수 있습니다.

javascript:alert(document.cookie)

이 것은 자바스크립트 구문으로 alert은 화면에 조그만한 경고창을 띄워주게 되고, 그 내용을 현재 웹 페이지에 해당하는 쿠키의 내용을 보여주게 되는 것입니다.

Upload new Attachment "cookie.jpg"

위의 그림은 D모 웹사이트에 제 계정으로 로그인한 웹페이지에서 쿠키의 값을 확인 해 본 결과입니다. 인터넷 익스플로러에서 역시 똑같은 방법으로 같은 결과를 얻을 수 있습니다.

이 쿠키의 내용은 이미 쉽게 직접 볼 수 있는 내용이 아니지만, 이것을 이용해서 로그인하지 않은 상태에서도, 또는 다른 사용자의 쿠키를 얻었다면 (다른 사용자의 쿠키를 얻는 방법은 두달전에 최성현군이 이 코너를 통하여 소개해 주었습니다.) 다른 사용자로 로그인 한 것과 같은 내용을 볼 수 있습니다.

다른 사용자의 내용을 보기 위해서는 이렇게 얻어온 쿠키를 자신의 것인 것처럼 가지고 속여야 합니다. 속이는 방법은 직접 브라우저를 통하여 할 수 있습니다.

javascript:if (tmp = prompt("쿠키변수명=쿠키변수값;
식으로 입력해주세요.”,document.cookie)) { document.cookie=tmp;history.go(0); }

앞에서와 마찬가지로 역시 위의 코드를 웹브라우저의 주소창에 입력하면 쿠키를 변경시킬 수 있는 창이 뜹니다. 이를 통해 현재의 쿠키 값을 조작할 수 있습니다. 브라우저를 통해 조작할 수 없다거나, 조작하기 힘들다면 직접 HTTP request 메세지를 만들어서 직접 웹서버에 보내주는 것으로도 결과를 확인할 수 있습니다. HTTP 1.1 프로토콜에 관련된 내용은 http://www.w3c.org 에서 HTTP에 관련된 RFC 문서들을 보면 잘 나와 있습니다.

앞에서와 같은 방식으로 얻은 쿠키로 로그아웃 상태에서 로그인 상태의 웹페이지의 내용을 얻기 위하여 다음과 같은 HTTP 1.1 request 메세지를 담은 텍스트 파일을 만들었습니다.

GET http://www.****.net HTTP/1.1 Host: plus4.postech.ac.kr Cookie: $Version="1"; Apache=141.223.17******(생략)

그리고 이 내용을 유닉스나 리눅스 쉘에서 다음과 같이 보내면 결과를 볼 수 있습니다.

cat request.txt|telnet www.****.net 80 > result.html

이제 결과물인 result.html 의 내용을 웹브라우저를 이용하여 확인해 보면 로그인 된 상태의결과라는 것을 확인할 수 있습니다. 이렇게 된다면 이제 남의 메일을 열어보거나 하는 일 들이 이뤄 질 수 있는 것입니다.

이런 방식으로 쿠키 스니핑은 쿠키를 이용하여 다른 사람의 로그인 상태를 가로챌 수 있습니다.

쿠키 스니핑은 일반적으로 웹 서비스를 제공하는 쪽에서 쿠키가 정상적인 것인지를 제대로 점검하지 않는 경우에 더욱 쉽게 이루어지게 됩니다. 즉 예를 들어, 이미 사용자가 로그아웃을 하여 쿠키의 사용이 끝났을 경우에는 기존의 쿠키는 재사용이 불가능하도록 한다던지, 또는 쿠키에 사용자의 IP 정보를 해쉬함수등을 이용하여 기록하여 검사를 하여 본다던지와 같은 보안에 관한 검사가 이루어 질 경우에는 쿠키 스니핑이 이루어지기가 힘이 들게 됩니다. 그러나 지난번에 소개된 사례와 마찬가지로 서비스를 제공하는 쪽에서 항상 신뢰할 수 있는 서비스를 제공한다는 보장은 없습니다. 따라서 사용자가 각자 자신의 보안을 항상 신경써야 합니다.

쿠키 스니핑이 자바 스크립트와 같은 사용자의 컴퓨터에서 돌아가는 스크립트를 통하여 이루어지기 때문에, 쿠키 스니핑을 방지하기 위해서는 스크립트가 허용되는 게시판에서 글을 읽는다던지, 또는 웹메일과 같은 서비스를 이용할 때, 메일 내용 안에 있을 수 있는 스크립트를 그대로 실행되도록 설정해 놓는지와 같은 것을 피해야 합니다. 좀 더 엄격하게는 웹 브라우저의 설정에서 스크립트를 실행하지 못하도록 설정해 놓을 수도 있습니다.

누군가가 나의 이메일을 열어 본다거나 나의 이름을 이용하여 게시판 등에 글을 적거나 하는 것은 매우 기분 나쁜 일입니다. 또한 나의 중요한 정보가 유출될 수도 있습니다. 따라서 사용자는 항상 이런 점에 신경써야 합니다. 보안에 항상 신경 쓰셔서 안전한 컴퓨터 생활을 하시기 바랍니다.

다음달에 뵙겠습니다.

'어떻게쓰는거야' 카테고리의 다른 글

소리 증폭 TomSteady_Audio_Filter  (0) 2006.12.08
쿠키 스니핑  (0) 2006.09.15
winhack 단계별도구  (0) 2006.09.15
winhack 단계별도구  (0) 2006.09.15
Ethereal - 네트웍패킷 분석툴  (0) 2006.09.15
댓글
안내
궁금한 점을 댓글로 남겨주시면 답변해 드립니다.