2023년 6월, 국가정보원이 특정 보안 프로그램 하나의 이름을 들어 "구버전을 지우거나 업데이트하라"는 경고를 냈다. 보안 프로그램이 공격 경로가 되었다는 내용이었고, 그 이름이 MagicLine4NX 였다. 그 이름이 내 PC 의 작업 관리자에도 두 줄로 떠 있었다.
서비스가 본체를 띄운다
설치된 앱 목록의 이름은 "MagicLine4NX", 버전 1.0.0.33, 게시자 Dreamsecurity, Inc. 다. 드림시큐리티는 공동인증서(옛 공인인증서)를 다루는 보안 회사이고, MagicLine4NX 는 웹 사이트에서 공동인증서로 로그인하거나 전자서명할 때 인증서 선택 창을 띄우고 서명을 처리하는 프로그램이다. 4편의 Delfino G3 와 같은 자리를 다른 회사 제품이 맡는 것이다. 공공기관 사이트에서 많이 쓰이는 것으로 알려져 있다.
프로세스는 두 개였고, 부모와 자식 관계였다.
| 프로세스 | 파일 · 버전 | 부모 | 메모리(작업 집합 / 개인) |
|---|---|---|---|
| MagicLine4NXServices.exe | MagicLine4NXServices 1.0.0.1 (2.2MB) | services.exe | 12MB / 11.6MB |
| MagicLine4NX.exe | MagicLine4NX 1.0.0.33 (4.1MB) | MagicLine4NXServices.exe | 14.3MB / 17.5MB |
서비스 이름과 표시 이름이 모두 MagicLine4NXSVC 이고 자동 시작, LocalSystem 계정이다. 이 서비스가 뜨면서 본체 MagicLine4NX.exe 를 띄운다. 그런데 본체는 시작 프로그램(Run 키)에도 MagicLine4NX 라는 이름으로 등록되어 있었다. 서비스와 Run 키, 두 갈래로 시작하게 해 둔 것이다. 작업 관리자의 "시작 앱" 탭에서 이 항목을 꺼도 서비스가 본체를 띄우니 계속 보이는 이유가 여기 있다.
서명은 둘 다 유효했는데 서명자 표기가 조금 달랐다. 서비스 파일은 Dreamsecurity Co., Ltd., 본체는 띄어 쓴 Dream Security Co., Ltd. 다. 같은 회사가 시기를 달리해 발급받은 코드 서명 인증서로 보인다.
127.0.0.1:42235 와 전용 주소
본체는 127.0.0.1 의 42235 번 포트 하나를 열고 있었다. 앞의 두 편(nProtect, IPinside)과 달리 같은 PC 에서만 닿는 주소다. 웹 페이지의 스크립트가 이 포트로 인증서 목록이나 서명을 요청하고, 본체가 창을 띄워 처리한 뒤 결과를 돌려주는 구조로 보인다. 이 포트에 단순 TLS 접속을 해 보았지만 인증서를 받아 오지는 못했다. 어떤 방식으로 말을 주고받는지는 거기까지만 확인했다.
레지스트리에는 NTSMagicLineNP 라는 주소 형식도 등록되어 있었다. 이 형식의 주소를 열면 MagicLine4NX.exe "%1" 이 실행된다. 4편의 위즈베라처럼, 본체가 꺼져 있을 때 웹 페이지가 이 주소로 깨우는 용도로 보인다.
설치 폴더(C:\Program Files (x86)\DreamSecurity\MagicLine4NX)는 단출했다. 인증서 관리 모듈 CertManager.dll, 암호 라이브러리 DSCToolkitV30-v3.4.2.25.dll 과 MagicCrypto32V22.dll, 인증서 발급 기관 목록인 IssuerOid.conf 가 있고, MagicLine4NX.exe.hmac 라는 파일이 눈에 띄었다. 실행 파일이 변조되지 않았는지 확인하는 무결성 값으로 보인다. 전체 설치 크기는 약 16MB 로 적혀 있었다.
2015년에 발급된 루트 인증서
신뢰할 수 있는 루트 인증 기관 저장소에는 Dreamsecurity ROOT CA 가 있었다. 유효 기간은 2015년 9월 3일부터 2035년 8월 29일까지다.
이 날짜는 4편의 Delfino-CA·Veraport-CA 와 성격이 다르다. 위즈베라의 루트는 발급일이 설치한 날과 같아서 PC 마다 새로 만드는 것으로 보였는데, 드림시큐리티의 루트는 2015년에 발급된 것이다. 이 PC 에 깔기 훨씬 전이다. 모든 PC 에 같은 루트 인증서가 들어가는 방식으로 보인다. 그 경우 그 루트의 개인 키를 누가 어떻게 보관하는지가 훨씬 중요해진다. 키 하나가 새면 이 루트를 믿는 모든 PC 가 영향을 받기 때문이다.
2023년에 무슨 일이 있었나
공개된 발표와 보도를 정리하면 이렇다. 국가정보원은 2023년 6월, 경찰청·과학기술정보통신부·한국인터넷진흥원(KISA)과 함께 조사한 결과 북한 해킹 조직이 MagicLine4NX 의 취약점을 이용해 공공기관과 기업 등 50여 곳의 PC 를 감염시켰다고 밝혔다. 해외 보안 매체들은 공격자가 언론사 웹 사이트를 변조해, 특정 대역에서 들어온 방문자의 PC 에 이 취약점으로 침투했다고 전했다. 영국 국가사이버보안센터(NCSC)도 국정원과 함께 이 공격에 대한 공동 권고문을 냈다.
드림시큐리티는 2023년 3월에 보안 패치를 냈지만 이미 깔린 PC 들이 잘 업데이트되지 않았다는 것이 문제였다. 그해 11월 과기정통부와 KISA는 1.0.0.26 이하 구버전이 아직 남아 있다며 다시 한번 삭제나 업데이트를 요청했다.
여기서 배울 점은 취약점 자체보다 업데이트 경로에 있다. 이런 프로그램은 사이트에 들어갈 때 설치 안내를 거쳐 깔리고, 그 뒤에는 그 사이트를 다시 찾기 전까지 아무도 업데이트를 챙기지 않는다. 한 번 쓰고 잊어버린 프로그램이 서비스로 늘 떠서 포트를 열어 두는 상태가 몇 년씩 이어진다. 내 PC 의 1.0.0.33 은 경고에서 꼽은 버전보다 높지만, 비슷하게 잊힌 PC 는 많을 것이다.
지우는 방법
이 프로그램을 요구하는 사이트를 자주 쓰지 않는다면 지우는 쪽을 권한다. 다음에 필요할 때 사이트가 최신판을 다시 깔게 하는 편이 오래된 판을 계속 두는 것보다 낫다. 설정 → 앱 → 설치된 앱에서 "MagicLine4NX" 를 제거한다. 등록된 제거 프로그램은 C:\Program Files (x86)\DreamSecurity\MagicLine4NX\MagicLine4NX_Uninstall.exe 다.
제거 뒤에는 서비스 MagicLine4NXSVC 와 시작 프로그램 MagicLine4NX 가 사라졌는지 확인하고, certlm.msc·certmgr.msc 의 신뢰할 수 있는 루트 인증 기관에 Dreamsecurity ROOT CA 가 남아 있으면 지운다. 공동인증서 파일 자체는 이 프로그램 폴더가 아니라 NPKI 폴더에 있으므로 프로그램을 지워도 인증서는 그대로다. NPKI 폴더 이야기는 17편에서 따로 한다.
다음 편은 설치 경로에 SoftForum 이라는 옛 회사 이름이 그대로 남아 있는 한컴위드의 AnySign4PC 다.