TL;DR

Burp Sequencer là công cụ trong Burp Suite dùng để phân tích chất lượng randomness của token — session ID, anti-CSRF, password reset. Sequencer gom hàng ngàn token qua live capture, chạy hai tầng test (character-level + bit-level, bao gồm 4 FIPS tests), và báo ra effective entropy (tính bằng bits). Dưới 64 bits = đáng lo, dưới 20 bits = predictable nghiêm trọng. Tuy nhiên, pass test KHÔNG đồng nghĩa unpredictable, và fail test KHÔNG đồng nghĩa exploitable — đọc kỹ limitations trước khi kết luận.

Burp Sequencer là gì?

Khi user login, server cấp một session ID. Câu hỏi của pentester: Nếu đoán được session ID kế tiếp server sẽ sinh ra thì sao? Câu trả lời: session hijacking — chiếm session của user đã xác thực, truy cập dữ liệu và thao tác thay họ.

Burp Sequencer giải quyết câu hỏi đó bằng cách chạy một loạt test thống kê chuẩn công nghiệp lên một mẫu token lớn, rồi tổng hợp thành một con số duy nhất: effective entropy. Token Sequencer có thể phân tích:

  • Session tokens / Session IDs — PHPSESSID, JSESSIONID, custom cookies
  • Anti-CSRF tokens — hidden form fields, header tokens
  • Password reset / forgot-password tokens — URL parameters
  • Bất kỳ value nào app tuyên bố là unpredictable

Workflow 5 bước từ request tới verdict

1. Send to Sequencer

Trong tab Proxy > HTTP history, tìm response có Set-Cookie hoặc token issued. Right-click → Send to Sequencer. Burp tự detect cookie và điền vào panel Token location within response.

2. Configure token location

Mở tab Sequencer. Entry vừa gửi đã được chọn sẵn. Chọn radio button của cookie cần analyze. Nếu token không phải cookie chuẩn (ví dụ token ẩn trong JSON response hoặc hidden form field), dùng Custom location:

  • Click Custom locationConfigure
  • Window Define Custom token location mở ra với response của request gốc
  • Chọn Define start & end hoặc Extract from regex group
  • Highlight đúng token trong response → Burp tự set delimiters → Save

3. Start live capture

Click Start live capture. Burp sẽ repeat request gốc hàng ngàn lần, extract token từ mỗi response. Cửa sổ Live capture hiện progress bar và token counter. Controls quan trọng:

  • Pause/Resume — tạm dừng để review
  • Copy Tokens — dump ra clipboard để verify values
  • Auto analyze — update kết quả real-time
  • Analyze now — chạy statistical tests (khả dụng khi ≥100 tokens)

4. Manual load (phương án thay thế)

Nếu đã có danh sách token từ tool khác, vào tab Manual load → paste hoặc load file → Analyze now. Không cần live capture.

5. Read the results

Sequencer trả về 3 tab: Summary, Character-level analysis, Bit-level analysis. Con số cần quan tâm nhất: Overall effective entropy ở significance level 1%.

Bộ test thống kê: character-level và bit-level

Sequencer chạy hai tầng test song song.

Character-level (raw token, per position)

  • Character count analysis: Phân phối các ký tự tại mỗi vị trí — random thì uniform.
  • Character transition analysis: Nếu ký tự X xuất hiện tại vị trí 5, liệu token kế tiếp tại vị trí 5 có ký tự nào đều khả năng như nhau không?

Bit-level (convert token sang bits, per bit position)

Bốn FIPS tests chuẩn (cần 20,000 tokens để đạt formal compliance):

  • FIPS monobit: Phân phối 0 và 1 tại mỗi bit position, kỳ vọng ~50/50.
  • FIPS poker: Chia bit sequence thành nhóm 4-bit → 16 giá trị → chi-square test đánh giá distribution.
  • FIPS runs: Đếm chuỗi bit liên tiếp cùng giá trị (length 1, 2, 3, 4, 5, 6+).
  • FIPS long runs: Đo run dài nhất — quá dài hoặc quá ngắn đều là bằng chứng non-random.

Ba test bổ sung:

  • Spectral: Plot bit sequences làm coordinates trong không gian đa chiều (1–8 bits × 2–6 dims). Cluster = non-random.
  • Correlation: Tìm quan hệ thống kê giữa các bit positions khác nhau. Bắt case duplicate data.
  • Compression: Thử ZLIB compress bit sequence. Compress càng tốt → entropy càng thấp.

Effective entropy: đọc con số thế nào?

Effective entropy là tổng số bits của token đã được xác nhận "thực sự random" ở significance level đã chọn. Mỗi character position được gán số bits dựa trên kích thước character set (4 chars = 2 bits, 16 hex chars = 4 bits, v.v.).

Effective entropyĐánh giáGhi chú
~13 bitsExtremely poorPhần lớn token fixed/biased, predictable
~45 bitsOK cho 16-char hexHealthy baseline
64 bitsMinimum acceptableThreshold cho session ID chuẩn
110–115 bitsExcellentTypical 32-char hex (PHPSESSID)
128 bitsStrongestGold standard

Significance level là ngưỡng xác suất để reject giả thuyết "tokens are random". Scientific test thường dùng 1–5%, FIPS chặt hơn với 0.002–0.03%. Level càng thấp càng cần nhiều bằng chứng để tuyên bố non-random.

Sample size quyết định reliability

Đây là pitfall phổ biến nhất: stop capture quá sớm.

  • 100 tokens: Minimum để Analyze now khả dụng. Chỉ phát hiện token blatantly non-random. Pass result ở sample này KHÔNG có giá trị bảo đảm.
  • 1,000–2,000: Basic analysis. Vẫn dễ false positive.
  • 5,000+: PortSwigger khuyến nghị tối thiểu cho kết luận đáng tin.
  • 20,000: Bắt buộc cho FIPS formal compliance.

Ví dụ kinh điển từ PortSwigger: broken linear congruential generator nextToken = lastToken * 13 + 27:

  • Capture 1,000 tokens → 49 bits entropy → pass
  • Capture 3,000 tokens → 37 bits → borderline
  • Capture 6,000 tokens → 17 bits → fail
  • Tiếp tục → mọi bit đều fail

Non-random properties chỉ lộ ra khi sample đủ lớn. Nếu nghi ngờ, luôn capture tiếp.

Use cases thực chiến

Session hijacking prediction

Trong case study của Pentest People với một broken token 16-char hex, Sequencer chỉ rõ positions 5, 9, 10, 11, 12, 13, 14, 15 có confidence ≈ 0 (fixed hoặc heavily biased). Phân tích anomaly cho thấy:

  • Position 5: luôn là 4
  • Position 9: luôn là 6
  • Position 10, 11, 14, 15: chỉ trong tập {4, 7, c}
  • Position 12, 13: chỉ trong tập {2, f}

Kết quả: 2,015 / 20,000 token (10%) match predictable pattern. Keyspace thu hẹp từ 2^64 xuống ~5 tỷ, đủ để Burp Intruder với custom iterator brute-force.

Anti-CSRF token forgery

Nếu CSRF token dự đoán được, attacker forge cross-site request mà app tin là hợp lệ — bypass toàn bộ CSRF protection.

Account takeover qua password reset

Password reset token predictable → attacker trigger reset cho target user → đoán token → click link trong email giả lập của mình → chiếm tài khoản.

Manual verification với Burp Comparer

Trước khi tốn thời gian live capture, nhanh-check bằng Burp Comparer:

  1. Intercept 2 login responses → right-click → Send to Comparer
  2. Chọn Words hoặc Bytes comparison
  3. Comparer highlight Modified/Deleted/Added → xác nhận token thực sự đổi giữa các request

Limitations & pitfalls cần biết

Đây là phần hầu hết tutorial bỏ qua, nhưng là phần quan trọng nhất:

  1. Statistical randomness ≠ unpredictability. Hash của số tăng dần (ví dụ md5(i++)) có thể PASS mọi FIPS test nhưng vẫn predictable hoàn toàn nếu attacker biết algorithm. Sequencer không phát hiện được determinism dạng này.
  2. Fail test ≠ exploitable. Trong case broken BADSESSID, sau khi narrow keyspace vẫn còn ~5 tỷ possible keys. Nếu app có strong session timeout, có rate limit, hoặc kiểm tra IP binding, attack thực tế vẫn bất khả thi.
  3. Small sample lừa dối. 1,000 tokens pass không đảm bảo gì — xem ví dụ LCG bên trên.
  4. Session regeneration requirement. Target request phải issue TOKEN MỚI mỗi lần repeat. Thường là request không mang cookie, hoặc hit logout endpoint. Nếu reuse cookie, capture sẽ ra toàn token identical — kết quả vô nghĩa.
  5. Production systems. Live capture có thể gửi hàng ngàn request trong vài phút. PortSwigger explicitly cảnh báo: chỉ dùng trên non-production systems đến khi fully familiar. Nguy cơ: rate limit, account lock, WAF trigger, crash app.

Cheat sheet cho pentester

Quy tắc đọc kết quả:

  • Large sample FAIL → generator definitely non-random; exploitability maybe.
  • Large sample PASS → generator maybe random; exploitability maybe.
  • Không bao giờ kết luận chỉ dựa trên pass/fail — luôn xem Character-level anomalies để biết how token lỗi.

Checklist nhanh:

  • ✓ Đã xác nhận request issue token mới mỗi lần
  • ✓ Đã capture ≥ 5,000 tokens (20,000 cho FIPS)
  • ✓ Đã review Character-level analysis + Summary tab tìm anomalies
  • ✓ Đã verify với Burp Comparer token thực sự unique
  • ✓ Đã document entropy + significance level trong report

What's next

Sequencer là một trong những tool bị underused nhất trong Burp Suite — chủ yếu vì session management của framework hiện đại (Laravel, Django, Express, Spring) đã dùng CSPRNG mặc định an toàn. Nhưng hai kịch bản sau Sequencer vẫn tỏa sáng:

  1. Custom session logic. Khi team dev tự viết token generator (homegrown auth, legacy PHP, custom JWT signer) — khả năng cao có flaw.
  2. High-security audit. Banking, gambling, healthcare cần bằng chứng FIPS-compliant rằng token generator không có flaw nào, kể cả flaw không exploitable trong thực tế.

Nguồn: Hacking Articles — Burp Suite for Pentester: Burp Sequencer, PortSwigger Documentation, Burp Sequencer 101, Pentest People — A Quick Burp Suite Sequencer Lab.