# Android 악성 앱, 왜 여전히 뚫릴까? Louvain 그래프 탐지법이 그 해답일지도!

## “바이러스는 진화한다. 그럼 탐지법도 진화해야 하지 않을까?”

악성 앱은 더 똑똑해졌습니다. 단순히 특정 API를 호출하는지 감지하는 방식은 더 이상 통하지 않죠. API가 어떻게 엮이는지, 함께 등장할 때 어떤 ‘행위 패턴’을 만드는지까지 보는 시대입니다. 그리고 바로 여기서, **“동시 출현 그래프”**와 **“커뮤니티 탐지”**라는 키워드가 등장합니다.

---

## 개념 드리프트, 악성 탐지의 맹점

악성 앱 탐지 모델이 시간이 지나면 무력해지는 현상, 알고 계셨나요? 이걸 Concept Drift, 즉 **“개념 드리프트”** 라고 부릅니다. 예를 들어 2014년에 만든 모델이 2023년도 앱에 무력하다면 그 이유는 무엇일까요? 바로 개념 드리프트 때문입니다. 개념 드리프트가 발생하는 이유는 악성 코드도 점점 진화하며, 시대를 타니까 입니다.

기존에는 이 문제를 재학습으로 해결하는 경우가 많았습니다. 하지만 매번 새 데이터를 수집하고, 다시 학습하는건? 역시 시간과 돈이 많이 든다는 문제가 있습니다.

---

## API는 혼자 행동하지 않는다: 동시 출현 그래프란?

저는 그래서 이걸 해결하기 위해 다음과 같은 새로운 접근을 제안했습니다. API 하나만 보는게 아니라, 함께 등장하는 API의 관계를 본다면 어떨까?

이걸 “동시 출현 그래프”로 모델링하면, 다음과 같이 보입니다.

*“이 앱은 sendSMS와 getLocation을 자주 함께 호출하네. 위험할 수도 있어!”*

이러한 동시 출현 관계망을 만든 뒤, Louvain 알고리즘을 사용해서 비슷한 API끼리 커뮤니티로 묶습니다.

---

## 기술 소개

그래서 저는 이 알고리즘을 이용해서 자동으로 악성 앱을 탐지하는 인공지능 모델을 만들었습니다.

이 모델은 다음과 같이 작동합니다.

1. API 간 동시 출현을 그래프로 모델링
    
2. Louvain 커뮤니티 탐지로 의미 있는 그룹화
    
3. Node2Vec 임베딩으로 의미 기반 벡터화
    
4. 각 커뮤니티별로 Random Forest 분류기를 개별 학습
    
5. 테스트 단계에서는, 개념 드리프트 발생 시 threshold를 자동 조정
    

이 결과, 재학습 없이도 6년치의 악성앱을 매년 80% 넘게 탐지할 수 있었습니다.

아래는 제가 개발한 모델의 구조도입니다.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1752154384561/dc4b56cc-b664-4606-9bce-838b468facb6.png align="center")

---

## 왜 이 방법이 특별할까?

1. 시간에 강하다! : 제 모델은 2014년부터 2017년까지의 데이터로만 학습하고, 2018년부터 현재까지 재학습 없이 탐지율이 높습니다.
    
2. 설명 가능한 인공지능: 이 앱은 어떤 커뮤니티에서 문제가 생겼을까? 를 추적할 수 있습니다.
    
3. False Positive 최소화: 정상 앱에 대한 불필요한 차단이 적습니다.
    
4. 개념 변화 인지 임계값 보정: 데이터 분포 변화에 자동으로 적응합니다.
    

---

## **한계는 없을까?**

* 일부 앱은 커뮤니티에 속하지 못해 탐지가 제외될 수 있습니다.
    
* 커뮤니티 크기 불균형에 따른 학습 성능 편차가 존재합니다.
    
* 동적 분석을 포함하지 않아 실행 중 변화 탐지는 불가능합니다
    

---

## 마무리하며

이 글에서 소개한 탐지 기법은 “시간에 굴복하지 않는 악성 앱 탐지기” 라고 부를 수 있습니다. 단순히 성능이 좋은게 아니라, “지속적으로 성능이 좋은 모델”이 진짜 의미 있는 모델 아닐까요?

---

저는 보안에 인공지능을 활용해서 실제 세계 문제를 해결하는 것을 좋아합니다.

다음 번에는 다른 신선한 주제로 얘기해보도록 합시다!

읽어주셔서 감사하고, 건강한 토론은 언제나 환영입니다.
