Seunghyun Yoo

Posts | Development | About

[KR] Bypassing the problematic security solutions

한국의 은행/증권 사이트를 이용할 때 필수적으로 설치해야 하는 키보드 보안. 그런데 문제는 이러한 솔루션들이 시스템의 커널 영역을 건드리기 때문에 개발자들이 테스트하지 못한 시스템에서는 제대로 작동하지 않는 경우가 많다.

Solution: Virtual machine

예전에는 엄두도 못낼 일이었지만, 가장 이상적인 방법은 VM을 이용하여 은행/증권 사이트용 컴퓨터를 만들면 된다. 어쩌면 다른 프로그램들은 전혀 깔지 않고 오로지 보안 솔루션들만 설치되므로 큰 문제는 없을 것이라 생각든다. 물론 호스트 컴퓨터가 해킹당하지 않는다는 전제 하에서.

그럼에도 불구하고 발생하는 충돌

키보드 보안 프로그램은 filter 드라이버를 사용하여 다른 응용 프로그램이 키 입력을 읽지 못하도록 함에 있다. 예를 들어 은행 패스워드를 입력하는 동안에는 GetAsyncKeyState()와 같은 API를 사용했을 때 리턴 값이 엉뚱한 값으로 나오는 것이다. 특정 회사의 솔루션은 무료 VM인 VirtualBox와 충돌한다… VirtualBox에서 emulate하는 PS/2 키보드 드라이버와 잘 맞지 않는 구석이 있음. 아마도 USB 키보드에 대해서만 처리했겠지…

Alternative 1: 원격 접속

그렇다면 Bridged network adapter를 사용하여 가상 머신에 원격 접속을 하면 키보드 보안 프로그램과의 충돌을 피할 수 있을까? 안타깝게도 실패. 키를 입력하자마자 바로 블루스크린이 뜨며 재시작되는 가상 머신을 발견할 수 있었다.

Alternative 2: Synergy

Programmers love synergy! (Not AD)

가상 머신에 클라이언트를 설치하고 호스트 컴퓨터의 키보드/마우스 입력을 포워딩시키는 방법이다. PS/2 드라이버를 건드리는 방식이 아니므로 깔끔하게 실행된다는 장점. 단점은 유료라는 점이고, 스크린이 연속적이지 않아 직관적으로 헷갈린다는 점.

Alternative 3: On-screen keyboard

마우스 클릭으로 대신하는 방법. 당연히 키보드 보안 프로그램을 우회할 수 있고 시스템이 재시작되는 치명적인 오류도 발생하지 않는다. 다만 키보드 보안 프로그램이 중지될 때까지 단 한 번의 키 타이핑만으로 시스템을 뻗게 만들 수 있다.

Conclusion…

그냥 모바일 앱 씁시다.