
CVE-2021-26700을 이용한 VS Code npm 확장의 교육용 RCE 익스플로잇으로, 악성 package.json 실행을 통해 Caldera C2 서버로 DNS 터널링을 시연합니다.
(참고: 이 매뉴얼은 DSNS 연구소 멤버에게만 유효합니다.)
이것은 Microsoft가 개발하고 package.json 파일에 정의된 npm 스크립트 실행을 지원하기 위한 Visual Studio Code (VS Code)의 확장 프로그램인 npm에 존재했던 원격 코드 실행 (RCE) 취약점입니다.
이 취약점을 악용하기 위해 공격자는 자신의 공개 GitHub 저장소에 파일에 숨겨진 악성 스크립트를 업로드하고, npm 확장 프로그램에서 사용하는 구성에 약간의 수정을 가할 수 있습니다. 누군가 이 저장소를 다운로드하여 지정된 확장 프로그램이 설치된 VS Code 환경에서 열면, package.json 파일을 보는 즉시 악성 스크립트가 실행됩니다. 제 시나리오에서 악성 스크립트는 calc.bat라는 배치 파일이며, 이 파일은 deployagent.ps1 프로그램을 실행하여 http://192.168.1.29:8888에서 DSNS 연구소의 Caldera 서버로 DNS 터널링을 설정합니다.
이 CVE는 2021년에 발견되었고 Microsoft 팀이 이후 버전에서 수정했기 때문에, npm 확장 프로그램의 이전 버전([v0.3.13](https://eg2.gallery.vsassets.io/_apis/public/gallery/publisher/eg2/extension/vscode-npm- script/0.3.13/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage))을 다운로드할 방법을 찾아야 합니다. 대신 편의를 위해 GitHub에 포함시켰습니다. 또한 Windows에 VS Code를 설치하기 위한 스크립트도 포함되어 있습니다.
Windows 시스템(예: DSNS 연구소의 APT3)에서 다음 명령을 실행하여 이 저장소를 가져옵니다.
git clone https://github.com/jason-ntu/CVE-2021-26700.git
(GUI를 통해 저장소를 다운로드하고 추출할 수도 있습니다). 다음 단계는 저장소(즉, 클론된 CVE-2021-26700 디렉토리) 내에서 실행된다고 가정합니다.
Windows에 VS Code를 설치하려면 .\install-vscode.bat를 실행합니다.
VS Code의 settings.json에 다음 구성을 추가하여 code 명령을 VS Code를 여는 바로가기로 설정합니다.
필요한 버전의 npm 확장 프로그램을 설치하려면 .\install-extension.bat를 실행합니다.
CVE를 악용하려면 VS Code에서 저장소를 열고 package.json 파일을 확인해야 합니다. 몇 초 후, http://192.168.1.29:8888의 Caldera에서 피해자로의 DNS 연결이 설정되어야 합니다. RCE가 완료됩니다!