1. 공격 요약
2026년 9월 27일부터 Level Infinite가 운영하는 CDN의 공식 JavaScript 파일 4개에 공격자 코드가 삽입된 정황이 확인됐다. NIKKE PC 런처는 해당 파일을 정상 구성 요소로 로드하기 때문에, 변조된 파일을 받은 런처를 실행하면 외부 스크립트를 추가로 불러오고 원격 제어 에이전트를 설치할 수 있었다.
공격자는 감염된 시스템에서 임의 명령 실행, 파일 열람·수집, 모니터 캡처, 브라우저 저장 비밀번호 및 세션 정보 수집, 개발자 도구 자격 증명과 SSH 키·클라우드 토큰·암호화폐 지갑 데이터 수집 등을 수행할 수 있었다. Windows에서는 Chrome 로딩 경로를 악용한 DLL 지속성도 설치할 수 있었다.
핵심 판단
**공격 진입점:**게임 자체 실행 파일이 아니라 런처가 신뢰하는 공식 CDN의 JavaScript 자원.**공격 형태:**CDN 파일 변조 → 외부 로더 실행 → 페이로드 다운로드 → LuaJIT 기반 원격 제어 에이전트 실행.**영향 범위:**Windows뿐 아니라 Linux/Steam Deck에서 Proton으로 런처를 실행한 환경도 영향 가능.**위험도:**런처가 실행된 동안 공격자가 사용자 권한으로 임의 명령을 실행할 수 있어 높음.**복구의 핵심:**런처 캐시 삭제만으로 이미 설치된 지속성이나 유출된 자격 증명이 복구되지는 않는다.**공급망 문제:**공격자가 CDN 버킷 또는 배포 파이프라인에 어떻게 쓰기 권한을 얻었는지는 보고서 기준으로 미확인.
권고:Level Infinite의 공식적인 완전 해결 확인 전에는 런처를 실행하지 않는다. 과거 실행 이력이 있거나 감염 징후가 확인되면 네트워크 격리, 침해 조사, 자격 증명 폐기·재발급을 우선한다.
2. 사고 개요
| 항목 | 내용 |
|---|
| 최초 변조 확인 시점 | 2026-09-27 |
| 악성 에이전트 실행 확인 | 늦어도 2026-10-23 |
| 주요 피해 대상 | NIKKE PC 런처 실행 환경 |
| 변조된 공식 파일 | aegis-fix.min.js , images.7fec4c32.js , FeedList.feb647c9.js , vue-bucket.min.js |
| 외부 로더 도메인 | insightjs.com , 대체 도메인 insightjs.org |
| 페이로드 호스트 | analytics.insightjs.com |
| 에이전트 유형 | 난독화된 32-bit LuaJIT 바이트코드 |
| C2 통신 경로 | 런처 내장 브라우저 및 JavaScript 브리지 |
| Windows 지속성 | 사용자 레지스트리 CLSID 및 Chrome 경로의 DLL |
| 공개 분석 기준 | 2026-11-04 02:00 GMT |
2.1 확인된 상태와 미해결 사항
원문 업데이트 시점에는 변조 파일 3개가 11월 3일 교체됐고, FeedList.feb647c9.js
는 원본에서 정상 파일로 교체됐음에도 일부 CDN 엣지 서버가 오래된 변조 사본을 계속 전달했다. 공격자 서버도 일부 시점 이후 응답하지 않았지만, 이것만으로 감염된 시스템이 안전해지는 것은 아니다.
아직 명확히 밝혀지지 않은 사항:
- 공격자가 CDN 스토리지 또는 배포 파이프라인의 쓰기 권한을 획득한 경로
- 모든 CDN 엣지에서 변조 파일이 제거됐는지 여부
- 사용자 런처 캐시에 남아 있는 변조 파일의 잔존 여부
- 피해 시스템별 실제 실행된 페이로드 버전과 유출 데이터 범위
- 서비스 운영사의 공식 사고 조사 결과 및 완전 복구 확인
3. 공격 체인(Attack Chain)
NIKKE PC 런처 실행
|
v
Level Infinite 공식 CDN에서 JavaScript 로드
|
v
변조된 JS 파일 내 삽입 코드 실행
|
v
insightjs.com/l.js 로더 호출
|
+---- 실패/무응답 시 insightjs.org 대체 경로
|
v
런처의 JS 브리지(Srv_DownloadFile)를 이용해
analytics.insightjs.com 에서 페이로드 다운로드
|
v
LuaJIT 기반 원격 제어 에이전트 실행
|
+---- k2f_chan 채널 등록
|
+---- C2 명령 수신 및 실행
|
+---- 파일·브라우저·개발자 자격 증명 수집
|
+---- 화면 캡처 및 데이터 업로드
|
+---- Windows Chrome DLL 지속성 설치 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Stage 1 — 공식 JavaScript 파일 변조
공격자는 런처가 정상적으로 가져오는 공식 CDN 자원에 코드를 삽입했다. 삽입 코드는 외부 로더 URL을 난독화된 정수 배열로 숨기고, 페이지에 <script>
요소를 추가해 l.js
를 불러온 뒤 스크립트 요소를 제거하는 형태였다.
| 공식 파일 | 외부 로더 식별자 |
|---|
aegis-fix.min.js | |
?f=aegis | |
images.7fec4c32.js | |
?f=images | |
FeedList.feb647c9.js | |
?f=feedlist | |
vue-bucket.min.js | |
?f=vue | |
일부 코드 경로는 insightjs.com
접속 실패 또는 일정 시간 무응답 시 .org
도메인으로 전환하도록 구성됐다. 따라서 한 도메인만 차단하는 방식은 충분하지 않다.
Stage 2 — 페이로드 다운로드
외부 로더 l.js
는 런처의 자체 JavaScript 브리지인 Srv_DownloadFile
을 호출해 다음 리소스를 가져왔다.
피해자별로 같은 크기의 서로 다른 빌드가 확인됐다. 따라서 위 SHA-256 하나만으로 모든 감염 사례를 탐지할 수 없다. 런처는 페이로드를 Launcher\log\tinyget\
아래 .log
처럼 보이는 이름으로 저장해 실행한 뒤 삭제하는 동작을 보였다.
Stage 3 — LuaJIT 에이전트
분석된 에이전트는 Prometheus로 난독화된 32-bit LuaJIT 2.0 바이트코드였다. 문자열은 섞인 테이블과 커스텀 인코딩으로 숨겨져 있었다.
-
내부 빌드명:
K2F_LUA_BUILD
-
내부 통신 채널:
k2f_chan
-
명령 프로토콜: JSON 기반
open
,read
,write
,ping
,close
-
데이터 반환: Base64 인코딩 청크(최대 2 MiB)
-
상태 저장: 런처 Local Storage의
k2f.agent.state
-
기본 체크인 설정의 한 사례: 1,800초 간격, ±360초 지터
중요한 점은 Lua 페이로드 자체가 독립적인 네트워크 통신을 수행하는 구조가 아니라는 것이다. 통신과 C2 체크인은 런처 내장 브라우저의 l.js
가 담당한다. Windows에서는 방화벽·프록시·SRUM 기록상 네트워크 트래픽이 게임 프로세스가 아닌 tbs_browser.exe
로 나타날 수 있다.
4. 공격자가 수행할 수 있는 행위
에이전트는 고정된 정보 탈취 루틴만 실행하는 단순 스틸러가 아니다. 원격 운영자가 명령을 전달하면 감염된 사용자 권한 범위에서 여러 작업을 수행할 수 있는 원격 제어 도구에 가깝다.
| 기능/명령 | 가능한 행위 |
|---|
exec | |
| 프로그램 또는 셸 명령 실행 | |
ls , cd , cat | |
| 디렉터리 탐색 및 파일 읽기 | |
download , file_chunk | |
| 파일 다운로드 및 분할 전송 | |
screens | |
| 연결된 모니터 화면 캡처 | |
creds | |
| 런처에 저장된 NIKKE 계정 로그인 정보 복호화 | |
browserscan | |
| 브라우저 저장 비밀번호 및 설정에 따른 쿠키 데이터 수집 | |
chrome_scan | |
| Chrome 설치·프로필·확장 프로그램 식별 | |
keyscan | |
| 알려진 자격 증명·설정 파일 및 일부 개발자 도구 Credential Manager 항목 검색 | |
wallet_files | |
| Chrome 프로필 내 지정된 암호화폐 지갑 확장 데이터 수집 | |
whoami , sysinfo , host_facts | |
| 사용자·권한·OS·하드웨어·네트워크 정보 수집 | |
chrome_install | |
| Chrome 로딩 경로에 DLL 지속성 설치 | |
chrome_cleanup , chrome_uninstall , payload_cleanup | |
| 일부 흔적 제거 | |
exec
가 가능하다는 점이 특히 중요하다. 공격자는 별도 명령 목록에 없는 추가 악성코드를 설치하거나 파일을 변경하는 등 사용자 계정으로 가능한 작업을 수행할 수 있다.
GPT요약 중 일부분이고요. 내용은 해당 Gist가 계속 수정되고 있어서 바뀔수 있을것 같습니다.
인터넷좀 둘러보다가 봤는데 게임을 안해서 잘 모르는데 GeekNews에 없는 내용이라 공유했습니다.
요즘 보안이슈 피로도가 크네요. php, node, linux(ipv4) 나오는대로 하나하나 따라가곤 있는데 또 뭐가 언제터질지 모르고요..