개발 도구가 공격 도구로, MSBuild 악용 사례 분석

최근 사이버 공격자들은 별도의 악성 파일을 배포하는 대신, 운영체제에 기본 옵션으로 포함된 정상 도구를 악용해 탐지를 우회하는 방식으로 공격을 고도화하고 있다. 특히 마이크로소프트(Microsoft)의 개발 도구인 MSBuild는 인라인 코드 실행과 파일리스 공격이 가능하다는 점에서 LOLBins(Living Off the Land Binaries) 공격에 적극 활용되고 있다. 실제 사례에서는 보안 솔루션의 탐지를 회피한 채 러버스 셸 연결이나 추가 페이로드까지 이어지는 흐름이 확인됐다. MSBuild를 악용한 공격은 정상 행위로 위장한다는 점에서 대응 난이도가 높은 편이다. MSBuild 기반 공격 기법의 동작 방식과 실제 사례, 대응 방안을 살펴보자.

 

 

최근 공격자들은 시스템에 포함된 정상 바이너리를 악용해 보안 제품의 탐지를 우회하는 공격을 지속적으로 시도하고 있다. 이런 방식은 별도의 악성 실행 파일을 설치하지 않고, 운영체제에서 신뢰하는 도구를 그대로 활용한다는 점에서 기존 시그니처 기반 탐지를 효과적으로 회피한다.

MSBuild.exe는 마이크로소프트에서 서명한 윈도우(Windows) 기본 개발 도구로, XML 기반 프로젝트 파일을 통해 C# 코드를 빌드하고 실행할 수 있다. 공격자는 이런 특성을 악용해 디스크에 악성코드를 명시적으로 남기지 않고도 임의 코드를 실행하며, 침투 이후 단계에서 은밀하게 추가 행위를 수행한다.

 

공격자가 MSBuild를 선호하는 이유
MSBuild는 본래 개발 환경을 지원하기 위한 정상 개발 도구이지만, 공격자 입장에서는 매우 효율적인 공격 수단으로 활용된다.

첫째, 프로젝트 파일 내부에 인라인 형태로 C# 코드를 삽입해 실행할 수 있다. 이를 통해 공격자는 별도의 실행 파일 없이도 악성 행위를 수행할 수 있다. 즉, 유연한 페이로드 구성과 파일리스(Fileless) 공격 구현이 가능하다.

둘째, 다양한 기능 확장성을 제공한다. 파일 로드, 네트워크 통신, 바이너리 빌드 및 실행 등 공격에 필요한 핵심 기능들을 모두 포함하고 있어, 다양한 공격 시나리오에 활용할 수 있다.

셋째, 마이트로소프트의 디지털 서명이 적용된 정상 바이너리라는 점이다. MSBuild.exe는 신뢰된 시스템 구성 요소로 인식되기 때문에 단순 실행만으로는 악용 여부를 판단하기 어려워 코드 서명 검증을 우회할 수 있다.

 

MSBuild를 이용한 탐지 우회 공격 기법
2025년 1월, Michał Walkowski의 블로그를 통해 MSBuild를 활용한 Windows 11 Defender 탐지 우회 기법이 소개됐다. 이를 바탕으로 실제 환경에서 동일한 방식의 동작 여부를 검증한 결과, 보안 솔루션의 탐지를 회피할 수 있음이 확인됐다.

공격자는 main.csproj와 main.cs와 같은 프로젝트 파일과 C# 소스 파일만으로 공격을 구성할 수 있다. 예를 들어 main.csproj에는 main.cs를 컴파일해 실행하도록 설정돼 있으며, main.cs에는 공격자 시스템과 연결되는 TCP 리버스 셸 기능이 포함된다. MSBuild 실행 시 해당 프로젝트가 로드되면서 공격자 서버와의 연결이 이루어진다.

 

[그림 1] main.csproj

 

[그림 2] main.cs

 

[그림 3] 피해자 시스템

 

[그림 4] 공격자 시스템

 

특히 이 과정에서 Windows Defender의 실시간 감시가 활성화된 상태임에도 별도의 경고나 차단이 발생하지 않았다는 점이 확인됐다. 이는 MSBuild 기반 공격이 엔드포인트 보안 솔루션의 탐지를 효과적으로 우회할 수 있음을 보여준다.

 

실제 공격 사례: MSBuild 다운로더와 DLL 사이드로딩
2026년 2월, Lab52 블로그에서 공개된 사례에서는 MSBuild가 단순 실행 도구를 넘어 악성 페이로드를 내려받는 다운로더로 활용됐다.

공격은 피싱 메일을 통해 시작된다. 공격자는 회의 초대나 업무 문서로 위장한 압축 파일을 첨부하며, 압축 파일 내부에는 정상 서명이 포함된 실행 파일과 프로젝트 파일이 함께 포함돼 있다. 특히 실행 파일은 마이크로소프트 서명이 적용된 MSBuild.exe의 이름을 문서 파일처럼 보이도록 변경해 사용자의 의심을 줄인다.

 

[그림 5] 피싱 메일 내부 첨부 파일

 

사용자가 해당 실행 파일을 클릭하면, MSBuild의 기본 동작 특성에 따라 동일 경로에 존재하는 프로잭트 파일(.csproj)이 자동으로 탐색로드되며 별도 인자 없이 실행된다. 이 과정은 사용자에게 거의 인지되지 않는 수준으로 자연스럽게 이루어진다.

프로젝트 파일 내부에는 인라인 형태의 C# 스크립트가 포함돼 있으며, 이 스크립트는 외부 C2 서버와 통신해 추가 파일을 다운로드한다. 다운로드된 파일은 임시 폴더 등 사용자가 자주 접근하지 않는 경로에 저장되며, 파일명에 무작위 문자열을 사용해 수동 분석을 더욱 어렵게 만든다.

 

[코드 1] C# 인라인 스크립트

 

 

다운로드가 완료된 이후, MSBuild는 그중 첫 번째 실행 파일을 자동으로 실행한다. 해당 실행 파일도 정상 서명이 포함된 프로그램으로 위장돼 있어 실행 자체만으로는 악성 행위로 판단하기 어렵다. 그러나 공격자는 이 정상 실행 파일이 동작하는 과정에서 동일한 디렉터리에 위치한 DLL을 함께 로드한다는 점을 악용했다. 함께 다운로드된 악성 DLL은 메모리로 로드되며, 이를 통해 최종 악성코드 실행이 이루어진다.

이런 구조에서는 MSBuild.exe와 정상 서명된 실행 파일, 사용자 실행 행위가 결합되며 전체 공격이 정상 프로세스처럼 위장된다. 이로 인해 보안 솔루션과 사용자 모두 이상 징후를 식별하기 어려워지고, 공격자는 추가 페이로드 실행이나 후속 침투를 지속할 수 있는 환경을 확보하게 된다.

이 사례는 MSBuild와 같은 정상 개발 도구가 공격자에게 LOLBins 공격에 얼마나 효과적으로 활용될 수 있는지를 보여준다. 단순한 파일 신뢰 여부만으로는 탐지가 어려우며, 프로세스 간 관계와 실행 맥락, 파일 생성 및 로드 흐름을 종합적으로 분석하는 접근이 필요하다.

 

공격 대응 방안
MSBuild 기반 공격은 단일 IoC만으로 식별하기 어렵기 때문에, 행위와 맥락을 중심으로 한 다계층 탐지 전략이 필요하다.

우선, 프로세스 행위 기반 모니터링이 중요하다. Outlook, 웹 브라우저, 다운로드 경로 등 비개발 환경에서 MSBuild.exe가 실행되거나, MSBuild.exe가 PowerShell 또는 cmd.exe와 같은 하위 프로세스를 생성하는 경우는 의심 행위로 볼 수 있다.

또한, 프로젝트 파일 실행 행위에 대한 가시성을 확보해야 한다. 일반 사용자 환경에서 .csproj 또는 .xml 파일 실행은 매우 드문 경우이며, 특히 압축 해제 직후나 임시 경로(%Temp%)에서 실행되는 경우 공격과 연관성이 높다.

네트워크 측면에서는 MSBuild.exe의 외부 통신 여부, 단기간 내 다수 파일 다운로드, 난수 기반 파일명 생성 등을 함께 분석해야 한다. 더불어 정상 서명 실행 파일이 비정상 DLL을 로드하는 DLL 사이드로딩 패턴도 주요 탐지 포인트다.

 

결론
MSBuild는 Windows 환경에서 신뢰받는 정상 도구이지만, 공격자에게는 효과적인 LOLBins 공격 수단으로 활용될 수 있다. 인라인 스크립트 실행, 자동 프로젝트 로드, DLL 사이드로딩 등의 기능은 공격의 은폐성을 높인다.

따라서 정상 프로세스에 대한 무조건적인 신뢰에서 벗어나, 프로세스 간 관계와 실행 맥락, 네트워크 행위를 종합적으로 분석하는 행동 기반 탐지 전략을 강화해야 한다. MSBuild를 포함한 LOLBins 공격은 앞으로도 다양한 형태로 변형될 가능성이 높은 만큼, 지속적인 위협 헌팅과 정책 기반 통제가 중요하다.

 

 

출처 : AhnLab

02-553-2331
견적 요청
카카오톡 문의