ZAP의 새로운 Report Add-on, ‘Report Generation’

오늘은 최근 ZAPCON 2021에서 공개된 Report Add-on인 Report Generation에 대해 이야기할까 합니다.

ZAP의 리포팅 기능

ZAP은 OWASP에서 상당히 오래된 프로젝트 중 하나로 예전 도구들이 지향했던 HTML/PDF 등의 Report 기능을 지원하고 있었습니다. 물론 여기서 사용되는 UI/UX는 썩 그렇게 좋단 느낌은 없었지요. 그리고 시대가 점점 변하여 단순히 HTML/PDF 등의 리포트 뿐만 아니라 Markdown 등의 지원도 필요하고 디자인적인 변화도 필요했기에 ZAP팀은 새로운 Reporting 기능을 위해 Add-on을 만들게 되었고 그게 오늘 이야기드릴 Report Generation입니다.

Report Generation

위에서 간략하게 이야기드렸듯이 Report generation은 여러 포맷의 리포팅 지원과 디자인적인 요소의 변화, 그리고 추가 기능을 위해 만들어진 Add-on입니다. 제공해주는 기능/설정들을 몇가지 살펴봅시다.

Fields Name Description
Scope Report title 리포트의 제목을 지정합니다.
  Report Name 리포트 파일 이름을 지정합니다. (e.g 2021-06-27-ZAP.html)
  Report Directory 리포트가 저장될 경로를 지정합니다.
  Description 설명을 추가합니다.
  Contexts Context를 지정합니다. (ZAP의 Context, Burp의 Scope와 대응됨)
  Sites 대상 사이트를 선택합니다. (원하는 사이트들만 포함되도록)
  Generate If No Alert 결과가 없어도 리포트를 만들지 정합니다.
  Display Report Generate 시 파일을 바로 열지 정합니다.
Template Template Template 을 지정합니다,
- Tranditional HTML Report
- Tranditional HTML Report with Request and Response
- Tranditional XML Report
- Tranditional PDF Report
- Tranditional Markdown Report
  Theme 색상 테마를 지정합니다. (Light or Dark)
  Sections 포함할 섹션을 선택합니다.
- Chart
- Alert Count
- Instance Count
- Passing Rules
- Alert Details
- Statistics
Filter Include Risks 포함할 Risk를 지정합니다.
- High
- Medium
- Low
- Informational
  Include Confidences 포함할 Confidence를 지정합니다.
- Confirmed
- High
- Medium
- Low
- False Positive
Options Report Name Pattern 리포트 네임 패턴을 지정합니다.
(e.g {{yyyy-MM-dd}}-ZAP-Report-[[site]])
  Template Directory Template 디렉토리를 지정합니다.

사용해보기

Report Generation을 사용하는 방법은 크게 2가지가 있습니다.

  • Menu bar > Report > Generate Report
  • Tool bar > Generate Report Icon

진입 시 아래와 같이 Generate Report 팝업이 발생하며 위에서 이야기드렸던 기능/설정들을 지정할 수 있습니다.

위에 표 보시면서 설정하면 어려울 것 없습니다 😁

예시로 Template에서 Tranditional HTML Report with Request and Response 으로 선택한 후 Generate Report를 해보면..

개인적으로 Dark mode가 눈에 편해서 적용했지만, 그리 잘 만든 Dark mode는 아닙니다.

그쵸? 😱

이런식으로 리포트가 생성됩니다. 그런데 사실 디자인이던 내용이던 기존 리포트랑도 크게 달라진게 없긴합니다 😭 그럼 뭐가 중요할까요?

ZAP Automation과의 연계성

바로 Automation과의 연계성입니다. ZAP Automation은 제가 지난 포스트에서 설명했듯이 ZAP의 자동화 테스팅/환경 등을 위한 기능이고, 개인적으로 ZAP의 방향성을 확실하게 잡아가는 것 같아서 중요하고 앞으로도 잘 사용될 것 같은 기능이였는데요. 오늘 Report Generation을 주제로 글을 쓰게 된 이유도 이 ZAP Automation 과의 연계성에서 있습니다.

ZAP Automation은 YAML 파일 기반의 Configuration으로 ZAP을 미리 세팅된 환경으로 구동한다던가, 바로 스캔 및 결과 처리까지 진행하게 해주는 기능인데 이 때 리포트 부분에 이 Report Generation이 영향을 줄 수 있습니다.

아래와 같이 automation config에 report type으로 선언해주시면 automation 과정에서 지정된 포맷에 따라서 리포트 생성 과정까지 진행할 수 있게 됩니다.

- type: report
  parameters:
    template:
    reportDir:
    reportFile:
    reportTitle:
    reportDescription:
    displayReport:
  risks:
    - high
    - medium
    - low
    - info
  confidences:
    - high
    - medium
    - low
    - falsepositive
  sections:

물론 JSON 포맷의 결과를 받아서 별도로 처리하는 경우에는 크게 필요하지 않을 수 있겠지만, 파일 기반의 리포트를 사용할 땐 미리 지정된 템플릿 또는 커스텀 템플릿을 이용해서 원하는 형태의 리포트를 생성할 수도 있습니다. 이 부분은 정말 매력적인 부분이네요. (물론 전 JSON을 파싱하는 케이스입니다..😁)

Conclusion

아무튼 오늘 Report Generation에 대해서 살펴봤는데요, ZAP 자체가 몇년전부터 데몬화, CI/CD에 쉽게 연동될 수 있도록 방향성을 잡은건 알고 있었는데 점점 윤곽이 좀 보이는 느낌이네요. 물론 잘 커스텀한다면 분석 도구로써도 BurpSuite Pro의 버금가는 성능을 기대할 수 있긴 합니다. (전 ZAP으로 노선 잡았어요)

References