컴퓨팅/소프트웨어

SMBv1 프로토콜에서 새로운 보안 취약점(SMBLoris) 발견 및 해결책

epician 2017. 8. 1. 17:35

1. 취약점 개요

이미 한차례 몰아친 여러 랜섬웨어(워너크라이, 페트야)의 원인이 되기도 했던, 흔히 삼바라고 부르기도 하는 SMBv1 프로토콜의 새로운 취약점이 발견되었다. 아직 이 프로토콜을 시스템에서 제거하지 않아다면 바로 제거하기를 권장한다. 마이크로소프트에서도 올 가을에 내놓을 예정인 Windows 10의 새로운 업데이트판에서 이 프로토콜을 아예 제거할 계획이라고 한다.

[참고]
SMBv1 프로토콜은 DOS(OS)를 쓰던 시절에 만들어진 프로토콜로 이미 나온지 20년이 훌쩍 넘었다. 최근 버전은 v3.1.1까지 개정되었으나, 일부 가정용 네트워크 제품에 v1 처럼 오래된 프로토콜이 탑재되는 경우가 간혹 있다.

최근 열린 DEF CON 해커 컨퍼런스에서 공개된 새로운 취약점은 SMBLoris로 명명됐는데, 앞서 언급한 랜섬웨어의 모태격인 이터널블루(EternalBlue)를 분석하는 과정에서 이 취약점을 찾았다고 한다. 이 취약점으로 인해 DoS(Denial of Service; 서비스거부) 공격을 받을 수 있는데, Windows 2000까지의 모든 버전의 윈도우 OS가 이 공격의 영향을 받을 수 있다.

이 취약점을 찾아낸 연구자들이 6월초에 이 내용을 마이크로소프트에 이미 보고 했으나, 마이크로소프트는 내부검토 결과 이 취약점을 그렇게 심각하지 않은 평범한(moderate) 등급의 이슈로 분류했다고 한다. 그리고, 이 문제를 패치할 계획도 없다고 한다. 아마, 너무 오래된 프로토콜이라 이 문제점에 대응하기가 간단치 않아 보인다.

SMBLoris는 '라즈베리 파이'라는 초소형 컴퓨터 한대와 파이썬 코드 20줄 정도면 어지간한 서버 한 대를 쉽게 다운시킬 수 있다. 메모리 할당과 연관된 버그를 이용하는 것인데, 아래에 그 시연 영상이 있다.

현재까지 알려진 바로는 SMBv1 프로토콜만 이 공격이 가능하다고 한다. 따라서, 굳이 SMBv1 사용해야 할 이유가 없는 시스템이라면 당장 해당 프로토콜을 제거하는 것이 좋다.

2. SMBv1 제거 방법.

Windows 10 혹은 8.1 계열

  1. 제어판이나 시작메뉴 검색을 통해 '프로그램 및 기능 (Programs and Features)' 열기.
  2. 프로그램 및 기능의 왼쪽 패널에서 'Windows 기능 사용/사용 안함' 선택.
  3. Windows 기능 목록에서 'SMB 1.0/CIFS File Sharing Support (SMB 1.0/CIFS 파일공유 지원)'를 언체크(uncheck)하고 확인. 그 다음엔 리부팅.

Windows 7 계열

Windows 7 계열의 OS는 위 방법처럼 윈도우 구성요소에서 SMBv1을 제거할 수 없다. 여러 방법 가운데, 레지스트리 에디터를 통한 SMBv1의 사용을 차단하는 것이 가장 손쉽다.

  1. '시작메뉴 -> 실행'을 통해 레지스트리 에디터 실행 (regedit.exe)
  2. 레지스트리 에디터 왼쪽 트리에서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 키를 찾아서 선택한다.
  3. 선택된 키의 우측 목록에 SMB1 이라는 항목이 있는지 확인하고 없으면 마우스 오른쪽 버튼을 클릭하여 DWORD 값을 새로 만든다. 항목 이름은 SMB1이고 값은 0을 입력한다. 이렇게 하면 SMBv1 서버 기능이 차단된다.
  4. 레지스트리 에디터에서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10 키를 찾아서 선택한다.
  5. 우측 목록에서 Start 항목의 값을 4로 수정한다. 4는 '사용하지 않음'을 의미.
  6. 다시 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation 키를 찾아서 선택한다.
  7. 우측 목록에서 DependOnService 항목의 값을 수정하는데, 그 내용 가운데 MRxSmb10 한줄을 삭제한다. 보통 Bower, MRxSmb10, MRxSmb20, NSI 이렇게 4줄로 구성되어 있다.
  8. 모든 수정을 마치면 SMBv1 클라이언트 기능이 차단되며, 변경한 내용은 리부팅을 해야 적용된다.

더 자세한 내용은 마이크로소프트에서 공개한 기술문서를 참고하십시오.

https://support.microsoft.com/ko-kr/help/2696547/how-to-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and-windows