2020.07.28

RDP 하이재킹 공격의 개념 증명과 대응 방안

Ax Sharma |
악성코드 제작자가 선호하는 침투 수단 가운데 하나는 원격 데스크톱 프로토콜(Remote Desktop Protocol, RDP)이다. RDP는 시스템 관리자에게는 윈도우 시스템을 관리하는 편리하는 방법을 제공하고 사용자에게는 문제 해결에 도움을 준다.
 
ⓒ Getty Images Bank

RDP 하이재킹(RDP hijacking) 공격은 순수하게 취약점이나 비밀번호 피싱에 의존하기보다는 RDP 서비스의 정상적인 기능을 악용하는 경우가 많다. 실제로 워너크라이(WannaCry) 랜섬웨어는 RDP 세션을 하이재킹하고 각 세션에서 악성코드를 실행하기 위해 원격 데스크톱 세션을 나열한다.

RDP 하이재킹 공격은 공격자가 이전에 연결이 끊긴 RDP 세션을 “재개(resuming)”하는 방식으로 실행된다. 이 방법으로 공격자는 사용자의 인증 정보를 훔치지 않고도 특권으로 시스템에 침입할 수 있다. 예를 들어 관리자가 며칠전에 윈도우 서버 컴퓨터에 원격 접속했다면 공격자는 소셜 엔지니어링을 통해 관리자 계정 비밀번호를 알아낼 필요 없이, 훨씬 더 쉽게 이 세션을 “재개”할 수 있다.

세션이 하이재킹됐지만 이벤트 모니터 관점에서 보면 사실상 승인된 사용자이므로 일단 시스템으로 들어온 공격자는 발각되지 않은 채 횡적 이동으로 기업 네트워크를 탐색할 수 있다.


RDP 하이재킹 공격이 위험한 이유

RDP 하이재킹은 새로운 공격 수법이 아니다. 취약점이 아니라 수십년 전부터 존재해 온, 윈도우 RDP 서비스의 정상적인 기능을 악용하는 오래된 '기법(technique)'이다. 대다수 기업 네트워크가 RDP를 사용한 시스템 관리자로 윈도우와 윈도우 서버 시스템을 연결한다는 점을 감안하면 RDP 서비스의 위험과 동작을 반드시 잘 알아둬야 한다.

또한 재택근무가 증가하면서 RDP와 같은 원격 관리 툴에 대한 의존도가 높아졌고, 이것이 악의적인 공격자 관점에서 공격 표면의 일부를 형성하고 있다는 점도 유의해야 한다.


RDP 하이재킹 개념 증명

RDP 세션을 재개하는 방법은 여러가지다. RDP 하이재킹 기법은 침투 테스트 유틸리티인 미미캐츠(mimikatz)를 만든 벤자민 델피가 2011년에 처음으로 고안했다. 2017년 알렉산더 코즈니코브는 비교적 최신 버전의 윈도우 컴퓨터에서 델피가 고안한 방법을 특권 승격에도 사용할 수 있음을 입증했다.

- 비밀번호 없는 하이재킹
이번 기사에서는 윈도우에 포함된 Tscon.exe 유틸리티를 활용하는 RDP 하이재킹 기법에 초점을 맞춘다. 이 유틸리티는 사용자가 한 시스템의 다른 원격 데스크톱 세션에 연결하거나 여러 세션 사이를 전환할 수 있게 해준다.

명령의 구문은 간단하다. 마이크로소프트 지식 자료에서 볼 수 있는 각 매개변수 항목은 다음과 같다.

tscon {<SessionID> | <SessionName>} [/dest:<SessionName>] [/password:<pw> | /password:*] [/v]

가장 간단한 예시를 들자면 tscon 2다. 원격 데스크톱 세션을 호스팅 중인 서버에서 이 명령을 실행하면 사용자는 ID가 2인 세션에 연결되고 기존의 모든 세션에 대한 연결은 해제된다.

단, 마이크로소프트 지식 자료에는 “원격으로 소유된 콘솔 세션이 Tscon.exe를 사용해 컴퓨터의 물리적 콘솔로 전송되는 경우 세션은 잠금이 풀린 채로 남게 된다. 따라서 Tscon.exe를 사용할 때는 이전에 잠겨 있던 서버를 잠금 해제된 상태로 두지 않도록 주의를 기울여야 한다”는 경고문이 있다.
 
ⓒ IDG

다른 세션을 하이재킹하려면 공격자는 RDP 호스트에 연결해야 한다. 따라서 이 방법에는 일정 수준의 액세스가 필요하다. 공격자가 내부자일 수도 있지만(탈취된 직원 계정을 사용하는 경우가 아니라면) 이 수법의 심각성은 정교하게 연결된 APT(Advanced Persistent Threat) 공격의 일부를 형성할 수 있다는 점이다.

악성코드 등을 통해 하나의 시스템에 침투하면 공격자는 이 RDP 기법을 사용해 비밀번호 없이 다른 사용자의 세션과 환경으로 진입할 수 있다. 클라이언트 3의 공격자가 RDP 서버에 로그인해서 query user라는 간단한 명령으로 연결된 모든 RDP 사용자를 볼 수 있다고 생각해 보자.

이후 공격자는 명령 프롬프트에서 다음과 같은 명령을 실행할 수 있다.

sc create hijackedsession binpath= “cmd.exe /k tscon 1 /dest:rdp-tcp#2”
net start hijackedsession


이 명령은 공격자(ID 2)의 현재 세션 연결을 끊고, 비밀번호(클라이언트 2에 사용됨)를 묻거나 별다른 포렌식 흔적을 남기지 않으면서 이전에 연결 해제된 세션 1을 공격자와 RDP 서버 사이에 “재개”한다.

이전에 클라이언트 2에 있던 사용자가 RDP 세션을 끊었을 수도 있지만 서버에서 명확하게 로그오프하지 않았기 때문이다.

네트워크 인텔리전스(Network Intelligence)의 리샤브 샤마는 침투 테스터가 활용할 수 있도록 이 과정을 자동화하는 간단한 배치 스크립트를 만들어 앞의 단계에 대한 세부적인 설명과 함께 공개했다. 실제 시나리오에서도 공격자가 악성코드 프로그램에 이와 같은 자동화된 스크립트를 사용할 수 있으며 워너크라이를 만든 그룹도 이 방법을 사용했다.

모든 계정의 공통 분모는 “SYSTEM”이라는 사용자다. Tscon.exe를 SYSTEM으로 실행할 수 있다면 인증 정보 없이 여러 사용자 세션을 전환할 수 있다.

사이버보안 전문가 케빈 뷰몬트는 “'SYSTEM이라면 이미 루트다. 이미 무엇이든 할 수 있다’고 생각할 수 있다. 맞다. 할 수 있다. 예를 들어 서버 메모리를 비우고 사용자 비밀번호를 가져올 수 있을 것이다. 그러나 그 과정은 Tscon.exe를 세션 번호를 붙여 실행하는 방법에 비해 훨씬 더 길다. Tscon.exe를 사용하면 뚜렷한 흔적을 남기지 않고, 외부 툴 없이 원하는 사용자의 데스크톱을 즉시 확보할 수 있다. 관건은 SYSTEM이 아니라 SYSTEM으로 재빨리, 눈에 띄지 않게 무엇을 할 수 있느냐다”라고 설명했다.

뷰몬트는 이어 “공격자는 놀이가 아니라 이 방법으로 어떤 일을 할 수 있는지에 관심이 있다. 이 방법은 매우 효과적이다. 명령 하나로 전체 RDP 세션 하이재킹이 가능하다”라고 말했다.

Bohops라는 필명으로 활동하는 한 보안 연구원이자 침투 테스터는 최근 SharpRDPHijack이라는, 오픈소스 닷넷으로 구현한 RDP 하이재킹 유틸리티를 발표했다. Bohops는 윈도우 서버 2019 시스템에서 인증 정보 없는 하이재킹으로 툴을 테스트했다.

Bohops는 트위터에서 “누구든 윈도우 서버 2019에서 연결이 끊긴 RDP 세션 하이재킹을 테스트한 적이 있는가? 활성 RDP 세션으로 리디렉션되는 세션에 연결하면 이제 대상의 인증 정보를 입력하라는 화면이 표시된다. 콘솔 세션으로 리디렉션되는 경우 추가 인증이 필요 없다”라고 주장했다.

또 다른 RDP 하이재킹 툴을 만든 이유에 대한 질문에 뷰몬트는 “모든 면에서 이 툴은 또 다른 구현일 뿐이다. 미미캐츠, tscon과 같은 노이즈 없이 더 쉽게 세션 간 전환이 가능하도록 하고 싶었다”라고 말했다.

뷰몬트는 이어 “인증 정보 없이 하는 부분은 NT AUTHORITY\SYSTEM 컨텍스트를 가장할 때[SharpRDPHijack 또는 미미캐츠가 여기에 해당함] 또는 PSexec와 같은 다른 프로그램, 서비스 또는 예약된 작업에서 명령(tscon.exe)을 NT AUTHORITY\SYSTEM으로 실행할 때 가능하다. 다른 RDP 세션으로 효과적으로 전환하려면 테스터는 시스템의 특권 계정에 대해 강력한 통제 권한을 가져야 하며, 시스템에 여러 개의 세션이 연결되어 있어야 한다”라고 설명했다.


RDP 하이재킹을 탐지하고 차단하는 방법

RDP 프로토콜의 원래 속성과 악용되는 동작의 특성 상 RDP 하이재킹 공격을 모니터링하기는 어렵다. 포렌식 툴 관점에서 공격 활동은 정상적인 승인된 원격 사용자가 시스템을 액세스하는 것으로 보이기 때문이다. 10년도 더 된 방법이 여전히 거의 모든 윈도우 서버 버전에 영향을 미치고 있으므로 다른 윈도우 OS 버전으로 업그레이드하라는 조언에는 별로 믿음이 가지 않는다. RDP 하이재킹을 예방하기 위해 권장되는 방법은 다음과 같다.

1. 그룹 정책 시행: “연결이 끊어진” 원격 데스크톱 서버를 장시간 동안 휴면 상태로 두지 말고 그룹 정책 설정을 변경해 RDP 세션 연결이 끊어지는 즉시 또는 단시간 후에 사용자를 로그오프해야 한다. 이렇게 하면 공격자는 인증 정보 없이 단순히 세션을 “재개”하는 방법을 사용하지 못하게 된다.

2. 노출에 유의: RDP 서비스와 포트를 인터넷에 무분별하게 노출해선 안 된다. 그러나 RDP를 너무 엄격하게 제한할 경우 원격 관리라는 본래의 목적에 맞지 않게 된다. 뷰몬트가 제안하는 방법은 인터넷을 통한 액세스가 필요한 경우 마이크로소프트 원격 데스크톱 게이트웨이 또는 애저 다중 요소 인증 서버(Azure Multi-Factor Authentication Server)를 사용하는 것이다. 뷰몬트는 그렇게 하지 않을 경우 심각한 결과가 발생할 수 있다면서 “마이크로소프트 RD 게이트웨이, 애저 다중 요소 인증 서버 등을 사용해서 아주 간단하게 다중 요소 인증을 구현할 수 있다. RDP가 인터넷에 직접 노출된 상태에서 누군가 로컬 사용자를 생성하는 경우 또는 도메인 사용자의 인증 정보가 추측하기 쉽거나 재사용된 인증 정보인 경우 순식간에 상황이 심각해질 수 있다. 종합 병원을 비롯한 여러 기관이 RDS 서버에 의해 랜섬웨어에 감염된 사례를 여러 번 봤다”라고 말했다.

무단 RDP 세션과 하이재킹 예방은 많은 윈도우 중심 IT 환경에서 아직 과제로 남아 있지만 결코 가볍게 생각해서는 안 된다. 은밀한 악성코드 제작자는 이런 기초적인 수법을 사용해 기업 환경에서 탐지를 회피한다. editor@itworld.co.kr  


2020.07.28

RDP 하이재킹 공격의 개념 증명과 대응 방안

Ax Sharma |
악성코드 제작자가 선호하는 침투 수단 가운데 하나는 원격 데스크톱 프로토콜(Remote Desktop Protocol, RDP)이다. RDP는 시스템 관리자에게는 윈도우 시스템을 관리하는 편리하는 방법을 제공하고 사용자에게는 문제 해결에 도움을 준다.
 
ⓒ Getty Images Bank

RDP 하이재킹(RDP hijacking) 공격은 순수하게 취약점이나 비밀번호 피싱에 의존하기보다는 RDP 서비스의 정상적인 기능을 악용하는 경우가 많다. 실제로 워너크라이(WannaCry) 랜섬웨어는 RDP 세션을 하이재킹하고 각 세션에서 악성코드를 실행하기 위해 원격 데스크톱 세션을 나열한다.

RDP 하이재킹 공격은 공격자가 이전에 연결이 끊긴 RDP 세션을 “재개(resuming)”하는 방식으로 실행된다. 이 방법으로 공격자는 사용자의 인증 정보를 훔치지 않고도 특권으로 시스템에 침입할 수 있다. 예를 들어 관리자가 며칠전에 윈도우 서버 컴퓨터에 원격 접속했다면 공격자는 소셜 엔지니어링을 통해 관리자 계정 비밀번호를 알아낼 필요 없이, 훨씬 더 쉽게 이 세션을 “재개”할 수 있다.

세션이 하이재킹됐지만 이벤트 모니터 관점에서 보면 사실상 승인된 사용자이므로 일단 시스템으로 들어온 공격자는 발각되지 않은 채 횡적 이동으로 기업 네트워크를 탐색할 수 있다.


RDP 하이재킹 공격이 위험한 이유

RDP 하이재킹은 새로운 공격 수법이 아니다. 취약점이 아니라 수십년 전부터 존재해 온, 윈도우 RDP 서비스의 정상적인 기능을 악용하는 오래된 '기법(technique)'이다. 대다수 기업 네트워크가 RDP를 사용한 시스템 관리자로 윈도우와 윈도우 서버 시스템을 연결한다는 점을 감안하면 RDP 서비스의 위험과 동작을 반드시 잘 알아둬야 한다.

또한 재택근무가 증가하면서 RDP와 같은 원격 관리 툴에 대한 의존도가 높아졌고, 이것이 악의적인 공격자 관점에서 공격 표면의 일부를 형성하고 있다는 점도 유의해야 한다.


RDP 하이재킹 개념 증명

RDP 세션을 재개하는 방법은 여러가지다. RDP 하이재킹 기법은 침투 테스트 유틸리티인 미미캐츠(mimikatz)를 만든 벤자민 델피가 2011년에 처음으로 고안했다. 2017년 알렉산더 코즈니코브는 비교적 최신 버전의 윈도우 컴퓨터에서 델피가 고안한 방법을 특권 승격에도 사용할 수 있음을 입증했다.

- 비밀번호 없는 하이재킹
이번 기사에서는 윈도우에 포함된 Tscon.exe 유틸리티를 활용하는 RDP 하이재킹 기법에 초점을 맞춘다. 이 유틸리티는 사용자가 한 시스템의 다른 원격 데스크톱 세션에 연결하거나 여러 세션 사이를 전환할 수 있게 해준다.

명령의 구문은 간단하다. 마이크로소프트 지식 자료에서 볼 수 있는 각 매개변수 항목은 다음과 같다.

tscon {<SessionID> | <SessionName>} [/dest:<SessionName>] [/password:<pw> | /password:*] [/v]

가장 간단한 예시를 들자면 tscon 2다. 원격 데스크톱 세션을 호스팅 중인 서버에서 이 명령을 실행하면 사용자는 ID가 2인 세션에 연결되고 기존의 모든 세션에 대한 연결은 해제된다.

단, 마이크로소프트 지식 자료에는 “원격으로 소유된 콘솔 세션이 Tscon.exe를 사용해 컴퓨터의 물리적 콘솔로 전송되는 경우 세션은 잠금이 풀린 채로 남게 된다. 따라서 Tscon.exe를 사용할 때는 이전에 잠겨 있던 서버를 잠금 해제된 상태로 두지 않도록 주의를 기울여야 한다”는 경고문이 있다.
 
ⓒ IDG

다른 세션을 하이재킹하려면 공격자는 RDP 호스트에 연결해야 한다. 따라서 이 방법에는 일정 수준의 액세스가 필요하다. 공격자가 내부자일 수도 있지만(탈취된 직원 계정을 사용하는 경우가 아니라면) 이 수법의 심각성은 정교하게 연결된 APT(Advanced Persistent Threat) 공격의 일부를 형성할 수 있다는 점이다.

악성코드 등을 통해 하나의 시스템에 침투하면 공격자는 이 RDP 기법을 사용해 비밀번호 없이 다른 사용자의 세션과 환경으로 진입할 수 있다. 클라이언트 3의 공격자가 RDP 서버에 로그인해서 query user라는 간단한 명령으로 연결된 모든 RDP 사용자를 볼 수 있다고 생각해 보자.

이후 공격자는 명령 프롬프트에서 다음과 같은 명령을 실행할 수 있다.

sc create hijackedsession binpath= “cmd.exe /k tscon 1 /dest:rdp-tcp#2”
net start hijackedsession


이 명령은 공격자(ID 2)의 현재 세션 연결을 끊고, 비밀번호(클라이언트 2에 사용됨)를 묻거나 별다른 포렌식 흔적을 남기지 않으면서 이전에 연결 해제된 세션 1을 공격자와 RDP 서버 사이에 “재개”한다.

이전에 클라이언트 2에 있던 사용자가 RDP 세션을 끊었을 수도 있지만 서버에서 명확하게 로그오프하지 않았기 때문이다.

네트워크 인텔리전스(Network Intelligence)의 리샤브 샤마는 침투 테스터가 활용할 수 있도록 이 과정을 자동화하는 간단한 배치 스크립트를 만들어 앞의 단계에 대한 세부적인 설명과 함께 공개했다. 실제 시나리오에서도 공격자가 악성코드 프로그램에 이와 같은 자동화된 스크립트를 사용할 수 있으며 워너크라이를 만든 그룹도 이 방법을 사용했다.

모든 계정의 공통 분모는 “SYSTEM”이라는 사용자다. Tscon.exe를 SYSTEM으로 실행할 수 있다면 인증 정보 없이 여러 사용자 세션을 전환할 수 있다.

사이버보안 전문가 케빈 뷰몬트는 “'SYSTEM이라면 이미 루트다. 이미 무엇이든 할 수 있다’고 생각할 수 있다. 맞다. 할 수 있다. 예를 들어 서버 메모리를 비우고 사용자 비밀번호를 가져올 수 있을 것이다. 그러나 그 과정은 Tscon.exe를 세션 번호를 붙여 실행하는 방법에 비해 훨씬 더 길다. Tscon.exe를 사용하면 뚜렷한 흔적을 남기지 않고, 외부 툴 없이 원하는 사용자의 데스크톱을 즉시 확보할 수 있다. 관건은 SYSTEM이 아니라 SYSTEM으로 재빨리, 눈에 띄지 않게 무엇을 할 수 있느냐다”라고 설명했다.

뷰몬트는 이어 “공격자는 놀이가 아니라 이 방법으로 어떤 일을 할 수 있는지에 관심이 있다. 이 방법은 매우 효과적이다. 명령 하나로 전체 RDP 세션 하이재킹이 가능하다”라고 말했다.

Bohops라는 필명으로 활동하는 한 보안 연구원이자 침투 테스터는 최근 SharpRDPHijack이라는, 오픈소스 닷넷으로 구현한 RDP 하이재킹 유틸리티를 발표했다. Bohops는 윈도우 서버 2019 시스템에서 인증 정보 없는 하이재킹으로 툴을 테스트했다.

Bohops는 트위터에서 “누구든 윈도우 서버 2019에서 연결이 끊긴 RDP 세션 하이재킹을 테스트한 적이 있는가? 활성 RDP 세션으로 리디렉션되는 세션에 연결하면 이제 대상의 인증 정보를 입력하라는 화면이 표시된다. 콘솔 세션으로 리디렉션되는 경우 추가 인증이 필요 없다”라고 주장했다.

또 다른 RDP 하이재킹 툴을 만든 이유에 대한 질문에 뷰몬트는 “모든 면에서 이 툴은 또 다른 구현일 뿐이다. 미미캐츠, tscon과 같은 노이즈 없이 더 쉽게 세션 간 전환이 가능하도록 하고 싶었다”라고 말했다.

뷰몬트는 이어 “인증 정보 없이 하는 부분은 NT AUTHORITY\SYSTEM 컨텍스트를 가장할 때[SharpRDPHijack 또는 미미캐츠가 여기에 해당함] 또는 PSexec와 같은 다른 프로그램, 서비스 또는 예약된 작업에서 명령(tscon.exe)을 NT AUTHORITY\SYSTEM으로 실행할 때 가능하다. 다른 RDP 세션으로 효과적으로 전환하려면 테스터는 시스템의 특권 계정에 대해 강력한 통제 권한을 가져야 하며, 시스템에 여러 개의 세션이 연결되어 있어야 한다”라고 설명했다.


RDP 하이재킹을 탐지하고 차단하는 방법

RDP 프로토콜의 원래 속성과 악용되는 동작의 특성 상 RDP 하이재킹 공격을 모니터링하기는 어렵다. 포렌식 툴 관점에서 공격 활동은 정상적인 승인된 원격 사용자가 시스템을 액세스하는 것으로 보이기 때문이다. 10년도 더 된 방법이 여전히 거의 모든 윈도우 서버 버전에 영향을 미치고 있으므로 다른 윈도우 OS 버전으로 업그레이드하라는 조언에는 별로 믿음이 가지 않는다. RDP 하이재킹을 예방하기 위해 권장되는 방법은 다음과 같다.

1. 그룹 정책 시행: “연결이 끊어진” 원격 데스크톱 서버를 장시간 동안 휴면 상태로 두지 말고 그룹 정책 설정을 변경해 RDP 세션 연결이 끊어지는 즉시 또는 단시간 후에 사용자를 로그오프해야 한다. 이렇게 하면 공격자는 인증 정보 없이 단순히 세션을 “재개”하는 방법을 사용하지 못하게 된다.

2. 노출에 유의: RDP 서비스와 포트를 인터넷에 무분별하게 노출해선 안 된다. 그러나 RDP를 너무 엄격하게 제한할 경우 원격 관리라는 본래의 목적에 맞지 않게 된다. 뷰몬트가 제안하는 방법은 인터넷을 통한 액세스가 필요한 경우 마이크로소프트 원격 데스크톱 게이트웨이 또는 애저 다중 요소 인증 서버(Azure Multi-Factor Authentication Server)를 사용하는 것이다. 뷰몬트는 그렇게 하지 않을 경우 심각한 결과가 발생할 수 있다면서 “마이크로소프트 RD 게이트웨이, 애저 다중 요소 인증 서버 등을 사용해서 아주 간단하게 다중 요소 인증을 구현할 수 있다. RDP가 인터넷에 직접 노출된 상태에서 누군가 로컬 사용자를 생성하는 경우 또는 도메인 사용자의 인증 정보가 추측하기 쉽거나 재사용된 인증 정보인 경우 순식간에 상황이 심각해질 수 있다. 종합 병원을 비롯한 여러 기관이 RDS 서버에 의해 랜섬웨어에 감염된 사례를 여러 번 봤다”라고 말했다.

무단 RDP 세션과 하이재킹 예방은 많은 윈도우 중심 IT 환경에서 아직 과제로 남아 있지만 결코 가볍게 생각해서는 안 된다. 은밀한 악성코드 제작자는 이런 기초적인 수법을 사용해 기업 환경에서 탐지를 회피한다. editor@itworld.co.kr  


X