TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

์†Œ๊ฐœ

์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„ ์กฐํ•ญ ์•”ํ˜ธํ™”๋œ SNI(eSNI) ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์‹  DPI ์‹œ์Šคํ…œ(Beeline DPI ๋ฐ ๊ธˆ์ง€๋œ RKN ๋ฃจํŠธ ์ถ”์ ๊ธฐ์˜ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ)์— ์˜ํ•œ ํƒ์ง€๋ฅผ ํšŒํ”ผํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ์ง€ ๋ณด์—ฌ์ฃผ๊ณ  ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „๋„ ํƒ์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ์˜ ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์—์„œ๋Š” RedTeam ์ „๋ฌธ๊ฐ€๊ฐ€ ์–ด๋ ค์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๋ณด๋‹ค ์‹ค์šฉ์ ์ธ ๋‚ด์šฉ์œผ๋กœ ๋„˜์–ด๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์ฐจ๋‹จ๋œ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค(์ด๋Ÿฐ ์‚ฌ์†Œํ•œ ์ผ์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์˜ค๋ž˜๋œ VPN์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ๋‹คํ–‰ํžˆ๋„ ๋ชจ๋“  ์ทจํ–ฅ, ์ƒ‰์ƒ, ์˜ˆ์‚ฐ์— ๋งž๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•œ VPN ์ œ๊ณต์—…์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Cobalt Strike, Empire ๋“ฑ๊ณผ ๊ฐ™์€ ์ตœ์‹  RedTeam ๋„๊ตฌ์— ๋„๋ฉ”์ธ ํ”„๋ก ํŒ… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ ์šฉํ•˜๊ณ  ์ตœ์‹  ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๋ชจ๋ฐฉํ•˜๊ณ  ํšŒํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๋‚œ๋ฒˆ์— ์šฐ๋ฆฌ๋Š” eSNI ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ OpenSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ตฌํ˜„ํ•˜๊ณ  ์ด๋ฅผ ์นœ์ˆ™ํ•œ ์ปฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์น˜ํ‚จ ํ•œ ๋งˆ๋ฆฌ๋กœ๋Š” ๋งŒ์กฑํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ง์ด ์žˆ์ฃ . ๋ฌผ๋ก  ๊ณ ๊ธ‰ ์–ธ์–ด์—์„œ๋„ ๋น„์Šทํ•œ ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆํ–‰ํžˆ๋„ eSNI ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์ง€์›์€ GOLANG์—์„œ๋งŒ ์™„์ „ํžˆ ๊ตฌํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐ๋„ท์„ ํ†ตํ•œ ๋น ๋ฅธ ๊ฒ€์ƒ‰์€ ์šฐ๋ฆฌ๋ฅผ ์‹ค๋ง์‹œํ‚ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋œ OpenSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์ˆ˜ C ๋˜๋Š” C++๋กœ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ CloudFlare์—์„œ ๋ณ„๋„์˜ GOLANG ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๊ตฌ๋ฅผ ๊ฑฐ๊ธฐ๋กœ ํฌํŒ…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์›์น™์ ์œผ๋กœ Python์— ๋Œ€ํ•œ eSNI ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ๋” ๊ณ ์ „์ ์ด์ง€๋งŒ ๋™์‹œ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ Python์€ OpenSSL์„ ์‚ฌ์šฉํ•˜์—ฌ https๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด ์˜ต์…˜์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ฐœ๋ฐœํ•˜๋„๋ก ๋‚จ๊ฒจ๋‘๊ณ  Golang์˜ ๊ตฌํ˜„์— ๋งŒ์กฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ๋ž‘ํ•˜๋Š” Cobalt Strike๊ฐ€ ํƒ€์‚ฌ ๋„๊ตฌ๋กœ ๊ตฌ์ถ•๋œ ํ†ต์‹  ์ฑ„๋„(์™ธ๋ถ€ C2 ์ฑ„๋„)๊ณผ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. - ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ์‚ฌ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์—์„œ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋” ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•ด๋ณด์„ธ์š”...

Go์—์„œ ๊ตฌํ˜„๋œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋Š” ๋„คํŠธ์›Œํฌ๋กœ์˜ ์ „ํ™˜์„ ์œ„ํ•œ ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค. RSockstun, ๊ทธ๋Ÿฐ๋ฐ ์ด์ œ Microsoft์™€ Symantec์˜ ๋„๊ตฌ์—์„œ๋Š” ๊ธ€๋กœ๋ฒŒ ์•ˆ์ •์„ฑ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋งค์šฐ ์•…์˜์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ฐ์ง€๋ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

์ด ๊ฒฝ์šฐ์—๋„ ์ด์ „ ๊ฐœ๋ฐœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ์ž‘์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ฒ˜์Œ์—๋Š” rsockstun์ด ์„œ๋ฒ„์™€์˜ ๋™๊ธฐ์‹ SSL ํ†ต์‹  ์ฑ„๋„ ์‚ฌ์šฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฐ๊ฒฐ์ด ํ•œ ๋ฒˆ ์„ค์ •๋˜๊ณ  ํ„ฐ๋„์ด ์ž‘๋™ํ•˜๋Š” ์ „์ฒด ๊ธฐ๊ฐ„ ๋™์•ˆ ์กด์žฌํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„์‹œ๋‹ค์‹œํ”ผ https ํ”„๋กœํ† ์ฝœ์€ ์ด ์ž‘๋™ ๋ชจ๋“œ์šฉ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ๊ฐ์˜ ์ƒˆ๋กœ์šด http ์š”์ฒญ์ด ์ƒˆ๋กœ์šด TCP ์—ฐ๊ฒฐ ๋‚ด์— ์กด์žฌํ•˜๋Š” ์š”์ฒญ-์‘๋‹ต ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ์‹์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒˆ๋กœ์šด http ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๊นŒ์ง€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋งŽ์€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, http ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ(๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ๋“  ์šฐ๋ฆฌ๊ฐ€ ์ข‹์•„ํ•˜๋Š” TV ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ฒญํ•˜๊ณ  https์—์„œ ์‹คํ–‰๋˜๋Š” ํฌํ„ธ์—์„œ ์Œ์•…์„ ๋“ค์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋น„๋””์˜ค ๋ฐ ์˜ค๋””์˜ค ์ „์†ก์€ ๋‹ค๋ฅธ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ณด๋‹ค). HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋ณธ๊ฒฉ์ ์ธ TCP ์—ฐ๊ฒฐ ์ž‘์—…์„ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๋Š” WebSockets ๊ธฐ์ˆ ์ด๋ฉฐ, ์ด ๊ธฐ์ˆ ์˜ ์ฃผ์š” ๋ณธ์งˆ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์›น ์„œ๋ฒ„ ๊ฐ„์˜ ๋ณธ๊ฒฉ์ ์ธ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šด ์ข‹๊ฒŒ๋„(๋งŒ์„ธ!!!) ์ด ๊ธฐ์ˆ ์€ ๋ชจ๋“  CloudFlare ์š”๊ธˆ์ œ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ eSNI์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ„ฐ๋„๋Ÿฌ์—๊ฒŒ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์„ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ์‹  DPI๋กœ๋ถ€ํ„ฐ ์ˆจ๊ธฐ๋„๋ก ๊ฐ€๋ฅด์น˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

WebSocket์— ๋Œ€ํ•ด ์กฐ๊ธˆ

์šฐ์„ , ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์›น์†Œ์ผ“์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ๋ง๋กœ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Websocket ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ค์ •๋œ TCP ์—ฐ๊ฒฐ์„ ๋Š์ง€ ์•Š๊ณ  ์ผ์‹œ์ ์œผ๋กœ http ์—ฐ๊ฒฐ์—์„œ ํ‘œ์ค€ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์†Œ์ผ“์œผ๋กœ ์ „ํ™˜ํ•˜๋ ค๊ณ  ํ•˜๋ฉด http ์š”์ฒญ์— ์—ฌ๋Ÿฌ http ํ—ค๋”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ํ•„์ˆ˜ ํ—ค๋” - ์—ฐ๊ฒฐ: ์—…๊ทธ๋ ˆ์ด๋“œ ะธ ์—…๊ทธ๋ ˆ์ด๋“œ: ์›น์†Œ์ผ“. ๋˜ํ•œ ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์„ ๊ฐ•์ œ๋กœ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(Sec-Websockset-๋ฒ„์ „: 13) ๋ฐ base64 ์›น์†Œ์ผ“ ์‹๋ณ„์ž(Sec-WebSocket-ํ‚ค: DAGDJSiREI3+KjDfwxm1FA==). ์„œ๋ฒ„๋Š” http ์ฝ”๋“œ 101 ์Šค์œ„์นญ ํ”„๋กœํ† ์ฝœ๋กœ ๊ทธ์—๊ฒŒ ์‘๋‹ตํ•˜๊ณ  ํ—ค๋”๋„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ, ์—…๊ทธ๋ ˆ์ด๋“œ ะธ Sec-WebSocket-์ˆ˜๋ฝ. ์ „ํ™˜ ํ”„๋กœ์„ธ์Šค๋Š” ์•„๋ž˜ ์Šคํฌ๋ฆฐ์ƒท์— ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๊ทธ๋Ÿฌ๋ฉด WebSocket ์—ฐ๊ฒฐ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์ด์ œ http๊ฐ€ ์•„๋‹Œ WebSocket ํ—ค๋”(๋ฐ”์ดํŠธ 0x82๋กœ ์‹œ์ž‘)์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. TCP ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Golang์—๋Š” ์›น์†Œ์ผ“ ์ž‘์—…์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ๊ฒƒ์€ ๊ณ ๋ฆด๋ผ ์›น์†Œ์ผ“ ํ‘œ์ค€ ์›น ์†Œ์ผ“. ์šฐ๋ฆฌ๋Š” ํ›„์ž๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—... ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์ž‘์œผ๋ฉฐ ๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

rsockstun ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์—์„œ net.dial ๋˜๋Š” tls.dial ํ˜ธ์ถœ์„ ํ•ด๋‹น WebSocket ํ˜ธ์ถœ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

์šฐ๋ฆฌ๋Š” ํ„ฐ๋„์˜ ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์„ ๋ฒ”์šฉ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์ง์ ‘ SSL ์—ฐ๊ฒฐ๊ณผ WebSockset ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋ชจ๋‘ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค. func connectForWsSocks(์ฃผ์†Œ ๋ฌธ์ž์—ด, ํ”„๋ก์‹œ ๋ฌธ์ž์—ด) ์˜ค๋ฅ˜ {...} ๋น„์œ ๋กœ ์ปค๋„ฅํŠธํฌ์‚ญ์Šค() ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ง€์ •๋œ ์„œ๋ฒ„ ์ฃผ์†Œ๊ฐ€ ws: ๋˜๋Š” wss:(Secure WebSocket์˜ ๊ฒฝ์šฐ)๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ์›น ์†Œ์ผ“ ์ž‘์—…์— ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ„ฐ๋„์˜ ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ์›น ์†Œ์ผ“ ์ž‘์—…์„ ์œ„ํ•œ ๋ณ„๋„์˜ ๊ธฐ๋Šฅ๋„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. http ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  http ์—ฐ๊ฒฐ ํ•ธ๋“ค๋Ÿฌ(wsHandler ํ•จ์ˆ˜)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ ๋กœ์ง(๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ, yamux ์„ธ์…˜ ์„ค์ • ๋ฐ ์ข…๋ฃŒ)์„ WebSocket ์—ฐ๊ฒฐ ํ•ธ๋“ค๋Ÿฌ์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์„œ๋ฒ„ ๋ถ€๋ถ„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

./rsockstun โ€“listen ws:127.0.0.1:8080 โ€“pass P@ssw0rd

๊ทธ๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

./rsockstun -connect ws:127.0.0.1:8080 โ€“pass P@ssw0rd

๊ทธ๋ฆฌ๊ณ  ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ์ž‘์—…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์›น์†Œ์ผ“์„ ์•Œ์•„๋‚ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ œ eSNI ๋ฐ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์œผ๋กœ ์ง์ ‘ ์ด๋™ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด DoH ๋ฐ eSNI์™€ ํ˜‘๋ ฅํ•˜๋ ค๋ฉด ํšŒ์‚ฌ์—์„œ ํŠน๋ณ„ํ•œ golang ์ง€์ ์„ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. CloudFlare. eSNI๋ฅผ ์ง€์›ํ•˜๋Š” ์ง€์ (pwu/esni)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ๋กœ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น zip์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค.

git clone -b pwu/esni https://github.com/cloudflare/tls-tris.git

๊ทธ๋Ÿฐ ๋‹ค์Œ GOROOT ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ๋ณต์ œ๋œ ๋ถ„๊ธฐ์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ๊ต์ฒดํ•˜๊ณ  ์ด๋ฅผ ๋งˆ์Šคํ„ฐ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณจ์น˜ ์•„ํ”ˆ ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด CloudFlare ์ง์›์€ ํŠน๋ณ„ํ•œ ์Šคํฌ๋ฆฝํŠธ์ธ _dev/go.sh๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. makefile๊ณผ ํ•จ๊ป˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์Šค์Šค๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์žฌ๋ฏธ์‚ผ์•„ makefile ๋‚ด๋ถ€์—์„œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•  ๋•Œ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ค€๋น„ํ•œ ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ GOROOT๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" go build โ€ฆ.

๋‹ค์Œ์œผ๋กœ, ์›ํ•˜๋Š” ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ๊ณต๊ฐœ eSNI ํ‚ค๋ฅผ ์š”์ฒญํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ„ฐ๋„์— ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๋Š” CloudFlare ํ”„๋ŸฐํŠธ์—”๋“œ ์„œ๋ฒ„์˜ ๊ณต๊ฐœ eSNI ํ‚ค์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

func makeDoTQuery(dnsName string) ([]byte, error)
func parseTXTResponse(buf []byte, wantName string) (string, error)
func QueryESNIKeysForHost(hostname string) ([]byte, error)

์›์น™์ ์œผ๋กœ ๊ธฐ๋Šฅ์˜ ์ด๋ฆ„์€ ๊ทธ ์ž์ฒด๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. tls-tris์˜ ์ผ๋ถ€์ธ esni_query.go ํŒŒ์ผ์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ DoH(DNS-over-HTTPS) ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ CloudFlare DNS ์„œ๋ฒ„์— ๋Œ€ํ•œ ์š”์ฒญ์œผ๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ์ƒ์„ฑํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์—ฌ ๋„๋ฉ”์ธ์˜ ๊ณต๊ฐœ ํ‚ค ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ , ์„ธ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ ์ฒ˜์Œ ๋‘ ๊ฐœ๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜์— ์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. connectForWs์–‘๋ง ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ eSNI ํ‚ค๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ถ€๋ถ„์ด ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ TLS ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ฐ€์งœ "์ปค๋ฒ„ ๋„๋ฉ”์ธ"์˜ ์ด๋ฆ„๋„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

์—ฌ๊ธฐ์„œ๋Š” ์ฒ˜์Œ์— tls-tris ๋ถ„๊ธฐ๊ฐ€ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์งœ ์„œ๋ฒ„ ์ด๋ฆ„์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋นˆ serverName ํ•„๋“œ๊ฐ€ client-hello ํŒจํ‚ท์˜ ์ผ๋ถ€๋กœ ์ „์†ก๋จ). ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํ•ด๋‹น FakeServerName ํ•„๋“œ๋ฅผ TlsConfig ๊ตฌ์กฐ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ์˜ ํ‘œ์ค€ ServerName ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‚ด๋ถ€ TLS ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ ์›๋ž˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋‹ค๋ฅธ ๊ฒฝ์šฐ TLS ํ•ธ๋“œ์…ฐ์ดํฌ๋Š” ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. TlsConfig ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ํŒŒ์ผ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. TLS/common.go - ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค:

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๋˜ํ•œ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. tls/handshake_client.goTLS ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ FakeServerName ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๊ทธ๊ฒŒ ๋‹ค์•ผ! ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์ž‘์—… ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์Šค์บ”์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— CloudFlare ๊ณ„์ •์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธ€์Ž„์š”, ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? cloudflare์— ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  ๋„๋ฉ”์ธ์„ ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. DoH, WebSocket ๋ฐ ESNI์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ CloudFlare์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. DNS ๋ ˆ์ฝ”๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ํ›„ eSNI ํ‚ค๋ฅผ ์ฟผ๋ฆฌํ•˜์—ฌ ๋„๋ฉ”์ธ์˜ ์ž‘๋™์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dig +short txt _esni.df13tester.info 

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๊ท€ํ•˜์˜ ๋„๋ฉ”์ธ๊ณผ ๋น„์Šทํ•œ ๊ฒƒ์ด ๋ณด์ด๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค Ubuntu ์˜ˆ๋ฅผ ๋“ค์–ด DigitalOcean์˜ VPS๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. ์ฐธ๊ณ ๋กœ, ์ €ํฌ์˜ ๊ฒฝ์šฐ ์ œ๊ณต์—…์ฒด๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ VPS IP ์ฃผ์†Œ๊ฐ€ ๋Ÿฌ์‹œ์•„ ์—ฐ๋ฐฉ ํ†ต์‹ ๊ฐ๋…์ฒญ(Roskomnadzor)์˜ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์˜ฌ๋ผ๊ฐ”์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋น„์Šทํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋†€๋ผ์ง€ ๋งˆ์„ธ์š”. ์ €๋Š” VPS์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด VPN์„ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์ปดํŒŒ์ผ๋œ rsockstun์„ VPS์— ๋ณต์‚ฌํ•˜๊ณ (์ด๊ฒƒ์€ Golang์˜ ๋˜ ๋‹ค๋ฅธ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์˜ ๋น„ํŠธ ์šฉ๋Ÿ‰๋งŒ ๊ด€์ฐฐํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง์ ‘ ์ปดํŒŒ์ผํ•˜๊ณ  ๋ชจ๋“  Linux์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค) ์„œ๋ฒ„ ๋ถ€๋ถ„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๊ทธ๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๋ณด์‹œ๋‹ค์‹œํ”ผ ํด๋ผ์ด์–ธํŠธ๋Š” websocket์„ ์‚ฌ์šฉํ•˜์—ฌ CloudFlare ํ”„๋ŸฐํŠธ์—”๋“œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋„์ด ํ„ฐ๋„๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์„œ๋ฒ„์—์„œ ์—ด์–ด ๋กœ์ปฌ sock5๋ฅผ ํ†ตํ•ด ์ปฌ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

์ด์ œ DPI๊ฐ€ ํ†ต์‹  ์ฑ„๋„์—์„œ ๋ฌด์—‡์„ ๋ณด๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

๋จผ์ €, DoH ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ํ„ฐ๋„๋Ÿฌ๋Š” ๋Œ€์ƒ ๋„๋ฉ”์ธ(ํŒจํ‚ท ๋ฒˆํ˜ธ 1-19)์˜ eSNI ํ‚ค๋ฅผ ์œ„ํ•ด Cloudflare DNS ์„œ๋ฒ„์— ์ ‘์†ํ•œ ๋‹ค์Œ ํ”„๋ŸฐํŠธ์—”๋“œ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ณ  ๋„๋ฉ”์ธ ๋’ค์— ์ˆจ์–ด TLS ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. www.google.com (ํด๋ผ์ด์–ธํŠธ ์‹œ์ž‘ ์‹œ ๊ฐ€์งœ ๋„๋ฉ”์ธ์„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์˜ ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค.) ๊ฐ€์งœ ๋„๋ฉ”์ธ์„ ์ง€์ •ํ•˜๋ ค๋ฉด -fronfDomain ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

์ด์ œ ํ•œ ๊ฐ€์ง€ ๋”. ๊ธฐ๋ณธ์ ์œผ๋กœ CloudFalre ๊ณ„์ • ์„ค์ •์€ ์œ ์—ฐํ•œ SSL๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ Cloudflare ํ”„๋ŸฐํŠธ์—”๋“œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” https ์š”์ฒญ์ด ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€(http) ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ„ฐ๋„์˜ ์„œ๋ฒ„ ๋ถ€๋ถ„์„ ๋น„ SSL ๋ชจ๋“œ( -listen ws:0.0.0.0)๊ฐ€ ์•„๋‹Œ( -listen wss:0.0.0.0)์—์„œ ์‹œ์ž‘ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

์ „์ฒด ์•”ํ˜ธํ™” ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋“ ์ฐฌ๋˜๋Š” ์ „์ฒด(์—„๊ฒฉ) ์„œ๋ฒ„์— ์‹ค์ œ ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ. ๋ชจ๋“œ๋ฅผ ์ „ํ™˜ํ•˜๋ฉด https ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ CloudFlare์˜ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋„์˜ ์„œ๋ฒ„์ธก์— ๋Œ€ํ•ด ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

ํ˜ธ๊ธฐ์‹ฌ ๋งŽ์€ ๋…์ž๋Š” ์ด๋ ‡๊ฒŒ ์งˆ๋ฌธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. "๊ทธ๋Ÿผ ์•„๋ž˜ ๊ณ ๊ฐ์€ ์–ด๋–ป๊ฒŒ ๋˜๋Š” ๊ฑฐ์ฃ ?" Windows"๊ฒฐ๊ตญ ํ„ฐ๋„๋Ÿฌ์˜ ์ฃผ๋œ ์šฉ๋„๋Š” ํšŒ์‚ฌ ์ปดํ“จํ„ฐ์™€ ์„œ๋ฒ„์—์„œ ๋ฐฑ์—”๋“œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ๋Œ€๊ฐœ Windows์ž…๋‹ˆ๋‹ค. ํŠน์ • TLS ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ Windows์šฉ ํ„ฐ๋„๋Ÿฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?" ์ด์ œ Golang์˜ ํŽธ๋ฆฌํ•จ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Kali Linux์—์„œ GOOS=windows ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด Windows์šฉ์œผ๋กœ ์ง์ ‘ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GOARCH=amd64 GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" GOOS=windows  go build -ldflags="-s -w"

๋˜๋Š” 32๋น„ํŠธ ๋ฒ„์ „:

GOARCH=386 GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" GOOS=windows  go build -ldflags="-s -w"

๋ชจ๋‘! ๊ทธ๋ฆฌ๊ณ  ๋” ์ด์ƒ ๋ฒˆ๊ฑฐ๋กœ์›€์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ž‘๋™ํ•œ๋‹ค!

TLS 1.3์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…. 2 ๋ถ€

โ€“w ๋ฐ โ€“s ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ๋Š” ์‹คํ–‰ ํŒŒ์ผ์—์„œ ๋ถˆํ•„์š”ํ•œ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋ช‡ ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ๋” ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ UPX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง•ํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ๋”์šฑ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์‹  ๊ฒฐ๋ก 

๊ธฐ์‚ฌ์—์„œ Golang์œผ๋กœ ์ž‘์„ฑ๋œ ํ„ฐ๋„์˜ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TLS 1.3 ํ”„๋กœํ† ์ฝœ์˜ ๋‹ค์†Œ ํฅ๋ฏธ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ์ƒˆ๋กœ์šด ๋„๋ฉ”์ธ ํ”„๋ก ํŒ… ๊ธฐ์ˆ ์˜ ์‚ฌ์šฉ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ Golang์œผ๋กœ ์ž‘์„ฑ๋œ ๊ธฐ์กด ๋„๊ตฌ๋ฅผ ์กฐ์ •ํ•˜์—ฌ CloudFlare ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋„๋ผ๋กœ ์ฐ์–ด ์ฃฝ์ด๋‹ค - ์œ ๋ช…ํ•œ C2 ๋˜๋Š” Teamserver๋ฅผ ํ†ตํ•ด ์ž‘์—…ํ•  ๋•Œ CobaltStrike Beacon์ด eSNI ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ C2 ์ฑ„๋„, Golang์—์„œ ๊ตฌํ˜„๋˜๊ฑฐ๋‚˜ ๊ธฐ์‚ฌ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์—์„œ ์„ค๋ช…ํ•œ OpenSSL ํŒจ์น˜ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์ค€ C++์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์ƒ๋ ฅ์—๋Š” ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ„ฐ๋„๋Ÿฌ์™€ CloudFlare์˜ ์˜ˆ๋Š” ๊ฐœ๋…์˜ ํ˜•ํƒœ๋กœ ์ œ์‹œ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์˜ ์žฅ๊ธฐ์ ์ธ ์ „๋ง์— ๋Œ€ํ•ด ๋งํ•˜๊ธฐ๋Š” ์—ฌ์ „ํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ CloudFlare๋งŒ์ด eSNI๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์ด๋ก ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ํ”„๋ก ํŒ…์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SNI์™€ eSNI๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด TLS ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฏธ๋ž˜๊ฐ€ ๋งํ•ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ๋กœ์„œ๋Š” "kremlin.ru ํ‘œ์ง€" ์•„๋ž˜์—์„œ ์ž‘์—…ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๊ฝค ๋งค๋ ฅ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์•ˆ ๊ทธ๋ž˜?

์—…๋ฐ์ดํŠธ๋œ ํ„ฐ๋„๋Ÿฌ ์ฝ”๋“œ์™€ ์ปดํŒŒ์ผ๋œ ์‹คํ–‰ ํŒŒ์ผ์€ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์˜ ๋ณ„๋„ ๋ถ„๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. github. GitHub์˜ ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€์— ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํ„ฐ๋„๋Ÿฌ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster