SMB 프로토콜

Danie_K ㅣ 2024. 4. 30. 22:53

반응형

동작원리

  • SMB(Server Message Block) 프로토콜은 클라이언트와 서버 간에 파일, 프린터 공유, 그리고 일반 교신을 위한 프로토콜이다. 클라이언트는 자원에 접근하기 위해 서버에 요청(request)을 보내고, 서버는 이 요청에 답변(response)하여 자원에 대한 접근을 제공한다.

데이터 처리와 버퍼 오버플로우 발생

  • 프로그램이나 시스템은 데이터를 메모리에 저장하면서 처리하는데 메모리 상에서 데이터를 저장할 때, 각 데이터를 저장하기 위한 공간(버퍼)를 할당한다. 그러나 개발할 때 예상보다 더 많은 데이터가 버퍼에 들어오거나, 프로토콜 구현에 있어서 데이터 길이가 적절하게 검증되지 않는 경우, 데이터가 할당된 버퍼를 초과하여 인접 메모리 영역에까지 침범할 수 있다. 이것이 바로 '버퍼 오버플로우’이다.

버퍼 오버플로우 및 SMB 취약점

  • SMB v1 같은 경우에는 특정 구현에서 이러한 부분이 취약하게 처리되어, 악의적으로 조작된 SMB 패킷을 서버에 보내면, 서버는 이 패킷을 정상적인 것으로 인식하고 처리하려 할 때, 버퍼 오버플로우가 발생할 수 있다. 악의적인 사용자는 이러한 상황을 이용하여, 메모리 상에서 원하는 코드 영역에 접근하고, 그 영역을 조작하여 임의의 코드를 실행시킬 수 있다.

여기서 SMB 프로토콜의 취약점에 영향을 준 특정 구현의 부분은 거의 메모리 관리와 데이터 길이 검증의 미흡함에 관련된다 특히, 여러 보안 문제가 발생했던 SMB 프로토콜의 v1 에서는 다음과 같은 부분들이 문제가 된다.

  1. 데이터 길이 검증 부족
    • SMB 메시지를 처리할 때, 메시지의 길이 검증이 충분히 이루어지지 않아서 공격자는 이를 이용하여 헤더의 길이 필드와 실제 데이터 길이 사이에 불일치를 만들어냄으로써 시스템을 속이고 버퍼 오버플로우를 유발 할 수 있다.
  2. 메모리 관리 취약점
    • 메모리 할당과 해제 과정에서의 취약점을 통해 공격자는 악성 코드가 메모리내에서 실행될 수 있는 환경을 조성할 수 있다 특히, 잘못 관리된 메모리 영역을 조작함으로써 원격 코드 실행이 가능하다.
  3. 세부 핸들링 오류
    • SMB 프로토콜의 세부적인 처리 과정에서 발생하는 오류도 문제의 원인이 될 수 있다 예를 들어 특정 SMB 요청에 대한 서버의 응답 처리 방식에서 예외적인 상황이 제대로 처리되지 않아 공격자가 이를 이용할 여지가 있다.

이를 이용한 취약점 공격방법이 EternalBlue이며 이 취약점(CVE-2017-0144)을 이용하면 원격 공격자가 대상 컴퓨터에 임의의 코드를 실행할 수 있으며, 이를 통해 시스템을 제어하거나 악성 스프트웨어를 설치할 수 있다.

가장 유명한 사례로 WannaCry 랜섬웨어 공격이있으며 이 공격은 전 세계적으로 큰 피해를 준적이 있다. EternalBlue는 공격자가 특별히 조작된 SMB 패킷을 사용하여 대상 시스템의 취약한 SMB v1 서비스에 공격을 가하는 방식으로 작동한다.

즉 SMB 프로토콜의 구현에 있는 메모리 처리 오류를 악용하여 버퍼 오버플로를 발생시키고, 이를 통해 원격 코드 실행을 가능하게 한다.

이 취약점에 대한 대응으로는 Microsoft에서 제공한 MS17-010 보안 업데이트를 적용하는 것이 가장 중요하며 가능하다면 SMB v1을 사용하지 않고 더 안전한 SMB v2나 SMB v3로 전환하는 것을 권장한다.

반응형