HTTP/11์„ ์ง€์›ํ•˜๋Š” Mitmproxy 3 HTTPS ๋ถ„์„๊ธฐ ์ถœ์‹œ

ํŠธ๋ž˜ํ”ฝ์„ ๊ฒ€์‚ฌ, ์ˆ˜์ • ๋ฐ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ HTTPS๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ ์—ฐ๊ฒฐ ๋‚ด์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑ„๋Š” ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” Mitmproxy 11 ํ”„๋กœ์ ํŠธ์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Mitmproxy์˜ ์ฃผ์š” ๋ชฉ์ ์€ ๊ธฐ์—… ์‹œ์Šคํ…œ์˜ ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ˆ: ์ˆจ๊ฒจ์ง„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„คํŠธ์›Œํฌ ํ™œ๋™ ์‹๋ณ„). ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” Python์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

HTTPS ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด Mitmproxy๋Š” ํŠธ๋žœ์ง“ ๋…ธ๋“œ์— ๋ฐฐ์น˜๋˜์–ด ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์ด๋ฅผ Mitmproxy์—์„œ ๋Œ€์ƒ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ์š”์ฒญ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒMitmproxy๋Š” ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ ์ค‘์— ์š”์ฒญ๋œ ์„œ๋ฒ„์™€ ์ผ๋ฐ˜ HTTPS ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์šฉ์œผ๋กœ ์ฆ‰์„์—์„œ ์ƒ์„ฑ๋œ ๊ฐ€์งœ SSL ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ๋”๋ฏธ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋œ ํŠธ๋ž˜ํ”ฝ์€ ๋Œ€์ƒ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋˜๊ณ , ์ˆ˜์‹ ๋œ ์‘๋‹ต์€ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

HTTP/11์„ ์ง€์›ํ•˜๋Š” Mitmproxy 3 HTTPS ๋ถ„์„๊ธฐ ์ถœ์‹œ

mitmproxy๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๋ฐ๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ค์ •์—์„œ mitmproxy ์ฃผ์†Œ๋ฅผ HTTP ํ”„๋ก์‹œ๋กœ ์ง€์ •ํ•˜๊ณ , SOCKS5 ํ”„๋ก์‹œ๋กœ ์ž‘๋™ํ•˜๊ณ , ์ด๋ฅผ HTTP ์„œ๋ฒ„ ์•ž์—์„œ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ํŒจํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ํˆฌ๋ช…ํ•œ ์ „๋‹ฌ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ ๋˜๋Š” ๋ž˜ํ•‘ ๊ทœ์น™ ๋ผ์šฐํŒ… ํด๋ผ์ด์–ธํŠธ์— ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋”๋ฏธ ์ธ์ฆ์„œ๋กœ ์ธํ•ด ๋ธŒ๋ผ์šฐ์ €์— ์—ฐ๊ฒฐ ๋ณด์•ˆ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋„๋ก ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ์— mitmproxy ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŠน์ˆ˜ ํ˜ธ์ŠคํŠธ mitm.it๋ฅผ ์—ด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

HTTP/11์„ ์ง€์›ํ•˜๋Š” Mitmproxy 3 HTTPS ๋ถ„์„๊ธฐ ์ถœ์‹œ

Mitmproxy๋Š” HTTP/2, HTTP/3, ์›น์†Œ์ผ“์„ ์ง€์›ํ•˜๋ฉฐ, ์ŠคํŠธ๋ฆผ ๋‚ด ํŒจํ‚ท ์ˆœ์„œ ์ •๊ทœํ™”, ํŠธ๋ž˜ํ”ฝ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ํ•ธ๋“ค๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ, ํ–ฅํ›„ ์žฌ์ƒ์„ ์œ„ํ•œ ์š”์ฒญ ์ €์žฅ, ์ƒ์„ฑ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. TLS ์ธ์ฆ์„œ ๊ฐ€๋กœ์ฑˆ ์„ธ์…˜์— ๋Œ€ํ•ด์„œ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ์บ์‹ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜์ • ์‹œ๊ฐ„ ํ—ค๋” ์ •๋ฆฌ, ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋ชจ๋“œ, ํŠน์ • ์š”์ฒญ์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ์ฐจ๋‹จ ๋ชฉ๋ก, ์„ ํƒ์  ์š”์ฒญ ๋ฆฌ๋””๋ ‰์…˜(๋กœ์ปฌ ํŒŒ์ผ ์‘๋‹ต ํฌํ•จ), ์ •๊ทœ ํ‘œํ˜„์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ฝ˜ํ…์ธ  ๋ฐ ํ—ค๋” ์ˆ˜์ • ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ ๋ถ„์„์„ ์œ„ํ•ด tcpdump์™€ ์œ ์‚ฌํ•œ ๋ช…๋ น์ค„ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ mitmdump์™€ ์›น ์ธํ„ฐํŽ˜์ด์Šค์ธ mitmweb์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP/11์„ ์ง€์›ํ•˜๋Š” Mitmproxy 3 HTTPS ๋ถ„์„๊ธฐ ์ถœ์‹œ
HTTP/11์„ ์ง€์›ํ•˜๋Š” Mitmproxy 3 HTTPS ๋ถ„์„๊ธฐ ์ถœ์‹œ

์ƒˆ ๋ฒ„์ „์˜ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ์€ 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€