상세 컨텐츠

본문 제목

[해외보안동향] MS15-011 – 마이크로소프트 그룹정책, SMB MITM 공격에 취약

국내외 보안동향

by 알약(Alyac) 2015. 6. 3. 16:56

본문

MS15-011 – 마이크로소프트 그룹정책, SMB MITM 공격에 취약


2015년 2월, MS는 보안공지을 통해 그룹 정책의 취약점으로 인한 원격 코드 실행 문제를 패치하였다고 발표했습니다. (자세히 보기 ▶)


MS15-011 취약점은 원격 코드 실행 취약점입니다. 공격자가 해당 취약점을 악용하면 시스템을 완전히 제어할 수 있으며, 프로그램 설치뿐만 아니라 데이터 열람, 변경 및 삭제가 가능합니다. 더불어 모든 사용자 권한이 있는 새 계정을 만들 수도 있습니다.

그러나 패치만 설치하고 강화 UNC 경로(Hardened UNC Paths)를 설정하지 않은 경우에는 여전히 MS15-011 취약점의 영향을 받을 수 있는 것으로 확인되었습니다. 따라서 아래의 안내글 내용 중 '그룹 정책을 통해 UNC Hardened Access(UNC 강화 액세스) 구성' 부분부터 확인하신 후, 올바르게 설정할 것을 권장해 드립니다.

MS15-011: 그룹 정책의 취약성으로 인한 원격 코드 실행 문제 안내글  https://support.microsoft.com/ko-kr/kb/3000483


취약점 상세 설명


※ 취약점 설명

컴퓨터가 도메인에 연결할 시, 클라이언트는 SMB를 통해 도메인 컨트롤러에게 새로운 정책을 (GPOs) 요청합니다. 클라이언트가 요청하는 파일은 일반적으로 

\\DOMAIN_CONTROLLER\SysVol\corp.contoso.com\Policies\{UUID}에 위치한 'gpt.ini' 파일입니다.


해당 파일의 내용은 아래와 같습니다


[General] 

Version=12345


클라이언트가 해당 파일을 받으면, 먼저 버전 정보를 확인합니다. 만일 이전 버전과 다른 경우에는 도메인 컨트롤러로부터 새로운 정책을 내려받습니다. 이러한 일련의 과정은 도메인 컨트롤러가 정상적인 서버라는 것을 가정하고 진행되는 것입니다. 
   
하지만 이때, MITM 공격을 받아, 클라이언트가 현재 연결된 도메인 컨트롤러가 조작된 도메인 컨트롤러라면 어떻게 될까요?

※ 공격 과정
일반적으로, 작은 네트워크에서는 클라이언트와 도메인 컨트롤러가 동일한 네트워크에 존재합니다. 그러므로 스위치나 컴퓨터가 ARP 스푸핑 공격을 받는다면 클라이언트와 도메인 컨트롤러 사이에서 MITM 공격이 가능해지는 것입니다. 만일 도메인 컨트롤러가 클라이언트와 동일한 네트워크에 존재하지 않는다면, 공격자는 ARP 스푸핑 공격을 통해 스위치와 호스트의 ARP Cache Table을 감염시킨 후 게이트웨이에 등록되어 있는 MAC 주소를 공격자의 주소로 바꾸어 자신이 도메인 컨트롤러인 것처럼 위장할 수 있습니다.

만약 위와 같은 공격을 통해 정책 업데이트가 가짜 도메인 컨트롤러에 연결되었을 경우, 클라이언트에 악성 정책을 내려주어 윈도우 레지스트리 키를 수정할 수 있으며 '시스템' 유저의 권한으로 타겟 내 코드를 실행시킬 수 있습니다.

시스템 유저 권한으로 코드를 실행시키는 이유는 GPO가 윈도우 서비스로부터 제공되기 때문입니다. GPO 업데이트를 통해 'GptTmpl.inf'라는 파일이 다운로드된 경우, 윈도우 레지스크리 키를 추가/수정/삭제할 수 있는 '[Registry Valyes]' 라는 섹션이 포함되어 있습니다. 

※ Core Impact Pro의 exploit
해당 취약점을 통한 공격의 목표는 한 개의 모듈을 이용해 전체 공격을 조정하여 사용자의 어떠한 파라미터도 지나치지 않게 하는 것입니다. 이러한 공격이 성공하기 위해서는 총 4가지의 공격이 선행되어야 하며, 각 모듈은 아래와 같은 역할을 수행합니다.  

1. 디폴트 게이트웨이 스푸퍼
이 모듈은 ARP 스푸핑을 통해 동일한 네트워크에 존재하는 타겟의 ARP Cache Table을 조작합니다. 또한, DHCP 서버에 요청하여 디폴트 게이트웨이의 주소를 자동으로 얻는 역할을 수행합니다. 일단 타겟이 디폴트 게이트웨이 스푸퍼에 의해 변조되면, 디폴트 게이트웨이 및 도메인 컨트롤러로 전송되는 모든 네트워크 트래픽이 가짜 디폴트 게이트웨이, 즉 공격자에게로 수신됩니다. 공격자는 타겟이 변조 사실을 인지하지 못하도록 자신에게 들어오는 모든 네트워크 트래픽을 다시 디폴트 게이트웨이로 포워딩합니다. 

2. 포트 포워드 정책 매니저
TCP/UDP를 다른 목적지로 리다이렉트시키도록 디폴트 게이트웨이의 정책을 수정합니다. 이 공격의 경우, SMB 연결은 가짜 SMB 서버로 포워딩될 것입니다. 디폴트 게이트웨이 스푸퍼 모듈은 PCAP을 사용하는 네트워크로부터 데이터를 내려받고, impacket을 이용하여 네트워크 패킷을 분해합니다. 이후 패킷의 필드를 수정하여 TCP연결을 다른 IP로 리다이렉트시킵니다. 

3. 가짜 'SMB' 서버
위에서 언급한 것과 같이 취약점을 이용하면 클라이언트는 가짜 SMB서버로부터 새로운 정책을 내려받기 때문에 공격을 위해서는 가짜 SMB 서버가 필요합니다. 공격이 Windows에서 실시되는 경우, '\SysVol\corp.contoso.com\Policies\{UUID}'폴더를 런타임에 UUID를 얻어야 하는 위치에 공유할 것입니다. 만약 공격이 리눅스에서 실시되었을 경우에는 Samba를 사용할 수 있습니다. 일반적으로 최선의 선택은 445번 포트대신 TCP포트에서 리스닝하는 이동식 SMB 서버에 SMB 연결을 리다이렉트 시키는 것입니다. 이러한 방법을 이용하면 윈도우에서 445 TCP 포트를 재사용할 때 발생하는 문제들을 피할 수 있습니다

4. 취약점 악용
공격을 통해 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows'에 위치하는 'AppInit_DLL' 레지스트리 키를 덮어쓰기 합니다. 이 키는 프로그램이 실행될 때마다 윈도우가 사용하며, 실행 중 프로세스 메모리에 DLL 인젝션을 허용합니다. 공격의 한 예로, '\\DOMAIN_CONTROLLER\evil.dll'을 사용하면 요청된 DLL은 가짜 SMB 서버로 리다이렉트됩니다. 이 공격에 성공하는 경우 취약점을 가지고 있는 모든 컴퓨터에 설치되며 '시스템 유저'로서 실행되는 impact 에이전트들이 감염된 도메인 컨트롤러에 접속하게 됩니다

일반적인 시나리오의 공격과정을 정리하자면 아래와 같습니다. 타겟과 공격자가 디폴트 게이트웨이에 직접 연결되어 있는 환경에서, ARP 스푸핑 공격을 통하여 타겟을 속여, 중간자 공격을 실시합니다.



타겟은 도메인 컨트롤러에게 새로운 GPO를 요청하면 해당 GPO 요청을 받은 가짜 SMB 서버로 리다이렉트되며 가짜 GPO를 내려받게 됩니다


MS는 해당 문제와 관련하여 클라이언트 측에 추가적인 패치를 진행하기로 했습니다. 즉, 강제로 클라이언트 측 SMB 커넥션에서 'SMB Signing'을 통해 해당 도메인 컨트롤러가 진짜인지 아닌지를 확인하도록 수정한 것입니다. 그러나 해당 기능은 기본 설정이 아니므로 더욱 자세한 설명은 해당 페이지를 참고해주시기 바랍니다. (참고 )



참고:


관련글 더보기

댓글 영역