Burp suite 중독자가 바라본 OWASP ZAP(Zed Attack Proxy). 이제부터 듀얼이다!

요즘 부쩍 툴에 대한 많은 깊은 고민이 생겼습니다. 어떤 툴을 쓰면 좋을지, 이참에 걍 하나 만들지… 한… 3년? 전쯤에도 같은 고민이 있었죠. 그때는 Burp suite에 올인하기로 마음을 잡았었습니다. 시간이 지난 요즘, 또다시 Burp suite에 대한 지겨움, 새로움을 갈구하는 마음에 여러 고민이 시작되었습니다.

예전에 어디선가 봤는데, 이런 말이 있었죠. 툴에 대해서 한가지만 고집하지 마라(?) 여러 툴을 사용하고 툴의 철학과 가치관을 이해하면 새로운 시각이 보인다? 뭐 이런 뉘양스였는데요.

어느정도 동감합니다. 그래서…. 오늘은 Burp suite의 영원한 라이벌 ZAProxy에 대한 이야기를 할까 합니다.

ZAP Proxy

뭐 툴에 대한 소개를 굳이 할 필요가 없을 것 같습니다. OWASP에서 진행하는 워낙 유명한 오픈소스 툴이며 깊진 않지만 웹 소켓 때문에 종종 쓰곤 했습니다.

개인적으로 생각하는 Burp suite와 ZAP Proxy의 차이점?

우선 전체적인 성능, 아니 분석가의 활용성 자체는 상용인(프로버전) Burp가 좋습니다. 돈이 들어갔으니 좀 더 신경썼을꺼라 생각하고 싶습… 잡담 집어치우고 개인적으로 생각하는 두 툴의 차이점을 정리해보죠.

우선 Burp suite는 프록시를 기반으로 테스팅하는데 포커싱이 많이 맞춰진 툴입니다. 덤으로 Active scan, Passive scan의 성능, 그리고 collaborator 서버의 존재는 엄청난 위압감을 자랑하죠. 아마 많은 분석가들이 Burp suite를 사용할 것이고(프리~상용, 크랙까지) 저 또한 이 툴을 버리진 않습니다. 어찌되었던 현재 주력일 수 밖에 없습니다.

ZAP의 경우에는 Spidering 쪽이 좋다고 판단되는 스캐닝 기반의 툴로 보시는게 좋을 것 같습니다. 첫 UI부터 URL 하나 넣을 수 있고 바로 크롤링과 스캐닝을 진행할 수 있도록 되어있다죠.

그리고 오픈소스이기에 라이센스 가격적인 문제에서 이점이 있다고 봅니다. 물론 Burp suite 자체가 말도 안되게 비싼건 아니지만(솔직히 프로버전 구매가로 버그바운티 하면 충분히 본전뽑고 남겠쬬) 돈이 들어가냐 안들어가냐는 매우 큽니다. 또한 API 지원이 자유로운 편이라 관련 서브 툴들이 많이 나오고 있고 만들기도 쉽습니다. (대표적으론 cli 기반 zap 이나 자동 스캐너 등등)

나눠쓰긴했지만 둘 다 Proxy, Scanning이 베이스가 되는 훌륭한 툴입니다.

ZAP은 Burp처럼 쓸 수 없을까?

가장 먼저 한 고민은 바로 소제목과 같이 Burp 처럼 사용할 수 있을까란 고민입니다. 단축키 부터 UI, 툴이 추구하는 방향까지 완전히 최적화 되었는데 다른 툴의 비중을 늘린다는 건 좀 어려운일이긴하죠. 그래서 .. Burp의 장점들을 Zap에 적용할 수 있는지가 가장 궁금했습니다.

우선 Repeater의 부재가 가장 큽니다. 전 대체로 History*Flow + Repeater 기반으로 분석을 많이 하는데, 여기서 가장 핵심은 Repeater입니다. 반복해서 내용을 수정하고 결과를 확인할 수 있기 때문에 서비스의 로직이나 필터링 규칙을 파악하는데 있어 이만한 기능이 없습니다.

어찌되었던 자동화 테스팅의 결과는 누구나, 많은 사람들이, 기업에선 이미.. 테스트했을 것이기 떄문에 수동, 즉 장인정신으로 한땀한땀 분석하는게 결과를 얻어가기 좋다고 생각합니다.

그런 면에 있어선 Repeater는 굉장한 기능이죠. 아래에서 한번 더 이야기 드리겠지만 Repeater의 완전한 대체는 어렵습니다. 다만 확장 기능을 통해 어느정도 커버가 가능하다고 생각됩니다.

자세한 이야기는 아래 Extension 부분에서 한번 더 이야기하도록 하겠습니다.

두번째는 익숙한 분석 흐름입니다. 프록시를 기반으로 웹 사이트를 돌아다니며 데이터를 수집하고 이를 기반으로 취약점을 분석하는데 익숙해져있는데, 대게 ZAP의 설명 글이나 튜토리얼을 보면 스캔에서 시작합니다. 개인적으로 스캔은 Burp가 최강이라고 봅니다. 아무튼 다시 본론으로 와서 ZAP에서도 프록시를 기반으로 볼 수 있을까란 생각이 있었는데, 당연히 가능합니다. 프록시 툴이니깐요…

다만 History 탭에 대해 좀 더 익숙해지고, 확장 기능 개발이나 다운로드로 개선이 필요하긴 합니다. 분석가의 눈에는 불편한점들이 보입니다.

Burp sutie 중독자에게 꼭 필요한 ZAP Extension

저는 Burp suite 중독자입니다. 되도록 모든 취약점 분석을 한군데로 몰아서 하고싶어하고, 이에 Burp의 확장 기능은 엄청난 효과를 줍니다, (최근 Frida&Burpsuite 인 Brida 도 대 환영입니다. 언능 정리좀 해야하느데…시간이 안나네요 ㅜ)

1. Requester

Repeater의 대안입니다. History나 결과 페이지 등 요청을 반복으로 전송하며 테스트할 수 있는 기능이며 Repeater와 거의 흡사합니다. 단축키도 Ctrl+W로 데이터를 넘기며 익숙해지면 Burp Repeater 쓰는 느낌으로 사용해 볼 수 있을듯합니다.

2. Call Graph

Extension list 보다가 우연히 설치한건데, 아주 좋은 도구여서 추가해봤습니다. 웹 사이트의 요청 순서(?) 를 흐름도로 볼 수 있는데, 금융서비스 같이 Flow가 중점적으로 분석하는 경우나 요청에 따라 많은 경우의 수, 흐름이 발생할 떄 참고하기 좋을 것 같습니다.

3. Scripting

이건 어딜가나 필수입니다. 자신의 주력 언어를 이용한 스크립팅 도구는 무조건 세팅하시는게 좋습니다. Burp suite나 ZAP 모두 Java base 이기 때문에 Java를 다루면 가자 좋겠지만, 아닌 경우 Ruby, Python 등으로 대체가 가능합니다. (물론… Jruby, Jython 처럼 결국은 자바를 해야하지만요…)

다만 ZAP에서의 스크립팅 도구는 약간 다릅니다. Fiddler의 스크립팅과 유사하다고 보시는게 좋을 것 같습니다.

Conclusion

별 내용 아닌걸로 글 하나가 나왔습니다. 물론 Burp => ZAP 으로 메인 툴을 변경하는건 아니지만 듀얼 체제로 동시에 사용해볼 생각입니다.

사실 걍 찾아보기 귀찮아서 간단하게 코드로 짜고있었는데 exception 처리랑 버그 잡을 생각 하니깐 프록시랑 UI 구현에서 마음이 닫혔습니다. (a2sv도 수정해달란 내용이 산더미..핳)

장담컨테, 여러 툴을 써보는건 정말 좋은 선택입니다. 저처럼 Burp 중독자이신 분들, 꼭 한번 ZAP 써보시길 바랍니다. 혹시나 알까요 또 다른 관점이 생길지 :)