콘텐츠로 이동하기
위협 인텔리전스

Gemini, 코드 인터프리터와 Google 위협 인텔리전스로 악성코드 분석 능력 향상

2025년 1월 9일
Bernardo Quintero

Andrés Ramírez

Gemini 1.5 모델 사용해 보기

Google Vertex AI의 가장 진보한 멀티모달 모델

사용해 보기

* 해당 블로그의 원문은 2024년 11월 20일 Google Cloud 블로그(영문)에 게재되었습니다. 

Google Cloud의 주요 임무 중 하나는 보안 전문가가 최신 위협으로부터 방어하는 데 도움이 되는 최신 도구를 제공하는 것입니다. 이러한 임무의 일환으로 위협 인텔리전스 자동화에서 보다 자율적이고 적응력 있는 접근 방식으로 전환하고 있습니다.

악성코드 분석의 최신 발전 사항에서 Google은 난독화 기술을 해결하고 침해 지표(IOC)에 대한 실시간 통찰력을 얻기 위해 Gemini에 새로운 기능을 탑재하고 있습니다. Code Interpreter 확장 프로그램을 통합함으로써 Gemini는 이제 특정 문자열이나 코드 섹션의 난독화를 해제하는 데 도움이 되는 코드를 동적으로 생성하고 실행할 수 있으며, Google Threat Intelligence(GTI) 함수 호출을 통해 악성코드 샘플 내에서 발견된 URL, IP 및 도메인에 대한 추가 컨텍스트를 GTI에 쿼리할 수 있습니다. 이러한 도구는 Gemini를 악성코드 분석을 위한 보다 적응력 있는 에이전트로 변환하고 난독화된 요소를 해석하고 각 샘플의 고유한 특성에 따라 컨텍스트 정보를 수집하는 기능을 향상시키는 단계입니다.

이 기반을 토대로 이전에는 Gemini 1.5 Pro를 사용하여 중요한 준비 단계를 살펴보았으며, 200만 토큰 입력 창을 활용하여 단일 패스에서 상당한 양의 디컴파일된 코드 섹션을 처리했습니다. 확장성을 더욱 향상시키기 위해 디컴파일 단계 이전에 Mandiant Backscatter를 통해 자동 바이너리 압축 풀기를 통합하여 특정 난독화 기술을 처리하는 Gemini 1.5 Flash를 도입했습니다. 그러나 노련한 악성코드 분석가라면 누구나 알고 있듯이 진정한 과제는 종종 코드가 노출된 후에 시작됩니다. 악성코드 개발자는 중요한 IOC와 기본 논리를 숨기기 위해 난독화 전략을 자주 사용합니다. 또한 악성코드는 추가 악성 코드를 다운로드하여 특정 샘플의 동작을 완전히 이해하기 어렵게 만들 수 있습니다.

대규모 언어 모델(LLM)의 경우 난독화 기술과 추가 페이로드로 인해 고유한 문제가 발생합니다. URL, IP, 도메인 또는 파일 이름과 같은 난독화된 문자열을 처리할 때 LLM은 종종 명시적 디코딩 방법 없이 "환각"을 일으킵니다. 또한 LLM은 추가 페이로드를 호스팅하는 URL 등에 액세스할 수 없으므로 종종 샘플의 동작에 대한 추측적 해석을 초래합니다.

이러한 문제를 해결하기 위해 코드 인터프리터 및 GTI 함수 호출 도구는 표적화된 솔루션을 제공합니다. 코드 인터프리터를 통해 Gemini는 XOR 기반 알고리즘으로 인코딩된 문자열과 같이 샘플 내에서 난독화된 요소를 디코딩하기 위해 자체 판단을 사용하여 필요에 따라 사용자 지정 스크립트를 자율적으로 생성하고 실행할 수 있습니다. 이 기능은 해석 오류를 최소화하고 수동 개입 없이 숨겨진 논리를 드러내는 Gemini의 기능을 향상시킵니다.

한편 GTI 함수 호출은 URL, IP 또는 도메인과 같은 의심스러운 외부 리소스에 대한 컨텍스트화된 정보를 Google 위협 인텔리전스에서 검색하여 추측 없이 검증된 통찰력을 제공함으로써 Gemini의 범위를 확장합니다. 이러한 도구는 함께 Gemini가 난독화되거나 외부에서 호스팅되는 데이터를 더 잘 처리할 수 있도록 지원하여 악성코드 분석을 위한 자율 에이전트로서 기능한다는 목표에 더 가까이 다가갈 수 있도록 합니다.

이러한 개선 사항이 Gemini의 기능을 어떻게 향상시키는지 설명하기 위해 실제 예를 살펴보겠습니다. 이 경우 2단계 페이로드를 호스팅하는 난독화된 URL이 포함된 PowerShell 스크립트를 분석하고 있습니다. 이 특정 샘플은 이전에 코드 생성 및 실행을 추론 프로세스의 일부로 통합하는 가장 고급 공개 LLM 모델 중 일부를 사용하여 분석되었습니다. 이러한 기능에도 불구하고 각 모델은 "환각"을 일으켜 올바른 URL을 정확하게 표시하는 대신 완전히 조작된 URL을 생성했습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware3-fig1.max-1500x1500.png

Gemini가 분석할 난독화된 PowerShell 코드 샘플

추론 프로세스의 일부로 코드 인터프리터 및 GTI 함수 호출을 활용하는 Gemini는 사람의 개입 없이 자율적으로 다음 보고서를 생성했습니다. 필요하다고 판단되면 이러한 도구를 적용하여 샘플에서 추가 정보를 처리하고 추출합니다.

최종 보고서: URL 난독화를 사용하는 PowerShell 악성코드

이 보고서는 난독화된 URL에서 파일을 다운로드하고 실행하도록 설계된 PowerShell 스크립트를 분석합니다. 이 스크립트는 악성 URL을 숨기기 위해 RC4 스트림 암호와 유사한 사용자 지정 난독화 루틴을 사용합니다.

기능:

  1. 난독화 루틴: 스크립트는 "tox2" 문자열에서 파생된 키를 사용하여 바이트 수준 XOR 암호화를 수행하는 함수 F를 정의합니다. 이 함수는 악성 URL의 난독화를 해제하는 데 사용됩니다.
  2. URL 암호 해독: 바이트 배열로 저장된 난독화된 URL은 "tox2"를 키로 사용하여 F 함수를 사용하여 암호 해독됩니다.

  3. 파일 다운로드: 스크립트는 암호 해독된 (hxxps://filedn[.]eu/lODWTgN8sswHA6Pn8HXWe1J/tox2/Scan_docs%2398097960[.]msi)에서 파일을 다운로드하고 임의로 생성된 파일 이름으로 시스템의 임시 디렉토리에 저장합니다.

  4. 실행: 마지막으로 스크립트는 다운로드한 파일을 실행합니다.

침해 지표(IOC):

  • URL: hxxps://filedn[.]eu/lODWTgN8sswHA6Pn8HXWe1J/tox2/Scan_docs%2398097960[.]msi

난독화 해제 코드:

def deobfuscate(x, y):
    s = list(range(256))
    j = 0
    k = [ord(c) for c in y]
    for i in range(256):
        j = (j + s[i] + k[i % len(k)]) % 256
        s[i], s[j] = s[j], s[i]
    i = 0
    j = 0
    output = []
    for m in range(len(x)):
        i = (i + 1) % 256
        j = (j + s[i]) % 256
        s[i], s[j] = s[j], s[i]
        output.append(x[m] ^ s[(s[i] + s[j]) % 256])
    return output

a = [0x25, 0x7B, 0x5A, 0xD8, 0x9C, 0xFF, 0xC3, 0xA4, 0x95, 0xB7, 
0x9D, 0x6E, 0x5F, 0x4D, 0x49, 0xFB, 0x78, 0x32, 0xB8, 0x17, 0x72, 
0x01, 0x31, 0xFB, 0xC0, 0x58, 0x45, 0xCB, 0x5C, 0x3C, 0xDD, 0x00, 
0x60, 0x87, 0x25, 0xB2, 0x44, 0xA6, 0xC5, 0xEA, 0x71, 0xAA, 0x9D, 
0xA1, 0x05, 0x5F, 0xBD, 0x41, 0x28, 0x70, 0x30, 0x6B, 0x96, 0x24, 
0x92, 0xA0, 0x9D, 0x92, 0x23, 0x79, 0x69, 0x2C, 0x1B, 0x1E, 0xEB, 
0x69, 0x8F, 0x04, 0x10, 0x74, 0xBC]
b = "tox2"
c = deobfuscate(a, b)
decoded_url = "".join(chr(i) for i in c)
print(decoded_url)

Google Threat Intelligence (GTI) 조회:

GTI 조회는 식별된 IOC와 관련하여 귀중한 컨텍스트를 제공합니다.

  • 위협 행위자: 우크라이나 보안 서비스를 사칭하는 피싱 캠페인에서 MESHAGENT를 사용하는 것으로 알려진 UNC5687입니다.

  • 캠페인: 이 특정 URL은 악성 링크가 포함된 피싱 이메일을 통해 MESHAGENT를 확산하는 캠페인과 연결되어 있습니다. 이 캠페인에는 악성 MSI 또는 EXE 파일 다운로드로 이어지는 캡차 페이지가 포함되었습니다.

  • 맬웨어: 이 캠페인은 "AnonVNC"라는 서비스와 통신하도록 구성된 오픈 소스 원격 액세스 프레임워크인 MESHAGENT를 제공합니다.

결론:

분석된 PowerShell 스크립트는 MESHAGENT 원격 액세스 도구를 배포하는 UNC5687의 피싱 캠페인과 관련된 악성 스크립트로 확인되었습니다.

Gemini는 스크립트가 다운로드 URL을 숨기기 위해 RC4와 유사한 XOR 기반 난독화 알고리즘을 사용한다는 것을 확인했습니다. 이 패턴을 인식한 Gemini는 코드 인터프리터 샌드박스 내에서 Python 난독화 해제 스크립트를 자율적으로 생성하고 실행하여 외부 리소스를 성공적으로 드러냅니다.

URL을 확보한 Gemini는 GTI 함수 호출을 사용하여 Google 위협 인텔리전스에 추가 컨텍스트를 쿼리합니다. 이 분석은 우크라이나 보안 서비스를 사칭하는 피싱 캠페인에서 원격 액세스 도구를 사용하는 것으로 알려진 위협 클러스터인 UNC5687에 URL을 연결합니다.

살펴본 바와 같이 이러한 도구의 통합으로 Gemini는 난독화를 해결하고 IOC에 대한 중요한 컨텍스트를 수집하기 위해 접근 방식을 조정할 수 있는 악성코드 분석가로서 기능하는 Gemini의 능력이 강화되었습니다. 코드 인터프리터와 GTI 함수 호출을 통합함으로써 Gemini는 숨겨진 요소를 자율적으로 해석하고 외부 참조를 컨텍스트화하여 복잡한 샘플을 더 잘 탐색할 수 있습니다.

이러한 중요한 발전에도 불구하고 위협 환경에 존재하는 광범위한 맬웨어 및 시나리오의 다양성을 고려할 때 많은 과제가 남아 있습니다. Google은 꾸준한 진전을 이루기 위해 최선을 다하고 있으며 향후 업데이트를 통해 Gemini의 기능을 계속 향상시켜 위협 인텔리전스 자동화에서 보다 자율적이고 적응력 있는 접근 방식에 더 가까이 다가갈 것입니다.

게시 위치