처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.08.30 36

수동형 백도어 '슬립워커': 자체 명령 언어를 품은 은신형 위협

Hacker News 원문 보기

대부분의 백도어는 감염 직후 외부의 명령제어(C2) 서버로 접속해 지시를 기다린다. 이 통신 자체가 탐지의 실마리가 되기 때문에, 방어 측은 알려진 악성 도메인이나 비정상 아웃바운드 트래픽을 감시하는 방식으로 대응해 왔다. 보안 연구자 r136a1이 SLEEPWALKER(슬립워커)라 이름 붙인 악성코드는 이 전제를 정면으로 비껴간다. 자기 스스로는 어떤 외부 주소에도 연결하지 않고, 눈에 띄는 수신 포트도 열지 않은 채 메모리 안에서 그저 대기한다. 특정하게 조작된 네트워크 패킷 하나가 도착하기 전까지는 아무 일도 하지 않는다.

연구자는 연초 VirusTotal Intelligence 접근 권한을 잃은 것이 오히려 밀린 분석 과제를 처리하는 계기가 됐다고 밝힌다. 처음에는 특별해 보이지 않던 샘플이 내부를 뜯어보니 독특한 설계를 드러냈다는 것이다. 이 글은 그 분석 결과를 정리한 것으로, 파일 자체가 드러내는 정보, 로딩과 기동 방식, 네트워크 은신, 명령 보호, 그리고 자체 명령 언어의 동작까지를 다룬다.

신뢰된 보안 제품으로 위장하다

슬립워커는 59,904바이트 크기의 서명되지 않은 64비트 윈도우 DLL로, 컴파일 타임스탬프는 2024년 6월 10일이다. 이 파일은 마이크로소프트의 dpapi.dll을 사칭하며, ESET Management Agent의 버전 리소스를 위조해 넣었다. 실제 dpapi.dll이 내보내는 일곱 개 함수(CryptProtectDataNoUI 등)를 동일한 이름으로 노출하지만, 각 함수는 포인터 테이블을 경유하는 작은 스텁에 불과하다. 이 DLL은 ESET Management Agent의 실행 파일인 ERAAgent.exe에 사이드로딩되도록 설계됐다. 흥미롭게도 슬립워커는 호스트 프로세스의 서명이나 경로가 아니라 이름만 확인한다. 로드된 프로세스 이름이 ERAAgent.exe가 아니면 완전히 비활성 상태로 남는다. 덕분에 디버거나 샌드박스 안에서는, 그 도구가 우연히 같은 이름을 갖지 않는 한, 아무런 동작도 하지 않는다.

이 위장에는 허점도 있다. 함수 호출을 실제 dpapi.dll로 전달하기 위해 슬립워커는 dpapisvc.dll이라는 파일을 로드하려 하지만, 이 이름은 실제 윈도우에 존재하지 않는다. 로드에 실패하면 해당 호출만 실패시키는 것이 아니라 호스트 프로세스 전체를 종료해 버린다. 연구자는 이 점을 근거로, 완성된 형태의 공격에서는 진짜 dpapi.dll의 이름을 바꾼 사본이 같은 폴더에 함께 배포될 가능성을 지적하면서도, 분석한 샘플 안에서는 그런 사본이 확인되지 않는다고 선을 긋는다.

매직 패킷을 기다리는 잠복

기동에 성공한 슬립워커는 외부로 연결하는 대신 네트워크 카드를 프로미스큐어스 모드로 전환한다. 자기 앞으로 온 패킷뿐 아니라 지나가는 모든 패킷을 들여다보기 위해서다. 파일에 내장된 유일한 설정 명령은 AES-256-CCM으로 복호화되며, '모든 네트워크 인터페이스를 시간 제한 없이 감시하라'는 한 줄짜리 부트스트랩이다. 백도어는 오가는 패킷마다 계산된 체크섬, 인코딩된 길이값, 암호화된 데이터 블록이라는 특정 패턴을 검사한다. 이 조건을 순서대로 모두 통과한 패킷, 이른바 매직 패킷만이 명령으로 취급된다. 검사는 윈도우가 TCP·UDP 여부를 판별하기도 전, 패킷의 원시 내용에 대해 이뤄지므로 트리거는 사실상 어떤 IP 트래픽에나 실려 올 수 있고, 조작된 DNS 질의도 별도 트리거 채널로 활용된다.

23개 명령어의 바이트코드 인터프리터

이 백도어를 특별하게 만드는 지점은 트리거 패킷이 실어 나르는 내용이다. 그것은 사람이 읽을 수 있는 명령이 아니라, 백도어가 자체 설계한 명령 언어로 작성된 짧은 프로그램이다. 슬립워커는 23개의 명령어를 가진 소형 바이트코드 인터프리터를 내장하고 있으며, 여기에는 작업 스케줄링, 여러 방식의 데이터 이동, SHA-256으로 검증하는 단계적 파일 전달, 메모리에서 직접 실행하는 셸코드 등이 포함된다. 네트워크 기능은 TCP·UDP·ICMP는 물론, SMB 명명된 파이프를 통한 측면 이동, 게스트와 호스트 사이의 VMware VMCI 채널, 원시 소켓 스니핑까지 아우른다. 명명된 파이프 접근을 위해 슬립워커는 익명 SMB 접근을 활성화하고 Everyone과 Anonymous Logon에 권한을 부여하는 등 호스트의 보안을 능동적으로 약화시킨다. 모든 암호화는 런타임에 로드되는 라이브러리가 아니라 정적으로 링크된 mbedTLS 사본으로 처리된다. 중요한 것은, 이 완전한 명령 언어가 첫 트리거 순간부터 곧바로 사용 가능하다는 점이다. 별도의 2차 스테이지 구성요소를 내려받을 필요가 없다.

실무적 함의와 한계

방어 관점에서 슬립워커가 까다로운 이유는 명확하다. 공격자가 그 한 개의 패킷을 보내기 전까지 차단할 대상이 존재하지 않으며, 트리거는 지극히 평범해 보이는 트래픽 속에 숨어들 수 있다. 알려진 악성 인프라로의 아웃바운드 연결이 없다는 사실이 감염을 배제하는 근거가 되지 못한다는 뜻이다. 한편으로 이 악성코드가 완성도 높은 작품은 아니라는 점도 분명하다. 존재하지 않는 DLL을 로드하려다 프로세스를 통째로 종료시키는 설계, 그리고 두 개의 기동 경로가 서로의 실행 여부를 확인하지 않아 발생하는 작업 스레드 중복 문제 등, 연구자는 여러 구현상의 약점을 짚는다. 이것이 초기 버전이며 개선된 빌드가 이미 존재할 가능성도 열어 두었다. VMCI를 포함한 다중 은닉 전송 채널과 신뢰된 ESET 관리 구성요소로의 사이드로딩이라는 조합은 이 악성코드가 다른 미확인 구성요소를 동반한 표적 공격의 일부일 가능성을 시사한다. 다만 연구자는 코드가 과거에 본 어떤 것과도 닮지 않았다는 이유로 특정 공격 그룹으로의 귀속은 유보했다. 국내에서 ESET PROTECT 계열 관리 에이전트를 운용하는 조직이라면, 서명이 아닌 프로세스 이름만으로 로딩 대상을 삼는 이 사이드로딩 패턴과 에이전트 폴더 내 비정상 DLL을 점검 항목으로 삼아 둘 만하다.

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.