꿈을꾸는 파랑새

오늘은 자기소개서로 위장한 김수키(Kimsuky)에서 만든 악성코드인 이x연 자기소개서.pdf.lnk 에 대해서 글을 적어 보겠습니다.
파일명: 이X연 자기소개서.pdf.lnk
사이즈:1 MB
MD5:5577fffb5b5acd3771ef9dc696498f1e
SHA-1:96f7e28184e2e08fae0b76175d813346f9e24db3
SHA-256:863f1405a190e2d87f06c5a9383b91b660bf4a0cd1b7c1c4987a071ee1c7dbb1

악성코드 분석

1.Windows 바로 가기 파일로 위장하고 있으며 구글 크롬이 설치된 경우에는 구글 아이콘이 표시될 것입니다.
namestring: Type:Hangul Document: 사용자에게는 이 파일이 '한글(HWP) 문서'인 것처럼 보이도록 파일 설명이나 이름으로 조작짓 해놓음
2.$VIUSBvejbawf
$VIUSBvejbawf 에서는 Offset 103 키의 바이트 값에 가산되는 동적 변수를 사용하고 있음
이런 방식을 사용하는 이유는 간단합니다. 보안 프로그램(AV,EDR)을 우회해서 악성코드를 실행하기 위해서 만들어 놓음
예를 들어서 킷값+103≥암호 바이트이다. 그러면 평문 바이트=(킷값+103)-암호 바이트 해당 조건이 충족되지 않을 경우
암호 바이트를 그대로 사용하는 것이 특징입니다.
난독화 키:be*&fni 사용
165->$,83->y,24->y 이런 방식으로 동작을 하는 방식을 사용하고 있습니다. 한글 UTF-8 데이터의 0xE,0x9,0xB 바이트를 보존하기 위한 목적으로 추측
3.임시 폴더에 디코이 PDF 생성
임시 폴더 아래에 PDF 파일 경로에 이X연 자기소개서.pdf 이라는 파일 생성
그리고 나서 파이썬 으로 악성코드에 포함된 것이 있는 firefox.ps1이라는 파워셀 부분을 추출하면 됩니다.
악성코드 실행 시 %APPDATA%\firefox.ps1에 악성코드가 생성 및 실행이 됩니다.

firefox.ps1 분석

이제 핵심은 firefox.ps1이라는 파일 임
GitLab에 업로드된 미끼 PDF 파일을 다운로드 해서 임시 폴더(Temp)에 이X연 자기소개서.pdf 이름으로 저장하고 자동으로 실행
악성코드 실행을 하는 견해에서는 해당 악성코드를 실행했을 때 자기소개서가 열리는 정상적인 자기소개서로 알게 하기 위한 미끼 파일
예약 작업(Scheduled Task) 에 등록해서 컴퓨터 실행할 때마다 실행
API
hxxps://gitlab(.)com/api/v4/projects/arkiler-group%2Fat/repository/files/docx(.)pdf/raw?ref=main
GitLab Personal Access Token 형식의 값이 PRIVATE-TOKEN 헤더를 사용함
5.위조된 User-Agent
브라우저 요청처럼 보이려고 User-Agent 위조해 놓음
Mozilla/5.0 (Windows  NT 10.0; Win 64; x64) AppleWe bKit/537.36
(KHTML,like Gecko) Chr ome /145 0.0 .0.0 Safari/537.36
AppleWebKit
Chrome
Chrome/145.0.0.0 
사용을 하고 있으며 -join으로 연결하기 때문에 결과적으로 악성코드 실행을 하면 쉽게 비정상 User-Agent인 것을 확인이 가능
GitLab에서 Yahoo.rtf를 다운로드를 하고 다음 폴더에 저장합니다.
%APPDATA%\Microsoft\Windows\Templates\Yahoo.rtf
%APPDATA%\Microsoft\Windows\Templates\Yahoo.jse
즉 Yahoo.rtf->Yahoo.jse 이 됩니다.

firefox.ps1 에 포함된 파워셀 코드
firefox.ps1 에 포함된 파워셀 코드

6.facebook.ps1
GitLab에서 scall.txt 다운로드 하고 나서 AES 복호화 그리고 %APPDATA%\news.ps1로 저장 사용자가 악성코드가 실행되는 것을 알지 못하게 숨긴 명령어로 PowerShell로 실행
7. 예약 작업 등록
wscript.exe //b //nologo "%APPDATA%\Microsoft\Windows\Templates\Yahoo.jse
등록
//b:배치 모드 사용:사용자 메시지와 오류창 최대한 나오지 않게 함
//nologo:Windows Script Host 로고 숨김
최초 실행: 감염 후 10분 뒤
반복 실행: 35분 간격으로 실행
작업 이름은 MicrosoftEdgeUpdateTaskMachineGGswr{
F60293632-35R-4A2F-96A8-03C3ECD693f5
} 으로 마이크로소프트 엣지 브라우저 업데이트 인 것처럼 위장하는 것이 특징
8.C# AES 복호화 및 난독화
C# 문자열에는 존재하지 않는 클래스 명을 사용합니다.
msx
Crxgraphy
RFDB
Amanged
CffteDecrxr
CrxStffm
9.암호화 방식
KiLLP7ss#
byte[] key=pbk.GetBytes(32);
byte[] iv=pbk.GetBytes(16);
10.news.ps1 중복으로 덮어쓰기 발견
먼저 ajobcall.txt를 메모리로 받아 AES 복호화하고 news.ps1로 저장 한뒤 실행
똑같은 ajobcall.txt를 다시 다운로드 하지만 이번에는 복호화하지 않고 곧바로 news.ps1에 저장하는 동작을 합니다.
결과적
복호화 news.ps1 생성
첫 번째 PowerShell 실행 시작
암호화된 원본으로 news.ps1 덮어쓰기

작업 스케줄러 등록
작업 스케줄러 등록

4.두 번째 PowerShell 실행
의도되었거나 코딩 실수
그리고 언제나 자가 삭제를 통해서 흔적을 감추게 됩니다.
추가적인 파일을 다운로드 할 수가 없어서 모르겠지만, 최종적으로 컴퓨터 내 주요 문서 탈취, 계정 인증 정보 탈취,키로거 및 원격 제어 기능으로 사용
기업 이메일, 인사 정보, 내부 문서,사내 메신저,VPN 및 원격접속 정보, 공유 드라이브, 그룹웨어, 다른 임직원 연락처 등을 탈취하기 위해서 기업 인사팀, 채용 담당자, 인력중개인, 파견 아웃소싱 업체,공공기관 채용 담당자, 대학 연구기관 행정 담당자, 지원자 서류를 검토하는 부서 관리자를 먼저 노리고 기업 내부 문서에 접근하는 방식을 택했을 가능성이 매우 큽니다.
악성코드 검사를 통해서 탐지 및 제거를 했더라도 추가로 작업 스케줄러까지 제거해야 하는 악성코드입니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band