ViewState를 악용한 Godzilla WebShell 유포 (금융권 대상)

개요
AhnLab SEcurity intelligence Center(ASEC) 에서는 최근 취약한 환경 설정으로 ASP.NET를 운영 중인 금융권 대상의 공격 정황을 확인하였다. ASP.NET에서 지원하는 ViewState 기능은 ASP.NET 모듈에서 직렬화 및 역직렬화 과정을 통해 데이터를 처리한다. 공격자는 이 과정을 악용하여 공격 대상 PC에 WebShell을 설치하였다. 해당 WebShell 악성코드는 분석 결과 Godzilla WebShell 악성코드로 확인되었다. Godzilla WebShell은 침해된 PC에서 공격자로부터 수신한 커멘드 실행, 파일 업로드 및 다운로드, ShellCode 실행 등 일반적인 WebShell의 기능 뿐만 아니라 mimikatz, petipotam 등 추가적인 공격 툴을 제공한다.
본 보고서에서는 공격자가 어떻게 PC에 침투하여 WebShell을 설치하였고, 해당 WebShell을 이용하여 무엇을 수행하려고 했는지에 대한 분석을 다룬다. 또한 이를 통해 동일한 유형의 공격을 어떻게 예방하고 보완할 수 있을지에 대한 방법을 제시한다.
목차
개요 침투 과정 분석 …. VIEWSTATE를 이용한 Deserialization 공격 …….. ViewState란? …….. ViweState를 이용한 명령 실행 …….. 공격에 사용된 payload …. WebShell을 이용한 초기 침투 …….. Godzilla WebShell …….. 사례 분석 결론 및 예방 조치 IoC |
보고서 요약
VIEWSTATE 공격에 사용된 payload
실제 공격에 사용된 사례에서는 아래 그림의 payload가 사용되었다. __VIEWSTATE 필드에서 공격자가 생성한 직렬화된 payload를 확인할 수 있다.

[그림] VIEWSTATE 공격에 사용된 payload
Godzilla WebShell
Godzilla WebShell은 아래 Github 주소에서 어플리케이션(.jar) 형태로 배포되고 있다. Release 정보를 통해 2021년 11월에 v4.0.1 까지 버전 업데이트가 이루어진 것을 알 수 있으며, 2024년 현재 기준으로 더 이상 최신 버전은 Release 되지 않고 있다.
- Godzilla WebShell – https://github.com/BeichenDream/Godzilla

[그림] Godzilla WebShell의 Release 정보
Godzilla WebShell은 Session정보(Context.Session[“payload”])에 Binary를 보관하고 있다가 공격자의 명령이 떨어질 때마다 꺼내어 사용하는 방식으로 동작한다. 이러한 방식은 Session 정보에 저장된 Binary(악성코드)를 파일로 생성하지 않고 메모리에서 동작하게 하므로 일종의 File-less 방식이라고도 볼 수 있다. 이처럼 공격자가 수행하는 악성 행위가 메모리에서 동작하는 형태의 WebShell을 “MemShell”이라고도 한다.

[그림] Godzilla WebShell 동작 방식