1. ๋ฐฐ๊ฒฝ/์ญ์ฌ โ ์ ์ฑ์ฝ๋๊ฐ '์ํ'์ด ๋ ์๊ฐ
Zeus(์ผ๋ช Zbot)๋ 2007๋ 7์์ ์ฒ์ ๊ด์ฐฐ๋ ์๋์ฐ์ฉ ํธ๋ก์ด๋ชฉ๋ง ๊ณ์ด์ด๋ค. Reuters๋ 2007๋ 7์ 17์ผ ๋ณด๋์์ ์ด ๊ณ์ด ์ ์ฑ์ฝ๋๊ฐ ๋ฏธ๊ตญ ์ ๋ถยท๊ธฐ์ PC์์ ๋ฐ์ดํฐ๋ฅผ ๋นผ๋ด๊ณ ์๋ค๊ณ ์ ํ๋ค. ๊ทธ๋ฐ๋ฐ Zeus๊ฐ ๋ณด์์ฌ์ ๊ธฐ์ต์ ๋จ๋ ์ด์ ๋ ๊ธฐ์ ์ ๋์ด๋๊ฐ ์๋๋ผ ์ ํต ๋ฐฉ์์ด๋ค โ Zeus๋ ์ ์ด์ '์์ฑ๋ ์ ์ฑ์ฝ๋'๊ฐ ์๋๋ผ ํคํธ(kit)๋ก ํ๋ ธ๋ค. ๊ตฌ๋งค์๋ ๊ด๋ฆฌ ์ฝ์์์ ์ค์ ์ ๋ฃ๊ณ , ์น์ธ์ ํธ(๋ณ์กฐ ๊ท์น)๋ฅผ ๋ฃ๊ณ , ํ์ ์ํ ๋ชฉ๋ก์ ์ง์ ํด ์๊ธฐ๋ง์ ๋ด๋ท์ ๋ง๋ค ์ ์์๋ค. Malware-as-a-Service(์ ์ฑ์ฝ๋ ๊ตฌ๋ ํ ์๋น์ค)์ ์ํ์ด๋ฉฐ, ์ดํ EmotetยทQakbotยทLockBit ๊ณ์ด์ด ๋ฐ๋ณตํ ๋น์ฆ๋์ค ๋ชจ๋ธ์ด ์ฌ๊ธฐ์ ์์๋๋ค.
Zeus์ ์ง์ง ๋ฌด๊ธฐ๋ ์ฌ์ฉ์๋ฅผ ์์ด๋ ๋ฐฉ์์ด์๋ค. ์ฌ์ฉ์๊ฐ ์ ์ HTTPS ์ฌ์ดํธ์ ์ ์ํ ์ํ์์, ์ ์ฑ์ฝ๋๊ฐ ๋ธ๋ผ์ฐ์ ๋ด๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ํ๋ฉด์ ๋ฐ๊พผ๋ค. ์ํธํ๋ ํต์ ๊ตฌ๊ฐ์ ์๋ฌด ๋ฌธ์ ๊ฐ ์๋ค. ๊ณต๊ฒฉ ์ง์ ์ ์ํธ๊ฐ ํ๋ฆฐ ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ค. ์ด ๊ธฐ๋ฒ์ MitB(Man-in-the-Browser, ๋ธ๋ผ์ฐ์ ๋ด๋ถ์ ๊ณต๊ฒฉ) ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- 2009๋ 6์ โ Prevx ์กฐ์ฌ: Zeus๊ฐ 74,000๊ฐ ์ด์์ FTP ๊ณ์ ์๊ฒฉ์ฆ๋ช ์ ํ์ทจํ๋ค. ํผํด ์ฌ์ดํธ ๋ชฉ๋ก์ Bank of America, NASA, Monster.com, Oracle, Cisco, Amazon, ABC, Play.com, BusinessWeek ๋ฑ์ด ํฌํจ๋ผ ์์๋ค. ์ทจ์ฝ์ ์ ๋ซ์ ๊ฒ ์๋๋ผ, ์ง์ PC์์ ๊ด๋ฆฌ์ ์๊ฒฉ์ฆ๋ช ์ ๊ธ์ด๋ชจ์ ๊ฒ์ด์๋ค.
- 2009๋ โ Damballa ์ถ์ : ๋ฏธ๊ตญ์์๋ง ์ฝ 360๋ง ๋๊ฐ ๊ฐ์ผ๋๊ณ , ๋น์ ์ธํฐ๋ท ์ต๋ ๊ท๋ชจ์ ๋ด๋ท์ผ๋ก ํ๊ฐ๋๋ค.
- 2010๋ 10์ โ FBI 'Operation Trident Breach': ๋์ ๋ฝ ๊ธฐ๋ฐ ์กฐ์ง์ด ์ธ๊ณ์ PC๋ฅผ ๊ฐ์ผ์์ผ ์ํ ๊ณ์ข๋ฅผ ํ์ทจํ ์ฌ๊ฑด์ผ๋ก FBI๊ฐ ๋๋์ ๊ฒ๊ฑฐ๋ฅผ ๋ฐํํ๋ค. ์๋ฒ์ ์ ํ์ ์ด์๋ค โ ์คํธ ๋ฉ์ผ โ ๊ธฐ์ ยท์ง์์ฒด ์ง์ ๊ฐ์ผ โ ๊ณ์ข ๋น๋ฐ๋ฒํธ ์บก์ฒ โ ๋ฎฌ(money mule) ๊ณ์ข ๋คํธ์ํฌ๋ก ๋ถ์ฐ ์ด์ฒด.
- 2011๋ โ ์์ค์ฝ๋ ์ ์ถ: ์ ์์๊ฐ '์ํด'๋ฅผ ์ ์ธํ๋ฉฐ ์์ค์ฝ๋์ ํ๋งค ๊ถ๋ฆฌ๋ฅผ ๊ฒฝ์ ์ ํ SpyEye ์ ์์์๊ฒ ๋๊ฒผ๋ค๊ณ ์๋ ค์ก๋ค(์ ๋ฌธ๊ฐ๋ค์ ๋ฏธ๋ผ๋ผ๊ณ ๊ฒฝ๊ณ ํ๋ค). ์์ค๊ฐ ํ๋ฆฌ์ CitadelยทIce IX ๋ฑ ์์ญ ๊ฐ ๋ณ์ข ์ด ์์์ก๋ค. ์์ค ์ ์ถ์ ์ ์ฑ์ฝ๋ ์ํ๊ณ๋ฅผ '์๊ตฌํ'ํ๋ค.
- 2011๋ โ GameOver ZeuS(GOZ): Evgeniy Bogachev๊ฐ ๋ง๋ ํ์์. ๋ด๋ถ ์ด๋ฆ์ Mapp 13. ์ค์ C2๋ฅผ ์์ค P2P ๋ด๋ท์ผ๋ก ์งํํ๊ณ , 2012โ13๋ ์ ์ฑ๊ธฐ์๋ 50๋ง~100๋ง ๋๊ฐ ๊ฐ์ผ๋๋ค.
- 2014๋ 6์ โ Operation Tovar: ๋ฏธ๊ตญ ๋ฒ๋ฌด๋ถยทFBIยท์๊ตญ NCA ๋ฑ 13๊ฐ๊ตญ์ด GOZ ์ธํ๋ผ๋ฅผ ๋์ ์์ยท์ฑํฌํํ๋ค. Bogachev๋ ๊ธฐ์๋๊ณ ํ์๊ธ 300๋ง ๋ฌ๋ฌ(๋น์ ์ฌ์ด๋ฒ๋ฒ์ฃ์ ์ต๊ณ ์ก)๊ฐ ๊ฑธ๋ ธ์ง๋ง ๋ฌ์์์ ๊ฑฐ์ฃผํ๋ฉฐ ์ฒดํฌ๋์ง ์์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฌ๋ ์ ๋ผ ์ฝ๋์ 90%๋ฅผ ๊ณต์ ํ๋ newGOZ๊ฐ ๋ฑ์ฅํ๋ค.
- ๊ณ์ด๋ช : Zeus / Zbot / Zeus 1.xยท2.x โ Jabber Zeus โ GameOver ZeuS(GOZ/Zeus3) โ newGOZ
- ๋ฑ์ฅ: 2007๋ 7์ (Microsoft Windows) ยท 2009๋ 3์ ์ดํ ๋๊ท๋ชจ ํ์ฐ
- ๋ถ๋ฅ: ๋ฑ ํน ํธ๋ก์ด๋ชฉ๋ง + ๋ด๋ท ๋น๋(ํคํธ) โ MitB(Man-in-the-Browser) / ํผ ๊ทธ๋๋น / ์น์ธ์ ํธ
- ํต์ฌ ๊ธฐ๋ฒ: ์ฌ์ฉ์ ๋ชจ๋ API ํํน์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ฌธ ํผ ๋ฐ์ดํฐ ํ์ทจ + ์๋ต HTML ์ค์๊ฐ ๋ณ์กฐ(์น์ธ์ ํธ)
- ์ค์ ํ์ผ:
config.binโ RC4๋ก ์ํธํ๋์ด ๋ฐฐํฌ, ํ๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์์๋ง ์กด์ฌ - ์ฃผ์ ์ธ๋ฌผ: Evgeniy Bogachev(๊ฒ์์ค๋ฒ ZeuS, ๋ฏธ ๊ธฐ์ยทํ์๊ธ $3M) ยท Hamza Bendelladj(SpyEye, 2013๋ ์ธ๋๋ค์์์ ์ฒดํฌยท๋ฏธ๊ตญ ์กํ)
- ์ฐ๊ณ ํ๊ดด: GOZ๋ CryptoLocker ๋์ฌ์จ์ด(2013)์ ์ฃผ ์ ํฌ ๊ฒฝ๋ก โ 20๋ง~25๋ง ๋๊ฐ ํ์
- ํผํด ๊ท๋ชจ: GOZ ์ํ ์ฌ๊ธฐ ํผํด ์ฝ 1์ต ๋ฌ๋ฌ ยท ๋ฏธ๊ตญ ๊ฐ์ผ ์ถ์ 360๋ง ๋(2009) ยท FTP ์๊ฒฉ์ฆ๋ช 74,000๊ฑด(2009)
- ์ข ๊ฒฐ: 2014-06 Operation Tovar(13๊ฐ๊ตญ)๋ก P2P ๋ด๋ท ์ค๋จ โ ๋จ, ์์ค ์ ์ถ๋ก ๋ณ์ข ์ ๊ณ์
2. ๊ฐ์ผยท์ ํ ๊ฒฝ๋ก โ '์ฌ๋'์ ๋๋ ์ ํต ํผ์ฑ + ๋ด๋ท ์๊ฐ ์ ํฌ
Zeus๋ ์์ด ์๋๋ค. ์ค์ค๋ก ๋คํธ์ํฌ๋ฅผ ๋์๋ค๋์ง ์๋๋ค. ๋์ ์ฌ๋์ ํด๋ฆญ์ํค๋ ๋ฐ ๋ชจ๋ ์์์ ์ด๋ค. ๊ทธ๋์ 20๋ ์ด ์ง๋ ์ง๊ธ๋ ๋๊ฐ์ ๊ฒฝ๋ก๊ฐ ํตํ๋ค.
- โ ์คํธยทํผ์ฑ ๋ฉ์ผ: ์จ๋ผ์ธ ์ผํ๋ชฐยท๊ธ์ต๊ธฐ๊ดยทํต์ ์ฌ๋ฅผ ์ฌ์นญํ ๋ฉ์ผ์ด ๋ณธ๋ฌธ ๋งํฌ๋ฅผ ํด๋ฆญํ๊ฒ ๋ง๋ ๋ค. ๋งํฌ๋ ์ด๋ฏธ ์นจํด๋ ์ ์ ์น์ฌ์ดํธ๋ก ์ฐ๊ฒฐ๋๋ค(์ ์ ๋๋ฉ์ธ์ด๋ฏ๋ก URL ํํฐ๋ง์ ํต๊ณผํ๋ค). GOZ๋ ์ด ๋ฐฉ์์ผ๋ก ๋ค์ด๋ก๋๋๋ค.
- โก ์ต์คํ๋ก์ ํท: ๊ตฌํ ๋ธ๋ผ์ฐ์ ยทํ๋ฌ๊ทธ์ธ(JavaยทPDFยทFlash) ์ทจ์ฝ์ ์ ์๋์ผ๋ก ๊ณจ๋ผ ์คํํ๋ ํท(Blackhole ๋ฑ)์ด ์ ์ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํด๋ฆญ๋ง ํด๋ ๊ฐ์ผ๋๋ฏ๋ก, ์ด ์๊ธฐ ๋ด๋ท ํ์ฐ ์๋๊ฐ ํญ๋ฐ์ ์ด์๋ค.
- โข ์ฌํ๊ณตํ ๋ณด์กฐ ์๋จ: '๋ฐ์ด๋ฌ์ค ๊ฐ์ผ' ๊ฒฝ๊ณ ํ์ ์ผ๋ก ๊ฐ์ง ๋ฐฑ์ ์ค์น๋ฅผ ์ ๋ํ๊ฑฐ๋, ๊ธฐ์ ์ง์ ์ฌ๊ธฐ๋ฅผ ๋ถ์ฌ ์ฌ์ฉ์๊ฐ ์ค์ค๋ก ์๊ฒฉ ์ ์ด๋ฅผ ํ์ฉํ๊ฒ ๋ง๋ค๊ธฐ๋ ํ๋ค. ์ ์ฑ์ฝ๋์ ์ ๋ฐ์ ๊ธฐ์ ์ด ์๋๋ผ ์ํฉ๊ทน์ด๋ค.
- โฃ ๋๋กญํผ โ ๋ก๋ 2๋จ๊ณ: ๊ฐ์ผ์ ํ ๋ฒ์ ๋๋์ง ์๋๋ค. 1์ฐจ ์คํ
ํ์ผ์ ์ต์ ๊ธฐ๋ฅ๋ง(์ค์นยท์์กด) ๋ด๋นํ๊ณ , ์ดํ
url_loader์์ ๋ฐ์์จ 2์ฐจ ํ์ด๋ก๋๊ฐ ๋ณธ์ฒด(์น์ธ์ ํธยทํํน ๋ชจ๋)๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ค. ์ฆ ๋์คํฌ์๋ ์๋ฌด๊ฒ๋ ์ ๋จ๊ธฐ๋ 'ํ์ผ๋ฆฌ์ค' ๊ตฌ์ฑ์ด ์ด๋ฏธ 10๋ ์ ์ ํ์ค์ด์๋ค. - โค ๋ด๋ท์ด ๋ด๋ท์ ์ ํฌ (GOZ): GOZ๋ ๊ฐ์ผ PC๋ฅผ ์คํธ ๋ฐ์ก ์ธํ๋ผ๋ก ์ฌํ์ฉํด ์๊ธฐ ์์ ์ ๋ณต์ ์ ํฌํ๋ค. ๊ฒ๋ค๊ฐ ์ค์ ์๋ฒ ์์ด P2P๋ก ๋ด๋ผ๋ฆฌ ํต์ ํด ํ ๋๋ฅผ ์ง์๋ ๋ด๋ท ์ ์ฒด๊ฐ ์ ์ง๋๋ค.
- โฅ ์กฐ์ฉํจ์ด ์ค๊ณ ๋ชฉํ: ๊ฐ์ผ ํ ์ฆ์ ๋์ ํ์น์ง ์๋๋ค. ์ฃผ๊ฐ ๋จ์๋ก ์ ๋ณตํ๋ฉฐ ๊ณ์ข ์๊ณ ยท๊ฑฐ๋ ํจํด์ ํ์ตํ๊ณ , ์ ๋นํ ๊ธ์ก๋ง ๋ฎฌ ๊ณ์ข๋ก ๋ถ์ฐ ์ด์ฒดํ๋ค. ์๊ฐ์ด์ฒด ์ฐจ๋จยทํ๋ ๋ฃฐ์ ํผํ๋ ค๋ ๋ชฉ์ ์ด๋ค.
3. ๋์ ์๋ฆฌ ์์ธ โ ์ํธํ ๊ตฌ๊ฐ์ ๋ฉ์ฉกํ๋ฐ ๊ณ์ข๊ฐ ๋ฐ๋๋ ์ด์
Zeus ๋ณธ์ฒด๋ ๋๋ต ๋ค์ฏ ๊ฐ์ ๋ถํ์ผ๋ก ๋๋๋ค. ์ค์ ์์ โ ํํน ์ค์น โ ํ์ทจยท๋ณ์กฐ โ ์ ๋ก๋ โ ๋ช ๋ น ํด๋ง. ์์๋๋ก ๋ณด๋ฉด ์ '๋คํธ์ํฌ ๋ณด์'๋ง์ผ๋ก๋ ๋ง์ ์ ์๋์ง๊ฐ ๋ถ๋ช ํด์ง๋ค.
(1) ์ค์ ์์ โ config.bin. ๋ณธ์ฒด์ ์ฒซ ํ๋์
url_config์์ ์ค์ ํ์ผ์ ๋ด๋ ค๋ฐ์ RC4๋ก ๋ณตํธํํ๋ ๊ฒ์ด๋ค.
์ค์ ์๋ ์ต์ ๋ค ๊ฐ์ URL์ด ๋ค์ด ์๋ค.
url_config : ์ค์ ์ฌ๋ฐฐํฌ ์ฃผ์ (์ฃผ๊ธฐ์ ์ฌ์์ฒญ = ๋ด ์์กด์ ํธ)
url_loader : 2์ฐจ ํ์ด๋ก๋(๋ก๋/๋์ฌ์จ์ด) ๋ฐฐํฌ ์ฃผ์
url_server : ํ์ทจ ๋ฐ์ดํฐ ์
๋ก๋ + ๋ช
๋ น ํด๋ง (๊ฒ์ดํธ)
url_compip : ๋ด๋ถ ๋ด ์ถ์ /ํต๊ณ์ฉ ์ฃผ์
filewebinject: ํ๋ฉด ๋ณ์กฐ ๊ท์น ๋ชฉ๋ก (์๋ ์น์ธ์ ํธ)
์ค์ ์ ์๋ฒ์์ ๋ด๋ ค๋ฐ๊ฒ ๋ง๋ ๊ฒ์ด ๊ฒฐ์ ์ ์ด์๋ค. ๊ณต๊ฒฉ์๋ ๋ด์ ๋ค์ ๊ฐ์ผ์ํค์ง ์๊ณ ๋ ํ์ ์ํ์ ๋ฐ๊พธ๊ณ , ์น์ธ์ ํธ ๊ท์น์ ๊ฐฑ์ ํ๊ณ , ํ์ด๋ก๋๋ฅผ ๊ต์ฒดํ ์ ์๋ค. ๋ด๋ท์ '์ด์ ์๋ ์๋น์ค'๊ฐ ๋๋ค.
(2) ํํน ์ค์น โ ํ๋ฌธ์ ํ์น๋ ์๊ฐ. Zeus๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ๋ ์ง์ (์ฃผ๋ก IAT/ํจ์ ํฌ์ธํฐ)์ ์๊ธฐ ํจ์๋ก ๊ฐ์๋ผ์ด๋ค. ์ดํ ๋ธ๋ผ์ฐ์ ๋ ์๋ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์คํํ์ง๋ง, ๊ทธ ๋ฐ์ดํฐ๋ ์ด๋ฏธ ๊ณต๊ฒฉ์์ ํจ์๋ฅผ ํ ๋ฒ ํต๊ณผํ๋ค. ๋ฌธ์ํ๋ ๋ํ ํํน ๋์์ ๋ค์๊ณผ ๊ฐ๋ค.
| ๋ชจ๋ | ํํน ๋์(์) | ์ป๋ ๊ฒ |
|---|---|---|
wininet.dll | HttpSendRequestW/A, InternetReadFile, InternetWriteFile | ์ ์ก ์ง์ ์ HTTP ๋ณธ๋ฌธยท์๋ต HTML (ํ๋ฌธ) |
ws2_32.dll | send / recv / WSASend / WSARecv / closesocket | ์์ผ ๋ ๋ฒจ ํ๋ฌธ, ๋น-HTTP ํธ๋ํฝ |
crypt32.dll | CryptUnprotectData, PFXImportCertStore | ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ ๋น๋ฐ๋ฒํธ ๋ณตํธํ |
user32.dll | ์๋์ฐยทํค๋ณด๋ ๊ด๋ จ API | ์ ๋ ฅ ์บก์ฒ, ์ฐฝ ๋จ์ ํผ ๊ทธ๋๋น |
nspr4/NSS(nss3) | PR_Read / PR_Write | ํ์ด์ดํญ์ค ํธ๋ํฝ ํ๋ฌธ |
ํต์ฌ: ํค๋ก๊น ์ "๋ฌด์์ ์ ๋ ฅํ๋์ง"๋ฅผ ํ์น๋ค. ํผ ๊ทธ๋๋น์ "HTTPS๊ฐ ๋ง๋ ํ๋ฌธ ํ๋"๋ฅผ ํต์งธ๋ก ํ์น๋ค. ์ฌ์ฉ์๊ฐ ํ๋ฉด์์ ๋ณธ ๊ฐ๊ณผ ์๋ฒ๋ก ๊ฐ ๊ฐ์ด ๋ค๋ฅผ ์ ์๋ค๋ ๋ป์ด๋ฉฐ, ์ด๋ ์ ์ก ๊ตฌ๊ฐ ์ํธํ(TLS)๋ก ๋ง์ ์ ์๋ค.
(3) ์น์ธ์ ํธ โ ํ๋ฉด๋ง ๋ฐ๊พผ๋ค. ์๋ฒ ์๋ต HTML์ด ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋๊ธฐ ์ง์ ์ ๊ท์น์ ๋ฐ๋ผ ๋ฌธ์์ด์ ์นํํ๋ค. ๊ท์น ๋ฌธ๋ฒ์ ๋จ์ํ๋ค.
<webinject>
<url>*/online/*/transfer.php</url> <!-- ํ์ URL ๋ง์คํฌ -->
<data_before>accountid" value="</data_before>
<data_after>"</data_after>
<data_inject>999000111</data_inject> <!-- ๋ผ์ ๋ฃ์ ๊ฐ(๋ฎฌ ๊ณ์ข) -->
<data_end>__END__</data_end>
</webinject>
์ฌ์ฉ์๋ ์๊ธฐ ๊ณ์ข 11122233344455๊ฐ ํ๋ฉด์ ์ฐํ ๊ฒ์ ํ์ธํ๊ณ ์ด์ฒด
๋ฒํผ์ ๋๋ฅธ๋ค๊ณ ๋ฏฟ๋๋ค. ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด๋ธ ๊ฐ์ ๊ณต๊ฒฉ์ ๊ณ์ข
999000111 ์ด๋ค. ์ธ์ฆ์๋ ์ ์, URL๋ ์ ์, ๊ฒฝ๊ณ ๋ ์๋ค.
์น์ธ์ ํธ๋ ์ฌ๊ธฐ์ ๋๋์ง ์๋๋ค. ์๊ณ ๋ฅผ ํฌ๊ฒ ๋ณด์ด๊ฒ ํ๊ณ (์ฌํ ์ธ์ง ์ง์ฐ), ์ถ๊ฐ ์ธ์ฆ ์ ๋ ฅ์ฐฝ์ ๋ผ์ ๋ฃ๊ณ (OTP ํ์ทจ), ๊ฑฐ๋๋ด์ญ ๋ชฉ๋ก์์ ๊ณต๊ฒฉ์ ์ด์ฒด๋ฅผ ์ง์ฐ๋ ๊ฒ๊น์ง ๊ฐ์ ๋ฌธ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๋ค. ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ '์ฌ์ค' ์์ฒด๊ฐ ๊ณต๊ฒฉ์์ ์ถ๋ ฅ๋ฌผ์ด ๋๋ค.
(4) C2 ํต์ ๊ณผ ์๋. ํ์ทจ ๋ฐ์ดํฐ๋ ์ ์ ์น ํธ๋ํฝ์ ์์ธ HTTP POST
๊ฒ์ดํธ๋ก ๋๊ฐ๋ค. ํต์ ๋ณดํธ๋ฅผ ์ํด DGA(๋๋ฉ์ธ ์์ฑ ์๊ณ ๋ฆฌ์ฆ)ยทfast flux๋ก ์ฃผ์๋ฅผ
ํ์ ์์ผฐ๊ณ , GOZ๋ ์ฌ๊ธฐ์ P2P + ์ํธํ๋ฅผ ์น์ด "ํ
์ดํฌ๋ค์ด ๋ถ๊ฐ๋ฅ์
๊ฐ๊น์ด" ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์๋ค. ํธ์คํธ์์๋ ์ ์ ํ๋ก์ธ์ค(svchost.exe ๋ฑ)์
์ฝ๋๋ฅผ ์ฃผ์
ํ๊ณ , ๋ฃจํธํทยท๋ฐฉํ๋ฒฝ ์์ธ ๋ฑ๋ก์ผ๋ก ํ์ ์ ๊ฐ์ท๋ค.
(5) ์กฐ์ง ๋ถ์ โ ๋ฒ์ฃ์ ๊ณต๊ธ๋ง. Zeus ์ํ๊ณ๋ ์ญํ ์ด ์ชผ๊ฐ์ ธ ์์๋ค. ํคํธ ํ๋งค์ โ ๋ด๋ท ์ด์์ โ ์น์ธ์ ํธ ํ๋งค์ โ ๋ฎฌ(ํ๊ธํ) ์กฐ์ง โ (GOZ) ๋์ฌ์จ์ด ์ด์์. ํ ๋จ๊ณ๊ฐ ์ ๋ฐ๋ผ๋ ์ ์ฒด๊ฐ ๋ฉ์ถ์ง ์๋๋ค. 2013๋ GOZ๊ฐ CryptoLocker ๋์ฌ์จ์ด๋ฅผ ์ ํฌํ ๊ฒ์ด ์ด ๊ตฌ์กฐ์ ์์ฑํ์ด๋ค โ ๋ฑ ํน ๋ด๋ท์ด ๋์ฌ์จ์ด ์ ํต๋ง์ผ๋ก ์ ํ๋๊ณ , ์ดํ ๋์ฌ์จ์ด ์ํ๊ณ์ ํ์ค ๊ฒฝ๋ก๊ฐ ๋๋ค.
4. ํผํด ๊ท๋ชจ/์ํฅ โ ์ซ์๋ก ๋ณด๋ 2007โ2014
- 2009 ยท ๋ฏธ๊ตญ 360๋ง ๋ ๊ฐ์ผ ์ถ์ (Damballa) โ "์ธํฐ๋ท ์ต๋ ๋ด๋ท" ํ๊ฐ. ์ดํ ์ด๋ค ๋ด๋ท๊ณผ ๋น๊ตํด๋ ์ต์์ ๊ท๋ชจ๋ค.
- 2009 ยท FTP ์๊ฒฉ์ฆ๋ช 74,000๊ฑด ํ์ทจ(Prevx) โ Bank of America, NASA, Monster.com, Oracle, Cisco, Amazon, ABC, Play.com, BusinessWeek ๋ฑ์ด ํผํด ๋ชฉ๋ก์ ์ฌ๋๋ค.
- 2010 ยท FBI 'Operation Trident Breach' โ ๋์ ๋ฝ ์กฐ์ง์ ์ํ ์ฌ๊ธฐ ์ฌ๊ฑด์ผ๋ก ๋ฏธ๊ตญยท์ ๋ฝ์์ ๋๊ท๋ชจ ๊ฒ๊ฑฐ๊ฐ ๋ฐํ๋๋ค. ์ด๋ ๊ณต๊ฐ๋ ์๋ฒ์ด '๋ฎฌ ๊ณ์ข๋ก ๋ถ์ฐ ์ด์ฒด'๋ค.
- 2012โ13 ยท GameOver ZeuS ์ ์ฑ๊ธฐ 50๋ง~100๋ง ๋ ๊ฐ์ผ. ์ํ ์ฌ๊ธฐ ํผํด ๊ท๋ชจ๋ ์ฝ 1์ต ๋ฌ๋ฌ๋ก ์ง๊ณ๋๋ค.
- 2013 ยท CryptoLocker โ GOZ๋ฅผ ํตํด ์ ํฌ๋ ๋์ฌ์จ์ด๋ก 20๋ง~25๋ง ๋๊ฐ ํ์ ์ด ๋๋ค. ์์ต ์ถ์ ์ 2013๋ 10~12์๋ง ์ต๋ 2,700๋ง ๋ฌ๋ฌ(Josephine Wolff)์ ์ ๊ธฐ๊ฐ ์ฝ 300๋ง ๋ฌ๋ฌ(Michael Sandee)๋ก ํฌ๊ฒ ์๊ฐ๋ฆฐ๋ค โ ๋์ฌ์จ์ด ์์ต ํต๊ณ๋ ์ด๋ ๊ฒ ๋ถ์ ํํ๋ค๋ ์ฌ์ค ์์ฒด๊ฐ ์ด ์บ ํ์ธ์ ํน์ง์ด๋ค.
- 2014-06-02 ยท Operation Tovar โ 13๊ฐ๊ตญ ์ฐธ์ฌ. GOZ ์ธํ๋ผ๋ฅผ ์์ยท์ฑํฌํํ๊ณ CryptoLocker ํค๋ฅผ ๋ฐฐํฌํ๋ค. ๋ค๋ง P2P ๊ตฌ์กฐ ๋๋ฌธ์ ์์ ํ ์๋ฉธ์ ์๋์๊ณ , ๋น์ ์ฐ๊ตฌ์๋ค๋ "ํ ์ดํฌ๋ค์ด์ 2์ฃผ์ง๋ฆฌ ๊ธฐํ ์ฐฝ(window)"์ด๋ผ๊ณ ํํํ๋ค โ ๋ด๋ท์ ๋ฉ์ถ๋ ๊ฒ๊ณผ ์์ ๋ ๊ฒ์ ๋ค๋ฅด๋ค.
- 2014 ยท Bogachev ๊ธฐ์ + ํ์๊ธ 300๋ง ๋ฌ๋ฌ โ ๋น์ ์ฌ์ด๋ฒ๋ฒ์ฃ์ ์ต๊ณ ์ก. ๊ทธ๋ ๋ฌ์์์ ๊ณต๊ฐ์ ์ผ๋ก ๊ฑฐ์ฃผํ๋ฉฐ ์ฒดํฌ๋์ง ์์๋ค.
- 2014 ยท newGOZ ์ฌ๋ฑ์ฅ โ ์ฝ๋ 90% ๊ณต์ , P2P๋ ์ ๊ฑฐํ๊ณ fast flux๋ก ๋์ฒด. ํ ์ดํฌ๋ค์ด ๋ ๋ฌ ๋ง์ด์๋ค.
- ์ถ๊ฐ ์ ํฉ ยท ์คํ์ด ํ์ โ ๊ฐ์ผ PC์์ ์กฐ์ง์ยทํฐํคยท์ฐํฌ๋ผ์ด๋ยท๋ฏธ๊ตญ ๊ด๋ จ ๋ฏผ๊ฐ ์ ๋ณด ๊ฒ์ ํ์ ์ด ๋ฐ๊ฒฌ๋ผ ๋ฌ์์ ์ ๋ถ ์ฐ๊ณ ๊ฐ๋ฅ์ฑ์ด ์ ๊ธฐ๋๋ค. ๋ฒ์ฃ ๋ด๋ท๊ณผ ๊ตญ๊ฐ ํ์์์ ๊ฒฝ๊ณ๊ฐ ํ๋ฆฟํด์ง ๋ํ ์ฌ๋ก๋ค.
127.0.0.1๊ณผ ๋ฌธ์์ฉ ์์ฝ ๋๋ฉ์ธ(*.lab.local)์ด๋ฉฐ,
์ธํฐ๋ท๊ณผ ๋ถ๋ฆฌ๋ ๊ฒฉ๋ฆฌ ๋ฉ VM์์๋ง ์คํ์ ์ ์ ๋ก ํฉ๋๋ค.
์ค์ ์์คํ
ยทํ์ธ ์์ฐยท์ค์ ๊ธ์ต ์ฌ์ดํธ์ ๋ํ ์คํ์ ๋ถ๋ฒ์
๋๋ค.
5. PoC โ ๊ต์ก์ฉ ๋ชจ์ ์ฝ๋ 4์ข (๋ก์ปฌ ์ค์ต ์ ์ )
Zeus์ 4๋ ๊ตฌ์ฑ ์์ โ โ ์ํธํ๋ ์ค์ ํ์ผ, โก ์น์ธ์ ํธ ํ๋ฉด ๋ณ์กฐ,
โข API ํํน(ํผ ๊ทธ๋๋น), โฃ ๋ก๊ทธ ์๊ด๋ถ์ ํ์ง โ ๋ฅผ ๊ฐ๊ฐ ์ต์ ํํ๋ก ์ฌํํ๋ค.
์๋ ์คํ ๊ฒฐ๊ณผ๋ ์ด ๊ธ์ ์ฐ๋ฉฐ ์ค์ ๋ก ์คํํ ์ถ๋ ฅ์ด๋ค
(๋ฉ VM, Python 3 / gcc, ๋ชจ๋ ๋์ 127.0.0.1).
PoC โ config.bin ๊ตฌ์กฐ ์ฌํ โ RC4 ๋ณตํธํ + ์ค์ /์น์ธ์ ํธ ํ์ฑ
# zeus_poc.py (๋ฐ์ท) โ ์ค์ ์
์ฑ์ฝ๋ ์๋. ์ค์ ํ์ผ '๊ตฌ์กฐ'๋ง ์ฌํํ๋ค.
def rc4(key: bytes, data: bytes) -> bytes:
S = list(range(256)); j = 0
for i in range(256):
j = (j + S[i] + key[i % len(key)]) & 0xFF
S[i], S[j] = S[j], S[i]
out = bytearray(); i = j = 0
for ch in data:
i = (i + 1) & 0xFF; j = (j + S[i]) & 0xFF
S[i], S[j] = S[j], S[i]
out.append(ch ^ S[(S[i] + S[j]) & 0xFF])
return bytes(out)
MOCK_CONFIG = b"""<config>
<url_config>https://127.0.0.1:8443/cfg/gen1.bin</url_config>
<url_loader>https://drop.bank-lab.local/pay/calc.png</url_loader>
<url_server>https://c2.lab.local:8443/gate.php</url_server>
<filewebinject>
<webinject>
<url>*/online/*/login.php</url>
<data_before>accountid" value="</data_before>
<data_after>"</data_after>
<data_inject>999000111</data_inject>
</webinject>
</filewebinject>
</config>"""
key_val = b"lab-only-rc4-key-0001"
config_bin = base64.b64encode(rc4(key_val, MOCK_CONFIG)) # ๋์คํฌ์ ๋จ๋ '์ํธ๋ฌธ'
plain = rc4(key_val, base64.b64decode(config_bin)) # ์คํ ์ ๋ฉ๋ชจ๋ฆฌ์์๋ง ๋ณตํธํ
urls = dict(re.findall(r"<(url_\w+)>([^<]+)</", plain.decode()))
์คํ ๊ฒฐ๊ณผ(์ด๋ฒ ์คํ ์ค์ ์ถ๋ ฅ):
[โ ] config.bin(๋ชจ์) ํฌ๊ธฐ: 724 ๋ฐ์ดํธ (ํ๋ฌธ 541 ๋ฐ์ดํธ)
[โ ] ๋ณตํธํ ์ฑ๊ณต โ ์ค์ ํญ๋ชฉ 4๊ฐ
url_config -> https://127.0.0.1:8443/cfg/gen1.bin
url_loader -> https://drop.bank-lab.local/pay/calc.png
url_server -> https://c2.lab.local:8443/gate.php
url_compip -> https://127.0.0.1:8443/comp.php
[โ ] ์น์ธ์ ํธ ๊ท์น: url=*/online/*/login.php data_before='accountid" value="' data_inject=999000111
โป url_config = ์ค์ ์ฌ๋ฐฐํฌ, url_loader = 2์ฐจ ํ์ด๋ก๋, url_server = ํ์ทจ ๋ฐ์ดํฐ ์
๋ก๋/๋ช
๋ น ํด๋ง
๊ตํ: ์ค์ ์ด ์๋ฒ์์ ๋ด๋ ค์จ๋ค๋ ์ ์ด Zeus๋ฅผ '์ง์ ๊ฐ๋ฅํ ์๋น์ค'๋ก ๋ง๋ค์๋ค. ๊ทธ๋์ ํ์ง๋ ํ์ผ์ด ์๋๋ผ ํ๋(์ค์ ํ์ผ์ ์ ๊ธฐ์ ์ฌ์์ฒญ, ํน์ ๊ฒฝ๋ก์ ๋ฐ๋ณต POST)์ ๋ด์ผ ํ๋ค.
PoC โก Man-in-the-Browser โ ์๋ต HTML์ ๋ธ๋ผ์ฐ์ ์ ๋๊ธฐ๊ธฐ ์ ์ ์นํ
LOCAL_BANK_PAGE = """<form action="https://bank-lab.local/online/transfer.php" method="POST">
<input name="accountid" value="11122233344455"> <!-- ์ ์ ์์ทจ ๊ณ์ข(๋ณธ์ธ) -->
<input name="amount" value="10000000"></form>"""
def webinject(page, url, rule):
"""์น์ธ์ ํธ: URL ๋ง์คํฌ ๋งค์นญ โ ์๋ฒ ์๋ต์ 'ํ์๋๊ธฐ ์ '์ ์นํํ๋ค."""
if not re.search(rule["url"].replace("*", ".*"), url):
return page # ํ์ ์ด ์๋๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ค (= ์๋)
pat = re.escape(rule["data_before"]) + r"(.*?)" + re.escape(rule["data_after"])
return re.sub(pat, rule["data_before"] + rule["data_inject"] + rule["data_after"], page)
tampered = webinject(LOCAL_BANK_PAGE, "https://bank-lab.local/online/transfer.php", rule)
์คํ ๊ฒฐ๊ณผ(์ด๋ฒ ์คํ ์ค์ ์ถ๋ ฅ):
[โก] ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ๋ฉด์ ์์ทจ ๊ณ์ข ํ๋:
๋ณ์กฐ ์ : 11122233344455 (๋ณธ์ธ ๊ณ์ข)
๋ณ์กฐ ํ: 999000111 (๋ฎฌ/๊ณต๊ฒฉ์ ๊ณ์ข) โ ์ฌ์ฉ์๋ 11122233344455 ๋ฅผ ๋ดค๋ค๊ณ ๋ฏฟ์
โป ํต์ฌ: ๊ณ์ข๋ฒํธ๋ '์ฌ์ฉ์์ ๋'์์๋ง ๋ฐ๋๋ค. ์๋ฒยท๋คํธ์ํฌ ํ๋ฆ์ ์ ์ HTTPS.
์ด 3์ค์ด Zeus์ ์ ๋ถ๋ผ๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๋ค. TLS ์ธ์ฆ์ยท์๋ฌผ์ ํ์ยทURL ํ์๋ ๋ชจ๋ '์ ์'์ด๋ค. ์ฌ์ฉ์์๊ฒ ๋จ์ ์ ์ผํ ๊ฒ์ฆ ์๋จ์ ๋ธ๋ผ์ฐ์ ์ ๋ค๋ฅธ ์ฑ๋(๋ชจ๋ฐ์ผ ์ฑ ์๋ฆผ, ๋ฌธ์, ํตํ, ์์ ๋ค๋ฅธ ๊ธฐ๊ธฐ)๋ก ์ต์ข ์ด์ฒด ๋ด์ญ์ ํ์ธํ๋ ๊ฒ์ด๋ค.
PoC โข API ํํน ์๋ฆฌ โ ํผ ๊ทธ๋๋น์ด ์ฑ๋ฆฝํ๋ ์ด์ (C)
ํํน ๋์์ ์ด ํ์ผ ์์์ ์ง์ ๋ง๋ ๋ชจ์ API๋ฟ์ด๋ค. ์ค์ Win32 API๋ ์ค์ ๋ธ๋ผ์ฐ์ ๋ ๊ฑด๋๋ฆฌ์ง ์๋๋ค. '๋ธ๋ผ์ฐ์ โ IAT ์ฌ๋กฏ โ ๋คํธ์ํฌ' ๊ตฌ์กฐ๋ง ํ๋ด ๋ธ๋ค.
/* zeus_hook.c โ ๊ต์ก์ฉ ๋ชจ์ ์ฝ๋ */
typedef int (*http_send_t)(const char *host, const char *body);
int mock_HttpSendRequest(const char *host, const char *body) { /* ์ค์ ์ ์ก ์ง์ */ return 200; }
typedef struct { const char *name; http_send_t fn; } api_slot_t;
api_slot_t g_iat[] = { {"HttpSendRequest", mock_HttpSendRequest} }; /* ๋ก๋๊ฐ ์ฑ์ฐ๋ IAT ํ๋ด */
static http_send_t g_orig = NULL;
static int hooked_HttpSendRequest(const char *host, const char *body) {
if (strstr(body, "accountid=") || strstr(body, "password="))
printf(" [GRAB] ํ๋ฌธ ํผ ํ๋ ํ์ทจ: host=%s %s\n", host, body);
return g_orig(host, body); /* ์๋ณธ์ ๊ทธ๋๋ก ํธ์ถ โ ๋ธ๋ผ์ฐ์ ๋ ์ ์ ๋์ */
}
/* ์
์ฑ ํ์๋ ๋ฑ ํ ์ค: ์ฌ๋กฏ 1๊ฐ ๋ฎ์ด์ฐ๊ธฐ (์๋ณธ ์ฃผ์๋ ๋ฐฑ์
) */
g_orig = g_iat[0].fn; g_iat[0].fn = hooked_HttpSendRequest;
์คํ ๊ฒฐ๊ณผ(์ด๋ฒ ์คํ ์ค์ ์ถ๋ ฅ, gcc -O0 -o zeus_hook zeus_hook.c):
[โข] ํํน ์ โ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ์ ์ก
[NET] POST https://bank-lab.local/online/transfer.php body=accountid=11122233344455&amount=10000000
[โข] ์
์ฑ ๋ชจ๋์ด IAT ์ฌ๋กฏ์ ๊ต์ฒด (์๋ณธ ์ฃผ์๋ ๋ฐฑ์
)
[โข] ํํน ํ โ ๊ฐ์ ๋ธ๋ผ์ฐ์ ์ฝ๋๊ฐ ๊ทธ๋๋ก ์คํ๋จ
[GRAB] ํ๋ฌธ ํผ ํ๋ ํ์ทจ: host=bank-lab.local/online/transfer.php accountid=11122233344455&amount=10000000 <-- ์ฌ์ฉ์๋ HTTPS๋ผ๊ณ ๋ฏฟ๋๋ค
[NET] POST https://bank-lab.local/online/transfer.php body=accountid=11122233344455&amount=10000000
[โข] ๋ฌด๊ฒฐ์ฑ ์ ๊ฒ: ์ฌ๋กฏ์ด ์๋ณธ ์ฃผ์์ธ๊ฐ? ๋ณ์กฐ๋จ โ ์ฆ์ ๊ฒฝ๋ณด ๋์
์ฃผ๋ชฉํ ์ ์ ๋ง์ง๋ง ์ค์ด๋ค. ํํน์ '๋์์ ๋ฐ๊พธ์ง ์๋๋ค' โ ๋ธ๋ผ์ฐ์ ๋ ์ฌ์ฉ์๋ ์๋ฌด ์ด์์ ๋ชป ๋๋๋ค. ๊ทธ๋์ ํ์ง์ ์ ์ผํ ๋จ์๋ "ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์ ํจ์ ํฌ์ธํฐ/์ฝ๋๊ฐ ์๋ณธ๊ณผ ๋ฌ๋ผ์ก๋ค"๋ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ์ "๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ํ๋ก์ธ์ค๊ฐ ๊ธ์ต ํผ ํ๋๋ฅผ ์ ์กํ๋ค"๋ ํ๋ ์ด์์ด๋ค(PoC โฃ).
PoC โฃ ํ์ง โ ๋ก๊ทธ ์๊ด๋ถ์์ผ๋ก 'ํผ ํ์ทจ' ์ก์๋ด๊ธฐ
BROWSERS = {"chrome.exe", "msedge.exe", "firefox.exe"}
FORM_KEYS = ("accountid", "amount", "acc", "amt", "card", "ssn", "password")
def correlate(logs):
"""์ถ 1: ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ํ๋ก์ธ์ค๊ฐ ๊ธ์ต ํผ ํ๋๋ฅผ ์ ์ก
์ถ 2: ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ค์ ํ์ผ์ ๊ท์น์ ์ธ ์ฃผ๊ธฐ๋ก ์ฌ์์ฒญ(= ๋ด ์์กด์ ํธ)"""
for e in logs:
blob = (e.get("body","") + "&" + e.get("query","")).lower()
if any(k + "=" in blob for k in FORM_KEYS) and e["proc"] not in BROWSERS:
alerts.append("[form_grab] %s ๊ฐ %s ๋ก ๊ธ์ต ํผ ํ๋ ์ ์ก" % (e["proc"], e["path"]))
if "cfg" in e.get("path",""):
cfg_beat[e["proc"]].append(e["ts"])
# ์ค์ ํ์ผ ์ฌ์์ฒญ ๊ฐ๊ฒฉ์ด ์ผ์ ํ๋ฉด ์ฌ๋์ด ์๋๋ผ '๋ด'์ด๋ค
์คํ ๊ฒฐ๊ณผ(์ด๋ฒ ์คํ ์ค์ ์ถ๋ ฅ, ๋ชจ์ ์๊ฒฉ์ธก์ 7๊ฑด):
[โฃ] ๋ก๊ทธ 7๊ฑด ์๊ด๋ถ์ ๊ฒฐ๊ณผ:
โ ๏ธ [form_grab] ๋น๋ธ๋ผ์ฐ์ ํ๋ก์ธ์ค svch0st.exe ๊ฐ ๊ธ์ต ํผ ํ๋(acc,amt)๋ฅผ ์ ์ก โ /gate.php 10:01:09
โ ๏ธ [config_beat] svch0st.exe ๊ฐ ์ค์ ํ์ผ์ ๊ท์น์ ์ผ๋ก ์ฌ์์ฒญ ['10:02:12', '10:06:40', '10:11:29'] (์ฃผ๊ธฐ โ 278s) โ ๋ด ์์กด์ ํธ
โป ์ ์ ๋ธ๋ผ์ฐ์ (chrome.exe)์ ํผ ์ ์ก์ ์ ์ธํ๊ณ , 'ํ๋ก์ธ์ค ์ด๋ฆ โ ๋ธ๋ผ์ฐ์ ์ธ๋ฐ
๊ธ์ต ํผ ํค๊ฐ ๋๊ฐ๋' ์กฐํฉ๊ณผ '์ค์ ํ์ผ ์ ๊ธฐ ์ฌ์์ฒญ' ๋ ์ถ์ ๋ฌถ์ด ํ์ ํ๋ค.
๋ค ์กฐ๊ฐ์ ํฉ์น ๊ฒฐ๋ก ์ ์ด๋ ๋ค โ Zeus๋ โ ์๋ฒ์์ ์ค์ ์ ๋ฐ์ โก ๋ธ๋ผ์ฐ์ ๋ด๋ถ๋ฅผ ํํนํด ํ๋ฌธ์ ํ์น๊ณ โข ์ฌ์ฉ์ ํ๋ฉด์ ์กฐ์ํ๋ฉฐ โฃ ์ ์ HTTPS๋ก ์กฐ์ฉํ ๋๊ฐ๋ค. ๊ฐ ๋ถํ์ '์ ์ ๊ธฐ๋ฅ'๊ณผ ๊ตฌ๋ถ๋์ง ์๋๋ค. ๊ทธ๋์ ๋ฐฉ์ด๋ ๋ถํ๋ง๋ค, ๊ทธ๋ฆฌ๊ณ ์ฑ๋๋ง๋ค ํ์ํ๋ค.
6. ๋ฐฉ์ด ๋ฐฉ๋ฒ/๊ตํ
- MitB๋ ๋คํธ์ํฌ ๋ณด์์ผ๋ก ๋งํ์ง ์๋๋ค: TLS๋ ์ ์ก ๊ตฌ๊ฐ์ ๋ณดํธํ ๋ฟ, ๋ธ๋ผ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ ํ๋ฌธ์ ๋ณดํธํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ฐฉ์ด์ ์ โ ์๋ํฌ์ธํธ ๋ฌด๊ฒฐ์ฑ(๋ธ๋ผ์ฐ์ ยท์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํน ๋ณ์กฐ ํ์ง, EDR์ API ํํน ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ) โก ๋ธ๋ผ์ฐ์ ์๋๋ฐ์คยท๊ฒฉ๋ฆฌ ์คํ โข ์๋ํํฐ ํ์ฅยทํ๋ฌ๊ทธ์ธ ์ต์ํ๋ก ์ฎ๊ฒจ์ผ ํ๋ค.
- ์ต์ข ๊ฑฐ๋๋ '๋ค๋ฅธ ์ฑ๋'๋ก ๊ฒ์ฆํ๋ค: ์ด์ฒด ์ง์ /์งํ ๋ชจ๋ฐ์ผ ์ฑ ํธ์ยท๋ฌธ์ยทํตํ๋ก ์์ทจ์ธ ์ด๋ฆ๊ณผ ๊ณ์ข๋ฅผ ๋์กฐํ๋ค. ํ๋ฉด์ ๋ณด์ด๋ ๊ธ์กยท๊ณ์ข๋ ์ ๋ขฐ ๋์์ด ์๋๋ผ๋ ์ ์ ๊ฐ ์ถ๋ฐ์ ์ด๋ค(PoC โก). ์ํ๊ถ์ด ๋์ ํ '์์ทจ ๊ณ์ข ๋ณ๊ฒฝ ์ ์ฌํ์ธ', '์ ๊ท ์์ทจ์ธ + ๊ณ ์ก ์ด์ฒด ์ง์ฐ' ๋ฃฐ์ด ๊ฐ์ ๋งฅ๋ฝ์ด๋ค.
- ์๊ฒฉ์ฆ๋ช ํ์ทจ๋ฅผ '๊ฐ์ 'ํ๊ณ ์ค๊ณํ๋ค: ๋น๋ฐ๋ฒํธ๋ ๋ณต์ ๋์ง๋ง ํ๋์จ์ด ๋ณด์ ํค(FIDO2/ํจ์คํค)๋ ํผ ๊ทธ๋๋นยทํค๋ก๊น ์ผ๋ก ๋ณต์ ํ ์ ์๋ค. ๋๋ฉ์ธ ๋ฐ์ธ๋ฉ์ด ์์ผ๋ฏ๋ก ์น์ธ์ ํธ๋ก ์์กฐ ํ๋ฉด์ ๋ง๋ค์ด๋ ์ธ์ฆ์ด ํต๊ณผ๋์ง ์๋๋ค. Zeus ์๋์ ๊ตํ์ด ์ค๋๋ ํผ์ฑ ๋ด์ฑ ์ธ์ฆ์ผ๋ก ์ด์ด์ง๋ค.
- ํ๋ ํ์ง ๊ท์น์ ์์ฐ์ ์ฌ๋๋ค: PoC โฃ์ ๋ ์ถ โ
(๋น๋ธ๋ผ์ฐ์ ํ๋ก์ธ์ค) ร (๊ธ์ต ํผ ํ๋)์กฐํฉ,์ค์ /๋ฆฌ์์ค ํ์ผ์ ๊ท์น์ ์ฌ์์ฒญ(์ผ์ ํ ์ฃผ๊ธฐ)โ ์ ์ง๊ธ๋ ํตํ๋ ์ ๋น์ฉ ๊ณ ํจ์จ ๋ฃฐ์ด๋ค. ์ฃผ๊ธฐ๊ฐ ์ฌ๋์ด ๋ผ ์ ์๋ ๊ท์น์ฑ์ด๋ผ๋ ์ ์ด ํต์ฌ์ด๋ค. - ํ๋ก์ธ์ค ์ด๋ฆ์ ๋ฏฟ์ง ์๋๋ค:
svchost.exe๋svch0st.exe๊ฐ์ ํ๋ด๋ 15๋ ์งธ ์ ํจํ๋ค. ์๋ช ยท๋ถ๋ชจ ํ๋ก์ธ์คยท์คํ ๊ฒฝ๋กยท๋คํธ์ํฌ ๋ชฉ์ ์ง๋ฅผ ๋ฌถ์ด ํ๋จํ๊ณ , ์ ์ ์์คํ ํ๋ก์ธ์ค๊ฐ ์ธ๋ถ๋ก ๋๊ฐ๋ ์ฐ๊ฒฐ์ ์ต์ฐ์ ๊ฐ์ํ๋ค. - ์ฃผ์
๊ณผ ์๋์ ํ์ ์ ๋ณธ๋ค: ์ ์ ํ๋ก์ธ์ค์ ๋น์ ์ ์ค๋ ๋๊ฐ
์๊ธฐ๊ฑฐ๋, ์คํ ์ด๋ฏธ์ง๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ(ํ์ผ๋ฆฌ์ค 2์ฐจ ํ์ด๋ก๋)์ด
PAGE_EXECUTE_READWRITE๋ก ์กํ๋ ๊ฒ์ ๋ํ ์ ํธ๋ค. Zeus๊ฐ '๋๋กญํผ โ ๋ก๋' 2๋จ๊ณ ๊ตฌ์กฐ๋ฅผ ์ด ์ด์ ๊ฐ ๋ฐ๋ก ์ด๊ฒ์ ํผํ๊ธฐ ์ํด์์๋ค. - ์ฌ์ฉ์ ๊ต์ก์ ํ์ํ์ง๋ง ์ถฉ๋ถํ์ง ์๋ค: Zeus๋ ์ต์ ๋ฐฑ์ ์ผ๋ก๋ ์ ์กํ์ง ์์๊ณ , ์์กฐ ํ๋ฉด์ ์๋ จ์๋ ์๋๋ค. ๊ต์ก์ '์์ฌํ๋ผ'๊ฐ ์๋๋ผ '๋ค๋ฅธ ์ฑ๋๋ก ํ์ธํ๋ผ'๋ ์ ์ฐจ๋ก ์ค๊ณํด์ผ ํจ๊ณผ๊ฐ ์๋ค. ์ฌ๋์ ํ๋จ์ ์์กดํ๋ ํต์ ๋ ์ตํ์ ๋ฐฉ์ด์ ์ด์ง ์ฒซ ๋ฒ์งธ๊ฐ ์๋๋ค.
- ํ ์ดํฌ๋ค์ด์ '์ข ๋ฃ'๊ฐ ์๋๋ผ '์ง์ฐ'์ด๋ค: 2014๋ 13๊ฐ๊ตญ์ด P2P ๋ด๋ท์ ๋ฌด๋ ฅํํ์ง๋ง 2๊ฐ์ ๋ง์ newGOZ๊ฐ ๋์๊ณ , 2011๋ ์์ค ์ ์ถ์ Citadel ๋ฑ ํ์ ์ ํ๊ตฐ์ ์๊ตฌํ ๋จ๊ฒผ๋ค. ๊ณต๊ฒฉ ๋๊ตฌ์ ํ์ฐ์ ๋๋๋ฆด ์ ์๋ค๋ ์ ์ ๋ก ์ฅ๊ธฐ ๋์ ์ฒด๊ณ(ํ์ง ๋ฃฐยท์ธ์ฆ ๊ฐํยท์๊ธ ์ถ์ )๋ฅผ ์ค๋นํด์ผ ํ๋ค.
- ๋ด๋ท์ ์งํ ๋ฐฉํฅ์ ์ฝ๋๋ค: ์ค์ C2(2007) โ P2P(2011) โ fast flux(newGOZ) โ ๊ทธ๋ฆฌ๊ณ ์ค๋๋ ์ ๋์ฌ์จ์ด ๊ตฌ๋ ํ ์ํ๊ณ. Zeus๋ ๋ฒ์ฃ ์กฐ์ง์ด '์ ํ'์ ๋ง๋ค๊ณ '๊ณ ๊ฐ'์๊ฒ ํ๋ ๋ชจ๋ธ์ ํ๋ฆฝํ๊ณ , ํ์ฌ ์ํ ๋๋ถ๋ถ์ด ๊ทธ ์์ ์ธ์์ ธ ์๋ค.
7. ์ถ์ฒ
- Wikipedia โ Zeus (malware): 2007๋ 7์ ๋ฑ์ฅ, Prevx 74,000 FTP ์๊ฒฉ์ฆ๋ช (2009-06), Damballa ๋ฏธ๊ตญ 360๋ง ๋(2009), FBI ํฌ๋๋ค์ด(2010-10), ์ ์์ ์ํดยท์์ค ์ด๊ด โ en.wikipedia.org/wiki/Zeus_(malware)
- Wikipedia โ Gameover ZeuS: Bogachev(Mapp 13), P2P ๊ตฌ์กฐ, 50๋ง~100๋ง ๋(2012โ13), ์ฝ 1์ต ๋ฌ๋ฌ ํผํด, CryptoLocker ์ ํฌ, 20๋ง~25๋ง ๋ ํ์ ยท์์ต ์ถ์ ๋ ผ์, $3M ํ์๊ธ, newGOZ โ en.wikipedia.org/wiki/Gameover_ZeuS
- Wikipedia โ Operation Tovar: 13๊ฐ๊ตญ ์ฐธ์ฌ, DOJ/FBI/UK NCA, 2014-06 ์ธํ๋ผ ์์ยท์ฑํฌํ โ en.wikipedia.org/wiki/Operation_Tovar
- Krebs on Security โ 'Operation Tovar' Targets 'Gameover' ZeuS Botnet, CryptoLocker Scourge (2014-06-02) โ krebsonsecurity.com/โฆ/operation-tovar-targets-gameover-zeus-botnet-cryptolocker-scourge
- Binsalleeh et al. โ On the Analysis of the Zeus Botnet Crimeware Toolkit (PST 2010) โ config.bin ์ํธํยท์น์ธ์ ํธ ๋ฌธ๋ฒ ๊ตฌ์กฐ ๋ถ์ โ doi.org/10.1109/PST.2010.5593240
- Wikipedia โ CryptoLocker (GameOver ZeuS ์ ํฌ ๊ฒฝ๋ก, 2013โ2014 ๋์ฌ ์บ ํ์ธ) โ en.wikipedia.org/wiki/CryptoLocker
- US DOJ โ U.S. Leads Multi-National Action Against 'Gameover Zeus' Botnet and 'Cryptolocker' Ransomware (2014-06-02) โ justice.gov/opa/pr/us-leads-multi-national-action-against-gameover-zeus-botnet-and-cryptolocker-ransomware
โป ๋ณธ๋ฌธ์ PoC ์ฝ๋๋ ๊ตฌ์กฐ ์ดํด ๋ชฉ์ ์ ๊ต์ก์ฉ ๋ชจ์ ์ฝ๋์ด๋ฉฐ, ์ค์ Zeus ๋ฐ์ด๋๋ฆฌยท์ค์ config.binยท์ค์ ์น์ธ์ ํธ ๋ฌธ์์ดยท์ค์ C2/์ ํฌ ๋๋ฉ์ธ/IOCยท์ค์ ํ์ทจ ๋ฐ์ดํฐ๋ ํฌํจํ์ง ์์ต๋๋ค. ๋ชจ๋ ์ค์ต์ ์ธํฐ๋ท๊ณผ ๋ถ๋ฆฌ๋ ๊ฒฉ๋ฆฌ ๋ฉ VM์ ์ ์ ๋ก ํ๋ฉฐ, ์ค์ ๊ธ์ต ์ฌ์ดํธยทํ์ธ ์์คํ ์ ๋ํ ์คํ์ ๋ถ๋ฒ์ ๋๋ค.
ํจ๊ป ์ฝ๊ธฐ: ๐ฅ Emotet (2014โ2021) โ ๋ด๋ท์ด '๋์ฌ์จ์ด ์ ํต ํ๋ซํผ'์ด ๋๋ ๊ธธ ยท ๐ฆ Bangladesh Bank SWIFT Heist (2016) โ ์ ์ ์๊ฒฉ์ฆ๋ช ยท์ ์ ๊ฑฐ๋๋ก ์์ฅํ ์ํ ํ์ทจ ยท ๐ชฑ Conficker (2008) โ P2PยทDGA๋ก ํ ์ดํฌ๋ค์ด์ ๋ฌด๋ ฅํํ ์ ยท ๐ฆ SolarWinds SUNBURST (2020) โ ์ ๋ขฐ ์ฑ๋์ ๋ถ๊ดด ยท โ ๏ธ NotPetya (2017) โ ๊ฐ์ผ ๋์ ํ๊ดด๋ฅผ ํํ ์งํ