꿈을꾸는 파랑새

오늘은 북한 해킹 단체 김수키(Kimsuky) 에서 만든 악성코드인 건강검진 안내서.alz에 대해서 알아보겠습니다. 해당 악성코드는 이메일 첨부 파일로 유포하고 있으며 알집으로 압축된 상태로 악성코드가 유포됩니다.
ファイル名:건강검진 안내서.alz
サイズ:3MB
MD5:d02be241dda3d4027f6fbd84ac015ca8
SHA-1:98d64f96bf6334ea881f2f9cacc5da414dd8da3f
SHA-256:2abff5efd1b8e2a938e2ec4ba105a8e70d1c402a6c31e2a7021c7e3199a72d7a
일단 해당 악성코드를 풀어보면 건강검진 안내서.pdf.jse 이라는 파일로 돼 있는 파일을 확인할 수가 있으며 물론 해당 악성코드는 PDF 파일이 아닙니다. 실행을 하면 악성코드에서 PDF 파일을 보여 주는 형식입니다.

악성코드 에 포함된 코드
악성코드 에 포함된 코드

ファイル名: 건강검진 안내서.pdf.jse
サイズ: 5MB
MD5:903cec93146327414cbc49068c524292
SHA-1:f752fec87877fdf366dda38313e3f83853eb9d90
SHA-256:81e384471fcfa6752cb81ca1b7b9ee455cc78f1580d260ed7a11d682a378930e
해당 코드는 간단하게 CyberChef(사이버셰프)에 있는 JavaScript Beautify를 이용을 해주면 쉽게 풀 수가 있습니다.
그리고 해당 부분을 대충 정리하고 분석을 하면 다음과 같습니다.

JavaScript Beautify 결과
JavaScript Beautify 결과

악성코드 분석

Windows Script Host(WSH) 기반 드로퍼(dropper),로더(loader) 형태의 난독화된 JScript
2단계 페이로드 드롭->디코드->DLL 실행->스스로 삭제
1. 환경/객체 준비
XMLDOM:base64 디코딩 자주 사용
FSO(FileSystemObject):파일 생성/삭제/존재 확인
WScript.Shell:프로세스 실행
2.경로 계산
vpXgx...:스크립트가 실행된 폴더
b0ZD...: GetSpecialFolder(0)는 Windows 폴더->\..\ProgramData 로 가서 C:\ProgramData 확보
공격자가 권한 문제 없이 쓰기 가능한 공용 위치를 선택한 전형적인 패턴
3.1차 Base6->파일 드롭 및 실행
mXdWmW5cCmbCYUUVM:내장된 base64 페이로드
fnzMVrMhtTPRDrDau:저장 파일명(코드 밖에서 정의된 난독화 변수)
저장 위치: 스크립트의 현재 폴더
존재하면 바로 실행

악성코드 실행시 미끼 파일 국민건강보험악성코드 실행시 미끼 파일 국민건강보험 2
악성코드 실행시 미끼 파일 국민건강보험

4.2차 Base64->ProgramData에  저장
.a9oc 확장자는 정상 확장자처럼 보이지 않게 만든 임의 확장자
.lpxQ 역시 랜덤 확장자 DLL/PE
5.PowerShell+certutil로 디코드
certutil -decode 는 원래 인증서/BASE64 처리용 윈도우 기본 도구
보안 제품의 스크립트, 내장 디코더 탐지 회피
정상 시스템 도구 이용으로 행위 은폐
PowerShell은 -windowstyle hidden으로 사용자에게 안 보이게 몰래 실행
6.자기삭제+rundll32로 DLL 실행
원본 스크립트 삭제 = 증거 제거
rundll32.exe <dll>, Play
export 함수명이 Play 인 DLL 진입점 실행4.2차 Base64->ProgramData에  저장
.a9oc 확장자는 정상 확장자처럼 보이지 않게 만든 임의 확장자
.lpxQ 역시 랜덤 확장자 DLL/PE
5.PowerShell+certutil로 디코드
certutil -decode 는 원래 인증서/BASE64 처리용 윈도우 기본 도구
보안 제품의 스크립트, 내장 디코더 탐지 회피
정상 시스템 도구 이용으로 행위 은폐
PowerShell은 -windowstyle hidden으로 사용자에게 안 보이게 몰래 실행
6.자기삭제+rundll32로 DLL 실행
원본 스크립트 삭제 = 증거 제거
rundll32.exe <dll>, Play
export 함수명이 Play 인 DLL 진입점 실행

악성코드 가 생성한 파일
악성코드 가 생성한 파일

7.IOC
파일,경로
C:\ProgramData\bEyjSIpZvbJpjVv9.a9oc
C:\ProgramData\hkNlPHP61rvE0T7J.lpxQ
스크립트 실행 폴더에 생성되는 fnzMVrMhtTPRDrDau

C2 주소
C2 주소

C2 통신 프로토콜

해당 악성코드는 C2와 통신할 때 정상 브라우저(특히 Google Chrome)로 위장함
User-Agent를 단순히 하드코딩하지 않고 난독화+SSE 연산+후처리(-10 subtract)로 복호화하고 WinHTTP에 전달
1.C2 도메인 및 엔드포인트
hxxp://load(.)samework(.)o-r(.)kr/index(.)php
InternetCanonicalizeUrlW->InternetCrackUrlW 를 통해 host/path/port 분리
HTTPS일 경우 WinHTTP 옵션 플래그 WINHTTP_FLAG_SECURE (0x800000) 활성화
2.User-Agent: Chrome 79 위장
코드 내부에 난독화된 Chrome UA 문자열 존재
복호화된 UA:
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/79.0.3945.130 Safari/537.36
해당 UA는 대략 2019~2020시기 Goolge Chrome 빌드

sub_180002400 내용
sub_180002400 내용

Chrome UA를 사용 이유

트래픽 분석 시 정상 브라우저 요청처럼 보이려고
3.헤더 난독화,복호화
일반적인 문자열이 아닌 UrlComponents 구조체 메모리 블록에 암호문 형태로 저장하고
_mm_sub_epi16 (SIMD subtract)
워드 단위 -9
이런 두 단계로 WideString 헤더로 복호화하고 WinHttpSendRequest로 전송

rundll32로 DLL 실행
rundll32로 DLL 실행
Logfile 및 와이어샤크 패킷.zip
15.10MB

비번:악성코드 신고 할떄 그 비번

4.POST Body 구조
POST body:
특징
랜덤 9문자 문자열 3개 생성
AES-CBC 암호문 Base64 인코딩
템플릿 문자열(aASSBSSCSS) 기반으로 파라미터 구성
정확한 키 이름은 sub_180002400 복호화 후 확인 가능
sub_180002400 내용
aASSBSSCSS가 POST 바디 템플릿 문자열
가변 인자 목록에 들어가는 값들이:
랜덤 9바이트 토큰 3개(v88, v84, v80)
Bot ID/호스트 ID로 보이는 Buffer
Base64 암호문(v50)
a1(v67) 같은 기타 식별자

작업 스케줄러에 등록된 예약 작업
작업 스케줄러에 등록된 예약 작업

5. 암호화: AES-CBC 방식 
프로세스:
1).입력(Size)을 16바이트 정렬(Zero padding)
2).CBC Pre-XOR:
3)블록 암호:
4)base64 변환->POST body 삽입
키 생성:
afclResdGAdegNu는 키 시드(16byte)
128bit->AES-128키
AES-CBC 이유
동일 출력되는 ECB 회피
네트워크 탐지 룰에서 AES 패턴 숨기기 좋음
최소한의 난독화 강력한 암호화
6. 서버 응답 처리 (2차 페이로드)
서버 응답은 매우 큰 값까지 허용: 최대 10MB 버퍼
이후에WinHttpQueryDataAvailable,WinHttpReadData 로 전체 페이로드를 받아서 상위 함수에 반환
즉 C2에서 쉘코드,PE(모듈),스크립트,명령 내려받기 위한 Stage Loader 처리
7.API 해시 기반 동적 로딩
HTTPS 관련 옵션을 다룰 때 문자열을 복호화하고 FNV-1a 64bit 해시 생성 sub_18000E1E0(hash) 로 함수 주소 resolve
해당 패턴은 일반 RAT/Loader에서 EDR 무력화 또는 정적 분석 회피용으로 매우 자주 사용을 하려고 생각이 됨
작업 스케줄러 예약 등록
C:\Windows\System32\regsvr32.exe/s C:\ProgramData\hkNIPHP61rvE0T7J.IpxQ
regsvr32.exe:Windows 기본 제공 도구. DLL/OCX 같은 COM 컴포넌트를 등록하는 용도. 악성코드가 매우 자주 악용하는도구
/s:Silent(조용히) 실행. 즉 사용자에게 메시지나 오류창을 절대 띄우지 않음->악성 행위 은폐 목적 
C:\ProgramData\hkNIPHP61rvE0T7J.IpxQ 를 1시간마다 실행
공격자는 시스템 내에서 이미 존재하는 합법적인 도구를 사용해 악성코드를 로딩하는 매우 흔한 기법
북한은 이렇게 건강검진 안내서 등으로 위장해서 사용자에게 보내거나 지난번처럼 웨딩 사진 및 웨딩 사진 보정 업체 또는 인터넷에 돌아다니는 사진을 가지고 악성코드를 만들고 있으니 기본적인 보안 수칙을 지키면서 사용을 하는 것을 매우 권장합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band