세션 하이재킹이란 무엇입니까?

게시 됨: 2023-04-27

세션 하이재킹은 WordPress 사이트 소유자가 알아야 하는 사이버 공격 유형입니다. TCP 세션 하이재킹이라고도 하는 세션 하이재킹은 공격자가 제대로 로그인한 사용자처럼 보이게 합니다. 공격자는 유효한 사용자의 지식이나 허가 없이 세션 ID를 획득하여 사용자 세션을 장악합니다. 공격자가 사용자의 세션 ID를 훔친 후 대상 사용자로 가장할 수 있습니다. 공격자는 인증된 사용자가 동일한 시스템에 로그인한 후 인증된 사용자가 할 수 있는 모든 작업을 수행할 수 있습니다.

하이재킹된 세션으로 해커가 할 수 있는 최악의 상황 중 하나는 인증 없이 웹 애플리케이션 또는 서버 컨트롤에 대한 액세스 권한을 얻는 것입니다. 공격자가 사용자 세션을 하이재킹하면 세션이 활성화되어 있는 한 자신을 인증할 필요가 없습니다. 세션을 생성한 애플리케이션은 자신이 하이재킹한 세션의 인증된 사용자라고 생각합니다.

즉, 해커는 손상시킨 사용자와 동일한 액세스 권한을 가집니다. 적법한 사용자는 공격이 발생하기 전에 이미 세션을 인증했기 때문에 하이재킹에 성공하면 공격자가 인증을 완전히 우회할 수 있습니다.

이 가이드에서는 세션 하이재킹에 대해 자세히 알아봅니다. 귀하의 WordPress 사이트에 이러한 일이 발생하지 않도록 하기 위해 해야 할 일을 정확히 보여드리겠습니다.

세션이란 정확히 무엇입니까?

세션은 단순히 단일 HTTP 연결 전체에서 발생하는 통신 끝점 간의 일련의 상호 작용입니다.

HTTP(Hypertext Transfer Protocol)는 웹의 기반입니다. 하이퍼텍스트 링크를 사용하고 웹 페이지를 로드할 수 있습니다. HTTP는 또한 네트워크의 장치 간에 정보를 전달하기 위한 애플리케이션 계층 프로토콜입니다.

HTTP의 주요 특징은 "무상태"라는 것입니다. 즉, 웹사이트에서 세션을 여는 클라이언트(예: 귀하 및 귀하의 브라우저)에 대한 데이터를 저장하지 않습니다. 각 세션은 완전히 새롭습니다. HTTP는 이전 세션의 사용자에 대한 데이터를 보존하지 않습니다.

무국적자 처리

WordPress와 같은 웹 애플리케이션은 동일한 사용자와 다른 사용자의 여러 연결 사이의 상태를 추적해야 합니다. 각 사용자가 로그인하면 잠재적으로 둘 이상의 장치 또는 브라우저에서 각 사용자의 세션을 식별해야 합니다.

사용자가 WordPress와 같은 애플리케이션에 로그인하면 서버에서 세션을 생성합니다. 세션은 고유한 매개변수를 저장하여 사용자의 연결 "상태"를 유지합니다. 세션은 사용자가 애플리케이션에 로그인한 전체 기간 동안 서버에서 활성 상태로 유지됩니다.

사용자가 시스템에서 로그아웃하거나 사전 정의된 활동 없음 기간이 지나면 세션이 종료됩니다. 사용자 세션이 종료되면 애플리케이션은 서버 메모리에서 데이터를 삭제해야 합니다.

세션 식별자

세션 ID(또는 "키" 또는 "토큰")는 고유한 세션 식별자입니다. 일반적으로 서버와 클라이언트가 서로에게 전송하는 길고 임의의 영숫자 문자열입니다. 인증 애플리케이션은 일반적으로 웹 페이지의 URL, 쿠키 또는 숨겨진 필드에 세션 ID를 저장합니다.

세션 ID는 상태 비저장 시스템에서 상태를 유지하는 데 유용하지만 잠재적인 보안 위험도 있습니다. 예를 들어 웹 애플리케이션의 세션 ID를 생성하는 알고리즘을 이해하면 직접 생성할 수 있습니다. 또한 웹 애플리케이션이 HTTP를 HTTPS로 암호화하기 위해 SSL 암호화를 사용하지 않는 경우 세션 ID를 암호화되지 않은 상태로 전송하게 됩니다. 공용 네트워크에서는 누구나 암호화되지 않은 연결을 도청하고 세션 ID를 훔칠 수 있습니다.

세션 하이재킹은 실제로 어떻게 작동합니까?

성공적인 세션 하이재킹 공격은 매우 은밀합니다. 일반적으로 활성 통신 세션이 많은 매우 바쁜 네트워크에서 수행됩니다.

세션 하이재킹의 가장 일반적인 형태 중 일부는 다음을 사용합니다.

  • 예측 가능한 세션 토큰 ID
  • 세션 스니핑
  • 세션 사이드재킹
  • Man-in-the-Browser 맬웨어
  • 교차 사이트 스크립팅
  • 세션 고정

이러한 위협 벡터를 각각 개별적으로 살펴보겠습니다.

예측 가능한 세션 토큰 ID

많은 웹 서버는 사용자 지정 알고리즘 또는 미리 정의된 패턴을 사용하여 세션 ID를 생성합니다. 고유한 세션 토큰의 전반적인 예측 가능성이 높을수록 약합니다.

그리고 해커가 예측하기가 더 쉽습니다.

세션 스니핑

세션 스니핑은 해커가 애플리케이션 계층 세션 하이재킹에 사용하는 가장 간단하고 기본적인 방법 중 하나입니다.

공격자는 Wireshark와 같은 패킷 스니퍼 또는 OWASP Zed와 같은 프록시를 사용하여 네트워크 트래픽을 캡처합니다. 이 트래픽에 클라이언트와 웹 사이트 간의 연결을 위한 암호화되지 않은 세션 ID가 포함되어 있으면 ID가 도용될 수 있습니다. 해커는 유효한 ID 또는 토큰을 사용하여 사이트 및 사용자 계정에 대한 무단 액세스를 신속하게 얻을 수 있습니다.

세션 사이드 재킹

공격자는 패킷 스니핑을 사용하여 사용자가 사이트에 로그인할 때 세션 쿠키를 가로챌 수 있습니다. 로그인 페이지가 암호화되지 않았거나 약한 암호화가 사용된 경우 사이버 범죄자는 이러한 방식으로 쉽게 사용자 세션을 하이재킹할 수 있습니다.

맨인더브라우저

이 공격에서 공격자는 초기에 피해자의 컴퓨터나 브라우저를 맬웨어로 감염시켜야 합니다.

이 맬웨어는 브라우저 트랜잭션 정보를 눈에 보이지 않게 수정하고 사용자 모르게 트랜잭션을 생성할 수 있습니다. 손상된 브라우저의 요청은 피해자의 물리적 장치에서 시작되므로 유효한 것으로 간주됩니다.

교차 사이트 스크립팅

사이버 범죄자는 애플리케이션 또는 서버 취약성을 악용하여 사이트의 웹 페이지에 임의의 코드를 삽입할 수 있습니다. 이렇게 하면 손상된 페이지가 로드될 때 방문자의 브라우저가 해당 코드를 실행하게 됩니다.

세션 쿠키에 HTTP 전용이 설정되지 않은 경우 삽입된 코드를 통해 세션 키를 도용할 수 있습니다. 이것은 공격자가 사용자 세션을 하이재킹하는 데 필요한 모든 것을 제공합니다.

세션 고정

아직 인증되지 않은 유효한 세션 ID를 사용합니다. 공격자는 세션 고정을 사용하여 사용자가 이 특정 ID로 인증하도록 속이려고 합니다.

인증이 이루어지면 공격자는 이제 피해자의 컴퓨터에 대한 전체 액세스 권한을 갖게 됩니다.

세션 고정은 웹 애플리케이션이 세션 ID를 관리하는 방법에 대한 큰 제한을 탐색합니다.

해커가 세션 하이재킹에서 벗어나는 것은 무엇입니까?

해커가 세션을 하이재킹하면 합법적인 사용자가 해당 활성 세션에서 수행할 수 있는 모든 작업을 수행할 수 있습니다.

가장 효과적이고 피해를 주는 세션 하이재킹은 다음과 같은 결과를 초래할 수 있습니다.

  • 손상된 은행 계좌
  • 온라인에서 승인되지 않은 온라인 구매 항목
  • 절도 식별
  • 내부 회사 시스템에서 데이터 도용

안좋다! 성공적인 세션 하이재킹 세션은 많은 피해를 줄 수 있습니다.

세션 하이재킹의 몇 가지 예는 무엇입니까?

2012년 가을, Juliano Rizzo와 Thai Duong이라는 두 명의 보안 연구원이 TLS 요청의 압축률 내에서 정보 유출을 사이드 채널로 이용하는 공격인 CRIME을 발표했습니다. 이를 통해 클라이언트가 서버에 요청한 내용을 해독할 수 있었습니다.

결과적으로 그들은 사용자의 로그인 쿠키를 잡고 세션을 하이재킹하여 전자 상거래 사이트 및 은행과 같은 고부가가치 온라인 목적지에서 사용자를 사칭할 수 있었습니다.

이 데모에서는 해커가 이러한 유형의 공격을 실행하여 HTTP 요청의 헤더를 복구하는 방법을 보여주었습니다.

CRIME은 무차별 대입을 사용하여 인증된 사용자를 기억하기 위해 웹 사이트에서 설정한 HTTPS 쿠키를 해독합니다. 이 공격 코드는 피해자의 브라우저가 특별히 제작된 HTTPS 요청을 대상 웹사이트로 보내도록 하고 압축된 후 길이의 변화를 분석하여 피해자의 세션 쿠키 값을 결정합니다. 이는 위에서 본 것처럼 SSL/TLS가 중복 문자열을 제거하는 DEFLATE라는 압축 알고리즘을 사용하기 때문에 가능합니다.

공격 코드는 브라우저의 보안 메커니즘 때문에 요청에 포함된 세션 쿠키를 읽을 수 없습니다. 그러나 모든 새 요청의 경로를 제어할 수 있으며 쿠키 값과 일치시키기 위해 다른 문자열을 삽입할 수 있습니다.

세션 쿠키 값은 매우 길 수 있습니다. 대문자와 소문자 및 숫자로 구성됩니다.

결과적으로 CRIME 공격 코드는 이를 해독하기 위해 매우 많은 수의 요청을 시작해야 하며 이 작업에는 몇 분이 걸릴 수 있습니다.

세션 하이재킹 방지

세션 ID(또는 민감한 다른 쿠키 값)가 안전하지 않게 전송되거나 저장될 때 공격자가 세션 ID를 훔쳐 재사용할 수 있다는 점을 기억하는 것이 중요합니다. 100% 보호가 보장되지는 않지만 암호화를 사용하는 것이 주요 방어 수단입니다.

사용자 인증 시 SSL 및 보안 쿠키가 필수여야 합니다. 그리고 인증된 사용자가 둘 이상의 보안 페이지를 방문하는 경우 HTTPS를 사용하도록 강제해야 합니다.

그 외에도 WordPress 사이트 소유자는 세션 하이재킹 보호를 위해 iThemes Security Pro WordPress 보안 플러그인을 사용해야 합니다. iThemes Security Pro에 내장된 신뢰할 수 있는 장치 기능은 하루 24시간, 주 7일 작동하여 이 위험한 공격으로부터 사이트를 안전하게 보호합니다. 사이트 사용자를 위해 설정하는 방법을 알아보세요.

세션 하이재킹 이해 및 방지

이 가이드의 정보를 통해 세션 하이재킹으로부터 WordPress 사이트를 보호하는 데 필요한 모든 것을 알 수 있습니다.

  1. 사이트가 SSL을 사용하여 완전히 암호화되었는지 확인하고 사용자가 HTTPS를 유지하도록 합니다.
  2. iThemes Security Pro 플러그인을 다운로드하여 설치합니다.

이러한 간단한 단계를 수행하면 세션 하이재킹으로부터 사이트를 보호할 수 있습니다.