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 location→Configure - Window Define Custom token location mở ra với response của request gốc
- Chọn
Define start & endhoặcExtract 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 để reviewCopy Tokens— dump ra clipboard để verify valuesAuto analyze— update kết quả real-timeAnalyze 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 bits | Extremely poor | Phần lớn token fixed/biased, predictable |
| ~45 bits | OK cho 16-char hex | Healthy baseline |
| 64 bits | Minimum acceptable | Threshold cho session ID chuẩn |
| 110–115 bits | Excellent | Typical 32-char hex (PHPSESSID) |
| 128 bits | Strongest | Gold 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 nowkhả 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:
- Intercept 2 login responses → right-click → Send to Comparer
- Chọn
WordshoặcBytescomparison - 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:
- 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. - 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.
- Small sample lừa dối. 1,000 tokens pass không đảm bảo gì — xem ví dụ LCG bên trên.
- 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.
- 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:
- Custom session logic. Khi team dev tự viết token generator (homegrown auth, legacy PHP, custom JWT signer) — khả năng cao có flaw.
- 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.