EN

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입니다. 제공해주는 기능/설정들을 몇가지 살펴봅시다.

FieldsNameDescription
ScopeReport title리포트의 제목을 지정합니다.
Report Name리포트 파일 이름을 지정합니다. (e.g 2021-06-27-ZAP.html)
Report Directory리포트가 저장될 경로를 지정합니다.
Description설명을 추가합니다.
ContextsContext를 지정합니다. (ZAP의 Context, Burp의 Scope와 대응됨)
Sites대상 사이트를 선택합니다. (원하는 사이트들만 포함되도록)
Generate If No Alert결과가 없어도 리포트를 만들지 정합니다.
Display ReportGenerate 시 파일을 바로 열지 정합니다.
TemplateTemplateTemplate 을 지정합니다,
- 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
FilterInclude Risks포함할 Risk를 지정합니다.
- High
- Medium
- Low
- Informational
Include Confidences포함할 Confidence를 지정합니다.
- Confirmed
- High
- Medium
- Low
- False Positive
OptionsReport Name Pattern리포트 네임 패턴을 지정합니다.
(e.g {{yyyy-MM-dd}}-ZAP-Report-[[site]])
Template DirectoryTemplate 디렉토리를 지정합니다.

사용해보기

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