ExECM.exe 라는 이름은 아무것도 알려 주지 않는다. 설치된 앱 목록의 이름도 "CoreB2B ExEcm" 이 전부라 무슨 프로그램인지 짐작하기 어렵다. 다행히 이 프로그램은 설정 파일을 평문 XML 로 폴더에 두고 있었다. 이번 편은 그 설정 파일에서 시작한다.
서비스가 띄우는 .NET 프로그램
설치된 앱 목록에서는 "CoreB2B ExEcm" 1.1.5.4, 게시자는 inogard Co.,Ltd. 이다. 폴더는 C:\Program Files (x86)\CoreB2b\ExEcm 이고, 이 PC 에는 2026년 4월 중순에 들어왔다. 파일 수는 많지 않다.
ExECMService.exe(26KB): 서비스ExEcmInstallerService의 실행 파일. 자동 시작, LocalSystemExECM.exe(150KB) 1.1.5.4: 서비스가 띄우는 자식 프로세스. 작업 집합 11.1MB, 개인 메모리 22.1MBFleck2.dll,ICSharpCode.SharpZipLib.dll: 웹소켓 서버 라이브러리 Fleck 과 ZIP 압축 라이브러리ExECM.exe.config,uninstall.exe
실행 파일 두 개는 INOGARD 서명이 유효했고, 설정 파일의 supportedRuntime 이 .NET Framework 4.7.2 였다. 이 연재에서 본 프로그램은 대부분 C·C++ 로 만든 것이었는데 이것은 .NET 프로그램이다. 웹소켓 라이브러리와 ZIP 라이브러리가 들어 있는 것으로 보아, 웹 페이지와 웹소켓으로 이어져 파일을 묶거나 푸는 일을 하는 것으로 보인다. CoreB2B 는 기업 간 전자구매·전자계약 쪽에서 쓰이는 이름으로, 그런 사이트에서 문서를 내려받거나 올릴 때 설치를 요구받는 경우가 있는 것으로 보인다. 어느 사이트에서 이 PC 에 들어왔는지는 확인하지 못했다.
서비스 이름에 Installer 가 들어 있지만 실제로는 설치가 끝난 뒤에도 늘 떠서 ExECM.exe 를 띄우고 있었다. 이 서비스는 오류 제어가 NORMAL 이고 실패 시 재시작 설정은 없었다.
설정 파일이 말해 주는 것
ExECM.exe.config 의 appSettings 부분은 이렇다.
<add key="host" value="127.0.0.1"/>
<add key="port.http" value="18181"/>
<add key="port.https" value="18281"/>
<add key="extra.download_extensions" value="ZIP,P7S,P7E,TXT,TEXT,PDF,JPG,GIF,PNG"/>
<add key="extra.restricted_extensions" value="CSH,BAT,CMD,COM,CPL,EXE,..."/>
포트가 http 와 https 로 하나씩이고, 내려받을 수 있는 확장자와 막는 확장자 목록이 있다. 내려받기 목록의 P7S 와 P7E 는 전자서명된 문서와 암호화된 문서에 쓰는 확장자다. 막는 목록에는 EXE, BAT, PS1, LNK, MSI 같은 실행 가능한 파일 형식이 40개 가까이 적혀 있고, 각 확장자가 무엇인지 주석까지 달려 있다. 웹 페이지가 이 프로그램을 통해 PC 에 파일을 저장하게 하되, 실행 파일은 저장하지 못하게 막아 둔 것으로 읽힌다. 서명된 계약서나 첨부 문서를 받는 용도로 보인다.
같은 파일에는 실행 로그를 execm.log 로 남기는 설정도 있다.
127.0.0.1 이라고 적어 놓고 0.0.0.0
설정은 분명히 host 를 127.0.0.1 로 적어 두었다. 그런데 Get-NetTCPConnection 으로 보면 ExECM.exe 는 0.0.0.0:18181 과 0.0.0.0:18281 에서 연결을 기다리고 있었다. 설정의 host 값이 실제로 연결을 받을 주소가 아니라 다른 용도로 쓰이는지, 라이브러리가 그 값을 무시하는지는 알 수 없다. 결과는 이 PC 의 모든 네트워크 주소에서 받는 상태다.
방화벽에도 "ExECM" 이라는 이름으로 들어오는 연결을 허용하는 규칙이 두 개 있었다. 개인·공용 프로필, 포트와 원격 주소에는 제한이 없었다. 앞 편의 UniCRS 와 같은 모양이다. 다른 기기에서 실제로 접속해 보지는 않았다.
18281 번 포트에 TLS 로 붙어 보니 인증서가 돌아왔다.
Subject : CN=127.0.0.1, O=ExEcm-Certificates, C=KR
Issuer : CN=ExEcm-Root-CA, C=KR
기간 : 2023-10-26 ~ 2033-10-23
발급자 ExEcm-Root-CA 는 컴퓨터와 현재 사용자 양쪽 루트 저장소에 있었고, 기간도 서버 인증서와 같은 2023년 10월 26일부터 10년이다. 프로그램 파일들의 날짜는 2023년 10월 27일이다. 이 PC 에 설치한 2026년 4월이 아니라 프로그램을 빌드한 다음 날 무렵에 루트와 서버 인증서가 함께 만들어진 것이다. 그렇다면 이 버전을 설치한 모든 PC 에 같은 루트와 같은 서버 인증서가 들어갔을 가능성이 높다. 서버 인증서로 https 를 하려면 그 개인 키가 PC 에 있어야 하므로, 같은 키가 여러 PC 에 나뉘어 있는 구조일 수 있다. 다만 키가 설치 파일 안에 어떤 형태로 들어 있는지는 확인하지 않았고, 이 부분은 날짜로 짐작한 것이다.
18181 번(http)은 브라우저 주소처럼 빈 요청을 보냈을 때 응답 없이 연결이 닫혔다. 웹소켓 연결만 받는 것으로 보인다.
지우는 방법
이 프로그램을 요구한 사이트를 더 쓰지 않는다면 지워도 된다. 무슨 사이트였는지 기억나지 않는다면 지운 뒤 필요할 때 사이트가 다시 설치 안내를 띄울 것이다. 설정 → 앱 → 설치된 앱에서 "CoreB2B ExEcm" 을 제거한다. 등록된 제거 명령은 다음과 같다.
"C:\Program Files (x86)\CoreB2b\ExEcm\uninstall.exe"
제거 뒤에는 서비스 ExEcmInstallerService 가 사라졌는지, 방화벽 규칙 "ExECM" 두 개가 정리됐는지, certlm.msc 와 certmgr.msc 에 ExEcm-Root-CA 가 남지 않았는지 본다. 위에서 적은 대로 이 루트는 여러 PC 에 같은 것이 들어갔을 수 있는 인증서라, 프로그램을 지웠다면 남겨 둘 이유가 더욱 없다.
번외 편의 마지막은 이미 지운 프로그램 이야기다. 폴더도 서비스도 없는데 방화벽 규칙 여섯 개와 루트 인증서가 남아 있던 Kings Online Security 다.