안녕하세요. 이번 블로그 내용은 프로세스 행위 로그 분석을 위해 수집된 로그 데이터를 대상으로 그 특성을 파악하기 위한 시각화 방법 중 그래프DB를 활용한 방법을 소개해 드리고자 합니다.

1. 개요

프로세스 행위 로그는 실시간 I/O 모니터링을 통해 추출한 원시 로그 데이터로 서로 복잡하게 연결되어 있어 하나의 프로세스가 다른 프로세스와 어떤 연관성이 있는지 파악하기 어렵기 때문에 그래프DB를 활용하여 프로세스 간 관계를 시각화하여 데이터 특성을 파악해 보고자 합니다.

아래의 그림은 프로세스 익스플로러1의 실행 모습으로 프로세스 행위 로그에서 다루고 있는 정보들(프로세스 명과 프로세스 커맨드라인, 프로세스 생성 시간 등)에 대한 이해를 돕기 위해 첨부하였습니다. 프로세스 익스플로러(마이크로소프트 윈도우용 프리웨어 작업 관리자, 시스템 모니터)는 사용자의 시스템에서 실행 중인 프로세스들에 관한 정보를 수집하고 윈도우 작업 관리자 기능을 제공하는 유틸리티입니다. 프로세스 익스플로러를 통해 현재 실행되고 있는 프로세스들의 정보를 볼 수 있습니다.

프로세스 익스플로러 실행 모습

참고로 본 글에서는 프로세스 행위 로그를 바탕으로 프로세스 간 생성 관계를 파악하여 시각 화하는데 초점이 맞춰져 있습니다. 그래프DB(Neo4j)에 대해 더 궁금하신 사항이 있으시면 아래의 링크를 참고하시면 될 것 같습니다.

2. 그래프 데이터베이스(Neo4j) 란?

그래프DB(Neo4j)에 대해 간단하게 설명 드리면, 수학적 그래프 이론에 토대를 둔 일종의 NoSQL 데이터 베이스입니다. 기존의 관계형 데이터베이스(RDBMS)나 기타 DB를 사용하는 것 보다 그래프 자체를 있는 그대로 저장하고 사용할 수 있다는 장점이 있어 데이터 특성(패턴)을 파악하는데 도움이 됩니다.

일반적으로 어떤 프로그램을 PC에 설치하는 과정을 생각해 보면 윈도우 탐색기를 통해 인터넷 브라우저를 실행하고 자신이 원하는 프로그램의 설치파일을 검색한 후 다운받아 설치합니다. 이때 어떤 프로세스들이 생성되는지 프로세스 간 관계 그래프 데이터 모델을 통해 살펴보고자 합니다.

프로세스 관계 그래프 데이터 모델의 구성은 앞서 설명한 것과 같이 노드-관계-속성이며 각각의 해당하는 부분을 그래프로 표현하기 위해 그래프 데이터베이스에서 사용하는 쿼리 문법인 Cypher를 사용하며, Cypher의 기본 구조를 간단하게 살펴보면 다음과 같습니다.

※ Cypher 기본 구조 설명
노드 : ( ) , (변수:라벨) 
관계 : [ ]
화살표: 방향 -[:DIRTECTER]->
패턴(Pattern) : ( )-[ ]-( )
                ( )-[ ]->( )
                ( )<-[ ]-( )
속성: { } 

아래 그림의 예시는 ‘브라우저 상 프로그램 설치 시나리오’를 프로세스 간 관계 그래프 데이터 모델로 표현한 결과의 일부입니다. 노드는 해당 프로세스들이며, 속성은 프로세스 ID, 프로세스 명, 프로세스 생성시간 등으로 구성하였습니다. CREATED_TO라는 레이블을 통해 하나의 프로세스(부모 프로세스)가 다른 프로세스(자식 프로세스)를 생성하는 관계를 갖도록 하였습니다.

프로세스 간 관계 그래프 데이터 모델 예시

위 그림에 해당하는 Cypher 쿼리문을 간단하게 살펴보면 다음과 같습니다.

# Cypher 쿼리 언어를 사용한 프로세스 간 관계 그래프 표현

1. MATCH (n:ProcInfo)
2. MERGE (a:LinkedTO {name:n.PID, service:n.PName, createdTime:n.PCTime})
   MERGE (b:LinkedTO {name:n.ObjID, service:n.OName, createdTime:n.OCTime})
3. MERGE (b)<-[r:CREATED_TO]-(a)

MATCH를 통해 해당하는 정보를 가져오는데 n이라는 변수에 프로세스 생성관련 행위 로그 전체의 패턴을 저장합니다. MERGE는 노드가 있으면 찾는 기능과 없으면 생성하는 기능을 가진다고 생각하시면 되며, 이를 통해 a프로세스가 b 프로세스를 생성하는 관계를 가진다는 의미를 한눈에 파악할 수 있도록 하였습니다.

3. 마무리

간단하게 윈도우 탐색기(Explorer.exe)를 통해 브라우저를 실행(chrome.exe)하고 자신이 원하는 프로그램을 다운받아 설치(veraport.exe)하는 과정 중 일부분을 그래프 데이터베이스 Neo4j와 Cypher 쿼리문을 통해 프로세스 간 관계 그래프 데이터 모델을 만들어 보았습니다. 이를 통해 프로세스 간 관계를 파악하는데 그래프형태로 시각화하여 보다 직관적으로 확인할 수 있었고 전체적인 데이터의 특성(패턴)을 파악해 볼 수 있었습니다.

참조

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.
Hye-Yeong Seo's profile image

Hye-Yeong Seo

2021-07-02 09:00

Read more posts by this author