OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ

2019๋…„ XNUMX์›”, ์‚ฌ์ด๋ฒ„ ๊ทธ๋ฃน OceanLotus์˜ ์ƒˆ๋กœ์šด macOS ์•…์„ฑ ์ฝ”๋“œ ์ƒ˜ํ”Œ์ด ์ธ๊ธฐ ์žˆ๋Š” ์˜จ๋ผ์ธ ๊ฒ€์‚ฌ ์„œ๋น„์Šค์ธ VirusTotal์— ์—…๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ๋„์–ด ์‹คํ–‰ ํŒŒ์ผ์€ ์šฐ๋ฆฌ๊ฐ€ ์—ฐ๊ตฌํ•œ macOS ์•…์„ฑ ์ฝ”๋“œ์˜ ์ด์ „ ๋ฒ„์ „๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ํƒ์ง€๊ฐ€ ๋” ์–ด๋ ค์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ์ด ์ƒ˜ํ”Œ๊ณผ ๊ด€๋ จ๋œ ๋“œ๋กœํผ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด ์•„์ง ๊ฐ์—ผ ๊ฒฝ๋กœ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ์— ์ถœํŒํ–ˆ์Šต๋‹ˆ๋‹ค OceanLotus์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๋ฌผ ์šด์˜์ž๊ฐ€ ์ง€์†์„ฑ์„ ์ œ๊ณตํ•˜๊ณ , ์ฝ”๋“œ ์‹คํ–‰ ์†๋„๋ฅผ ๋†’์ด๋ฉฐ, Windows ์‹œ์Šคํ…œ์—์„œ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”. ์ด ์‚ฌ์ด๋ฒ„ ๊ทธ๋ฃน์—๋Š” macOS์šฉ ๊ตฌ์„ฑ ์š”์†Œ๋„ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ ๋น„๊ตํ•˜์—ฌ ์ตœ์‹  ๋ฒ„์ „์˜ macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค(ํŠธ๋ Œ๋“œ๋งˆ์ดํฌ๋กœ์—์„œ ์„ค๋ช…ํ•˜๋Š”), IDA Hex-Rays API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ ์ค‘์— ๋ฌธ์ž์—ด ํ•ด๋…์„ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ

๋ถ„์„

๋‹ค์Œ ์„ธ ๋ถ€๋ถ„์—์„œ๋Š” SHA-1 ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ˜ํ”Œ ๋ถ„์„์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. E615632C9998E4D3E5ACD8851864ED09B02C77D2. ํŒŒ์ผ ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์†์ „๋“ฑ, ESET ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹  ์ œํ’ˆ์€ ์ด๋ฅผ OSX/OceanLotus.D๋กœ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊น… ๋ฐฉ์ง€ ๋ฐ ์ƒŒ๋“œ๋ฐ•์Šค ๋ณดํ˜ธ

๋ชจ๋“  macOS OceanLotus ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ˜ํ”Œ์€ UPX๋กœ ํŒจํ‚ค์ง•๋˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ‚ค์ € ์‹๋ณ„ ๋„๊ตฌ๋Š” ์ด๋ฅผ UPX๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋งˆ๋„ "UPX" ๋ฌธ์ž์—ด์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ์„œ๋ช…์ด ๋Œ€๋ถ€๋ถ„ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Mach-O ์„œ๋ช…์€ ๋œ ์ผ๋ฐ˜์ ์ด๊ณ  ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ •์  ๊ฐ์ง€๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ํฌ์žฅ์„ ํ’€๊ณ  ๋‚˜๋ฉด ์ง„์ž…์ ์ด ํ•ด๋‹น ์„น์…˜์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ์Šต๋‹ˆ๋‹ค. __cfstring ์„ธ๊ทธ๋จผํŠธ์—์„œ .TEXT. ์ด ์„น์…˜์—๋Š” ์•„๋ž˜ ์ด๋ฏธ์ง€์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ํ”Œ๋ž˜๊ทธ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ
๊ทธ๋ฆผ 1. MACH-O __cfstring ์„น์…˜ ์†์„ฑ

๊ทธ๋ฆผ 2์™€ ๊ฐ™์ด ์„น์…˜์˜ ์ฝ”๋“œ ์œ„์น˜๋Š” __cfstring ์ฝ”๋“œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ผ๋ถ€ ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋„๊ตฌ๋ฅผ ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ
๊ทธ๋ฆผ 2. IDA๊ฐ€ ๋ฐ์ดํ„ฐ๋กœ ํƒ์ง€ํ•œ ๋ฐฑ๋„์–ด ์ฝ”๋“œ

์ผ๋‹จ ์‹คํ–‰๋˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๋””๋ฒ„๊ฑฐ์˜ ์กด์žฌ๋ฅผ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ๋ชฉ์ ์ธ ์•ˆํ‹ฐ ๋””๋ฒ„๊ฑฐ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํ๋ฆ„์˜ ๊ฒฝ์šฐ:

โ€” ๋””๋ฒ„๊ฑฐ๋ฅผ ํ•ด์ œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ptrace ั PT_DENY_ATTACH ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ
- ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ผ๋ถ€ ์ „์šฉ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€ ํ™•์ธ task_get_exception_ports
- ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ”Œ๋ž˜๊ทธ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜์—ฌ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. P_TRACED ํ˜„์žฌ ๊ณผ์ •์—์„œ

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ
๊ทธ๋ฆผ 3. sysctl ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ฒ„๊ฑฐ ์—ฐ๊ฒฐ ํ™•์ธ

์›Œ์น˜๋…์ด ๋””๋ฒ„๊ฑฐ์˜ ์กด์žฌ๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. exit. ๋˜ํ•œ ์ƒ˜ํ”Œ์€ ๋‹ค์Œ ๋‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ™˜๊ฒฝ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ioreg -l | grep -e "Manufacturer" ะธ sysctl hw.model

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒ˜ํ”Œ์€ ์•Œ๋ ค์ง„ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์˜ ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด ๋ชฉ๋ก๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ฐ˜ํ™˜ ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—์ดํด, VM์›จ์–ด, ๋ฒ„์ถ”์–ผ ๋˜๋Š” ํ‰ํ–‰์„ . ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์Œ ๋ช…๋ น์€ ๋จธ์‹ ์ด "MBP", "MBA", "MB", "MM", "IM", "MP" ๋ฐ "XS" ์ค‘ ํ•˜๋‚˜์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ ๋ชจ๋ธ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "MBP"๋Š” MacBook Pro๋ฅผ ์˜๋ฏธํ•˜๊ณ  "MBA"๋Š” MacBook Air๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

์ฃผ์š” ์ถ”๊ฐ€ ์‚ฌํ•ญ

Trend Micro์˜ ์กฐ์‚ฌ ์ดํ›„ ๋ฐฑ๋„์–ด ๋ช…๋ น์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ˆ˜์ • ์‚ฌํ•ญ๋„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒ˜ํ”Œ์— ์‚ฌ์šฉ๋œ C&C ์„œ๋ฒ„๋Š” ์ƒ๋‹นํžˆ ์ƒˆ๋กœ์šด ์„œ๋ฒ„์ด๋ฉฐ 22.10.2018๋…„ XNUMX์›” XNUMX์ผ์— ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

๋ฆฌ์†Œ์Šค URL์ด ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
C&C ์„œ๋ฒ„๋กœ ์ „์†ก๋œ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท์—๋Š” ์•„๋ž˜ ํ‘œ์˜ ๋ช…๋ น์œผ๋กœ ์ˆ˜์ง‘๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ

์ด ๊ตฌ์„ฑ ๋ณ€๊ฒฝ ์™ธ์—๋„ ์ƒ˜ํ”Œ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ํ•„ํ„ฐ๋ง์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ปฌ, ๊ทธ๋Ÿฌ๋‚˜ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ฐฑ๋„์–ด๋Š” ํ‚ค์™€ ํ•จ๊ป˜ AES-256-CBC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ํ•ด๋…ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. gFjMXBgyXWULmVVVzyxy, XNUMX์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฐ ํŒŒ์ผ์€ ์•”ํ˜ธ๊ฐ€ ํ•ด๋…๋˜์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. /tmp/store, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋กœ๋“œํ•˜๋ ค๋Š” ์‹œ๋„๋Š” ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋“œ๋กœํŽœ. ์•”ํ˜ธ ํ•ด๋… ์‹œ๋„๋กœ ์ธํ•ด ํ†ตํ™”๊ฐ€ ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ dlopen, ๋ฐฑ๋„์–ด๋Š” ๋‚ด๋ณด๋‚ธ ๊ธฐ๋Šฅ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. Boriry ะธ ChadylonV, ์„œ๋ฒ„์™€์˜ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ์˜ ์›๋ž˜ ์œ„์น˜์— ์žˆ๋Š” ๋“œ๋กœํผ๋‚˜ ๊ธฐํƒ€ ํŒŒ์ผ์ด ์—†์œผ๋ฏ€๋กœ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์ž์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” YARA ๊ทœ์น™์€ ๋””์Šคํฌ์— ์žˆ๋Š” ํŒŒ์ผ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„ ๊ธ€์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธID. ์ด ID๋Š” ๋‹ค์Œ ๋ช…๋ น ์ค‘ ํ•˜๋‚˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์— ๋Œ€ํ•œ MD5 ํ•ด์‹œ์ž…๋‹ˆ๋‹ค.

- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}' (MAC ์ฃผ์†Œ ์–ป๊ธฐ)
- ์•Œ ์ˆ˜ ์—†๋Š” ํŒ€("x1ex72x0a")(์ด์ „ ์ƒ˜ํ”Œ์—์„œ ์‚ฌ์šฉ๋จ)

ํ•ด์‹ฑํ•˜๊ธฐ ์ „์— ๋ฃจํŠธ ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด "0" ๋˜๋Š” "1"์ด ๋ฐ˜ํ™˜ ๊ฐ’์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ clientID ์— ์ €์žฅ๋จ /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, ์ฝ”๋“œ๊ฐ€ ๋ฃจํŠธ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒฝ์šฐ์—๋Š” ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ. ํŒŒ์ผ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค. _chflags, ํ•ด๋‹น ํƒ€์ž„์Šคํƒฌํ”„๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. touch โ€“t ์ž„์˜์˜ ๊ฐ’์œผ๋กœ.

๋ฌธ์ž์—ด ๋””์ฝ”๋”ฉ

์ด์ „ ์˜ต์…˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฌธ์ž์—ด์€ AES-256-CBC(XNUMX์ง„์ˆ˜ ํ‚ค: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 XNUMX์œผ๋กœ ์ฑ„์›Œ์ง€๊ณ  IV๋Š” XNUMX์œผ๋กœ ์ฑ„์›Œ์ง) ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด CCCํฌ๋ฆฝํŠธ. ์ด์ „ ๋ฒ„์ „๊ณผ ํ‚ค๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋‚˜ ๊ทธ๋ฃน์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ž์—ด ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณตํ˜ธํ™”๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ ์™ธ์—๋„ Hex-Rays API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์— ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ํ•ด๋…ํ•˜๋Š” IDA ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” OceanLotus์˜ ํ–ฅํ›„ ๋ถ„์„๊ณผ ์•„์ง ์–ป์„ ์ˆ˜ ์—†๋Š” ๊ธฐ์กด ์ƒ˜ํ”Œ์˜ ๋ถ„์„์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ํ•จ์ˆ˜์— ์ „๋‹ฌ๋œ ์ธ์ˆ˜๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ• ๋‹น์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜ ์ธ์ˆ˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ์ด๋ฅผ ์ฝœ๋ฐฑ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ํ”„๋กœํ† ํƒ€์ž… ์•Œ๊ธฐ ํ•ด๋…, ์Šคํฌ๋ฆฝํŠธ๋Š” ์ด ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์ƒํ˜ธ ์ฐธ์กฐ, ๋ชจ๋“  ์ธ์ˆ˜๋ฅผ ์ฐพ์€ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด๋…ํ•˜๊ณ  ์ƒํ˜ธ ์ฐธ์กฐ ์ฃผ์†Œ์˜ ์ฃผ์„ ์•ˆ์— ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ ค๋ฉด base64 ๋””์ฝ”๋”ฉ ๊ธฐ๋Šฅ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฉฐ ํ‚ค ๊ธธ์ด๋ฅผ ํฌํ•จํ•˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ DWORD, ๊ทธ๋ฆผ 4 ์ฐธ์กฐ).

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ
๊ทธ๋ฆผ 4. ์ „์—ญ ๋ณ€์ˆ˜ key_len์˜ ์ •์˜

ํ•จ์ˆ˜ ์ฐฝ์—์„œ ์•”ํ˜ธ ํ•ด๋… ํ•จ์ˆ˜๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  โ€œ์ธ์ˆ˜ ์ถ”์ถœ ๋ฐ ์•”ํ˜ธ ํ•ด๋…โ€์„ ํด๋ฆญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ 5์™€ ๊ฐ™์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ์ฃผ์„์— ํ•ด๋…๋œ ์ค„์„ ๋ฐฐ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ
๊ทธ๋ฆผ 5. ํ•ด๋…๋œ ํ…์ŠคํŠธ๊ฐ€ ์ฃผ์„์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๋…๋œ ๋ฌธ์ž์—ด์ด IDA ์ฐฝ์— ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•จ๊ป˜ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์ฐธ์กฐ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ๋ฆผ 6๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

OceanLotus: macOS์šฉ ์•…์„ฑ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ
๊ทธ๋ฆผ 6. f_decrypt ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์ฐธ์กฐ

์ตœ์ข… ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Github ์ €์žฅ์†Œ.

์ถœ๋ ฅ

์ด๋ฏธ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด OceanLotus๋Š” ํˆดํ‚ท์„ ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์‚ฌ์ด๋ฒ„ ๊ทธ๋ฃน์€ Mac ์‚ฌ์šฉ์ž์™€ ์ž‘๋™ํ•˜๋„๋ก ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋งŽ์€ Mac ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์•ˆ ์ œํ’ˆ์„ ๋ฌด์‹œํ•˜๋ฏ€๋กœ ๋งฌ์›จ์–ด๊ฐ€ ํƒ์ง€๋˜์ง€ ์•Š๋„๋ก ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์€ ๋ถ€์ฐจ์ ์ธ ์ค‘์š”์„ฑ์ž…๋‹ˆ๋‹ค.

ESET ์ œํ’ˆ์€ ์—ฐ๊ตฌ ๋‹น์‹œ ์ด๋ฏธ ์ด ํŒŒ์ผ์„ ํƒ์ง€ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. C&C ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š” ๋„คํŠธ์›Œํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด์ œ ๋””์Šคํฌ์—์„œ ์•”ํ˜ธํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ •ํ™•ํ•œ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์€ ์•„์ง ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํƒ€ํ˜‘์˜ ์ง€ํ‘œ

์นจํ•ด ์ง€ํ‘œ ๋ฐ MITRE ATT&CK ์†์„ฑ๋„ ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์˜.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€