“새로운 건 일단 ‘찍먹’한다” 보여준 스틸잇 캠페인
- 새로 등장한 정보 탈취형 멀웨어 스틸잇
- 배포 위해 Node.js의 SEA 기술 악용
- SEA는 아직 실험 단계에 있는 기술일 뿐인데...
새로운 정보 탈취형 멀웨어가 배포되고 있다는 경고가 나왔다. 멀웨어의 이름은 스틸잇(Stealit)이다. 이전의 멀웨어 유포 캠페인과는 전략적 측면에서 차이점을 보여 주목 받고 있다. 보안 기업 포티넷(Fortinet)에서 이를 상세히 분석해 세상에 알렸다. 이 캠페인의 핵심은 Node.js와 단일 실행파일로 구성된 애플리케이션(SEA)의 기능을 악용하는 것이라고 한다. 오픈소스 프레임워크인 일렉트론(Electron)이 활용된 사례도 일부 존재한다.
Node.js와 SEA의 개념
SEA는 Node.js를 기반으로 한 애플리케이션 패키징 기술이며, 배포와 실행을 보다 간편하게 한다는 특징을 가지고 있다. 이 ‘편리함’이 멀웨어 배포와 실행에도 똑같이 작용하는 것이 이 캠페인의 강점이라고 할 수 있다.
Node.js는 자바스크립트를 가지고 서버나 데스크톱 프로그램을 제작할 수 있게 해 주는 런타임 환경이다. 원래 자바스크립트는 브라우저 안에서만 실행되었지만 Node.js 덕분에 브라우저 바깥에서도 실행이 가능하게 됐다. 그러면서 범용성이 좋아졌다.
SEA는 Node.js가 제공하는 애플리케이션 패키징 기능 중 하나다. Node.js로 만든 애플리케이션을 하나의 실행파일로 묶을 수 있게 된다. 그러므로 Node.js가 미리 설치되어 있지 않은 환경에서도 SEA로 패키징 된 애플리케이션을 실행시킬 수 있다. 원래 Node.js 런타임이 설치되어 있어야만 Node.js 애플리케이션을 실행시킬 수 있었고, 심지어 애플리케이션 코드 파일과 함께, 연계된 모든 모듈들을 같이 배포해야만 했다. 이런 불편함을 해결한 게 SEA다.
스틸잇 감염 순서
스틸잇은 다음 순서로 피해자 시스템을 감염시킨다고 포티넷은 정리한다.
1) 최초 침투 : 각종 게임이나 VPN 설치파일로 스틸잇을 위장시킨 후, 디스코드나 미디어파이어 같은 파일 공유 및 호스팅 서비스에 업로드한다. 디스코드나 각종 포럼의 댓글, 유튜브 링크 등을 통해 파일을 전달하기도 한다.
2) 실행 : 사용자가 1)번 공격을 통해 실행파일을 다운로드 받아 실행시키면 악성코드가 발동되면서 작동한다. SEA로 패키징 됐기 때문에 피해자 시스템에 Node.js가 없어도 아무 문제 없이 실행된다. 다만 이 때 분석과 추적 기능을 회피하는 기능부터 시작된다.
3) 인증 : 베이스64(Base64)로 인코딩 된 12자리 영숫자 인증 키를 생성하고, 이를 특정 파일에 기록한다. 이로써 스틸잇의 정식 구매자가 C&C 서버에 접속할 수 있게 되고, 거기서부터 추가 악성 행위를 이어갈 수 있게 된다.
4) 추가 다운로드 및 설치 : C&C 서버와의 인증이 완료되면 피해자 시스템으로 추가 페이로드들이 다운로드 된다. 이 시점에서 MS 디펜더를 일부 비활성화시키기도 한다. 이 단계에서 스틸잇의 주 페이로드가 설치된다. 다음 세 가지 실행파일이 이 때 설치 및 실행된다.
- save_date.exe : 크로미움 계열 브라우저에서 데이터를 추출하기 위해 오픈소스 도구를 설치 및 실행한다.
- stats_db.exe : 텔레그램과 왓츠앱과 같은 유명 메신저와 암호화폐 지갑, 게임 관련 앱 등에서 데이터를 훔쳐내는 기능을 가지고 있다.
- game_cache.exe : 공격 지속성을 확보한다. 주로 재부팅 시 악성 페이로드가 자동으로 실행되도록 하는 건데, 그 외에 C&C와 통신 해 실시간 화면을 모니터링하고 원격 명령을 실행하는 등의 기능도 가지고 있다.
5) 권한 상승 및 정보 탈취 : 위 세 가지 파일을 설치한 후 본격적인 공격이 시작된다. 브라우저에 저장된 비밀번호와 쿠키, 세션 토큰, 지갑 키 등이 유출된다. 이를 통해 실제 피해가 발생하는데, 아직까지 주요 피해 사례는 보고된 바 없다.
스틸잇, 어떻게 배포되나
스틸잇은 현재 전용 웹사이트를 통해 구독 형태로 판매되고 있다. 판매자들은 스틸잇이 “데이터를 추출하는 솔루션”이라고 광고하고 있으며, 웹캠 제어, 실시간 화면 모니터링 기능까지 갖추고 있다고 말한다. 또 스틸잇을 구매할 경우 안드로이드와 윈도 OS에서 작동하는 원격 접근 트로이목마(RAT)까지 같이 제공한다고 한다. 이 RAT이 무엇인지는 알 수 없으나 랜섬웨어 유포까지도 가능하다고 판매자들은 주장한다.
윈도용 스틸잇의 가격은 1주일 구독 기준 29.99달러이다. 한 번에 평생 라이선스를 획득하려면 499.99달러를 내야 한다. 그 외에도 여러 기간 동안 구매할 수 있는 프로그램이 마련돼 있다. 안드로이드용 스틸잇은 1주일 구독 기준 99.99달러이며, 평생 사용권은 1999.99달러이다. 윈도용과 마찬가지로 최소값과 최대값 사이에 여러 가지 기간 별 가격들이 있어 원하는 대로 고르면 된다.
위에서 언급됐다시피 실제 피해 사례는 아직 공개되지 않았다. 하지만 정보 탈취 멀웨어로 분류되고 있으며, 여러 개인들이 쉽게 구매할 수 있는 가격대에 판매되고 있는 것으로 미루어 봤을 때 기업이나 기관만이 아니라 개개인들에게도 피해가 있을 것으로 예상된다. 즉 개인을 겨냥한 소소한 공격에 사용될 가능성이 높다는 의미로, 최근 금전적 이득을 위한 공격 행위가 증가하는 추세상 암호화폐 관련 정보를 좀 더 주의 깊게 보호해야 할 것으로 여겨진다.
어떤 의의 가지고 있나
이 캠페인의 가장 큰 의의는 SEA가 활용됐다는 것이다. Node.js에서 SEA가 처음 공식 언급된 건 비교적 최근의 일이며, 심지어 아직 ‘실험적 기능’으로서 도입됐을 뿐이다. Node.js 20부터 도입된 기능으로 알려져 있는데, 문서상으로는 18.16.0과 19.7.0 버전에서도 존재한다. 이 버전들의 최초 배포일은 2023년 4월 12일이다. Node.js 20의 경우 같은 해 4월 18일에 출시됐다. 어떤 버전을 기준으로 하든 SEA는 이제 막 두돌 넘긴 기능이라는 걸 알 수 있다.
“Node.js 공식 문서에는 아직까지도 SEA가 실험 단계에 있는 기능이라고 표기되어 있습니다. 그러므로 구현 방법이나 API가 변경될 수 있다는 의미가 됩니다. 그런데 공격자들은 이미 이런 실험적 기능을 실제 공격에 활용하고 있습니다. ‘실험적 기능’ 혹은 ‘베타 버전’은 보안 전문가들의 분석 및 연구 대상이 안 되는 경우가 많은데, 공격자들은 그렇지 않다는 걸 알 수 있습니다.” 포티넷의 설명이다.,
“새로운 것은 실험 단계에 있든 정식 배포된 것이든, 공격자들에게는 늘 좋은 도구가 됩니다. 사용자들에게 낯설다는 것 자체가 기존 탐지 기능들을 회피하는 데 도움이 되기 때문입니다. 스틸잇 판매자들의 사례가 이를 명확히 드러냅니다. 방어자 쪽에서도 새로운 것의 등장을 경계의 눈으로 바라봐야 할 것입니다.”
Related Materials
- Stealit Malware Abuses Node.js Single Executable Feature - The Hacker News: Stealit 캠페인이 Node.js의 SEA(싱글 실행파일) 기능을 이용해 성공적으로 정보탈취·RAT 배포, 기술적 분석 및 SEA와 사회공학(SEA) 혼합 사례 설명, 2025년
- Stealit Malware Campaign Uses Node.js SEA to Evade Detection, Disguised as Games and VPNs - TechNadu: Stealit이 Node.js SEA로 다양한 파일 공유·게임·VPN 위장해 데이터탈취, 다단계 우회·사회공학 스팸·가짜 앱 연계 분석, 2025년
- New Stealit Campaign Abuses Node.js Single Executable Application - Fortinet: SEA 기술과 사회공학 스팸 메시지·가짜 게임, VPN 설치 프로그램 결합, 심층 동작·피해 확산 조치 포함, 2025년
- Stealit Malware Using Node.js to Hide in Fake Game and VPN Installers - Hackread: Stealit이 SEA 기반 가짜 설치파일 사회공학 기법 활용, Windows 환경 점유·암호탈취·안티 분석 우회, 국제 사이버 위협 동향 최신 사례, 2025년
