- ์
์ฑ์ฝ๋๋ช
: Shamoon ยท ๋ณ์นญ W32.DistTrack / W32/Elderwood ยท ๋ด๋ถ ๋ฌธ์์ด
SHN/AMOO/lib/pr/~์์ ์ด๋ฆ์ด ์ ๋ - ๋ฑ์ฅ: 2012๋ 8์ 15์ผ 11:08 (์ฌ์ฐ๋์๋ผ๋น์ ํ์ง ์๊ฐ). SymantecยทKasperskyยทSeculert๊ฐ 8์ 16์ผ ๋์ ๋ถ์ ๊ณต๊ฐ
- ๋ถ๋ฅ: ์์ดํผ(wiper) โ ์ํธํยท๊ธ์ ์๊ตฌ๊ฐ ์๋ ์์ ํ๊ดดํ ์ ์ฑ์ฝ๋. ๋ชจ๋ํ(๋๋กํผ + ์์ดํผ + ๋ฆฌํฌํฐ)
- ํธ๋ฆฌ๊ฑฐ: ํ๋์ฝ๋ฉ๋ ๋ ผ๋ฆฌํญํ(logic bomb) โ 2012-08-15 11:08 ๋ก์ปฌ ์๊ฐ์ ๋ง์ถฐ MBRยทํ์ผ ๋ฎ์ด์ฐ๊ธฐ ์์
- ์ง์์ฑ:
NtsSrv์ด๋ฆ์ Windows ์๋น์ค๋ก ๋ฑ๋ก. 32๋นํธ/64๋นํธ ๋๋กํผ๋ฅผ ๋ชจ๋ ๋ณด์ ํ๊ณ ์ํคํ ์ฒ์ ๋ง๋ ์ชฝ์ ๋๋กญ - ํ์ฐ: ์ทจ์ฝ์ ์ค์บ์ด ์๋๋ผ ๋ด๋ถ ๋คํธ์ํฌ ๊ณต์ + ์์ง๋ ์๊ฒฉ์ฆ๋ช ์ผ๋ก ํก์ ์ด๋(๋คํธ์ํฌ ์ ์ฒด๊ฐ ์ ๋ขฐ ๊ฒฝ๊ณ์๋ ํ๊ฒฝ์ ์ ์ฉ)
- ํ๊ดด ๋ฐฉ์: EldoS RawDisk ์๋ช
๋๋ผ์ด๋ฒ๋ก ์ฌ์ฉ์ ๋ชจ๋์์
\\.\PhysicalDrive0์ ์ง์ ์ ๊ทผ โ ํ์ผ ๋ชฉ๋กํยท๋ฆฌํฌํ โ ํ์ผ ๋ด์ฉ์ ์ด๋ฏธ์ง ์กฐ๊ฐ์ผ๋ก ๋ฎ์ด์ฐ๊ธฐ โ MBR ๋ฎ์ด์ฐ๊ธฐ โ ์ฌ๋ถํ ๋ถ๊ฐ - ๋ฎ์ด์ด ์ด๋ฏธ์ง: 2012๋ ๋ถํ๋ ๋ฏธ๊ตญ ๊ตญ๊ธฐ, 2016๋ ์จ๋ฐ ์ฟ ๋ฅด๋(Alan Kurdi) ์ฌ์ง โ ์์ง์ ๋ฉ์์ง๋ฅผ ๋ฐ์ดํฐ ์์ ๊ฐ์ธ
- ํผํด: Saudi Aramco ์ฝ 30,000๋ ์ํฌ์คํ ์ด์ ํ๊ดด, ๋ณต๊ตฌ 2์ฃผ ์ด์. ์ธ๊ณ ํ๋๋์คํฌ๋ฅผ ์ฌ์ฌ๊ธฐํด ๊ฐ๊ฒฉ์ด ํ๋ค๋ ธ๋ค๋ ์ฆ์ธ. Qatar RasGas๋ ๊ฐ์ ์๊ธฐ ๋ง๋น
- ๊ท์: 'Cutting Sword of Justice'๊ฐ Pastebin์ผ๋ก ์ฑ ์ ์ฃผ์ฅ(์ด๋ ์ฐ๊ณ ์ ํฉ). ๋ฏธ๊ตญ ์ ๋ณด๋น๊ตญ์ ์ด๋ ๋ฐฐํ๋ก ํ๊ฐ. ๊ณต์ ๊ธฐ์๋ ์์
- ๊ณ๋ณด: 2012๋ 4์ ์ด๋ Wiper โ Shamoon(2012) โ Shamoon 2 (2016ยท2017) โ Shamoon 3 / Saipem (2018) โ ์ดํ NotPetya(2017)ยทIndustroyer(2016) ๊ณ์ด ํ๊ดดํ ๊ณต๊ฒฉ์ ๋ฌธ๋ฒ
- ์์: "๋์ฌ์จ์ด ์ด์ ์ ์์ดํผ". ๋ชธ๊ฐ ํ์์ด๋ผ๋ ๊ฒฝ์ ๋ชจ๋ธ ์์ด ๋ณต๊ตฌ ๋น์ฉ ์์ฒด๋ฅผ ๋ฌด๊ธฐ๋ก ์ผ์ ์ฒซ ๋๊ท๋ชจ ์ฌ๋ก โ ๋ฐฑ์ ยท๊ฒฉ๋ฆฌยท์๊ฒฉ์ฆ๋ช ์์์ด ๊ณง ๊ตญ๊ฐ๊ธ ๋ฐฉ์ด์ ์์ ์ฆ๋ช
1. ๋ฐฐ๊ฒฝ/์ญ์ฌ โ ๋ผ๋ง๋จ์ ๋ง์ง๋ง ์ฃผ, 11์ 8๋ถ
2012๋ 8์ 15์ผ์ ์ฌ์ฐ๋์๋ผ๋น์์์ ๋ผ๋ง๋จ์ด ๋๋๊ณ ์ด๋ ์ํผํธ๋ฅด ์ฐํด๊ฐ ์์๋๋ ์์ ์ด์๋ค. ๋๋ถ๋ถ์ ์ง์์ด ์ฌ๋ฌด์ค์ ๋ ๋ ์ํ์๊ณ , ๋ณด์ ์ด์ ์ธ๋ ฅ๋ ์ต์ ์ธ์๋ง ๋จ์ ์์๋ค. ๊ณต๊ฒฉ์๋ ์ด ๋ฌ๋ ฅ์ ์ ํํ ๊ฒจ๋ฅํ๋ค. ํ๊ดด๋ ์ ๋ฌด ์๊ฐ ํ๊ฐ์ด๋ฐ, ๊ทธ๊ฒ๋ ์ค์ 11์ 8๋ถ์ ์์๋๋๋ก ์์ฝ๋ผ ์์๋ค โ ์ฌ๋์ด ๊ฐ์ฅ ์ ๊ณ , ๋ฐ๊ฒฌ๋๋๋ผ๋ ๋์ ์ธ๋ ฅ์ด ๋ชจ์ด๊ธฐ ๊ฐ์ฅ ์ด๋ ค์ด ์๊ฐ์ด๋ค.
๋น์ Saudi Aramco๋ ์ธ๊ณ ์ต๋ ์์ ํ์ฌ์๊ณ , ๊ธฐ์ ๋คํธ์ํฌ์๋ ์ฝ 3๋ง ๋์ Windows ์ํฌ์คํ ์ด์ ์ด ๋ฌผ๋ ค ์์๋ค. ์ค์ 11์ 8๋ถ์ด ์ง๋์ ์ด PC๋ค์ ํ๋๋์คํฌ๊ฐ ๋์์ ๋ค์งํ๊ธฐ ์์ํ๋ค. ํ์ผ์ด ์ด๋ฆฌ์ง ์๊ณ , ์ฌ๋ถํ ํ๋ฉด ์ด์์ฒด์ ๊ฐ ๋จ์ง ์์๋ค. ํ๋ฉด์๋ ๋ถํ๋ ๋ฏธ๊ตญ ๊ตญ๊ธฐ ์ด๋ฏธ์ง๊ฐ ๋จ์ ์์๋ค. Symantec์ ํผ์๋ ํ์ผ๋ค์ด ๊ตญ๊ธฐ ์ด๋ฏธ์ง์ ์กฐ๊ฐ์ผ๋ก ๋ฎ์ด์จ์ก๋ค๋ ์ฌ์ค์ ํ์ธํ๋ค.
์ฌ๊ฑด์ ๋จ์ํ ๋ฐ์ด๋ฌ์ค ์ ํ์ด ์๋๋ผ ์ ์น์ ๋ฉ์์ง๋ฅผ ๋๋ฐํ ์ฌ๋ณดํ์ฃผ์๋ค. ๊ณต๊ฒฉ ๋ช ์๊ฐ ์ , 'Cutting Sword of Justice'(์ ์์ ๋ ์นด๋ก์ด ์นผ)๋ฅผ ์์นญํ๋ ์ง๋จ์ด Pastebin์ ๊ธ์ ์ฌ๋ ค "์๋ฆฌ์ยท๋ฐ๋ ์ธยท์๋ฉยท๋ ๋ฐ๋ ผยท์ด์งํธ์ ๋ํ ์ต์๊ณผ, ์ด๋ฅผ ํ์ํ๋ ์์ฌ์ฐ๋ ์ฒด์ "๋ฅผ ๋ฌธ์ ์ผ์ผ๋ฉฐ "์๋์ฝ๋ ์์ฌ์ฐ๋ ์ฒด์ ์ ๊ฐ์ฅ ํฐ ์ฌ์ ์ ์์ฒ"์ด๋ผ๊ณ ๋ฐํ๋ค. 8์ 29์ผ์๋ ๋ผ์ฐํฐ ํ ๋ท ๋น๋ฐ๋ฒํธ์ CEO ๊ณ์ ์ ๋ณด๋ผ ์ฃผ์ฅํ๋ ๋ด์ฉ์ ๋ ์ฌ๋ ค ์ฌ์ ํ ๋คํธ์ํฌ์ ์ ๊ทผํ ์ ์์์ ๊ณผ์ํ๋ค.
๊ธฐ์ ์ ๊ณ๋ณด๋ ์ค์ํ๋ค. 2012๋ 4์, ์ด๋์ ์์ ๋ถยท์์๋ ฅ ์์ค์ ๊ฒจ๋ฅํ 'Wiper' ์ฌ๊ฑด์ด ์์๋ค. Kaspersky๋ Shamoon๊ณผ Wiper์ ์ ์ฌ์ฑ์ ์ง์ ํ๊ณ , ๋์์ Flame๊ณผ์ ์ฝ๋ ์ ์ฌ์ ๋ ๋ณด๊ณ ํ๋ค. ์ด๊ธฐ์๋ "Wiper๋ฅผ ํ๋ด ๋ธ ์คํฌ๋ฆฝํธ ํค๋"๋ผ๋่ฉไพก๋ ์์์ง๋ง, ๊ณง ๊ตญ๊ฐ ์์ค์ ์ฌ์ด๋ฒ์ ์ผ๋ก ๋ถ๋ฅ๊ฐ ๋ฐ๋์๋ค. 2012๋ ์ Shamoon์ ์ฝ๋๊ฐ ์ ์ถ๋์ง ์์ ์ฑ ํ์ ๋ง์ผ๋ก ๋ถ์๋๊ณ , 2016๋ ์ ๋ฑ์ฅํ Shamoon 2์ ๋ถ์์ ํตํด ๊ตฌ์กฐ๊ฐ ํจ์ฌ ์ ๋ฐํ๊ฒ ๋๋ฌ๋ฌ๋ค.
2. ๊ฐ์ผยท์ ํ ๊ฒฝ๋ก โ ์ทจ์ฝ์ 0๊ฐ, ์๊ฒฉ์ฆ๋ช 1๊ฐ
Shamoon์ ํ์ฐ ๋ฐฉ์์ ๋์๋ ์๊ณผ ์ ๋ฐ๋๋ค. Code Red๋ Slammer๊ฐ ์ธํฐ๋ท์ ํฅํด ๋ฌด์ฐจ๋ณ ์ค์บํ๋ค๋ฉด, Shamoon์ ์ด๋ฏธ ๋ซ๋ฆฐ ๋ด๋ถ ๋คํธ์ํฌ ์์์๋ง ์์ง์๋ค. ์ธ๋ถ๋ก ๋๊ฐ๋ ํธ๋ํฝ์ด ๊ฑฐ์ ์๊ณ , ์ต์คํ๋ก์๋ ์์ผ๋ฉฐ, ์ฌ์ฉ์๋ ์๋ฌด๊ฒ๋ ํด๋ฆญํ์ง ์๋๋ค. ๊ทธ๋์ ๊ฒฝ๊ณ ๋ฐฉํ๋ฒฝยทIDSยท์ํฐ๋ฐ์ด๋ฌ์ค ์๊ทธ๋์ฒ ์ด๋ ๊ฒ๋ ์ด๊ธฐ ์นจํฌ๋ฅผ ๋ง์ง ๋ชปํ๋ค.
- ์ด๊ธฐ ์นจํฌ โ ์คํผ์ดํผ์ฑ 1๊ฑด: ์๋์ฝ IT ์ง์์ด ์ด๋ํ ํผ์ฑ ๋ฉ์ผ์ด ์ถ๋ฐ์ ์ผ๋ก ์ง๋ชฉ๋๋ค. ๊ณต๊ฒฉ์๋ ์ดํ ์ ์ฃผ์ ๊ฑธ์ณ ๋ด๋ถ ์ ์ฐฐ์ ํ๋ค. ํ๊ดด ๋๊ตฌ๋ฅผ ์ฌ๊ณ ๋ ์ฆ์ ํฐ๋จ๋ฆฌ์ง ์์ ๊ฒ์ด ์ด ์ฌ๊ฑด์ ํต์ฌ์ด๋ค.
- ์๊ฒฉ์ฆ๋ช ์์ง: ๋ด๋ถ ์์คํ ์์ ๋ก์ปฌ ๊ด๋ฆฌ์ยท๋๋ฉ์ธ ๊ณ์ ์ ๋ณด๋ฅผ ํ๋ณดํ๋ค. 2012๋ ๊ธฐ์ ํ๊ฒฝ์ ๋ก์ปฌ ๊ด๋ฆฌ์ ์ํธ๋ฅผ ๋ถ์ ๋จ์๋ก ๊ณต์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๊ณ , ์ด๊ฒ์ด ํก์ ์ด๋์ ์ด์ ๊ฐ ๋๋ค.
- ๊ณต์ ํด๋๋ก ์๊ธฐ ๋ณต์ฌ: ๋๋กํผ๋
\\host\shareํํ์ ๋คํธ์ํฌ ๊ณต์ ์ ์์ ์ ๋ณต์ฌํ๋ค. ์ฌ์ฉ์๊ฐ ๊ทธ ์คํ ํ์ผ์ ์ง์ ์คํํ์ง ์์๋, ๋ค๋ฅธ ๊ฐ์ผ PC์ ์๋น์ค/์ค์ผ์ค๋ฌ๊ฐ ์๊ฒฉ์์ ์คํํ ์ ์์๋ค. - ์๋น์ค๋ก ์์ฃผ: ๊ฐ์ผ๋ PC์์
NtsSrv์๋น์ค๋ฅผ ์์ฑํด ๋ถํ ์ ์๋ ์คํ๋๊ฒ ํ๋ค. ์๋น์ค ์ด๋ฆ์ ์ ์ ์์คํ ์๋น์ค(Nt*)์ฒ๋ผ ๋ณด์ด๋๋ก ๊ณ ๋ฅธ ์์ฅ์ด๋ค. - ๋ ผ๋ฆฌํญํ ๋๊ธฐ: ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ๋ฐฐํฌ๋ ๋ค, ํ๋์ฝ๋ฉ๋ ์๊ฐ๊น์ง ์กฐ์ฉํ ๋๊ธฐํ๋ค. ์ด ๋๊ธฐ ๊ธฐ๊ฐ์ด ์ฌ๊ณ ๋์์ ๋ง์ง๋ง ๊ธฐํ์์ง๋ง, ๋น์์๋ ์๋ฌด๋ ์ด์ ์งํ๋ฅผ ๋ณด์ง ๋ชปํ๋ค.
/tmp/shamoon_lab) ์์์๋ง ๋์ํ๋ ๊ต์ก์ฉ ๋ชจ์ ์ฝ๋๋ค. ์ค์ ๋์คํฌ ์ฅ์น(\\.\PhysicalDrive0, /dev/sd*, /dev/nvme*)ยท์ค์ MBRยท์ค์ SMB ๊ณต์ ยท์ค์ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์๋ ์ ๊ทผํ์ง ์์ผ๋ฉฐ, ์ ๊ทผ ์๋๋ฅผ ์ฝ๋๊ฐ ์ค์ค๋ก ๊ฑฐ๋ถํ๋ค. ์ค์ ์
์ฑ์ฝ๋ ๋ฐ์ด๋๋ฆฌ๋ ๋น๋๋ ํฌํจํ์ง ์๋๋ค.3. ๋์ ์๋ฆฌ ์์ธ โ ์ธ ๊ฐ์ ๋ชจ๋, ํ๋์ ๋ชฉ์
Shamoon์ ๋๋กํผ(Dropper), ์์ดํผ(Wiper), ๋ฆฌํฌํฐ(Reporter) ์ธ ๋ชจ๋๋ก ๊ตฌ์ฑ๋๋ค. ๊ฐ ๋ชจ๋์ ์ญํ ์ด ๋ถ๋ฆฌ๋ผ ์์ด, ๋ฐฉ์ด ์ธก์ด ํ๋๋ฅผ ์ก์๋ ๋๋จธ์ง๊ฐ ์๋ฌด๋ฅผ ์์ํ๋๋ก ์ค๊ณ๋๋ค.
| ๋ชจ๋ | ์ญํ | ํต์ฌ ํ์ |
|---|---|---|
| Dropper | ์๋น์ค NtsSrv ์์ฑ, 32/64๋นํธ ํ๋ณ ํ ์์ดํผยท๋ฆฌํฌํฐ ๋๋กญ, ๋คํธ์ํฌ ๊ณต์ ๋ก ์๊ธฐ ๋ณต์ฌ | ์๋น์ค ๋ฑ๋ก(7045), %SystemRoot%\system32\ ๋ด ์ ๊ท ์คํ ํ์ผ, ๊ณต์ ํด๋ ๋ด ๋์ผ ํด์ ํ์ผ |
| Wiper | RawDisk ๋๋ผ์ด๋ฒ ๋ก๋ โ ํ์ผ ์ด๊ฑฐ โ ๋ด์ฉ ๋ฎ์ด์ฐ๊ธฐ โ MBR ๋ฎ์ด์ฐ๊ธฐ | ์๋ช
๋ EldoS ๋๋ผ์ด๋ฒ ๋ก๋, \\.\PhysicalDrive0 ํธ๋ค, ์งง์ ์๊ฐ์ ์๋ง ๊ฑด์ ํ์ผ ์ฐ๊ธฐ |
| Reporter | ๊ฐ์ผ ํธ์คํธ ์ ๋ณด(์ด๋ฆยทIPยทํ์ผ ๋ชฉ๋ก)๋ฅผ C2๋ก HTTP POST | ๋ด๋ถ ์๋ฒ๋ก ํฅํ๋ ๋น์ ์ HTTP POST, base64๋ก ์ธ์ฝ๋ฉ๋ ํธ์คํธ ์ ๋ณด |
3.1 ์ '๊ด๋ฆฌ์ ๊ถํ'๋ง์ผ๋ก ๋์คํฌ ์ ์ฒด๋ฅผ ์ง์ธ ์ ์์๋ โ RawDisk
์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ \\.\PhysicalDrive0์ ์ด ์ ์๋ค. Windows๋ ์์ ๋์คํฌ ์ ๊ทผ์ ์ปค๋ ๋๋ผ์ด๋ฒ๋ฅผ ์๊ตฌํ๋ค. Shamoon์ ์ด ๋ฌธ์ ๋ฅผ ์ง์ ๋๋ผ์ด๋ฒ๋ฅผ ์์ฑํ์ง ์๊ณ ํด๊ฒฐํ๋ค. EldoS์ฌ๊ฐ ํฉ๋ฒ์ ์ผ๋ก ๋ฐฐํฌํ๋ RawDisk ๋๋ผ์ด๋ฒ๋ฅผ ํจ๊ป ๋จ์ด๋จ๋ฆฌ๊ณ , ๊ทธ ๋๋ผ์ด๋ฒ๋ฅผ ์๋น์ค๋ก ๋ก๋ํ ๋ค DeviceIoControl๋ก ์นํฐ ๋จ์ ์ฝ๊ธฐยท์ฐ๊ธฐ๋ฅผ ์ํํ ๊ฒ์ด๋ค.
์ด ์ค๊ณ๋ "์ ์ ์ํํธ์จ์ด์ ์๋ช ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ฌด๊ธฐํ"ํ๋ ์ ํ์ด๋ค. ๋๋ผ์ด๋ฒ ์์ฒด๋ ์ ์ฑ์ฝ๋๊ฐ ์๋๋ฏ๋ก ์ํฐ๋ฐ์ด๋ฌ์ค๊ฐ ์ก๊ธฐ ์ด๋ ต๊ณ , ๊ด๋ฆฌ์ ๊ถํ๋ง ์์ผ๋ฉด ํ์ผ ์์คํ ์ ์ฐํํด ๋์คํฌ์ ์์ ์นํฐ๋ฅผ ๋ฎ์ด์ธ ์ ์๋ค. ์ค๋๋ ์ทจ์ฝ ๋๋ผ์ด๋ฒ(BYOVD) ๋ฌธ์ ์ ์ํ์ด ์ฌ๊ธฐ์ ์๋ค.
// ๊ตฌ์กฐ ์ฌ๊ตฌ์ฑ(๊ต์ก์ฉ ์์ฌ ์ฝ๋) โ ์ค์ ์ํ ์ฝ๋๊ฐ ์๋
// 1) ์๋น์ค ๋ฑ๋ก: "NtsSrv" ๋ก ์์ฃผ
CreateService(hSCM, L"NtsSrv", L"NtsSrv", SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL, szPath, NULL, NULL, NULL, NULL, NULL);
// 2) RawDisk ๋๋ผ์ด๋ฒ ๋ก๋ (ํฉ๋ฒ ๋๋ผ์ด๋ฒ๋ฅผ ์
์ฉ)
StartService(hSvc, 0, NULL);
// 3) ์์ ๋์คํฌ ํธ๋ค ํ๋ โ ํ์ผ ์์คํ
์ ์์ ํ ์ฐํ
hDisk = CreateFileW(L"\\\\.\\PhysicalDrive0",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
// 4) ํ์ผ ์ด๊ฑฐ โ ๋ฆฌํฌํฐ๋ก ๋ชฉ๋ก ์ ์ก โ ์นํฐ ๋จ์ ๋ฎ์ด์ฐ๊ธฐ โ MBR ํ๊ดด
WipeAllFilesAndMbr(hDisk);
์ฃผ๋ชฉํ ์ ์ ์ํธํ๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ๋์ฌ์จ์ด๋ ํค๋ฅผ ์ฅ๊ณ ํ์์ ํ์ง๋ง, Shamoon์ ๋ณต๊ตฌ ์์ฒด๋ฅผ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ชฉํ๋ค. ๊ทธ๋์ ํ์ผ ๋ด์ฉ์ ์๋ฏธ ์๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ก ๋ฎ์ด์จ ํฌ๋ ์ ๋ณต๊ตฌ(์นด๋น)๊น์ง ์ฐจ๋จํ๊ณ , ๋ง์ง๋ง์ MBR์ ๋ง๊ฐ๋จ๋ ค ์ด์์ฒด์ ๊ฐ ๋ถํ ์กฐ์ฐจ ๋์ง ์๊ฒ ํ๋ค. ํผํด์๋ "ํ์ผ์ ๋ณต๊ตฌ"ํ๋ ๊ฒ์ด ์๋๋ผ PC๋ฅผ ์๋ก ์ค์นํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ด๋๊ฐ์์ ๋ค์ ๊ฐ์ ธ์์ผ ํ๋ค.
3.2 ํ์ผ ๋ชฉ๋กํ โ ๋ฆฌํฌํ โ ๋ฎ์ด์ฐ๊ธฐ: ์ '๋ชฉ๋ก'์ ๋จผ์ ๋ณด๋ผ๊น
์์ดํผ๋ ์ง์ฐ๊ธฐ ์ ์ ๋ฌด์์ ์ง์ ๋์ง ๋ชฉ๋ก์ ๋ง๋ ๋ค. ์ด ๋ชฉ๋ก์ ๋ฆฌํฌํฐ๋ฅผ ํตํด C2๋ก ์ ์ก๋๋ค. ๊ณต๊ฒฉ์ ์ ์ฅ์์ ์ด๋ ํผํด ๊ท๋ชจ์ ์ฆ๋น์ด์ ํ๋ฐยท์ ์ ์๋ฃ๋ค. ์ค์ ๋ก ์ฌ๊ฑด ์งํ ๊ณต๊ฒฉ์๋ค์ "๋ฌด์์ ์ง์ ๋์ง"๋ฅผ ๊ณผ์ํ๋ ๊ธ์ ์ฌ๋ ธ๋ค. ๊ธฐ์ ์ ์ผ๋ก๋ ํ์ผ ์ด๊ฑฐ โ ํด์/๊ฒฝ๋ก ์์ง โ ์ ์ก โ ๋ฎ์ด์ฐ๊ธฐ์ ์์๊ฐ ๋ช ํํ ๋๋์ด ์์ด, ๋ฐฉ์ด ์ธก์ด ์ ์ก ๋จ๊ณ์์ ํ์งํ ์ ์๋ ์ฐฝ(window)์ด ์กด์ฌํ๋ค.
2016๋ Shamoon 2 ๋ถ์์์๋ ํน์ ์๊ฐ์ ํ์ฑํ๋๋ ํ๋์ฝ๋ฉ ํธ๋ฆฌ๊ฑฐ(2016-11-17 20:58:42๋ก ๋ณด๊ณ )์, MBR์ ๋ฎ์ด์ด ๋ค ์ฌ๋ถํ ์ ์์ดํผ ์ด๋ฏธ์ง๋ฅผ ๋ถํธ ํ๋ฉด์ ํ์ํ๋ ๋ฐฉ์์ด ํ์ธ๋๋ค. ์ฆ ํผํด์๋ "๋ถํ ์ด ์ ๋๋ PC"๋ฅผ ๋ณด๋ ๊ฒ์ด ์๋๋ผ, ๊ณต๊ฒฉ์์ ๋ฉ์์ง๊ฐ ๋ฌ PC๋ฅผ ๋ณด๊ฒ ๋๋ค. 2018๋ Shamoon 3๋ ์ดํ๋ฆฌ์ ์์ ์๋น์ค ๊ธฐ์ Saipem์ ๊ฒจ๋ฅํด ์ฝ 300๋ ๊ท๋ชจ์ ์๋ฒยทPC๊ฐ ํผ์๋ ๊ฒ์ผ๋ก ๋ณด๋๋๋ค.
3.3 ์ฌ๊ฑด ํ์๋ผ์ธ
| ์์ | ์ฌ๊ฑด |
|---|---|
| 2012-04 | ์ด๋ ์์ ๋ถยท์์๋ ฅ ์์ค ๋์ Wiper ๊ณต๊ฒฉ โ Shamoon์ ์ ์ ์ผ๋ก ํ๊ฐ |
| 2012-05~07 | ์๋์ฝ IT ์ง์ ํผ์ฑ ๋ฉ์ผ โ ๋ด๋ถ ์ ์ฐฐยท์๊ฒฉ์ฆ๋ช ์์ง(์ถ์ ) |
| 2012-08-15 11:08 | ๋ ผ๋ฆฌํญํ ๋ฐ๋ โ ์ฝ 30,000๋ ํ์ผยทMBR ๋ฎ์ด์ฐ๊ธฐ. ๊ณต๊ฒฉ ์ 'Cutting Sword of Justice' Pastebin ์ ์ธ |
| 2012-08-16 | SymantecยทKasperskyยทSeculert ๋ถ์ ๊ณต๊ฐ, W32.DistTrack ๋ช
๋ช
|
| 2012-08-25 | ์๋์ฝ "์ฃผ์ ๋ด๋ถ ๋คํธ์ํฌ ๋ณต๊ตฌ" ๋ฐํ. ์ค์ ํ์ฅ ๋ณต๊ตฌ๋ 9์๊น์ง ์ง์ฐ๋๋ค๋ ์ฆ์ธ |
| 2012-08-29 | ๊ณต๊ฒฉ์, ๋ผ์ฐํฐยทCEO ๊ณ์ ์ ๋ณด๋ผ ์ฃผ์ฅํ๋ 2์ฐจ Pastebin ๊ฒ์ |
| 2012-08 ๋ง | ์นดํ๋ฅด RasGas๋ ์ ์ฌ ํผํด โ ๋ณ์ข ๋๋ ๋์ผ ๊ณ์ด๋ก ํ๊ฐ |
| 2016-11 | Shamoon 2 โ ์ฌ์ฐ๋ ํญ๊ณต์ฒญ(GACA) ๋ฑ ์ ๋ถ๊ธฐ๊ด ๊ฒจ๋ฅ, MBR ์์ดํผ + ๋ถํธ ์ด๋ฏธ์ง |
| 2017-01 | Shamoon 2 ๋ณ์ข ์ฌ๋ฑ์ฅ โ ์ฌ์ฐ๋ ์ ๋ถ๊ธฐ๊ด ์ถ๊ฐ ํผํด |
| 2018-12 | Shamoon 3 โ Saipem(์ดํ๋ฆฌ์) ๊ฒจ๋ฅ, ์๋ฒยทPC ์๋ฐฑ ๋ ํผ์ ๋ณด๋ |
4. ํผํด ๊ท๋ชจ/์ํฅ โ ์ซ์๋ณด๋ค ๋ฌด์์ด ๊ฒ์ '๋ณต๊ตฌ ์๊ฐ'
- 3๋ง ๋: ์๋์ฝ๊ฐ ๊ณต์ ํ์ธํ ํผํด ์ํฌ์คํ ์ด์ ์. ๋น์ ๋ณด๋๋ "์ ์ฒด ์ ๋ฌด์ฉ PC์ ์๋น ๋ถ๋ถ"์ผ๋ก ํํํ๊ณ , ์ผ๋ถ ๋ถ์์ 75% ์์ค์ผ๋ก ์ถ์ ํ๋ค.
- 2์ฃผ ์ด์์ ์ ๋ฌด ์ค๋จ: ์๋์ฝ๋ 8์ 25์ผ "์ฃผ์ ๋ด๋ถ ๋คํธ์ํฌ ๋ณต๊ตฌ"๋ฅผ ๋ฐํํ์ง๋ง, ํ์ฅ ์ฌ์ง๊ณผ ์ฆ์ธ์ 9์ ์ด๊น์ง ์์ ํธ๋ญ ์ ์ฌ๊ฐ ์ง์ฐ๋์์ ๋ณด์ฌ์ค๋ค. ๋ณต๊ตฌ๋ PC ์ฌ์ค์น + ๋ฐ์ดํฐ ์ฌ๋ฐฐํฌ์ ๋ฌผ๋ฆฌ์ ์์ ์ด์๋ค.
- ์ธ๊ณ ํ๋๋์คํฌ ์ฌ์ฌ๊ธฐ: ์๋์ฝ๋ ์์ฌ ํ๋ฌผ๊ธฐ์ ์๊ธ์ ๋์ํด ์ธ๊ณ ์์ฅ์ ํ๋๋์คํฌ๋ฅผ ๋๋ ๊ตฌ๋งคํ๋ค. ๋น์ ๋ณด์ ์๋ฌธ์ญ์ด์๋ ํฌ๋ฆฌ์ค ์ฟ ๋ฒ ์นด(Chris Kubecka)๋ ์ด ๊ณผ์ ์ด HDD ๊ฐ๊ฒฉ์ ์ํฅ์ ์คฌ๋ค๊ณ ์ฆ์ธํ๋ค. ์ฌ์ด๋ฒ ๊ณต๊ฒฉ์ด ๋ฌผ๋ฆฌ์ ๊ณต๊ธ๋ง ๊ฐ๊ฒฉ์ ํ๋ ์ฌ๋ก๋ค.
- ์์ฐ์ ๋ฉ์ถ์ง ์์๋ค: ์์ ์์ฐยท์ ์ ์ ์ด๋ง(ICS)์ ์ ๋ฌด๋ง๊ณผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ผ ์์๋ค. Shamoon์ ์๋์ ์ผ๋ก ICS๋ฅผ ๊ฑด๋๋ฆฌ์ง ์์๋ค. ์ด ๊ฒฝ๊ณ ๋๋ถ์ ์ธ๊ณ ์์ ๊ณต๊ธ์ ์ ์ง๋์ง๋ง, ๋ฐ๋๋ก ๋งํ๋ฉด ์ ๋ฌด๋ง์ ์ฌ์ค์ ๋ฌด๋ฐฉ๋น์๋ค.
- 2์ฐจ ํผํด โ ์ ๋ขฐ์ ๋ถ๊ดด: ๊ณต๊ฒฉ์๋ ๋ผ์ฐํฐยท๊ณ์ ์ ๋ณด๋ฅผ ๊ณต๊ฐํ๋ฉฐ "์ฐ๋ฆฌ๋ ์์ง ์์ ์๋ค"๊ณ ์ฃผ์ฅํ๋ค. ์ด๋ ๊ธฐ์ ์ ํผํด๋ณด๋ค ํฐ ํํยทํ์๋ ฅ ํผํด๋ฅผ ๋ง๋ค์๋ค.
- ๊ตญ๊ฐ๊ธ ํ๊ฐ: ๋น์ ๋ฏธ๊ตญ ๊ตญ๋ฐฉ์ฅ๊ด ๋ ์จ ํ๋คํ๋ ์ด ์ฌ๊ฑด์ ๋๊ณ "์ฌ์ด๋ฒ ์ง์ฃผ๋ง" ๊ฐ๋ฅ์ฑ์ ๊ฒฝ๊ณ ํ๋ค. ์ดํ ๋ฏธ๊ตญ์ ํ๊ดด์ ์ฌ์ด๋ฒ ๊ณต๊ฒฉ์ ๋ํ ์ต์งยท๋ณด๋ณต ์ฒด๊ณ๋ฅผ ๋ ผ์ํ๊ธฐ ์์ํ๋ค.
- ๋น์ฉ ์ถ์ : ์๋์ฝ๋ ๊ณต์ ๋ณต๊ตฌ ๋น์ฉ์ ๊ณต๊ฐํ์ง ์์๋ค. ์ ๊ณ ์ถ์ ์ ์์ต~์์ญ์ต ๋ฌ๋ฌ ๊ท๋ชจ์ด๋, ๊ณต์ ์์น๋ ์๋๋ค. ์ด ๊ธ์์๋ ํ์ธ๋ ์ฌ์ค(3๋ง ๋ยท2์ฃผยทHDD ์ฌ์ฌ๊ธฐยท์์ฐ ์ ์ง)๋ง ์ธ์ฉํ๋ค.
5. PoC โ ๋์ ์๋ฆฌ๋ฅผ '๊ฐ์ ๋ฉ'์์ ์ฌํํ๊ธฐ
์๋ 4๊ฐ PoC๋ ๋ชจ๋ ๋ก์ปฌ ์ค์ต ๋๋ ํฐ๋ฆฌ์์๋ง ๋์ํ๋ค. โ ์์ฃผยท์ํคํ ์ฒ ๋ถ๊ธฐ, โก ์๊ฒฉ์ฆ๋ช ์ฌ์ฌ์ฉ ํก์ ์ด๋, โข ์ด๋ฏธ์ง ๋ฎ์ด์ฐ๊ธฐ + ๊ฐ์ง MBR, โฃ ํ์ง ๋ฃฐ. ์ค์ ์ ์ฑ ํ์ยท์ค์ ๋์คํฌ ์ ๊ทผยท์ค์ ๋คํธ์ํฌ ์ ์ก์ ์ผ์ ํฌํจํ์ง ์๋๋ค.
PoC 1 โ ๋๋กํผ: ์๋น์ค ์์ฃผ + 32/64๋นํธ ๋ถ๊ธฐ (์๋ฎฌ๋ ์ด์ )
์ค์ ๋๋กํผ๋ SCM(์๋น์ค ์ ์ด ๊ด๋ฆฌ์)์ NtsSrv๋ฅผ ๋ฑ๋กํ๋ค. ๋ฉ์์๋ ๊ฐ์ ์๋น์ค ํ
์ด๋ธ(JSON)์ ๋ฑ๋กํด, ์ด๋ค ํ์ ์ด ๋จ๋์ง ๊ด์ฐฐํ๋ค. ์ค์ sc create๋ ๋ ์ง์คํธ๋ฆฌ ์ฐ๊ธฐ๋ ํ์ง ์๋๋ค.
#!/usr/bin/env python3
"""๊ต์ก์ฉ: ๋๋กํผ์ '์์ฃผ + ์ํคํ
์ฒ ๋ถ๊ธฐ' ๊ตฌ์กฐ๋ง ์ฌํํ๋ค.
์ค์ ์๋น์ค ๋ฑ๋ก/๋ ์ง์คํธ๋ฆฌ ์ฐ๊ธฐ/์คํ์ ํ์ง ์๋๋ค."""
import json, platform, struct
from pathlib import Path
LAB = Path("/tmp/shamoon_lab"); (LAB / "state").mkdir(parents=True, exist_ok=True)
SVC_DB = LAB / "state" / "services.json"
def drop_payload(arch_bits: int) -> Path:
"""32/64๋นํธ ์์ดํผ ์คํ
์ '๊ฐ์์ผ๋ก' ๋๋กญํ๋ค(๋ด์ฉ์ ์์ ํ ๋ง์ปค)."""
p = LAB / f"wiper_{arch_bits}.stub"
p.write_text(f"[EDU STUB] arch={arch_bits} target=lab-only\n", encoding="utf-8")
return p
def register_service(name: str, image: Path) -> dict:
db = json.loads(SVC_DB.read_text()) if SVC_DB.exists() else {}
db[name] = {"image": str(image), "start": "AUTO_START",
"note": "๊ฐ์ ํ
์ด๋ธ โ ์ค์ SCM ๋ฑ๋ก ์๋"}
SVC_DB.write_text(json.dumps(db, ensure_ascii=False, indent=2), encoding="utf-8")
return db[name]
# 64๋นํธ ํ๋ก์ธ์ค์์ 32๋นํธ ๋๋กํผ๊ฐ ๋๋ฉด 64๋นํธ ํ์ด๋ก๋๋ฅผ ์ ํํ๋ค
bits = struct.calcsize("P") * 8
payload = drop_payload(64 if bits == 64 else 32)
svc = register_service("NtsSrv", payload)
print("ํ๋ก์ธ์ค ์ํคํ
์ฒ:", platform.machine(), f"({bits}bit)")
print("๋๋กญ:", payload.name, "| ์๋น์ค:", svc)
print("\n[ํ์ง ํฌ์ธํธ] Windows ์ด๋ฒคํธ 7045์ 'NtsSrv' ์๋น์ค ์ค์น,")
print(" ์์คํ
๋๋ ํฐ๋ฆฌ์ ๋ฏ์ ์คํ ํ์ผ ์์ฑ, ๋ถํ
์ ์๋ ์์.")
PoC 2 โ ์๊ฒฉ์ฆ๋ช ์ฌ์ฌ์ฉ ํก์ ์ด๋ (๊ฐ์ ํธ์คํธ)
Shamoon์ ํ์ฐ์ ๊ณต์ ํด๋ + ์๊ฒฉ์ฆ๋ช
์ด๋ค. ๋ฉ์์๋ hosts/<์ด๋ฆ>/admin$ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฐ์ ๊ณต์ ๋ก ๋ง๋ค๊ณ , ํ๋์ฝ๋ฉ๋ ์๊ฒฉ์ฆ๋ช
๋ชฉ๋ก์ผ๋ก ์ ๊ทผ์ ์๋ํ๋ค. ์ค์ SMB ์ฐ๊ฒฐ(net use, smbclient)์ ํ์ง ์๋๋ค.
#!/usr/bin/env python3
"""๊ต์ก์ฉ: '๊ณต์ + ์๊ฒฉ์ฆ๋ช
' ํ์ฐ ๋ชจ๋ธ์ ํ์ผ ์์คํ
์ผ๋ก ํ๋ด๋ธ๋ค.
์ค์ ๋คํธ์ํฌ/SMB ํธ์ถ ์์ โ ๋ก์ปฌ ๋๋ ํฐ๋ฆฌ๋ง ์ฌ์ฉ."""
from pathlib import Path
LAB = Path("/tmp/shamoon_lab")
STUB = b"[EDU STUB] dropper body (not executable)\n"
# ๊ณต๊ฒฉ์๊ฐ ๋ด๋ถ์์ ์์งํ๋ค๊ณ ๊ฐ์ ํ ์๊ฒฉ์ฆ๋ช
๋ชฉ๋ก(๊ฐ์)
CREDS = [("administrator", "P@ssw0rd!"), ("itadmin", "itadmin123"),
("backup", "backup")]
HOSTS = ["fileserver", "hr-pc01", "finance-pc07", "eng-ws12"]
def try_share(host: str, user: str, pw: str) -> bool:
share = LAB / "hosts" / host / "admin$" # ๊ฐ์ UNC \\host\admin$
share.mkdir(parents=True, exist_ok=True)
# ์ค์ ์ธ์ฆ ๊ฒ์ฆ ๋์ '์ฝํ ์ํธ ๊ท์น'๋ง ์๋ฎฌ๋ ์ด์
ํ๋ค
weak = pw.lower() in {"password", "p@ssw0rd!", "itadmin123", "backup", "123456"}
if weak:
(share / "NtsSrv.exe").write_bytes(STUB) # ์๊ธฐ ๋ณต์ฌ
return True
return False
ok = 0
for host in HOSTS:
for user, pw in CREDS:
if try_share(host, user, pw):
print(f"[COPY] \\\\{host}\\admin$ as {user}:{pw}")
ok += 1
break
print(f"\n๋ณต์ฌ ์ฑ๊ณต {ok}/{len(HOSTS)} ํธ์คํธ")
print("[๊ตํ] ๋ก์ปฌ ๊ด๋ฆฌ์ ์ํธ๊ฐ ๊ณต์ ๋๋ฉด, ์ทจ์ฝ์ 0๊ฐ๋ก๋ ๋๋ฉ์ธ ์ ์ฒด๊ฐ ์ ํ๋๋ค.")
ํด์ค: ์ค์ ์ฌ๊ณ ์์๋ ์ต์คํ๋ก์์ ์์๋ค. ์ด๋ฏธ ์๊ณ ์๋ ๊ณ์ ๊ณผ ๋ชจ๋ PC์ ์ด๋ ค ์๋ ๊ด๋ฆฌ ๊ณต์ (admin$)๋ง์ผ๋ก ์ถฉ๋ถํ๋ค. ์ค๋๋ LAPS(๋ก์ปฌ ๊ด๋ฆฌ์ ์ํธ ์๋ ๊ด๋ฆฌ), Credential Guard, ๊ณ์ธต์ ๊ด๋ฆฌ ๋ชจ๋ธ(tiered admin)์ด ํ์ค์ด ๋ ์ด์ ๊ฐ ์ฌ๊ธฐ์ ์๋ค.
PoC 3 โ ์์ดํผ: ์ด๋ฏธ์ง ๋ฎ์ด์ฐ๊ธฐ + ๊ฐ์ง MBR (์ ๋ ์์ ๊ฐ๋ ํฌํจ)
๊ฐ์ฅ ์ํํ ๋จ๊ณ์ง๋ง, ๋ฉ์์๋ ๊ฐ์ ํ์ผ์๋ง ์ด๋ค. ์ฝ๋๋ ๊ฒฝ๋ก๊ฐ ๋ฉ ๋ฐ์ด๊ฑฐ๋ ์ค์ ๋์คํฌ ์ฅ์น ํจํด์ด๋ฉด ์ฆ์ ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค. MBR๋ ์ค์ ์นํฐ๊ฐ ์๋๋ผ fake_disk.img์ ์ฒซ 512๋ฐ์ดํธ์๋ง ๊ธฐ๋กํ๋ค.
#!/usr/bin/env python3
"""๊ต์ก์ฉ ์์ดํผ ์๋ฎฌ๋ ์ดํฐ โ /tmp/shamoon_lab ๋ฐ์ผ๋ก๋ ์ ๋ ์ฐ์ง ์๋๋ค."""
import json, os, re
from pathlib import Path
LAB = Path("/tmp/shamoon_lab").resolve()
VICTIM = LAB / "victim"; VICTIM.mkdir(parents=True, exist_ok=True)
(LAB / "state").mkdir(parents=True, exist_ok=True)
REPORT = LAB / "state" / "stolen_file_list.json"
DISK = LAB / "fake_disk.img"
DEVICE_PREFIXES = ("\\\\.\\", "/dev/", "/proc/", "/sys/")
def guard(p: Path) -> Path:
if str(p).startswith(DEVICE_PREFIXES):
raise PermissionError(f"EDU-GUARD: ์ค์ ์ฅ์น ๊ฒฝ๋ก ๊ฑฐ๋ถ -> {p}")
rp = p.resolve()
if rp != LAB and LAB not in rp.parents:
raise PermissionError(f"EDU-GUARD: ๋ฉ ๋ฐ ์ ๊ทผ ๊ฑฐ๋ถ -> {rp}")
return rp
# 0) ๊ฐ์ ํผํด ํ์ผ
for n in ["q3_report.docx", "payroll.xlsx", "design.dwg", "notes.txt"]:
(VICTIM / n).write_bytes(b"
guard()๋ โ \\.\ยท/dev/ยท/proc/ยท/sys/๋ก ์์ํ๋ ๊ฒฝ๋ก, โก ๋ฉ ๋๋ ํฐ๋ฆฌ ๋ฐ์ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ๊ฑฐ๋ถํ๋ค. ์ค์ Shamoon์ ์ด ๊ฐ๋๊ฐ ์๋ ์ฝ๋์๊ณ , ๊ทธ๋์ \\.\PhysicalDrive0์ ์ง์ ์ผ๋ค. ์ค์ต์์ ์ด ๊ฐ๋๋ฅผ ์ง์ฐ์ง ๋ง ๊ฒ.PoC 4 โ ํ์ง: YARA + ํ์ ๊ธฐ๋ฐ ๋ฃฐ
์์ดํผ๋ ํ์ผ ์๊ทธ๋์ฒ๋ณด๋ค ํ์๋ก ์ก๋ ๊ฒ์ด ํจ๊ณผ์ ์ด๋ค. ๋ค๋ง ์๋ ค์ง ๋ฌธ์์ดยท์๋น์ค๋ช ์ ์ด๊ธฐ ๋์์ ์ ์ฉํ๋ฏ๋ก ํจ๊ป ๋๋ค.
rule Wiper_Shamoon_Family_Markers
{
meta:
description = "Shamoon/DistTrack ๊ณ์ด ์์ดํผ ์งํ (๊ต์ก์ฉ)"
author = "security-lab"
date = "2026-10-24"
reference = "https://en.wikipedia.org/wiki/Shamoon"
scope = "file"
strings:
$svc = "NtsSrv" ascii wide nocase
$raw = "RawDisk" ascii wide nocase
$phys = "\\\\.\\PhysicalDrive" ascii wide nocase
$shn = "SHN/AMOO" ascii wide nocase
$dist = "DistTrack" ascii wide nocase
$flag = { 89 50 4E 47 } // ๋ฎ์ด์ฐ๊ธฐ ์ด๋ฏธ์ง ํค๋ ๋ณํ
condition:
uint16(0) == 0x5A4D and 2 of them
}
- ์๋น์ค ์ค์น ๊ฐ์: Windows ๋ณด์ ๋ก๊ทธ 7045์์
NtsSrv๋๋ ์์คํ ๋๋ ํฐ๋ฆฌ์ ๋ฏ์ ๋ฐ์ด๋๋ฆฌ ๋ฑ๋ก์ ํ์ง. 2012๋ ์๋ ์ด ๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด๋ ์กฐ์ง์ด ๊ฑฐ์ ์์๋ค. - ๋๋ผ์ด๋ฒ ๋ก๋ ๊ฐ์: Sysmon EID 6(๋๋ผ์ด๋ฒ ๋ก๋)์์
RawDiskยท์๋ช ๋์ง๋ง ๋น์ ์ ๊ฒฝ๋ก์ ๋๋ผ์ด๋ฒ๋ฅผ ํ์ดํธ๋ฆฌ์คํธ์ ๋น๊ต. ์ทจ์ฝ ๋๋ผ์ด๋ฒ ์ฐจ๋จ ์ ์ฑ (Microsoft Vulnerable Driver Blocklist)์ด ์ค๋์ ๋ต์ด๋ค. - ๋๋ ํ์ผ ์ฐ๊ธฐ ํญ์ฃผ: Sysmon EID 11 ๋๋ EDR์์ ๋์ผ ํ๋ก์ธ์ค๊ฐ 1๋ถ ๋ด ์์ฒ ๊ฐ ํ์ผ์ ์ฌ์์ฑํ๋ ํจํด. ์ ์ ๋ฐฑ์ ยท์์ถ ํด์ ์ ๊ตฌ๋ถํ๋ ค๋ฉด ํ์ผ ํฌ๊ธฐ ๋ณํ ์์ด ๋ด์ฉ๋ง ๋ฐ๋๋ ํน์ง์ ํจ๊ป ๋ณธ๋ค.
- ์์ ๋์คํฌ ํธ๋ค:
\\.\PhysicalDriveN์ ๋ํ ์ฐ๊ธฐ ๊ถํ ํธ๋ค ์์ฑ์ ์ ์ ์ ๋ฌด์์ ๊ทนํ ๋๋ฌผ๋ค. EDR ๋ฃฐ ํ๋๋ก ์กํ๋ ๋ํ์ ํจํด์ด๋ค. - ์ด๊ทธ๋ ์ค ์ด์: ๋ด๋ถ ์๋ฒ๋ก ํฅํ๋ base64 ํ์ด๋ก๋์ HTTP POST, ์งง์ ์๊ฐ์ ์ฌ๋ฌ ํธ์คํธ๊ฐ ๊ฐ์ URL๋ก ์ ์ํ๋ ํ์.
6. ๋ฐฉ์ด ๋ฐฉ๋ฒ โ Shamoon์ด ๊ฐ๋ฅด์ณ์ค ๋ค์ฏ ๊ฐ์ง
6.1 ์ฌ๊ณ ์ : ์นจํฌ๋ฅผ '๋ฆ์ถ๊ณ ' ํ๊ดด๋ฅผ '๊ฒฌ๋๊ฒ'
- ์๊ฒฉ์ฆ๋ช ์์์ด ์ต์ฐ์ : ๋ก์ปฌ ๊ด๋ฆฌ์ ์ํธ ๊ณต์ ๊ธ์ง(LAPS), ๋๋ฉ์ธ ๊ด๋ฆฌ์ ๊ณ์ ์ ์ํฌ์คํ ์ด์ ๋ก๊ทธ์จ ์ฐจ๋จ, ํฐ์ด๋ ๊ด๋ฆฌ. Shamoon์ ํ์ฐ์ ์ทจ์ฝ์ ์ด ์๋๋ผ ์ฌ์ฌ์ฉ๋ ์ํธ๋ก ์ด๋ค์ก๋ค.
- ์คํ๋ผ์ธยท๋ถ๋ณ ๋ฐฑ์ : 3-2-1 ์์น + ๋ถ๋ณ(immutable) ์คํ ๋ฆฌ์ง + ์์ด๊ฐญ ์ฌ๋ณธ. ์จ๋ผ์ธ ๋ฐฑ์ ์ ๊ฐ์ ์๊ฒฉ์ฆ๋ช ์ผ๋ก ์ง์์ง ์ ์๋ค. Shamoon์ ๋ฐฑ์ ์๋ฒ๊น์ง ๋ ธ๋ ธ๋ค.
- ๊ด๋ฆฌ ๊ณต์ ์ต์ํ:
admin$ยทC$์ ๊ทผ์ ์ ๋ฌด์ ์ผ๋ก ํ์ํ ํธ์คํธ๋ก ์ ํํ๊ณ , SMB ์๋ช ยทSMBv1 ์ ๊ฑฐ๋ฅผ ์ ์ฉํ๋ค. - ์ทจ์ฝ ๋๋ผ์ด๋ฒ ์ฐจ๋จ: ์๋ช ๋ ๋๋ผ์ด๋ฒ๋ผ๋ ์ํํ ๊ฒ์ ๋ก๋๋์ง ์๊ฒ WDAC/AppLocker + Microsoft ์ทจ์ฝ ๋๋ผ์ด๋ฒ ์ฐจ๋จ ๋ชฉ๋ก์ ์ด์ํ๋ค. "์๋ช = ์์ "์ด ์๋๋ค.
- ๋คํธ์ํฌ ๋ถํ : ์ ๋ฌด๋งยท๋ฐฑ์ ๋งยทICS๋ฅผ ๋ถ๋ฆฌํ๊ณ , ์ ๋ฌด๋ง์์ ICS๋ก์ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ณธ ์ฐจ๋จํ๋ค. ์๋์ฝ๊ฐ ์์ ์์ฐ์ ์งํจ ๊ฒ์ ์ด ๋ถ๋ฆฌ ๋๋ถ์ด์๋ค.
- ์ด์ ํ์ ํ์ง: ์๋น์ค ์ค์นยท๋๋ผ์ด๋ฒ ๋ก๋ยท๋๋ ํ์ผ ์ฐ๊ธฐยท์์ ๋์คํฌ ์ ๊ทผ์ ์๊ด ๋ฃฐ๋ก ๋ฌถ๋๋ค. ๋จ์ผ ์ด๋ฒคํธ๋ ์คํ์ด์ง๋ง, ์กฐํฉ์ ๊ฑฐ์ ํ์ ์ด๋ค.
6.2 ์ฌ๊ณ ์ค: '๋์ง ๋ง๊ณ ๊ฒฉ๋ฆฌ'
- ์ ์์ ๋์ง ์๋๋ค: ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฑฐ์ ์ํธํ ํคยทC2 ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๊ณ , ํ์ผ ์์คํ ์ ๋ ๋ณต๊ตฌ ๊ฐ๋ฅ์ฑ๋ ์ค์ด๋ ๋ค. ๋คํธ์ํฌ์์ ๊ฒฉ๋ฆฌ๊ฐ ๋จผ์ ๋ค.
- ๊ฐ์ผ ๋ฒ์๋ฅผ ์๊ฒฉ์ฆ๋ช ๊ธฐ์ค์ผ๋ก ์ญ์ถ์ : ์ด๋ค ๊ณ์ ์ด ์ด๋ ํธ์คํธ์ ๋ก๊ทธ์จํ๋์ง, ์ด๋ค ๊ณต์ ์ ์ ๊ทผํ๋์ง๋ฅผ ๋ณธ๋ค. Shamoon์ ๊ณ์ ๋จ์๋ก ๋ฒ์ก๋ค.
- ์์ดํผ๋ '๋ณต๊ตฌ'๊ฐ ์๋๋ผ '์ฌ๊ตฌ์ถ': ๋ฎ์ด์ด ํ์ผ์ ์นด๋น์ผ๋ก๋ ์ด์๋์ง ์๋๋ค. ๋ฐฑ์ ์์ ๋ณต์ํ ์ ์๋ ๋ฐ์ดํฐ๋ ์์ค๋ก ํ์ ํ๊ณ , ์ฌ๊ตฌ์ถ ์ ์ฐจ๋ฅผ ์คํํ๋ค.
- ๊ณต๊ฒฉ์ ๋ฉ์์ง๋ฅผ ํ์์ ์ฐ์ง ์๋๋ค: Shamoon์ ๊ธ์ ์๊ตฌ๊ฐ ์์๋ค. Pastebin ๊ฒ์๊ธ์ ์ ์ ์ด์ง ํ์ ์ฐฝ๊ตฌ๊ฐ ์๋๋ค.
6.3 ์ฌ๊ณ ํ: ์ ๋์ ํ๋ จ
- ๋ณต๊ตฌ ๋ฆฌํ์ค: "3๋ง ๋๋ฅผ 2์ฃผ ์์ ์ฌ์ค์นํ ์ ์๋๊ฐ?"๋ฅผ ๋ฌธ์๋ก ๋ตํ ์ ์์ด์ผ ํ๋ค. ์๋์ฝ๋ ์ธ๊ณ HDD ์์ฅ์ ์ฌ๋ค์ด๋ ๋ฐฉ์์ผ๋ก ๋ตํ๋ค โ ๊ทธ๊ฒ์ด ์ ์ผํ ๋ฐฉ๋ฒ์ด ๋์ง ์๋๋ก ์ด๋ฏธ์ง ๋ฐฐํฌยทPXEยท์๋ํ๋ฅผ ์ค๋นํ๋ค.
- ICS ๊ฒฝ๊ณ ์ฌํ์ธ: "๋ถ๋ฆฌ๋ผ ์๋ค"๋ ๋ง์ ๊ฒ์ฆ์ด ์๋๋ค. ์ ๋ฌด๋ง์์ ์ ์ด๋ง์ผ๋ก ๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ์ค์ ๋ก ์ค์บํ๊ณ ์ฐจ๋จํ๋ค.
- ์ต์ง์ ๊ท์: ๊ท์์ด ์์ผ๋ฉด ๋ณด๋ณต๋ ์๋ค. Shamoon์ ์ด๋ ๋ฐฐํ๋ก ํ๊ฐ๋์ง๋ง ๊ณต์ ๊ธฐ์๋ก ์ด์ด์ง์ง ์์๋ค. ์ดํ ๊ฐ๊ตญ์ ์ฌ์ด๋ฒ ๊ท์ยท์ ์ฌ ์ฒด๊ณ๋ฅผ ๊ฐํํ๋ค.
7. ๊ตํ โ ํ๊ดดํ ์ ์ฑ์ฝ๋์ ๋ฌธ๋ฒ
- ๋์ฌ์จ์ด๋ณด๋ค ์ค๋๋ '๊ฒฝ์ ํ': ๋ชธ๊ฐ์ ๋ฐ์ง ์์๋, ๋ณต๊ตฌ ๋น์ฉยท์ ๋ฌด ์ค๋จยทํํ์ด ๊ณต๊ฒฉ์ ์์ต(๋๋ ์ ์น์ ํจ๊ณผ)์ด ๋๋ค. 2026๋ ์ ์์ดํผยทํ๊ดดํ ๊ณต๊ฒฉ๋ ๊ฐ์ ๊ณ์ฐ์ ํ๋ค.
- ์ทจ์ฝ์ ์ ํ์๊ฐ ์๋๋ค: ํผ์ฑ 1๊ฑด + ์ฌ์ฌ์ฉ๋ ๊ด๋ฆฌ์ ์ํธ + ๊ด๋ฆฌ ๊ณต์ . ์ ๋ก๋ฐ์ด๋ ์์๋ค. ์ด์ ์์์ด ๊ณง ๊ณต๊ฒฉ๋ฉด์ด๋ค.
- ํฉ๋ฒ ๋๊ตฌ์ ๋ฌด๊ธฐํ: ์๋ช ๋ RawDisk ๋๋ผ์ด๋ฒ, ์ ์ ์๋น์ค API, ์ ์ ๊ณต์ ํ๋กํ ์ฝ. BYOVD์ LOLBins ๋ฌธ์ ์ ์ํ์ด๋ฉฐ, "์ ์ฑ์ฝ๋ ์๊ทธ๋์ฒ"๋ง์ผ๋ก๋ ๋ถ์กฑํ ์ด์ ๋ค.
- ๋ฐฑ์ ์ '์์'์ด ์๋๋ผ '๋ณต์๋จ'์ด ๊ธฐ์ค: Shamoon์ ๋ฐฑ์ ๊น์ง ๋ ธ๋ ธ๋ค. ์คํ๋ผ์ธยท๋ถ๋ณยท์์ด๊ฐญ์ด ์์ผ๋ฉด ๋ฐฑ์ ์ ๊ฐ์ ์ด๋ช ์ ๊ณต์ ํ๋ค.
- ์๊ฐ์ด ๊ณง ํผํด: 11:08์ด๋ผ๋ ์๊ฐ, ์ฐํด, 2์ฃผ์ ๋ณต๊ตฌ. ๊ณต๊ฒฉ์๋ ์กฐ์ง์ ๋ฌ๋ ฅ์ ์ฝ๋๋ค. ๋ฐฉ์ด์๋ ์ฐํดยท์ผ๊ฐยท์ฃผ๋ง์ ํ์ง ๊ณต๋ฐฑ์ ์์ ํด์ผ ํ๋ค.
์ถ์ฒ ๋ฐ ํจ๊ป ์ฝ๊ธฐ
- Wikipedia โ Shamoon โ ์ฌ๊ฑด ๊ฐ์ยท๋ชจ๋ ๊ตฌ์กฐยท๋ณต๊ตฌ ๊ฒฝ๊ณผยท2์ฐจ ๊ณต๊ฒฉ
- Kaspersky Securelist โ Shamoon the Wiper: Copycats at Work โ ์ด๊ธฐ ๋ถ์๊ณผ WiperยทFlame ์ฐ๊ด์ฑ
- BBC News โ Shamoon virus targets energy sector infrastructure (2012-08-17)
- CNN Money โ The inside story of the biggest hack in history โ HDD ์ฌ์ฌ๊ธฐยท๋ณต๊ตฌ ํ์ฅ ์ฆ์ธ
- Palo Alto Unit 42 โ Shamoon 2: Return of the Wiper โ 2016๋ ๋ณ์ข ์ MBR ์์ดํผยทํธ๋ฆฌ๊ฑฐ ๋ถ์
- CISA โ Shamoon 3 (2018) ๊ฒฝ๋ณด โ Saipem ์ฌ๋ก์ ์งํ
- MITRE ATT&CK โ Shamoon (S0140) โ ์ฌ์ฉ๋ ๊ธฐ๋ฒ ๋งคํ
- ํจ๊ป ์ฝ๊ธฐ: NotPetya (2017) ยท Industroyer / CrashOverride ยท Stuxnet (2010) ยท LockBit (RaaS)