보안 프로그램 정리를 시작하려고 작업 관리자의 세부 정보 탭을 열었더니, 금융 프로그램보다 먼저 눈에 걸리는 이름이 있었다. RuntimeBroker.exe 가 아홉 줄이었다. 같은 이름이 이렇게 많으면 하나쯤은 이름만 빌린 악성코드가 아닐까 하는 생각이 든다. 검색어에 "runtime broker 여러 개", "multiple runtime broker" 가 꾸준히 올라오는 것도 같은 이유일 것이다.
결론부터 말하면 Runtime Broker 는 은행이 깔아 준 프로그램이 아니라 Windows 자체 프로세스이고, 여러 개인 것이 정상이다. 이 연재에서 Windows 기본 프로세스를 다루는 건 이 한 편뿐인데, 보안 프로그램을 의심하며 작업 관리자를 들여다보는 사람이 가장 먼저 만나는 이름이라서 짚고 간다.
아홉 개가 모두 같은 파일이었다
먼저 아홉 개가 정말 같은 파일인지, 누가 띄웠는지 확인했다.
Get-CimInstance Win32_Process -Filter "Name='RuntimeBroker.exe'" |
Select-Object ProcessId, ParentProcessId, CommandLine
ProcessId ParentProcessId CommandLine
--------- --------------- -----------
15896 2020 C:\Windows\System32\RuntimeBroker.exe -Embedding
16064 2020 C:\Windows\System32\RuntimeBroker.exe -Embedding
...
9420 2020 C:\Windows\System32\RuntimeBroker.exe -Embedding
아홉 개 모두 경로가 C:\Windows\System32\RuntimeBroker.exe 였고, 실행 인수는 -Embedding 이었다. 부모 프로세스 번호도 모두 같았다. 그 부모를 따라가 보니 svchost.exe 였고, 그 안에서 돌고 있는 서비스는 DcomLaunch(DCOM Server Process Launcher)와 BrokerInfrastructure(Background Tasks Infrastructure Service) 등이었다.
-Embedding 은 COM 이 프로세스 밖 서버를 띄울 때 붙이는 인수다. 즉 사용자가 직접 실행한 것이 아니라, 어떤 앱이 Runtime Broker 의 기능을 요청하자 Windows 의 DCOM 서비스가 그 앱을 위해 하나를 띄워 준 것이다. 파일 자체는 138KB 의 작은 실행 파일이고, 서명은 Microsoft Windows 로 유효했다.
왜 앱마다 하나씩 생기나
Runtime Broker 는 이름 그대로 중개인이다. Microsoft Store 방식으로 만들어진 앱(시작 메뉴, 검색, 위젯, 캡처 도구, 메모, 휴대폰 연결 같은 것)은 격리된 상자 안에서 돈다. 이 앱들이 위치, 카메라, 마이크, 사진 같은 민감한 자원을 쓰려면 "이 앱에 그 권한이 있는가"를 누군가 확인해 줘야 하는데, 그 일을 Runtime Broker 가 한다.
그래서 앱마다 따로 하나씩 붙는다. 한 앱의 중개인이 문제를 일으켜도 다른 앱에 번지지 않게 하려는 구조다. 내 PC 에서 그 시점에 돌고 있던 이런 앱을 세어 보니 시작 메뉴, 검색, 위젯, 입력기, 셸 화면, 캡처 도구, 메모, 휴대폰 연결, 다른 기기 이어 하기 등이 있었다. 아홉 개라는 숫자가 이상하지 않다. 앱을 열면 하나가 늘고, 앱을 닫고 조금 지나면 같이 사라진다.
메모리는 이렇게 나왔다.
| 구분 | 값 |
|---|---|
| 개수 | 9개 |
| 하나당 작업 집합 | 9~26MB |
| 하나당 개인 메모리 | 1.6~9.5MB |
| 아홉 개 작업 집합 합계 | 약 126MB |
작업 집합 합계 126MB 는 커 보이지만, 이 값에는 여러 프로세스가 함께 쓰는 Windows 라이브러리가 프로세스마다 중복으로 잡힌다. 각자 따로 차지하는 개인 메모리는 하나에 몇 MB 수준이었다.
가짜와 구별하는 법, 그리고 끄면 안 되는 이유
이름을 흉내 내는 악성코드가 실제로 있으니 구별하는 기준은 알아 둘 만하다. 확인할 것은 세 가지다.
첫째, 경로가 C:\Windows\System32 인가. 다른 폴더, 특히 사용자 폴더 아래 AppData 에 같은 이름의 파일이 있다면 Windows 의 것이 아니다. 작업 관리자의 세부 정보 탭에서 항목을 오른쪽 클릭하고 "파일 위치 열기"를 누르면 바로 보인다.
둘째, 서명이 Microsoft Windows 로 유효한가. 파일 속성의 디지털 서명 탭이나 PowerShell 의 Get-AuthenticodeSignature 로 확인한다.
셋째, 부모가 svchost.exe 이고 인수가 -Embedding 인가. 정상적인 Runtime Broker 는 사용자가 띄우는 일이 없다.
세 가지가 모두 맞다면 끄지 않는 것이 좋다. 작업 관리자에서 끝내면 그 Runtime Broker 를 쓰던 앱이 권한 확인을 못 해서 멈추거나 오류를 내고, 앱을 다시 열면 Runtime Broker 도 다시 뜬다. 끄는 것으로 얻을 것이 없다.
한 개가 CPU 를 계속 높게 쓰고 있다면 그 Runtime Broker 가 맡은 앱 쪽에 문제가 있는 경우가 많다. Runtime Broker 를 끄는 대신, 그 시점에 열어 둔 Store 앱을 하나씩 닫아 보며 함께 사라지는 것을 찾는 편이 원인에 더 가깝게 간다.
다음 편부터는 다시 금융·공공 사이트가 설치한 프로그램으로 돌아간다. 웹 사이트에서 파일을 올리거나 받을 때 설치를 요구받는 RAON K 다.