조력자에서 맬웨어 분석가로 거듭난 Gemini 1.5 Pro
Bernardo Quintero
Security Engineering Director, VirusTotal
* 본 아티클의 원문은 2024년 4월 30일 Google Cloud 블로그(영문)에 게재되었습니다.
맬웨어의 증가로 이를 방어하는 보안 담당자, 특히 맬웨어 분석가의 업무 부담이 가중되고 있습니다. 이에 따라 자동화 등 새로운 접근 방식의 필요성에 많은 이들이 공감하고 있습니다. 관련해 최근 주목받는 것이 있습니다. 바로 생성형 AI 기술입니다. 구글은 Gemini 1.5 Pro로 맬웨어 분석 패러다임을 바꾸는 데 앞장서고 있습니다. 관련해 이번 포스팅에서는 Gemini 1.5 Pro가 과연 실전 맬웨어 분석에서 어느 정도 실력을 발휘할지 알아보겠습니다.
다양한 맬웨어 파일을 평가해본 결과 Gemini 1.5 Pro는 분해된 코드와 분석된 코드 모두를 사용해 매번 정확도가 높은 결과를 제공함을 알 수 있었습니다. 이 도구는 사람이 읽을 수 있는 자연어로 요약 보고서를 생성하였고, 심지어 VirusTotal에서 검출되지 않은 코드에 대해서도 정확한 판단을 내렸습니다. 다른 생성형 AI 기반 도구와 비교 평가도 해보았는데, 다른 도구는 코드를 여러 부분으로 나누어 분석해야 하다 보니 결과가 모호하고 구체성이 부족했습니다. 반면에 Gemini 1.5 Pro는 코드 전체를 한 번에 처리했습니다. 시간도 매우 놀라운데 전체 코드 처리도 30~40초면 충분했습니다.
이러한 성능은 Gemini 1.5 Pro가 맬웨어 분석 작업에 있어 매우 유용한 도구가 될 수 있다는 가능성을 보여줍니다. 또한, 이 도구는 맬웨어 위협에 더 신속하고 효과적으로 대응할 수 있도록 분석가를 도울 수 있습니다.
소개
맬웨어의 급속한 증가로 수작업 위주로 이루어지는 전통적인 분석 방식은 점점 한계를 드러내고 있습니다. 이에 따라 자동화 같은 새로운 접근 방식의 필요성이 부각되고 있습니다. 생성형 AI 모델 기반 도구가 맬웨어 분석에 있어 유용한 도구로 자리를 잡아가고 있지만, 아직 크고 복잡한 맬웨어 샘플 처리에 한계를 보입니다. 이런 한계를 구글이 넘어서고 있습니다. 구글은 최대 100만 토큰까지 처리할 수 있는 Gemini 1.5 Pro를 출시하여기존 생성형 AI 기반 맬웨어 분석 도구의 한계를 뛰어넘었습니다. 이러한 발전은 AI가 맬웨어 분석 워크플로우를 자동화하는 데 큰 도움을 주며, 코드 분석 자동화의 대상과 범위를 크게 확장할 수 있는 가능성을 열어 줍니다. Gemini 1.5 Pro는 처리 능력이 크게 개선되어, 더 강력한 사이버 보안 접근 방식을 가능하게 합니다. 이이 따라 맬웨어 분석가들은 더 효과적이면서 동시에 효율적으로 위협에 대응할 수 있습니다.
전통적인 맬웨어 분석 방식
오랜 기간 맬웨어 분석가들이 해온 작업 방식을 알아보겠습니다. 그동안 분석은 크게 정적과 동적으로 영역을 나누어 접근하였습니다. 정적 분석은 맬웨어를 실행하지 않고 코드를 검색해 코드 구조와 로직을 파악하는 방법입니다. 반면에 동적 분석은 맬웨어를 제어된 환경에서 실행해 행동을 관찰하는 방법으로 코드가 어떻게 가려져 있든 실행 패턴을 포착할 수 있는 장점이 있습니다. 이 두 분석 방법을 통합하면 맬웨어의 행동과 특성을 더 잘 이해할 수 있습니다.
전통적인 분석 방식은 AI/ML 기술을 만나면서 새로운 진화를 시작하였습니다. AI/ML 기술은 맬웨어를 행동 패턴이나 시그니처, 이상 징후에 따라 분류하고 군집화하는 작업에 점점 더 많이 활용되고 있습니다. 이러한 기술들은 레이블이 붙은 데이터 세트를 사용하는 감독 학습부터 사전에 정의된 레이블 없이 유사한 맬웨어를 그룹화하는 비감독 학습까지 다양한 방법론을 포함합니다.
기술이 빠르게 발전하지만 맬웨어의 복잡성과 양도 빠른 속도로 증가하면서 새로운 유형의 위협을 탐지하는 데 한계가 드러나고 있습니다. 전통적인 방식은 맬웨어 변종을 탐지하는 데 도움이 되지만, 완전히 새로운 위협에는 충분히 대응하지 못합니다. 이에 따라 첨단 공격이 사이버 보안 방어를 뚫고 들어와 시스템을 위협할 수 있는 상황이 발생할 수 있습니다. 이런 문제를 해결하려면 보다 발전한 자동화 기술과 새로운 접근 방식이 필요합니다.
생성형 AI를 맬웨어 분석에 활용하기
2023년 RSA 컨퍼런스에서 발표된 '코드 인사이트(Code Insight)'는 맬웨어 분석에 생성형 AI를 활용해 관심을 모았습니다. 이 기능은 구글의 VirusTotal 플랫폼에서 작동하며, 코드 조각을 분석하고 자연어로 보고서를 생성합니다. 맬웨어 분석가가 평소 하던 방식 그대로 작업을 한다고 보면 됩니다. 처음에는 PowerShell 스크립트를 지원했으며 이후 Batch, Shell, VBScript 그리고 오피스 문서까지 지원이 확대되었습니다.
'코드 인사이트'는 코드를 분석하고 요약 보고서를 생성하여 분석가들이 코드의 동작을 이해하고 전통적인 방식으로는 간과하기 쉬운 숨겨진 기능, 악의적인 의도, 잠재적인 공격 벡터를 식별하는 데 도움을 줍니다. 하지만 거대 언어 모델(LLM)이라 해도 제한된 토큰 입력 용량 때문에 처리할 수 있는 파일 크기에 제약이 있습니다. 이에 따라 파일 크기의 제한을 늘리고 더 다양한 포맷을 지원하기 위한 개선 작업이 이루어지고 있습니다. 이런 노력이 이루어지고 있지만 바이너리와 실행 파일 분석은 여전히 도전 과제로 남아 있습니다. 이러한 파일들은 분해되거나 디컴파일될 때 종종 LLM의 처리 능력을 넘어섭니다. 이런 이유로 생성형 AI 모델은 맬웨어 분석가를 보조하는 역할을 주로 하며, 전체 코드를 처리하는 대신 바이너리에서 특정 코드 조각 분석에 주로 사용합니다.
리버스 엔지니어링의 고되고 어려운 이유
리버스 엔지니어링은 사이버 보안 전문가들이 사용하는 가장 발전한 방식의 맬웨어 분석 기법의 하나입니다. 이 방법은 맬웨어 바이너리를 분해하고, 코드를 세밀하게 검토해, 맬웨어의 기능과 실행 흐름을 파악하는 것입니다. 이 작업은 상당한 시간과 높은 수준의 전문 지식이 필요합니다. 리버스 엔지니어링은 모든 지시 사항과 데이터 구조, 함수 호출을 해석해 맬웨어의 로직을 재구성하여 비밀을 밝혀내는 고된 작업입니다.
리버스 엔지니어링 분야는 늘 전문가가 부족합니다. 그러다 보니 맬웨어 분석 작업의 대상과 범위를 확장하기 쉽지 않습니다. 이런 이유로 사이버 보안 커뮤니티는 복잡하고 많은 시간을 요구하는 리버스 엔지니어링 작업을 더 효율적으로 개선할 방법을 오랫동안 고민해 왔습니다.
Gemini 1.5 Pro: 맬웨어 분석을 위한 확장 가능한 리버스 엔지니어링 솔루션
Gemini 1.5 Pro는 최대 100만 토큰까지 처리할 수 있는 성능으로 리버스 엔지니어링 작업에서 맬웨어 분석의 질을 한 단계 끌어올렸습니다. 이는 과거에 숙련된 전문가만 할 수 있던 복잡한 바이너리와 실행 파일 분석 작업을 생성형 AI의 힘을 빌려 초보자도 할 수 있는 시대가 되었음을 알리는 신호탄이라 할 수 있습니다.
Gemini 1.5 Pro는 다음과 같은 개선을 통해 맬웨어 분석의 새로운 장을 열고 있습니다.
-
용량 증가: 확장된 토큰 한도 덕분에 Gemini 1.5 Pro는 분해되거나 디컴파일된 실행 파일 전체를 한 번에 분석할 수 있습니다. 이 방식은 코드를 작은 조각으로 나누어 분석할 필요가 없어, 코드 간의 맥락을 파악에 유리합니다. 이는 맬웨어의 전체적인 기능과 행동을 더 잘 이해할 수 있게 하며, 분석 결과의 정확성과 포괄성을 크게 개선합니다.
-
코드 해석: Gemini 1.5 Pro는 단순히 패턴이나 유사성을 식별하는 것을 넘어 코드의 의도와 목적까지 파악하는 데에도 도움이 됩니다. 이는 다양한 아키텍처의 어셈블리 언어, C와 같은 고급 언어, 디컴파일러가 생성한 의사 코드 등을 포함한 방대한 데이터 세트에 대한 학습을 바탕으로 합니다. Gemini 1.5 Pro는 광범위한 지식과 운영체제, 네트워킹, 사이버 보안 원칙에 대한 명확한 이해를 바탕으로 수준 높은 맬웨어 분석가의 추론과 판단을 효과적으로 모방할 수 있습니다.
-
세부 분석: Gemini 1.5 Pro는 사람이 읽을 수 있는 자연어로 요약 보고서를 생성하여 누구나 분석 과정에 손쉽게 접근할 수 있습니다. 이 보고서에는 맬웨어의 기능, 행동, 잠재적 공격 벡터를 자세히 설명하고, 다른 보안 시스템에서 사용할 수 있는 침해 지표(IOC) 등이 포함됩니다. 단순한 보고서라기 보다 전통적인 ML 알고리즘이 제공하기 어려운 깊이 있는 분석 내용을 담고 있다고 보면 됩니다.
Gemini 1.5 Pro를 사용한 사례 사례를 소개하겠습니다. 대표적인 맬웨어인 WannaCry의 바이너리 파일 2개를 Hex_Rays 디컴파일러로 자동 처리했습니다. 별도의 주석이나 추가적인 문맥 없이 진행된 이 분석은 268KB 크기의 C 코드 파일 2개를 생성했는데, 이는 총 28만 토큰 이상을 처리해야 하는 작업이었습니다.


다른 생성형 AI 도구를 사용할 때는 코드를 여러 조작으로 나누어 분석해야 하는 한계로 분석의 정확성이 떨어지고 결과가 모호해지는 경우가 많았습니다. 이는 복잡한 코드 베이스를 다룰 때 직면할 수 있는 어려움입니다. 반면에 Gemini 1.5 Pro는 이러한 제약에서 벗어나 전체 디컴파일된 코드를 단 34초 만에 한 번에 처리하였고, 결과 또한 매우 정확하였습니다.
Gemini 1.5 Pro는 다음과 같은 분석 결과를 제공했습니다.
-
랜섬웨어와 관련된 악의적인 판정
-
특정 파일(c.wnry, tasksche.exe)을 침해 지표로 식별
-
IP 주소 생성과 포트 445/SMB를 통한 네트워크 스캔을 수행하는 알고리즘 인식
-
WannaCry의 킬스위치라 불리는 URL/도메인 및 관련 레지스트리 키와 뮤텍스 식별


이 보고서가 특정 맬웨어에 대한 서잔 훈련된 지식에 기반한 것처럼 보일 수 있지만, 사실은 Gemini 1.5 Pro가 코드를 독립적으로 해석한 결과입니다. 이런 능력은 앞으로 Gemini 1.5 Pro가 알려지지 않은 맬웨어 샘플을 분석할 때 그 광범위한 분석 능력을 더욱 명확하게 보여줄 것입니다.
LLM을 활용한 코드 분석: 분해 코드와 디컴파일 코드 비교
WannaCry 분석 예시에서 볼 수 있듯이 LLM에 코드를 입력하기 전에 중요한 과정인 디컴파일이 필요했습니다. 이 과정은 이진 코드를 C 같은 고급 언어로 변환하며, 맬웨어 분석가들이 수동으로 맬웨어를 분석할 때 취하는 초반 작업 단계를 자동화합니다. 그렇다면 분해된 코드와 디컴파일된 코드의 차이는 무엇이며, 이것이 LLM 분석에 어떤 영향을 끼칠까요?
-
분해: 이 과정은 이진 코드를 프로세서 아키텍처에 특화된 저수준 언어인 어셈블리 언어로 변환합니다. 어셈블리 코드는 읽기을 수 있지만 복잡하며 이해하려면 상당한 전문 지식이 필요합니다. 또한, 원본 소스 코드보다 훨씬 길고 복잡합니다.
-
디컴파일: 이 과정은 이진 코드로부터 원본 소스 코드를 재구성합니다. 완벽하지는 않지만, 함수, 루프, 변수와 같은 고급 구조를 식별하여 분해된 코드보다 가독성과 간결함을 높일 수 있습니다. 이는 분석가가 코드를 더 쉽게 이해할 수 있게 해줍니다.
이러한 특성을 고려할 때 LLM을 이용한 바이너리 분석에서 디컴파일은 효율성과 확장성 측면에서 여러 이점을 제공합니다. 디컴파일로 인한 출력은 더 짧고 구조화된 형태로 LLM의 처리 제약 내에서 더 쉽게 맞추어져, 대규모 또는 복잡한 바이너리를 더 효율적으로 분석할 수 있습니다. 실제로 디컴파일 출력은 분해기가 생성하는 출력보다 5~10배 더 간결할 수 있습니다.
분해는 정확한 디컴파일을 수행하기 위해 필요하며, 자세한 저수준 분석이 중요한 특정 시나리오에서 여전히 귀중한 도구입니다. 그러나 디컴파일된 출력의 구조화되고 고급 수준의 특성을 고려할 때 분해는 특정 상황에서 디컴파일이 제공할 수 없는 통찰력을 제공합니다.
Gemini 1.5 Pro는 다양한 아키텍처에서 고급 언어와 어셈블리 언어를 모두 효과적으로 처리할 수 있습니다. 이에 따라 분석가는 각각의 사례에 맞춰 바이너리 분석을 자동화하기 위해 여러 전략을 융합하는 하이브리드 접근 방식을 취할 수 있습니다. 이런 유연성은 프로그램의 복잡한 로직이나 저수준 작업을 깊이 있게 분석할 때 특히 유용합니다.
이번 분석 사례에서는 WannaCry와 비교할 때 상대적으로 새롭고 잘 알려지지 않은 바이너리를 다루어 보겠습니다. VirusTotal에 제출된 이 실행 파일은 70개 안티맬웨어 엔진 중 단 4개만이 파일을 악성으로 간주했습니다.




HexRays/IDA Pro를 사용해 자동 전처리를 하였으며 Gemini 1.5 Pro는 단 46초 만에 1.5MB 크기의 어셈블리 파일을 생성하였습니다. 이를 통해 바이너리 전체에 대한 면밀한 분석이 가능하며, 바이너리 운영에 대한 상세한 통찰을 제공합니다.


Gemini 1.5 Pro는 이 파일을 악성으로 판단하고, 그 이유에 대한 상세 설명을 제공했습니다. 이 파일은 그랜드 테프트 오토(Grand Theft Auto) 게임에 해킹 DLL을 주입하는 게임 치트로 추정됩니다. 이러한 '악성' 판정은 게임 개발자나 보인 팀에 따라 다르게 해석할 수 있습니다. 개발자나 보안 팀의 눈에는 부정 행위로 보일 수 있지만, 일부 플레이어에게는 나만 알고 쓰고 싶은 기능일 수 있습니다. 이러한 자동 분석 과정을 보면 매우 인상적입니다. 그리고 결과를 보면 바이너리의 성격과 의도에 대한 깊은 통찰을 제공한다는 것을 알 수 있습니다.
제로데이 탐지: 미지의 위협을 탐지하는 사례
제로데이 공격을 선제적으로 막고, 기존 방식으로는 파악할 수 없는 새로운 위협을 식별하는 것은 맬웨어 분석 도구의 진정한 능력을 평가하는 일입니다. 이번 사례에서는 VirusTotal의 어떤 안티바이러스나 샌드박스에서도 감지되지 않은 실행 파일을 살펴보겠습니다.


833KB 크기의 ‘medui.exe’ 파일은 디컴파일 과정을 거쳐 189,080개의 토큰으로 변환되었고, Gemini 1.5 Pro는 이를 단 27초 만에 분석해 전체 맬웨어 분석 보고서를 생성했습니다.




이 분석을 통해 Gemini 1.5 Pro는 여러 의심스러운 기능을 발견하고 파일을 악성으로 판단했습니다. 이 맬웨어는 주로 보안 소프트웨어를 무력화하고 비트코인 거래를 가로채어 암호화폐를 탈취하는 것을 목표로 하는 것으로 분석되었습니다.
Gemini 1.5 Pro의 이러한 분석 능력은 단순한 패턴 매칭이나 ML 학습을 통한 분류를 넘어 코드의 행동을 깊이 있게 이해하고 악의적인 의도까지 파악할 수 있다는 것을 보여줍니다. 이는 전통적인 방법으로는 감지하기 어려운 새로운 위협을 선제적으로 탐지하고 대응할 수 있게 해, 맬웨어 분석 분야에서 중요한 진전을 이루었습니다.
조력자에서 분석가로
Gemini 1.5 Pro는 디컴파일된 코드와 분해된 대량의 코드를 분석하는 데 탁월한 기능을 제공합니다. 이 도구는 효율성과 정확성을 토대로 증가하는 위협에 대응할 수 있는 역량을 제공합니다. 이에 따라 맬웨어 분석가는 조사해야 할 대상과 범위를 확대하여 맬웨어와 싸움을 더 유리한 방향으로 바꿀 수 있습니다.
하지만, 이는 시작에 불과합니다. Gemini 1.5 Pro가 큰 도약을 이루었지만, 생성형 AI 분야는 여전히 초기 단계에 있습니다. 실제로 견고하고 신뢰할 수 있는 자동 맬웨어 분석의 시대가 오려면 다음과 같은 도전 과제를 해결해야 합니다.
-
난독화 및 패킹: 맬웨어 제작자들은 코드를 난독화하고 탐지를 피하고자 계속해서 새로운 기술을 개발하고 있습니다. 이에 대응하려면 생성형 AI 모델을 지속해서 개선하고, 분석 전에 바이너리의 전처리를 강화할 필요가 있습니다. 다양한 전처리 도구를 활용하는 동적 접근을 채택하면 맬웨어의 언패킹과 난독화를 더 효과적으로 해결할 수 있습니다. 이 준비 단계는 생성형 AI 모델이 기본 코드를 정확하게 분석할 수 있도록 하여, 진화하는 난독화 기술을 따라잡고 복잡한 맬웨어 위협을 효과적으로 감지하고 이해할 수 있게 합니다.
-
증가하는 바이너리 크기: 현대 소프트웨어 복잡성은 그 크기의 증가로 가늠해 볼 수 있습니다. 이 추세는 대부분의 생성형 AI 모델이 훨씬 낮은 토큰 창 한계에 제약을 받기 때문에 상당한 도전이라 할 수 있습니다. 반면에 Gemini 1.5 Pro는 최대 100만 토큰을 지원하여 업계에서 가장 큰 용량을 자랑합니다. 그러나 놀라운 능력을 갖춘 Gemini 1.5 Pro도 큰 바이너리를 처리할 때 한계에 직면할 수 있습니다. AI 기술의 지속적인 발전이 필요하며, 소프트웨어 복잡성 증가에 맞춰 더 큰 파일을 분석할 수 있어야 더 효과적인 맬웨어 분석을 보장할 수 있습니다.
-
공격 기술의 진화: 공격자들이 보안 조치를 우회하는 새로운 방법을 지속해서 창안함에 따라 생성형 AI 모델에 대한 도전은 단순한 적응성을 넘어섭니다. 이 모델들은 새로운 위협을 학습하고 인식할 뿐만 아니라 연구자와 개발자의 노력과 함께 진화해야 합니다. 위협 데이터를 자동으로 전처리하는 새로운 방법을 고안하여 AI 모델에 제공하는 컨텍스트를 더 풍부하게 만들어야 합니다. 예를 들어 정적 및 동적 분석 도구에서 추가 데이터를 통합하면 모델의 이해 및 탐지 능력을 크게 높일 수 있습니다.
자동 맬웨어 분석의 대상과 범위를 확장하는 여정은 계속되고 있습니다. Gemini 1.5 Pro는 이 여정에서 중요한 이정표를 세웠습니다. Gemini 1.5 Pro를 사용해 보세요. 이 도구를 활용해 보안 운영을 개선하는 혁신적인 방법을 보안 커뮤니티가 어떻게 찾아 나갈지 기대가 큽니다.
GSEC 말라가에서 구글은 이러한 모델을 AI에 효과적으로 적용하는 방법을 계속 연구하고 개발하여, 사이버 보안의 가능성을 넓히고 더 안전한 디지털 미래에 기여하고 있습니다.
평가에 사용한 맬웨어 정보
프롬프트
다음은 본 포스팅에서 다룬 모든 예제에서 사용한 프롬프트입니다. 유일한 예외는 "디컴파일" 대신 "분해된"이라는 단어를 사용한 예제입니다. 이는 Gemini 1.5 Pro가 디컴파일된 코드뿐만 아니라 분해된 코드도 해석할 수 있음을 보여주기 위해서입니다. 정확한 내용 전달을 위해 프롬프트는 영어 원문으로 표기하였습니다.
