Microsoft Excel에서 기존의 MSOfiice의 Macro기능을 활용하는 악성코드와는 전혀 다른 Power Query 기능을 활용하여 공격을 수행할 수 있는 것이 확인되었다.
Power Query는 원격 컨텐츠를 쉽게 embedding 할 수 있도록 설계된 도구로써 Power Query기능을 활용하면 다른 스프레드시트, 웹, 데이터베이스와 연결되어 데이터를 업데이트 시킬 수 있다. 이러한 점을 이용해서 공격자는 스프레드시트에 잠재적으로 악성 페이로드를 웹에서 질의할 수 있도록 설계하고 Power Query를 통해 Excel 문서가 열릴 때 실행되도록 할 수 있다.
[그림 1] Power Query 악성코드 동작 개요
공격자는 침해 PC에서 동작할 Python 스크립트를 작성하여 Python 서버를 실행한 뒤 Excel 문서에 해당 웹 페이지를 Power Query기능을 통해 HTTP Request를 보내도록 작성한다.
[그림 2] 악성 Payload Python Server
사용자가 Excel 문서를 실행하면 Power Query에서 페이로드가 저장된 웹서버로 연결을 수행하고, 실행시키게 된다. 해당 페이로드가 실행되게 되면 명령 프롬프트를 통해 Powershell을 실행시키게 되고, Powershell은 iwr(Invoke-WebRequest)을 이용하여 악성 PE파일을 침해 PC에 다운로드받게 되고, 다시 명령프롬프트를 통해 악성코드가 실행되는 형태로 공격이 수행되게 된다.
[그림 3] Excel 문서 내에 포함되어 있는 Power Query
[그림 4] Process Explorer를 통해 확인된 악성 페이로드 동작
현재 분석용으로 작성된 샘플이 아닌 실제 악성코드에서는 사용자의 눈에 바로 보이지 않는 다른 시트의 Cell에 Power Query를 삽입하고, 사용자에게 보이는 Sheet 1의 첫 Cell에는 사용자를 안심시키기 위한 이미지 혹은 데이터를 삽입하여 공격될 것으로 보인다. 또한 MS Office 2010과 같은 구버전에서는 사용자가 클릭을 사용하지 않고 문서를 열람하는것 만으로도 Power Query가 자동으로 실행될 수 있어 주의를 요한다.
따라서 해당 공격을 막기 위해서는 Power Query또는 MSOffice의 DDE(Dynamic Data Exchange) 기능을 비활성화 할 필요가 있다. 하지만 DDE, Power Query 모두 MSOffice에서 제공하는 기능이기 때문에 필요에 따라 비활성화 할 것을 권고한다.
관련된 자세한 내용은 Microsoft Security Advisory를 참고.
[참조]
https://threatpost.com/microsoft-excel-attack-vector/146062/
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170021
보안관제센터 MIR Team