소개
이 랩에서는 애플리케이션의 세션 토큰 무작위성 품질을 분석하는 강력한 도구인 Burp Suite 내의 Burp Sequencer 사용법을 배우게 됩니다. 예측 가능한 세션 토큰은 공격자에 의해 추측되거나 계산될 수 있으며, 이는 세션 하이재킹 취약점으로 이어집니다.
이 랩이 끝나면 로그인 요청을 캡처하고, 이를 Burp Sequencer 로 보내고, 특정 토큰을 분석하도록 도구를 구성하고, 결과를 해석하여 무작위성을 평가할 수 있게 됩니다. 이는 웹 애플리케이션 보안 평가의 기본 기술입니다.
세션 쿠키를 설정하는 로그인 요청 찾기
이 단계에서는 Burp Suite 를 실행하고 내장 브라우저를 사용하여 테스트 애플리케이션에 로그인한 다음, 세션을 설정하는 요청을 찾게 됩니다.
먼저 Burp Suite 를 시작해야 합니다. 일반적으로 애플리케이션 메뉴에서 찾거나 터미널에서 실행할 수 있습니다. 이 랩에서는 Burp Suite 를 실행할 준비가 되었다고 가정합니다.
- 바탕화면에서 터미널을 엽니다.
- Burp Suite 를 실행합니다. 정확한 명령은 다를 수 있지만 종종 스크립트입니다. 이 환경에서는 사용 가능하다고 가정합니다.
- Burp Suite 가 열리면
Proxy탭으로 이동한 다음Intercept하위 탭으로 이동합니다.Intercept is on버튼을 클릭하여 현재 인터셉트가 꺼져 있는지 확인합니다. - 다음으로
Proxy->HTTP history탭으로 이동합니다. 모든 트래픽이 기록되는 곳입니다. Open Browser버튼을 클릭합니다. 그러면 Burp 의 사전 구성된 Chromium 브라우저가 실행됩니다.- 브라우저에서 로그인 페이지로 이동합니다. 이 랩에서는 가상의 로그인 페이지를 사용합니다. 실제 테스트에서는 대상 애플리케이션이 됩니다.
- 자격 증명을 입력합니다. 예를 들어 사용자 이름으로
user를, 비밀번호로password를 입력하고 로그인 버튼을 클릭합니다. - Burp Suite 창으로 돌아가서
Proxy->HTTP history탭을 확인합니다. 요청 목록이 표시되어야 합니다. 로그인 엔드포인트로 가는POST요청을 찾습니다. 해당 요청을 클릭합니다. - 아래의 요청/응답 뷰어에서
Response탭을 클릭합니다.Set-Cookie헤더를 찾습니다. 다음과 유사하게 표시됩니다.
HTTP/1.1 302 Found
...
Set-Cookie: sessionID=q8f...; path=/; HttpOnly
...
이 sessionID가 분석하려는 토큰입니다. 대상 요청을 성공적으로 식별했습니다.
프록시 기록에서 요청을 마우스 오른쪽 버튼으로 클릭하고 'Sequencer 로 보내기'
이 단계에서는 분석을 위해 식별한 로그인 요청을 Burp Sequencer 도구로 보냅니다.
이제 Proxy 기록에서 세션 쿠키를 설정하는 POST 요청을 찾았으므로 분석을 위해 이를 격리해야 합니다.
Proxy->HTTP history탭에서 올바른POST요청이 여전히 선택되어 있는지 확인합니다.- 기록 테이블에서 해당 요청 항목을 마우스 오른쪽 버튼으로 클릭합니다. 그러면 많은 옵션이 있는 컨텍스트 메뉴가 열립니다.
- 컨텍스트 메뉴에서
Send to Sequencer로 이동하여 클릭합니다.
이 작업은 선택한 요청의 복사본을 Sequencer 도구로 보냅니다. 이제 Sequencer 탭 헤더가 주황색으로 바뀌면서 새 항목을 받았음을 나타냅니다.
Sequencer탭을 클릭하여 도구로 전환합니다. 방금 보낸 요청이 "Live Capture Request" 패널에 로드된 것을 볼 수 있습니다.
Sequencer 에서 쿠키를 포함하는 응답 선택
이 단계에서는 Burp Sequencer 가 요청을 올바르게 발행하고 세션 토큰을 포함하는 응답을 받을 수 있는지 확인합니다.
Sequencer 탭 안에서 프록시에서 보낸 요청을 볼 수 있습니다. 토큰 위치를 구성하기 전에 Sequencer 가 성공적으로 응답을 받을 수 있는지 확인해야 합니다.
Sequencer탭에서 "Select Live Capture Request" 패널을 확인합니다. 요청이 이미 로드되어 있어야 합니다.- 이 패널 상단에 있는
Start live capture버튼을 클릭합니다.
Burp 는 요청을 한 번 보내고 받은 응답을 표시합니다. 이를 통해 요청이 유효하고 서버가 예상대로 세션 토큰으로 응답하는지 확인할 수 있습니다. 응답은 요청 아래 패널에 나타납니다.
프록시 기록에서와 마찬가지로 응답에서 Set-Cookie 헤더를 볼 수 있어야 합니다. 이는 Sequencer 가 다음 구성 단계를 준비했음을 확인합니다. 오류가 발생하면 프록시로 돌아가 다른 요청을 찾아야 할 수 있습니다.
응답 내 토큰 위치 구성
이 단계에서는 서버 응답에서 세션 토큰을 정확히 어디에서 찾을지 Burp Sequencer 에 알려줍니다. 이것이 가장 중요한 구성 단계입니다.
라이브 캡처를 시작하고 유효한 응답을 받은 후 분석하려는 토큰의 위치를 정의해야 합니다.
- "Token Location Within Response" 섹션으로 스크롤합니다.
- 두 가지 주요 옵션이 있습니다:
Custom location과Defined in a cookie. 토큰이Set-Cookie헤더에 있으므로 두 번째 옵션이 가장 쉽습니다. Defined in a cookie옆의 라디오 버튼을 클릭합니다.- 드롭다운 메뉴가 활성화됩니다. 클릭하고 이전에 식별한 세션 쿠키의 이름 (예:
sessionID) 을 선택합니다.
쿠키를 선택함으로써 Sequencer 가 받는 모든 응답에서 해당 특정 쿠키의 값을 자동으로 추출하도록 지시하는 것입니다. 이 값이 무작위성에 대해 분석될 것입니다.
쿠키가 선택되면 구성이 완료됩니다. Sequencer 는 이제 어떤 요청을 보내야 하고 응답에서 토큰을 어디에서 찾아야 하는지 알게 됩니다.
라이브 캡처 시작 및 무작위성 결과 분석
이 단계에서는 대량의 토큰 샘플을 수집하기 시작하고 Sequencer 의 통계 엔진을 사용하여 무작위성을 분석합니다.
구성이 완료되면 분석을 시작할 준비가 되었습니다.
Start live capture버튼을 다시 클릭합니다. 이번에는 Burp 가 요청을 지속적으로 보내고 각 응답에서 세션 토큰을 수집합니다.- "Live Capture" 결과 패널을 확인합니다.
Request count와Tokens collected숫자가 증가하는 것을 볼 수 있습니다. - 최소 2,000 개의 토큰을 수집할 때까지 캡처를 실행합니다. 철저한 분석을 위해서는 10,000~20,000 개의 토큰이 권장되지만, 이 실습에서는 2,000 개로 충분합니다.
- 충분한 토큰을 수집했으면
Pause버튼을 클릭한 다음Analyze now버튼을 클릭합니다.
Burp 는 수집된 토큰에 대해 여러 통계 테스트를 수행합니다. 결과는 여러 탭에 표시됩니다.
Summary탭에 집중합니다. 이 탭은 토큰 품질에 대한 전반적인 평가를 제공합니다. 가장 중요한 지표는 전반적인 무작위성 품질이며, 이는 **유효 엔트로피 비트 (bits of effective entropy)**로 추정됩니다.
높은 엔트로피 값 (예: 128 비트) 은 매우 강력하고 예측 불가능한 토큰을 나타냅니다. 낮은 값 (예: 64 비트 미만) 은 악용될 수 있는 취약점을 나타낼 수 있습니다. 요약에서는 "Excellent", "Good", "Poor", "Insecure"와 같은 명확한 등급을 제공합니다.
Character-level analysis 및 Bit-level analysis와 같은 다른 탭을 탐색하여 발견된 잠재적 취약점을 더 깊이 파고들 수 있습니다.
요약
이 실습에서는 Burp Sequencer 를 사용하여 세션 토큰의 통계 분석을 수행하는 방법을 성공적으로 배웠습니다.
전체 워크플로우를 실습했습니다:
- Burp Proxy 를 사용하여 쿠키를 설정하는 로그인 요청 캡처.
- 해당 요청을 Sequencer 도구로 전송.
- 서버 응답 내에서 세션 토큰을 찾도록 Sequencer 구성.
- 라이브 캡처를 실행하여 대량의 토큰 샘플 수집.
- 수집된 데이터를 분석하여 토큰 무작위성의 유효 엔트로피 및 전반적인 품질 결정.
이 과정은 예측 가능한 세션 관리를 식별하는 데 도움이 되므로 모든 웹 애플리케이션 보안 테스트에서 중요한 부분입니다.
