Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
RatRace — 웹 애플리케이션, API 및 현대 서비스에서 경쟁 조건을 체계적으로 탐지하고 악용하기 위한 경량 CLI 도구입니다. | Kitploit
도구/GitHubGitHub/bogdanticu88/ratrace
Vulnerability ScannersExploitationScripting & AutomationAPI Security TestingWeb SecurityFuzzingPenetration TestingDevSecOps
GitHubbogdanticu88/ratrace

RatRace

웹 애플리케이션, API 및 현대 서비스에서 경쟁 조건을 체계적으로 탐지하고 악용하기 위한 경량 CLI 도구입니다.

저장소 보기
1045개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

RatRace

RatRace - 경쟁 상태 테스트 도구 키트

웹 애플리케이션, API 및 현대 서비스에서 경쟁 상태(race condition)를 체계적으로 탐지하고 악용하기 위한 경량 CLI 도구입니다.



Go Version License Status Platform Security Build


해결하는 문제

경쟁 상태는 현대 애플리케이션에서 가장 영향력이 큰 보안 취약점 중 하나이지만, 자동화 스캐너로는 거의 탐지되지 않습니다. Nuclei, ffuf, sqlmap과 같은 도구는 정적 취약점을 찾는 데 탁월하지만, 동시성 기반 문제에는 근본적으로 무감각합니다.

오늘날 침투 테스터는 각 작업마다 임시 스크립트를 직접 작성하거나 경쟁 상태 테스트를 완전히 건너뛰어야 하는 선택에 직면합니다. 두 옵션 모두 확장 가능하거나 전문적이지 않습니다.

RatRace는 이를 해결하여 정교하고 반복 가능한 경쟁 상태 테스트 워크플로우를 제공합니다. 임시 스크립트에 불과했던 작업을 CI/CD 파이프라인에 통합되고 전문적인 보고서를 생성하는 체계적인 프로세스로 전환합니다.

실제 영향

경쟁 상태 취약점은 영향력이 큰 영역에서 자주 발생합니다.

  • 전자상거래: 중복 주문, 재고 과다 판매, 할인 중복 적용
  • 핀테크: 이중 송금, 경쟁 기반 권한 상승, 트랜잭션 재생
  • 인증: 토큰 소진, 세션 고정, 동시 비밀번호 재설정
  • 속도 제한: 동시 요청을 통한 우회, 분산 남용

이러한 버그는 버그 바운티 프로그램에서 항상 가장 높은 보상을 받습니다. 이는 비즈니스 수익과 고객 신뢰를 직접적으로 위협하기 때문입니다.


핵심 기능

템플릿 기반 테스트

경쟁 시나리오를 YAML로 한 번 정의하고 여러 프로젝트에서 재사용하세요. 형식은 Nuclei 템플릿과 유사하여 친숙합니다.

root@kitploit:~
id: checkout-race
info:
  name: Checkout Duplicate Order Race
  severity: critical
race:
  mode: burst
  concurrency: 20
  request:
    method: POST
    path: /api/v1/checkout
    headers:
      Authorization: "Bearer {{session}}"
    body: '{"item_id": "SKU-001"}'
validate:
  follow_up:
    method: GET
    path: /api/v1/orders?user={{user_id}}
  expect:
    json_field: "orders.length"
    condition: equals
    value: 1

여러 공격 모드

Burst 모드 — 고루틴 기반 병렬 요청, 정밀 동기화 (안정적, 프로덕션 준비 완료)

  • 마이크로초 수준으로 동기화되는 N개의 고루틴 실행
  • 대부분 5ms 이상의 경쟁 윈도우를 가진 애플리케이션에 이상적

Last-Byte Sync — HTTP/1.1 TCP 수준 공격 (구현 완료, 테스트 단계)

  • 모든 연결을 요청 본문의 마지막 바이트에서 유지
  • close() 브로드캐스트를 통해 밀리초 미만 윈도우에 대해 해제
  • 로드 밸런싱 및 속도 제한 대상에 효과적

Single-Packet — HTTP/2 프레임 기반 공격 (구현 완료, 테스트 단계)

  • 모든 요청을 단일 TCP 세그먼트로 전송
  • 멀티플렉싱을 활용하여 거의 동시에 서버에 도달
  • 일부 속도 제한 메커니즘 우회

지능형 검증

RatRace는 자동으로:

  • 응답 지문을 상태 코드 + 본문 해시로 수집하여 이상 징후 탐지
  • 결과를 클러스터링하여 통계적으로 유의미한 차이 식별
  • 신뢰도 점수를 이상 빈도 및 크기에 기반하여 계산
  • 후속 요청을 실행하여 상태 변경 확인 (예: "항목이 실제로 두 번 구매되었는가?")
  • 조건부 검증 지원: equals, not_equals, greater_than, contains 연산자

워크플로우 통합

기존 요청 가져오기:

root@kitploit:~
# curl 명령어에서
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o template.yaml

# Burp에서 내보낸 HAR 파일에서
ratrace import --har session.har -o template.yaml

CI/CD 자동화:

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # 종료 코드 10 = 경쟁 상태 발견, 0 = 이상 없음

전문 보고서 생성:

root@kitploit:~
# 자동화용 JSON
ratrace race -u $TARGET -t template.yaml -o results/

# HTML 보고서 (V2 계획)
ratrace report --input results.json --format html

설치

소스에서 설치

root@kitploit:~
git clone https://github.com/bogdanticu88/ratrace.git
cd ratrace
go build ./cmd/ratrace
./ratrace --help

요구 사항: Go 1.24+

Docker

root@kitploit:~
docker build -t ratrace:latest .
docker run --rm -it ratrace:latest race -u https://api.example.com -t template.yaml

사용법

빠른 시작: 경쟁 테스트 실행

root@kitploit:~
# 1. curl에서 가져오기 또는 기존 템플릿 사용
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml

# 2. 경쟁 실행
ratrace race -u https://api.example.com -t checkout.yaml -m burst -c 20

# 3. 결과 검토
# 출력 예시:
# 🔴 [CRITICAL] Checkout Duplicate Order Race
#     Anomaly Rate: 91.7%
#     Confidence:   84%

예제: 전자상거래 체크아웃 경쟁

root@kitploit:~
ratrace race \
  -u https://shop.example.com \
  -t examples/templates/checkout-race.yaml \
  -m burst \
  -c 25 \
  --output results/

예제: 무음 모드 (CI/CD 용)

root@kitploit:~
# 상세 로그 없이 실행, 의미 있는 종료 코드 반환
ratrace race -u https://api.example.com -t template.yaml --silent

# 종료 코드 확인
if [ $? -eq 10 ]; then
  echo "경쟁 상태 발견!"
  exit 1
fi

명령어 참조

race — 경쟁 공격 실행

root@kitploit:~
ratrace race -u <url> -t <template> [options]

옵션:
  -m, --mode string          burst|lastbyte|singlepacket (기본값: 템플릿 설정)
  -c, --concurrency int      고루틴 개수 (기본값 20)
  -H, --header strings       사용자 정의 헤더 (반복 가능)
  -x, --proxy string         요청용 프록시 URL
  -o, --output string        결과 출력 디렉터리
  --timeout duration         요청 타임아웃 (기본값 10s)
  --insecure                 TLS 인증서 검증 건너뛰기
  --dry-run                  템플릿만 파싱하고 종료
  --silent                   로그 숨기고 결과만 표시

import — 요청을 템플릿으로 변환

root@kitploit:~
ratrace import [--curl <command> | --har <file>] -o <output.yaml>

기존 요청(curl 명령어 또는 HAR 내보내기)을 RatRace 템플릿으로 변환합니다.
기존 워크플로우와 통합하는 데 유용합니다.

report — 보고서 생성

root@kitploit:~
ratrace report --input results.json --format [html|json] --output report.html

경쟁 테스트 결과에서 사람이 읽을 수 있는 보고서를 생성합니다.

ratelimit — 속도 제한 우회 테스트

root@kitploit:~
ratrace ratelimit -u <url> -c <concurrency>

엔드포인트가 동시 속도 제한 우회에 취약한지 테스트합니다.

템플릿 형식

템플릿은 경쟁 시나리오를 정의하는 YAML 파일입니다. 전체 참조:

root@kitploit:~
id: unique-identifier
info:
  name: "Human-readable name"
  severity: critical|high|medium|low|info
  tags: [tag1, tag2]

race:
  mode: burst|lastbyte|singlepacket
  concurrency: 20
  request:
    method: POST|GET|PUT|DELETE|PATCH
    path: /api/endpoint
    headers:
      Authorization: "Bearer {{token}}"
      Custom-Header: "value"
    body: '{"json": "body", "user": "{{user_id}}"}'

validate:
  follow_up:
    method: GET
    path: /api/orders?user={{user_id}}
  expect:
    json_field: "orders.length"
    condition: equals|greater_than|contains|not_equals
    value: 1

변수 ({{name}} 플레이스홀더 사용):

  • 명령줄 헤더를 통해 대체되거나 템플릿에 하드코딩됨
  • 예: ratrace race ... -H "Authorization: Bearer {{session_token}}"

출력

터미널 출력

깔끔하고 색상이 적용된 로그로 테스트 진행 상황을 보여줍니다:

root@kitploit:~
[INF] Loading template  path=checkout-race.yaml
[INF] Template loaded  id=checkout-race  mode=burst
[RUN] Firing burst attack  concurrency=20
[INF] All requests completed  total=20
[RUN] Clustering responses  baseline=17  anomalous=3
[RACE] Race condition detected  anomaly_rate=15%  confidence=94%
[CONF] Validation passed  field=orders.length  expected=1
[INF] Race test complete  findings=1

Templates: 1  Requests: 20  Time: 3.2s

🔴 [CRITICAL] Checkout Duplicate Order Race
    Anomaly Rate:  15.0%
    Confidence:    94%
    Status Diff:   201 → 200
    Field Diffs:   order_id (100 → 101)

JSON 결과

전체 결과는 자동화 및 보관을 위해 results_<timestamp>.json에 저장됩니다:

root@kitploit:~
{
  "TemplateID": "checkout-race",
  "Target": "https://api.example.com/api/v1/checkout",
  "Mode": "burst",
  "Concurrency": 20,
  "TotalRequests": 20,
  "Duration": 3200000000,
  "Findings": [
    {
      "TemplateName": "Checkout Duplicate Order Race",
      "Severity": "critical",
      "AnomalyRate": 0.15,
      "Confidence": 0.94,
      "Diff": {
        "StatusChanged": true,
        "BaselineStatus": 201,
        "AnomalousStatus": 200
      }
    }
  ]
}

종료 코드

CI/CD 통합 및 자동화에 사용됩니다:

코드의미
0성공 — 경쟁 상태 없음
3데이터 오류 — 템플릿 찾을 수 없음, 파싱 오류
4실행 오류 — 네트워크 실패, 엔진 오류
10경쟁 상태 발견 — 조치 필요
11속도 제한 우회 확인됨
12이상 징후 탐지되었으나 검증 불명확

개발

빌드

root@kitploit:~
make build              # 바이너리 컴파일

테스트

root@kitploit:~
make test              # 모든 테스트
make test-unit         # 단위 테스트만
make test-int          # 통합 테스트만
make coverage          # 커버리지 보고서 (HTML)

린팅 및 품질

root@kitploit:~
make lint              # 린터 실행

예제

root@kitploit:~
make run-race          # 빌드 후 예제 실행

아키텍처

root@kitploit:~
cmd/ratrace/
  └── main.go           진입점, CLI 정의

internal/
  ├── cmd/              하위 명령 구현체
  ├── engine/           경쟁 공격 모드 (burst, lastbyte, singlepacket)
  ├── validator/        응답 클러스터링, 차이 분석, 후속 확인
  ├── importer/         HAR 및 curl 파서
  ├── reporter/         JSON 및 HTML 출력
  ├── template/         YAML 파싱 및 템플릿 처리
  ├── log/              구조화된 색상 로깅
  └── models/           공유 데이터 타입

상태 및 로드맵

V1 (현재)

  • ✅ 고루틴 동기화를 이용한 버스트 모드
  • ✅ 응답 클러스터링 및 이상 징후 탐지
  • ✅ 신뢰도 점수
  • ✅ 조건을 포함한 후속 검증
  • ✅ HAR/curl 가져오기
  • ✅ JSON 출력
  • ✅ CI/CD를 위한 무음 모드
  • ⏳ Last-Byte sync 모드 (구현 완료, 테스트 필요)
  • ⏳ Single-packet 모드 (구현 완료, 테스트 필요)

V2 (계획)

  • HTML 보고서 생성
  • PoC 스크립트 생성
  • 속도 제한 우회 전문화
  • Burp Suite XML 가져오기
  • gRPC 경쟁 테스트
  • WebSocket 경쟁 테스트
  • 템플릿 저장소 및 커뮤니티 템플릿
  • Nuclei 통합

기여

이슈, PR, 템플릿 기여를 환영합니다. 다음 사항을 준수해 주세요:

  • 코드는 기존 코드베이스 패턴을 따라야 함
  • 테스트 통과: make test
  • 린터 통과: make lint

라이선스

MIT


면책 고지

RatRace는 승인된 보안 테스트, 버그 바운티 프로그램 및 침투 테스트를 위해 설계되었습니다. 소유하거나 명시적인 서면 허가를 받은 시스템에서만 사용하십시오. 타인의 시스템을 무단 테스트하는 것은 불법입니다.


저자

Bogdan Ticu — 보안 연구 및 엔지니어링

이슈, 질문 또는 보안 보고는 GitHub Issues로 제출해 주세요.

도구 다운로드