꿈을꾸는 파랑새

오늘도 즐겁게 북한 해킹단체 김수키(Kimsuky) 에서 통일 연구원 사칭 악성코드에 대해 알아보겠습니다.
파일명:2026_0212_1281232903482939_참고자료.lnk
사이즈:1 MB
MD5:422a221851ea6ad15f53cd3aea51c8af
SHA-1:984a98b7daeee159ea018a055b86a596c5dccc46
SHA-256:a40a61e54be9cc1671ea6832fef8139ce811a7d759058bb8b4ca86863f4cc1bd

악성코드 내부에 포함이 암호화 코드
악성코드 내부에 포함이 암호화 코드

분석

1.파일 타입 위장
사용자가 한글 문서로 착각하게 만듦
2.아이콘 위장
크롬 아이콘을 사용해 정상 파일처럼 보이게 함
실제 동작 분석 (PowerShell 내부 동작)
핵심 동작
1.숫자 데이터 로드
수천 개의 숫자(byte 값)가 공백으로 구분되어 있음
실제 암호화된 2차 페이로드
2.바이트 배열로 변환
숫자 문자열:바이트 배열로 변환
3.복호화 키
Viud*&%rvjh
UTF-8 바이트로 변환 후 사용됨
4.복호화 알고리즘
각 바이트에 대해
pw_num = (키 바이트 + 103)
키는 반복 사용됨
표준 암호화 아님
단순 난독화 (AV 우회 목적)
5. 복호화된 결과를 문자열로 변환
여기서 실제 악성 PowerShell 코드가 생성

악성코드 암호화 복원
악성코드 암호화 복원

6.파일 드롭
경로:
C:\Users\사용자\AppData\Roaming\firefox.ps1
정상 Firefox와 무관한 위장 파일명
7.숨김 실행+정책 우회
-windowstyle hidden:사용자에게 안 보임
-ExecutionPolicy Bypass:PowerShell 보안 정책 무시

시스템 정보 털어가는 코드
시스템 정보 털어가는 코드

암호화 해제 후 분석

1.미끼 PDF 다운로드->실행(열기)
%TEMP%\참고자료.pdf 로 저장 후 바로 실행
사용자는 정상 문서 열렸다고 믿게 됨
2.GitHub Personal Access Token(PAT)
GitHub에서 인증 헤더(Authorization token) 로 파일을 받아오게 함
공개, 비공개 리포지토리 모두 접근 가능해짐 (공격자 통제 강화)
3.2차 로더(whale.ps1) 생성 (AppData에 드롭)
%AppData%\whale.ps1 에 다음 단계 실행 코드 를 문자열로 작성해 저장
whale.ps1 가하는 일(중요)
%AppData%\Doks.ps1 로 SS_slog.txt를 다운받아 저장
Doks.ps1 를 ExecutionPolicy Bypass+Hidden 으로 실행
SS_slog.txt = 사실상 PowerShell 스크립트 페이로드(확장자만 txt로 위장)
저장 파일명:Doks.ps1
3.예약 작업 생성 (Persistence)
5분 후 첫 실행 이후 30분마다 반복 실행
-Hidden 설정
작업 이름을 OneDrive처럼 위장
OneDrive Reporting Task-HHH-6-4-67-...

작업스케줄러에 등록된 모습
작업스케줄러에 등록된 모습

4.추가 페이로드(FF_flog.txt) 다운로드
이번엔 같은 Doks.ps1 파일에 FF_flog.txt 를 받아 덮어쓰고 실행
결과적으로 공격자는 GitHub에 올린 txt 내용만 바꾸면 피해자 PC에서 주기적으로 새로운 페이로드를 실행 가능
5.자기 자신 삭제 (흔적 제거)
현재 실행 중인 스크립트 파일을 삭제 시도 (포렌식 회피)
실제 악성코드 하는 일
Decoy 문서(PDF) 로 사용자의 의심을 줄이고
GitHub에서 스크립트를 지속적으로 다운받아 실행
예약 작업으로 계속 실행

더미 PDF 파일
더미 PDF 파일

SS_slog.txt,FF_flog.txt 는 이름만 txt일 뿐 내용은 PowerShell

C2

hxxps://raw(.)githubusercontent(.)com/ieesh65e/tongil/main/view(.)pdf
hxxps://raw(.)githubusercontent(.)com/ieesh65e/tongil/main/SS_slog(.)txt
hxxps://raw(.)githubusercontent(.)com/ieesh65e/tongil/main/FF_flog(.)txt

Authorization 헤더 토큰:
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
예약 작업
TaskName:
OneDrive Reporting Task-HHH-6-4-67-2345235-45645756-3453452-Tgsar
실행 명령:
PowerShell.exe -WindowStyle Hidden -ExecutionPolicy Bypass ... %AppData%\whale.ps1
whale.ps1 분석
1.수집 결과 저장 경로/파일명 생성
저장 폴더:
%AppData%\Microsoft\
파일명:
(내부IP)-(월일_시분)-0956_info.txt
예:192(.)168(.)0(.)5-0214_1320-0956_info(.)txt
2.시스템/환경 정보 수집
마지막 부팅 시간
OS 정보(이름/버전/빌드/아키텍처)
3.컴퓨터 시스템 정보
4 노트북/데스크탑 구분(PCSystemType)
5.Windows 설치 날짜
6.설치된 백신 제품명(SecurityCenter2)
7.현재 실행 중인 프로세스 전체 목록
정찰(Discovery) 성격으로 환경 파악 + 보안 제품 확인 + 분석 방해 여부 판단 사용이 될것임
GitHub로 유출 (API 이용)
업로드 대상:
GitHub Contents API
PUT /repos/{owner}/{repo}/contents/{path}
업로드 경로:
ieesh65e/tongil 저장소의 report/(파일명)
인증:
Personal Access Token(하드코딩):
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
공격자는 GitHub를 유출 저장소로 사용하고 있음
흔적 삭제
방금 만든 정보수집 파일 삭제
실행 중인 스크립트(자기 자신) 삭제
PDF 내용은 동국대 정치학 박사를 수료하신 분이고 내용은 북한 79주년 건국절 관련 논문 같기도 합니다.
일단 위력 정찰 목적의 악성코드인 것을 확인할 수가 있으며 아마도 해당 부분을 바탕으로 맞춤형으로 악성코드가 만들지 모르겠습니다.
이것 분석하다가 5,000원짜리 다이소 키보드 때문에 메인에서 실행되어서 아나~~왜 확장자 바꾸는데 실행이 되느냐고….

공유하기

facebook twitter kakaoTalk kakaostory naver band