분석 정보/악성코드 분석 정보

MSBuild의 기능을 악용하여 유포된 악성코드

알 수 없는 사용자 2021. 5. 28. 16:20

애플리케이션을 빌드하기 위한 프로그램인 "MSBuild"의 기능을 악용하여 악성코드를 유포한 사례가 발견되었다.

 

"MSBuild" (Microsoft Build Engine)는 애플리케이션을 빌드하기 위해 마이크로소프트에서 제공하는 개발도구이며, 일반적으로 Visual Studio에서 애플리케이션을 빌드할 때 사용한다.

 

또한 Visual Studio가 설치되지 않은 환경에서도 빌드 할 수 있도록 기능을 제공하는데, 최근 발견된 사례의 경우  "MSBuild"의 기능을 악용해 악성코드를 실행하고 추가 악성행위를 수행한다.

 

악성 프로젝트 파일

"MSBuild"는 빌드 시 프로젝트 파일(.proj)을 읽어 빌드를 수행하는데, 프로젝트 파일에는 데이터베이스 설정, 다른 프로젝트 정보 가져오기 및 수행할 작업 지정과 같은 빌드 방법과 설정 정보가 담겨있다.

 

[그림 1] 악성 프로젝트 파일에 정의된 Using Task

 

프로젝트 파일의 "Using Task" 요소는 빌드 수행 시 실행되는 작업이 정의되며, 이를 통해 개발자는 다양한 작업을 지정할 수 있다. 공격자는 악성 프로젝트 파일 내부 "Using Task" 에 인코딩된 악성코드를 삽입하였으며, "MSBuild" 를 통해 프로젝트 파일 실행 시 삽입된 악성코드가 추가 실행되도록 설정하였다.

 

 

[그림 2] Using Task 에 삽입된 악성코드

 

악성 동작

"MSBuild" 에 의해 실행된 프로젝트 파일은 내부 "Using Task" 요소에 정의된 작업을 실행한다. 시작 프로그램 폴더에 링크파일을 생성해 시스템 시작 시 자동실행되도록 설정하고, 삽입된 악성코드를 디코딩한 뒤 정상 프로세스에 인젝션하여 실행한다. 다음 [그림 3]은 악성코드의 전체적인 실행 흐름이다.

 

[그림 3] 실행 흐름도

 

실행된 작업은 먼저 시작 프로그램 폴더에 링크 파일을 생성하고 시스템 시작 시 악성 프로젝트 파일이 "MSBuild" 를 통해 실행되도록 설정한다.

 

[그림 4] 시작 프로그램 등록

 

[표 1] 링크 파일 경로 및 실행 대상

 

그리고 [그림 5]와 같이 "Using Task"에 삽입된 "Remcos RAT" 악성코드를 디코딩한 뒤, 악성코드의 크기만큼 메모리를 할당하고 디코딩한 악성코드를 저장한다. 저장된 악성코드는 콜백 함수로 등록되어 정상 "RegAsm.exe" 프로세스에 인젝션되어 실행된다.

 

[그림 5] 인코딩된 Remcos RAT 악성코드

 

인젝션되어 실행된 악성코드는 사용자의 정보를 탈취하거나 공격자의 명령을 전달받아 수행한다. 그리고 "Remcos RAT"이외에도 "RedLine Stealer" 또는 "Quasar RAT" 악성코드가 프로젝트 파일에 삽입된 사례도 발견되고 있다.

 

[그림 6] 인젝션되어 실행된 Remcos 악성코드의 정보탈취 내용

 

공격자는 "MSBuild"의 기능을 악용하여 사용자가 알 수 없도록 악성코드를 실행하며, 정보탈취 혹은 파일 다운로드 등의 악성 행위를 수행하기에 주의가 필요하다. 따라서 출처가 불분명한 파일 다운로드 및 실행을 지양해야 하며, 이후에도 발생할 수 있는 사이버 공격에 대비하여 보안 동향에 관심을 가질 필요가 있다.