이터널블루는 마이크로소프트의 서버 메시지 블록(SMB) 프로토콜에 존재하는 특정 취약점(CVE-2017–0144)을 악용하여 원격 코드 실행(RCE)을 가능하게 하는 익스플로잇 도구이다. 반면, 더블펄서는 이터널블루를 통해 감염된 시스템에 설치되는 커널 모드 백도어 임플란트이다. 이 두 도구는 각각의 위협도 크지만, 결합되었을 때 강력한 공격 체인을 형성하여 워너크라이와 같은 악성코드가 사용자 개입 없이도 자체적으로 확산하는 웜(Worm)의 기반을 마련한다.
SMB는 네트워크 환경에서 파일, 프린터, 기타 자원을 공유하는 데 사용되는 클라이언트-서버 통신 프로토콜이다. 이터널블루 공격의 핵심 표적이 되었던 SMBv1은 1980년대에 개발된 레거시 프로토콜로, 현대적인 암호화 및 인증 방식을 지원하지 않아 다양한 보안 취약점에 노출되어 있다. 이터널블루를 사용한 워너크라이와 낫페티야(NotPetya) 랜섬웨어의 확산은 바로 이 SMBv1의 구조적 한계와 취약성에서 비롯되었다.
이에 비해 2006년 윈도우 비스타와 함께 도입된 SMBv2는 SMBv1과 호환성이 전혀 없는 새로운 프로토콜이다. 이 버전은 HMAC SHA-256 기반의 강력한 메시지 서명으로 보안을 강화한다. SMBv3는 SMBv2를 기반으로 데이터센터 환경에 최적화된 기능을 추가하며, 종단 간(end-to-end) 암호화를 제공하여 신뢰할 수 없는 네트워크에서도 데이터를 보호한다. SMBv1은 “암호화 및 인증 방식의 부재”라는 근본적인 문제점을 지니고 있었으며, 이터널블루 취약점(CVE-2017–0144)은 바로 이러한 구조적 한계와 관련된 불안정한 입력 처리(Improper Input Validation)에서 비롯된다.
이터널블루는 마이크로소프트 윈도우의 SMBv1 서버에서 발생하는 원격 코드 실행(RCE) 취약점인 CVE-2017–0144를 공격하는 익스플로잇이다. 이 취약점은 패치가 적용되지 않은 시스템에서 원격 공격자가 특수하게 조작된 패킷을 전송하여 임의의 코드를 실행할 수 있도록 허용한다.
이터널블루는 버퍼 오버플로우(buffer overflow)와 힙 스프레이(heap spraying)라는 두 가지 핵심 기술을 통해 운영체제 커널 레벨에서 코드를 실행시킨다. 버퍼 오버플로우는 SMBv1이 NTFeaList의 크기를 계산하는 과정에서 발생하는 버그를 악용하여, 할당된 버퍼보다 더 많은 데이터를 의도적으로 넘치게 만들어 프로그램의 제어 흐름(control flow)을 조작한다. 이어서 힙 스프레이 기술이 사용되는데, 공격자는 힙 메모리 영역을 미리 예측 가능한 위치의 특정 데이터(주로 셸코드)로 채워 넣어 버퍼 오버플로우 공격 시 제어 흐름을 원하는 위치(셸코드의 시작 주소)로 정확하게 옮길 확률을 극적으로 높인다. 최종적으로 버퍼 오버플로우를 통해 반환 주소를 셸코드가 위치한 주소로 덮어쓰게 되고, 이 조작된 함수가 실행되면서 셸코드가 작동하게 된다.
더블펄서는 이터널블루 익스플로잇 성공 후 피해 시스템에 설치되는 백도어 임플란트이다. 이 백도어는 사용자 모드가 아닌 운영체제 커널 모드에서 실행되며, 이를 통해 시스템에 대한 매우 높은 수준의 제어 권한을 얻는다. 시스템 운영자가 침입을 거의 알아차릴 수 없을 정도로 은밀하게 작동한다.
더블펄서의 핵심 기능은 세 가지 명령어를 통해 구현된다. ping, kill, 그리고 공격자가 가장 중요하게 활용하는 exec 명령어이다. exec는 원하는 악성코드를 원격 시스템의 메모리에 주입(inject)하고 실행한다. 더블펄서는 이터널블루 공격 체인의 핵심적인 "중간 다리" 역할을 수행한다. 이터널블루는 초기 침투를 담당하고, 더블펄서는 exec 명령을 통해 어떤 페이로드든 실행할 수 있는 지속성 높은 백도어를 확보하게 한다.
이터널블루와 더블펄서를 활용한 공격은 여러 단계에 걸쳐 유기적으로 진행된다. 이 공격 체인은 워너크라이와 같은 웜(Worm) 형태의 악성코드가 사용자 개입 없이 네트워크 전체로 빠르게 확산되는 기반이 된다.
exec 명령을 통해 최종 페이로드를 감염된 시스템에 주입하고 실행한다.