ํธ๋ํฝ์ ๊ฒ์ฌ, ์์ ๋ฐ ์ฌ์ํ ์ ์๋ ๊ธฐ๋ฅ๊ณผ ํจ๊ป HTTPS๋ฅผ ํตํด ์ค์ ๋ ์ฐ๊ฒฐ ๋ด์์ ํธ๋ํฝ์ ๊ฐ๋ก์ฑ๋ ๋๊ตฌ๋ฅผ ๊ฐ๋ฐํ๋ Mitmproxy 11 ํ๋ก์ ํธ์ ๋ฆด๋ฆฌ์ค๊ฐ ๋ฐํ๋์์ต๋๋ค. Mitmproxy์ ์ฃผ์ ๋ชฉ์ ์ ๊ธฐ์ ์์คํ ์ ํธ๋ํฝ์ ๋ชจ๋ํฐ๋งํ๊ณ ๋ฌธ์ ๋ฅผ ์ง๋จํ๋ ๊ฒ์ ๋๋ค(์: ์จ๊ฒจ์ง ์ ํ๋ฆฌ์ผ์ด์ ๋คํธ์ํฌ ํ๋ ์๋ณ). ํ๋ก์ ํธ์ ์์ค ์ฝ๋๋ Python์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
HTTPS ํธ๋ํฝ์ ๋ถ์ํ๊ธฐ ์ํด Mitmproxy๋ ํธ๋์ง ๋ ธ๋์ ๋ฐฐ์น๋์ด ํด๋ผ์ด์ธํธ ์์ฒญ์ ๊ฐ๋ก์ฑ๊ณ ์ด๋ฅผ Mitmproxy์์ ๋์ ์๋ฒ๋ก ์ ์กํ๋ ์์ฒญ์ผ๋ก ๋ณํํฉ๋๋ค. ์ฌ๊ธฐ๋ ์ฌ๋Mitmproxy๋ ํด๋ผ์ด์ธํธ ์ธ์ ์ค์ ์์ฒญ๋ ์๋ฒ์ ์ผ๋ฐ HTTPS ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ , ํด๋ผ์ด์ธํธ๋ฅผ ๋์ ํ์ฌ ํด๋ผ์ด์ธํธ์ฉ์ผ๋ก ์ฆ์์์ ์์ฑ๋ ๊ฐ์ง SSL ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ๋๋ฏธ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ ๋ ํธ๋ํฝ์ ๋์ ์๋ฒ๋ก ์ ๋ฌ๋๊ณ , ์์ ๋ ์๋ต์ ๋ค์ ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌ๋ฉ๋๋ค.

mitmproxy๋ฅผ ํตํด ํธ๋ํฝ์ ๋ฆฌ๋๋ ์ ํ๋ ๋ฐ๋ ๋ธ๋ผ์ฐ์ ์ค์ ์์ mitmproxy ์ฃผ์๋ฅผ HTTP ํ๋ก์๋ก ์ง์ ํ๊ณ , SOCKS5 ํ๋ก์๋ก ์๋ํ๊ณ , ์ด๋ฅผ HTTP ์๋ฒ ์์์ ์ญ๋ฐฉํฅ ํ๋ก์๋ก ์ฌ์ฉํ๊ณ , ํจํท์ ์ฌ์ฉํ์ฌ ํฌ๋ช ํ ์ ๋ฌ์ ๊ตฌ์ฑํ๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์ง์๋ฉ๋๋ค. ํํฐ ๋๋ ๋ํ ๊ท์น ๋ผ์ฐํ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉ๋๋ ๋๋ฏธ ์ธ์ฆ์๋ก ์ธํด ๋ธ๋ผ์ฐ์ ์ ์ฐ๊ฒฐ ๋ณด์ ๋ฌธ์ ์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง ์๋๋ก ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ์ ์์คํ ์ mitmproxy ๋ฃจํธ ์ธ์ฆ์๋ฅผ ์ค์นํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ์ด ์์ ์ ์๋์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๋๋ ๋ธ๋ผ์ฐ์ ์์ ํน์ ํธ์คํธ mitm.it๋ฅผ ์ด๋ฉด ๋ฉ๋๋ค.

Mitmproxy๋ HTTP/2, HTTP/3, ์น์์ผ์ ์ง์ํ๋ฉฐ, ์คํธ๋ฆผ ๋ด ํจํท ์์ ์ ๊ทํ, ํธ๋ํฝ์ ์ค์๊ฐ์ผ๋ก ์์ ํ๊ธฐ ์ํ ํธ๋ค๋ฌ ์คํฌ๋ฆฝํธ ์ฐ๊ฒฐ, ํฅํ ์ฌ์์ ์ํ ์์ฒญ ์ ์ฅ, ์์ฑ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. TLS ์ธ์ฆ์ ๊ฐ๋ก์ฑ ์ธ์ ์ ๋ํด์๋ ํด๋ผ์ด์ธํธ ์ธก ์บ์ฑ์ ๋นํ์ฑํํ๊ธฐ ์ํ ์์ ์๊ฐ ํค๋ ์ ๋ฆฌ, ์๋ฒ๋ก ํธ๋ํฝ์ ๋ฆฌ๋๋ ์ ํ๋ ๋ฆฌ๋ฒ์ค ํ๋ก์ ๋ชจ๋, ํน์ ์์ฒญ์ ํํฐ๋งํ๋ ์ฐจ๋จ ๋ชฉ๋ก, ์ ํ์ ์์ฒญ ๋ฆฌ๋๋ ์ (๋ก์ปฌ ํ์ผ ์๋ต ํฌํจ), ์ ๊ท ํํ์์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ฝํ ์ธ ๋ฐ ํค๋ ์์ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํธ๋ํฝ ๋ถ์์ ์ํด tcpdump์ ์ ์ฌํ ๋ช ๋ น์ค ์ ํธ๋ฆฌํฐ์ธ mitmdump์ ์น ์ธํฐํ์ด์ค์ธ mitmweb์ ์ฌ์ฉํ ์ ์์ต๋๋ค.


์ ๋ฒ์ ์ ์ฃผ์ ๊ฐ์ ์ฌํญ์ HTTP/3์ ์ ์ก์ผ๋ก QUIC(Quick UDP Internet Connections) ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ HTTP/2 ํ๋กํ ์ฝ์ ์๋ฒฝํ๊ฒ ์ง์ํ๋ค๋ ๊ฒ์ ๋๋ค(QUIC๋ ๋ค์คํ๋ฅผ ์ง์ํ๋ UDP ํ๋กํ ์ฝ์ ๋ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋๋ค). ๋ค์ค ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๋ฉฐ TLS/SSL๊ณผ ๋๋ฑํ ์ํธํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. HTTP/3์ฉ Mitmproxy์์๋ ํฌ๋ช ํ ํธ๋ํฝ ์ฐจ๋จ์ ์ฌ์ฉํ๊ณ ์ญ๋ฐฉํฅ ํ๋ก์๋ก ์๋ํ ์ ์์ต๋๋ค. HTTP/3 ์ฐจ๋จ์ Firefox, Chrome ๋ฐ ๋ค์ํ ๋ฒ์ ์ cURL์์ ํ ์คํธ๋์์ต๋๋ค.
์ ๋ถ๊ธฐ์ ๋ค๋ฅธ ์ฃผ๋ชฉํ ๋งํ ๋ณ๊ฒฝ ์ฌํญ์ HTTPS ๋ฐ ECH(์ํธํ๋ ํด๋ผ์ด์ธํธ Hello)์ ๋ํ DNS ๋ ์ฝ๋ ํธ์คํ
์ธก๋ฉด์์ ํฅ์๋ DNS ์ง์๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ์ ๋ฒ์ ์๋ A/AAAA ์ด์ธ์ DNS ๋ ์ฝ๋ ์ฟผ๋ฆฌ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค(์: ECH์์๋ ๊ณต๊ฐ ์ํธํ ํค ์ ๋ณด๊ฐ HTTPSSVC DNS ๋ ์ฝ๋๋ก ์ ๋ฌ๋จ). DNS์ HTTPS ๋ ์ฝ๋์์ ECH ํค๋ฅผ ์ ๋ฆฌํ๋ ๋ชจ๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. DNS๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด Rust ์ธ์ด๋ก ์์ฑ๋๊ณ Let's Encrypt ํ๋ก์ ํธ์ ์ํด ๊ฐ๋ฐ๋ Hickory ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ํ๋์์ต๋๋ค. DNS-over-TCP์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. /etc/hosts์ ์ค์ ์ฒ๋ฆฌ๋ฅผ ๋นํ์ฑํํ๋ ์ต์
์ด ๊ตฌํ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru
