1. TouchEnxKey

- 라온시큐어사의 키보드 보안 프로그램 - 키보드 입력을 암호화하여 키로거 방지

- 브라우저 확장 프로그램으로 설치

 

1.1 TouchEnxKey 동작 방식

- TouchEnxKey를 사용할 경우 웹사이트에서 실행되는 자바스크립트 코드와 일부 서버 측 코드로 구성된 nxKey SDK와 함께 동작

① nxKey SDK를 사용하는 웹 사이트에서 암호 필드를 입력
② nxKey SDK의 JavaScript 코드가 이를 감지하여 로컬 nxKey 응용 프로그램 호출
③ nxKey 응용 프로그램은 윈도우즈 커널에서 장치 드라이버를 활성화
④ 장치 드라이버가 모든 키보드 입력을 가로채 nxKey 응용 프로그램으로 전송
⑤ nxKey 응용 프로그램은 키보드 입력을 암호화하여 nxKey SDK의 JavaScript 코드로 전송
⑥ 자바스크립트 코드는 암호화된 데이터를 숨겨진 형태의 필드에 작성

※ 실제 암호 필드는 더미 텍스트만 수신
⑦ 로그인 자격 증명 입력을 완료하고 "로그인" 클릭
⑧ 암호화된 키보드 입력은 다른 데이터와 함께 서버로 전송
⑨ nxKey SDK의 서버 측 부분은 암호를 해독하고 일반 텍스트 암호를 검색

 

>  사용자의 입력값을 nxKey가 가로채어 암호화 및 숨겨진 필드에 작성

>  서버측 nxKey SDK에서 복호화 및 로그인 시도 검증

>  키로거는 nxKey에 의해 암호화된 데이터만을 볼 수 있으며, 개인 키가 없으므로 복호화를 수행하지 못함

 

[사진 1] 웹 사이트와 TouchEnxKey 통신 방식 비교 (과거-좌 및 현재-우)

- 과거 : 브라우저 확장을 통해 웹 사이트와 응용 프로그램 사이에서 동작하며 요청과 응답을 중재 

- 현재 : 웹 사이트에서 웹 소켓 API를 사용하여 응용 프로그램과 직접 통신 즉, 브라우저 확장은 더 이상 필요하지 않음

> 일부 은행 사이트들은 브라우저 확장에 의존하는 오래된 코드를 사용

 

2. 취약점

- 설계상 주요 로깅 기능을 포함하고 있으며, 해당 기능에 대한 액세스를 충분히 제한하지 못함

- 단순 서비스 거부에서부터 원격 코드 실행을 유발하는 다양한 버그가 존재

 

2.1 TouchEn 확장 기능을 악용하여 은행 웹 사이트 공격

- eval()은 문자로 표현된 JavaScript 코드를 실행하는 함수

- TouchEn browser extension의 코드 중 주석처리된 eval()이 존재 > 코드 품질의 문제가 있을 가능성

result = JSON.parse(result);
var cbfunction = result.callback;

var reply = JSON.stringify(result.reply);
var script_str = cbfunction + "(" + reply + ");";
//eval(script_str);
if(typeof window[cbfunction] == 'function')
{
  window[cbfunction](reply);
}

 

- 콜백 메커니즘에서 악용 가능성이 발견되었으며, 악의적인 웹 페이지를 콜백 하도록 조작이 쉽게 가능하였음

※ 일부 이벤트에대해 웹 사이트에서 setcallback 요청을 전송

- 조작을 위해서는 2가지 조건이 필요

대상 웹 페이지에 id="setcallback" 매개변수가 존재해야 함

> 이는, nxKey SDK를 사용하는 웹 사이트만 공격할 수 있다는 것을 의미

※ WebSockets를 통한 통신은 이 요소를 생성하지 않음 즉, 최신 nxKey SDK를 사용하는 웹 사이트는 영향을 받지 않음

콜백은 특정 탭으로 전달

> 현재 탭에 로드된 페이지, 예를 들어 프레임에 로드된 페이지만 공격할 수 있다는 것을 의미

 

- 응용 프로그램이 요청을 처리하기 위해 JSON 파서를 사용하는 동안 응답은 sprintf_s()를 통해 처리되며, 이때 필터링이 수행되지 않음

> id 값은 응용 프로그램의 응답에 복사 - 취약점 발생 지점

> 공격자는 tabid 값을 알아낼 필요 有 - TouchEn 확장이 노출하는 tabid로 추측 또는 빈 값으로 설정(빈 값일 경우 현재 활성 탭으로 설정)

 

- 위 과정에 따른 공격 시나리오는 다음과 같음

① 은행 웹 사이트를 열어 활성 탭 생성
② 페이지가 로드될 때까지 기다렸다가 id="setcallback" 요소 확인
③ 일부 기능에 대한 콜백을 설정하기 위해 TouchEn 확장을 통해 콜백 메시지를 보내는 동시에 JSON 응답 속성을 "tabid":" 및 "reply":"malicious payload"로 조작하여 요청
④ 악성 페이로드를 매개 변수로 하여 은행 웹사이트에서 콜백 기능이 호출

[사진 2] 실제 공격 화면

2.2 웹 사이트의 키로깅 기능 사용

- 공격자 스스로 TouchEnxKey를 사용한 웹 페이지를 구성 - 피싱과 유사한 형태로 판단됨.

- 웹 사이트에서 TouchEnxKey를 사용하기 위해서는 유효한 라이센스가 필요

- TouchEnxKey는 요청 정보의 유효성이 아닌 라이선스 정보를 통해 식별

> TouchEnxKey가 암호화를 위한 공개 키를 수신하지 못하면 암호화하지 않고 평문을 전송

> 해당 방법은 가로챈 입력이 실제 유효한 사이트에 도달하지 못하므로, 의심을 유발할 수 있음

socket.send(JSON.stringify({
  "tabid": "whatever",
  "init": "get_versions",
  "m": "nxkey",
  "origin": "https://www.example.com",
  "lic": "eyJ2ZXJzaW9uIjoiMS4wIiwiaXNzdWVfZGF0ZSI6IjIwMzAwMTAxMTIwMDAwIiwicHJvdG9jb2xfbmFtZSI6InRvdWNoZW5leCIsInV1aWQiOiIwMTIzNDU2Nzg5YWJjZGVmIiwibGljZW5zZSI6IldlMkVtUDZjajhOUVIvTk81L3VNQXRVd0EwQzB1RXFzRnRsTVQ1Y29FVkJpSTlYdXZCL1VCVVlHWlY2MVBGdnYvVUJlb1N6ZitSY285Q1d6UUZWSFlCcXhOcGxiZDI3Z2d0bFJNOUhETzdzPSJ9"
}));

 

2.3 응용프로그램 자체 공격

- TouchEnxKey는 sprintf_s() 또는 strcpy_s()와 같은 버퍼 오버플로우에 상대적으로 안전한 함수를 사용

> 충분히 큰 버퍼를 제공하지 못하면 잘못된 매개 변수 처리기가 호출되며, 이로 인해 애플리케이션이 다운이 발생

 

- 모든 JSON 파서 중에서 nxKey 애플리케이션 개발자들은 C로 작성된 것을 선택(https://github.com/json-parser/json-parser/)

> github의 업데이트 사항이 반영되지 않음 (2014.01~)

> 2014년 6월 수정이 반영되지 않음

 

- 취약한 OpenSSL 사용

> OpenSSL 1.0.2c를 사용중으로 이는 2015년에 공개된 버전이며, 2020년 1월 지원이 종료된 버전

[사진 3] openssl-1.0.2c

2.4 도우미 응용 프로그램 남용

- nxKey가 키보드 입력을 가로챌 때마다 CKAgentNXE.exe 도우미 애플리케이션이 시작

- CKAgentNXE.exe가 무결성 수준이 낮은 프로세스에서 액세스할 수 있도록 IPC 개체에 대한 보안 설명자를 설정함

- 또한, 레지스트리 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy 경로 추가

> TouchEn Key가 Internet Explorer에서 ActiveX로 실행될 때 무결성 수준은 낮음으로 실행됨

 

2.5 드라이버의 키로깅 기능을 직접 액세스

- TouchEnxKey 응용 프로그램(드라이버로부터 받은 키보드 입력을 암호화하는 응용 프로그램)은 사용자 권한으로 실행

- 드라이버 통신을 하는 라이브러리인 TKPPM.dll은 Temida를 사용하여 난독화

> 런타임에 디버거를 연결하면 이미 해독된 TKAppm.dll 메모리를 저장하고 분석을 위해 결과를 Gidra에 로드가 가능하였다고 함

 

3. 조치

- 블라디미르 팔란트

> 2022년 10월 4일 KrCERT에 보고

> KrCERT는 약 2주 후에 내 보고서를 RaonSecure에 전달

 

- 라온시큐어 관계자
> 해당 내용은 이미 작년에 KrCert를 통해 모두 전달받음
> 취약점을 보완하는 패치가 모두 이뤄진 상태
> 보완된 프로그램을 각 은행을 통해 배포하는 절차만 남겨놓은 상황

> 2023.02 업데이트 공개

① TouchEn nxKey 및 CrossEXService에서 발생하는 크로스 사이트 스크립팅(XSS) 취약점

※ CrossEXService: TouchEn nxKey 설치 시 함께 설치되는 프로그램으로 TouchEn nxKey 재설치 시 함께 업데이트 됨

② 위즈베라의 Veraport V3에서 발생하는 정보 노출 취약점

제품명 영향받는 버전 해결 버전
TouchEn nxKey 1.0.0.78 이하 1.0.0.82
CrossEXService 1.0.2.9 이하 1.0.2.10 
Veraport V3 v3702~v3863 v3864

> 해결 방안

① 서비스 운영자: 라온시큐어, 위즈베라를 통해 최신버전 교체

② 서비스 이용자

- TouchEn nxKey, CrossEXService, Veraport V3가 설치되어 있는 경우 제거 후 최신버전 업데이트

※ [제어판]-[프로그램]-[프로그램 및 기능]

- 이용 중인 금융사이트에 접속하여 해결된 버전의 프로그램 재설치

※ 금융사이트별 취약한 프로그램 패치 일정은 상이하므로 확인 필요

 

4. 참고

 

TouchEn nxKey: The keylogging anti-keylogger solution

TouchEn nxKey is supposed to combat keyloggers. Instead, this application made writing a keylogger extremely simple, allowed attacking banking websites and more.

palant.info

 

독일 개발자 “한국 은행 사이트, 매우 불편하고 위험해”

독일의 유명 개발자 블라디미르 팔란트(Wladimir Palant)가 최근 우리나라 보안 프로그램을 정면으로 비판하고 나서 화제다. 팔란트는 세계에서 가장 많이 쓰이는 광고차단 프로그램 ‘애드블록 플

n.news.naver.com

 

[긴급] 라온시큐어 및 위즈베라의 금융보안 솔루션, 보안 업데이트 서둘러야

금융보안 솔루션을 금융권 등에 공급하는 라온시큐어와 위즈베라가 자사 제품에서 발생하는 취약점을 해결한 보안 업데이트를 발표했다. 공격자들이 해당 취약점을 악용해 피해를 발생시킬 수

www.boannews.com

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

+ Recent posts