시그니처 기반 탐지
프로그램은 우리가 코드로 적어놓은 행동을 행할 뿐이다.
가장 전통적인 방식은 시그니처(Signature) 기반 탐지이다.
쉽게 말하면, 이미 알려진 악성코드의 '지문'을 저장해두고, 컴퓨터에 있는 파일과 비교해서 일치하면 취약한 구문이라고 판단하는 방식이다.
하지만 요즘 악성코드나 취약점은 지문을 바꾸고, 이름도 바꾸고, 겉모습만 바꾸는 식으로 지능적으로 위장해서 들어온다.
그래서 새로운 악성코드는 시그니처 기반으로 탐지가 어려운 부분이 많다.
휴리스틱 탐지
이런 한계를 보완하기 위해 등장한 방법이 바로 휴리스틱(Heuristic) 탐지이다.
휴리스틱 탐지는 일종의 행동 분석이다.
예를 들어,
- 실행되자마자 시스템 파일을 몰래 수정하거나
- 인터넷에 무언가를 막 보내거나
- 자기 자신을 복사해서 여러 폴더에 숨기려 했을떄
이런 행동은 일반 프로그램에서는 거의 하지 않지만
이런 의심스러운 행동을 포착해서 "이건 악의적일 가능성이 높다"라고 판단하는 것이다.
휴리스틱 탐지는 정적 분석과 동적 분석에 기반하며, 실행파일 내 난독화, API 호출 패턴, 메모리 행위 등을 종합적으로 평가한다.
최근엔 YARA와 같은 룰 기반 도구도 휴리스틱 탐지에 자주 활용된다.
요 근래 회사에서 일하다가 간단하게 특정 인증 관련 탐지기능을 구현해야하는 일이 생겨서 시그니처 탐지와 같이 휴리스틱 탐지을 같이 넣어서 구현했었다.
휴리스틱 탐지라고 무조건 적으로 정적 분석과 동적 분석으로 복잡한 프로그램을 탐지해야할때만 사용되는 것만이 아니고, 우리가 판단하기 애매하다고 생각할 떄도 사용할 수 있다.
예를들어서, 특정 파일에는 어떠한 내용이 들어있으면 확률적으로 악성코드일 확률이 높다던가 그런 부분은 취약하다고 판단이 가능해지거나 할 때, 확률계산을 실행하는 것이다.
아래와 같은 상황을 생각해보자.
- 그냥 text 파일에 평문으로 password=1234 라고 적힌 상황
- config 파일에 docker password=1234 라고 적힌 상황
- aws 인증 파일에 ssh키 파일 관련 정보가 들어있을때
우리가 만든 프로그램은 스스로 판단이 불가능하기 때문에 무조건 적으로 명시적으로 코드로 적어줘야한다.
프로그램이 직접적으로 취약하다고 판단하기에는 부족하기 때문에 휴리스틱 방식으로 확률을 계산해주는 것이다.
내가 좀 멍청해서 글이 어수선해져서 보는 사람이 이해할지는 모르겠지만 예를들어서, 확장자가 text일 경우 취약 확률을 낮추는 계산을 해주고 특정 password와 같은 평문이 들어갔을때 취약확률을 높여준다던가 하는 방식으로 말이다.
당연히 전체적인 확률 계산을 잘하게 하는 내부로직이 중요하겠지만 cofig 파일이나 aws 관련파일일때 확률을 높이던가 해서 취약한 파일이라고 프로그램이 판단가능하게 만드는 것 또한 휴리스틱 방식이라는 것이다.
딥러닝을 이용한 탐지
저런 휴리스틱 방식에서도 발전해서 최근에는 딥러닝(Deep Learning) 기술이 보안 분야에도 적극적으로 활용되고 있다고 한다.
프로그램의 특성처럼 예전처럼 '지문'이나 '행동 규칙'을 사람이 하나하나 지정하지 않아도, AI가 수많은 악성코드 데이터나 취약점을 학습해서 패턴을 스스로 찾아내는 시대가 온 것이다.
예를 들어:
- 악성코드를 이미지처럼 변환해서 CNN(합성곱 신경망)으로 분석하거나
- API 호출 순서를 문장처럼 분석해서 LSTM 같은 모델을 적용하는 방식이 가능해진 것.
이런 방식은 특히 스스로 학습때문에 새로운 유형의 악성코드에도 잘 대응할 수 있어서 점점 활용이 확대되고 있다.
실제 연구 사례
최근에는 국가 차원에서도 이런 기술 개발이 활발하게 이뤄지고 있는 듯하다.
예를 들어, 아래는 딥러닝 기반 악성코드 탐지 알고리즘과 시스템 개발에 관한 국가 R&D 보고서인데
보고서에서는 다양한 딥러닝 모델의 활용 방식, 데이터셋 구성 방법, 그리고 실제 탐지 시스템 구조에 대해 다루고 있으니 관심 있으신 분들은 꼭 읽어보는것도 좋을 듯하다.
보기 전에는 기본적으로 딥러닝의 기초 지식과 PE 파일 구조의 기본지식이 있는 상태로 보면 술술 읽힐 정도로 잘 써놨다.
https://scienceon.kisti.re.kr/srch/selectPORSrchReport.do?cn=TRKO202100014858#;
[보고서]딥러닝을 통한 악성코드 탐지 알고리즘 및 시스템 개발
□ 연구개요본 연구는 최신에 많이 연구되고 있는 딥러닝을 사용하여 악성코드 탐지를 위한 알고리즘을 개발하는 것이다. 이를 위해 1차 년도에는 멜웨어에서 특징들을 추출하고 변형하는 여러
scienceon.kisti.re.kr
'회사' 카테고리의 다른 글
[TIL 50] windows defender로 인한 파일 삭제 (0) | 2025.03.13 |
---|---|
[TIL 49] python subprocess의 대한 문제직면 (0) | 2025.02.26 |