2020.03.17

자급자족(LotL) 공격에서 윈도우를 보호하는 방법

Susan Bradley | CSO
최근 RSA 행사의 주요 주제 중 하나가 ‘공격자가 피해자의 윈도우 운영체제를 사용해 탐지를 피하는 방법’이었다. 이 자급자족(Living off the Land, LotL) 공격 개념은 사용자 시스템에서 기존의 바이너리, DLL 등의 컴퓨터 코드를 사용해 시스템 보호를 더 어렵게 만드는 것이 특징이다.

이런 바이너리는 마이크로소프트 운영체제에 기본 제공되거나 마이크로소프트 웹사이트에서 내려받을 수 있다. 이 바이너리에는 흥미롭거나 의도하지 않은 기능이 있을 수 있는데, 예를 들어 지속성, 사용자 계정 컨트롤(UAC) 우회, 자격증명 등은 공격자가 주목하는 기능이다. LOLBQW 사이트에서 바이너리에 대해 가능한 공격과 사용 목록을 확인할 수 있다.

예를 들어 공격자는 rpcping 명령으로 자격 증명을 캡처할 수 있다. 대상 서버(-s)에 원격 프로시저 호출(remote procedure call, RPC) 테스트 연결을 보내고, 그 과정에서 NTLM(NT LAN Manager) 해시를 강제로 보낼 수 있다. rpcping -s 127.0.0.1 -e 1234 -a privacy -u NTLM 명령을 사용하면 공격자가 암호 해시를 수집할 수 있다.

공격에 자주 사용되는 또 다른 예는 시스템을 보호하고 패치하는 툴이다. 마크로소프트가 업데이트 프로세스를 제공하고 관리하는 데 사용하는 BITS(Background Intelligent Transfer Service)가 대표적이다. 공격자는 BITS를 통해 악성 파일을 전송하고, 대체 데이터 스트림을 생성하거나 파일을 복사 및 실행한다.
 

LotL(Living off the Land) 공격을 막는 방법

그렇다면 이런 공격을 어떻게 방어할 수 있을까? 보안 부서를 둔 대기업에서는 레드팀과 블루팀 자원을 사용할 수 있다. 일반적으로 레드팀은 공격자를 모방해 시스템의 결함이나 약점을 식별한다. 블루팀은 공격자를 방어하고 기업의 보안 설정과 태도를 개선한다. 다음으로 블루와 레드팀의 자원을 혼합한 퍼플팀을 활용해 모든 직원에게 공격 순서를 교육해야 한다. 이 두 팀 간의 유기적 협력을 통해 기업은 공격을 더 잘 인식하고 적절한 경보를 받을 수 있다.

애플리케이션 화이트리스트를 신중하게 사용하는 것도 LotL 공격을 막는 데 중요하다. 윈도우 10 앱라커(AppLocker)를 이용하면 원하는 애플리케이션만 허용하도록 설정할 수 있고, 윈도우 10 엔터프라이즈에서 사용할 수 있다. UAC는 개발자에게 로컬 관리 권한 요구를 중지하도록 훈련하는 툴이다. 이와 마찬가지로 운영 시스템을 승인된 바이너리만 실행하는 위치로 잠그는 것은 많은 보안 담당자의 목표지만, 모두가 이렇게 구현할 수 있는 것은 아니다.

공격자가 운영체제에서 악용할 수 있는 또 다른 도구는 파워셸(PowerShell)이다. 악의적인 파워셸 스크립트를 방어하려면 먼저 서명된 스크립트만 허용하도록 파워셸 실행 정책을 설정해야 한다. 그룹 정책을 설정해 파워셸을 제어하는 방법은 다음과 같다.
 
  1. “컴퓨터 구성”으로 이동한다.
  2. “정책”으로 이동한다.
  3. “관리 템플릿”으로 이동한 다음 “윈도우 구성요소”로 이동한다.
  4. “윈도우 파워셸”로 이동 후 “스크립트 실행 켜기”라는 설정을 찾는다.
  5. “사용”을 켜고 “서명된 스크립트만 허용”을 선택한다.
 
서명된 스크립트만 실행하도록 파워셸 설정하기

또한 모듈 로깅, 파워셸 스크립트 블록 로깅, 파워셸 트랜스크립션(Transcription)에 대한 정책을 설정해 실행 중에 발생하는 작업의 보안을 높인다. 환경에서 파워셸 사용 후 로깅을 검토해 무엇이 정상인지 확인할 수 있다.
 
활성화시 로깅 설정하기

많은 보안 사이트에서는 파워셸이 필요 없을 때는 시스템에서 제거하기를 권장한다. 그러나 필자는 최후의 수단으로 그리고 배포 후 상호작용할 필요가 없는 시스템에서만 파워셸을 제어해야 한다고 생각한다. 시스템에서 파워셸을 완전히 제거하면 시스템 관리와 제어 기능에 영향을 끼친다. 파워셸을 삭제하는 대신 보안을 강화하는 마이크로소프트 권장 사항은 다음과 같다.
 
  • 윈도우 10에 기본 제공되는 파워셸 v5.1 이상을 배포한다. 또는 윈도우 관리 프레임워크(Windows Management Framework, WMF)를 설치하면 된다. 파워셸이 포함되어 있으며 마이크로소프트 다운로드 센터에서 다운로드받을 수 있다. 윈도우 7, 윈도우 서버 2008r2 버전에도 포함돼 있다.
  • 파워셸 로그를 활성화하고 수집한다. 보호 이벤트 로깅을 선택적으로 포함한다. 이 로그를 서명, 헌팅, 사고 대응 워크플로우에 통합한다.
  • 중요한 시스템에 대해 JEA(Just Enough Administration)를 구현해 해당 시스템에 대한 제한 없는 관리 액세스를 제거하거나 줄인다. JEA는 파워셸이 관리하는 모든 항목에 대해 위임된 관리를 구현하는 보안기술이다.
  • 장치 보호/애플리케이션 제어 정책을 배포해, 사전 승인된 관리 작업만이 파워셸 언어의 전체 기능을 사용하도록 한다. 또한 상호 작용과 승인되지 않은 사용은 파워셸 언어의 제한된 하위 집합으로 제한한다.
  • 윈도우10을 배포해 바이러스 백신 업체가 파워셸을 포함한 윈도우 스크립팅 호스트에서 처리한 모든 콘텐츠에 대한 엑세스를 할 수 있도록 권한을 부여한다. 런타임에 생성되거나 난독 처리가 제거된 콘텐츠도 포함한다.

마지막으로 윈도우 디펜더 ATP(Windows Defender Advanced Threat Protection, WDATP)가 포함된 윈도우 10 E5 또는 마이크로소프트 365 E5로 업그레이드한다. ATP를 통해 시스템의 활동을 검토해 이상을 판단할 수 있다.
 
운영체제의 ATP 활동 검토

실수하면 안 된다. 운영체제가 무엇을 하고 있는지 이해하는 것은 어려울 수 있다. 시스템과 네트워크의 정상 유무를 이해하는 시간을 가져야 한다. 시스템을 보호하기 위해 가야 할 길이 멀다. editor@itworld.co.kr


2020.03.17

자급자족(LotL) 공격에서 윈도우를 보호하는 방법

Susan Bradley | CSO
최근 RSA 행사의 주요 주제 중 하나가 ‘공격자가 피해자의 윈도우 운영체제를 사용해 탐지를 피하는 방법’이었다. 이 자급자족(Living off the Land, LotL) 공격 개념은 사용자 시스템에서 기존의 바이너리, DLL 등의 컴퓨터 코드를 사용해 시스템 보호를 더 어렵게 만드는 것이 특징이다.

이런 바이너리는 마이크로소프트 운영체제에 기본 제공되거나 마이크로소프트 웹사이트에서 내려받을 수 있다. 이 바이너리에는 흥미롭거나 의도하지 않은 기능이 있을 수 있는데, 예를 들어 지속성, 사용자 계정 컨트롤(UAC) 우회, 자격증명 등은 공격자가 주목하는 기능이다. LOLBQW 사이트에서 바이너리에 대해 가능한 공격과 사용 목록을 확인할 수 있다.

예를 들어 공격자는 rpcping 명령으로 자격 증명을 캡처할 수 있다. 대상 서버(-s)에 원격 프로시저 호출(remote procedure call, RPC) 테스트 연결을 보내고, 그 과정에서 NTLM(NT LAN Manager) 해시를 강제로 보낼 수 있다. rpcping -s 127.0.0.1 -e 1234 -a privacy -u NTLM 명령을 사용하면 공격자가 암호 해시를 수집할 수 있다.

공격에 자주 사용되는 또 다른 예는 시스템을 보호하고 패치하는 툴이다. 마크로소프트가 업데이트 프로세스를 제공하고 관리하는 데 사용하는 BITS(Background Intelligent Transfer Service)가 대표적이다. 공격자는 BITS를 통해 악성 파일을 전송하고, 대체 데이터 스트림을 생성하거나 파일을 복사 및 실행한다.
 

LotL(Living off the Land) 공격을 막는 방법

그렇다면 이런 공격을 어떻게 방어할 수 있을까? 보안 부서를 둔 대기업에서는 레드팀과 블루팀 자원을 사용할 수 있다. 일반적으로 레드팀은 공격자를 모방해 시스템의 결함이나 약점을 식별한다. 블루팀은 공격자를 방어하고 기업의 보안 설정과 태도를 개선한다. 다음으로 블루와 레드팀의 자원을 혼합한 퍼플팀을 활용해 모든 직원에게 공격 순서를 교육해야 한다. 이 두 팀 간의 유기적 협력을 통해 기업은 공격을 더 잘 인식하고 적절한 경보를 받을 수 있다.

애플리케이션 화이트리스트를 신중하게 사용하는 것도 LotL 공격을 막는 데 중요하다. 윈도우 10 앱라커(AppLocker)를 이용하면 원하는 애플리케이션만 허용하도록 설정할 수 있고, 윈도우 10 엔터프라이즈에서 사용할 수 있다. UAC는 개발자에게 로컬 관리 권한 요구를 중지하도록 훈련하는 툴이다. 이와 마찬가지로 운영 시스템을 승인된 바이너리만 실행하는 위치로 잠그는 것은 많은 보안 담당자의 목표지만, 모두가 이렇게 구현할 수 있는 것은 아니다.

공격자가 운영체제에서 악용할 수 있는 또 다른 도구는 파워셸(PowerShell)이다. 악의적인 파워셸 스크립트를 방어하려면 먼저 서명된 스크립트만 허용하도록 파워셸 실행 정책을 설정해야 한다. 그룹 정책을 설정해 파워셸을 제어하는 방법은 다음과 같다.
 
  1. “컴퓨터 구성”으로 이동한다.
  2. “정책”으로 이동한다.
  3. “관리 템플릿”으로 이동한 다음 “윈도우 구성요소”로 이동한다.
  4. “윈도우 파워셸”로 이동 후 “스크립트 실행 켜기”라는 설정을 찾는다.
  5. “사용”을 켜고 “서명된 스크립트만 허용”을 선택한다.
 
서명된 스크립트만 실행하도록 파워셸 설정하기

또한 모듈 로깅, 파워셸 스크립트 블록 로깅, 파워셸 트랜스크립션(Transcription)에 대한 정책을 설정해 실행 중에 발생하는 작업의 보안을 높인다. 환경에서 파워셸 사용 후 로깅을 검토해 무엇이 정상인지 확인할 수 있다.
 
활성화시 로깅 설정하기

많은 보안 사이트에서는 파워셸이 필요 없을 때는 시스템에서 제거하기를 권장한다. 그러나 필자는 최후의 수단으로 그리고 배포 후 상호작용할 필요가 없는 시스템에서만 파워셸을 제어해야 한다고 생각한다. 시스템에서 파워셸을 완전히 제거하면 시스템 관리와 제어 기능에 영향을 끼친다. 파워셸을 삭제하는 대신 보안을 강화하는 마이크로소프트 권장 사항은 다음과 같다.
 
  • 윈도우 10에 기본 제공되는 파워셸 v5.1 이상을 배포한다. 또는 윈도우 관리 프레임워크(Windows Management Framework, WMF)를 설치하면 된다. 파워셸이 포함되어 있으며 마이크로소프트 다운로드 센터에서 다운로드받을 수 있다. 윈도우 7, 윈도우 서버 2008r2 버전에도 포함돼 있다.
  • 파워셸 로그를 활성화하고 수집한다. 보호 이벤트 로깅을 선택적으로 포함한다. 이 로그를 서명, 헌팅, 사고 대응 워크플로우에 통합한다.
  • 중요한 시스템에 대해 JEA(Just Enough Administration)를 구현해 해당 시스템에 대한 제한 없는 관리 액세스를 제거하거나 줄인다. JEA는 파워셸이 관리하는 모든 항목에 대해 위임된 관리를 구현하는 보안기술이다.
  • 장치 보호/애플리케이션 제어 정책을 배포해, 사전 승인된 관리 작업만이 파워셸 언어의 전체 기능을 사용하도록 한다. 또한 상호 작용과 승인되지 않은 사용은 파워셸 언어의 제한된 하위 집합으로 제한한다.
  • 윈도우10을 배포해 바이러스 백신 업체가 파워셸을 포함한 윈도우 스크립팅 호스트에서 처리한 모든 콘텐츠에 대한 엑세스를 할 수 있도록 권한을 부여한다. 런타임에 생성되거나 난독 처리가 제거된 콘텐츠도 포함한다.

마지막으로 윈도우 디펜더 ATP(Windows Defender Advanced Threat Protection, WDATP)가 포함된 윈도우 10 E5 또는 마이크로소프트 365 E5로 업그레이드한다. ATP를 통해 시스템의 활동을 검토해 이상을 판단할 수 있다.
 
운영체제의 ATP 활동 검토

실수하면 안 된다. 운영체제가 무엇을 하고 있는지 이해하는 것은 어려울 수 있다. 시스템과 네트워크의 정상 유무를 이해하는 시간을 가져야 한다. 시스템을 보호하기 위해 가야 할 길이 멀다. editor@itworld.co.kr


X