
CVE-2023-30367용 원본 PoC
Multi-Remote Next Generation Connection Manager (mRemoteNG)는 사용자가 원격으로 시스템에 연결하기 위한 다중 프로토콜 연결 구성을 저장하고 관리할 수 있는 무료 소프트웨어입니다.
mRemoteNG 구성 파일은 디스크에 암호화된 상태로 저장될 수 있습니다. mRemoteNG 버전 <= v1.76.20 및 <= 1.77.3-dev는 애플리케이션 시작 시 (필요한 경우 복호화 후) 구성 파일을 평문으로 메모리에 로드하며, 이때 아직 연결이 설정되지 않았더라도 로드됩니다. 이를 통해 공격자는 메모리 덤프를 통해 구성 파일의 내용을 평문으로 접근할 수 있으며, 따라서 사용자 지정 비밀번호 암호화 키가 설정되지 않은 경우 사용자 자격 증명을 손상시킬 수 있습니다. 또한 이미 복호화된 구성을 메모리에서 덤프함으로써 연결 구성 파일 암호화 설정을 우회합니다.
이 취약점에는 CVE-2023-30367이 할당되었습니다.
Windows 11 (독일어)에서 mRemoteNG 1.77.3.1784-NB 및 mRemoteNG 1.76.20으로 테스트되었습니다.
이 발견은 mRemoteNG 개발자 중 한 명인 Dimitrij Gorodeckij에 의해 여기에서 확인되었습니다. 수정은 아직 개발 중입니다. 빠른 응답과 협조에 다시 한번 Dimitrij Gorodeckij에게 감사드립니다! 조만간 수정되길 바랍니다!
1. 강력한(긴) 구성 비밀번호 암호화 비밀번호/키 사용:
메모리 덤프 시 공격자는 구성 파일을 평문으로 얻을 수 있지만, 여전히 비밀번호 암호화 키를 무차별 대입(bruteforce)해야 합니다.
안타깝게도, 연결 파일 암호화 옵션을 활성화해도 이 공격을 막는 데 도움이 되지 않습니다. 왜냐하면 mRemoteNG 연결 구성 파일은 런타임에 복호화되기 때문입니다.
2. 수정 사항이 릴리스되면 v1.77.3.1784-NB보다 높은 mRemoteNG로 업데이트하십시오.
3. 예를 들어 mRemoteNGDumper.exe의 악의적인 실행을 방지하려면 애플리케이션 허용 목록(whitelisting)을 적용해야 합니다.
구성 비밀번호 암호화와 연결 파일 암호화는 서로 다른 설정임을 유의하십시오. 구성 비밀번호 암호화는 구성 파일 내의 비밀번호만 암호화하는 반면, 연결 파일 암호화는 구성 파일 전체를 암호화합니다.
이 익스플로잇은 이미 복호화된 구성을 메모리에서 덤프하여 연결 파일 암호화를 우회합니다. 이러한 구성에는 여전히 암호화된 비밀번호가 포함되어 있으며, 이는 기본 키 mR3m으로 복호화될 수 있습니다. 사용자 정의 구성 비밀번호 암호화 키/비밀번호가 설정된 경우, 공격자는 여전히 사용자 정의 키를 추측해야 합니다. (mremoteng-decrypt.py 섹션 참조)
git clone https://github.com/S1lkys/CVE-2023-30367-mRemoteNG-password-dumper.git 또는 GitHub에서 다운로드mRemoteNG-password-dumper로 이동Windows에서 수동으로 테스트하는 가장 쉬운 방법은 Windows 작업 관리자를 사용하여 mRemoteNG 프로세스를 마우스 오른쪽 버튼으로 클릭하고 '덤프 파일 만들기'를 선택하여 프로세스 덤프를 생성하는 것입니다. 덤프는 VisualStudio Code에서 열 수 있습니다. 그런 다음 구성한 연결 값을 검색하십시오.
mRemoteNG Password Dumper는 mRemoteNG의 메모리에서 구성 파일을 덤프하는 간단한 개념 증명 도구입니다. 대상 시스템에서 코드 실행이 필요하지 않으며 메모리 덤프만 있으면 됩니다. 빠른 POC이므로 신뢰성과 견고성이 높지 않을 수 있습니다. 문제를 발견하고 수정한 경우 풀 리퀘스트를 만들어 주십시오.
Configuration files are currently hardcoded like this: (\<Node)(.*)(?=\/>)\/>
mremoteng_decrypt.py로 복호화/무차별 대입합니다. (mremoteng-decrypt.py 섹션 참조)mremoteng-decrypt에 무차별 대입 기능을 추가했습니다(감사의 말 참조).
이를 사용하여 사용자 정의 mRemoteNG 구성/비밀번호 암호화 키를 무차별 대입할 수 있습니다. 사용자 정의 키가 구성되지 않은 경우 스크립트는 기본 키 mR3m으로 구성을 복호화합니다. 이 스크립트는 사용자 정의 암호화 비밀번호로 구성 파일을 복호화하는 데도 사용할 수 있습니다. 데모도 참조하십시오.

사용자 정의 암호화 비밀번호 123으로 구성 파일 복호화: python3 mremoteng_decrypt.py -rf "C:\Users\mbzra\source\repos\mRemoteNG Dumper\dump\extracted_Configfile_mRemoteNG_0_09.07.2023.11.01_confCons.xml" -p 123
사용자 정의 암호화 비밀번호 123으로 비밀번호 문자열 복호화: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -p 123
사용자 정의 암호화 비밀번호 없이 비밀번호 문자열 복호화: python3 mremoteng_decrypt.py -s "yW0Ypq/cTcwfHwYxIiHgczcsIKU+jWlfnZBcTdKQImsMbBnP3SLv2h75Z7IAbkFOsD2YzBo2wGk2fhDLpRFH2y8="
무차별 대입 사용법: python3 mremoteng_decrypt.py -s "[extracted encrypted configuration password]" -b y -w [path to wordlist]
무차별 대입 예시: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -b y -w .\wordli.txt
위협 모델에 따라 다릅니다. 사용자 권한으로 백그라운드에서 실행 중인 맬웨어에 이미 감염된 경우, 이 발견으로 상황이 훨씬 나빠지지는 않습니다. 그러나 KeeTheft 또는 KeeFarce와 달리 프로세스 인젝션이나 다른 유형의 코드 실행이 필요하지 않기 때문에 맬웨어가 은밀하게 작동하고 안티바이러스를 회피하기가 더 쉬울 수 있습니다.
누군가가 컴퓨터에 접근하여 포렌식 분석을 수행할 수 있다고 합리적으로 의심된다면, 이는 좋지 않을 수 있습니다.
강력한 비밀번호로 구성 파일 암호화를 사용하고 시스템이 깨끗하다면 괜찮을 것입니다. 이 발견만으로는 누구도 인터넷을 통해 원격으로 비밀번호를 훔칠 수 없습니다.
