SMB(Server Message Block)는 컴퓨터 네트워킹 분야에서 널리 사용되는 프로토콜입니다. SMB는 1980년대 IBM의 배리 파이겐바움(Barry Feigenbaum)이 처음 설계했으며, 주된 목적은 네트워크상의 노드 간에 프린터, 파일, 직렬 포트에 대한 공유 액세스를 제공하는 것입니다. 또한 프로세스 간 통신(inter-process communication)을 위한 트랜잭션 프로토콜을 전달하는 역할도 수행합니다.
SMB는 주로 Windows 컴퓨터에서 활용되며, 서버 구성 요소에는 'LAN Manager Server', 클라이언트 구성 요소에는 'LAN Manager Workstation'이라는 Windows 서비스가 각각 사용됩니다.
그렇다면 SMB 버전 1(SMB1)에 대해 조금 더 자세히 살펴보겠습니다.
SMB1의 역사
Server Message Block, 즉 SMB는 원래 IBM에서 설계되었으며, 1990년대 중반 Microsoft의 LAN Manager 제품에서 활용되었습니다. SMB의 목표는 DOS INT 21h 기반의 로컬 파일 액세스를 네트워크 파일 시스템으로 전환하는 것이었습니다. SMB 1.0은 이후 CIFS(Common Internet File System)로 이름이 변경되기도 했습니다. 쉽게 말해, 로컬 파일 시스템을 네트워크를 통해 사용할 수 있게 만든 것이 바로 네트워킹의 시작점이라고 할 수 있습니다.
초기 SMB 1.0 구현은 상당한 문제점을 안고 있었습니다. 최종 사용자 입장에서 작은 파일을 처리하는 데 어려움을 겪었고, 프로토콜 자체가 통신량이 많아('chatty') 장거리 전송 시 성능이 좋지 않았습니다. Microsoft는 1990년경 3Com과 함께 OS/2용으로 개발하던 LAN Manager 제품에 SMB 프로토콜을 병합하는 등 여러 차례 개선을 거쳤습니다. 이후 Windows for Workgroups와 후속 Windows 버전에 기능을 지속적으로 추가했습니다. 1996년 CIFS와 함께 Microsoft는 Windows 95에 탑재된 SMB 방언(dialect)을 개발했으며, 여기에 더 큰 파일 크기 지원, TCP/IP를 통한 직접 전송, 심볼릭 링크 및 하드 링크 지원 등이 추가되었습니다.
SMB는 어떻게 작동하나?
SMB 프로토콜은 애플리케이션 사용자가 원격 서버의 파일과 프린터, 메일 슬롯(mail slot) 등 다양한 리소스에 접근할 수 있도록 합니다. 즉, 클라이언트 애플리케이션이 원격 서버의 파일을 읽고, 생성하고, 이동하고, 수정할 수 있는 것입니다. 또한 SMB 클라이언트 요청을 수신하도록 설정된 모든 서버 프로그램에 연결할 수 있습니다.
SMB는 서버와 클라이언트 사이에서 연결을 설정하기 위해 여러 메시지를 주고받기 때문에 '요청-응답(response-request)' 프로토콜이라고도 불립니다. SMB 프로토콜은 7계층(애플리케이션 계층)에서 작동하며, 전송 계층으로는 포트 445의 TCP/IP를 사용합니다. 초기 버전의 SMB는 NetBIOS over TCP/IP라는 API(애플리케이션 프로그래밍 인터페이스)를 활용했습니다.
현재도 TCP/IP를 통해 SMB를 직접 지원하지 않는 장치와 통신하려면 전송 프로토콜 위의 NetBIOS가 필요합니다.
SMB1은 어떻게 랜섬웨어 및 기타 공격의 원인이 되는가?
많은 기업들이 금전 피해를 입게 만든 WannaCry 랜섬웨어를 기억하실 겁니다. 이러한 랜섬웨어와 트로이 목마 변종들은 Windows Server Message Block(SMB)의 취약점을 악용해 조직 내부 네트워크로 확산됩니다.
일반적으로 공격자는 피싱 이메일로 대상 시스템을 감염시키지만, WannaCry는 달랐습니다. 외부에 노출된 SMB 포트를 표적으로 삼았고, NSA 유출로 알려진 EternalBlue 익스플로잇을 이용해 네트워크에 침입한 뒤, DoublePulsar 익스플로잇을 사용해 지속적인 접근 권한을 확보하고 WannaCry 랜섬웨어 설치를 지원한 것으로 알려져 있습니다.
왜 그렇게 강력할까?
더 큰 피해를 일으키려면 웜(worm) 형태의 감염체는 스스로 계속 확산되어야 합니다. 적은 노력으로 배가되는 결과를 얻기 위해서입니다. 바로 이 지점에서 SMB 취약점이 활용됩니다. 연결된 시스템들을 통해 측면(lateral)으로 빠르게 퍼져나갈 수 있기 때문입니다.
SMB 같은 불필요한 프로토콜은 해커에게 시스템을 노출시킬 수 있으므로 비활성화하고, 네트워크 세그먼트화(network segmentation)를 적용하는 것이 좋습니다. 또한 모든 시스템을 최신 운영체제 버전으로 유지하고 보안 업데이트 패치를 제때 적용하는 것도 권장됩니다.
SMB 설정은 모든 시스템에서 기본적으로 활성화되어 있지만, 반드시 필요하지 않은 경우가 많습니다. 따라서 사용하지 않는다면 SMB1과 기타 통신 프로토콜을 비활성화하는 것이 좋습니다.
WannaCry는 단 두 가지 사이버 도구만으로 SMB 취약점을 악용했습니다. 그런데 SMB 취약점을 이용한 랜섬웨어 공격은 이것이 유일하지 않습니다. 다가오는 웜인 EternalRocks는 무려 7개의 사이버 도구를 갖추고 전 세계 시스템을 감염시킬 것으로 예상됩니다.
EternalRocks는 EternalBlue, EternalChampion, EternalSynergy, EternalRomance라는 강력한 Server Message Block 도구를 활용합니다. 또한 영향받은 컴퓨터를 감시하기 위해 SMBTouch와 ArchTouch라 불리는 SMB 정찰(reconnaissance) 도구도 사용합니다.
단 두 개의 도구를 지닌 웜이 세계적으로 큰 혼란을 일으켰다면, EternalRocks가 초래할 파괴의 규모는 짐작조차 어렵습니다.
공격은 어떻게 이루어졌나?
현재 EternalBlue, EternalChampion, EternalRomance라는 세 가지 익스플로잇이 공개되어 있으며, 이들은 SMB 취약점을 악용할 수 있습니다. EternalBlue는 WannaCry와 Emotet에 사용되었고, EternalRomance는 Bad Rabbit, NotPetya, TrickBot에 활용되었습니다. 이 외에 EternalSynergy라는 익스플로잇도 존재합니다.
ShadowBrokers라는 해커 그룹이 이 모든 익스플로잇을 유출했습니다. 유출 후 한 달이 채 지나지 않아 EternalBlue 익스플로잇이 사용되었고, WannaCry는 산불처럼 빠르게 확산되었습니다.
EternalRocks는 DoublePulsar를 백도어(backdoor)로 사용하여 감염된 시스템에 멀웨어를 설치합니다.
연구에 따르면 해당 백도어는 아직까지 보호되지 않은 상태이며, 다른 해커들도 이를 매개로 자신들의 멀웨어를 심어 시스템을 파괴할 수 있습니다.
이후 2017년에는 Bad Rabbit, NotPetya 등 대규모 멀웨어 공격들이 SMB 취약점을 이용해 조직 네트워크에 침투했습니다. 2018년 3~4분기에는 Emotet과 TrickBot 트로이 목마 공격이 정점을 찍었습니다.
SMB 버전 1과 그 취약점에 대해 충분히 살펴봤습니다. 결론은 간단합니다. SMB1을 사용하고 있지 않다면, 없는 편이 훨씬 안전합니다.
다음 섹션에서는 Windows에서 SMB1을 탐지하고, 활성화 또는 비활성화하는 방법을 알아보겠습니다. 그럼 시작해 보겠습니다!
Windows에서 SMB1 탐지 및 활성화/비활성화 방법
방법 1: PowerShell을 사용해 Windows 8.1 및 Windows 10에서 SMB v1 프로토콜 탐지, 활성화/비활성화하기
탐지 방법
Windows 키 + X를 눌러 시작 메뉴 위의 컨텍스트 메뉴를 엽니다.

목록에서 'Windows PowerShell(관리자)'을 찾습니다.
참고: 검색 창에 'PowerShell'을 입력해서도 PowerShell을 실행할 수 있습니다. 'Windows PowerShell'을 선택하고 마우스 오른쪽 버튼을 클릭한 후 '관리자 권한으로 실행'을 선택하세요.

PowerShell 창에 다음 명령어를 입력합니다.
Get-WindowsOptionalFeature –Online –FeatureName SMB1Protocol
비활성화 방법
- Windows 키 + X를 눌러 시작 메뉴 위의 컨텍스트 메뉴를 엽니다.
- 목록에서 'Windows PowerShell(관리자)'을 찾습니다.

참고: 검색 창에 'PowerShell'을 입력해서도 PowerShell을 실행할 수 있습니다. 'Windows PowerShell'을 선택하고 마우스 오른쪽 버튼을 클릭한 후 '관리자 권한으로 실행'을 선택하세요.

- PowerShell 창에 다음 명령어를 입력합니다.
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

활성화 방법
- Windows 키 + X를 눌러 시작 메뉴 위의 컨텍스트 메뉴를 엽니다.
- 목록에서 'Windows PowerShell(관리자)'을 찾습니다.

참고: 검색 창에 'PowerShell'을 입력해서도 PowerShell을 실행할 수 있습니다. 'Windows PowerShell'을 선택하고 마우스 오른쪽 버튼을 클릭한 후 '관리자 권한으로 실행'을 선택하세요.

- PowerShell 창에 다음 명령어를 입력합니다.
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

변경 사항을 적용하려면 Y를 입력합니다.
방법 2: Windows 기능 켜기/끄기를 통해 SMB1 비활성화/활성화하기
1단계: 시작 버튼을 클릭하고 '제어판(Control Panel)'을 입력합니다. 제어판 데스크톱 앱이 나타나면 클릭합니다.

2단계: '프로그램 및 기능(Programs & Features)'을 찾아 클릭합니다.

3단계: 시스템에 설치된 소프트웨어 목록이 담긴 창이 열립니다. 왼쪽 패널에서 'Windows 기능 켜기/끄기(Turn Windows Features On or Off)'를 클릭합니다.

4단계: SMB1을 완전히 비활성화하려면 'SMB 1.0/CIFS 파일 공유 지원' 옆의 체크 표시를 제거합니다. 활성화하려면 동일한 항목에 체크 표시를 하면 됩니다.

방법 3: 레지스트리 편집기를 사용해 SMB1 활성화/비활성화하기
레지스트리 편집기를 통해서도 SMB1을 활성화하거나 비활성화할 수 있습니다. 진행하기 전에 반드시 레지스트리 편집기를 백업하세요.
참고: 백업하려면 다음 단계를 따르세요.
1단계: Windows 키 + R을 누른 후 regedit을 입력하고 Enter 키를 누릅니다.

2단계: 레지스트리 편집기에서 파일(File) → 내보내기(Export)로 이동합니다.

3단계: 원하는 위치에 레지스트리 파일 백업본을 저장할 수 있는 창이 열립니다.

Windows에서 SMBv1을 활성화/비활성화하려면 다음 단계를 따르세요.
1단계: Windows 키 + R을 누른 후 regedit을 입력하고 Enter 키를 누릅니다.

2단계: 레지스트리 편집기에서 다음 경로로 이동합니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

3단계: 오른쪽 패널에서 레지스트리 항목 'SMB1'을 찾습니다.
- REG_DWORD 값이 0이면 비활성화 상태입니다.
- REG_DWORD 값이 1이면 활성화 상태입니다.
값을 확인하려면 SMB1을 마우스 오른쪽 버튼으로 클릭하고 '수정(Modify)'을 선택한 뒤 값 데이터(Value Data)를 확인하세요.
참고: SMB(DWORD) 항목이 없다면 새로 만들 수 있습니다. 오른쪽 패널의 빈 곳을 마우스 오른쪽 버튼으로 클릭하고, '새로 만들기(New)'를 선택한 후 DWORD를 클릭합니다. 해당 키의 이름을 SMB1로 지정합니다.

참고: 이러한 변경을 적용한 후에는 컴퓨터를 재시작해야 합니다.
시스템이 악성 공격을 받았다고 의심되거나, 미래의 공격을 미리 차단하고 싶다면 Systweak의 Advanced System Protector 같은 보호 도구를 설치할 수 있습니다. Advanced System Protector는 안티멀웨어, 안티스파이웨어, 안티바이러스 기술이 결합된 올인원 솔루션으로, 시스템에 존재하는 모든 감염을 퇴치합니다.

또한 데이터를 안전하게 보관하려면 항상 시스템 백업을 생성하는 것이 좋습니다. 데이터 백업 도구는 매우 다양하지만, 올바른 도구를 선택하는 것이 중요합니다. Right Backup은 SSL 암호화를 지원하는 가장 신뢰할 수 있는 데이터 백업 도구 중 하나입니다. 보유한 모든 기기에서 데이터에 접근할 수 있으며, 데이터를 업로드하기만 하면 백업 서비스가 안전한 클라우드 서버에 보관해 줍니다.
이상으로 Server Message Block(SMB1)을 손쉽게 비활성화/활성화하는 방법을 알아봤습니다. 보안 문제는 새로운 이야기가 아니지만, WannaCry 랜섬웨어가 초래한 피해는 경각심을 일깨우는 계기가 되어야 합니다. WannaCry는 Windows 운영체제의 SMB1 서비스 취약점을 이용해 공격을 시작했기 때문입니다. Microsoft 역시 보안상의 이유로 SMB1 비활성화를 권장하고 있으므로, 이를 비활성화해 두면 랜섬웨어로부터 시스템을 보호하는 데 큰 도움이 됩니다.
또한 데이터의 안전과 시스템 보호를 위해 Right Backup과 Advanced System Protector를 활용해 보세요.
이 글이 도움이 되었다면 아래 댓글로 의견을 남겨주세요!