Burp Sequencer 로 세션 토큰 무작위성 분석하기

Beginner
지금 연습하기

소개

이 랩에서는 애플리케이션의 세션 토큰 무작위성 품질을 분석하는 강력한 도구인 Burp Suite 내의 Burp Sequencer 사용법을 배우게 됩니다. 예측 가능한 세션 토큰은 공격자에 의해 추측되거나 계산될 수 있으며, 이는 세션 하이재킹 취약점으로 이어집니다.

이 랩이 끝나면 로그인 요청을 캡처하고, 이를 Burp Sequencer 로 보내고, 특정 토큰을 분석하도록 도구를 구성하고, 결과를 해석하여 무작위성을 평가할 수 있게 됩니다. 이는 웹 애플리케이션 보안 평가의 기본 기술입니다.

세션 쿠키를 설정하는 로그인 요청 찾기

이 단계에서는 Burp Suite 를 실행하고 내장 브라우저를 사용하여 테스트 애플리케이션에 로그인한 다음, 세션을 설정하는 요청을 찾게 됩니다.

먼저 Burp Suite 를 시작해야 합니다. 일반적으로 애플리케이션 메뉴에서 찾거나 터미널에서 실행할 수 있습니다. 이 랩에서는 Burp Suite 를 실행할 준비가 되었다고 가정합니다.

  1. 바탕화면에서 터미널을 엽니다.
  2. Burp Suite 를 실행합니다. 정확한 명령은 다를 수 있지만 종종 스크립트입니다. 이 환경에서는 사용 가능하다고 가정합니다.
  3. Burp Suite 가 열리면 Proxy 탭으로 이동한 다음 Intercept 하위 탭으로 이동합니다. Intercept is on 버튼을 클릭하여 현재 인터셉트가 꺼져 있는지 확인합니다.
  4. 다음으로 Proxy -> HTTP history 탭으로 이동합니다. 모든 트래픽이 기록되는 곳입니다.
  5. Open Browser 버튼을 클릭합니다. 그러면 Burp 의 사전 구성된 Chromium 브라우저가 실행됩니다.
  6. 브라우저에서 로그인 페이지로 이동합니다. 이 랩에서는 가상의 로그인 페이지를 사용합니다. 실제 테스트에서는 대상 애플리케이션이 됩니다.
  7. 자격 증명을 입력합니다. 예를 들어 사용자 이름으로 user를, 비밀번호로 password를 입력하고 로그인 버튼을 클릭합니다.
  8. Burp Suite 창으로 돌아가서 Proxy -> HTTP history 탭을 확인합니다. 요청 목록이 표시되어야 합니다. 로그인 엔드포인트로 가는 POST 요청을 찾습니다. 해당 요청을 클릭합니다.
  9. 아래의 요청/응답 뷰어에서 Response 탭을 클릭합니다. Set-Cookie 헤더를 찾습니다. 다음과 유사하게 표시됩니다.
HTTP/1.1 302 Found
...
Set-Cookie: sessionID=q8f...; path=/; HttpOnly
...

sessionID가 분석하려는 토큰입니다. 대상 요청을 성공적으로 식별했습니다.

프록시 기록에서 요청을 마우스 오른쪽 버튼으로 클릭하고 'Sequencer 로 보내기'

이 단계에서는 분석을 위해 식별한 로그인 요청을 Burp Sequencer 도구로 보냅니다.

이제 Proxy 기록에서 세션 쿠키를 설정하는 POST 요청을 찾았으므로 분석을 위해 이를 격리해야 합니다.

  1. Proxy -> HTTP history 탭에서 올바른 POST 요청이 여전히 선택되어 있는지 확인합니다.
  2. 기록 테이블에서 해당 요청 항목을 마우스 오른쪽 버튼으로 클릭합니다. 그러면 많은 옵션이 있는 컨텍스트 메뉴가 열립니다.
  3. 컨텍스트 메뉴에서 Send to Sequencer로 이동하여 클릭합니다.

이 작업은 선택한 요청의 복사본을 Sequencer 도구로 보냅니다. 이제 Sequencer 탭 헤더가 주황색으로 바뀌면서 새 항목을 받았음을 나타냅니다.

  1. Sequencer 탭을 클릭하여 도구로 전환합니다. 방금 보낸 요청이 "Live Capture Request" 패널에 로드된 것을 볼 수 있습니다.

Sequencer 에서 쿠키를 포함하는 응답 선택

이 단계에서는 Burp Sequencer 가 요청을 올바르게 발행하고 세션 토큰을 포함하는 응답을 받을 수 있는지 확인합니다.

Sequencer 탭 안에서 프록시에서 보낸 요청을 볼 수 있습니다. 토큰 위치를 구성하기 전에 Sequencer 가 성공적으로 응답을 받을 수 있는지 확인해야 합니다.

  1. Sequencer 탭에서 "Select Live Capture Request" 패널을 확인합니다. 요청이 이미 로드되어 있어야 합니다.
  2. 이 패널 상단에 있는 Start live capture 버튼을 클릭합니다.

Burp 는 요청을 한 번 보내고 받은 응답을 표시합니다. 이를 통해 요청이 유효하고 서버가 예상대로 세션 토큰으로 응답하는지 확인할 수 있습니다. 응답은 요청 아래 패널에 나타납니다.

프록시 기록에서와 마찬가지로 응답에서 Set-Cookie 헤더를 볼 수 있어야 합니다. 이는 Sequencer 가 다음 구성 단계를 준비했음을 확인합니다. 오류가 발생하면 프록시로 돌아가 다른 요청을 찾아야 할 수 있습니다.

응답 내 토큰 위치 구성

이 단계에서는 서버 응답에서 세션 토큰을 정확히 어디에서 찾을지 Burp Sequencer 에 알려줍니다. 이것이 가장 중요한 구성 단계입니다.

라이브 캡처를 시작하고 유효한 응답을 받은 후 분석하려는 토큰의 위치를 정의해야 합니다.

  1. "Token Location Within Response" 섹션으로 스크롤합니다.
  2. 두 가지 주요 옵션이 있습니다: Custom locationDefined in a cookie. 토큰이 Set-Cookie 헤더에 있으므로 두 번째 옵션이 가장 쉽습니다.
  3. Defined in a cookie 옆의 라디오 버튼을 클릭합니다.
  4. 드롭다운 메뉴가 활성화됩니다. 클릭하고 이전에 식별한 세션 쿠키의 이름 (예: sessionID) 을 선택합니다.

쿠키를 선택함으로써 Sequencer 가 받는 모든 응답에서 해당 특정 쿠키의 값을 자동으로 추출하도록 지시하는 것입니다. 이 값이 무작위성에 대해 분석될 것입니다.

쿠키가 선택되면 구성이 완료됩니다. Sequencer 는 이제 어떤 요청을 보내야 하고 응답에서 토큰을 어디에서 찾아야 하는지 알게 됩니다.

라이브 캡처 시작 및 무작위성 결과 분석

이 단계에서는 대량의 토큰 샘플을 수집하기 시작하고 Sequencer 의 통계 엔진을 사용하여 무작위성을 분석합니다.

구성이 완료되면 분석을 시작할 준비가 되었습니다.

  1. Start live capture 버튼을 다시 클릭합니다. 이번에는 Burp 가 요청을 지속적으로 보내고 각 응답에서 세션 토큰을 수집합니다.
  2. "Live Capture" 결과 패널을 확인합니다. Request countTokens collected 숫자가 증가하는 것을 볼 수 있습니다.
  3. 최소 2,000 개의 토큰을 수집할 때까지 캡처를 실행합니다. 철저한 분석을 위해서는 10,000~20,000 개의 토큰이 권장되지만, 이 실습에서는 2,000 개로 충분합니다.
  4. 충분한 토큰을 수집했으면 Pause 버튼을 클릭한 다음 Analyze now 버튼을 클릭합니다.

Burp 는 수집된 토큰에 대해 여러 통계 테스트를 수행합니다. 결과는 여러 탭에 표시됩니다.

  1. Summary 탭에 집중합니다. 이 탭은 토큰 품질에 대한 전반적인 평가를 제공합니다. 가장 중요한 지표는 전반적인 무작위성 품질이며, 이는 **유효 엔트로피 비트 (bits of effective entropy)**로 추정됩니다.

높은 엔트로피 값 (예: 128 비트) 은 매우 강력하고 예측 불가능한 토큰을 나타냅니다. 낮은 값 (예: 64 비트 미만) 은 악용될 수 있는 취약점을 나타낼 수 있습니다. 요약에서는 "Excellent", "Good", "Poor", "Insecure"와 같은 명확한 등급을 제공합니다.

Character-level analysisBit-level analysis와 같은 다른 탭을 탐색하여 발견된 잠재적 취약점을 더 깊이 파고들 수 있습니다.

요약

이 실습에서는 Burp Sequencer 를 사용하여 세션 토큰의 통계 분석을 수행하는 방법을 성공적으로 배웠습니다.

전체 워크플로우를 실습했습니다:

  • Burp Proxy 를 사용하여 쿠키를 설정하는 로그인 요청 캡처.
  • 해당 요청을 Sequencer 도구로 전송.
  • 서버 응답 내에서 세션 토큰을 찾도록 Sequencer 구성.
  • 라이브 캡처를 실행하여 대량의 토큰 샘플 수집.
  • 수집된 데이터를 분석하여 토큰 무작위성의 유효 엔트로피 및 전반적인 품질 결정.

이 과정은 예측 가능한 세션 관리를 식별하는 데 도움이 되므로 모든 웹 애플리케이션 보안 테스트에서 중요한 부분입니다.