ZAP OAST 미리 구경하기 (for OOB)
Offensive Security Engineer, Developer and H4cker.
ZAP developers에 컨텐츠 하나가 공유되었는데요 바로 OAST에 대한 내용이였습니다. OAST는 이번에 ZAP core team(akshath)에서 신규로 개발중인 AddOn입니다. 기존 zap callback 기능에 burp suite의 collaborator 와 같이 out-of-band를 쉽게 테스트할 수 있도록 지원해주는 AddOn입니다.
그럼 ZAP OAST에 대해 알아보죠 🚀
ZAP OAST
OAST는 BurpSuite의 collaborator, project-discovery의 interactsh 같이 OOB 테스트를 위해 DNS Query, HTTP Request 등이 발생하면 사용자에게 어떤 요청이 발생했는지 알려주는 도구입니다.
아직 개발 단계로, 위 두 도구처럼 사용자에게 테스팅을 위한 도메인을 할당해주는 도구까지 구현될지, 또는 TukTuk 같이 사용자가 자신의 환경에 구성하고 사용할 수 있는 형태인지는 잘 모르겠으나, ZAP callback을 유지하고 추가되는 것을 보면 전자이지 않을까 싶습니다.

다만 ZAP OAST 자체가 완전 신규로 구성되는건 아니고, 아마 백엔드의 경우 BOAST 기반으로 구성하고, ZAP에서 연동하여 사용하는 형태로 동작하는 것 같습니다. 그렇다면 사용자가 직접 구성해야할 가능성도 있겠네요.
어쨌던 기존 callback의 경우 http request 만 받고 처리할 수 있었는데, BOAST 기반으로 ZAP OAST가 릴리즈된다면 기존 HTTP/HTTPS 부터 DNS, SMTP 등 여러 프로토콜을 기반으로도 테스트가 가능해져서 Burp Collaborator 와 비슷하게 사용할 수 있지 않을까 싶습니다.
Take a sneak peek OAST
물론 확장 기능을 빌드하고 개발 버전의 ZAP에서 로드하면 사용해볼 수 있습니다. 마침 저도 올해 안에 zap-extension과 zaproxy에서 둘다 Contribute 하기 위해 로컬에 빌드 환경이 구성되어 있던 상태였는데요. 겸사겸사 구경이나 해보려고 합니다.
TLDR
결국 현재 addOn은 빌드/로드가 가능하지만, ZAP 개발 버전의 Options에서 정상적으로 로드되진 않습니다. 이건 제가 개발자한테 물어보고 구경할 수 있으면 글 수정해두겠습니다 :D (아래는 그냥 삽질)
Build OAST
지난번에 PR 보내고 오랜만에 pull 했더니 엄청 많네요..
zap-extensions [master] git pull -v
POST git-upload-pack (144 bytes)
POST git-upload-pack (958 bytes)
remote: Enumerating objects: 3064, done.
remote: Counting objects: 100% (1917/1917), done.
remote: Compressing objects: 100% (658/658), done.
remote: Total 3064 (delta 883), reused 1757 (delta 786), pack-reused 1147
오브젝트를 받는 중: 100% (3064/3064), 1.83 MiB | 2.66 MiB/s, 완료.
델타를 알아내는 중: 100% (1005/1005), 로컬 오브젝트 283개 마침.
각 addOn은 addOns 하위 디렉토리에 존재합니다. OAST도 여기에 있습니다.
├── addOns
│ ├── oast
그럼 OAST 빌드해서 ZAP에 로드해볼까요? ZAP은 gradle로 관리되며 :addOns:<addOn이름>:command 형태로 인자값을 주어 빌드할 수 있습니다.
./gradlew :addOns:oast:build

빌드가 완료되면 addOns/oast/build/zapAddOn/bin/ 디렉토리 하위에 .zap 파일로 addOn이 생성됩니다.
fzf
addOns/oast/build/zapAddOn/bin/oast-alpha-0.0.1.zap

Load OAST in ZAP
메뉴의 File > Load Add-on file 또는 Command + l 단축키를 통해 addOn을 로드합니다.


Where is OAST?
그러나, Options에선 찾아볼 수 없습니다. 이는 제가 방금 릴리즈 버전에서 로드를 했는데 단순히 addOn 만의 기능이 아닌 ZAP Core와 연동이 있는 부분이라 바로 찾을 수 없었습니다. 이후에 제가 다시 zaproxy 개발 빌드로 진행해봤지만 안나타나네요 😭

BOAST
https://github.com/marcoagner/boast 와 연동되도록, 결국 BOAST는 직접 올려야할 가능성도 있어서 미리 정리해둡니다.
Install with build
git clone https://github.com/marcoagner/boast
cd boast
go mod download
go build
Install go-get
go.mod 파일을 보면 module 주소를 별도로 사용합니다. 그래서 아래와 같은 형태로 go get 할 수 있습니다.
go get agner.io/boast
When Release?
현재 initial commit의 경우 main branch에 merge 됬기 때문에 아마.. 길지 않은 시간에 추가될 것 같단 생각을 했지만, OAST 관련 PR 이 2.11.0 Milestone으로 잡힌걸 봐선 다음 정식 릴리즈일 것 같네요. (ZAP 릴리즈 주기가.....)
