KR-20260061238-A - WINDOWS .NET 바이너리들을 위한 자동화된 코드 서명 생성
Abstract
다양한 실시예들은 Windows .NET 바이너리들을 위한 서명을 생성하기 위한 시스템, 방법 및 디바이스를 제공한다. 본 방법은 (i) 해싱 기법을 사용하여 코드에 기반한 파일 서명을 생성하는 단계, 및 (ii) 코드에 기반한 파일 서명을 사용하여 샘플을 분류하는 단계를 포함한다.
Inventors
- 쩡 둥루이
- 지 양
- 후 원쥔
Assignees
- 팔로 알토 네트웍스, 인크.
Dates
- Publication Date
- 20260506
- Application Date
- 20241018
- Priority Date
- 20231030
Claims (20)
- Windows .NET 바이너리에 대한 서명을 생성하기 위한 시스템에 있어서, 하나 이상의 프로세서들로서, 상기 하나 이상의 프로세서들은: 해싱 기법을 사용하여 코드에 기초하여 파일 서명을 생성하고; 상기 코드에 기초하여 상기 파일 서명을 사용하여 샘플을 분류하도록 구성된, 상기 하나 이상의 프로세서들; 및 상기 하나 이상의 프로세서들에 결합되고 상기 하나 이상의 프로세서들에 명령어들을 제공하도록 구성된 메모리를 포함하는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 코드는 Windows .NET 바이너리에 대응하는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 해싱 기법은 MD5 해시 함수인, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 해싱 기법은 SSDeep 해시 함수인, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 해싱 기법은 TLSH 해시 함수인, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 코드에 기초하여 상기 파일 서명을 사용하여 상기 샘플을 분류하는 것은: 상기 파일 서명에 적어도 부분적으로 기초하여 상기 샘플이 악성 샘플이라고 결정하는 것을 포함하는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 코드에 기초하여 상기 파일 서명을 사용하여 상기 샘플을 분류하는 것은: 상기 파일 서명에 적어도 부분적으로 기초하여 상기 샘플이 정상 샘플이라고 결정하는 것을 포함하는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 하나 이상의 프로세서들은: 샘플 분류에 적어도 부분적으로 기초하여 상기 샘플을 핸들링하도록 추가로 구성되는, 서명을 생성하기 위한 시스템.
- 제 8 항에 있어서, 상기 샘플은 미리 정의된 보안 정책에 적어도 부분적으로 기초하여 핸들링되는, 서명을 생성하기 위한 시스템.
- 제 8 항에 있어서, 상기 샘플을 핸들링하는 것은 상기 샘플이 악성 샘플에 대응한다고 결정한 것에 응답하여 적극적 조치를 수행하는 것을 포함하는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 하나 이상의 프로세서들은 상기 Windows .NET 바이너리를 파싱하고, 상기 Windows .NET 바이너리에 의해 구현된 메서드(method)들을 상기 코드로 디스어셈블하도록 추가로 구성되는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 코드는 상기 Windows .NET 바이너리에 의해 구현된 하나 이상의 메서드들에 대한 코드에 대응하는, 서명을 생성하기 위한 시스템.
- 제 12 항에 있어서, 상기 코드는 상기 Windows .NET 바이너리를 파싱하는 것에 기초하여 획득되고; 상기 하나 이상의 메서드들에 대한 상기 코드는 통일된 포맷에 기초하여 하나 이상의 변환 결과들로 변환되고; 상기 하나 이상의 변환 결과들은 하나 이상의 해시 결과들을 획득하기 위해 해시되고 파일 서명은 상기 하나 이상의 해시 결과들에 기초하여 생성되는, 서명을 생성하기 위한 시스템.
- 제 13 항에 있어서, 상기 하나 이상의 해시 결과들은 중간 해시들에 대응하고, 최종 해시 결과는 연결된 해시를 획득하기 위해 상기 중간 해시들을 연결하고 연결된 해시에 대해 해시를 수행하는 것에 기초하여 획득되는, 서명을 생성하기 위한 시스템.
- 제 14 항에 있어서, 상기 연결된 해시를 획득하기 위한 상기 해싱 기법은 SSDeep 해시 함수 또는 TLSH 해시 함수인, 서명을 생성하기 위한 시스템.
- 제 13 항에 있어서, 상기 하나 이상의 변환 결과들은 대응하는 메서드 내의 피연산자들의 와일드카드(wildcard)를 사용하고 데이터 독립적인, 서명을 생성하기 위한 시스템.
- 제 16 항에 있어서, 상기 하나 이상의 프로세서들은: 상기 하나 이상의 변환 결과들에 기초하여 알려진 멀웨어 함수 메서드를 식별하기 위한 Yara 규칙을 생성하도록 추가로 구성되는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 상기 파일 서명은 멀웨어 학습, 멀웨어 검출, 및 멀웨어 클러스터링 중 하나 이상과 관련하여 사용되는, 서명을 생성하기 위한 시스템.
- 제 1 항에 있어서, 파일들의 세트에 대한 서명들의 세트는 상기 서명들이 미리 정의된 유사성 임계치보다 높은 유사성 점수를 갖는다고 결정한 것에 응답하여 클러스터링되는, 서명을 생성하기 위한 시스템.
- 제 19 항에 있어서, 상기 미리 정의된 유사성 임계치는 95 퍼센트보다 큰, 서명을 생성하기 위한 시스템.
Description
WINDOWS .NET 바이너리들을 위한 자동화된 코드 서명 생성 악의적인 개인들은 다양한 방식들로 컴퓨터 시스템들을 침해하려고 시도한다. 일 예로서, 이러한 개인들은 이메일 첨부물들에 악성 소프트웨어("멀웨어")를 끼워넣거나 다른 방식으로 포함시켜 의심하지 않는 사용자들에게 멀웨어를 송신하거나 송신하게 한다. 실행되면, 멀웨어는 피해자의 컴퓨터를 침해한다. 일부 유형들의 멀웨어는 참해된 컴퓨터가 원격 호스트와 통신하도록 명령한다. 예를 들어, 멀웨어는 침해된 컴퓨터를 "봇넷"의 봇"으로 만들어 악의적인 개인의 제어 하에서 "커맨드 및 제어(C&C) 서버로부터 명령을 수신하고/하거나 해당 서버에 데이터를 보고할 수 있다. 멀웨어로 인한 피해를 완화하는 하나의 접근법은 보안 회사(또는 다른 적절한 엔티티)가 멀웨어를 식별하고 멀웨어가 최종 사용자 컴퓨터에 도달/실행되는 것을 방지하려고 시도하는 것이다. 다른 접근법은 침해된 컴퓨터들이 C&C 서버와 통신하는 것을 방지하려고 시도하는 것이다. 바람직하지 않게, 멀웨어 작성자들은 자신들의 소프트웨어 작동을 난독화하기 위해 점점 더 정교한 기법을 사용하고 있다. 이에 따라, 멀웨어를 검출하고 그 피해를 방지하기 위한 개선된 기법에 대한 지속적인 요구가 존재한다. 본 발명의 다양한 실시예들은 다음의 상세한 설명과 첨부 도면들에 개시되어 있다. 도 1은 다양한 실시예들에 따라 악성 파일이 검출되거나 의심되는 환경의 블록도이다. 도 2는 다양한 실시예들에 따라 악성 파일을 검출하기 위한 시스템의 블록도이다. 도 3a는 정상적인(benign) .NET 파일의 예에 포함된 메서드(method)를 위한 코드의 예시이다. 도 3b는 정상적인 .NET 파일의 예에 포함된 메서드를 위한 메서드 코드에 기반한 와일드카드 처리된(wildcarded) 메서드의 예시이다. 도 3c는 정상적인 .NET 파일의 예에 포함된 메서드를 위한 코드의 예시이다. 도 3d는 정상적인 .NET 파일의 예에 포함된 메서드를 위한 메서드 코드에 기반한 와일드카드 처리된 메서드의 예시이다. 도 4a는 악성 .NET 파일의 예에 포함된 메서드를 위한 코드의 예시이다. 도 4b는 악성 .NET 파일의 예에 포함된 메서드를 위한 메서드 코드에 기반한 와일드카드 처리된 메서드의 예시이다. 도 4c는 악성 .NET 파일의 예에 포함된 메서드를 위한 코드의 예시이다. 도 4d는 악성 .NET 파일의 예에 포함된 메서드를 위한 메서드 코드에 기반한 와일드카드 처리된 메서드의 예시이다. 도 5는 다양한 실시예들에 따라 파일 서명들에 기반하여 파일 계열들(families)을 식별하는 방법의 흐름도이다. 도 6은 다양한 실시예들에 따라 샘플에 대한 파일 서명에 적어도 부분적으로 기반하여 샘플을 분류하는 방법의 흐름도이다. 도 7은 다양한 실시예들에 따라 함수 코드를 와일드카드 함수로 변환하는 예이다. 도 8은 다양한 실시예들에 따라 샘플 분류를 수행하는 방법의 흐름도이다. 도 9는 다양한 실시예들에 따라 샘플 분류를 수행하는 방법의 흐름도이다. 도 10은 다양한 실시예들에 따라 샘플을 위한 코드 내의 함수들에 대한 중간 해시들(intermediate hashes)을 결정하는 방법의 흐름도이다. 도 11은 다양한 실시예들에 따라 샘플을 위한 코드 내의 함수에 대한 중간 해시에 적어도 부분적으로 기반하여 악성 샘플을 검출하는 방법의 흐름도이다. 도 12는 다양한 실시예들에 따라 샘플에 대한 파일 서명을 획득하는 방법의 흐름도이다. 도 13은 다양한 실시예들에 따라 파일 계열 세트를 획득하기 위해 각각의 파일 서명들에 기반하여 파일들을 클러스터링하는 방법의 흐름도이다. 도 14는 다양한 실시예들에 따라 파일 계열 세트에 대한 분석 결과를 획득하는 방법의 흐름도이다. 도 15는 다양한 실시예들에 따라 수신된 트래픽에서 악성 파일을 검출하는 방법의 흐름도이다. 도 16은 다양한 실시예들에 따라 네트워크 트래픽에서 수신된 파일들을 분류하고 핸들링하는 방법의 흐름도이다. 본 발명은 프로세스; 장치; 시스템; 문제의 구성; 컴퓨터 판독가능 저장 매체에 구현된 컴퓨터 프로그램 제품; 및/또는 프로세서에 결합된 메모리에 저장되고 및/또는 메모리에 의해 제공되는 명령어들을 실행하도록 구성된 프로세서와 같은 프로세서를 포함하여, 다양한 방식들로 구현될 수 있다. 본원에서, 이러한 구현들, 또는 본 발명이 취할 수 있는 임의의 다른 형태는 기법들로 지칭될 수 있다. 일반적으로, 개시된 프로세스들의 단계들의 순서는 본 발명의 범위 내에서 변경될 수 있다. 달리 명시하지 않는 한, 작업을 수행하도록 구성되는 것으로 설명된 프로세서 또는 메모리 같은 구성요소는 주어진 시간에 작업을 일시적으로 수행하도록 구성된 일반적인 구성요소 또는 작업을 수행하도록 제조된 특정 구성요소로서 구현될 수 있다. 본원에 사용된, '프로세서'라는 용어는 컴퓨터 프로그램 명령어들과 같은 데이터를 처리하도록 구성된 하나 이상의 디바이스들, 회로들 및/또는 처리 코어들을 지칭한다. 본 발명의 하나 이상의 실시예들의 상세한 설명은 본 발명의 원리들을 예시하는 첨부 도면들과 함께 아래에 제공된다. 본 발명은 이러한 실시예들과 관련하여 설명되지만, 본 발명은 임의의 실시예로 제한되지 않는다. 본 발명의 범위는 청구범위에 의해서만 제한되고 본 발명은 수많은 대안들, 수정들 및 등가물들을 포함한다. 본 발명의 철저한 이해를 제공하기 위해 다양한 특정 세부사항들은 다음 설명에 제시된다. 이러한 세부사항들은 예의 목적으로 제공되고 본 발명은 이러한 특정 세부사항들 중 일부 또는 전부 없이 청구범위에 따라 실시될 수 있다. 명확성을 위하여, 본 발명과 관련된 기술 분야들에 알려져 있는 기술 자료는 본 발명이 불필요하게 모호해지는 것을 방지하기 위해 상세히 설명되지 않았다. 본원에 사용되는 바와 같이, 보안 엔티티는 네트워크 트래픽, 파일 등과 같은 정보와 관련하여 하나 이상의 보안 정책들을 집행하는 네트워크 노드(예를 들어, 디바이스)이다. 예로서, 보안 엔티티는 방화벽일 수 있다. 다른 예로서, 보안 엔티티는 라우터, 스위치, DNS 리졸버, 컴퓨터, 태블릿, 랩톱, 스마트폰 등으로 구현될 수 있다. 다양한 다른 디바이스들이 보안 엔티티로서 구현될 수 있다. 다른 예로서, 보안은 안티멀웨어 애플리케이션과 같이 디바이스 상에서 실행되는 애플리케이션으로 구현될 수 있다. 본원에 사용되는 바와 같이, 멀웨어는 은밀하든 그렇지 않든(그리고 불법적이든 아니든) 완전히 정보를 제공받았을 때 사용자가 승인하지 않거나/승인하지 않을 동작들에 관여하는 애플리케이션을 지칭한다. 멀웨어의 예들은 트로이목마, 바이러스, 루트킷들, 스파이웨어, 해킹 도구들, 키로거들 등을 포함한다. 멀웨어의 일 예는 최종 사용자의 위치를 수집하여 원격 서버에 보고하는 데스크톱 애플리케이션이다(그러나 사용자에게 위치 기반 서비스들, 이를테면 매핑 서비스를 제공하지 않음). 멀웨어의 다른 예는 최종 사용자에게 무료 게임인 바와 같이 보이지만, 은밀하게 SMS 프리미엄 메시지들(예를 들어, 개당 10달러)를 송신하여, 최종 사용자의 전화 요금을 인상하는 악성 Android 애플리케이션 패키지 .apk(APK) 파일이다. 멀웨어의 다른 예는 사용자의 연락처들을 은밀하게 수집하여 해당 연락처들을 스패머(spammer)에게 송신하는 Apple iOS 플래시라이트 애플리케이션이다. 다른 형태들의 멀웨어는 또한 본원에 설명된 기법들(예를 들어, 랜섬웨어)을 사용하여 검출/방지될 수 있다. 추가로, 멀웨어 서명들이 악성 애플리케이션들에 대해 생성되는 것으로 본원에 설명되지만, 본원에 설명된 기법들은 또한 다른 종류의 애플리케이션들(예를 들어, 애드웨어 프로필들, 굿웨어 프로필들 등)에 대한 프로필들을 생성하기 위해 다양한 실시예들에서 사용될 수 있다. .NET 프레임워크에 의해 생성된 바이너리들은 멀웨어 학습 및 검출을 위한 풍부한 정보를 갖는다. 예를 들어, .NET 바이너리의 임포트된 DLL들, 함수들 및 TypeRef 테이블은 해시되어 파일 서명으로 사용될 수 있으며, 이는 TypeRefHash 또는 TRH로 지칭된다. 그러나, TRH는 DLL 심볼들 및 함수 이름들에 의존하며, 이는 검출을 피하기 위해 쉽게 난독화될 수 있다. 대조적으로, Microsoft Intermediate Language(MSIL)로 작성된 .NET 바이너리의 코드를 난독화하는 것은 덜 일반적이고 더 어렵다. 추가적으로, 코드는 실행 파일의 기능을 직접적으로 나타내는 것이기 때문에, 코드에 의존하는 멀웨어 검출은 일반적으로 더 정확하다. 따라서 다양한 실시예들은 .NET 바이너리의 각 메서드의 코드를 자동으로 해시로 변환하고, 이를 기초로 파일 서명이 컴퓨팅된다(본원에 DNCodeHash로도 지칭됨). 파일 서명은 낮은 오탐률(false positive rate)로 멀웨어를 검출하고 코드 유사성-기반 멀웨어 클러스터링을 수행하는 데 사용될 수 있다. 다양한 실시예들에 따라, 시스템은 (i) .NET 바이너리를 파싱하고 메서드들(예를 들어, 파일의 코드에 의해 호출되는 함수들)을 식별하고, (ii) 각 메서드의 MSIL 코드를 통일된 포맷으로 변환하고 그 통일된 포맷을 해시하며(예를 들어, 함수 해시 또는 중간 서명을 획득하기 위해), (iii) 함수 해시들의 세트(예를 들어, 파일의 모든 함수 해시들)를 단일 파일 서명(예를 들어, DNCodeHash)으로 합성한다. DNCodeHash는 멀웨어 학습, 검출 및 클러스터링에 사용될 수 있다. 게다가, 함수 해시들은 또한 더 세분화된 멀웨어 검출에서 침해 지표(indicators of compromise)로 사용될 수 있다. 파싱은 다양한 오픈-소스 도구들에 의존할 수 있다. .NET 바이너리들은 일반적으로 잘 정의된 포맷 및 MSIL을 따르며, 시스템은 .NET 바이너리들을 디스어셈블하고 포맷과 코드를 파싱한다. 다양한 파싱 기법들이 구현될 수 있다. 예를 들어, 시스템은 python 라이브러리들인 dnfile 및 dncil과 같은 미리 정의된 라이브러리를 사용할 수 있다. MSIL 코드 변환 동안, 메서드 내의 각 MSIL 명령어에 대해, 시스템은 그 피연산자들을 와일드카드 처리한다.