보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

Excel 파일을 이용한 악의적인 명령 실행

2019.07.31

14,171

 

 

1. 개요

 

공격자들은 공격의 성공 확률을 높이기 위해 정상적으로 보이는 파일 내에 매크로(Macro)기능이나 ‘JS’, ‘Java’, ‘VBS’ 등 다양한 기능을 이용하여 악성코드를 유포하며 악성코드가 심어져 있는 파일들이 안티바이러스 제품에서 탐지되지 않는 방법들을 모색한다. 

이번 호에서는 안티바이러스 제품을 우회하기 위해서 Reverse Shell을 생성하고 Excel 파일을 이용하여 명령줄을 실행하는 4가지 방법에 대해 알아보자. 

 

 

[그림 1] 악성행위 시나리오

 

 

2. Reverse Shell 생성

 

공격자는 기업이나 기관이 외부에서 들어오는 트래픽 중 신뢰할 수 없는 연결일 경우 앞단에서 방화벽 등의 보안솔루션에 의해 적극적으로 차단되고 있으나 기업이나 기관의 내부에서 외부로 나가는 트래픽에 대해서는 차단 정책이 느슨하다는 점을 악용하여 Reverse Shell을 많이 이용한다.

 

Reverse Shell은 공격자가 피해자 시스템으로 연결하기 위해 피해자 시스템에서 공격자 측으로 Shell을 열어 주는 것을 의미하는데, 이번 호에서는 SMB 서버 프로토콜을 통해 .dll 페이로드 처리 및 실행 등의 명령을 제공하는 Metasploit의 SMB Delivery 모듈을 이용하여 Reverse Shell을 생성하였다.

 

 

 

[그림 2] SMB Delivery 모듈 사용 및 Exploit 옵션 설정 

 

 

[그림 2] 내용을 살펴 보면, dll 파일명, 폴더 및 경로명, 연결할 IP주소(공격자), 연결할 PORT를 선택할 수 있으며, 여기서는 편의상 파일명 : IGLOO.dll, 폴더 및 경로명 : IGLOO, IP : 기본, PORT : 기본으로 설정하였다. 

 

사용할 옵션을 지정 후 exploit 명령어를 입력하면, 자동으로 meterpreter_reverse_tcp 페이로드가 설정되며, Meterpreter Reverse Shell을 열고 연결되기를 기다린다. 

 

 

 

[그림 3] meterpreter_reverse_tcp 페이로드 실행

 

 

피해자 시스템에서 실행하는 명령줄은 아래와 같다. 명령줄을 살펴보면 Windows에 제공하는 rundll32.exe를 이용하며, SMB 프로토콜을 이용하여 공격자 시스템으로 Shell을 연결한다. rundll32.exe은 Run Dynamic Link Library 32-bit 약자로 dll 명령어를 실행하는 유틸이다.

 

 

 

[그림 4] SMB 프로토콜 이용 공격자 시스템으로 Shell 연결

 

 

공격자 시스템에서 살펴보면 [그림 5]와 같이 Shell이 연결된 것을 확인할 수 있다.

 

 

 

[그림 5] 피해자 시스템과 Shell 연결 확인

 

 

이제 공격자는 앞서 살펴본 명령줄을 Excel에 어떻게 삽입하는지 살펴보자.

 

 

3. Excel 파일을 이용하여 명령 실행 방법

 

1) VBA 매크로 내에 명령줄 입력하여 실행

 

VBA는 Visual Basic for Application의 약어로 마이크로소프트 사의 비주얼 베이직을 기반으로 한 오피스 응용 프로그램용 매크로 언어이다. 매크로를 이용한 명령줄 실행 방법은 간단하면서 가장 기본적인 방법으로 아래와 같다. 

 

 

 

[그림 6] 매크로 코드

 

 

매크로 코드를 살펴 보면 Auto_Open 프로시저를 사용하였다. Auto_Open 프로시저는 Excel을 실행하면 자동적으로 Auto_Open 프로시저를 검색하고 프로시저가 존재한다면 자동으로 실행된다. Auto_Open는 Excel 97 이전 버전부터 지원하였으며 Excel 2000 버전부터는 새롭게 Workbook _Open 이벤트 프로시저가 지원되기 시작하였으며 두 프로시저 모두 사용 가능하다. 

 

앞서 작성한 매크로 코드를 삽입한 Excel 파일을 실행시키면 [그림 7]과 같이 피해자는 정상적인 Excel 파일을 실행시킨 것처럼 보이지만  Auto_Open 프로시저에 의해 VBA의 Shell기능으로 명령줄이 실행되어 Reverse Shell을 연결하는것을 확인할 수 있다.

 

 

 

[그림 7] Reverse Shell 연결 

 

 

2) 속성의 설명란에 명령줄을 넣어 매크로로 실행

 

 

앞에서 VBA 매크로 내에 명령줄을 삽입하는 간단한 방법을 살펴보았다. 다음으로 살펴볼 방법은 Excel 파일 속성의 설명란에 명령줄을 삽입한 후 매크로를 이용하여 실행할 수 있다. 

 

 

 

[그림 8] 설명란에 명령줄 입력

 

 

설명란에 삽입된 명령줄을 실행 시키기 위해서 [그림 9]와 같이 매크로를 사용하였다. 

 

 

 

[그림 9] 설명란 명령줄을 실행하는 매크로

 

 

Excel 파일을 실행시키면 [그림 10]과 같이 피해자는 정상적인 Excel 파일을 실행 시킨 것처럼 보이지만  Auto_Open 프로시저에 의해 매크로가 실행되고 앞서 Excel파일 속성의 설명란에 삽입한 명령줄이 실행되어 Reverse Shell을 연결하는 것을 확인할 수 있다.

 

 

 

[그림 10] Reverse Shell 연결 

 

 

3) 사용자 지정 버튼 이용하여 매크로로 명령줄 실행

 

Excel에서는 사용자 지정 버튼을 만들 수 있으며, 사용자 지정 버튼을 만들 때 명령줄을 삽입하여 매크로로 만들 수 있다. 

 

 

 

[그림 11] 사용자 지정 버튼

 

 

사용자 지정 버튼을 만들고 Reverse Shell 연결을 위해서 [그림 12]와 같이 매크로를 사용하였다. 

 

 

 

[그림 12] 명령줄을 실행하는 매크로

 

 

Excel 파일에 존재하는 사용자 지정 버튼을 클릭하면 [그림 13]과 같이 Auto_Open 프로시저에 의해 매크로가 실행되어 Reverse Shell을 연결하는 것을 확인할 수 있다.

 

 

 

[그림 13] Reverse Shell 연결 

 

 

4) 사용자 지정 서식을 이용하여 명령줄 실행

 

셀 서식이란 글꼴의 크기, 색, 배경색, 테두리 등 셀 모양을 변경하는 것을 의미한다. 셀 서식 사용 방법은 Excel에서 기본적으로 제공하는 서식을 사용하거나 사용자가 직접 만들어 사용하는 방법이 있다. 사용자가 직접 만들어 사용하는 것을 사용자 지정 서식이라 하며, 사용자 지정 서식을 이용하면 글꼴의 크기, 색 등의 셀 모양을 변경하는 것 뿐만 아니라 Excel 외부 프로그램 등을 사용할 수 있어 공격자들은 [그림 14]와 같이 명령줄을 삽입할 수 있다.

 

 

 

[그림 14] 사용자 지정 서식을 이용하여 명령줄 삽입

 

 

명령줄을 삽입 후 명령줄이 존재하는 시트를 숨김 처리하면 숨기기 취소를 하기 전까지 피해자는 명령줄의 존재는 모르게 된다.

 

Excel 파일을 실행시키면 [그림 15]과 같이 피해자는 정상적인 Excel 파일을 실행시킨 것 처럼 보이지만 사용자 지정 서식으로 삽입한 명령줄이 실행되어 Reverse Shell을 연결하는 것을 확인할 수 있다.

 

 

 

[그림 15] Reverse Shell 연결 

 

 

4. 대응방안

 

Excel에서 악의적인 명령줄 실행 방법을 살펴보았다. 앞서 살펴본 내용들은 명령줄과 같은 악의적인 행위 뿐만 아니라 추가적으로 악성코드를 다운로드 받는 등의 다양한 행위가 가능하다는 것을 알아야 한다. Excel에서 악의적인 행위가 이루어지지 않게 하기 위해서는 어떻게 해야할까? Office2013 기준으로 살펴보도록 하자.

 

1) 파일 열람 시 알림창 확인

 

Excel파일을 열람했을 때 [그림 16]과 같이 응용프로그램 실행여부를 물어보는 팝업창이 나타난다면 사용자는 좀 더 주의 깊게 내용을 확인 한 후 의심되는 프로그램을 실행시키는 것이라 판단되면 [아니요]를 클릭한다. 

 

 

 

[그림 16] Excel 파일 열람 시 파일 열람 시 발생되는 알림창

 

 

2) 메크로 실행 제한 설정

 

[옵션→보안센터→보안센터 설정→매크로 설정→디지털 서명된 매크로만 포함] 이상을 선택하여, 악의적인 매크로가 자동으로 실행되는 것을 제한 할 수 있다. 

 

 

 

[그림 17] 매크로 실행 제한 설정

 

 

3) DDE(Dynamic Data Exchange) 제한 설정 

 

DDE(Dynamic Data Exchange) 기능은 간단히 말해 사용자의 편의를 위해 Windows 운영체제에서 응용 프로그램 간 데이터 전송을 위해 사용되는 기능으로 (자세한 내용은 월간동향보안 4월호 DDE(Dynamic Data Exchange)를 참고) [파일→옵션→고급→일반→DDE(동적 데이터 교환)을 사용하는 다른 응용 프로그램 무시] 설정에 체크하여 다른 응용프로그램을 실행시키는 것을 제한한다.

 

 

 

[그림 18] DDE(동적 데이터 교환) 제한 설정

 

 

5. 참고자료

 

[1] Windows Meterpreter (Reflective Injection), Reverse TCP Stager

https://www.rapid7.com/db/modules/payload/windows/meterpreter/reverse_tcp

 https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/payload/windows/meterpreter/reverse_tcp.md

[2] 24 Useful Excel Macro Examples for VBA Beginners (Ready-to-use)

https://trumpexcel.com/excel-macro-examples/

[3] Excel의 매크로 보안 설정 변경

https://support.office.com/ko-kr/article/Excel%EC%9D%98-%EB%A7%A4%ED%81%AC%EB%A1%9C-%EB%B3%B4%EC%95%88-%EC%84%A4%EC%A0%95-%EB%B3%80%EA%B2%BD-a97c09d2-c082-46b8-b19f-e8621e8fe373

[4] Office 문서에서 외부 콘텐츠 차단 또는 차단 해제

https://support.office.com/ko-kr/article/office-%EB%AC%B8%EC%84%9C%EC%97%90%EC%84%9C-%EC%99%B8%EB%B6%80-%EC%BD%98%ED%85%90%EC%B8%A0-%EC%B0%A8%EB%8B%A8-%EB%98%90%EB%8A%94-%EC%B0%A8%EB%8B%A8-%ED%95%B4%EC%A0%9C-10204ae0-0621-411f-b0d6-575b0847a795