TouchEn nxKey 보안 취약점 발견
TouchEn nxKey , 대부분 어디선가 본듯한 눈에 익은 스펠링일 것이다.
왜냐하면 인터넷뱅킹 업무를 할려면 무조건적으로 설치해야하는 프로그램이기 때문이다.
그렇다면 어떤식으로 보안 프로그램 역할을 하였는데, 취약점이 발견이 되었는지 알아보자.
1. TouchEn nxKey에 대하여
(주) 라온시큐어에서 개발한 보안프로그램으로 키보드 입력값을 해킹하려는 시도를 방어하는 키보드 보안솔루션으로 라온시큐어에서 자체 개발한 'PKI기반의 터널링 기법'을 통해 키보드 입력시점부터 어플리케이션 영역까지 전 구간에서 개인정보가 유출되는 것을 차단하는 프로그램이라고 함.
이어서 TouchEn nxKey에 기능으론 아래 사진과 같이 있다. 재밌는건 프로그램 평점이 1.3점? 정도로 대한민국 국민이라면 관공서, 은행의 보안프로그램에 이미 진절머리가 나있고 실제로 백그라운드 프로세스상에 상주하며 불필요한 CPU 및 메모리 자원을 잡아먹고 있다.
출처 및 인용 : https://albaeconomy.tistory.com/entry/TouchEn-nxKey-%EC%A0%95%EC%B2%B4-%EB%B0%8F-%EC%82%AD%EC%A0%9C%ED%95%B4%EB%8F%84-%EB%90%98%EB%8A%94%EC%A7%80-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90
여기서 PKI란?
PKI(Public Key Infrastructure), 공개 키 기반 구조라는 단어인데 그냥 엄청나게 요약해버리면, 공개키 암호화와 전자서명을 사용할 수 있게 기반을 마련해둔 것이 PKI임.
공개키 : 암호학적으로 연관된 두 개의 키를 만들어서 하나는 본인이 보관(개인키), 다른 하나는 상대방에게 공개(공개키)를 하는데 개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화가 가능하고, 공개키로 암호화한 정보는 그 쌍이 되는 개인키로만 복호화가 가능함.
잘 설명이 된 블로그가 있으니 들어가서 보면 좋을거 같음.
PKI 란? 공개키 기반 구조 개념
PKI(Public Key Infrastructure) PKI 공개키 기반 구조에 대해서 굉장히 어렵게 설명이 되어 있는 경우가 많아 쉽게 이해할 수 있도록 정리할 겸 글을 작성합니다. 공개키 암호화와 전자서명을 사용할 수
myjamong.tistory.com
그리고 터널링은 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술, 패킷 내에 터널링할 대상을 캡슐화 시켜 목적지까지 전송 한다는데,
PKI + 터널링?
뭐 캡슐화한 데이터들을 전송시킬때 공개 키 기반으로 암호화하나? 내 띨띨한 머리론 어떻게 접목을 시켰는지 모르겠다. 심지어 검색도 안되는 중이다. 그래서 취약점을 발견한 독일개발자가 쓴 글을 또 쉽게 요약해준 한 커뮤니티 글을 렉카질 해왔으니 이해해보자.
커뮤니티 글
(요약있음,강스압,번역) TouchEn nxKey 7개 보안 취약점 발견 - DogDrip.Net 개드립
이 글은 TouchEn nxKey: The keylogging anti-keylogger solution을 의역+기계번역한 글입니다. 읽을거리 판에도 올릴게요 https://palant(.)info/2023/01/09/touchen-nxkey-the-keylogging-anti-keylogger-solution/...
www.dogdrip.net
독일 개발자 글
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
원본글에서 설명할 때 첫 문장이
''TouchEn nxKey의 모든 공개 기사는 키보드 입력을 암호화하여 키로거를 막기 위한 것이라고 말합니다.
이것이 내가 찾을 수 있는 모든 기술 정보입니다. 그래서 제가 직접 알아내야 했습니다.'' 였다.
검색해도 안나오는 이유가 있었다.
작동원리는 이렇다.
5번에서 pki의 내용이, 7번에서 터널링의 내용이 나와 이해가 되었다.
이론적으로는 이 웹사이트에 입력된 데이터를 기록하려는 키로거는 암호화된 데이터만 볼 수 있다는 것이다.
(/etc/shadow에 비밀번호가 암호화 되어있는 느낌)
그런데 이론적으로만 그렇단다. 왜그럴까?
원래 touchen은 브라우저 확장 프로그램에서 네이티브 메시징을 이용하여 특정한 프로그램이 설치 되어 있는지 알아본다.
하지만 이것은 과거의 방식이고 최근에는 웹소켓을 이용하여 확장 프로그램이라는 경유지를 들리지 않고 직접적으로 에플리케이션에 접근한다고 한다.
과거의 방식이라는데 이유가 있으니까 바꿨겠지 싶다.
추가로 글쓰신 분이 보안 취약점과는 별개로 걸리적 거렸다는 부분이 있었다는데
웹소켓을 사용하는 최신 버전과, 브라우저 확장 프로그램을 사용하는 과거 버전이 있다.
그런데 A은행에서는 웹소켓을 사용하는 최신버전만을 지원하는데 브라우저 확장프로그램을 사용하는 과거버전이 pc에 깔려있으면 프로그램이 안깔려있다고 오류메시지를 나타낸다고 한다. 업데이트도 자동으로 안된다던데, 아마 원래 깔려있던걸 지우고 다시깔아야하나보다. 사람들이 사용하면서 열받는 이유가 있다.
이것도 본문과는 별개의 내용인데, 확장 브라우저와 통신하는 코드인데, eval 함수가 주석처리 되어있었다고 했다.
하지만 eval은 보안에 매우 취약한 함수여서 여느 자바스크립트 사이트에 들어가면 사용하지말라고 적혀있을정도이다.
이유는 아래 블로그에 잘 설명되어있어서 들어가서 보자.
아무튼 글쓴분은 이러한 주석도 필히 지워야한다고 생각하고, 이 주석은 개발자들의 자바스크립트에대한 무지를 나타낸다고 했다.
Q. 콜백함수가 뭐에요?
콜백함수는 함수의 파라미터를 함수로 받아서 함수내부에서 실행하는 함수임.
요약해주세요.
1. 아까 말했던 웹소캣을 사용하는 최신버전말고 확장프로그램을 사용하는 구버전만 취약함.
2. 콜백은 특정 탭으로만 전달되고 그 전달도 id를 알아야하는데, 이 글쓴이 형님은 다아신다.
3. 은행사이트 털렸죠?
-은행사이트를 어케 터는지 알아보자
ㅈㄴ 어렵다. 이어서 또써야지