1. ๋ฐฐ๊ฒฝ/์ญ์ฌ โ ์ธ์ , ๋๊ฐ, ์ ์ ๋ช ํ๊ฐ
2016๋ 2์ 4์ผ ๋ฐค๋ถํฐ 5์ผ ์ฌ์ด, ๋ฐฉ๊ธ๋ผ๋ฐ์ ์ค์์ํ(Bangladesh Bank)์ด ๋ด์ ์ฐ๋ฐฉ์ค๋น์ํ(FRB New York)์ ๋๊ณ ์๋ ๊ณ์ข์์ SWIFT ๊ตญ์ ๊ฒฐ์ ๋ง์ ํตํด 35๊ฑด์ ์ก๊ธ ์ง์๊ฐ ์์์ก๋ค. ๋ฐ์ ์๋ ๋ฐฉ๊ธ๋ผ๋ฐ์ ์ค์์ํ์ ์ ์ SWIFT ํฐ๋ฏธ๋๊ณผ ์ ์ ์๊ฒฉ์ฆ๋ช ์ด์๊ณ , ์ ๋ฌธ(๋ฉ์์ง) ํ์๋ ์ ์์ด์๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ฐ์ ์๋ ์ํ ๋ด๋ถ์ ์นจํฌํด ์๋ ๊ณต๊ฒฉ์์๋ค. ๋ํ ๋ค์ธ 2์ 8์ผ(์ค๊ตญ ์ค๋ ์ฐํด ์ฒซ๋ ) ์ํ์ด ์ด์์ ์ธ์งํ์ ๋, ์ด๋ฏธ 8,100๋ง ๋ฌ๋ฌ๋ ํ๋ฆฌํ์ผ๋ก ๋น ์ ธ๋๊ฐ ๋ค์๋ค.
- ์ฌ๊ฑด๋ช
: Bangladesh Bank SWIFT Heist (๋ฐฉ๊ธ๋ผ๋ฐ์ ์ค์์ํ ์ฌ์ด๋ฒ ๊ฐํ) / ๊ด๋ จ ์
์ฑ์ฝ๋
DYEPACK(๋ณ์นญ BanSwift),evtdiag.exe - ์๊ธฐ: ์ ์ฑ์ฝ๋ ์ค์น 2016๋ 1์ โ ์ก๊ธ ์ง์ 2016-02-04 ~ 02-05(๋ฐฉ๊ธ๋ผ๋ฐ์ ์ฃผ๋ง) โ ์ํ ์ธ์ง 02-08 โ ํฌ๋ ์ยท๊ตญ์ ๊ณต์กฐ
- ๊ณต๊ฒฉ์: APT38(= Lazarus ๊ทธ๋ฃน ๊ณ์ด / ๋ณ์นญ BeagleBoyz, Bluenoroff, Sapphire Sleet, NICKEL GLADSTONE). ๋ฏธ ์ ๋ถ๋ ๋ถํ ์ ์ฐฐ์ด๊ตญ(RGB) ์ํ์ผ๋ก ๊ท์
- ํต์ฌ: ์ทจ์ฝ์ ์ต์คํ๋ก์์ด ์๋๋ผ ์ํ ๋ด๋ถ ์นจํฌ + ์๊ฒฉ์ฆ๋ช ํ์ทจ + ๊ฒฐ์ ๋ฐ์ดํฐ ์ง์ ์กฐ์. ํ๋ฆฐํฐ ์ถ๋ ฅยทPDF ํ์๊น์ง ์์กฐ
- ๊ท๋ชจ: ์๋ $951M(35๊ฑด) ์ค ์น์ธ $101M, ์ค์ ์ ์ถ $81M(ํ๋ฆฌํ) + $20M(์ค๋ฆฌ๋์นด, ์ ์ก ํ์), ๋๋จธ์ง $850M ์ฐจ๋จ
์ ์ ๋ช ํ๊ฐ. ๊ทธ์ ๊น์ง ๋ํ ์ฌ๊ณ ๋ "์์ด ํผ์ก๋ค"(MorrisยทSlammerยทConficker), "๋์ฌ์จ์ด๊ฐ ์ํธํํ๋ค"(WannaCryยทNotPetya), "์์ค์ด ํ๊ดด๋๋ค"(Stuxnet) ๊ฐ์ ์์ฌ์๋ค. ์ด ์ฌ๊ฑด์ ์ฒ์์ผ๋ก "๊ตญ๊ฐ๊ฐ ๊ตญ์ ๊ฒฐ์ ๋ง์ ์ ์๋ ์ํ์ ์ง์ ํธ์๋ค"๋ ์ฌ์ค์ ๋๋ฌ๋๋ค. ๊ทธ ์ถฉ๊ฒฉ์ ์ธ ๊ฐ๋๋ก ๋จ์๋ค.
- ํ์ง ํจ๋ฌ๋ค์์ ์ ํ: ์ ์ฑ ํ์๊ฐ ์ ์ ์ํํธ์จ์ดยท์ ์ ์๊ฒฉ์ฆ๋ช ยท์ ์ ์ ๋ฌธ ํ์ ์์์ ์ผ์ด๋ฌ๋ค. ์๊ทธ๋์ฒยท๋ธ๋๋ฆฌ์คํธ ๊ธฐ๋ฐ ํ์ง๋ ์๋ฆฌ์ ์ผ๋ก ๋ฌด๋ ฅํ๊ณ , ์ดํ ๊ธ์ต๊ถ์ ํ์ยท๋์ฌ(reconciliation) ๊ธฐ๋ฐ ํต์ ๋ก ๋ฌด๊ฒ์ค์ฌ์ ์ฎ๊ฒผ๋ค.
- ์ ๋์ ํ์: ์ด ์ฌ๊ฑด์ด ์ง์ ๊ณ๊ธฐ๊ฐ ๋์ด SWIFT๋ CSP(Customer Security Programme)์ ์๋ฌด ํต์ ํ๋ ์์ํฌ CSCF๋ฅผ ๋ง๋ค์๊ณ , ์ ์ธ๊ณ ์ํ์ ๊ฒฐ์ ์์คํ ๋ณด์ ๊ธฐ์ค์ด ๋ฐ๋์๋ค. ํ๋ฆฌํ์ ์นด์ง๋ ธ ์๊ธ์ธํ๋ฐฉ์ง(AML) ์ฌ๊ฐ์ง๋๋ฅผ ์ฌ๊ฒํ ํ๋ค.
- ๊ท์๊ณผ ์ฑ ์: 2018๋ ๋ฏธ๊ตญ ๋ฒ๋ฌด๋ถ๋ ๋ถํ ํ๋ก๊ทธ๋๋จธ Park Jin Hyok์ ๋ฐฉ๊ธ๋ผ๋ฐ์ ์ํ ํดํนยทWannaCryยท2014 ์๋ ํฝ์ฒ์ค ๊ณต๊ฒฉ ํ์๋ก ๊ธฐ์ํ๊ณ , 2021๋ ์๋ ๋ฐฉ๊ธ๋ผ๋ฐ์ ์ค์์ํ์ด ์๊ธ ํ์๋ฅผ ์ํด ํ๋ฆฌํ RCBC๋ฅผ ์๋๋ก ์์ก์ ์ ๊ธฐํ๋ค. 2023๋ ๋คํ๋ฉํฐ๋ฆฌ Billion Dollar Heist์ ์์ฌ๊ฐ ๋๋ค.
2. ๊ฐ์ผยท์ ํ ๊ฒฝ๋ก โ '์ ํ'๊ฐ ์๋ ๊ณต๊ฒฉ
์ด ์ฌ๊ฑด์๋ ์๊ธฐ๋ณต์ ๋, ์ค์บ๋, ์ํฌ ์ ํ๋ ์๋ค. ๊ทธ๋์ ์ ์ฑ์ฝ๋ ๋ถ๋ฅ์ '์'์ด ์๋๋ผ ํ์ ํ ์นจํฌ(APT) + ๊ฒฐ์ ์ฌ๊ธฐ๋ก ๋ณธ๋ค. ํ์ฐ ๋ฐฉ์์ด ์๋๋ผ ์นจํฌ โ ์ ์ฐฐ โ ์คํ์ด๋ผ๋ ์๊ฐ์ถ์ผ๋ก ๋ด์ผ ํ๋ค.
- 1๋จ๊ณ ยท ๋ด๋ถ ์นจํฌ์ ์ค์น(2016๋ 1์): ๋ฐฉ๊ธ๋ผ๋ฐ์ ์ค์์ํ ์์ฒด ํฌ๋ ์ ์กฐ์ฌ๋ 2016๋ 1์๊ฒฝ ์์คํ ์ ์ ์ฑ์ฝ๋๊ฐ ์ค์น๋์ด ์ํ์ ๋ด๋ถ ์ด์ ์ ์ฐจ ์ ๋ณด๋ฅผ ์์งํ๋ค๊ณ ๋ฐํ๋ค. ์กฐ์ฌํ(World Informatix + Mandiant)์ ๊ณต๊ฒฉ์๊ฐ ์ง์๋ค์ ์ ๋ฌด๋ฅผ ๊ฐ์ํด ์ก๊ธ ์ ์ฐจ์ ์ต์ํด์ก๋ค๊ณ ํ๋จํ๋ค. ์ด๊ธฐ ์นจํฌ ๊ฒฝ๋ก๋ก๋ ์ ์ฑ ๋ฌธ์๊ฐ ์ฒจ๋ถ๋ ์คํผ์ดํผ์ฑ ๋ฉ์ผ์ด ์ฌ๋ฌ ๋ณด๋์์ ์ง๋ชฉ๋์ง๋ง, ๊ณต์ ํฌ๋ ์์ด ํ์ ํ ์ฌ์ค์ '์ ์ฑ์ฝ๋ ์ค์น + ์ฅ๊ธฐ ์ ์ฐฐ' ์ชฝ์ด๋ค.
- 2๋จ๊ณ ยท ๊ฒฐ์ ์ธํ๋ผ ์ดํด: ์ํ์ SWIFT ์ ์์ ๋ด๋ถ๋ง์ ์ ์ฉ ์ํํธ์จ์ด(Alliance Access)๊ฐ ๋ด๋นํ๋ค. ์ด ์๋ฒ๋ ์ ๋ฌธ ์์ฑยทํ์ฑยท๊ธฐ๋กยท์ถ๋ ฅ๊น์ง ์ ๋ถ ์ํํ๋ค. ๊ณต๊ฒฉ์๋ ์ด ํ๊ฒฝ์ ๊ด์ฐฐํ ๋ค ์ก๊ธ ์คํ์ ํ์ํ ์๊ฒฉ์ฆ๋ช ๊ณผ ์กฐ์ ์ง์ ์ ํ๋ณดํ๋ค.
- 3๋จ๊ณ ยท '์์ ์ข ๋ฃ'๋ฅผ ๋ ธ๋ฆฐ ์คํ(2์ 4~5์ผ): ๋ฐฉ๊ธ๋ผ๋ฐ์ ์ํ์ด ์ฃผ๋ง๋ก ๋ฌธ์ ๋ซ์ ์์ ์ 35๊ฑด์ ์ก๊ธ ์ง์๋ฅผ ๋ชฐ์์ ๋ฐํํ๋ค. ์ธ๋ ฅ์ด ์๋ ์๊ฐ๋์ ๋๋ ์ก๊ธ + ์ฆ์ ๊ธฐ๋ก ์ญ์ ๊ฐ ๋์์ ์ผ์ด๋ฌ๊ธฐ ๋๋ฌธ์ ๋ด๋ถ์์๋ "๊ฑฐ๋๊ฐ ์์๋ ๊ฒ"์ฒ๋ผ ๋ณด์๋ค.
- 4๋จ๊ณ ยท ๊ฐ์ ์๋ฒ์ ์ํ ํ์ฐ(๋ค๋ฅธ ์ํ๋ค๋ก): ๊ฐ๋ณ ์ ์ฑ์ฝ๋๊ฐ ํผ์ง ๊ฒ ์๋๋ผ ๊ณต๊ฒฉ ๊ธฐ๋ฒ(TTP)์ด ์ฌ์ฌ์ฉ๋๋ค. APT38์ ์์ฝฐ๋๋ฅด Banco del Austro, ๋ฒ ํธ๋จ Tien Phong Bank, ๋๋ง Far Eastern International Bank, ์น ๋ Banco de Chile ๋ฑ ์์์ยท๋จ๋ฏธ ์ํ์ SWIFT ๋จ๋ง์ ์๋ฌ์ ๊ฒจ๋ฅํ๊ณ , MITRE ATT&CK ๊ธฐ์ค ์ต์ 38๊ฐ๊ตญ์ ์ํยท๊ฑฐ๋์ยทATM์ด ํ์ ์ด ๋๋ค.
์ ๋ฆฌํ๋ฉด ์ด ๊ณต๊ฒฉ์ '์ ํ ๊ฒฝ๋ก'๋ ๋คํธ์ํฌ๊ฐ ์๋๋ผ "๊ฒฐ์ ๋ง์ ์ ์๋ ํฐ๋ฏธ๋์ ๋ณด์ ํ ๊ธฐ๊ด"์ด๋ผ๋ ์๊ฒฉ ์กฐ๊ฑด์ด๋ค. ๊ทธ๋์ ๋ฐฉ์ด์ ๋จ์๋ ๋ฐฑ์ ์ด ์๋๋ผ ๊ธ์ต ์ธํ๋ผ์ ํต์ (์ธ๊ทธ๋ฉํ ์ด์ ยท2FAยท๋์ฌ)๊ฐ ๋๋ค.
3. ๋์ ์๋ฆฌ ์์ธ ๋ถ์ โ ์ฝ๋/๊ตฌ์กฐ ๋ ๋ฒจ
3-1. ์ด ๊ณต๊ฒฉ์ ์ ์ : ๊ฒฐ์ ๋ช ๋ น์ '์ํํธ์จ์ด๊ฐ ๋ง๋๋ ๋ฐ์ดํฐ'๋ค
- MT ์ ๋ฌธ๊ณผ ๋ก์ปฌ ์์ฅ: SWIFT ๊ฒฐ์ ๋ MT103(๊ณ ๊ฐ ์ก๊ธ) ๊ฐ์ ์ ๋ฌธ(message) ํํ๋ก ์ค๊ฐ๋ค. ์ ๋ฌธ์๋ ์ก์ ์ฐธ์กฐ๋ฒํธ, ํตํยท๊ธ์ก, ์์ทจ์ธ, ์์ทจ์ํ ๊ฐ์ ํ๋๊ฐ ๋ด๊ธฐ๊ณ , ์ ์ ์ํํธ์จ์ด๋ ์ด๋ฅผ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋กํ๊ณ ํ์ธ ์ ๋ฌธ์ ํ๋ฆฐํฐ๋ก ์ถ๋ ฅํ๋ฉฐ ํ๋ฉด(PDF)ยท์กฐํ ํ๋ฉด์ผ๋ก ๋ณด์ฌ์ค๋ค.
- ๋ฐ๋ผ์ "๋์ด ์์ง์๋ค"๋ ์ฌ์ค์ ์ธ ๊ณณ์ ํ์ ์ ๋จ๊ธด๋ค: โ ์ ์ฅ๋ ๊ธฐ๋ก(DB), โก ์ก์ถยท์ถ๋ ฅ๋๋ ์ ๋ฌธ(ํ๋ฆฐํฐ), โข ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ๋ฉด(PDF/๋ทฐ์ด). ์ด ์ฌ๊ฑด์ ์ ์ฑ์ฝ๋๋ ์ธ ์ธต์ ๋ชจ๋ ๋ฎ๋ ๊ฒ์ ๋ชฉํ๋ก ์ค๊ณ๋๋ค.
3-2. BAE Systems๊ฐ ๊ณต๊ฐํ evtdiag.exe์ ๋์ (์์ฝ)
์ฌ๊ฑด ์งํ BAE Systems์ ๋ถ์(Sergei Shevchenko)์ ํ์ ํ๊ฒฝ์ ์ํด ๋ง์ถค ์ ์๋ ์ ์ฑ์ฝ๋๋ฅผ ๊ณต๊ฐํ๋ค. ํต์ฌ ๋์์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ๋ฌธ ๊ฐ์: ์คํ๋๋ฉด SWIFT ์ ์ ์ํํธ์จ์ด๊ฐ ๋ค๋ฃจ๋ ๋ฉ์์ง๋ฅผ ์ดํด๋ณด๋ฉฐ, ์์คํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ค.
- ๊ธฐ๋ก ์กฐ์ยท์ญ์ : ์ถ์ถํ ์ ๋ณด๋ฅผ ์ด์ฉํด ๊ฑฐ๋ ๊ธ์ก์ ๊ฐฑ์ (๋ณ์กฐ)ํ๊ณ , ์์ ์ด ๋ฐ์์ํจ ์ก๊ธ ๊ธฐ๋ก์ ์ญ์ ํ๋ค. ์ฆ ์น์ธ๋ ์์กฐ ์ก๊ธ์ด ๋ก์ปฌ ์์ฅ์์๋ '์กด์ฌํ์ง ์๋ ๊ฑฐ๋'๊ฐ ๋๋ค.
- ์ถ๋ ฅ ์์กฐ: ํ๋ฆฐํฐ๋ก ์ ๋ฌ๋๋ ๊ฑฐ๋ ํ์ธ ๋ฉ์์ง๋ฅผ ๊ฐ์ง ๋ด์ฉ์ผ๋ก ๋ฐ๊ฟ ์ถ๋ ฅ๋๊ฒ ํ๋ค. ์ถ๋ ฅ๋ฌผ์ ์ง๊ธ๋ ๋ง์ ๊ธ์ต ํ์ฅ์์ '์ฆ์ '์ผ๋ก ์ฐ์ธ๋ค โ ๊ทธ ์ฆ์ ์์ฒด๋ฅผ ๊ณต๊ฒฉ์๊ฐ ๋ง๋ ๊ฒ์ด๋ค.
- ์ง์์ ์ ๋ฆฌ: ์ด ๊ฐ์ยท์กฐ์ ๋ฃจํ๋ 2016๋ 2์ 6์ผ ์ค์ 6์๊น์ง ๋ฐ๋ณต ๋์ํ๋ค. ์ฌ๊ณ '์ดํ'๊น์ง ํ์ ์ ๊ด๋ฆฌํ๋ค๋ ๋ป์ด๋ค. ๋ถ์๊ฐ๋ "์ฆ๊ฑฐ ์ญ์ ์ ์ ๋ฌด ํ๋ก์ธ์ค ์๊ณก์ ์๋นํ ๊ณต์ ๋ค์์ผ๋ฉฐ, ์นจํด ๋์์ ๋ฐฉํดํ๋ ค ํ๋ค"๊ณ ํ๊ฐํ๋ค.
3-3. MITRE ATT&CK ๋งคํ โ "์ ์ฅยท์ ์กยทํ์" 3์ธต ๋์ ์ค์ผ
- T1565.001 Stored Data Manipulation:
DYEPACK์ด SWIFT ๊ฑฐ๋์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ ์ฝ๋๋ฅผ ์์ฑยท์ญ์ ยท๋ณ์กฐํ๋ค. - T1565.002 Transmitted Data Manipulation:
DYEPACK์ด ํ๋ฆฐํฐ๋ก ๊ฐ๋ ๋์ค์ SWIFT ๋ฉ์์ง๋ฅผ ์กฐ์ํ๋ค. - T1565.003 Runtime Data Manipulation: ๋ณ์ข
DYEPACK.FOX๊ฐ PDF๊ฐ ์ด๋ฆฌ๋ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํด, ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ๋ฉด์์ ์์กฐ ๊ฑฐ๋์ ํ์ ์ ์ง์ ๋ค.
์ด 3์ข ์กฐํฉ์ด ์ด ๊ณต๊ฒฉ์ '์ค๊ณ ์๋'๋ฅผ ๊ทธ๋๋ก ๋ณด์ฌ์ค๋ค. ๊ฐ์ฌ(audit)๋ ๋ณดํต ์ธ ๊ณ์ธต์ ๊ต์ฐจ ํ์ธํด์ ์ ๋ขฐ๋ฅผ ์ป๋๋ค โ DB ๋ก๊ทธ, ์ถ๋ ฅ ๊ธฐ๋ก, ํ๋ฉด/๋ฆฌํฌํธ. ๊ณต๊ฒฉ์๋ ์ธ ๊ณ์ธต์ ๊ฐ์ ๋๊ตฌ๋ก ๋์์ ๋ฌด๋ ฅํํ๊ณ , ๊ทธ๋์ ๋ด๋ถ์์๋ '์ด์ ์์'์ผ๋ก ๋ณด์๋ค.
3-4. ๋ฌด์์ด ์ค์ ๋ก ๋ง์๋ โ ์์คํ ์ด ์๋๋ผ '์ฌ๋์ ๋'
- ์ฐจ๋จ์ ๊ฒฐ์ ์ ์๊ฐ: ์ค๋ฆฌ๋์นด๋ก ํฅํ ์ก๊ธ์์ ์์ทจ์ธ ํ๊ธฐ ์คํ("Foundation" โ "Fandation")๊ฐ ๋์๋ค. ์ค๊ณ์ํ ๋์ด์ฒด๋ฐฉํฌ๊ฐ ์ด๋ฅผ ์์ํ ์ฌ๊ฒจ ๋ฐฉ๊ธ๋ผ๋ฐ์ ์ค์์ํ์ ํ์ธ์ ์์ฒญํ๊ณ , ํ๋์์์ํ(Pan Asia Bank)๋ "์ค๋ฆฌ๋์นด์ ์ด์ธ๋ฆฌ์ง ์๋ ๊ฑฐ์ก"์ด๋ผ๋ฉฐ ๋๋๋ ธ๋ค. ๊ทธ ๊ฒฐ๊ณผ ๋จ์ 30๊ฑด $850M์ด ๋ด์ ์ฐ์ค์์ ์ฐจ๋จ๋๋ค.
- ์ฆ, ๋ด๋ถ ํต์ ๋ ๋ซ๋ ธ๋ค: ์๊ธ์ ๋ง์ ๊ฒ์ ์ ์ฑ์ฝ๋ ํ์ง๋, ๋์ฌ ์์คํ ๋ ์๋์๋ค. ์ธ๋ถ ๊ธฐ๊ด ์ง์์ ์ก์ ํ์ธ์ด์๋ค. ๋ฐฉ์ด ๊ด์ ์์ ์ด ์ฌ์ค์ ๋งค์ฐ ๋ถํธํ ๊ตํ์ด๋ค.
- ์ด๊ธฐ ์ค๊ท์: ์ฌ๊ฑด ์ด๊ธฐ ์ผ๋ถ ๋ณด๋(The Straits Times)๋ ๊ธฐ์กด ๊ธ์ต ์ ์ฑ์ฝ๋ Dridex๋ฅผ ์ง๋ชฉํ๋ค. ์ดํ BAE SystemsยทSymantecยทKaspersky ๋ถ์์ ํตํด ํ์ ๋ง์ถคํ ์ ๊ท ๋๊ตฌ์์ด ๋๋ฌ๋ฌ๋ค. ์ด๊ธฐ ๋ณด๊ณ ์ ์ ์ ๊ท์์ด ์ดํ ๊ธฐ์ ๋ถ์์ผ๋ก ๋ค์งํ๋ ์ ํ์ ์ฌ๋ก๋ค.
4. ํผํด ๊ท๋ชจ/์ํฅ โ ์ซ์์ ์ค์ ์ฌ๋ก
| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์ก๊ธ ์ง์ | 35๊ฑด (์ฝ 3~40๊ฑด์ผ๋ก ํ๊ธฐ๋๋ ์๋ฃ๋ ์์ผ๋ฉฐ, ๋ชจ๋ 2016-02-04~05์ ์ง์ค) |
| ์๋ ๊ธ์ก | $951M (๋ด์ ์ฐ์ค ๊ณ์ข ๊ธฐ์ค) |
| ์น์ธยท์ฑ๊ณต | 5๊ฑด $101M โ ํ๋ฆฌํ $81M + ์ค๋ฆฌ๋์นด $20M |
| ์ฐจ๋จ | 30๊ฑด $850M (์คํ๋ก ์ธํ ํ์ธ ์์ฒญ โ ์ฐ์ค ์ฐจ๋จ) |
| ํ์ | ์ค๋ฆฌ๋์นด $20M ์ ์ก ํ์, ํ๋ฆฌํ $81M ์ค ์ฝ $15M๋ง ํ์ (๋๋จธ์ง ๋๋ถ๋ถ ๋ฏธํ์) |
- ์๊ธ ์ธํ ๊ฒฝ๋ก(ํ๋ฆฌํ): ์ ์ถ๋ ์๊ธ์ RCBC(๋ฆฌ์ ์์ ์ํ)์ 4~5๊ฐ ๊ณ์ข๋ก ์ ๊ธ๋๋ค. ์ด ๊ณ์ข๋ค์ 2015๋ 5์ 15์ผ ๊ฐ์ค๋ ๋ค ์ฌ๊ฑด ๋น์ผ(2016-02-04)๊น์ง ํ ๋ฒ๋ ๊ฑฐ๋๊ฐ ์๋ ํด๋ฉด ๊ณ์ข์๊ณ , ๋ช ์๋ ๊ฐ๊ณต ์ธ๋ฌผ์ด์๋ค. ์ดํ ์ธํ ๋ธ๋ก์ปค๋ฅผ ๊ฑฐ์ณ ํ์๋ก ํ์ (2์ 5~13์ผ)๋๊ณ , ๋ค์ RCBC์ ํตํฉ ๊ณ์ข๋ก ๋ชจ์ธ ๋ค ์นด์ง๋ ธ๋ฅผ ํตํด ์ธํ๋์ด ์ผ๋ถ๋ ํ์ฝฉ์ผ๋ก ๋์ด๊ฐ๋ค.
- ์กฐ์ฌ๊ฐ ๋ฆ์ด์ง ์ด์ : ์ํ์ด ์๊ธ ์ ์ถ์ ์ธ์งํ 2์ 8์ผ์ ์ค๊ตญ ์ค๋ ์ด์๊ณ , ์นด์ง๋ ธยท๊ธ์ต๊ถ์ด ์ฐํด์ ๋ค์ด๊ฐ ์์๋ค. ์๊ฐ์ฐจ ์ธํ์์ '๋ช ์ '์ ๊ณต๊ฒฉ์์๊ฒ ์ ๋ฆฌํ ์์๋ก ์๋ํ๋ค.
- ์ ๋์ ํ๊ธ: ํ๋ฆฌํ์ ์นด์ง๋ ธ๋ฅผ AML ์ ๊ณ ๋์์์ ์ ์ธํ 2012๋ ๊ท์ ์ ์ฌ๊ฒํ ํ๊ฒ ๋๊ณ , SWIFT๋ CSP/CSCF๋ฅผ ๋์ ํด ํ์ ๊ธฐ๊ด์ ์ฐ 1ํ ์๊ธฐ ํ๊ฐยท์ค์ ์ ์ธ์ ์๊ตฌํ๊ฒ ๋๋ค. "๊ฒฐ์ ๋ง ๋ณด์์ ๊ฐ๋ณ ์ํ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ๋คํธ์ํฌ ์ ์ฒด์ ๋ฌธ์ "๋ผ๋ ์์น์ด ๋ฌธ์ํ๋ ๊ฒ์ด๋ค.
- ์ฅ๊ธฐ ์ํฅ: APT38์ ์ดํ์๋ ๊ธ์ต๊ถ์ ์ง์ค ๊ณต๋ตํ๋ค. FireEye/Mandiant๋ ์ด ๊ทธ๋ฃน์ด ์ต์ 11๊ฐ๊ตญ ์ํ์์ 10์ต ๋ฌ๋ฌ ์ด์์ ์๋ํ๊ณ (2018๋ ๋ณด๊ณ ), ATT&CK์ ํ์ ๊ตญ๊ฐ๋ฅผ 38๊ฐ๊ตญ์ผ๋ก ์ง๊ณํ๋ค. 'ํ ๋ฒ์ ์ฑ๊ณต'์ด '์ง์์ ์ฐ์ '์ผ๋ก ์ด์ด์ง ์ ์ด๋ค.
5. PoC โ ๊ต์ก์ฉ ๋ชจ์ ์ฌํ (๋ก์ปฌ ๊ฐ์ ํ๊ฒฝ ์ ์ฉ)
/tmp/lab_swift_mock)์ ๊ฐ์์ ์์ฅ ๋ฐ์ดํฐ๋ง ๋์์ผ๋ก ํฉ๋๋ค.
๋ชฉ์ ์ "์ ์ด๋ฐ ์กฐ์์ด ๊ฐ๋ฅํ๋๊ฐ"์ "์ด๋ป๊ฒ ํ์งํ๋๊ฐ"๋ฅผ ์ฌํํ๋ ๊ฒ์
๋๋ค.
PoC A โ '์ ์ ๋ฐ์ดํฐ'๋ฅผ ์กฐ์ํด ํ์ ์ ์ง์ฐ๋ ์๋ฆฌ ์ฌํ
๊ฒฐ์ ๋ฐ์ดํฐ๊ฐ โ ๋ด๋ถ ์์ฅ(journal), โก ๋์ธ ํต๋ณด์ฉ ๋ช ์ธ(statement), โข ์ถ๋ ฅ๋ฌผ(print queue)์ ๊ฐ๊ฐ ๋จ๋๋ค๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ SQLite๋ก ๋ชจ์ฌํ๊ณ , ๊ธ์ก ๋ณ์กฐ โ ๊ธฐ๋ก ์ญ์ โ ์ถ๋ ฅ ์์กฐ๊ฐ ์ด๋ป๊ฒ '์ ์ ์ ๋ฌด์ฒ๋ผ' ๋ณด์ด๊ฒ ๋๋์ง ์ฌํํ๋ค.
# poc_a_mock_ledger.py โ ๊ต์ก์ฉ ๋ชจ์ (์ค์ ์
์ฑ์ฝ๋ ์๋ / ๋ก์ปฌ ๊ฐ์ ์์ฅ ์ ์ฉ)
import os, sqlite3, shutil
LAB = "/tmp/lab_swift_mock"
if os.path.isdir(LAB):
shutil.rmtree(LAB) # ์ค์ต ์ ์ฉ ๋๋ ํฐ๋ฆฌ๋ง ์ด๊ธฐํ
os.makedirs(LAB + "/print_queue")
DB = LAB + "/ledger.sqlite"
db = sqlite3.connect(DB); c = db.cursor()
c.execute("CREATE TABLE journal(seq INTEGER PRIMARY KEY, ref TEXT, amount INTEGER, ben TEXT)")
c.execute("CREATE TABLE statement(id INTEGER PRIMARY KEY, ref TEXT, amount INTEGER)")
def send(ref, amount, ben):
"""์ ์ ์ก๊ธ 1๊ฑด: ๋ด๋ถ ์์ฅ๊ณผ ๋์ธ ๋ช
์ธ์ ๋์ ๊ธฐ๋ก + ํ์ธ ์ถ๋ ฅ๋ฌผ ์์ฑ"""
seq = c.execute("SELECT COALESCE(MAX(seq),0)+1 FROM journal").fetchone()[0]
c.execute("INSERT INTO journal VALUES(?,?,?,?)", (seq, ref, amount, ben))
c.execute("INSERT INTO statement(ref, amount) VALUES(?,?)", (ref, amount))
open("%s/print_queue/confirm_%s.txt" % (LAB, ref), "w").write(
"SWIFT CONFIRMATION\nref=%s amount=USD %d beneficiary=%s\n" % (ref, amount, ben))
db.commit()
# ์์
์ค ์ ์ ๊ฑฐ๋ 3๊ฑด (๊ฐ์์ ๊ธ์ก/์์ทจ์ธ)
send("REF-0001", 1200000, "Atlas Foods Trading LLC")
send("REF-0002", 330000, "Riverline Logistics Ltd")
send("REM-0300", 810000, "Shalika Foundation") # ์คํ: 'Fandation' ๋ก ๋ณด๋ด์ง ์ค์ ์ฌ๊ฑด์ ๊ทธ ์ก๊ธ
print("[์ ์] ์์ฅ :", c.execute("SELECT seq, ref, amount FROM journal").fetchall())
print("[์ ์] ๋ช
์ธ :", c.execute("SELECT ref, amount FROM statement").fetchall())
# --- ์ฌ๊ธฐ์๋ถํฐ '๊ณต๊ฒฉ์ ๋๊ตฌ' ํ๋ด (evtdiag.exe / DYEPACK ์ ๋์ ๋ชจ์ฌ) ---
def attacker_tool(target_ref, new_amount=None, delete=True, fake_print=None):
"""์ค์ ์
์ฑ์ฝ๋๊ฐ ํ ์ผ์ '๊ฐ์ ๋ก์ปฌ ์์ฅ'์์ ๊ทธ๋๋ก ํ๋ด๋ธ๋ค."""
if new_amount is not None: # 1) ์ ์ฅ๋ ๋ฐ์ดํฐ ์กฐ์ (T1565.001)
c.execute("UPDATE journal SET amount=? WHERE ref=?", (new_amount, target_ref))
if delete: # 2) ์๊ธฐ ๊ฑฐ๋์ ๊ธฐ๋ก ์ญ์ (T1565.001)
c.execute("DELETE FROM statement WHERE ref=?", (target_ref,))
if fake_print: # 3) ํ๋ฆฐํฐ๋ก ๊ฐ๋ ํ์ธ ๋ฉ์์ง ์์กฐ (T1565.002)
open("%s/print_queue/confirm_%s.txt" % (LAB, target_ref), "w").write(fake_print)
db.commit()
attacker_tool("REM-0300",
new_amount=99000, # ๊ธ์ก์ 'ํ๋ฒํ' ๊ฐ์ผ๋ก ๋ฐ๊ฟ ๋์ ๋์ง ์๊ฒ
delete=True, # ๋์ธ ๋ช
์ธ์์๋ ๊ฑฐ๋ ์์ฒด๋ฅผ ์ญ์
fake_print="SWIFT CONFIRMATION\nref=REM-0300 status=REJECTED\n") # "์คํจํ๋ค"๋ ๊ฐ์ง ํ์ธ์ฆ
print("[์กฐ์] ์์ฅ :", c.execute("SELECT seq, ref, amount FROM journal").fetchall())
print("[์กฐ์] ๋ช
์ธ :", c.execute("SELECT ref, amount FROM statement").fetchall())
print("[์กฐ์] ์ถ๋ ฅ๋ฌผ:", open(LAB + "/print_queue/confirm_REM-0300.txt").read().strip())
print("\nโ ์์ฅ์๋ ๊ฑฐ๋๊ฐ ๋จ์ ์์ง๋ง, ๊ธ์ก์ด ๋ค๋ฅด๊ณ ๋์ธ ๋ช
์ธ์์๋ ์ฌ๋ผ์ก์ผ๋ฉฐ")
print(" ํ๋ฆฐํฐ์๋ '๊ฑฐ์ ๋จ(REJECTED)'์ด๋ผ๋ ๊ฐ์ง ํ์ธ์ฆ๋ง ๋จ์๋ค.")
print(" ๋ด๋ถ ๋ด๋น์๊ฐ ์ถ๋ ฅ๋ฌผ๋ง ๋ณธ๋ค๋ฉด '์คํจํ ๊ฑฐ๋'๋ก ๋ณด์ธ๋ค. ์ด๊ฒ์ด ์ด ๊ณต๊ฒฉ์ ํต์ฌ์ด๋ค.")
PoC B โ ๊ทธ๋์ ์ด๋ป๊ฒ ์ก๋๊ฐ: '๋์ฌ(Reconciliation)' ๊ธฐ๋ฐ ํ์ง
์ด ๊ณต๊ฒฉ์ ๋ณธ์ง์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ํผ์์ด๋ค. ๋ฐ๋ผ์ ํ์ง๋ ์๊ทธ๋์ฒ๊ฐ ์๋๋ผ ์๋ก ๋ค๋ฅธ ๊ณ์ธต์ ๊ธฐ๋ก์ ๊ต์ฐจ ๊ฒ์ฆํ๊ณ , ๊ธฐ๋ก์ด ์ฌ๋ผ์ง ๊ฒ(์ญ์ ) ์์ฒด๋ฅผ ์ด์ ์ ํธ๋ก ์ผ์์ผ ํ๋ค. ์๋๋ ์ค์ ๋ก ์กํ๋ ์ธ ๊ฐ์ง ๋จ์๋ค.
# poc_b_detect.py โ ๊ต์ก์ฉ ๋ชจ์ ํ์ง (๋์ผํ ๊ฐ์ ์์ฅ ๋์)
import sqlite3, hashlib
LAB = "/tmp/lab_swift_mock"
db = sqlite3.connect(LAB + "/ledger.sqlite"); c = db.cursor()
# [๋จ์ 1] ๋ด๋ถ ์์ฅ vs ๋์ธ ๋ช
์ธ ๋ถ์ผ์น (๊ฑฐ๋๊ฐ '์ฌ๋ผ์ง' ํ์ )
j = set(r[0] for r in c.execute("SELECT ref FROM journal"))
s = set(r[0] for r in c.execute("SELECT ref FROM statement"))
print("[ํ์ง1] ์์ฅ์๋ง ์๊ณ ๋ช
์ธ์ ์๋ ์ฐธ์กฐ๋ฒํธ:", sorted(j - s), "โ ์ญ์ ์์ฌ")
# [๋จ์ 2] ์ฐธ์กฐ๋ฒํธ '๋ฒํธ ๋์ญ'์ ๊ตฌ๋ฉ(์ํ์ค ๊ฐญ)
# REM-03xx ๋์ญ์ ์ผ๋ จ๋ฒํธ ์ฒด๊ณ๋ค. 0300 ์ด์ธ๊ฐ ๋น์ด ์์ผ๋ฉด '์๋ ๊ฒ'์ด ์๋๋ผ '์ง์์ง ๊ฒ'์ผ ์ ์๋ค.
seen = sorted(r[0] for r in c.execute("SELECT ref FROM journal WHERE ref LIKE 'REM-%'"))
print("[ํ์ง2] ์ผ๋ จ๋ฒํธ ์ฐ์์ฑ:", seen, "โ ๊ฐญ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์์ ์ ๊ฒ")
# [๋จ์ 3] ๊ธ์ก ์ด์: ๊ฐ์ ์์ทจ์ธ์๊ฒ ์ด์ ์ ์๋ '์ ๋ฆฌ๋' ๊ธ์ก ๋ณ๋
rows = c.execute("SELECT ref, amount FROM journal").fetchall()
print("[ํ์ง3] ๊ธ์ก ์ค๋
์ท:", rows, "โ '๋ผ์ด๋ ๋ค์ด'๋ ๋ณ์กฐ ํ์ ์ ์ด๋ ฅ ํ
์ด๋ธ๊ณผ ๋์กฐ")
# [๊ถ์ฅ] append-only + ํด์ ์ฒด์ธ: ๊ฐ ๊ฑฐ๋์ ์ด์ ๊ฑฐ๋ ํด์๋ฅผ ๋ฌถ์ด ์ ์ฅํ๋ฉด
# ๋๊ตฐ๊ฐ DELETE/UPDATE ํ๋ ์๊ฐ ์ฒด์ธ์ด ๋์ด์ ธ '์ญ์ ์ฌ์ค'์ด ๋๋ฌ๋๋ค.
chain = b""
for ref, amount in rows:
chain = hashlib.sha256(chain + ("%s|%s" % (ref, amount)).encode()).digest()
print("[ํ์ง4] ํด์ ์ฒด์ธ ํค๋:", chain.hex()[:16], "โ ์ธ๋ถ(์๋์ํยท๊ฐ์ฌ๊ธฐ๊ด)์ ํต๋ณดํ ๊ฐ๊ณผ ๋์กฐ")
print("\nโ ๊ตํ: ์ด ์ฌ๊ฑด์์ ์๊ธ์ ๋ง์ ๊ฒ์ ๋ด๋ถ ์์คํ
์ด ์๋๋ผ")
print(" ์ค๊ณ์ํ ์ง์์ ์ก์(์คํ ํ์ธ)์ด์๋ค. ๋์ฌ ์๋ํ๋ '์์ผ๋ฉด ์ข์ ๊ฒ'์ด ์๋๋ผ")
print(" '์ด ๊ณต๊ฒฉ์ ์ก๋ ์ ์ผํ ๊ณ์ธต'์ด๋ค.")
6. ๋ฐฉ์ด ๋ฐฉ๋ฒ/๊ตํ โ ์ด๋ป๊ฒ ๋ง์๊ณ , ๋ฌด์์ ๋ฐฐ์ฐ๋
- ๊ฒฐ์ ํ๊ฒฝ์ '๋ณ๋์ ์ฌ'์ผ๋ก: SWIFT ์ ์ ๋จ๋ง(Alliance Access)์ ์ฌ๋ฌด๋งยท์ธํฐ๋ท๊ณผ ๋ถ๋ฆฌํ๊ณ , ์ ์ฉ ์ฅ๋นยท์ ์ฉ ๊ณ์ ยท๋ฌผ๋ฆฌ ์ ๊ทผ ํต์ ๋ฅผ ์ ์ฉํ๋ค. ๋ด๋ถ PC ํ๋๊ฐ ๋ซ๋ ค๋ ๊ฒฐ์ ๋จ๋ง๊น์ง ๋ฟ์ง ์๊ฒ ํ๋ ๊ฒ์ด 1์ฐจ ๋ชฉํ๋ค.
- ์๊ฒฉ์ฆ๋ช = ๋: ๊ฒฐ์ ๋จ๋ง ์ด์ ๊ณ์ ์ ํ๋์จ์ด ๊ธฐ๋ฐ 2FA/MFA๋ฅผ ์ ์ฉํ๊ณ , ๊ณต์ฉยท๊ณต์ ๊ณ์ ์ ๊ธ์งํ๋ฉฐ, ์ด์ค ์น์ธ(2์ธ ํต์ ) ์์ด๋ ์ก๊ธ์ด ์์ฑยท์น์ธ๋์ง ์๊ฒ ์ค๊ณํ๋ค. ์๊ฒฉ์ฆ๋ช ํ์ทจ ์์ฒด๋ฅผ ๋ง๋ ๊ฒ๊ณผ, ํ์ทจ๋ผ๋ ์คํ๋์ง ์๊ฒ ํ๋ ๊ฒ์ ๋ ๋ค ํด์ผ ํ๋ค.
- ๋์ฌ(reconciliation)๋ฅผ ์๋ํํ๋ผ: ๋ด๋ถ ์์ฅ โ ๋์ธ ๋ช ์ธ โ ์๋์ํ/์ค์์ํ ์์ก ๋์กฐ๋ฅผ ์ผ ๋จ์ยท์๋์ผ๋ก ์ํํ๋ค(PoC B์ ๋จ์ 1~3). "๋ช ์ธ์ ์๋ ๊ฑฐ๋"์ "์ํ์ค ๊ฐญ"์ ์ ์ฑ์ฝ๋๋ฅผ ๋ชฐ๋ผ๋ ์กํ๋ ์ ํธ๋ค.
- ์ถ๋ ฅ๋ฌผยทํ๋ฉด์ ๋งน์ ํ์ง ๋ง๊ณ '๋ฌด๊ฒฐ์ฑ'์ ๊ด๋ฆฌํ๋ผ: ์ด ์ฌ๊ฑด์์ ๊ณต๊ฒฉ์๋ ํ๋ฆฐํฐ ์ถ๋ ฅ(T1565.002)๊ณผ PDF ํ์(T1565.003)๊น์ง ์์กฐํ๋ค. ์ถ๋ ฅ๋ฌผ์ ์ฆ์ ์ด ์๋๋ผ '๋ณ์กฐ ๊ฐ๋ฅํ ํ์ ๊ณ์ธต'์ด๋ค. ๋ก๊ทธยท์ ๋ฌธ์ append-only/WORM ์ ์ฅ๊ณผ ํด์ ์ฒด์ธ์ผ๋ก ๋ณด์กดํ๊ณ , ์ธ๋ถ ๊ธฐ๊ด๊ณผ์ ์์ก ๋์กฐ๋ฅผ ์ต์ข ์ ๋ขฐ ์์ฒ์ผ๋ก ์ผ๋๋ค.
- ์ด์ ๊ฑฐ๋ ๊ท์น์ '์๊ฐ'์ ํฌํจํด์ผ ํ๋ค: ์ฃผ๋งยท๋ช ์ ยท์ฌ์ผ์ ๋๋ ์ก๊ธ, ํด๋ฉด ๊ณ์ข๋ก์ ๋๊ธ, ๊ฐ์๊ธฐ ์กฐ์ ๋ ๊ธ์ก์ ๊ฐํ ์ด์ ์ ํธ๋ค. ์ด ์ฌ๊ฑด์ ์์ ์ข ๋ฃ ์์ ๊ณผ ์ค๊ตญ ์ค๋ ์ ์ ํํ ๋ ธ๋ ธ๋ค.
- SWIFT CSP/CSCF ์ค์๋ฅผ ํ์์ด ์๋๋ผ ์ด์์ผ๋ก: CSP๋ โ ํ๊ฒฝ ๋ณดํธ(๋ง๋ถ๋ฆฌยท๊ฐํ), โก ์ด์ ์ ํ(์๊ฒฉ์ฆ๋ช ยท๊ถํยท์ทจ์ฝ์ ๊ด๋ฆฌ), โข ํ์งยท๋์(์ด์ ํ์งยท๋ฐฑ์ ยท์ฌ๊ณ ๋์)์ ์ธ ์ถ์ ์๊ตฌํ๋ค. ์๊ธฐ ํ๊ฐ ์ฒดํฌ๋ฐ์ค๊ฐ ์๋๋ผ ์ค์ ํต์ ๋ก ๋๋ ค์ผ ์๋ฏธ๊ฐ ์๋ค.
- ๊ตํ ์์ฝ:
- ์ ์ ์๊ฒฉ์ฆ๋ช ์ผ๋ก ํ๋ ๊ณต๊ฒฉ์ '์ทจ์ฝ์ ํจ์น'๋ก ๋ง์ ์ ์๋ค: ๋จ๋ ๋ฐฉ์ด๋ ๊ถํยท๋์ฌยท๋ชจ๋ํฐ๋ง์ด๋ค.
- ๋์ด ์๋ ๊ณณ์๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ํ์ํ๋ค: ๊ธ์ต ์์คํ ์์ ๊ธฐ๋ฐ์ฑ๋ณด๋ค ๋ฌด๊ฒฐ์ฑ(Integrity)์ด ๊ฒฐ์ ์ ์์ฐ์ด์๋ค.
- ๊ณ๋ณด: ๋ฌด์ฐจ๋ณ ํ์ฐํ ์(MorrisยทSlammerยทConficker) โ ํ๊ดดํ ๋์ฌ(M.E.Doc ๊ณต๊ธ๋ง์ NotPetya) โ ์ ํ ์๋ช ์ ์ฉ(SUNBURST, 2020) โ ๊ฒฐ์ ๋ฐ์ดํฐ ์ง์ ์กฐ์(์ด๋ฒ 2016๋ ์ฌ๊ฑด). ํ์ฐ์ ์ฌ๋ผ์ง๊ณ '์ ์ ์ ๋ขฐ์ ์ ์ฉ'์ด ๋จ์๋ค.
์ถ์ฒ
- Wikipedia โ Bangladesh Bank robbery (์ฌ๊ฑด ํ์๋ผ์ธยท๊ธ์กยท์๊ธ ์ธํ ๊ฒฝ๋ก) โ https://en.wikipedia.org/wiki/Bangladesh_Bank_robbery
- VICE/Motherboard โ Cunning Malware Covered Hackers' Tracks in $81M Bangladeshi Bank Heist (BAE Systems ๋ถ์ ์ธ์ฉ; evtdiag.exeยทํ๋ฆฐํฐ ์์กฐ) โ https://www.vice.com/en/article/cunning-malware-covered-hackers-tracks-in-81m-bangladeshi-bank-heist/
- Malpedia (Fraunhofer FKIE) โ win.dyepack (DYEPACK / BanSwift, Lazarus Group, ์ฐธ๊ณ ๋ฌธํ ๋ชฉ๋ก) โ https://malpedia.caad.fkie.fraunhofer.de/details/win.dyepack
- MITRE ATT&CK โ APT38 (G0082) ยท T1565.001/.002/.003 Data Manipulation (DYEPACK) โ https://attack.mitre.org/groups/G0082/
- U.S. Department of Justice โ North Korean Regime-Backed Programmer Charged (Park Jin Hyok, 2018) โ DOJ Press Release (2018)
- OCD Tech โ The Bangladesh Bank SWIFT Heist: A $81M Cyber Theft Explained (๋ฐฉ์ด ๊ด์ ์ ๋ฆฌ) โ https://ocd-tech.com/cybersecurity-incident-case-studies/the-bangladesh-bank-swift-heist-a-81m-cyber-theft-explained
- SWIFT โ Customer Security Programme (CSP) ๊ณต์ ํ์ด์ง โ https://www.swift.com/myswift/customer-security-programme-csp
ํจ๊ป ์ฝ๊ธฐ: ๐ฆ SolarWinds SUNBURST (2020) โ '์ ํ ์๋ช '์ ์ ์ฉํ ๊ณต๊ธ๋ง ๋ฐฑ๋์ด ยท โ ๏ธ NotPetya (2017) โ M.E.Doc ๊ณต๊ธ๋ง์์ ์์๋ ํ๊ดดํ ์์ดํผ ยท โ๏ธ Stuxnet (2010) โ ๋ฌผ๋ฆฌ ์ธ๊ณ๋ฅผ ๊ฒจ๋ฅํ ์ต์ด์ ์ฌ์ด๋ฒ ๋ฌด๊ธฐ