CVE-2019-0708은 2019년 05월 14일 공표된 취약점으로 인증되지 않은 공격자가 RDP(Remote Desktop Protocol)를 사용하여 대상 시스템에 연결하고 특수 제작된 요청을 보내는 경우 데스크톱 서비스에 원격 코드를
실행할 수 있는 취약점이다.
•
소스코드 분석
BlueKeep는 GitHub에서 제공되는 소스코드로 CVE-2019-0708 취약점을 사용자가 쉽게 접근할 수 있도록 공개되어 있다.
BlueKeep_poc.py는 공격하기 전 대상 시스템에 공격 가능 여부를 판단하기 위한 소스코드이다. 가장 처음 RDP(Remote Desktop Protocol) 서비스가 활성화 되어 있는지 고정 패킷을 전송해 확인한다.
RDP가 활성화되어 있다면 SSL/TLS 연결을 시도하고 초기화 패킷을 전송한다.
다음 도메인을 생성하고 대상의 도메인과 연결 후 높은 채널 번호로 조인 요청을 해 버그를 유발하여 공격 가능 여부를 판단한다.
3389포트로 세션을 맺고 SSL/TLS 연결을 시도한다.
대상 정보를 확인하기 위한 패킷을 만들어 전송하고 버전에 맞게 채널을 조인을 요청한다.
PDU 패킷을 만들어 연결이 되면 Dos 패킷을 생성해 전송한다.
•
공격 테스트
공격 테스트는 Windows Server 2008 R2 버전을 대상으로 진행하였다.
GitHub에서 BlueKeep를 다운로드 받는다. # git clone https://github.com/Ekultek/BlueKeep.git
다운로드 후 setup.sh를 실행하면 자동으로 파일이 설치 된다.
BlueKeep_poc.py 옵션
bluekeep_poc.py를 실행하면 그림 4-6과 같이 RDP와 PDU가 활성화 되었는지 확인하게 된다.
# python bluekeep_poc.py –i [Target IP]
와이어샤크를 이용해 패킷 분석을 하게 되면 RDP 연결 요청과 SSL/TLS 연결 요청을 하는 것을확인할 수 있다.
bluekeep_weaponized_dos.py 옵션
# python bluekeep_weaponized_dos.py –I 192.168.252.132 -v
패킷을 분석해 보면 상단에서 RDP, PDU, SSL/TLS Domain 등 연결 요청을 하게 되고 모든 연결요청이 끝나면 Dos 패킷을 보내고 잠시 후 서버 측에서 RST 패킷을 보내는 것을 확인할 수 있다.
서비스 다운
대응 방안으로는 원격 데스크톱 서비스를 사용하지 않으면 비활성화 하고 Microsoft에서 제공하는 윈도우 보안 업데이트를 하여야 한다.