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
를 해보면..
이런식으로 리포트가 생성됩니다. 그런데 사실 디자인이던 내용이던 기존 리포트랑도 크게 달라진게 없긴합니다 😭 그럼 뭐가 중요할까요?
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으로 노선 잡았어요)