은행 사이트의 비밀번호 칸을 누르면 화면 구석에 작은 키보드 그림이 켜지고, 그때부터 치는 글자는 브라우저에 별표로만 남는다. 그 순간 뒤에서 일하는 프로그램이 TouchEn nxKey 다. 그런데 작업 관리자를 아무리 뒤져도 이 이름의 프로세스는 보이지 않았다. 설치된 앱 목록에는 분명히 있는데 말이다.
프로세스가 안 보이는 이유
설치된 앱 목록에 올라 있는 이름은 "TouchEn nxKey with E2E for 32bit", 버전 1.0.0.90, 게시자 RaonSecure Co., Ltd. 다. 크기는 약 16MB 로 적혀 있었다. 등록된 제거 명령이 먼저 눈에 띄었다.
C:\WINDOWS\SysWOW64\CKSetup32.exe /uninstall appm
제거 프로그램이 Program Files 가 아니라 Windows 시스템 폴더인 SysWOW64 에 들어 있다. 같은 폴더를 CK* 로 걸러 보니 파일이 여섯 개 나왔고, 실행 파일은 모두 라온시큐어 서명이 유효했다.
| 파일 | 파일 설명 · 버전 | 위치 |
|---|---|---|
| CKAgentNXE.exe | TouchEn nxKey 1.0.0.16 | C:\Windows\SysWOW64 |
| CKAgent.exe | TouchEn Key 3.1.0.20 | C:\Windows\SysWOW64 |
| CKSetup32.exe · CKSetup64.exe | TouchEn key Installer | C:\Windows\SysWOW64 |
| TKMain.dll · TKAppm.dll · TKAppi.dll | TouchEn nxKey (TKMain 1.0.0.90) | C:\Program Files (x86)\RaonSecure\TouchEn nxKey |
| JRSUKD25.SYS · JRSKD24.SYS | TouchEn Key Driver | C:\Windows\System32 |
CKAgentNXE.exe 가 검색어로 자주 나오는 그 파일이다. 내가 확인했을 때는 실행 중이 아니었다. 서비스로도, 시작 프로그램으로도, 예약 작업으로도 등록되어 있지 않았다. 은행 페이지에서 보호가 필요한 입력 칸을 쓸 때 필요에 따라 뜨는 보조 프로그램으로 보인다. 그래서 평소 작업 관리자에서는 이름을 볼 일이 없고, 은행 사이트에 들어갔을 때만 잠깐 나타났다가 사라진다.
같은 폴더에 CKAgent.exe 가 따로 있는 것도 흥미롭다. 파일 설명이 "nx" 가 빠진 TouchEn Key 다. TouchEn Key 는 ActiveX 시절부터 쓰이던 이름이고, nxKey 는 ActiveX 없이 여러 브라우저에서 동작하게 다시 만든 제품으로 알려져 있다. 두 세대의 파일이 한 폴더에 같이 들어 있는 셈이다.
늘 올라와 있는 것은 드라이버
프로세스는 쉬고 있어도 커널 쪽은 쉬지 않는다. 드라이버 목록에서 라온시큐어 파일을 찾으니 두 개가 나왔다.
Get-CimInstance Win32_SystemDriver |
Where-Object Name -like 'JRS*' |
Select-Object Name, State, StartMode, PathName
Name State StartMode PathName
JRSKD24 Stopped Manual \??\C:\WINDOWS\system32\JRSKD24.SYS
JRSUKD25 Running Manual \??\C:\WINDOWS\system32\JRSUKD25.SYS
파일 설명은 둘 다 TouchEn Key Driver 이고, JRSUKD25 가 실행 중이었다. 키보드 보안 프로그램은 키 입력이 Windows 의 일반 경로로 흘러가기 전에 가로채야 하므로 커널 드라이버가 핵심이다. 키로거가 엿보기 전에 드라이버가 먼저 입력을 받아 두고, 그 값을 응용 프로그램 쪽에서 암호화해 웹 페이지에 넘기는 구조로 알려져 있다.
설치 이름의 "E2E" 는 이 흐름을 가리키는 말로 보인다. 키보드에서 페이지까지, 즉 처음부터 끝까지 키 입력을 암호화된 상태로 전달한다는 뜻이다. 실제로 어느 구간이 어떻게 암호화되는지는 PC 에서 확인할 수 있는 범위를 넘으니 이름의 뜻 정도로만 적어 둔다.
브라우저와는 누가 이어 주나
웹 페이지가 이 드라이버와 직접 말을 할 수는 없다. 중간 다리가 필요하다. Chrome 의 Native Messaging 등록 정보를 열어 보니 라온시큐어 폴더를 가리키는 항목이 있었다.
kr.co.raon.touchenex
→ C:\Program Files (x86)\RaonSecure\bridge\CrossEX\touchenex\1.0.1.1604\kr.co.raon.touchenex.json
이 파일이 가리키는 실행 파일은 CrossEXChrome.exe 이고, 허용된 Chrome 확장 프로그램 세 개만 이 다리를 쓸 수 있게 적혀 있다. 재미있는 점은 폴더 이름은 RaonSecure 인데 CrossEXChrome.exe 의 서명은 iniLINE Co., Ltd. 라는 것이다. 키보드 보안은 라온시큐어가, 브라우저와 PC 프로그램 사이의 연결은 이니라인의 CrossEX 가 맡는 분업이다. CrossEX 는 이 PC 에 서비스로 따로 떠 있어서 14편에서 따로 다룬다.
2023년의 취약점 보고
TouchEn nxKey 는 2023년 초에 한 차례 크게 이름이 오르내렸다. 보안 연구자 Wladimir Palant 가 당시 최신판이던 1.0.0.78 을 분석해, 아무 웹 사이트나 키 입력을 받아 갈 수 있는 경로와 프로그램을 멈추게 하는 결함, 그리고 낮은 권한의 프로그램이 드라이버의 기능을 쓸 수 있는 문제 등을 공개했다. 키 입력을 지키려고 깐 프로그램이 오히려 키 입력을 엿볼 길을 열어 둔 셈이라는 지적이었다.
이후 한국인터넷진흥원(KISA)이 보안 공지를 내고 업데이트를 권고했다. 공지에서 문제 버전으로 꼽은 범위와 고친 버전은 보도마다 조금씩 다르게 적혀 있는데, 1.0.0.87 이하를 1.0.0.88 이상으로 올리라는 안내가 가장 많이 인용된다. 내 PC 의 1.0.0.90 은 그보다 높다. 오래전에 깔고 한 번도 은행 사이트에 들어가지 않은 PC 라면 옛 버전이 그대로 남아 있을 수 있으니, 설치된 앱 목록에서 버전을 한 번 확인해 볼 만하다.
지우면 생기는 일
키보드 보안 프로그램은 Windows 가 동작하는 데 필요한 것이 아니다. 지워도 PC 는 평소대로 돌아간다. 달라지는 것은 그 프로그램을 요구하는 은행·카드사 사이트에 다시 들어갔을 때다. 로그인 화면이나 이체 비밀번호 입력 단계에서 설치 안내가 다시 뜨고, 설치하기 전까지는 다음 단계로 넘어가지 못한다.
지울 때는 설정 → 앱 → 설치된 앱에서 "TouchEn nxKey with E2E for 32bit" 를 제거한다. SysWOW64 의 파일을 손으로 지우는 방법은 권하지 않는다. 드라이버가 등록된 채로 파일만 사라지면 다음 부팅에서 오류 기록만 남기 때문이다. 제거 뒤에는 재부팅하고, 드라이버 목록에 JRS 로 시작하는 항목이 남았는지 위 명령으로 다시 본다.
하나 덧붙이면, 같은 게시자의 TouchEn nxWeb 과 TouchEn nxFirewall 은 별개의 설치 항목이다. nxKey 를 지워도 그 둘은 남는다. 이 둘은 15편에서 따로 본다.
다음 편은 드라이버 목록을 가장 길게 채우고 있던 프로그램, 잉카인터넷의 nProtect Online Security 다. TK 로 시작하는 드라이버만 열 개가 나왔다.