Kimsuky termsrv.dll patch 내부 침투 전략 흐름 분석

seong_0629·2026년 5월 7일
post-thumbnail

1.Termsrv.dll?

Windows Remote Desktop Services(RDP)의 DLL → Terminal Services DLL

Wndows에서 원격 데스크톱(Remote Desktop Service) 연결을 처리하는 DLL을 의미하고, (C:\windows\system32\termsrv.dll)에 위치하였으며, 세부적으로는 RDP 세션 관리, 사용자 인증, 세션 생성, 동시 접속 제한등을 담당한다.

Windows 내부 구조에서는 TermService는 svchost.exe 안에서 동작하며,
Registry의 (HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters) 안에서
ServiceDll 값으로 termsrv.dll을 로드한다.

여기서 핵심은 Windows Desktop(pro/enterprise)는 기본적으로 동시 다중 RDP 세션을 제한하는데, 이 의미는 한 명만 원격 접속 가능하며, 새 RDP 접속 시 기존 사용자 세션을 종료한다는 의미이다. 여기서 RDP 세션 제한을 제거하면 공격자의 RDP 세션을 유지하는 것이 가능해진다.
(= stealth persistence, lateral movement, GUI 기반 내부조작 가능)

그렇기에 dll을 의도에 맞게 변경하여 APT나 공격시에 사용될 수 있어 Kimsuky에서도 이러한 점을 이용하여 dll 패치함으로 공격에 사용하였다.
DLL 패치시 termsrv.dll의 특정 함수 조건문을 패치하는데 대표적으로는 Concurrent session 제한제거나 license/authentication bypass를 수행하여 패치를 진행한다.

[예시]
(Win10 기준) 39 81 3c 06 00 00 → B8 00 01 00 00 : RDP 제한 체크 로직 무력화 패치

2.kimsuky 사례

kimsuky가 termsrv.dll을 이용한 사례를 상세하게 살펴보면 다음과 같다.

CDefPolicy::QueryRDP license authentication comparison 함수를 패치하거나
ServiceDLL의 경로 자체를 수정해서 악성 termsrv.dll을 로드하도록 변경한다.

전반적인 Kimsuky termsrv.dll 패치 기반 내부 침투 시나리오를 보면 다음과 같다.

Spear Phishing을 시도하여 초기 공격의 매개체로 사용한다. spear phishing을 성공한다면
inital Execution 단계로 넘어가는데 여기서는 LNK, CHM, HTA, JS/JSE, WSF등을 payload launcher로 사용하여 사용자의 실행을 유도한다. 해당 단계에서 사용자 실행을 유도하는데 성공이후,
LOLBins(Living-off-the-land binaries) Execution으로 이어져 본격적인 Malware 동작 수행으로 이어진다. 여기서는 powershell.exe, mshta.exe, rundll32.exe, cscript.exe과 같은 LOLBins excution으로 외부 payload를 다운로드 하거나 메모리 혹 script를 실행한다.

lolbins execution을 통해 malware가 전달되었다면 loader, downloader(ex. appleseed, pebbledash, babyshark)
설치를 통해 backdoor 설치로 이어진다. 이후 최종적으롤 termsrv.dll patch를 최종적으로 진행하여 APT를 완료한다.

[ Kimsuky termsrv.dll patch APT Flow]
Spera phishing
→ initial Execution(LNK, CHM, HTA, JS/JSE, WSF)
→ LOLBins Excution
→ Malware Execution(ex. Loader / Downloader / Backdoor)
→ termsrv.dll patch

  • BabyShark 설치 이후에 PDB Path한 경우

3.Reference

0개의 댓글