---
title: "npm 패키지 lotusbail, 56,000회 다운로드되며 WhatsApp 메시지·연락처 통째로 탈취하고 있었음"
published: 2025-12-22T22:35:45.000Z
canonical: https://jeff.news/article/1117
---
# npm 패키지 lotusbail, 56,000회 다운로드되며 WhatsApp 메시지·연락처 통째로 탈취하고 있었음

WhatsApp Web API 라이브러리를 자처한 npm 패키지 lotusbail이 실제로는 인증 토큰, 메시지, 연락처를 탈취하고 공격자 기기를 페어링하는 멀웨어로 밝혀짐. 56,000회 이상 다운로드되었고 6개월간 npm에 존재했으며, 정상 작동하는 코드 위에 4단계 난독화와 27개 안티디버깅 트랩을 갖춘 정교한 서플라이 체인 공격임.

## 겉으로는 멀쩡한 WhatsApp API 라이브러리

- npm에 올라온 `lotusbail` 패키지는 정식 WhatsApp Web API 라이브러리인 `@whiskeysockets/baileys`의 포크를 자처함
- 다운로드 수 56,000회 이상이고, 실제로 WhatsApp 메시지 송수신 기능이 정상 작동함
- 6개월째 npm에 올라와 있었고, 분석 시점 기준으로 아직 삭제되지 않은 상태였음
- 대부분의 악성 npm 패키지는 타이포스쿼팅이거나 작동 자체가 안 되는데, 이건 진짜로 돌아가는 코드라서 개발자들이 의심 없이 설치한 것이 핵심임

> [!WARNING]
> 이 패키지를 사용한 적이 있다면 npm에서 제거하는 것만으로는 부족함. WhatsApp 설정에서 연결된 기기를 수동으로 모두 해제해야 공격자의 접근이 차단됨.

## 탈취되는 정보 목록

- 인증 토큰 및 세션 키
- 과거·현재 전체 메시지 이력
- 전화번호 포함 연락처 전체
- 미디어 파일 및 문서
- WhatsApp 계정에 대한 영구적 백도어 접근 권한

## 작동 방식: 소켓 래퍼로 전부 가로챔

- 정상적인 WhatsApp WebSocket 클라이언트를 래핑해서, 모든 메시지가 멀웨어의 소켓 래퍼를 먼저 거치게 만듦
- 인증하면 자격 증명 캡처, 메시지 수신하면 가로채기, 메시지 발신하면 기록 — 정상 기능은 그대로 작동하면서 모든 데이터를 복제함
- 탈취 데이터는 평문으로 보내지 않고, 자체 구현한 RSA 암호화로 암호화 후 전송함
- 정상적인 WhatsApp 라이브러리라면 자체 암호화가 필요 없음 — WhatsApp 자체가 E2E 암호화를 하니까. 자체 RSA가 있다는 건 탈취 데이터 암호화 용도라는 뜻임

## 4단계 난독화로 서버 주소 은폐

- 유출 서버 URL은 암호화된 설정 문자열 속에 숨겨져 있음
- Unicode 변수 조작, LZString 압축, Base-91 인코딩, AES 암호화 — 총 4단계 난독화를 적용함
- 서버 주소가 코드 어디에도 직접 노출되지 않아서 정적 분석으로는 찾기 어려움

## 백도어: 패키지 삭제해도 접근 유지됨

- WhatsApp의 기기 페어링 코드 메커니즘을 악용함
- 멀웨어 안에 AES로 암호화된 하드코딩 페어링 코드가 내장되어 있음
- 사용자가 인증할 때 자신의 앱뿐 아니라 공격자의 기기까지 같이 연결됨
- 공격자는 메시지 읽기, 메시지 전송, 미디어 다운로드, 연락처 접근 등 완전한 계정 제어권을 가지게 됨
- **패키지를 삭제해도 공격자의 기기 연결은 WhatsApp 시스템에 그대로 남아있음** — 수동으로 연결 기기를 해제해야만 차단 가능함

## 27개 무한루프 트랩으로 분석 방해

- 디버깅 도구가 감지되면 실행을 멈추는 무한루프 트랩이 27개 설치되어 있음
- 디버거 감지, 프로세스 인자 검사, 샌드박스 환경 탐지 등을 수행함
- 악성 코드 섹션에 친절하게 주석까지 달아놨음 — 마치 정식 개발 프로세스를 거친 것처럼. 아마 Jira 보드도 있을 거라는 원문의 코멘트가 인상적임

> [!IMPORTANT]
> 기존 보안 도구로는 이런 공격을 잡기 어려움. 정적 분석은 정상 작동하는 WhatsApp 코드로 보고 통과시키고, 평판 시스템은 56,000 다운로드를 보고 신뢰함. "코드가 작동한다"와 "코드가 주장하는 기능만 한다" 사이의 틈새를 노린 공격임.

## 시사점

- 서플라이 체인 공격이 점점 더 정교해지고 있음 — 작동하는 코드 + 정교한 안티디버깅 + 커스텀 암호화 + 다단계 난독화 조합
- 이런 공격을 잡으려면 런타임 행동 분석이 필요함 — WhatsApp 라이브러리가 자체 RSA를 구현하고 안티디버깅 트랩을 27개 심었다면 그 자체가 이상 신호임
- `lotusbail` 사례는 예외가 아니라, 앞으로 올 공격의 프리뷰라고 봐야 함

## 핵심 포인트

- 정상 작동하는 WhatsApp API 포크에 멀웨어를 숨겨 56,000회 다운로드를 달성함
- 인증 토큰, 전체 메시지, 연락처, 미디어 파일을 자체 RSA 암호화로 탈취함
- 하드코딩된 페어링 코드로 공격자 기기를 연결하며, 패키지 삭제 후에도 접근 유지됨
- 4단계 난독화와 27개 무한루프 트랩으로 분석을 방해함
- 정적 분석과 평판 시스템으로는 탐지 불가능 — 런타임 행동 분석이 필요함

## 인사이트

작동하는 코드라서 의심하지 않는다는 점을 노린 공격이 핵심임. npm 생태계에서 포크 패키지의 신뢰 모델 자체를 재검토해야 할 시점임.
