Burp로 Rate Limiting 우회 테스트와 자동화
Burp를 사용해 Rate Limiting 검증 방법과 우회 기법, 로그·세션 처리 고려사항 및 자동화된 공격 시뮬레이션 구성법을 초보자 관점에서 정리한 개요
목차
개요
이 글은 Burp를 활용해 Rate Limiting을 검증하고 우회 시나리오를 자동화하는 방법을 설명한다. 처음 접하는 사람도 이해할 수 있도록 기본 개념부터 설정, 테스트 흐름, 자동화 예제까지 단계별로 정리한다. 보안 테스트는 허가된 환경에서만 수행해야 한다.
Rate Limiting 기초
Rate Limiting의 목적
Rate Limiting은 서비스 남용과 과부하를 막기 위한 방어 수단이다. 주로 IP, 사용자 계정, API 키 단위로 요청수를 제한한다. 올바른 구현은 정상 트래픽을 유지하면서 악의적 요청을 방어한다.
우회 가능성의 유형
- IP 회피: 프록시나 토어, 분산 요청으로 제한을 회피
- 식별자 변조: 세션 토큰, User-Agent, X-Forwarded-For 변경
- 속도 분산: 여러 클라이언트로 요청을 분산하여 제한 초과를 방지
- 지연 회피: 요청 간 랜덤한 딜레이 적용으로 탐지 회피
Burp로 Rate Limiting 테스트 준비
환경과 권한
테스트는 명확한 범위와 허가를 받은 대상에서만 수행한다. 대상 API의 엔드포인트, 인증 흐름, 로그 정책을 사전에 확인한다.
Burp 기본 설정
- Proxy를 통해 트래픽을 캡처한다.
- Target에서 중요한 엔드포인트를 스코핑한다.
- Options에서 연결 타임아웃과 동시 연결 수를 적절히 조정한다.
테스트 전략
단계별 접근
- 관찰: 정상 요청의 응답 헤더와 상태코드, 제한 관련 헤더(RateLimit-Limit 등)를 확인한다.
- 증명: 제한을 의도적으로 초과해 한계값을 확인한다.
- 우회 탐색: 식별자 변경, IP 분산, 요청 간격 조정 등을 시도한다.
- 자동화: 반복 시나리오를 스크립트나 Burp 확장으로 자동 실행한다.
중요 포인트
로그와 응답 패턴을 주의 깊게 본다. 서버가 느리게 반응하거나 상태코드가 일관되게 변한다면 방어 로직을 파악할 수 있다.
Burp 도구 활용법
Intruder와 Request Engine
Intruder는 페이로드 주입과 동시 요청 테스트에 유용하다. 위치 설정과 페이로드 전송 속도를 통해 제한 동작을 관찰한다. 스레드 수는 서버 정책을 고려해 조정한다.
Repeater와 Sequencer
Repeater로 수동 탐색과 헤더 변조 실험을 한다. Sequencer는 토큰 엔트로피와 예상 가능성을 검사해 세션 기반 제한 회피 가능성을 평가한다.
확장(Extensions) 활용
Burp의 확장 기능을 이용하면 자동화가 쉬워진다. 예를 들어 Burp Suite의 API, BApp Store의 반복 요청 도구, 또는 사용자 스크립트를 결합해 시뮬레이션을 제작한다.
우회 테스트 자동화 실전 예제
목표
간단한 자동화 스크립트로 여러 식별자와 지연을 적용해 제한 우회 가능성을 확인한다. 아래 예제는 원리 이해용이며 실제 환경에서는 적법한 허가가 필요하다.
샘플 Python 스크립트
다음 코드는 여러 토큰과 지연을 조합해 요청을 순차적으로 보낸다.
import requests
import time
url = "https://example.com/api/endpoint"
tokens = ["token1", "token2", "token3"]
delays = [0.2, 0.5, 1.0]
for i, t in enumerate(tokens):
headers = {"Authorization": f"Bearer {t}", "User-Agent": "Burp-Test"}
resp = requests.get(url, headers=headers)
print(i, resp.status_code, resp.headers.get('Retry-After'))
time.sleep(delays[i % len(delays)])
Burp와 연동하기
- 위 스크립트를 Burp Proxy를 통해 실행하면 요청을 캡처해 상세 로그를 얻을 수 있다.
- Intruder를 사용하면 동시성 테스트와 페이로드 변형을 쉽게 수행할 수 있다.
- Extender API로 반복 시나리오를 플러그인 형태로 등록하면 더 복잡한 흐름도 자동화 가능하다.
결과 해석과 보고
테스트 결과는 상태코드 변화, 응답 헤더, 로그 타임스탬프를 기준으로 판단한다. 우회가 성공하면 어떤 기법으로 제한을 회피했는지 명확히 기록한다. 권장 조치와 재현 단계도 포함한다.
마무리
Burp를 활용한 Rate Limiting 테스트는 관찰, 검증, 우회 탐색, 자동화의 순서로 접근하면 효율적이다. 항상 승인된 범위 내에서 수행하고, 결과를 기반으로 실무적 완화책을 제시하는 것이 목표다.