꿈을꾸는 파랑새

오늘은 북한 라자루스(Lazarus)로 추정 구글 크롬 웹 스토어 악성코드 분석-YouTube Translator: Captions, Transcript & AI Summary로 유포되고 있는 악성코드를 분석해 보겠습니다. 먼저 해당 악성코드는 ChatGPT를 통해 YouTube 영상의 자막을 제공하고 100개 이상의 언어로 번역하며, 클릭 한 번으로 요약 기능을 이용할 수 있습니다. 라고 돼 있으며 구글 크롬 부가기능을 사용하는 분들을 대상으로 감염을 시도합니다.
hxxps://chromewebstore(.)google(.)com/detail/youtube-translator-captio/pacbinlicgenenkelgfngadgpghfjjcl?pli=1
YouTube Translator: Captions, Transcript & AI Summary 부가 기능 설명
YouTube transcript, translation in 100+ languages, and one-click summary via ChatGPT. Free & unlimited summary. No signup.
Learn from the world's best YouTube videos without pausing to translate.
Watching English YouTube shouldn't mean constantly switching tabs, pausing every sentence, or missing important details. YouTube Translator helps you understand videos in real time with bilingual subtitles, AI summaries, and transcript export—all while keeping your data private.
Features
Live Dual Subtitles
View the original subtitles and your language side by side while watching.
Free AI Summary
Generate a concise summary of any video in seconds using ChatGPT.
100+ Languages
Supports Vietnamese, Spanish, Portuguese, Korean, Japanese, Chinese, Indonesian, Hindi, Arabic, Russian, Turkish, French, German, and many more.
Transcript Export

YouTube Translator CaptionsTranscript AI Summary
YouTube Translator CaptionsTranscript AI Summary

Export subtitles and transcripts as TXT, SRT, or Markdown.
Privacy First
Zero data collection. Zero telemetry. Everything stays on your device.
No Signup Required
No account, API key, or credit card required.
Perfect For
* ESL learners watching English lessons, tutorials, and courses
* Students learning from videos in another language
* Researchers reviewing long technical talks
* Content creators studying international competitors
* Anyone who wants bilingual subtitles while watching YouTube
How It Works
* Install the extension.
* Open any YouTube video.
* Click the YouTube Translator icon.
* Instantly see bilingual subtitles.
* Click Summarize to generate an AI summary with timestamps.
* Export the transcript with one click.
Why Choose YouTube Translator?
Unlike many extensions that only summarize a video after you finish watching, YouTube Translator translates subtitles in real time as the video plays.
You get bilingual captions, AI-powered summaries, and transcript export in one extension, with a generous free plan.

악성코드 특징

개발자가 감염 후 실수로 패키징 된 것인지 아니면 의도적으로 배치된 것인지는 불분명
확장 프로그램에서 페이로드를 로드하거나 실행하는 코드 경로를 발견하지 못함
일단 해당 구글 크롬 부가기능 파일을 다운로드를 하고 나서 압축을 풀어서 열어 봅니다.
그러면 일단 다른 파일은 정상이지만 a-solid-400.woff2 이라는 파일이 악성코드입니다. 일단 글꼴 형태를 돼 있지만 자바스크립트(JavaScript)으로 돼 있는 것이 특징

악성코드 분석

1. 난독화 함수
첫 부분은 다음 문자열을 문자 단위로 섞고 구분자 나누고 있으며 스와프 연산을 그대로 적용하면 최종적으로 r%object%m 이 됩니다. 여기서 동적으로 생성된 함수 안에서는 원래 모듈의 require와 module에 바로 접근하기 어려워서 해당 라자루스(Lazarus) 애들은 우회하기 위해 global.r=require 방법을 채택
2.global['!']='10-010 역할
캠페인 또는 빌드 버전 식별자
중복 실행 방지용 전역 마커
디코더 설정 값
감염 상태 또는 환경 확인용 플래그
단순한 난독화 생성기 표식
메모리 내 다단계 실행 로더이며 Node 권한 노출->Function 생성자 은닉->디코더 소스 복원->대형 페이로드 복원->최종 소스 동적 컴파일->매직 넘버 2509 실행
pYd 로 생성되는 최종 JavaScript 안에 존재합니다.
그리고 나서 해당 부분을 난독화 해제하면 다음과 같습니다.

fa-solid-400 글꼴로 위장을 하고 있는 JS 코드
fa-solid-400 글꼴로 위장을 하고 있는 JS 코드

가제 stage2.js 분석

Node.js 환경에서 동작하는 악성코드
1. 난독화
문자열, 함수명, API 주소, PRC 메서드, XOR 키를 _$_ccfc[] 배열에 숨겨 정적 분석 방해
주요 API 문자열
https
JSON
Buffer
child_process
spawn
eth_getTransactionByHash
2.1차 페이로드
XOR 키:2[gWfGj;<:-93Z^C
TRON 주소:TMfKQEd7TJJa5xNZJZ2Lep838vrzrs7mAP
Aptos 주소:0xbe037400670fbf1c32364f762975908dc43eeb38759263e7dfcdabc76380811e
복호화된 첫 번째 페이로드는 다음과 같이 현재 프로세스에서 직접 실행
3.2차 페이로드
XOR 키:m6:tTh^D)cBz?NM]
TRON 주소:TXfxHUet9pJVU1BgVkBAbrES4YUc1nGzcG

가제 stage2.js 코드
가제 stage2.js 코드

Aptos 주소:0x3f0e5781d0855fb460661ac63257376db1941b2bb522499e4757ecb3ebd5dce3
두 번째 페이로드 별도의 Node.js 프로세스로 실행
프로세스 생성에 실패 시 현재 프로세스에서 eval()로 다시 실행을 시도
네트워크 동작
TRON 조회
TronGrid API를 사용
hxxps://api(.)trongrid.io/v1/accounts/(TRON 주소)/transactions?only_confirmed=true&only_from=true&limit=1
응답에서 최근 트랜잭션의 raw_data.data 값을 가져옴
hex 디코딩->UTF-8 변환->문자열 역순 처리->EVM 트랜잭션 해시 획득
Aptos 대체 경로
TRON 조회가 실패하면 다음 Aptos API를 사용
hxxps://fullnode(.)mainnet(.)aptoslabs(.)com/v1/accounts/(Aptos 주소)/transactions?limit=1
응답 값에서 다음 값을 읽어들임
response[0].payload.arguments[0]
EVM 트랜잭션 해시로 사용
BNB Smart Chain RPC 조회
획득한 트랜잭션 해시로 다음 JSON-RPC 메서드를 호출
eth_getTransactionByHash
기본 RPC 서버:bsc-dataseed(.)binance(.)org
대체 RPC 서버:bsc-rpc(.)publicnode(.)com
첫 번째 RPC 서버가 실패하거나 유효한 데이터를 반환하지 않으면 두 번째 서버로 우회
응답에서 다음 필드를 사용
response.result.input

난독화 해제 결과
난독화 해제 결과

처리 방식
input의 0x 제거->hex 디코딩->UTF-8 변환->?.? 구분자로 분리->암호화된 페이로드 추출
XOR 복호화 방식
두 페이로드 모두 반복 키 XOR 방식으로 복호화
첫 번째 페이로드의 XOR 키:2[gWfGj;<:-93Z^C
두 번째 페이로드의 XOR 키:m6:tTh^D)cBz?NM]
실행 제어
마지막 실행 시간은 전역 변수 _p_t에 저장
현재 시각과 이전 실행 시간의 차이가 30초 미만이면 실행을 중단
동일 프로세스에서 페이로드가 반복 실행되는 것을 방지 목적
주요 IOC
XOR 키
2[gWfGj;<:-93Z^C
m6:tTh^D)cBz?NM]
TRON 주소
TMfKQEd7TJJa5xNZJZ2Lep838vrzrs7mAP
TXfxHUet9pJVU1BgVkBAbrES4YUc1nGzcG
Aptos 주소
0xbe037400670fbf1c32364f762975908dc43eeb38759263e7dfcdabc76380811e
0x3f0e5781d0855fb460661ac63257376db1941b2bb522499e4757ecb3ebd5dce3
네트워크 주소
api(.)trongrid(.)io
fullnode.mainnet(.)aptoslabs(.)com
bsc-dataseed(.)binance(.)org
bsc-rpc(.)publicnode(.)com
RPC 메서드
eth_getTransactionByHash
페이로드 구분자
?.?
최종 결론
해당 악성 코드는 TRON 또는 Aptos에서 BNB Smart Chain 트랜잭션 해시를 획득
해당 트랜잭션의 input 영역에서 암호화된 JavaScript를 추출
블록체인을 원격 페이로드 저장소 및 명령 전달 채널로 사용하는 악성 로더
파일명:pacbinlicgenenkelgfngadgpghfjjc.crx
사이즈:2 MB
MD5:73671b57b4adf828cfd04a092f8d798b
SHA-1:940eef842318d4b44d71523a23c366d5bf267520
SHA-256:0be475aaa8e336a2d88bb4a896eb7f45de5eccb2c15dbdb64a27aeab0944c285
일단 기본적으로 백신 프로그램들은 차단하니 브라우저 부가기능을 설치하더라도 항상 조심하는 습관을 가지는 것을 매우 권장

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band