Data Driven web hacking Manual testing. 데이터를 기반으로 웹 해킹에 대한 테스팅...

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


Hunt?

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

기본적으로 정의된 데이터 이외에도 테스터가 직접 선정해서 넣어둘 수 있습니다.

제가 이해한바로 한마디로 정리하면..

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


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

Install Burp..

Burp 에 설치하는 내용으로 작성합니다. ZAP은 사용하시는 분이 있으시다면 직접 해보시길!
우선 github에서 클론을 떠줍니다.

#> 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 관련 코드와 공통으로 사용되는 라이브러리 코드가 있습니다.
지금은 Burp에 설치하는 것이니 hunt_methodology.py, hunt_scanner.py 가 중점적으로 사용됩니다.

각각 파이썬 코드에 대한 기능(?)은 아래에서 설명드리도록 하겠습니다.

아.. 그리고 python 기반 Extension이기 때문에 jython이 필요합니다.
(어차피 대다수 Extension 이 jython, jruby 쓰는 경우가 많으니 세팅해두는게 정신건강에 이롭습니다. )


Extension에서 각각 hunt_methodology.py, hunt_scanner.py를 로드해줍니다. 두 파일은 별개의 모듈로 동작하기 떄문에 필요에 따라 설치해주시면 될 것 같습니다.

HUNT Scanner

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

좌측 탭으로 부터 공격 벡터별 주요 파라미터를 식별하고, 우측에서 Request/Response를 봅니다.
Repeater로 불러서 테스트하면 굿

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

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

HUNT Methodology

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


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

Conclusion

광범위한 타겟을 대상으로 하는 헌터들이나 많은 서비스들을 상시로 진단할 수 있는 권한이 있는 분석가에게는 쓸만한 확장 기능이지 않을까 싶습니다. 물론 누구나에게 유용하겠지만, 개인적인 관점으로는 그렇습니다..

저 툴을 바로 쓰는 것 보단, 노하우.. 즉 경험을 녹여서 옵션을 반영하면 훨씬 좋은 도구가 될 것 같습니다. 경험과 센스, 그리고 이를 보조해주는 도구로 재미있고 지루한 분석 시간을 알차게 보내봅시다 ;)


댓글 5개:

  1. 오오 편리할 것 같네요 -_-b
    파라미터 이름으로만 판별하는게 아니라 전송되는 값을 가지고 판별하는 기능도 있으면 좋을 것 같네요
    좋은 포스팅 감사합니다 평소에도 글 잘보고있습니다 :)

    답글삭제
    답글
    1. 헛 루비야님이신가요..
      저도 같은 생각입니다, 시간나면 짜보고 괜찮으면 pull 날려봐야곘네요.

      아무튼 댓글주셔서 감사합니다 :)

      삭제
  2. 제가 찾던 것과 매우 유사한 듯 합니다 ㅋ 테스트를 좀 해봐야겠어요 ^^

    답글삭제
    답글
    1. 아직 HUNT에서 안써본 부분이랑 실제 적용해서 써봤을때 경험들 정리해서 추가해야하는데.. 최소 주말을 되어야할 것 같네요. 테스트해보시고 좋은 부분있으면 공유해주세요!!

      삭제
  3. Bugs탭은 history, repeater 등에서 ContextMenu(우클릭)을 통해 bugs로 보낼 수 있습니다. 항목별로 실제요청을 정리해둘 수 있다 정도군요!

    답글삭제