BugCrowd HUNT - 버그 바운티를 위한 ZAP/Burp Extension

오늘은 유명한 버그바운티 사이트 중 하나인 BugCrowd에서 만들고 배포하는 HUNT에 대한 이야기를 할까 합니다.

HUNT

BugCrowd에서 만든 Bug hunting을 도와주는 Extension으로 분석에 많이 사용되는 Burp, ZAP에 확장 기능으로 설치할 수 있습니다. Passive scan의 성향을 띄며 Proxy를 통해 수집되는 데이터 중 각 공격 벡터에서 많이 쓰이는 파라미터들을 식별해서 알려줍니다.

기본적으로 정의된 데이터 이외에도 테스터가 직접 선정해서 넣어둘 수 있습니다. 그래서 한마디로 정리하면..

“공격에 많이 사용되는 파라미터를 식별해서 수동으로 테스트할 수 있도록 제공해준다.”

버그바운티에선 스캐너 같은 자동화 도구 사용이 어렵기에, 이 점을 잘 반영한 것 같네요.

Installation

우선 HUNT Github repo를 클론합니다.

git clone https://github.com/bugcrowd/HUNT

대강 구조를 보면 이렇습니다.

.
├── Burp
│   ├── conf
│   │   ├── checklist.json
│   │   ├── issues.json
│   │   ├── owasptg.json
│   │   └── wahh.json
│   ├── hunt_methodology.py
│   ├── hunt_scanner.py
│   └── lib
│       ├── __init__.py
│       ├── close_tab.py
│       ├── data.py
│       ├── issue_listener.py
│       ├── issues.py
│       ├── link_listener.py
│       ├── menu_action_listener.py
│       ├── message_controller.py
│       ├── methodology_settings_action.py
│       ├── methodology_tsl.py
│       ├── methodology_view.py
│       ├── scanner_issue.py
│       ├── scanner_table_listener.py
│       ├── scanner_table_model.py
│       ├── scanner_table_models.py
│       ├── settings_action.py
│       ├── tsl.py
│       └── view.py
├── README.md
├── ZAP
│   └── scripts
│       └── passive
│           ├── CMDi.py
│           ├── Debug & Logic Parameters.py
│           ├── File Inclusion.py
│           ├── IDOR.py
│           ├── SQLi.py
│           ├── SSRF.py
│           └── SSTI.py
├── images
│   ├── logo.png
│   ├── methodology.png
│   └── scanner.png
├── license
└── slides
    ├── AppSecUSA 2017 - HUNT.pdf
    ├── DEF CON 25 - HUNT.pdf
    └── NBT4 - HUNT.pdf
   

Burp, ZAP 각각 코드로 분리되어 있고, 둘다 python 기반의 스크립트입니다. 그래서 각각 도구에서 아래와 같은 세팅이 필요합니다.

  • Burpsuite: jython 설치 및 Burp Env 설정
  • ZAP: Marketplace 에서 python script engine 설치

Burp 기준으론 Extension에서 각각 hunt_methodology.py, hunt_scanner.py를 로드해줍니다. 두 파일은 별개의 모듈로 동작하기 떄문에 필요에 따라 설치해주시면 될 것 같습니다. (ZAP에서는 그냥 Script > Passive Rules에서 필요하신 것만 로드하면 됩니다.)

For Burpsuite

HUNT Scanner

Scanner는 HUNT에 대해 설명드렸던 바로 그 파라미터에 대해 체크해주는 기능입니다. 프록시를 통해 수집된 많은 데이터 중 보편적으로 공격에 잘 사용되는 파라미터 명과 동일하거나, 유사한 경우 별도의 탭쪽으로 넘겨주어 분석가가 직접 보고 판단할 수 있도록 유도해줍니다. 저는 대체로 프록시와 Flow 확장기능쪽 이력 기준으로 많이 보는데, HUNT의 경우 필요한 파라미터 위주로 우선적으로 볼 수 있어 많은 로그에서 놓치는 부분은 조금 줄 것 같습니다.

좌측 탭으로 부터 공격 벡터별 주요 파라미터를 식별하고, 우측에서 Request/Response를 봅니다.

사실 작은 사이트 하나만 보는 경우에는 기껏해야 몇만개 정도 History이니 눈으로 볼만한데, 규모가 커지고 대상이 많아 질수록 집중력은 떨어지고, 놓치는 부분들이 생기기 마련이죠. 이를 어느정도 잡아줄 수 있다는 것 만으로도 이 확장 기능의 가치가 있다고 생각합니다 :)

Advisory 탭을 통해서 CheatSheet나 방법론 등도 바로 링크가 가능합니다.

HUNT Methodology

어찌보면 사이드 기능인 것 같지만, 플로우나 방법을 정리하면서 봐야하는 케이스의 경우 유용하게 쓰일 것 같습니다.

복잡한 시스템을 진단하다보면 뭐가뭔지 헷갈리기 때문에 플로우나 내용, 이력등을 정리해서 보면서 같이 보는데 이런 경우 Methodology쪽으로 정리해두면, 같이 볼 수 있어서 조금은 편할 것 같습니다. (물론 메모 자체의 기능은 다른 어플리케이션이 압도적으로 좋겠지요)

다만 Bugs 탭의 경우 아직 기능 파악을 하지 못했는데, 추측컨데 HUNT로 부터 데이터를 받아서 나타내질 것 같은데요, 그렇다면 연결지어 보기에 좋을 것 같네요.

For ZAP

ZAP에선 별도로 기능이 나뉘어져 있진 않고, Passive rules를 통해 주요 파라미터가 확인되면 Alerts로 넘겨줍니다.

url 이란 이름의 파라미터는 SSRF나 Open Redirect, XSS의 가능성을 많이 가지고 있죠

Conclusion

개인적으로 정말 좋은 컨셉의 도구라고 생각합니다. 광범위한 타겟을 대상으로 테스트하는 버그바운티 헌터나 적은 시간에 최대한의 효율을 뽑으면서 일해야하는 시큐리티 엔지니어에게 쓸만한 Attack surface를 제공해준다는 것 자체가 큰 도움이되겠죠.

물론 그냥 도구에 의존하기 보단 각 개개인의 노하우와 경험, 그리고 센스를 보조해주는 느낌으로 사용하시면 가장 좋을 것 같네요 😊