KR20240000951A - Rpc 연결 탐지 방법 - Google Patents

Rpc 연결 탐지 방법 Download PDF

Info

Publication number
KR20240000951A
KR20240000951A KR1020220077791A KR20220077791A KR20240000951A KR 20240000951 A KR20240000951 A KR 20240000951A KR 1020220077791 A KR1020220077791 A KR 1020220077791A KR 20220077791 A KR20220077791 A KR 20220077791A KR 20240000951 A KR20240000951 A KR 20240000951A
Authority
KR
South Korea
Prior art keywords
rpc
kernel
relationship
dll
connection
Prior art date
Application number
KR1020220077791A
Other languages
English (en)
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 KR1020220077791A priority Critical patent/KR20240000951A/ko
Publication of KR20240000951A publication Critical patent/KR20240000951A/ko

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Coupling Device And Connection With Printed Circuit (AREA)
  • Cable Accessories (AREA)
  • Interface Circuits In Exchanges (AREA)

Abstract

일 실시예에 따라 원격 프로시저 호출(RPC) 연결 탐지 장치가 수행하는 RPC 연결 탐지 방법은, 유저 영역에서 RPC 요청을 발생시키는 RPC 연결을 담당하는 RPC 동적 연결 라이브러리(DLL)인 rpcrt4.dll에 대하여 커널 로딩을 이용해 커널 메모리에 이미지 형태로 로드하는 단계와, 상기 커널 메모리에 로드된 RPC 이미지를 바이너리 분석 기술을 이용하여 커널용 인터페이스 함수로 변환하는 단계와, 상기 변환된 커널용 인터페이스 함수를 이용해 커널 내부에 RPC 정보가 있는 직접 연결 관계를 추적하고 커널 내부에 RPC 정보가 없어 RPC 관계가 끊어진 간접 연결 관계는 프로세서 영역에 접근 가능한 커널 권한을 이용해 추적하는 단계를 포함한다.

Description

RPC 연결 탐지 방법{METHOD FOR DETECTING RPC CONNECTION}
본 발명은 RPC 연결을 탐지하는 방법과 이 방법을 수행하는 장치에 관한 것이다.
일반적으로 프로세스를 생성하면 생성한 프로세스는 부모 프로세스가 되고, 생성된 프로세스는 자식 프로세스가 되어 부모-자식의 직접 관계가 형성된다.
하지만 윈도우에서 제공하는 COM, Win32 서비스, WMI처럼 원격 프로시저 호출(remote procedure call, RPC)를 이용해서 프로세스를 생성할 경우에 생성된 프로세스가 윈도우의 서브시스템(svchost.exe, services.exe 등)의 하위 프로세스로 생성된다.
이처럼, RPC를 이용해서 프로세스를 생성할 경우에는 해당 RPC를 요청한 프로세스를 추적할 수 없어 프로세스 간 관계를 추적할 수 없다. 그리고, 서브시스템에 의해 생성된 자식 프로세스가 의심 행위를 할 경우에 부모 프로세스가 운영체제의 프로세스이므로 악성 여부를 판단하기가 까다로워진다.
한국공개특허 제10-2000-0054538호 (2000.09.05. 공개)
실시예에 따르면, RPC를 이용해서 프로세스를 생성하더라도 프로세서의 생성을 요청한 프로세스와 이에 대응하여 생성된 프로세스 간의 RPC 연결 관계를 추적할 수 있는 RPC 연결 탐지 방법과 이 방법을 수행하는 장치를 제공한다.
본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
제 1 관점에 따른 RPC 연결 탐지 장치가 수행하는 RPC 연결 탐지 방법은, 유저 영역에서 RPC 요청을 발생시키는 RPC 연결을 담당하는 RPC 동적 연결 라이브러리(dynamic link library, DLL)인 rpcrt4.dll에 대하여 커널 로딩을 이용해 커널 메모리에 이미지 형태로 로드하는 단계와, 상기 커널 메모리에 로드된 RPC 이미지를 바이너리 분석 기술을 이용하여 커널용 인터페이스 함수로 변환하는 단계와, 상기 변환된 커널용 인터페이스 함수를 이용해 커널 내부에 RPC 정보가 있는 직접 연결 관계를 추적하고 커널 내부에 RPC 정보가 없어 RPC 관계가 끊어진 간접 연결 관계는 프로세서 영역에 접근 가능한 커널 권한을 이용해 추적하는 단계를 포함한다.
제 2 관점에 따른 RPC 연결 탐지 장치는, 유저 영역에서 원격 프로시저 호출(RPC) 요청을 발생시키는 RPC 연결을 담당하는 RPC 동적 연결 라이브러리(DLL)인 rpcrt4.dll에 대하여 커널 로딩을 이용해 커널 메모리에 이미지 형태로 로드하는 커널 로드부와, 상기 커널 메모리에 로드된 RPC 이미지를 바이너리 분석 기술을 이용하여 커널용 인터페이스 함수로 변환하는 처리부와, 상기 변환된 커널용 인터페이스 함수를 이용해 커널 내부에 RPC 정보가 있는 직접 연결 관계를 추적하고 커널 내부에 RPC 정보가 없어 RPC 관계가 끊어진 간접 연결 관계는 프로세서 영역에 접근 가능한 커널 권한을 이용해 추척하는 관계 추적부를 포함한다.
제 3 관점에 따라 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체의 상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면, 상기 RPC 연결 탐지 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함한다.
제 4 관점에 따라 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체의 상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면, 상기 RPC 연결 탐지 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함한다.
일 실시예에 따르면, RPC를 이용해서 프로세스를 생성하더라도 프로세서의 생성을 요청한 프로세스와 이에 대응하여 생성된 프로세스 간의 RPC 연결 관계를 추적할 수 있다.
이로써, RPC를 이용해서 프로세스를 생성하더라도 추적된 RPC 연결 관계에 기초하여, 프로세스 생성을 요청한 프로세스와 이에 대응하여 새로 생성된 프로세스를 부모-자식 관계로 설정할 수 있고, 새로 생성된 프로세스에서 악의적인 행위가 발생할 경우 부모-자식 관계에 따라 프로세스 생성을 요청한 프로세스와 새로 생성된 프로세스를 모두 악성 프로세스로서 탐지할 수 있다.
도 1은 일 실시예에 따른 RPC 연결 탐지 장치의 구성도이다.
도 2는 일 실시예에 따른 RPC 연결 탐지 장치가 수행하는 RPC 연결 탐지 방법을 설명하기 위한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '부'라는 용어는 소프트웨어 또는 FPGA나 ASIC과 같은 하드웨어 구성요소를 의미하며, '부'는 어떤 역할들을 수행한다. 그렇지만 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부'들로 결합되거나 추가적인 구성요소들과 '부'들로 더 분리될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략한다.
도 1은 일 실시예에 따른 RPC 연결 탐지 장치의 구성도이다.
도 1을 참조하면, 실시예에 따른 RPC 연결 탐지 장치(100)는 커널 로드부(110), 기계어 처리부(120) 및 관계 추적부(130)를 포함하며, 악성 탐지부(140)를 더 포함할 수 있다. 예를 들어, 실시예에 따른 RPC 연결 탐지 장치(100)를 구성하는 커널 로드부(110), 기계어 처리부(120), 관계 추적부(130) 또는 악성 탐지부(140)는 마이크로프로세서 등과 같은 컴퓨팅 연산수단을 포함하여 구현할 수 있다.
커널 로드부(110)는 유저 영역에서 RPC 요청을 발생시키는 RPC 연결을 담당하는 RPC DLL(예로서, 윈도우 OA에서 제공하는 주지의 rpcrt4.dll)에 대하여 커널 로딩을 이용해 커널 메모리에 이미지 형태로 로드한다. 여기서, RPC DLL은 "rpcrt4.dll"로 한정되는 것은 아니고, 동일 또는 유사한 기능을 담당하는 dll 파일이나 기능을 동일 또는 유사하지만 파일명이 변경될 수도 있다.
기계어 처리부(120)는 커널 메모리에 로드된 RPC 이미지를 바이너리 분석 기술을 이용하는 기계어 수준의 처리를 통하여 커널용 인터페이스 함수로 변환한다. 이러한 기계어 처리부(120)는 로드된 RPC 이미지를 커널용 인터페이스 함수로 변환한 후, 커널 메모리의 유효하지 않은 메모리 영역을 바이너리 분석 기술을 이용하는 기계어 수준의 처리를 통하여 유효한 커널 영역으로 변환할 수 있다.
관계 추적부(130)는 기계어 처리부(120)에 의해 변환된 커널용 인터페이스 함수와 프로세서 영역에 접근 가능한 커널 권한을 이용하여 RPC 연결 관계를 추적한다. 예를 들어, 관계 추적부(130)는 커널용 인터페이스 함수를 이용해 커널 내부에 RPC 정보가 있는 직접 연결 관계를 추적하고, 커널 내부에 RPC 정보가 없어 RPC 관계가 끊어진 간접 연결 관계는 프로세서 영역에 접근 가능한 커널 권한을 이용해 추적할 수 있다.
악성 탐지부(140)는 관계 추적부(130)에 의해 추적된 직접 연결 관계 및 간접 연결 관계에 기초하여, 프로세스 생성을 요청한 프로세스와 이에 대응하여 새로 생성된 프로세스를 부모-자식 관계로 설정하고, 새로 생성된 프로세스에서 악의적인 행위가 발생할 경우 부모-자식 관계에 따라 프로세스 생성을 요청한 프로세스와 새로 생성된 프로세스를 모두 악성 프로세스로서 탐지한다.
도 2는 일 실시예에 따른 RPC 연결 탐지 장치(100)가 수행하는 RPC 연결 탐지 방법을 설명하기 위한 흐름도이다.
도 2를 참조하면, 실시예에 따른 RPC 연결 탐지 방법은 유저 영역에서 RPC 요청을 발생시키는 RPC 연결을 담당하는 RPC DLL(예로서, 윈도우 OA에서 제공하는 주지의 rpcrt4.dll)에 대하여 커널 로딩을 이용해 커널 메모리에 이미지 형태로 로드하는 단계(S210)를 포함한다.
그리고, 실시예에 따른 RPC 연결 탐지 방법은 커널 메모리에 로드된 RPC 이미지를 바이너리 분석 기술을 이용하는 기계어 수준의 처리를 통하여 커널용 인터페이스 함수로 변환하는 단계(S220)를 더 포함한다.
여기서, 실시예에 따른 RPC 연결 탐지 방법은 단계 S220를 수행한 후 단계 S240을 수행하기 전에, 커널 메모리의 유효하지 않은 메모리 영역을 바이너리 분석 기술을 이용하는 기계어 수준의 처리를 통하여 유효한 커널 영역으로 변환하는 단계(S230)를 더 포함할 수 있다.
그리고, 실시예에 따른 RPC 연결 탐지 방법은 변환된 커널용 인터페이스 함수와 프로세서 영역에 접근 가능한 커널 권한을 이용하여, RPC 정보가 있는 직접 연결 관계 및 커널 내부에 RPC 정보가 없어 RPC 관계가 끊어진 간접 연결 관계를 추적하는 단계(S240, S250)를 포함한다.
그리고, 실시예에 따른 RPC 연결 탐지 방법은 단계 S250에서 추적된 직접 연결 관계 및 간접 연결 관계에 기초하여, 프로세스 생성을 요청한 프로세스와 이에 대응하여 새로 생성된 프로세스를 부모-자식 관계로 설정하는 단계(S260)를 더 포함할 수 있다.
그리고, 실시예에 따른 RPC 연결 탐지 방법은 새로 생성된 프로세스에서 악의적인 행위가 발생할 경우 부모-자식 관계에 따라 프로세스 생성을 요청한 프로세스와 새로 생성된 프로세스를 모두 악성 프로세스로서 탐지하는 단계(S270, S280)를 더 포함할 수 있다.
이하, 도 1 및 도 2를 참조하여 일 실시예에 따른 RPC 연결 탐지 장치(100)가 수행하는 RPC 연결 탐지 방법에 대하여 더 자세히 살펴보기로 한다.
먼저, RPC 연결 탐지 장치(100)의 커널 로드부(110)는 유저 영역에서 RPC 요청을 발생시키는 RPC 연결을 담당하는 RPC DLL(예로서, 윈도우 OA에서 제공하는 주지의 rpcrt4.dll)에 대하여 커널 로딩을 이용해 커널 메모리에 이미지 형태로 로드한다. 예를 들어, 커널 로드부(110)는 실행 속성으로 할당된 커널 메모리에 유저 DLL 모듈 파일을 이미지 형태로 맵핑할 수 있다(S210).
여기서, RPC 연결을 담당한다는 것은 RPC 요청(예, 프로세스 실행 요청)을 담당하는 클라이언트 역할을 하고, 호스트 프로세스(예, svchost.exe)는 요청을 전달 받아 처리(요청 받은 프로세스 실행)하는 서버 역할을 담당한다는 것을 의미할 수 있다. RPC 요청을 전달 받은 서버 프로세스에서 요청자인 클라이언트 프로세스를 식별하고 관리해야 할 필요가 있으므로 OS는 서버 프로세스의 스레드 관리 영역인 TEB(thread evironment block) 구조체의 ReservedForNtRpc 필드에 클라이언트 프로세스에 대한 핸들 정보를 설정한다. 이 과정을 서버와 클라이언트가 연결되었다고 표현하고 유저 영역에서 RPC 요청을 발생시켜 연결을 요청하는 rpcrt4.dll에 대해서는 RPC 연결(요청)을 담당한다고 표현할 수 있다.
또한, 커널 메모리에 이미지 형태로 로드한다는 것을 부연 설명하면, 유저 DLL의 경우 일반적인 방법으로는 커널 영역에 로드 및 사용하는 것이 불가능하다. 이를 가능하게 하려면 커널에 실행 가능한 속성의 커널 메모리를 할당해서 유저 DLL을 해당 커널 메모리에 로드하는 커널 로딩과 로드한 코드를 커널에서 사용 가능하도록 기계어 처리하는 과정이 필요하다. 여기서 커널 로딩은 유저에서 DLL을 로드하기 위해 OS 로더가 수행하는 동작(예, LoadLibrary 함수 내부의 동작)을 커널에서 유사하게 구현하여 유저 DLL 파일을 실행 파일 구조인 PE 형식에 맞게 커널 메모리에 재배치하는 등의 이미지 로딩 동작을 의미한다. 이를 이용하면 유저 DLL을 OS 로더가 유저 영역 메모리에 맵핑하여 로드하는 것처럼 커널 영역 메모리에 로드하는 것이 가능하다.
그리고, RPC 연결 탐지 장치(100)의 기계어 처리부(120)는 커널 메모리에 로드된 RPC 이미지를 바이너리 분석 기술을 이용하는 기계어 수준의 처리를 통하여 커널용 인터페이스 함수로 변환한다(S220).
여기서, 유저 DLL 모듈에 구현된 유저 코드를 안전하게 커널 코드로 실행하기 위해서는 여러 기계어 수준의 처리가 필요할 수 있다. 임의의 코드를 에뮬레이션해서 가상 실행할 때의 제약과 유사하게 유저 코드를 커널 모드에서 실행 시에는 유저 코드에서 접근하는 메모리 영역이 커널 영역에서는 유효하지 않을 수 있기 때문이다. 이에, 기계어 처리부(120)는 커널 메모리에 로드된 RPC 이미지를 커널용 인터페이스 함수로 변환한 후, 커널 메모리의 유효하지 않은 메모리 영역을 기계어 수준의 처리를 통하여 유효한 커널 영역으로 변환할 수 있다. 예를 들어, 기계어 처리부(120)는 변환된 커널용 인터페이스 함수의 내부에서 커널 영역에서 실행이 불가능한 코드를 찾아 실행이 되지 않도록 처리함으로써, 변환된 커널용 인터페이스 함수를 커널 영역에서 사용할 수 있게 할 수 있다(S230).
기계어 수준의 처리를 통하여 커널용 인터페이스 함수로 변환한다는 것을 부연 설명하면, 유저 DLL의 모든 코드가 커널에 로드(적재)된 것만으로 모두 커널 영역에서 실행 가능해지는 것은 아니다. 유저 리소스에 접근하지 않는 순수한 연산 코드(예, 알고리즘)는 실행 가능하지만 유저 힙을 할당하는 코드(예, new 연산자)는 실행되지 않는다. 본 발명에서도 서버 프로세스에서 RPC를 요청한 클라이언트 프로세스를 찾아 RPC 연결을 추적하는데 필요한 유저 함수 부분만 커널에서 사용 가능하도록 처리한다. rpcrt4.dll에서 처리 대상이 되는 함수는 대표적으로 RPC 연결 핸들을 획득하는 I_RpcGetCurrentCallHandle 함수와 RPC 핸들을 통해 RPC를 요청한 클라이언트 프로세스를 획득하는 I_RpcBindingInqLocalClientPID 함수가 있다. 해당 함수들은 rpcrt4.dll을 통해 RPC 기능을 외부에 제공하는 인터페이스 함수다. 기계어 처리 과정은 이들 함수 내부에서 커널에서 실행이 불가능한 코드를 찾아 실행시 문제가 발생하지 않도록 처리하는 과정이다. RPC 연결 추적에 필요한 정보를 얻는데 불필요한 코드 분기는 수행되지 않도록 처리하거나, 실행에 필요하지만 유저 리소스 등에 접근이 있는 경우는 더미 커널 리소스를 제공하는 방식 등으로 사전 처리를 하여 코드 실행에 문제가 없도록 처리할 수 있다. 커널 영역에서 함수 호출이 가능하게 기계어 수준의 처리를 한 이들 인터페이스 함수를 커널용 함수라고 부른다. I_RpcGetCurrentCallHandle, I_RpcBindingInqLocalClientPID 함수들이 커널용 함수로 처리하는 대상이 된다.
다음으로, RPC 연결 탐지 장치(100)의 관계 추적부(130)는 시스템의 이벤트 발생을 감시한다. 여기서, 관계 추적부(130)는 RPC 요청에 의해 서브시스템에서 프로세스를 대신 생성해 주는 것과 같이 프로세스 실행시 RPC 요청 정보가 있는지를 감시한다. 예를 들어, 관계 추적부(130)는 프로세스 외에도 스레드의 생성, 모듈의 로드, 파일 입출력, 레지스트리 입출력 등을 포함하여 시스템에서 발생하는 다양한 행위 발생을 이벤트로 식별하여 감시할 수 있다(S240).
여기서, RPC 연결을 추적하는 이벤트는 다양하게 정의할 수 있다. 프로세스 생성 이벤트는 새로 생성되는 프로세스가 RPC 요청에 의한 것인지를 식별하는데 사용할 수 있고, 파일 I/O 행위나 네트워크 행위, 멀웨어의 악성 행위 시점의 이벤트로는 현재 행위 주체 프로세스가 RPC 요청으로 실행되어 동작 중인 프로세스인지를 식별하는데 사용할 수 있다. 커널 영역에서 유저 스레드 내의 RPC 핸들 정보를 이용(커널용 함수를 통해)하는 방법으로 원하는 시점에 RPC 핸들을 통해 연결되어 있는 관계를 추적하므로 행위 이벤트 범위를 제한할 필요는 없다. 예를 들어 프로세스, 스레드, 파일, 네트워크, 메시지, 윈도우, 데스크탑 등의 오브젝트에 대해 원하는 시점(생성, 종료, 읽기, 쓰기, 연결, 해제 등)에 필터나 후킹 모듈을 통해 이벤트를 발생시켜 검사할 수 있다.
그리고, 관계 추적부(130)는 프로세서 영역에 접근 가능한 커널 권한과 커널용 인터페이스 함수를 이용해 RPC 연결 관계를 추적한다. RPC 정보는 기본적으로 RPC 연결 관계가 있는 경우 존재하지만 RPC 서버 역할을 하는 서브시스템 프로세스 간에는 내부 메커니즘에 의해 연결 관계가 없을 수 있다. 이에, 관계 추적부(130)는 변환된 커널용 인터페이스 함수와 프로세서 영역에 접근 가능한 커널 권한을 이용하여, RPC 정보가 있는 직접 연결 관계 및 커널 내부에 RPC 정보가 없어 RPC 관계가 끊어진 간접 연결 관계를 추적할 수 있다. 이러한 관계 추적부(130)에 의한 임의의 행위를 발생하는 이벤트에 대하여 직접 연결 관계 및 간접 연결 관계를 추적할 수 있으나 행위 이벤트 범위는 제한되지 않는다. 예컨대, 서버 프로세스 내부의 커널 오브젝트들의 연관 관계를 분석하여 연결시켜 줌으로써 간접 연결 관계를 추적할 수 있다. 이로써, 관계 추적부(130)는 RPC 요청에 의해 생성된 프로세스로부터 프로세스 생성을 처리한 RPC 서버 프로세스들, 프로세스 생성을 요청한 클라이언트 프로세스를 모두 식별할 수 있다(S250). rpcrt4.dll의 인터페이스 함수는 내부에서 TEB 구조체에서 RPC 핸들 값을 획득하는 방식으로 RPC를 요청한 클라이언트 프로세스 정보를 호출자에게 제공한다. 이 과정을 커널용 함수를 통해 커널 드라이버에서 호출 가능하게 처리하여 후킹없이도 모든 프로세스의 RPC 요청을 탐지하고 연결 관계를 추적할 수 있게 만들 수 있다. 물론 후킹을 이용할 수도 있다.
한편, RPC 연결 탐지 장치(100)의 악성 탐지부(140)는 관계 추적부(130)에 의해 추적된 RPC 연결 관계에 기초하여, 프로세스 생성을 요청한 프로세스와 이에 대응하여 새로 생성된 프로세스를 부모-자식 관계로 설정하여 관리한다(S260).
그리고, 악성 탐지부(140)는 단계 S260에서 부모-자식 관계로 설정 및 관리 중인 새로 생성된 프로세스(즉, 자식 프로세서)에서 악의적인 행위가 발생(S270)할 경우 부모-자식 관계에 따라 프로세스 생성을 요청한 프로세스(즉, 부모 프로세스)와 새로 생성된 프로세스를 모두 악성 프로세스로서 탐지한다. 예를 들어, 악성 탐지부(140)는 자식 프로세스에 의해 발생된 행위가 기 저장된 악성 행위에 포함되는 경우에 해당 자식 프로세스와 그 부모 프로세스를 모두 악성 프로세스로서 탐지할 수 있고, 악성 프로세스에 대한 탐지 정보를 출력할 수 있다. 예컨대, 탐지 정보를 출력한다는 것은 별도의 통신장치를 통하여 전송하는 것, 모니터나 프린터 등의 주변기기를 통하여 출력하는 것 등을 모두 포함할 수 있다(S280).
지금까지 설명한 바와 같이 일 실시예에 따른 RPC 연결 탐지 장치(100) 및 이에 의해 수행되는 RPC 연결 탐지 방법에 의하면, RPC를 이용해서 프로세스를 생성하더라도 프로세서의 생성을 요청한 프로세스와 이에 대응하여 생성된 프로세스 간의 RPC 연결 관계를 추적할 수 있다.
이로써, RPC를 이용해서 프로세스를 생성하더라도 추적된 RPC 연결 관계에 기초하여, 프로세스 생성을 요청한 프로세스와 이에 대응하여 새로 생성된 프로세스를 부모-자식 관계로 설정할 수 있고, 새로 생성된 프로세스에서 악의적인 행위가 발생할 경우 부모-자식 관계에 따라 프로세스 생성을 요청한 프로세스와 새로 생성된 프로세스를 모두 악성 프로세스로서 탐지할 수 있다.
한편, 전술한 일 실시예에 따른 RPC 연결 탐지 방법에 포함된 각각의 단계는, 이러한 단계를 수행하도록 프로그램된 컴퓨터 프로그램을 기록하는 컴퓨터 판독가능한 기록매체에서 구현될 수 있다.
또한, 전술한 일 실시예에 따른 RPC 연결 탐지 방법에 포함된 각각의 단계는, 이러한 단계를 수행하도록 프로그램된, 컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램의 형태로 구현될 수 있다.
본 발명에 첨부된 각 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 기록매체에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 기록매체에 저장된 인스트럭션들은 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: RPC 탐지 장치
110: 커널 로드부
120: 기계어 처리부
130: 관계 추적부
140: 악성 탐지부

Claims (1)

  1. 원격 프로시저 호출(RPC) 연결 탐지 장치가 수행하는 RPC 연결 탐지 방법으로서,
    유저 영역에서 RPC 요청을 발생시키는 RPC 연결을 담당하는 RPC 동적 연결 라이브러리(DLL)인 rpcrt4.dll에 대하여 커널 로딩을 이용해 커널 메모리에 이미지 형태로 로드하는 단계와,
    상기 커널 메모리에 로드된 RPC 이미지를 바이너리 분석 기술을 이용하여 커널용 인터페이스 함수로 변환하는 단계와,
    상기 변환된 커널용 인터페이스 함수를 이용해 커널 내부에 RPC 정보가 있는 직접 연결 관계를 추적하고 커널 내부에 RPC 정보가 없어 RPC 관계가 끊어진 간접 연결 관계는 프로세서 영역에 접근 가능한 커널 권한을 이용해 추적하는 단계를 포함하는
    RPC 연결 탐지 방법.
KR1020220077791A 2022-06-24 2022-06-24 Rpc 연결 탐지 방법 KR20240000951A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220077791A KR20240000951A (ko) 2022-06-24 2022-06-24 Rpc 연결 탐지 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220077791A KR20240000951A (ko) 2022-06-24 2022-06-24 Rpc 연결 탐지 방법

Publications (1)

Publication Number Publication Date
KR20240000951A true KR20240000951A (ko) 2024-01-03

Family

ID=89539032

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220077791A KR20240000951A (ko) 2022-06-24 2022-06-24 Rpc 연결 탐지 방법

Country Status (1)

Country Link
KR (1) KR20240000951A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000054538A (ko) 2000-06-10 2000-09-05 김주영 네트워크 침입탐지 시스템 및 방법 그리고 그 방법을기록한 컴퓨터로 읽을 수 있는 기록매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000054538A (ko) 2000-06-10 2000-09-05 김주영 네트워크 침입탐지 시스템 및 방법 그리고 그 방법을기록한 컴퓨터로 읽을 수 있는 기록매체

Similar Documents

Publication Publication Date Title
US8850396B2 (en) Performing software testing based on grouping of tests using test list entity
US8826269B2 (en) Annotating virtual application processes
US20110296383A1 (en) Mechanism for Performing Dynamic Software Testing Based on Test Result Information Retrieved in Runtime Using Test Result Entity
US20100306766A1 (en) Adding aspects to virtual machine monitors
US5485573A (en) Method and apparatus for assisting in the determination of the source of errors in a multi-host data base management system
US11994988B2 (en) Multi-ring shared, traversable, and dynamic advanced database
US11262993B2 (en) Application binary rewriting to reduce binary attack surface area
JP2003532948A (ja) リソースドメイン間で通信するための装置および方法
US20190272179A1 (en) Isolating applications at the edge
US11271895B1 (en) Implementing advanced networking capabilities using helm charts
US9195503B2 (en) Auto detecting shared libraries and creating a virtual scope repository
JPWO2008114560A1 (ja) コンピュータ、動作ルール適用方法、オペレーティングシステム
CN114595038A (zh) 数据处理方法、计算设备及计算机存储介质
US9274922B2 (en) Low-level checking of context-dependent expected results
CN112231198A (zh) 一种恶意进程调试方法、装置、电子设备及介质
KR102254159B1 (ko) 운영체제 커널 메모리의 실시간 오류 검출 방법
US11361077B2 (en) Kernel-based proactive engine for malware detection
KR20240000951A (ko) Rpc 연결 탐지 방법
US7086060B2 (en) Method for programmatic representation and enforcement of resource controls
KR102098905B1 (ko) 호스트의 테스트 시나리오로 제어장치의 복수의 파티션간 영향도를 측정하기 위한 방법, 동일 방법을 구현하기 위한 호스트 및 시스템, 그리고 동일 방법을 기록하기 위한 매체
CN116450398A (zh) 异常回溯方法、装置、设备和介质
US11809881B2 (en) Target process injection prior to execution of marker libraries
KR20220096146A (ko) Rpc 연결 탐지 방법 및 장치
US20170060571A1 (en) System and method for masking complexity in a heterogeneous development environment
CN113867701A (zh) 一种容器对象实例化方法、装置、存储介质及电子设备