๐ก Army-Knife for AppSec
Application Security ๋๋ Pentest, Bugbounty ๋ฑ ์ ๋ฐ์ ์ธ Offensive security ๊ด๋ จ ์ผ์์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋๊ตฌ๋ Burp/ZAP ๊ณผ ๊ฐ์ Proxy ๋๊ตฌ์ ๋๋ค. ์ด๊ธฐ์๋ Proxy ๋๊ตฌ๋ผ๋ ์ฑํฅ์ด ๊ฐํ์ง๋ง, ์ด์ ๋ Proxy ๋๊ตฌ๋ผ๊ธฐ ๋ณด๋จ Army-Knife ๋ผ๊ณ ๋ณด๋๊ฒ ๋ ์ ํฉํ ๊ฒ ๊ฐ์ต๋๋ค.
(๊ทธ๋์ WHW์์๋ Army-Knife ๋ก ํ๊ธฐํ์ฃ )
์ด์จ๋ ์ด๋ฌํ ๋๊ตฌ๋ค์ OWASP ZAP, PortSwigger BurpSuite ๊ทธ๋ฆฌ๊ณ ๋ ํ๋์ hetty ์ ๋๊ฐ ์์ต๋๋ค. hetty์ ๊ฒฝ์ฐ ์์๋์ง ์ผ๋ง ๋์ง ์์ ํ๋ก์ ํธ๋ผ ์์ง์ ์กฐ๊ธ ๋ ์ง์ผ๋ด์ผํ ๋จ๊ณ์ด๊ธด ํ๊ตฌ์.
์ด๋ฌํ ๋๊ตฌ๋ค์ ์ฃผ๋ก MITM Proxy๋ฅผ ์ด์ฉํ์ฌ Socket ์์ ๋์ํ๋ ๋ค์์ ํ๋กํ ์ฝ(HTTP/HTTPS/WebSocket/Etc..)์ ๋์์ผ๋ก Request/Response ๊ธฐ๋ฐ์ ํ ์คํ ์ ํ ์ ์๋ค๋ ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์๊ณ , ๋ ๋์๊ฐ์ Security testing์ ์ํด En/Decoder, Fuzzing ๋ฑ ๊ต์ฅํ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ง์ํด์ฃผ๊ณ ์์ต๋๋ค.
์๋ฌดํผ ์ด๋ฌ๋ค๋ณด๋, AppSec์ ํ๋ ๋ฆฌ์์ฒ/ํด์ปค ์ ์ฅ์์ ๋๊ตฌ๋ฅผ ์ผ๋ง๋ ๋ ์ ๋ค๋ฃจ๋๋๋ ๊ฐ์ธ์ ์ธ ์คํ ํฅ์์ ํฐ ์ํฅ์ ๋ฏธ์น๊ธฐ๋ ํฉ๋๋ค. (๋ํ ์ผ์ ์ฐจ์ด๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊พธ์ฃ )
๐ค ๊ทธ๋์ ๋?
~ 2018 - BurpSuite ์ค๋ ์
์ ๋ณด์์ชฝ์ ์์ํ์ ๋น์ ์ฆ, ์ด๊ธฐ๋ถํฐ BurpSuite๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๊ธฐ์ต๋ฉ๋๋ค. ์ง๊ธ์ ๋นํ๋ฉด ์ฌ๋ํ UI/UX์ด๊ธด ํ์ง๋ง, ๊ทธ๋๋ ๊ด๋ จ ๋๊ตฌ์ค์์ ๊ฐ์ฅ ๊น๋ํ๋ค๊ณ ๋๊ผ์๋ ๊ฒ ๊ฐ๋ค์. (ZAP๋ ๊ฐ๊ฐํ ์ฌ์ฉํ๊ธด ํ๋๋ฐ, ์ฃผ๋ ฅ์ ์๋์์ด์.)
~ 2020 - BurpSuite์ ZAP ๋์์ฌ์ฉ
๊ทธ๋ฌ๋ ์ค 2018๋
์ด๊ธฐ๋ถํฐ ๋๊ตฌ์ ๋ํ ๊ณ ๋ฏผ์ ๋ค์ ์์ํ์์ต๋๋ค. ๊ทธ ๋ ์ ์ ์๊ฐ์ผ๋ก Burpsuite pro
> ZAP
> Burpsuite community
์ ๋๋ก ์ข๋ค๊ณ ์๊ฐํ์๊ณ ๋ถ์ ์คํ์ผ์ ๋ณํ๋ฅผ ์ฃผ๊ณ ์ ํ์ฐธ๋์ ๋์ผ๋ก ์ฌ์ฉํ์์ฃ . (๋ฌผ๋ก ๋์ผ์ ์ ๋ง ์์คํ
๋ฆฌ์์ค๋ฅผ ๋ง์ด ๋จน๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฆฌ ์ถ์ฒํ์ง๋ ์์ต๋๋ค..๐)
2020 ~ ZAP์ ๋ฉ์ธ ๋ถ์ ๋๊ตฌ๋ก ๋ฐ๊ฟ
๊ทธ๋ฌ๋ ZAP ๊ธฐ๋ฅ์ ๋ํด ํ๋์ฉ ์์๊ฐ๋ค ๋ณด๋ ์๊ฐ๋ณด๋ค ์ข์๊ณ , ์ ํ๊ฐ ๋์ด์๋ ๋๊ตฌ๋ ์๊ฐ์ด ๋ง์ด ๋ค์์ต๋๋ค. BurpSuite๊ฐ ํ์ฅ ๊ธฐ๋ฅ์ด ๋ง์๊ฒ ์ฅ์ ์ด๊ณ ZAP์ ์๋์ ์ผ๋ก ์ ์ ํ์ฅ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ค๋ง ์ด๊ฒ ์๋ฐ๋์ด ์คํ๋ ค ํ์ํ ํ์ฅ ๊ธฐ๋ฅ๋ง ๊น๋ํ๊ฒ ๋ค๊ณ ์๋๊ฒ ๋ ์ฅ์ ์ผ๋ก ๋๊ปด์ก์๋ค์.
์ธ์ธํ ๋ถ๋ถ์ ์๋์ ๋ ์ด์ผ๊ธฐํ ๊ฒ์! ์๋ฌดํผ ์ง๊ธ์ ZAP์ ๋ฉ์ธ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
(์ด์ฐจํผ ํ์ฌ์์ BurpSuite ๋ผ์ด์ ์ค๋ฅผ ๊ณ์ ์ ์งํ๊ณ ์์ผ๋ ๊ณผ๊ฐํ๊ฒ ๊ฐ์ธ ๋ผ์ด์ ์ค๋ฅผ ๋ฒ๋ ธ์ต๋๋ค. / ํ์จ์ ๋ฐ๋ผ 1๋
์ 40~50๋ง์ ์ฌ์ด์ธ๋ฐ ์๊ฐ๋ณด๋จ ์ปค์.. )
๐ ZAP์ ์ ํํ ์ด์
์ฌ์ค ๊ฐ์ธ์ ์ผ๋ก ๋คํฌ๋ชจ๋ ์ง์์ด ๊ฐ์ฅ ์ค์ํ์ต๋๋ค๋ง, Burp๋ 2018๋
๋ ํ ๋ก์ ๋, ZAP์ 2019๋
์ด์ ๊ฐ๊ฐ ๋คํฌ๋ชจ๋ ์ง์์ ๋ฐํํ์ต๋๋ค. ๊ทธ๋์ ํฌ๊ฒ ์๊ด์๋ ์ ํ์ง๊ฐ ๋์๋ค์.
(๊ทธ๋์ ์ด์ง๊ฑฐ๋ฆฌ๋ ํ์ฃ )
REST API
BurpSuite์ ๋นํด ZAP์ ๊ต์ฅํ API ์นํ์ ์ ๋๋ค. ์คํ์์ค์ธ ๋ถ๋ถ๋ ํ ๋ชซํ๊ป๋ฐ์, ์ด์ฐ๋์๋ ๋๊ตฌ ์ ๋ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ํด ๊ฑฐ์๋ค REST API๋ก ์ ๊ณตํด์ค๋ค๋ ๊ฒ์ ํฐ ๋ ธ๋ ฅ์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ด๊ณ , ํ์ฉ์ฑ์ ์์ด์๋ ๊ต์ฅํ ์ ์ฉํฉ๋๋ค.
๋ฌผ๋ก BurpSuite์ ๊ฒฝ์ฐ Enterprise(EP) ๋ฒ์ ์ ๊ฒฝ์ฐ GraphQL์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋น์ทํ๊ธดํ์ง๋ง, EP ๋ฒ์ ์ ๊ฐ์ธ ๋ถ์์ฉ ๋๊ตฌ๋ผ๊ธฐ ๋ณด๋จ DevSecOps๋ฅผ ๊ณ ๋ คํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋๊ตฌ๋ผ ๋น๊ตํ ๋์์ด ์๋ ๊ฒ ๊ฐ๊ธด ํฉ๋๋ค.
HTTP Raw Request์ ํํ๋ฐฉ๋ฒ
์ด๊ฑด ์กฐ๊ธ ์ฌ์ฉํด๋ณด์ จ์ผ๋ฉด ๊ฐ์ฅ ๋จผ์ ๋์๋๊ณ , BurpSuite ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ๋ถํธํ ๋ถ๋ถ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ง์ฝ ์ ์ฌ์ดํธ๋ก ์ฐ๊ฒฐํ๋ Request๋ฅผ ๋ณธ๋ค๋ฉด ์๋์ ๊ฐ์๊ฒ๋๋ค.
BurpSuite
GET / HTTP/1.1
Host: www.hahwul.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Referer: https://www.hahwul.com/resources/
Cookie: _ga=GA1.2.117181321.1593755240; _gid=GA1.2.669019271.1606812260
Upgrade-Insecure-Requests: 1
If-Modified-Since: Wed, 02 Dec 2020 03:03:57 GMT
If-None-Match: W/"5fc7041d-10f73"
ZAP
GET https://www.hahwul.com/ HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: _ga=GA1.2.117181321.1593755240; _gid=GA1.2.669019271.1606812260
Upgrade-Insecure-Requests: 1
Host: www.hahwul.com
๋ค ๋ฐ๋ก URI Path ๋ถ๋ถ์ธ๋ฐ์, Burp์ ๊ฒฝ์ฐ ํ์ค์ธ GET / HTTP/1.1
, ZAP์ GET https://www.hahwul.com/ HTTP/1.1
์ ํํ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ Burp๋ target์ ๋ํ ์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๋ถ๋ถ์
๋๋ค.
๋น์ฐํ ๊ฐ๋ ์ฑ์ ์ธ ์ธก๋ฉด์์ ๋ด์ฉ ์์ฒด๊ฐ ์งง์ BurpSuite์ชฝ์ ํํ๋ฐฉ์์ด ์ข์ ์ ์์ผ๋, ๋ค๋ฅธ ๋๊ตฌ๋ก์ Pipeline, ๋ถ์ํ ์ด๋ ฅ์ ๊ธฐ๋กํ๋ ๋ถ๋ถ์์ ZAP์ ๋ฐฉ์์ด ๋์์ ๋ช ํํ๊ฒ ์ ์ ์์ด์ ํจ์ฌ ์ข๋ค๊ณ ์๊ฐ์ด ๋ค์์ต๋๋ค.
Custom ํ๊ฒฝ
Burp/ZAP ๋ชจ๋ ๋ถ์์ ์ํ ๋๊ตฌ์ด๋ค ๋ณด๋ ์ธ์ธํ ์ค์ ๊ณผ ์ปค์คํ ํ๊ฒฝ์ ํตํด ์์ฒญ๋๊ฒ ๋ง์ ๋ถ๋ถ์ ๊ฐ์ ํ๊ณ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๋์์ธ์ชฝ ์ฅ์ธ๋ถ๋ค์ด ์ผ๋ฌ์คํธ, ๊ฐ์ข ํธ์ง ํ๋ก๊ทธ๋จ ๋ฑ๋ฑ์ ์ฌ์ฉํ ๋ ๊ต์ฅํ ๋น ๋ฅด๊ฒ ์์ ํ ์ ์๋ ๊ฒ๊ณผ ๋น์ทํ ์ด์น์ธ๋ฐ์, ์ด์ฐจํผ ํ์ฌ์์ ์ผ์ํ๋, ๋ฒ๊ทธ๋ฐ์ดํฐ๋ฅผ ํ๋ ํ๋ฆฌ๋์๋ก ์ง๋ด๋ ์ด์ฐจํผ ๋ณธ์ธ์๊ฒ ์ฃผ์ด์ง ์๊ฐ์ ํ์ ์ ์ด๊ณ , ์๊ฐ ์์ ๋น ๋ฅด๊ฒ ๋ถ์ํ ์ ์์ด์ผ ๊ฒฐ๊ณผ์ ๊ฐ์ธ์ ์ถ ๋ชจ๋๋ฅผ ์ฐพ์ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ๊ทธ๋ฌ๋ฉด ๋๊ตฌ์ ๋ํ ์ธ๋ฐํ ์ปจํธ๋กค์ด ํ์ํ๋ฐ, ๋น์ฐํ ์คํ์์ค์ ๊ธฐ๋ฅ/REST ๋ฑ์ ์ง์ ํญ์ด ๋์ ZAP์ด ํจ์ฌ ์ ๋ฆฌํฉ๋๋ค. (์ต์ ๋ฉ๋ด๋ค ์ ์ฐพ์๋ณด์๋ฉด ์์๊ฒ ์ง๋ง, ZAP์ ์ค์ ์ ์ ๋ง ๋ํ ์ผํฉ๋๋ค. ์ฌ์ด๋จผ ๋ง์ธ!)
HUD and WebSwing
์ด๊ฑด ZAP์ ๋ฐฉํฅ์ฑ๊ณผ๋ ๊ฐ์ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. ์ ๊ฐ ์ ์๋ ๋ง์๋ ๊ฐ๋จํ๊ฒ ํฌ์คํ ํ๊ธด ํ์๋๋ฐ, HUD์ ๋ชฉ์ ์ ๊ฒฐ๊ตญ ๋ธ๋ผ์ฐ์ ์์์ ZAP์ ์ปจํธ๋กคํ๊ณ ๋ถ์ํ ์ ์๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๊ฒ ์ ๋๋ค. (์ฐจ๋์ฉ HUD๋ณด๋ค ์์ํธํ์ด์์. ๊ทธ๊ฑด ์ปจํธ๋กค ๊ธฐ๋ฅ์ด ๋ฏธํกํ์์์..)
๋น์ฅ ํ์ฉ์ ๋ง์ดํ๋๊ฑด ์๋์ง๋ง, ๊ณ ์ฑ๋ฅ์ ํผ์จ ๋๋ ์๋ฒ๋ฅผ ZAP Deamon ๋ชจ๋๋ก ๋์ง์ํค๊ณ , HUD๋ฅผ ์ด์ฉํด์ ์ง๋จํ๋ ๋ฐฉ๋ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ ๋ถ์์ ์งํํ๋ ํผ์จ์ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ค์ผ ์ ์๋ ๋ถ๋ถ์ด๋ผ ํ์ํ ๋ถ๋ถ์ด๊ตฌ์. (์ ์ ๊ฒฝ์ฐ๋ ๋งฅ๋ถ์ ZAP์ ๋์ฐ๊ณ , ์๋ฒ์ HUD์ฉ ZAP์ ๋ณ๋๋ก ๋์ด๋์ต๋๋ค ๐)
๋ํ WebSwing์ ์ง์ํ๊ธฐ๋ ํด์, ์๋์ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ๋ก ZAP์ ์ฐ๋ ๊ฒ ์ฒ๋ผ ์ปจํธ๋กค ํ ์๋ ์๊ตฌ์.
๐ญ ZAP๊ณผ Burp์ ๋น๊ตํ๊ธฐ
ํน์๋ ๊ณ ๋ฏผํ์๋ ๋ถ๋ค์ ์ํด์ ์ฃผ๋ก ์ฒดํฌํด์ผํ ๋ถ๋ถ์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ด ๋๋ค.
ย | OWASP ZAP | BurpSuite | Comments |
---|---|---|---|
Proxy | O | O | ย |
Passive Scan | O | O | ย |
Active Scan | O | O ๐ | Only Pro/EP version |
Scope ๊ด๋ฆฌ | O (Context) | O (Scope) | ย |
Project ๊ด๋ฆฌ | O | O | ย |
OOB Testing | O (Callback) | O (Collaborator) ๐ | ๋ค๋ง ZAP์ด ์ข ๋ถ์กฑํจ |
Extensions | O | O ๐ | ย |
Scripting | O ๐ | O (์ผ๋ถ๋ง ์ง์) | ย |
API | O ๐ | O | Only Pro/EP version |
Dark Mode | O | O | ย |
Manual testing | O (Requester) | O (Repeater) | ย |
Datail Manual testing | O | O ๐ | ย |
Fuzzing | O (Fuzzing) | O (Intruder / Turbo intruder) | ย |
Dirsearch | O (Forced Browse) ๐ | O (Intruder / Turbo intruder) | ย |
Dashboard | X | O | ย |
State manage | O (Statd) | X | ย |
WebSocket | O | O | ย |
Hotkeys | O | O | ย |
Embedded Browser | O | O | ย |
New tech | O | O ๐ | Burp๊ฐ ์ง์์ด ๋น ๋ฆ |
์ธ๋ถ๋๊ตฌ ์ฐ๋ | O ๐ | O | ย |
Customize | O ๐ | O | ย |
Price | OpenSource | Free/$399/$3999 | ย |
๐ ๋ ๋ค๋ฅธ ์ ํ์ง? Hetty!
์ฌ ์ค์๋ถํฐ ์์๋ ์คํ์์ค ํ๋ก์ ํธ์
๋๋ค. go
+ nextjs
๊ธฐ๋ฐ์ ๋๊ตฌ๋ก ์์ง์ Army-Knife๋ก ๋ถ๋ฅด๊ธด ์ข ๊ทธ๋ ๊ณ , Proxy ๋๊ตฌ ์์ค์ผ๋ก ์๊ฐํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์จ๋ go ์์ฒด๊ฐ ์๋๋ ์๋์ง๋ง, ํ์ฌ ๋๋ค์์ ํ ์คํ ๋๊ตฌ๋ค์ด go ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก includeํ๊ณ , ์ฐ๋๋์ด ์ฌ์ฉ๋๋ค๋ฉด ์ด์ฉ๋ฉด ZAP / Burp / Hetty ์ด๋ ๊ฒ 3๊ฐ๊ฐ ๋ฉ์ธ ๋๊ตฌ๋ก ์ฌ๋ผ๊ฐ๋ ์ผ์ด ๋ํ๋์ง ์์๊น ์ถ์ต๋๋ค.
์์ง์ ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์ง๋ง, ์์ง ํ๋ก์ ํธ ์ด๊ธฐ์ธ๋งํผ ์ง์ contribute ํ์๋ ๊ฒ๋ ๋ฐฐ์ธ ๊ฒ๋ ๋ง๊ณ ์ฌ๋ฏธ๋ ์์ ๊ฒ ๊ฐ์ผ๋ ์ถ์ฒ๋๋ ค๋ด ๋๋ค. ZAP์ HUD์ ์น์ค์๊ณผ ๋น์ทํ ๋๋์ด ์์ง๋ง, ๊ฒฐ๊ตญ ์น ๊ธฐ๋ฐ์ผ๋ก ๋์์ํค๊ธฐ ๋๋ฌธ์ ๊ณ ์ฑ๋ฅ ๋๋ scale ๊ด๋ฆฌ๊ฐ ๋๋ ํด๋ฌ์คํฐ ๋ฑ์ ์ฌ๋ ค๋๊ณ ๋ค๋ฅธ ์ฌ๋๊ณผ ๊ฐ์ด์ฐ๊ธฐ์๋ ๊ด์ฐฎ์ ๋๊ตฌ์ ๋๋ค.
๐๐ผ Conclusion
์ด์จ๋ ์ฃผ๋ ฅ๋๊ตฌ์ ์ ํ์ ๊ต์ฅํ ์ค์ํ๊ณ , ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ๊ฒฝํํ๊ณ ์๊ธฐ ์คํ์ผ์ ๋ง๋๋๊ฒ ํ์ฌ๊น์ง ๋๋ผ๊ธฐ๋ก ์ด ์ผ์ ํจ์ ์์ด ์ค์ํ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค. ZAP / Burp / Hetty ์ด 3๊ฐ๋ ๊ผญ ํ๋ฒ ์จ๋ณด์๊ณ , ๊ฒฐ์ ํด๋ณด์๊ธธ ๋ฐ๋์ ๐