KR20210084029A - 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 - Google Patents

테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20210084029A
KR20210084029A KR1020190176918A KR20190176918A KR20210084029A KR 20210084029 A KR20210084029 A KR 20210084029A KR 1020190176918 A KR1020190176918 A KR 1020190176918A KR 20190176918 A KR20190176918 A KR 20190176918A KR 20210084029 A KR20210084029 A KR 20210084029A
Authority
KR
South Korea
Prior art keywords
task
processes
ptrace
checking
kernel
Prior art date
Application number
KR1020190176918A
Other languages
English (en)
Other versions
KR102325291B1 (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 KR1020190176918A priority Critical patent/KR102325291B1/ko
Publication of KR20210084029A publication Critical patent/KR20210084029A/ko
Application granted granted Critical
Publication of KR102325291B1 publication Critical patent/KR102325291B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

다양한 실시 예에 따르면, 커널에 의한 테스크 추적을 하기 위한 방법에 있어서, 실행 중인 하나 이상의 프로세스를 확인하는 동작; ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하는 동작; 상기 생성된 테스크에 대응하는 정보를 확인하는 동작; 및 상기 확인된 정보를 지정된 엔진으로 전달하는 동작을 포함할 수 있다.

Description

테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램{METHOD, DEVICE, COMPUTER-READABLE STORAGE MEDIUM AND COMPUTER PROGRAM FOR TRACKING TASK}
본 발명은 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램에 관한 것이다.
최근, 운영 체제(OS; operating system)의 보안을 강화하기 위한 다양한 기술 개발이 이루어지고 있다. 상기 운영 체제의 보안 강화를 위한 Anti-Virus 기능은 입출력(I/O)의 주체인 테스크(task)의 시작 시점의 파악에 기초하여 수행될 수 있다. 상기 테스크의 시작은, 프로세스 및/또는 스레드의 생성(발생)부터일 수 있으며, 이에 따라, 상기 프로세스 및/또는 스레드의 생성 시점의 파악에 기초하여 상기 Anti-Virus 기능이 상기 테스크에 대한 악성 코드 감염 여부를 판단할 수 있다. 이에 따라, 운영 체제상에서 보안 강화를 위한 Anti-virus 기능이 수행되도록 하기 위해, 자식 프로세스 및/또는 스레드의 추적 및 제어 기술이 요구될 수 있다.
한편, 운영체제의 한 종류인 리눅스의 리눅스 커널에서는 다양한 방식으로 필터링 기능을 제공하고 있다. 그러나, 종래의 리눅스 커널에서 제공하는 필터링 기능은 특정 커널 컴파일 옵션에 좌우되는 경향이 있다. 이러한 경향은 예를 들어, 보안 강화 리눅스(SELinux; Security-Enhanced Linux)의 리눅스 커널, kprobe 및/또는 ktrace를 사용할 수 있도록 컴파일 된 리눅스 커널 등에서 나타날 수 있다.
대한민국공개특허 10-2019-0109524, 2019.09.25 공개
본 발명의 실시 예는, 리눅스 운영 체제에서, 일반적으로 유저 레벨(user level)에서의 디버거 구현을 가능하게 하는 기술인 ptrace(process trace)를 커널 레벨에서 이용하여, 자식 프로세스 및/또는 스레드를 추적하여 제어 할 수 있도록 하기 위한, 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램을 제공할 수 있다.
일 실시 예에 따르면, 커널에 의한 테스크 추적을 하기 위한 방법에 있어서, 실행 중인 하나 이상의 프로세스를 확인하는 동작; ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하는 동작; 상기 생성된 테스크에 대응하는 정보를 확인하는 동작; 및 상기 확인된 정보를 지정된 엔진으로 전달하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서, 실행 중인 하나 이상의 프로세스를 확인하는 동작; ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하는 동작; 상기 생성된 테스크에 대응하는 정보를 확인하는 동작; 및 상기 확인된 정보를 지정된 엔진으로 전달하는 동작을 포함하는 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함할 수 있다.
일 실시 예에 따르면, 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서, 실행 중인 하나 이상의 프로세스를 확인하는 동작; ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하는 동작; 상기 생성된 테스크에 대응하는 정보를 확인하는 동작; 및 상기 확인된 정보를 지정된 엔진으로 전달하는 동작을 포함하는 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함할 수 있다.
일 실시 예에 따르면, 테스크 추적을 하기 위한 장치에 있어서, 프로세서; 및 상기 프로세서과 전기적으로 연결되며, 상기 프로세서에 의해 실행되는 메모리를 포함하며, 상기 메모리는 운영체제 및 하나 이상의 어플리케이션을 저장하도록 구성되며, 상기 운영체제에 포함된 커널이, 상기 하나 이상의 어플리케이션에서 실행 중인 하나 이상의 프로세스를 확인하며, ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하며, 상기 생성된 테스크에 대응하는 정보를 확인하며, 상기 확인된 정보를 지정된 엔진으로 전달하도록 하는 명령을 포함할 수 있다.
따라서, 본 발명의 실시 예에 따른 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램은, 리눅스 커널에서, 일반적으로 유저 레벨(user level)에서의 디버거 구현을 가능하게 하는 기술인 ptrace(process trace)를 커널 레벨에서 이용하여, 자식 프로세스 및/또는 스레드를 추적하여 제어할 수 있다.
예를 들어, 본 발명의 실시 예에 따르면, 입출력(I/O)을 시작하는 최초의 주체를 필터링하고 제어할 수 있는 기술을 제공할 수 있다. 또한, 상기 기술을 유저 레벨의 어플리케이션의 기반 기술에 적용시킬 수 있다.
도 1은 본 발명의 일 실시 예에 따른 테스크 추적을 하기 위한 장치의 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 프로세스의 자식 프로세스 및/또는 스레드 추적을 하기 위한 동작의 흐름도이다.
도 3은 본 발명의 일 실시 예에 따른 프로세스의 자식 프로세스 및/또는 스레드 추적을 하기 위한 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 테스크 추적을 하기 위한 동작의 흐름도이다.
먼저, 본 발명의 장점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되는 실시 예들을 참조하면 명확해질 것이다. 여기에서, 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 발명의 범주를 명확하게 이해할 수 있도록 하기 위해 예시적으로 제공되는 것이므로, 본 발명의 기술적 범위는 청구항들에 의해 정의되어야 할 것이다.
아울러, 아래의 본 발명을 설명함에 있어서 공지 기능 또는 구성 등에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들인 것으로, 이는 사용자, 운용자 등의 의도 또는 관례 등에 따라 달라질 수 있음은 물론이다. 그러므로, 그 정의는 본 명세서의 전반에 걸쳐 기술되는 기술사상을 토대로 이루어져야 할 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세하게 설명한다.
도 1은 본 발명의 일 실시 예에 따른 테스크 추적을 하기 위한 장치(100)의 블록도이다.
도 1을 참조하면, 상기 장치(100)는 프로세서(101) 및 메모리(111)를 포함할 수 있다.
일 실시 예에 따르면, 프로세서(101)는 예를 들면, 소프트웨어(예: 프로그램(121))를 구동하여 프로세서(101)에 연결된 장치(100)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 및 연산을 수행할 수 있다.
일 실시 예에 따르면, 메모리(111)는 장치(100)의 적어도 하나의 구성요소(프로세서(101))에 의해 사용되는 다양한 데이터, 예를 들어, 소프트웨어(예: 프로그램(121)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 저장할 수 있다. 메모리(111)는, 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다.
일 실시 예에 따르면, 프로그램(121)은 상기 메모리(111)에 저장되는 소프트웨어로서, 예를 들면, 운영 체제(130) 및/또는 어플리케이션(140)(어플리케이션 프로세스 또는 어플리케이션 프로그램이라고도 함)을 포함할 수 있다.
상기 운영 체제(130)는 상기 장치(100)의 하나 이상의 리소스(예: 프로세서(101) 및 메모리(111))를 제어할 수 있다. 상기 운영 체제(130)는 커널(131)을 포함할 수 있으며, 상기 커널(131)은, 예를 들면, 프로그램들(예: 어플리케이션(140))에 구현된 동작 또는 기능을 실행하는 데 사용되는 하나 이상의 리소스를 제어 또는 관리할 수 있다.
일 실시 예에 따르면, 상기 프로세서(101)에 의해, 상기 운영 체제(130)에 포함된 커널(131)은, 상기 어플리케이션(140)에서 실행 중인 하나 이상의 프로세스를 확인하며, ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스의 테스크(task)의 생성을 확인하며, 상기 생성된 테스크에 대응하는 정보를 확인하며, 상기 확인된 정보를 지정된 엔진으로 전달하도록 할 수 있다.
예를 들어, 상기 커널(131)은, 상기 하나 이상의 프로세스의 테스크의 생성 시점을 추적할 수 있다.
예를 들어, 상기 하나 이상의 프로세스의 상기 테스크의 생성 시점의 추적에 기초하여, 상기 생성된 테스크의 상태가 대기 상태가 되도록 설정될 수 있다.
예를 들어, 상기 커널(131)은, 상기 확인된 정보의 전달에 응답하여, 상기 ptrace를 이용하여, 상기 지정된 엔진으로부터 상기 생성된 테스크의 제어에 대응하는 시그널을 전달받아 메모리(111)에 저장하고, 상기 메모리(111)에 저장된 시그널에 기초하여, 상기 생성된 테스크의 제어에 대응하도록 상기 생성된 테스크를 처리할 수 있다.
예를 들어, 상기 테스크의 제어에 대응하는 시그널은, 상기 대기 상태의 상기 테스크가 제거되도록 하는 제어 시그널 또는 상기 대기 상태의 상기 테스크의 대기 상태가 해제되도록 하는 제어 시그널을 포함할 수 있다.
예를 들어, 상기 커널(131)은, 상기 테스크의 생성 확인에 기초하여 상기 ptrace를 이용한 메모리에 저장된 식별 정보에 기초하여, 상기 생성된 테스크가 자식 프로세스인지 스레드인지를 확인할 수 있다. 상기 자식 프로세스는, 프로그램의 실행 중에 특정 프로세스(예: 부모 프로세스라고도 함)가 만들어낸(상기 특정 프로세스에서 포크(fork)하여 생긴) 또 다른 프로세스를 의미한다.
도 2는 본 발명의 일 실시 예에 따른 프로세스의 자식 프로세스 및/또는 스레드 추적을 하기 위한 동작의 흐름도이다.
201 동작에서, 커널(예: 커널(121))은 하나 이상의 트레이서(tracer)(커널 스레드 트레이서(kernel thread tracer)라고도 함)를 생성할 수 있다.
일 실시 예에 따르면, 운영 체제(예: 운영 체제(120))의 시작에 기초하여, 상기 커널이 동작할 수 있으며, 상기 커널은 상기 하나 이상의 트레이서를 생성할 수 있다. 예를 들어, 상기 커널은, 상기 운영 체제의 상태, CPU 상태(예: CPU 개수) 등에 기초하여 상기 생성할 트레이서의 개수를 결정할 수 있으며, 상기 결정된 개수에 따라, 상기 하나 이상의 트레이서를 생성할 수 있다.
203 동작에서, 상기 커널은 장치(예: 장치(101))(시스템이라고도 함)에서 현재 동작(실행) 중인 하나 이상의 프로세스를 확인할 수 있다.
일 실시 예에 따르면, 상기 커널은 상기 장치에서 현재 동작 중인 모든 프로세스들의 정보를 수집하여 현재 동작 중인 모든 프로세스들을 확인할 수 있다.
일 실시 예에 따르면, 상기 장치의 메모리(예: 메모리(111))의 run-queue 상에 상기 현재 동작(실행) 중인 모든 프로세스들의 정보(모든 프로세스들의 리스트)가 저장되어 있으며, 상기 run-queue의 전체 순회를 통해, 상기 현재 동작 중인 모든 프로세스들을 확인할 수 있다. 예를 들어, 상기 커널은, ptrace를 통해, 상기 run-queue를 확인하여, 프로세스 및/또는 스레드의 생성을 추적할 수 있다.
205 동작에서 상기 커널은 상기 확인된 하나 이상의 프로세스 중 ptrace 추적 동작을 시작할 적어도 하나의 프로세스를 결정할 수 있다.
일 실시 예에 따르면, 상기 커널은, 상기 확인된 하나 이상의 프로세스에서 ptrace 추적 동작이 적용되지 않도록 기 설정된 프로세스를 제외하여, ptrace를 이용한 상기 ptrace 추적 동작을 시작할 적어도 하나의 프로세스를 결정할 수 있다. 상기 기 설정된 프로세스는, 상기 운영 체제의 기본 기능에 대응하는 프로세스, ptrace 추적 동작의 적용이 제외되어야 할 중요 프로세스, 안정성이 확인된 프로세스, 및/또는 악성 코드 감염 여부를 판단할 필요가 없는 프로세스를 포함할 수 있다.
일 실시 예에 따르면, 상기 커널은, 상기 205 동작의 상기의 결정에 기초하여, 상기 트레이서가 대기 상태가 되도록 할 수 있다.
207 동작에서, 상기 커널은 상기 확인된 하나 이상의 프로세스의 테스크(task)가 생성되었는지를 확인할 수 있다.
일 실시 예에 따르면, 상기 테스크 생성은 자식 프로세스의 생성 및/또는 스레드의 생성을 포함할 수 있다.
일 실시 예에 따르면, 상기 확인된 하나 이상의 프로세스는, clone 시스템 콜을 통해, 자식 프로세스 및/또는 스레드를 생성을 할 수 있으며, 현재의 상태(자식 프로세스 및/또는 스레드의 생성 상태)에서 동작을 정지(stop), 예를 들어, 상기 생성된 자식 프로세스 및/또는 스레드가 대기 상태가 되도록 할 수 있다. 상기 clone 시스템 콜이 발생하면, 상기 ptrace를 통해, 대응하는 시그널(signal)이 하나 이상의 트레이서 각각의 시그널 큐로 전달될 수 있다. 예를 들어, 상기 확인된 하나 이상의 프로세스는, 어플리케이션의 프로세스일 수 있다. 예를 들어, 상기 clone 시스템 콜은, fork, pthread_create와 같은 명령어 입력에 기초하여 발생될 수 있다.
일 실시 예에 따르면, 상기 커널은, ptrace를 이용한 ptrace 추적 동작에 기초하여, 상기 테스크가 생성되었는지를 확인할 수 있다. 예를 들어, 상기 커널은 ptrace 추적 동작에 기초하여, 상기 하나 이상의 트레이서의 대기 상태가 해제되도록 하여, 상기 하나 이상의 트레이서가, 대응하는 시그널 큐로 전달된 시그널을 확인하도록 할 수 있다. 예를 들어, 상기 하나 이상의 트레이서는, 상기 시그널 큐로 전달되어 확인된 시그널에 기초하여, 상기 테스크가 생성된 것으로 확인할 수 있다.
209 동작에서, 상기 커널은 상기 생성된 테스크에 대응하는 정보를 확인할 수 있다.
일 실시 예에 따르면, 상기 하나 이상의 트레이서는, 상기 ptrace를 통해 상기 시그널 큐로 전달되어 확인된 시그널에 포함된 식별 정보에 기초하여, 상기 테스크에 대응하는 정보를 확인할 수 있다.
예를 들어, 상기 테스크에 대응하는 정보는, 상기 생성된 테스크가 자식 프로세스의 생성인지 또는 스레드의 생성인지에 대한 정보와, 상기 생성된 테스크와 이전에 생성된 테스크 간의 관계에 대한 정보를 포함할 수 있다.
예를 들어, 상기 시그널에 포함된 식별 정보는, 예를 들어, tgid(thread group identification(ID)) 및 pid(process ID)를 포함할 수 있다.
예를 들어, 최초로 스레드가 생성되면 상기 최초로 생성된 스레드의 tgid 및 pid는 동일하게 생성되어 부여되며, 두 번째로 스레드가 생성되면 두 번째로 생성된 스레드의 tgid는 상기 최초로 생성된 tgid와 동일하고 상기 두 번째로 생성된 스레드의 pid는 상기 최초로 생성된 스레드의 pid와 상이하게 생성되어 부여될 수 있다.
예를 들어, 최초로 프로세스가 생성되면, 상기 최초로 생성된 프로세스의 tgid 및 pid는 동일하게 부여되고, 상기 최초로 생성된 프로세스의 자식 프로세스가 생성되면, 상기 자식 프로세스의 tgid 및 pid는 동일하되, 상기 최초로 생성된 프로세스의 tgid 및 pid와는 상이하게 생성되어 부여될 수 있다.
예를 들어, 상기 tgid 및 상기 pid에 기초하여, 스레드가 생성되었는지 자식 프로세스가 생성되었는지를 확인할 수 있다. 예를 들어, 상기 tgid에 기초하여, 스레드의 생성 시 상기 생성된 스레드가 포함되는 그룹을 확인할 수 있으며, 자식 프로세스의 생성 시 상기 생성된 자식 프로세스의 부모 프로세스를 확인할 수 있다.
211 동작에서, 상기 커널은, 상기 생성된 테스크에 대응하는 정보를, 지정된 엔진으로 전달 할 수 있다.
일 실시 예에 따르면, 상기 테스크 생성의 확인 시, 상기 테스크의 상태는 대기 상태가 되어, 상기 테스크는 정지(stop)될 수 있다.
일 실시 예에 따르면, 상기 지정된 엔진은, 테스크에 대응하는 정보를 이용, 예를 들어, 상기 전달된 테스크에 대응하는 정보에 기초하여, 상기 테스크에 대한 제어를 설정할 수 있다.
예를 들어, 상기 지정된 엔진이, 악성 코드에 감염되었는지 여부를 모니터링하는 엔진인 경우, 상기 엔진은 상기 전달된 테스크에 대응하는 정보에 기초하여, 상기 테스크에 대한 악성 코드의 감염 여부를 결정할 수 있으며, 상기 감염 여부에 기초하여, 상기 테스크에 대한 제어를 설정할 수 있다. 예를 들어, 상기 제어는, 상기 테스크가 수행되지 않도록(상기 테스크가 실패되도록) 하기 위한 실패 제어(kill 또는 제거 제어라고도 함) 또는 상기 테스크가 수행되도록 하기 위한(상기 테스크가 통과되도록 하기 위한) 성공 제어일 수 있다.
예를 들어, 상기 생성된 테스크에 대응하는 정보의 전달에 응답하여, 상기 커널은, 상기의 테스크 생성 시(상기 테스크 생성의 확인 시)의 정지된 상기 테스크의 상태를, ptrace를 통해, 변경할 수 있다. 예를 들어, 상기 커널은 상기 테스크의 제어에 대응하는 시그널을 ptrace를 통해 수신하여, 상기의 테스크 생성 시(상기 테스크 생성의 확인 시)의 정지 상태의 상기 테스크의 상태를 변경할 수 있다. 상기 테스크의 상태 변경은, 상기 성공 제어에 대응하는 상기 정지된 테스크가 다시 동작되도록(running되도록) 하는 변경, 상기 실패 제어에 대응하는 상기 정지된 테스크가 제거되도록(kill되도록 또는 삭제되도록)하는 변경을 포함할 수 있다. 상기 동작의 상태 변경에 기초하여, 상기 정지된 테스트가 다시 동작되거나 또는 제거될 수 있다. 예를 들어, 상기 커널은 상기 테스크의 제거에 대응하는 시그널을 ptrace를 통해 수신하여, 메모리 상에 상기 제거된 테스크 관련 정보를 제거할 수 있다.
다른 실시 예에 따르면, 상기 지정된 엔진은, 상기 테스크에 대응하는 정보를 모니터링(확인)할 수 있다. 예를 들어, 상기 엔진이 상기 테스크에 대응하는 정보를 확인하는 동작만 수행할 수 있다.
상술한 도 2의 실시 예에서, 추가로, 추가 자식 프로세스 및/또는 추가 스레드가 생성될 수 있으며, 상기 추가 자식 프로세스 및/또는 추가 스레드의 생성 시, 상기 커널은 상술한 도 2의 실시 예의 동작과 대응되는 동작을 수행할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 프로세스의 자식 프로세스 및/또는 스레드 추적을 하기 위한 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 커널 레벨(301)의 커널(121)이, 하나 이상의 트레이서, 예를 들어, 제1 트레이서(302), 제2 트레이서(304) 및 제3 트레이서(306)를 생성할 수 있다. 상기 제1 트레이서(302), 상기 제2 트레이서(304) 및 상기 제3 트레이서(306) 각각은, 메모리의 대응하는 시그널 큐를 통해, 예를 들어, 시그널 큐(312), 시그널 큐(314) 및 시그널 큐(316) 각각을 통해 유저 레벨(321)의 하나 이상의 프로세스(예: 어플리케이션 프로세스(140))로 시그널(signal)을 전송 및/또는 수신할 수 있다. 예를 들어, 상기 제1 트레이서(302), 상기 제2 트레이서(304) 및 상기 제3 트레이서(306) 각각이 ptrace 추적을 시작할 경우, 상기 제1 트레이서(302), 상기 제2 트레이서(304) 및 상기 제3 트레이서(306) 각각은, ptrace 추적 시작에 대응하는 시그널(signal)을 시그널 큐(312), 시그널 큐(314) 및 시그널 큐(316) 각각에 전달할 수 있다.
일 실시 예에 따르면, 상기 ptrace 추적 시작에 대응하는 시그널은, 유저 레벨(321)에서의 어떤 이벤트에 대한 메시지를 전달해달라는 정보를 포함할 수 있다. 예를 들어, 상기 커널은, 사용자 입력에 기초하여, 상기 ptrace 추적 시작에 대응하는 시그널이, 스레드의 생성 및/또는 자식 프로세스의 생성에 대응하는 시그널(메시지라고도 함)를 전달해달라는 정보가 포함되도록 설정할 수 있다. 예를 들어, 어플리케이션 프로세스(140)가 스레드(322), 프로세스(324), 및/또는 프로세스(326)의 생성 시, 상기 ptrace의 추적 시작에 기초하여, 상기 ptrace가, 스레드(322), 프로세스(324), 및/또는 프로세스(326)의 생성에 따른 시그널이 대응하는 시그널 큐로 전달되도록 할 수 있다. 상기 커널(121)은 상기 제1 트레이서(302), 제2 트레이서(304) 및 제3 트레이서(306) 각각을 이용하여, 시그널 큐(312), 시그널 큐(314) 및 시그널 큐(316)에 전달되어 저장된 시그널을 확인할 수 있다. 상기 커널(121)은 상기 확인된 시그널에 기초하여, 스레드 생성인지 자식 프로세스 생성인지를 확인할 수 있다.
일 실시 예에 따르면, 유저 레벨(321)의 하나 이상의 프로세스(예: 어플리케이션 프로세스(140))에서의 스레드의 생성 또는 자식 프로세스의 생성에 기초하여, 상기 커널(121)은 필터링 기능, 즉, 상기 하나 이상의 프로세스가 스레드의 생성을 수행하였는지 자식 프로세스의 생성을 수행하였는지를 특정 엔진에 전달할 수 있다. 예를 들어, 상기 특정 엔진은, 상기 필터링 기능을 이용하여 상기 하나 이상의 프로세스가 악성코드에 감염되었는지 여부를 모니터링하는 구성 등 사용자 설정에 따라 다양할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 테스크 추적을 하기 위한 동작의 흐름도이다.
도 4를 참조하면, 401 동작에서 커널(예: 커널(131))은 실행 중인 하나 이상의 프로세스를 확인할 수 있다.
403 동작에서 상기 커널은 ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스의 테스크(task)의 생성을 확인할 수 있다.
일 실시 예에 따르면, 상기 커널은, 상기 하나 이상의 프로세스의 테스크의 생성 시점을 추적할 수 있다.
예를 들어, 상기 하나 이상의 프로세스의 상기 테스크의 생성 시점의 추적에 기초하여, 상기 생성된 테스크의 상태가 대기 상태가 되도록 설정될 수 있다.
405 동작에서 상기 커널은 상기 생성된 테스크에 대응하는 정보를 확인할 수 있다.
일 실시 예에 따르면, 상기 커널은, 상기 확인된 정보의 전달에 응답하여, 상기 ptrace를 이용하여, 상기 지정된 엔진으로부터 상기 생성된 테스크의 제어에 대응하는 시그널을 전달받아 메모리에 저장할 수 있다. 또한, 상기 커널은, 상기 메모리에 저장된 시그널에 기초하여, 상기 생성된 테스크의 제어에 대응하도록 상기 생성된 테스크를 처리할 수 있다.
예를 들어, 상기 생성된 테스크의 제어에 대응하는 시그널은, 상기 대기 상태의 상기 테스크가 제거되도록 하는 제어 시그널 또는 상기 대기 상태의 상기 테스크의 대기 상태가 해제되도록 하는 제어 시그널을 포함할 수 있다.
일 실시 예에 따르면, 상기 커널은, 상기 테스크의 생성 확인에 기초하여 상기 ptrace를 이용한 메모리에 저장된 식별 정보에 기초하여, 상기 생성된 테스크가 자식 프로세스인지 스레드인지를 확인할 수 있다.
407 동작에서 상기 커널은 상기 확인된 정보를 지정된 엔진으로 전달할 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)(예: 메모리(111)(내장 메모리 또는 외장 메모리))에 저장된 명령어를 포함하는 소프트웨어(예: 프로그램)로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시예들에 따른 전자 장치(예: 장치(100))를 포함할 수 있다. 상기 명령이 프로세서(예: 프로세서(101))에 의해 실행될 경우, 프로세서가 직접, 또는 상기 제어부의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
일시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다.
이상의 설명은 본 발명의 기술사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경 등이 가능함을 쉽게 알 수 있을 것이다. 즉, 본 발명에 개시된 실시 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것으로서, 이러한 실시 예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다.
따라서, 본 발명의 보호 범위는 후술되는 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명의 실시 예는, 리눅스(linux) 어플리케이션(application)의 기능에 적용할 수 있다. 또한 본 발명의 실시 예는 리눅스 EDR(endpoint detection and response)의 기술로 이용할 수 있다.

Claims (9)

  1. 커널에 의한 테스크 추적을 하기 위한 방법에 있어서,
    실행 중인 하나 이상의 프로세스를 확인하는 동작;
    ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하는 동작;
    상기 생성된 테스크에 대응하는 정보를 확인하는 동작; 및
    상기 확인된 정보를 지정된 엔진으로 전달하는 동작을 포함하는 테스크 추적을 하기 위한 방법.
  2. 제 1항에 있어서, 상기 하나 이상의 프로세스의 테스크(task)의 생성을 확인하는 동작은,
    상기 하나 이상의 프로세스의 테스크의 생성 시점을 추적하는 동작을 포함하는 테스크 추적을 하기 위한 방법.
  3. 제 2항에 있어서, 상기 하나 이상의 프로세스의 상기 테스크의 생성 시점의 추적에 기초하여, 상기 생성된 테스크의 상태가 대기 상태가 되도록 설정된 테스크 추적을 하기 위한 방법.
  4. 제 3항에 있어서,
    상기 확인된 정보의 전달에 응답하여, 상기 ptrace를 이용하여, 상기 지정된 엔진으로부터 상기 생성된 테스크의 제어에 대응하는 시그널을 전달받아 메모리에 저장하는 동작, 및
    상기 메모리에 저장된 시그널에 기초하여, 상기 생성된 테스크의 제어에 대응하도록 상기 생성된 테스크를 처리하는 동작을 포함하는 테스크 추적을 하기 위한 방법.
  5. 제 4항에 있어서, 상기 테스크의 제어에 대응하는 시그널은,
    상기 대기 상태의 상기 테스크가 제거되도록 하는 제어 시그널 또는 상기 대기 상태의 상기 테스크의 대기 상태가 해제되도록 하는 제어 시그널을 포함하는 테스크 추적을 하기 위한 방법.
  6. 제 1항에 있어서, 상기 생성된 테스크에 대응하는 정보를 확인하는 동작은,
    상기 테스크의 생성 확인에 기초하여 상기 ptrace를 이용한 메모리에 저장된 식별 정보에 기초하여, 상기 생성된 테스크가 자식 프로세스인지 스레드인지를 확인하는 동작을 포함하는 테스크 추적을 하기 위한 방법.
  7. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    실행 중인 하나 이상의 프로세스를 확인하는 동작;
    ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하는 동작;
    상기 생성된 테스크에 대응하는 정보를 확인하는 동작; 및
    상기 확인된 정보를 지정된 엔진으로 전달하는 동작을 포함하는 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 판독 가능한 기록매체.
  8. 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서,
    실행 중인 하나 이상의 프로세스를 확인하는 동작;
    ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하는 동작;
    상기 생성된 테스크에 대응하는 정보를 확인하는 동작; 및
    상기 확인된 정보를 지정된 엔진으로 전달하는 동작을 포함하는 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 프로그램.
  9. 테스크 추적을 하기 위한 장치에 있어서,
    프로세서; 및
    상기 프로세서와 전기적으로 연결되며, 상기 프로세서에 의해 실행되는 메모리를 포함하며, 상기 메모리는 운영체제 및 하나 이상의 어플리케이션을 저장하도록 구성되며, 상기 운영체제에 포함된 커널이,
    상기 하나 이상의 어플리케이션에서 실행 중인 하나 이상의 프로세스를 확인하며, ptrace(process trace)를 이용하여, 상기 하나 이상의 프로세스에서 추적 대상인 테스크(task)의 생성을 확인하며, 상기 생성된 테스크에 대응하는 정보를 확인하며, 상기 확인된 정보를 지정된 엔진으로 전달하도록 하는 명령을 포함하는 테스크 추적을 하기 위한 장치.
KR1020190176918A 2019-12-27 2019-12-27 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 KR102325291B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190176918A KR102325291B1 (ko) 2019-12-27 2019-12-27 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190176918A KR102325291B1 (ko) 2019-12-27 2019-12-27 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

Publications (2)

Publication Number Publication Date
KR20210084029A true KR20210084029A (ko) 2021-07-07
KR102325291B1 KR102325291B1 (ko) 2021-11-12

Family

ID=76862547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190176918A KR102325291B1 (ko) 2019-12-27 2019-12-27 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR102325291B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014182837A (ja) * 2013-03-19 2014-09-29 Trusteer Ltd マルウェア発見方法及びシステム
KR101583545B1 (ko) * 2015-07-22 2016-01-08 주식회사 엔에스에이치씨 상호 디버깅 감시를 이용한 모바일 단말기의 어플리케이션의 보안을 향상시키는 보안 제공 방법
KR20190109524A (ko) 2017-02-06 2019-09-25 후아웨이 테크놀러지 컴퍼니 리미티드 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014182837A (ja) * 2013-03-19 2014-09-29 Trusteer Ltd マルウェア発見方法及びシステム
KR101583545B1 (ko) * 2015-07-22 2016-01-08 주식회사 엔에스에이치씨 상호 디버깅 감시를 이용한 모바일 단말기의 어플리케이션의 보안을 향상시키는 보안 제공 방법
KR20190109524A (ko) 2017-02-06 2019-09-25 후아웨이 테크놀러지 컴퍼니 리미티드 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jurriaan Bremer et al, "Tracy: UNIX system call tracing"(2015.03.) *

Also Published As

Publication number Publication date
KR102325291B1 (ko) 2021-11-12

Similar Documents

Publication Publication Date Title
US8136097B2 (en) Thread debugging device, thread debugging method and information storage medium
US8843676B2 (en) Optimizing an operating system I/O operation that pertains to a specific program and file
US10521329B2 (en) Debugging system
KR101519845B1 (ko) 안티디버깅 방법
US8671393B2 (en) Collaborative software debugging in a distributed system with client-specific dynamic breakpoints
US8656360B2 (en) Collaborative software debugging in a distributed system with execution resumption on consensus
CN100492300C (zh) 在微处理器实现的设备上执行进程的系统和方法
WO2006137356A1 (ja) 自律運用管理システム、自律運用管理方法及びプログラム
TWI678615B (zh) 在資料處理裝置中進行除錯
US20190138713A1 (en) Method for Detecting a Deviation of a Security State of a Computing Device from a Desired Security State
US20120102464A1 (en) Collaborative Software Debugging In A Distributed System With Collaborative Step Over Operation
JP6401235B2 (ja) コントラクトのためのオペレーティングシステムサポート
CN107239698A (zh) 一种基于信号处理机制的反调试方法和装置
KR101729680B1 (ko) 경량 하이퍼바이저에 기반하는 운영체제의 제공 방법 및 장치
KR102325291B1 (ko) 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
KR20210001057A (ko) 랜섬웨어 탐지 및 차단 방법
CN106557693A (zh) 一种恶意Hook行为检测方法及系统
KR101632152B1 (ko) 모바일 플랫폼 동적 분석 방지 장치 및 그 방법
US20190102541A1 (en) Apparatus and method for defending against unauthorized modification of programs
US20190034259A1 (en) Systems and Methods for Implementing a Thread Trace Log
EP3246821B1 (en) Semiconductor device and its memory access control method
CN111563000B (zh) 一种文件生成方法、智能终端及存储介质
US20160328309A1 (en) Method and apparatus for monitoring a control flow of a computer program
US20140259162A1 (en) Mobile Devices with Inhibited Application Debugging and Methods of Operation
KR102556413B1 (ko) 세마포어를 이용한 가상화 머신 관리 방법 및 이를 위한 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right