KR100996856B1 - 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체 - Google Patents

키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체 Download PDF

Info

Publication number
KR100996856B1
KR100996856B1 KR1020080107014A KR20080107014A KR100996856B1 KR 100996856 B1 KR100996856 B1 KR 100996856B1 KR 1020080107014 A KR1020080107014 A KR 1020080107014A KR 20080107014 A KR20080107014 A KR 20080107014A KR 100996856 B1 KR100996856 B1 KR 100996856B1
Authority
KR
South Korea
Prior art keywords
port
status register
value
flag
subject
Prior art date
Application number
KR1020080107014A
Other languages
English (en)
Other versions
KR20100048031A (ko
Inventor
김점갑
최장욱
Original Assignee
주식회사 안철수연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 안철수연구소 filed Critical 주식회사 안철수연구소
Priority to KR1020080107014A priority Critical patent/KR100996856B1/ko
Publication of KR20100048031A publication Critical patent/KR20100048031A/ko
Application granted granted Critical
Publication of KR100996856B1 publication Critical patent/KR100996856B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Human Computer Interaction (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

본 발명은 키보드의 상태 레지스터(state register)를 이용한 키로거(Keylogger) 탐지 및 방어 방법 및 장치에 관한 것이다. 본 발명은, 키보드 컨트롤러의 상태 레지스터를 감시하는 단계와, 상기 상태 레지스터의 값이 기 설정된 횟수 이상 동일하게 반복되는지 판단하는 단계와, 상기 상태 레지스터의 값이 상기 횟수 이상 동일하게 반복되는 경우 상기 키보드 컨트롤러의 포트를 감시하는 단계, 및 상기 포트에 대한 접근 주체가 기 설정된 안전한 주체가 아닌 경우 상기 상태 레지스터의 값을 변경하는 단계를 포함하는 키로거 탐지 및 방어 방법을 제공한다. 본 발명에 의하면, 사용자의 키보드 입력 데이터를 안전하게 보호할 수 있게 되는 효과가 있다.
키로거, 키보드 보안, 해킹 툴, 포트 폴링, 상태 레지스터, C/D 플래그

Description

키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어 방법, 장치 및 그 방법을 수행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체{Method And Apparatus For Detecting And Protecting Keylogger Using State Register Of Keyboard And Computer Readable Medium Storing A Program For Method Thereof}
본 발명은 키보드의 상태 레지스터를 이용한 키로거(Keylogger) 탐지 및 방어 방법에 관한 것이다. 구체적으로 본 발명은, 키보드 컨트롤러(Keyboard Controller)의 상태 레지스터의 C/D 플래그를 감시하여 포트 폴링(Port-polling) 키로거를 탐지하고, 일정한 경우 C/D 플래그 값을 변경하여 키로거가 사용자 입력 정보를 분석할 수 없도록 방어하는 키로거 탐지 및 방어 방법에 관한 것이다.
키로거는 해킹 툴(hacking tool)의 일종으로, 사용자의 컴퓨터에 몰래 설치되어 키보드 입력 정보를 가로채는 프로그램이다. 키로거는 운영체제 수준, 드라이버(driver) 수준, 어플리케이션(application) 수준 등 다양한 계층에 존재하면서 자신의 존재를 사용자에게 드러내지 않고 개인 정보를 수집한다.
그 중 포트 폴링 키로거란, 윈도우 커널 레벨에서 키보드 포트인 0x60, 0x64 를 주기적으로 읽어서 사용자가 입력하는 키 값을 가로채는 유형의 키로거를 말한다.
최근 PS/2 포트를 폴링하는 키로거에 대한 방어 방법으로, 시드(seed) 및 해시 카운터(hash counter)를 이용하여 사용자의 키보드 입력과 관계없이 랜덤 키(random key)를 생성하여 포트에 기록하는 기술이 제안되었다. 이 방법에 의하면, 포트 폴링 키로거는 임의로 발생된 랜덤 키와 사용자가 직접 입력한 실제 키를 모두 가져가게 되므로, 키로거는 사용자가 실제 입력한 정보를 분석하기 어려워진다.
이러한 기술에 의하여 단순한 포트 폴링 키로거는 방어할 수 있다. 그러나, 키보드 컨트롤러의 상태 레지스터의 C/D 플래그를 분석하는 일부 포트 폴링 키로거를 방어하는 것은 어렵다. 랜덤 키를 발생시킬 때 8042 키보드 컨트롤러 및 호환 칩셋(chipset)의 상태 레지스터의 C/D 플래그가 특정한 값으로 설정되는데, 이 값은 사용자가 숨길 수 없기 때문이다.
이에, 상태 레지스터를 분석하는 포트 폴링 키로거에 대한 탐지 및 방어 방법에 대한 요구가 대두되고 있다.
상기 문제점을 해결하기 위하여 본 발명은, 키보드 컨트롤러의 상태 레지스터를 분석하는 포트 폴링 키로거의 존재를 탐지하는 것을 목적으로 한다.
또한, 일정한 경우 C/D 플래그 값을 변경 및 교란하여 상태 레지스터를 분석하는 포트 폴링 키로거가 사용자 입력 정보를 분석할 수 없도록 방어하는 것을 목적으로 한다.
상기 목적을 달성하기 위하여 본 발명의 제 1 측면은, 레지스터 감시부에서 키보드 컨트롤러의 상태 레지스터를 감시하는 단계; 상기 레지스터 감시부에서 상기 상태 레지스터의 값이 기 설정된 이상 패턴을 나타내는지 판단하는 단계; 상기 이상 패턴으로 판단된 경우, 포트 감시부에서 상기 키보드 컨트롤러의 포트를 감시하는 단계; 및 상기 포트에 대한 접근 주체가 기 설정된 안전한 주체가 아닌 경우, 상기 포트 감시부에서 상기 상태 레지스터의 값을 변경하는 단계를 포함하는 키로거 탐지 및 방어 방법을 제공한다.
또한, 상기 이상 패턴은 상기 상태 레지스터의 값이 적어도 기 설정된 횟수만큼 동일하게 반복되는 것인 키로거 탐지 및 방어 방법을 제공한다.
또한, 상기 상태 레지스터의 값이 상기 이상 패턴을 나타내는 경우 인터럽트 핸들러가 등록되는 키로거 탐지 및 방어 방법을 제공한다.
삭제
또한, 상기 인터럽트 핸들러는 인터럽트 벡터 INT1에 등록되는 키로거 탐지 및 방어 방법을 제공한다.
또한, 상기 감시되는 포트는 커맨드(Command) 포트 또는 데이터(Data) 포트 중 하나 이상을 포함하는 키로거 탐지 및 방어 방법을 제공한다.
또한, 상기 키보드 컨트롤러는 8042 키보드 컨트롤러 및 호환 칩셋이고, 상기 커맨드 포트의 입출력 어드레스는 0x64이며, 상기 데이터 포트의 입출력 어드레스는 0x60인 키로거 탐지 및 방어 방법을 제공한다.
또한, 랜덤 키 발생 루틴(routine)을 구동하는 단계를 더 포함하고, 상기 상태 레지스터를 감시하는 단계는 상기 랜덤 키 발생 루틴이 상기 포트에 쓰기 커맨드를 전송하기 전에 수행되고, 상기 상태 레지스터의 값을 변경하는 단계는 상기 안전한 주체가 아닌 접근 주체가 상기 포트에 접근하기 전에 수행되며, 상기 안전한 주체는 상기 랜덤 키 발생 루틴을 포함하는 키로거 탐지 및 방어 방법을 제공한다.
또한, 상기 쓰기 커맨드는 상기 상태 레지스터의 C/D 플래그를 1로 설정하는 키로거 탐지 및 방어 방법을 제공한다.
또한, 상기 포트에 대한 접근 주체가 기 설정된 안전한 주체가 아닌 경우, 상기 포트 감시부에서 상기 키로거에 관련된 정보를 제거하거나 교란하는 단계를 더 포함하는 키로거 탐지 및 방어 방법을 제공한다.
또한, 상기 상태 레지스터의 값은 상기 상태 레지스터의 C/D 플래그인 키로거 탐지 및 방어 방법을 제공한다.
상기 목적을 달성하기 위하여 본 발명의 제 2 측면은, 상기 기재된 방법 중 어느 한 방법을 수행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 제 공한다.
상기 목적을 달성하기 위하여 본 발명의 제 3 측면은, 키보드 컨트롤러의 상태 레지스터를 감시하여, 상기 상태 레지스터의 값이 기 설정된 이상 패턴을 나타내는지 판단하는 C/D 플래그 감시부; 상기 키보드 컨트롤러의 포트에 대한 안전한 접근 주체의 목록을 저장하는 안전한 접근 주체 목록 저장부; 및 상기 이상 패턴으로 판단된 경우 상기 포트를 감시하고, 상기 포트에 대한 접근 주체가 기 설정된 안전한 주체가 아닌 경우 상기 상태 레지스터의 값을 변경하는 포트 접근 주체 감시부를 포함하는 키로거 탐지 및 방어 장치를 제공한다.
또한, 상기 이상 패턴은 상기 상태 레지스터의 값이 기 설정된 횟수 이상 동일하게 반복되는 것인 키로거 탐지 및 방어 장치를 제공한다.
또한, 상기 감시되는 포트는 커맨드 포트 또는 데이터 포트 중 하나 이상을 포함하는 키로거 탐지 및 방어 장치를 제공한다.
또한, 상기 키보드 컨트롤러는 8042 키보드 컨트롤러 및 호환 칩셋이고, 상기 커맨드 포트의 입출력 어드레스는 0x64이고, 상기 데이터 포트의 입출력 어드레스는 0x60인 키로거 탐지 및 방어 장치를 제공한다.
또한, 사용자의 입력과 별개로 쓰기 커맨드 및 랜덤 키를 발생하여 상기 포트에 전송하는 랜덤 키 발생부를 더 포함하고, 상기 C/D 플래그 감시부는 상기 랜덤 키 발생부가 상기 포트에 쓰기 커맨드를 전송하기 전에 상기 상태 레지스터를 읽고, 상기 포트 접근 주체 감시부는 상기 안전한 주체가 아닌 접근 주체가 상기 포트에 접근하기 전에 상기 상태 레지스터의 값을 읽어 변경시키며, 상기 안전한 주체는 상기 랜덤 키 발생부를 포함하는 키로거 탐지 및 방어 장치를 제공한다.
또한, 상기 쓰기 커맨드는 상기 상태 레지스터의 C/D 플래그를 1로 설정하는 키로거 탐지 및 방어 장치를 제공한다.
또한, 상기 상태 레지스터의 값은 상기 상태 레지스터의 C/D 플래그인 키로거 탐지 및 방어 장치를 제공한다.
본 발명에 의하면, C/D 플래그를 분석하는 포트 폴링 키로거의 존재를 탐지함으로써, 키로거의 존재 가능성을 경고하고 사용자 및 보안 프로그램 개발자가 키로거 방어 대책을 강구할 수 있게 되는 효과가 있다.
또한, 키로거가 사용자가 입력한 데이터를 분석하지 못하도록 방어함으로써 사용자의 키보드 입력 데이터를 안전하게 보호할 수 있게 되는 효과가 있다.
이하 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 8042 키보드 컨트롤러 및 호환 칩셋의 상태 레지스터의 비트 정의를 도시한 것이다.
본 실시예에서 사용하는 8042 키보드 컨트롤러의 상태 레지스터(100)는 입출력 어드레스(Input/Output address, I/O address) 0x64에 존재하는 8비트(bit) ROM(Read-Only Memory)이다. 상태 레지스터(100)는 8042 키보드 컨트롤러 및 인터페이스의 상태에 관한 정보를 집약적으로 나타낸다. 예컨대, 상태 레지스터(100)의 비트 0은 출력 버퍼 상태(output buffer state)를, 비트 1은 입력 버퍼 상태(input buffer state)를, 비트 2는 시스템 플래그(system flag)를, 비트 3은 C/D 플래그(110)를 나타낸다. 또한, 비트 4는 키보드 금지 스위치(keyboard inhibit switch)를, 비트 5는 송신 시간 초과(Transmit Time-Out)를, 비트 6은 수신 시간 초과(Receive Time-Out)를, 비트 7은 패리티 오류(parity error)를 나타낸다.
8042 키보드 컨트롤러에서 입력 버퍼의 입출력 어드레스는 0x60 또는 0x64이며, 출력 버퍼의 입출력 어드레스는 0x60이다. 한편, 입출력 어드레스 0x64는 커맨드 포트(command port)로, 입출력 어드레스 0x60은 데이터 포트(data port)로 정의된다. 그래서 8042 키보드 컨트롤러에서는 커맨드 포트가 64 포트로, 데이터 포트가 60 포트로 불리우기도 한다. 커맨드 포트에 쓰기(write)를 실행하면 C/D 플래그(110)는 1이 되고, 데이터 포트에 쓰기를 실행하면 C/D 플래그(110)는 0이 된다. 커맨드 포트에 대한 쓰기 커맨드의 값은 0xd2인데, 데이터 포트에 데이터를 쓰기 전에 커맨드 포트에 0xd2 값을 입력해야 한다. 컨트롤러는 입력 버퍼에 전송 된 바이트(byte)가 커맨드 바이트인지 데이터 바이트인지 구별하기 위하여 C/D 플래그(110)를 사용한다.
도 2는 커맨드 포트 또는 데이터 포트의 입력 변화에 따른 C/D 플래그의 상태의 변화를 도시한 것이다.
여기서 X축은 시간을, Y축은 C/D 플래그의 상태의 논리 값(240)을 나타낸다. 데이터 포트에 데이터를 쓰기 전에 먼저 커맨드 포트에 쓰기(D2, 0xd2) 커맨드가 입력되는데(210), 이 때 C/D 플래그의 논리 값(240)은 1로 설정(set)된다. 이후, 데이터 포트에 데이터가 입력되기 시작하는데(220), 이때까지 C/D 플래그의 논리 값(240)은 변함이 없다. 그러나 데이터 포트에 데이터의 입력이 완료되면(230), C/D 플래그의 논리 값(240)은 0으로 리셋(reset)된다.
종래의 키보드 입력 정보 보호 기술인 랜덤 키 발생 루틴(routine)과 연동하여 수행되는 본 발명의 일 실시예에서도 동일한 원리가 적용된다. 데이터 포트에 랜덤 키를 쓰기 위하여 커맨드 포트에 D2 커맨드를 입력할 때(210) C/D 플래그(240)는 1로 설정되고, 실제 랜덤 키 발생 루틴이 랜덤 키를 생성한 후(220) 데이터 포트에 랜덤 키 입력을 완료하면(230) C/D 플래그(240)는 0으로 리셋된다.
C/D 플래그를 분석하는 키로거는, 임의의 커맨드를 계속 발생시킴으로써 C/D 플래그를 강제로 켜 놓고 C/D 플래그의 상태 변화를 관찰한다. 해당 키로거가 존재할 경우, 랜덤 키 발생 루틴이 발생시킨 랜덤 키가 들어오면 상기 과정에 의하여 랜덤 키 입력이 완료될 때 C/D 플래그가 0으로 리셋된 상태가 되는데, 키로거는 이것을 가상의 키로 파악하여 가로채지 않는다. 그러나 사용자가 키보드를 눌러 실 제 키를 입력할 경우 C/D 플래그는 1을 유지하고 있는 상태가 되므로, 키로거는 이것을 실제 키로 인식하여 가로채는 것이다.
도 3은 본 발명의 키로거 탐지 및 방어 방법의 개략적인 흐름을 나타내는 흐름도이다.
본 발명의 일 실시예는, 상태 키보드 컨트롤러의 상태 레지스터의 C/D 플래그를 감시하면서(S310), C/D 플래그에서 동일한 값이 적어도 기 설정된 횟수만큼 반복되는지 판단한다(S320). C/D 플래그에서 동일한 값이 일정 횟수 이상 반복되지 않는 경우에는 계속 감시를 반복한다. 그러나 일정 횟수 이상 반복되는 경우에는 C/D 플래그를 분석하는 포트 폴링 키로거의 존재 가능성을 탐지한 것이 되어, 키보드 컨트롤러의 커맨드 포트의 감시를 시작하게 된다(S340). 여기서의 감시 대상은 커맨드 포트 또는 데이터 포트 중 하나 이상이 될 수 있다. 실시예에 따라서는 C/D 플래그가 아닌 상태 레지스터의 다른 부분이 감시 대상이 될 수도 있고, 판단 대상은 C/D 플래그의 동일한 값의 반복 여부가 아니라 기 설정된 이상 패턴을 나타내는지 여부가 될 수도 있다.
이러한 포트 감시 및 후술하는 키로거 방어를 위한 일련의 단계는 인터럽트 핸들러에 의하여 수행될 수 있는데, 그러한 경우 인터럽트 핸들러를 등록하는 단계가 추가될 수도 있다(S330). 본 실시예에서는 인터럽트 핸들러는 인터럽트 벡터 INT1에 등록될 수 있다.
이러한 감시에 앞서 포트에 대한 안전한 접근 주체의 목록을 만들어 두어야 한다. 포트 감시 중에는 포트에 접근하는 주체가 미리 설정된 안전한 주체인지 여부를 판단한다(S350). 미리 설정된 안전한 주체가 포트에 접근한 경우라면 별다른 과정을 수행하지 않지만, 다른 주체가 포트에 접근한 것이 감지되면 본 실시예는 이것을 C/D 플래그를 분석하는 키로거로 판단하여 C/D 플래그 값을 변경하게 된다(S360). C/D 플래그 값의 변경 외에도 키로거에 관련된 정보를 제거하거나 교란하기 위한 다른 과정을 수행하게 할 수도 있다(S370).
한편, 랜덤 키 발생 루틴과 연동하기 위하여 랜덤 키 발생 루틴을 구동하는 단계가 더 포함될 수 있다. 이러한 경우 C/D 플래그를 감시하는 단계는 랜덤 키 발생 루틴이 커맨드 포트에 쓰기 커맨드를 전송하기 전에 수행되고, C/D 플래그의 값을 변경하는 단계는 안전하지 않은 접근 주체가 포트에 접근하기 전에 수행되며, 안전한 주체는 랜덤 키 발생 루틴을 포함할 것이다.
도 4는 본 발명의 키로거 탐지 및 방어 장치의 개략적인 구성을 나타내는 블록도이다.
먼저 종래의 키보드 컨트롤러 구성 요소로서, C/D 플래그(110)를 포함하는 8042 키보드 컨트롤러의 상태 레지스터(100), 커맨드 포트(464), 데이터 포트(460)가 도시되어 있다. 그리고 본 발명의 일 실시예의 구성 요소로서, C/D 플래그 감시부(410), 포트 접근 주체 감시부(420), 안전한 접근 주체 목록 저장부(430)가 도시되며, 랜덤 키 발생 루틴과 연동되는 경우 랜덤 키 발생부(440)가 추가될 수 있다.
C/D 플래그 감시부(410)는 키보드 컨트롤러의 상태 레지스터(100)의 C/D 플래그(110)를 감시하여, 동일한 값이 적어도 기 설정된 횟수만큼 반복되는지 판단한다. 실시예에 따라서는 C/D 플래그가 아닌 상태 레지스터의 다른 부분이 감시 대상이 될 수도 있고, 판단 대상은 C/D 플래그의 동일한 값의 반복 여부가 아니라 기 설정된 이상 패턴을 나타내는지 여부가 될 수도 있다.
안전한 접근 주체 목록 저장부(430)는 키보드 컨트롤러의 커맨드 포트(464)에 대한 안전한 접근 주체의 목록을 저장한다.
포트 접근 주체 감시부(420)는 C/D 플래그(110)에서 동일한 값이 일정 횟수 이상 반복되는 경우 커맨드 포트(464) 등을 감시하고, 커맨드 포트(464)에 대한 접근 주체가 안전한 접근 주체 목록 저장부(430)에 저장된 주체가 아닌 경우 C/D 플래그(110) 값을 변경한다.
실시예에 따라서는, 접근 주체의 안전성 판단, 감시 및 방어 대상에는 커맨드 포트(464)뿐만 아니라 데이터 포트(460) 등 다른 부분이 포함될 수도 있다.
랜덤 키 발생부(440)는 사용자의 입력과 별개로 쓰기 커맨드 및 랜덤 키를 발생하여 각각 커맨드 포트(464) 및 데이터 포트(460)에 전송한다. 이러한 경우 C/D 플래그 감시부(410)는 랜덤 키 발생부(440)가 커맨드 포트(464)에 쓰기 커맨드를 전송하기 전에 C/D 플래그(110)를 읽고, 포트 접근 주체 감시부(420)는 안전한 접근 주체 목록 저장부(430)에 저장되지 않은 주체가 커맨드 포트(464) 등에 접근하기 전에 C/D 플래그(110)의 값을 읽어 변경시키며, 안전한 접근 주체 목록 저장부(430)에는 랜덤 키 발생부(440)가 포함될 것이다.
본 실시형태의 모듈, 기능 블록들 또는 수단들은 전자 회로, 집적 회로, ASIC (Application Specific Integrated Circuit) 등 공지된 다양한 소자들로 구현 될 수 있으며, 각각 별개로 구현되거나 2 이상이 하나로 통합되어 구현될 수 있다.
이상과 같이 본 발명의 이해를 위하여 그 실시예를 기술하였으나, 당업자라면 알 수 있듯이, 본 발명은 본 명세서에서 기술된 특정 실시예에 한정되는 것이 아니라, 본 발명의 범주를 벗어나지 않는 범위 내에서 다양하게 변형, 변경 및 대체될 수 있다. 예를 들어, 문자 대신 기타 LCD 등 디스플레이에 의해 표시될 수 있는 그림, 영상 등에도 본 발명의 기술이 적용될 수 있다. 따라서, 본 발명의 진정한 사상 및 범주에 속하는 모든 변형 및 변경을 특허청구범위에 의하여 모두 포괄하고자 한다.
도 1은 8042 키보드 컨트롤러 및 호환 칩셋의 상태 레지스터의 비트 정의를 도시한 것이다.
도 2는 커맨드 포트 또는 데이터 포트의 입력 변화에 따른 C/D 플래그의 상태의 변화를 도시한 것이다.
도 3은 본 발명의 키로거 탐지 및 방어 방법의 개략적인 흐름을 나타내는 흐름도이다.
도 4는 본 발명의 키로거 탐지 및 방어 장치의 개략적인 구성을 나타내는 블록도이다.

Claims (19)

  1. 레지스터 감시부에서 키보드 컨트롤러의 상태 레지스터를 감시하는 단계;
    상기 레지스터 감시부에서 상기 상태 레지스터의 값이 기 설정된 이상 패턴을 나타내는지 판단하는 단계;
    상기 이상 패턴으로 판단된 경우, 포트 감시부에서 상기 키보드 컨트롤러의 포트를 감시하는 단계; 및
    상기 포트에 대한 접근 주체가 기 설정된 안전한 주체가 아닌 경우, 상기 포트 감시부에서 상기 상태 레지스터의 값을 변경하는 단계
    를 포함하는 키로거 탐지 및 방어 방법.
  2. 제 1항에 있어서,
    상기 이상 패턴은 상기 상태 레지스터의 값이 적어도 기 설정된 횟수만큼 동일하게 반복되는 것인
    키로거 탐지 및 방어 방법.
  3. 삭제
  4. 제 1항에 있어서,
    상기 상태 레지스터의 값이 상기 이상 패턴을 나타내는 경우 인터럽트 핸들러가 등록되는
    키로거 탐지 및 방어 방법.
  5. 제 4항에 있어서,
    상기 인터럽트 핸들러는 인터럽트 벡터 INT1에 등록되는
    키로거 탐지 및 방어 방법.
  6. 제 1항에 있어서,
    상기 감시되는 포트는 커맨드 포트 또는 데이터 포트 중 하나 이상을 포함하는
    키로거 탐지 및 방어 방법.
  7. 제 6항에 있어서,
    상기 키보드 컨트롤러는 8042 키보드 컨트롤러 및 호환 칩셋이고,
    상기 커맨드 포트의 입출력 어드레스는 0x64이며,
    상기 데이터 포트의 입출력 어드레스는 0x60인
    키로거 탐지 및 방어 방법.
  8. 제 1항에 있어서,
    랜덤 키 발생 루틴(routine)을 구동하는 단계를 더 포함하고,
    상기 상태 레지스터를 감시하는 단계는 상기 랜덤 키 발생 루틴이 상기 포트에 쓰기 커맨드를 전송하기 전에 수행되고,
    상기 상태 레지스터의 값을 변경하는 단계는 상기 안전한 주체가 아닌 접근 주체가 상기 포트에 접근하기 전에 수행되며,
    상기 안전한 주체는 상기 랜덤 키 발생 루틴을 포함하는
    키로거 탐지 및 방어 방법.
  9. 제 8항에 있어서,
    상기 상태 레지스터의 값은 상기 상태 레지스터의 C/D 플래그이며,
    상기 쓰기 커맨드는 상기 C/D 플래그를 1로 설정하는
    키로거 탐지 및 방어 방법.
  10. 제 1항에 있어서,
    상기 포트에 대한 접근 주체가 기 설정된 안전한 주체가 아닌 경우, 상기 포트 감시부에서 상기 키로거에 관련된 정보를 제거하거나 교란하는 단계
    를 더 포함하는 키로거 탐지 및 방어 방법.
  11. 제 1항에 있어서,
    상기 상태 레지스터의 값은 상기 상태 레지스터의 C/D 플래그인
    키로거 탐지 및 방어 방법.
  12. 제 1항, 제 2항 또는 제 4항 내지 제 11항 중 어느 한 항에 기재된 방법을 수행하는 프로그램이 기록된
    컴퓨터로 읽을 수 있는 기록매체.
  13. 키보드 컨트롤러의 상태 레지스터를 감시하여, 상기 상태 레지스터의 값이 기 설정된 이상 패턴을 나타내는지 판단하는 C/D 플래그 감시부;
    상기 키보드 컨트롤러의 포트에 대한 안전한 접근 주체의 목록을 저장하는 안전한 접근 주체 목록 저장부; 및
    상기 이상 패턴으로 판단된 경우 상기 포트를 감시하고, 상기 포트에 대한 접근 주체가 기 설정된 안전한 주체가 아닌 경우 상기 상태 레지스터의 값을 변경하는 포트 접근 주체 감시부
    를 포함하는 키로거 탐지 및 방어 장치.
  14. 제 13항에 있어서,
    상기 이상 패턴은 상기 상태 레지스터의 값이 기 설정된 횟수 이상 동일하게 반복되는 것인
    키로거 탐지 및 방어 장치.
  15. 제 13항에 있어서,
    상기 감시되는 포트는 커맨드 포트 또는 데이터 포트 중 하나 이상을 포함하는
    키로거 탐지 및 방어 장치.
  16. 제 15항에 있어서,
    상기 키보드 컨트롤러는 8042 키보드 컨트롤러 및 호환 칩셋이고,
    상기 커맨드 포트의 입출력 어드레스는 0x64이고,
    상기 데이터 포트의 입출력 어드레스는 0x60인
    키로거 탐지 및 방어 장치.
  17. 제 13항에 있어서,
    사용자의 입력과 별개로 쓰기 커맨드 및 랜덤 키를 발생하여 상기 포트에 전송하는 랜덤 키 발생부를 더 포함하고,
    상기 C/D 플래그 감시부는 상기 랜덤 키 발생부가 상기 포트에 쓰기 커맨드를 전송하기 전에 상기 상태 레지스터를 읽고,
    상기 포트 접근 주체 감시부는 상기 안전한 주체가 아닌 접근 주체가 상기 포트에 접근하기 전에 상기 상태 레지스터의 값을 읽어 변경시키며,
    상기 안전한 주체는 상기 랜덤 키 발생부를 포함하는
    키로거 탐지 및 방어 장치.
  18. 제 17항에 있어서,
    상기 상태 레지스터의 값은 상기 상태 레지스터의 C/D 플래그이며,
    상기 쓰기 커맨드는 상기 C/D 플래그를 1로 설정하는
    키로거 탐지 및 방어 장치.
  19. 제 13항에 있어서,
    상기 상태 레지스터의 값은 상기 상태 레지스터의 C/D 플래그인
    키로거 탐지 및 방어 장치.
KR1020080107014A 2008-10-30 2008-10-30 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체 KR100996856B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080107014A KR100996856B1 (ko) 2008-10-30 2008-10-30 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080107014A KR100996856B1 (ko) 2008-10-30 2008-10-30 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체

Publications (2)

Publication Number Publication Date
KR20100048031A KR20100048031A (ko) 2010-05-11
KR100996856B1 true KR100996856B1 (ko) 2010-11-26

Family

ID=42274861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080107014A KR100996856B1 (ko) 2008-10-30 2008-10-30 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체

Country Status (1)

Country Link
KR (1) KR100996856B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100549647B1 (ko) * 2005-08-09 2006-02-06 소프트캠프(주) 키보드 입력정보 보안방법
KR100589529B1 (ko) * 2005-08-09 2006-06-14 소프트캠프(주) 디버그 예외처리에 의한 키보드 입력정보 보안방법
KR100746944B1 (ko) * 2006-04-14 2007-08-07 고려대학교 산학협력단 정보 유출 방지 방법 및 정보 유출 방지를 수행하는프로그램이 저장된 기록 매체

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100549647B1 (ko) * 2005-08-09 2006-02-06 소프트캠프(주) 키보드 입력정보 보안방법
KR100589529B1 (ko) * 2005-08-09 2006-06-14 소프트캠프(주) 디버그 예외처리에 의한 키보드 입력정보 보안방법
KR100746944B1 (ko) * 2006-04-14 2007-08-07 고려대학교 산학협력단 정보 유출 방지 방법 및 정보 유출 방지를 수행하는프로그램이 저장된 기록 매체

Also Published As

Publication number Publication date
KR20100048031A (ko) 2010-05-11

Similar Documents

Publication Publication Date Title
US9680849B2 (en) Rootkit detection by using hardware resources to detect inconsistencies in network traffic
Demme et al. Side-channel vulnerability factor: A metric for measuring information leakage
JP4451884B2 (ja) コンピュータ保安装置、コンピュータ保安方法、及び記録媒体
US7953980B2 (en) Signed manifest for run-time verification of software program identity and integrity
US7594269B2 (en) Platform-based identification of host software circumvention
KR101006721B1 (ko) 키보드 입력정보 보안장치 및 그 방법
JP5374485B2 (ja) 情報セキュリティ保護ホスト
US8433924B2 (en) Apparatus, system, and method for authentication of a core root of trust measurement chain
CN105512055A (zh) 用于减少存储器信息泄漏的系统和方法
EP1752855A1 (en) Information processing device, anti-tamper method, and anti-tamper program
CN112613000A (zh) 一种敏感信息保护方法、装置、电子设备及可读存储介质
CN111985008A (zh) 涉及用于检测硬件木马的电路的设备和方法
KR100996856B1 (ko) 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체
EP3570197A1 (en) Electronic system and method for preventing malicious actions on a processing system of the electronic system
CN108345804A (zh) 一种可信计算环境中的存储方法和装置
US11503060B2 (en) Information processing apparatus, information processing system, security assessment method, and security assessment program
WO2021080602A1 (en) Malware identification
JPWO2019229883A1 (ja) 検査装置、検査方法及び検査プログラム
KR100676912B1 (ko) 불법적인 파일 액세스 및 전송 차단 장치
WO2021035429A1 (en) Method and system for security management on a mobile storage device
KR100557340B1 (ko) 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법
Cohen et al. Cybersecurity Information Technology
King Attacking computer security using peripheral device drivers
JP2012208959A (ja) 半導体記憶装置
KR20060097548A (ko) 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131122

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141124

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151123

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161122

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171122

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20181122

Year of fee payment: 9