[0x00] Introduction
SMBv3 의 취약점인 “SMBGhost”는 최신 버전(SMB 3.1.1)을 사용하여 네트워크 공유 시 복제 및 확산이 가능한 “Wormable” 취약점입니다.(McAfee)
“SMB”란 서버 메시지 블록(Server Message Block)으로 파일이나 디렉터리 및 주변 장치들을 공유할 때 사용하는 프로토콜입니다. 쉽게 윈도우 공유 폴더를 생각할 수 있습니다.
해당 취약점이 발생하는 원인은 조작된 SMB 헤더와 커널에서 사용하는 srv2.sys 드라이버 내 Srv2DecompressData
함수에서 정수 오버플로로 인해 발생합니다. 이 때 사용되는 헤더가 SMB2_COMPRESSION_TRANSFORM_HEADER
입니다.
MS-SMB2
에 있는 가이드에 따르면 아래와 같이 정의되어 있습니다.(링크)
여기서 주의깊게 봐야하는 필드는 OriginalCompressedSegmentSize
, Offset/Length
필드입니다.
여러가지의 분석 문서를 확인하였고, 이를 토대로 직접 분석하였습니다.
현재 환경이 취약한 환경인지 확인하기 위해 총 2가지의 스캐너를 이용하였습니다.
- https://github.com/ioncodes/SMBGhost
- https://github.com/cve-2020-0796/cve-2020-0796
위의 스캐너를 통해 확인한 결과는 아래와 같습니다.
[0x01] Requirements
취약점에 대한 분석을 위해 아래와 같은 환경을 구축하여 분석을 진행하였습니다.
[-] Virtual Machine
가상머신에 대한 정보와 해당 머신에서 사용하는 도구 목록입니다.
- Guest OS : Windows 10, 1903(OS Build 18362.30)
[-] Host Machine
실습을 진행하는 호스트 OS의 정보 및 도구 목록입니다.
- Host OS : Windows 10 x64, 1909(OS Build 18363.720)
- Tools
- Debugger & Disassembler : Windbg, IDA Pro
- Visual Studio 2019 Community
- Packet Analyzer : Wireshark
[0x02] Feedback
수정해야 할 내용이 있거나 잘못된 내용이 있다면 상단에 Feedback
을 이용하여 메일을 주시면 감사하겠습니다.