Deadglyph로 중동 하늘을 노리는 스텔스 팔콘

Deadglyph로 중동 하늘을 노리는 스텔스 팔콘

소스 노드 : 2899203

수년 동안 중동은 지능형 지속 위협(APT)이 발생하기 좋은 지역이라는 평판을 유지해 왔습니다. ESET Research는 일부 이 지역에 기반을 둔 유명 고객의 시스템에서 의심스러운 활동을 정기적으로 모니터링하는 중에 Deadglyph라는 이름의 매우 정교하고 알려지지 않은 백도어를 발견했습니다. 우리는 백도어에서 발견된 아티팩트(예: 0x죽은B001, 에도 표시됨 REF _Ref111452440h 작업대 1
), 호모의 존재와 결합글리프 공격. 우리가 아는 한, 이는 상당한 수준의 정교함과 전문성을 보여주는 그룹이 사용하는 이전에 문서화되지 않은 이 백도어에 대한 최초의 공개 분석입니다. 표적화 및 추가 증거를 바탕으로 우리는 Deadglyph가 Stealth Falcon APT 그룹에 대한 높은 신뢰도를 갖고 있다고 생각합니다.

Deadglyph의 아키텍처는 다음과 같이 구성되어 있어 특이합니다. 협력 구성 요소 - 하나는 기본 x64 바이너리이고 다른 하나는 .NET 어셈블리입니다. 맬웨어는 일반적으로 해당 구성 요소에 대해 하나의 프로그래밍 언어만 사용하기 때문에 이러한 조합은 일반적이지 않습니다. 이러한 차이점은 두 구성 요소가 별도로 개발되는 동시에 두 구성 요소가 사용하는 고유한 프로그래밍 언어의 고유한 기능을 활용함을 나타낼 수 있습니다. 혼합 코드는 탐색 및 디버그가 더 어렵기 때문에 다른 언어를 활용하여 분석을 방해할 수도 있습니다.

기존 백도어 명령은 백도어 바이너리에 구현되지 않습니다. 대신 명령 및 제어(C&C) 서버로부터 추가 모듈 형태로 동적으로 수신됩니다. 이 백도어에는 탐지를 방지하는 다양한 기능도 있습니다.

이 블로그 게시물에서 우리는 Deadglyph를 자세히 살펴보고 이 백도어, 목적 및 우리가 얻은 추가 구성 요소에 대한 기술적 분석을 제공합니다. 우리는 또한 Deadglyph에 대한 우리의 연구 결과를 다음 사이트에서 발표하고 있습니다. LABScon 2023 회의.

블로그 게시물의 요점:

  • ESET 연구에서는 Deadglyph라는 특이한 아키텍처를 갖춘 정교한 백도어를 발견했습니다.
  • 주요 구성요소는 시스템별 키를 사용하여 암호화됩니다.
  • 기존 백도어 명령은 C&C 서버에서 수신한 추가 모듈을 통해 구현됩니다.
  • 우리는 많은 모듈 중 프로세스 생성자, 파일 판독기 및 정보 수집기의 세 가지 모듈을 얻었습니다.
  • 우리는 Deadglyph를 Stealth Falcon 그룹에 속합니다.
  • 또한 관련 쉘코드 다운로더도 발견했습니다. 우리는 이것이 잠재적으로 Deadglyph 설치에 사용될 수 있다고 가정합니다.

분석된 침투의 피해자는 간첩 목적으로 해킹당한 중동의 정부 기관입니다. VirusTotal에서 발견된 관련 샘플도 이 지역, 특히 카타르의 파일 검색 플랫폼에 업로드되었습니다. 대상 지역은 지도에 표시됩니다. REF _Ref143614671h 그림 1
.

데드글리프 Figure_01
그림 1. Deadglyph의 피해자; 관련 샘플은 카타르에서 VirusTotal에 업로드되었습니다(더 어두운 색).

Stealth Falcon(Project Raven 또는 FruityArmor라고도 함)은 아랍에미리트와 연계된 위협 그룹입니다. MITRE에 따르면. 2012년부터 활동한 Stealth Falcon은 중동의 정치 활동가, 언론인, 반체제 인사를 표적으로 삼는 것으로 알려져 있습니다. 에 의해 처음 발견되고 설명되었습니다. 시민 연구소, 이는 분석 2016년 스파이웨어 공격 캠페인 중.

2019년 XNUMX월 로이터는 다음과 같은 보고서를 발표했습니다. 조사 보고서 전 NSA 요원을 고용하고 Stealth Falcon과 동일한 유형의 목표를 목표로 하는 계획인 Project Raven에 대해 설명합니다. 동일한 표적과 공격을 언급한 이 두 보고서를 토대로 국제앰네스티는 결론을 내렸다 (표시 REF _Ref144978712h 그림 2
) Stealth Falcon과 Project Raven은 실제로 같은 그룹입니다.

데드글리프 그림 2
그림 2. Claudio Guarnieri는 Stealth Falcon을 Project Raven과 연결했습니다.

2019년 XNUMX월, 우리는 발표 된 연구 특이한 기술을 사용한 Stealth Falcon의 백도어에서 백그라운드 인텔리전트 전송 서비스, C&C 통신용입니다. 이제 Stealth Falcon의 간첩 도구 세트에 가장 최근에 추가된 기능에 대한 심층 분석 결과를 공개합니다.

데드글리프 백도어

Deadglyph의 로딩 체인은 그림과 같이 여러 구성 요소로 구성됩니다. REF _Ref144978760h 그림 3
. 초기 구성 요소는 레지스트리에서 쉘코드를 로드하는 레지스트리 쉘코드 로더입니다. 이렇게 추출된 쉘코드는 백도어의 기본 x64 부분인 Executor를 로드합니다. 이후 Executor는 백도어의 .NET 부분인 Orchestrator를 로드합니다. 특히, 시스템 디스크에 파일로 있는 유일한 구성 요소는 DLL(동적 링크 라이브러리) 형식의 초기 구성 요소입니다. 나머지 구성 요소는 암호화되어 바이너리 레지스트리 값 내에 저장됩니다.

데드글리프 Figure_02
그림 3. Deadglyph 로딩 체인 구성요소

초기 손상 벡터의 정확한 방법은 아직 결정되지 않았지만 설치 프로그램 구성 요소가 추가 구성 요소를 배포하고 시스템 내에서 지속성을 설정하는 데 관여하고 있다고 의심됩니다.

이 섹션의 나머지 부분에서는 각 구성 요소를 분석합니다.

레지스트리 쉘코드 로더

Deadglyph의 초기 구성 요소는 단일 내보내기가 포함된 작은 DLL입니다. 1. 이 구성 요소는 다음을 사용하여 유지됩니다. WMI(Windows Management Instrumentation) 이벤트 구독 레지스트리 쉘코드 로더 역할을 합니다. 명령줄을 통해 실행됩니다. rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

레지스트리 쉘코드 로더는 RC4를 사용하여 Windows 레지스트리에 저장된 암호화된 쉘코드에 대한 경로를 해독하여 작업을 시작합니다. 우리는 경로가 피해자마다 고유하다고 의심합니다. 여기에서 분석된 경우 레지스트리 경로는 다음과 같습니다.

SoftwareClassesCLSID{5abc7f42-1112-5099-b082-ce8d65ba0c47}cAbRGHLg

루트 레지스트리 키는 다음 중 하나입니다. hklm or Hkcu, 현재 프로세스가 상승된 권한으로 실행 중인지 여부에 따라 달라집니다. 추가 구성 요소에서도 동일한 논리를 찾을 수 있습니다.

그런 다음 로더는 에서 검색된 시스템 UUID를 사용하여 시스템별 RC4 키를 파생합니다. 원시 SMBIOS 펌웨어 테이블. 이 키를 사용하여 쉘코드를 로드하고 해독한 다음 실행합니다. 이 키 파생 접근 방식을 사용하면 로더가 다른 컴퓨터에서 실행되는 경우 적절한 암호 해독이 발생하지 않는다는 점을 강조하는 것이 중요합니다.

흥미롭게도 로더는 플래그로 구성될 수도 있습니다. .data 섹션에서는 기계별 키 대신 하드코딩된 키를 사용하여 쉘코드를 해독합니다.

우리는 Microsoft Corporation을 모방한 동형문자 공격을 발견했습니다. 버전 정보 이 PE 구성 요소와 기타 PE 구성 요소의 리소스입니다. 이 방법은 시각적으로 유사해 보이지만 이 경우 원본 문자와 동일하지 않은 고유한 유니코드 문자, 특히 그리스 대문자 San(U+03FA, Ϻ) 및 키릴 소문자 O(U+043E, о)를 사용합니다. ϺICRоsоft Corpо라티оn.

레지스트리 쉘코드

두 부분으로 구성된 레지스트리 쉘코드는 암호 해독 루틴과 암호화된 본문으로 구성됩니다. 먼저, 암호 해독 루틴은 암호화된 본문의 각 바이트를 왼쪽으로 XNUMX씩 회전합니다(롤 0x01). 그 후, 이 해독된 본체로 제어권이 이전됩니다. 해독된 본문은 PE 로더와 PE 파일로 구성되며, PE 파일은 백도어의 기본 부분을 나타내는 실행자입니다. 이 로더는 관련 PE 파일을 구문 분석하고 로드하는 역할을 담당합니다.

집행자

Executor는 다음을 수행하는 Deadglyph 백도어의 기본 x64 부분입니다.

  • 구성을 로드하고,
  • .NET 런타임을 초기화합니다.
  • 백도어(Orchestrator)의 포함된 .NET 부분을 로드합니다.
  • Orchestrator의 라이브러리 역할을 합니다.

첫째, 두 가지 기본 구성이 .data 섹션은 AES로 해독됩니다. 구성에는 암호화 키, 안전 및 회피 설정, 후속 구성 요소의 진입점을 포함한 다양한 매개 변수가 포함됩니다.

초기 실행 중에 이러한 두 가지 기본 구성은 Windows 레지스트리 내에 저장되며, 이후 실행 시 로드되어 업데이트 구현이 가능해집니다. 각 구성의 레지스트리 경로는 다음 형식으로 생성됩니다.

{HKCU|HKLM}SoftwareClassesCLSID{ }(기본)

생성된 GUID는 각 피해자에게 고유합니다.

그 다음에는 .NET 런타임이 초기화되고 Executor RC4는 Orchestrator로 알려진 백도어의 .NET 부분을 해독합니다. Orchestrator는 다음 위치에 있습니다. .rsrc 실행자 섹션. 구성은 Orchestrator의 실행 방법을 진입점으로 지정합니다. 또한 Orchestrator가 Executor 기능에 쉽게 접근할 수 있도록 별도의 구조가 제공됩니다.

Orchestrator를 시작한 후 Executor는 Orchestrator에 대한 지원 라이브러리 역할을 합니다. Executor에는 많은 흥미로운 기능이 포함되어 있습니다. 다음 섹션에서는 Orchestrator 및 추가 로드 모듈의 활용과 관련하여 그 중 일부를 설명합니다.

오케스트라

.NET으로 작성된 Orchestrator는 Deadglyph 백도어의 주요 구성 요소입니다. 이 구성 요소의 기본 역할은 C&C 서버와의 통신 설정 및 명령 실행을 포함하며, 종종 Executor의 중개 역할을 통해 촉진됩니다. 이전 구성 요소와 달리 Orchestrator는 .NET Reactor를 사용하여 난독화되었습니다. 내부적으로는 백도어를 다음과 같이 지칭합니다. 대리인는 다양한 공격 후 프레임워크에서 클라이언트 부분의 일반적인 이름입니다.

초기화

Orchestrator는 먼저 리소스에서 해당 구성과 각각 고유한 구성 집합이 포함된 두 개의 내장 모듈을 로드합니다. 이러한 자원은 꺾다 압축하고 AES 암호화되었습니다. 리소스 이름에 SHA-1 해시된 ID로 참조됩니다. 이러한 리소스에 대한 개요는 다음에서 제공됩니다. REF _Ref111452440h 작업대 1
.

표 1. Orchestrator 리소스

 

자원 이름

ID(XNUMX진수)

ID(XNUMX진수)

상품 설명

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0 X 99337711

오케스트레이터 구성.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

네트워크 모듈.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

네트워크 모듈 구성.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

타이머 모듈.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

타이머 모듈 구성.

Orchestrator 및 포함된 모듈의 구성은 XML 형식으로 저장됩니다. Orchestrator 구성의 예는 다음과 같습니다. REF _Ref111452611h
그림 4
.

데드글리프 Figure_04
그림 4. 오케스트레이터 구성

Orchestrator 구성 항목에 대한 설명은 다음과 같습니다. REF _Ref111452782h 작업대 2
.

표 2. Orchestrator 구성 항목

상품 설명

k


모듈 구성을 유지하는 데 사용되는 AES 키입니다.

a


네트워크 모듈 초기화 방법 이름입니다.

b


알 수 없는 네트워크 모듈 관련 플래그입니다.

c


타이머 모듈 초기화 방법 이름입니다.

d


리소스에 대한 시스템별 AES 키(시스템 UUID) 사용을 활성화하는 플래그입니다.

p


네트워크 모듈 리소스 ID입니다.

t


타이머 모듈 리소스 ID입니다.

리소스 구성 요소가 로드된 후 개별 작업을 수행하기 위해 여러 스레드가 생성됩니다. 이러한 스레드 중 하나는 Executor 내에서 구현되는 기능인 환경 검사를 수행하는 역할을 합니다. 또 다른 스레드는 C&C 서버와의 주기적인 통신을 설정하여 명령 검색을 가능하게 하는 데 사용됩니다. 마지막으로, 수신된 명령을 실행하고 생성된 출력을 C&C 서버로 다시 전송하기 위해 세 개의 스레드 세트가 사용됩니다.

환경 검사 스레드는 실행 중인 프로세스를 모니터링하여 원치 않는 프로세스를 식별합니다. 이 스레드는 두 개의 서로 다른 프로세스 이름 목록으로 작동합니다. 첫 번째 목록의 프로세스가 감지되면 원하지 않는 프로세스가 더 이상 존재하지 않을 때까지 C&C 통신 및 명령 실행이 일시 중지됩니다. 두 번째 목록에 일치하는 프로세스가 있으면 백도어는 즉시 종료되고 자체적으로 제거됩니다.

분석된 인스턴스에는 두 목록 모두 구성되지 않았으므로 일반적으로 어떤 프로세스를 확인할 수 있는지 알 수 없습니다. 의심스러운 활동을 탐지하고 백도어 발견으로 이어질 수 있는 분석 도구를 회피하려는 의도가 있는 것으로 보입니다.

의사 소통

Orchestrator는 C&C 통신을 위해 타이머와 네트워크라는 두 개의 내장 모듈을 활용합니다. Orchestrator와 마찬가지로 이러한 모듈은 .NET Reactor로 난독화됩니다. 두 모듈의 구성은 Orchestrator에서 제공됩니다. Orchestrator에는 모듈에 대한 사전 설정 구성이 포함되어 있습니다. 선택적으로 Orchestrator는 레지스트리에서 업데이트된 구성 버전을 로드할 수도 있습니다.

{HKCU|HKLM}SoftwareClassesCLSID{ }

백도어에는 통신과 관련된 흥미로운 안전 조치가 포함되어 있습니다. 백도어가 Executor 내에 구성된 사전 정의된 임계값을 초과하는 기간 동안 C&C 서버와 통신을 설정할 수 없는 경우 자체 제거 메커니즘이 트리거됩니다. 이 시간 임계값은 시간 단위로 지정되며 검사 사례에서는 XNUMX시간으로 설정되었습니다.

이 접근 방식은 두 가지 목적을 제공합니다. 한편으로는 액세스할 수 없는 서버에 대한 중복 네트워크 요청이 생성되는 것을 방지합니다. 반면, 운영자가 백도어에 대한 통제력을 상실할 경우 후속 탐지 가능성이 줄어듭니다.

타이머 모듈

이 작은 모듈은 구성 가능한 간격으로 지정된 콜백을 실행합니다. Orchestrator는 네트워크 모듈과 함께 C&C 서버와 주기적으로 통신하는 데 사용됩니다. 네트워크 로그에서 감지 가능한 패턴이 생성되는 것을 방지하기 위해 실행 간격은 구성에 지정된 백분율에 따라 무작위로 지정됩니다. 분석된 인스턴스에서는 간격이 20분으로 설정되었으며 무작위성을 위해 ±XNUMX% 변동이 도입되었습니다.

주기적 통신에서 감지 가능한 네트워크 패턴을 피하는 또 다른 방법은 C&C 서버로 전송되는 요청 생성에서 찾을 수 있습니다. Executor에서 구현되는 이 메커니즘은 요청 내에 임의 바이트로 구성된 다양한 길이의 패딩을 포함하여 다양한 크기의 요청을 생성합니다.

네트워크 모듈

네트워크 모듈은 구성에 지정된 C&C 서버와의 통신을 구현합니다. HTTP(S) POST 요청을 사용하여 C&C 서버에 데이터를 보낼 수 있습니다. 특히 프록시 구성 세부 정보를 얻기 위한 여러 메커니즘을 제공합니다. 이 기능은 직접적인 인터넷 액세스가 불가능한 환경에 초점을 맞출 가능성이 있음을 시사합니다.

해독된(및 아름답게 구성된) 구성의 예는 다음과 같습니다. REF _Ref144978805h 그림 5
.

데드글리프 Figure_06
그림 5. 네트워크 모듈 구성

구성 항목에는 네트워크 통신(C&C URL, HTTP 사용자 에이전트 및 선택적으로 프록시 구성)과 관련된 세부 정보가 포함됩니다.

C&C 서버와 통신할 때 HTTPS 아래에서는 콘텐츠가 암호화된 맞춤형 바이너리 프로토콜이 사용됩니다.

명령

Orchestrator는 실행을 위해 대기 중인 작업 형태로 C&C 서버로부터 명령을 받습니다. 처리되는 작업에는 세 가지 종류가 있습니다.

  • 오케스트레이터 작업,
  • 실행자 작업 및
  • 작업을 업로드합니다.

처음 두 종류는 C&C 서버에서 수신되고 세 번째 종류는 명령 및 오류의 출력을 업로드하기 위해 내부적으로 생성됩니다.

오케스트레이터 작업

Orchestrator 작업은 네트워크 및 타이머 모듈의 구성을 관리하고 보류 중인 작업을 취소하는 기능을 제공합니다. Orchestrator 작업의 개요는 다음과 같습니다. REF _Ref111101783h 작업대 3
.

표 3. Orchestrator 작업

타입

상품 설명

0 X 80


네트워크 및 타이머 모듈의 구성을 설정합니다.

0 X 81


네트워크 및 타이머 모듈의 구성을 가져옵니다.

0 X 82


작업을 취소합니다.

0 X 83


모든 작업을 취소합니다.

실행자 작업

실행자 작업은 백도어를 관리하고 추가 모듈을 실행하는 기능을 제공합니다. 기존 백도어 기능이 바이너리 자체 내에 본질적으로 존재하지 않는다는 점은 주목할 만합니다. 대신 이러한 기능은 PE 파일이나 쉘코드 형태로 C&C 서버에서 가져옵니다. 백도어의 진정한 기능을 효과적으로 잠금해제하는 이러한 추가 모듈이 없으면 백도어의 잠재력을 완전히 알 수 없습니다. 모듈 작업의 개요는 다음과 같습니다. REF _Ref117677179h 작업대 4
, 여기에는 식별된 몇 가지 모듈에 대한 세부정보가 포함되어 있습니다. 비슷하게, REF _Ref117677188h 작업대 5
Executor와 관련된 관리 작업에 대한 개요를 제공합니다.

표 4. 실행자 작업 - 모듈

타입

상품 설명

0x??–0x63


알 수 없는

0 X 64


파일 리더

0 X 65


알 수 없는

0 X 66


알 수 없는

0 X 67


알 수 없는

0 X 68


알 수 없는

0 X 69


프로세스 생성자

0x6A


알 수 없는

0x6B


알 수 없는

0x6C


정보 수집가

0x6D


알 수 없는

0x6E


알 수 없는

표 5. 실행자 작업 – 관리

타입

상품 설명

0x6F-0x76

구현되지 않음

0 X 77

실행자 구성 설정

0 X 78

실행자 구성 가져오기

0x79-0x7C

구현되지 않음

0x7D

업데이트

0x7E

종료

0x7F

제거

실행자 구성을 설정하는 명령은 다음을 변경할 수 있습니다.

  • 원치 않는 프로세스 목록,
  • C&C 통신 실패의 시간 임계값
  • 추가 모듈 실행에 대한 시간 제한.
모듈

우리는 C&C 서버에서 XNUMX개의 고유한 모듈을 얻었습니다. 각 모듈은 다음과 같이 서로 다른 Executor 작업 유형에 해당합니다. REF _Ref117677179h 작업대 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. 이용 가능한 정보에 따르면 총 XNUMX~XNUMX개의 모듈이 있는 것으로 추정됩니다. 모듈은 실제로 백도어 명령이므로 실행하고 선택적으로 출력을 반환하는 하나의 기본 작업이 있습니다. 우리가 얻은 모듈은 이름 없는 내보내기(서수)가 하나 있는 DLL입니다. 1), 필요한 API 기능을 해결하고 기본 기능을 호출합니다.

모듈이 실행되면 Windows API 및 사용자 정의 Executor API를 확인할 수 있는 API 확인 기능이 제공됩니다. Windows API는 API 및 해당 DLL의 이름으로 계산된 DWORD 해시로 참조됩니다. 작은 해시 값(<41)은 Executor API 함수를 참조하여 특별히 처리됩니다. Executor API는 모듈에 액세스할 수 있는 총 39개의 함수로 구성됩니다. 이러한 기능은 다음을 포함한 다양한 작업과 관련됩니다.

  • 파일 작업,
  • 암호화 및 해싱,
  • 압축,
  • PE 로딩,
  • 토큰 가장에 액세스하고
  • 유용.

이 섹션의 나머지 부분에서는 우리가 얻은 모듈을 설명합니다.

프로세스 생성자

모듈 0 X 69 지정된 명령줄을 새 프로세스로 실행하고 결과 출력을 Orchestrator에 다시 제공합니다. 프로세스는 다른 사용자로 생성될 수 있으며 실행 시간이 제한될 수 있습니다. 주목할 만한 것은 특이한 작업 API 이 모듈의 기능에 사용됩니다.

이 모듈은 명령줄과 함께 제공되었습니다. cmd.exe /c 작업 목록 /v.

우리는 운영자가 손상된 컴퓨터에서 흥미로운 일이 일어나기를 기다리는 동안 자동으로 실행되는 유휴 명령으로 사용된다고 가정합니다.

정보 수집가

모듈 0x6C WMI 쿼리를 통해 컴퓨터에 대한 광범위한 정보를 수집하여 Orchestrator에 다시 전달합니다. 다음에 대한 정보가 수집됩니다.

  • 운영 체제,
  • 네트워크 어댑터,
  • 설치된 소프트웨어,
  • 드라이브,
  • 서비스,
  • 드라이버,
  • 프로세스,
  • 사용자,
  • 환경 변수 및
  • 보안 소프트웨어.
파일 리더

모듈 0 X 64 지정된 파일을 읽고 콘텐츠를 Orchestrator에 다시 전달합니다. 선택적으로 파일을 읽은 후 삭제할 수 있습니다.

우리는 피해자의 Outlook 데이터 파일을 검색하는 데 사용되는 이 모듈을 보았습니다.

c:사용자 AppDataLocalMicrosoftOutlookoutlook.ost.

쉘코드 다운로더가 포함된 체인

Deadglyph를 조사하는 과정에서 우리는 만료된 인증서로 서명되고 타임스탬프가 있는 연대 서명이 없는 의심스러운 CPL 파일을 발견했습니다. 이 파일은 카타르에서 VirusTotal에 업로드되었습니다. 면밀히 조사한 결과 이 ​​CPL 파일은 Deadglyph와 특정 코드 유사성을 공유하는 다단계 쉘코드 다운로더로 작동한다는 것이 분명해졌습니다. 로딩 체인은 다음과 같습니다. REF _Ref143693067h 그림 6
.

데드글리프 Figure_03
그림 6. 쉘코드 다운로더 로딩 체인

첫 번째 단계 역할을 하는 초기 형식에서 이 파일은 . 상병 확장명(제어판 파일)이며 두 번 클릭 동작을 통해 실행되도록 되어 있습니다. 이러한 방식으로 실행되면 내장된 쉘코드는 XOR 복호화를 거치며 실행 중인 프로세스를 검사하여 후속 주입에 적합한 호스트 프로세스를 식별합니다.

If avp.exe (Kaspersky 엔드포인트 보안 프로세스)가 실행 중입니다. %windir%system32UserAccountBroker.exe 사용. 그렇지 않으면 기본 브라우저가 사용됩니다. 그런 다음 일시 중지된 상태에서 호스트 프로세스를 생성하고 메인 스레드를 하이재킹하여 쉘코드를 주입한 후 스레드를 재개합니다.

두 번째 단계인 쉘코드는 두 부분으로 구성됩니다. 쉘코드의 첫 번째 부분은 Deadglyph에 사용된 것과 동일한 고유한 해시 계산 기술을 사용하여 API 해시를 확인하고 프로세스 이름으로 문자열을 해독합니다. XNUMX단계 파일을 덮어쓴 후 삭제하는 작업을 수행하는 자체 삭제 스레드를 시작합니다. 이후 쉘코드는 보안 솔루션을 목표로 현재 활성화된 프로세스를 검사합니다.

지정된 프로세스 중 하나라도 감지되면 쉘코드는 우선순위가 가장 낮은 Sleeper 스레드를 생성합니다(THREAD_PRIORITY_IDLE) 작업을 종료하기 전에 60초 동안 활성 상태를 유지할 수 있습니다. 이 간격은 보안 솔루션에서 사용하는 특정 탐지 메커니즘을 회피하기 위한 예방 조치로 구현될 가능성이 높습니다. 마지막으로 쉘코드는 코드의 두 번째 부분 실행을 호출합니다.

쉘코드의 두 번째 부분은 XNUMX단계로 임베디드 PE 파일을 로드하고 서수로 내보내기를 호출합니다. 1.

세 번째 단계인 DLL은 .NET 로더 역할을 하며 해당 DLL에 페이로드를 포함합니다. .rsrc 안내

페이로드를 로드하기 위해 .NET 런타임이 초기화됩니다. .NET 초기화 중에 Windows를 회피하기 위한 것처럼 보이는 두 가지 흥미로운 기술이 수행됩니다. AMSI(안티맬웨어 검사 인터페이스) 검사:

  • .NET 로더는 일시적으로 GetModuleHandleW 로드된 항목으로 가져오기 clr.dll, 통화 중 ICorRuntimeHost::시작. 후크는 다음과 같은 경우 반환 값을 변조합니다. GetModuleHandleW 와 함께 호출됩니다 NULL. 섹션이 없는 더미 PE에 대한 포인터를 반환합니다.
  • 그런 다음 미묘하게 패치합니다. Amsi초기화 이름 문자열을 가져옵니다. .rdata 로드된 부분 clr.dllaMSIi초기화하다.

네 번째 단계는 쉘코드 다운로더 역할을 하는 ConfuserEx로 난독화된 .NET 어셈블리입니다. 먼저 해당 리소스에서 XML 형식의 구성을 XOR 해독합니다. 추출된 구성의 미화된 버전은 다음과 같습니다. REF _Ref143695453h 그림 7
. 구성 항목에는 네트워크 통신 및 차단된 프로세스와 관련된 세부 정보가 포함되어 있습니다.

데드글리프 Figure_05
그림 7. 쉘코드 다운로더 구성

계속하기 전에 구성에서 차단된 프로세스 목록과 비교하여 실행 중인 프로세스를 확인합니다. 일치하는 항목이 감지되면 실행이 중단됩니다. 분석된 인스턴스에서는 이 차단 목록이 설정되지 않았다는 점에 유의하는 것이 중요합니다.

그런 다음 구성에 지정된 매개변수(URL, User-Agent 및 선택적으로 프록시)를 사용하여 일부 쉘코드를 검색하기 위해 HTTP GET 요청을 C&C 서버에 보냅니다. 안타깝게도 조사 중에 C&C 서버에서 어떤 쉘코드도 얻을 수 없었습니다. 그럼에도 불구하고, 우리는 검색되는 콘텐츠가 잠재적으로 Deadglyph의 설치 프로그램 역할을 할 수 있다고 가정합니다.

그 다음에는 검색된 쉘코드가 새로 생성된 스레드 내에서 실행됩니다. 쉘코드 스레드가 실행을 마칠 때까지 기다린 후 쉘코드 다운로더는 디렉토리에 있는 모든 파일을 제거합니다. %WINDIR%ServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV.

마지막으로 작업을 완료하고 종료하기 전에 후속 명령을 사용하여 20초 간격 후에 자신을 삭제하려고 시도합니다.

cmd.exe 선택 /CY /N /DY /T 20 & Del /f /q

이러한 자체 삭제는 이 체인에서는 의미가 없습니다. 이는 쉘코드 다운로더가 독립적인 실행 파일로 작동하는 것이 아니라 주입된 후 브라우저나 시스템 프로세스 내에서 실행되기 때문입니다. 게다가 초기 파일은 두 번째 단계에서 이미 삭제되었습니다. 이러한 관찰은 쉘코드 다운로더가 이 체인의 독점적인 페이로드가 아닐 수도 있고 다른 작업에서 별도로 사용될 수도 있음을 시사합니다.

결론

우리는 Stealth Falcon 그룹이 사용하는 Deadglyph라는 정교한 백도어를 발견하고 분석했습니다. 이 제품은 특이한 아키텍처를 가지고 있으며 백도어 기능은 C&C에서 추가 모듈 형태로 제공됩니다. 우리는 이 모듈 중 세 개를 획득하여 Deadglyph의 전체 기능 중 일부를 발견했습니다.

특히 Deadglyph는 시스템 프로세스의 지속적인 모니터링과 무작위 네트워크 패턴 구현을 포함하여 다양한 대응 탐지 메커니즘을 자랑합니다. 또한 백도어는 특정 상황에서 탐지 가능성을 최소화하기 위해 자체적으로 제거될 수 있습니다.

또한 조사 결과 VirusTotal에서 강력한 다단계 쉘코드 다운로더 체인을 발견했습니다. 우리는 이 다운로더 체인이 Deadglyph 설치 과정에서 활용될 가능성이 있다고 의심합니다.

WeLiveSecurity에 게시된 연구에 대한 문의 사항은 다음으로 문의하십시오. Threatintel@eset.com.
ESET Research는 비공개 APT 인텔리전스 보고서 및 데이터 피드를 제공합니다. 본 서비스에 대한 문의사항은 ESET 위협 인텔리전스 페이지.

IoC

파일

SHA-1

파일 이름

Detection System

상품 설명

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

레지스트리 쉘코드 로더.

740D308565E215EB9B235CC5B720142428F540DB

해당 사항 없음

Win64/Deadglyph.A

Deadglyph 백도어 – 집행자.

1805568D8362A379AF09FD70D3406C6B654F189F

해당 사항 없음

MSIL/Deadglyph.A

Deadglyph 백도어 – 오케스트레이터.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

해당 사항 없음

MSIL/Deadglyph.A

오케스트레이터 네트워크 모듈.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

해당 사항 없음

MSIL/Deadglyph.A

오케스트레이터 타이머 모듈.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

해당 사항 없음

Win64/Deadglyph.A.gen

프로세스 생성자 모듈.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

해당 사항 없음

Win64/Deadglyph.A

파일 판독기 모듈.

4E3018E4FD27587BD1C566930AE24442769D16F0

해당 사항 없음

Win64/Deadglyph.A

정보 수집 모듈.

7F728D490ED6EA64A7644049914A7F2A0E563969

해당 사항 없음

Win64/Injector.MD

쉘코드 다운로더 체인의 첫 번째 단계.

인증서

일련 번호

00F0FB1390F5340CD2572451D95DB1D92D

지문

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

주제 CN

RHM 제한

과목 O

RHM 제한

피험자 L

세인트 올 번즈

피험자 S

하트 퍼 드셔

과목 C

GB

이메일

rhm@rhmlimited[.]co.uk

유효

2021-03-16 00:00:00

까지 유효하다

2022-03-16 23:59:59

C&C 서버

IP

도메인

처음 본

Comment

185.25.50[.]60

chessandlinks[.]com

2021-08-25

데드글리프 C&C 서버.

135.125.78[.]187

easymathpath[.]com

2021-09-11

데드글리프 C&C 서버.

45.14.227[.]55

Joinushealth[.]com

2022-05-29

쉘코드 다운로더 C&C 서버.

MITRE ATT&CK 기술

이 테이블은 다음을 사용하여 제작되었습니다. 버전 13 MITRE ATT&CK 프레임워크.

술책

ID

성함

상품 설명

자원 개발

T1583.001

인프라 획득: 도메인

Stealth Falcon은 C&C 서버용 도메인을 등록하고 코드 서명 인증서를 획득합니다.

T1583.003

인프라 확보: 가상 사설 서버

Stealth Falcon은 C&C 서버에 VPS 호스팅 공급자를 사용했습니다.

T1587.001

기능 개발: 맬웨어

Stealth Falcon은 맞춤형 로더 및 Deadglyph 백도어를 포함한 맞춤형 악성코드를 개발했습니다.

T1588.003

기능 획득: 코드 서명 인증서

Stealth Falcon이 코드 서명 인증서를 획득했습니다.

실행

T1047

윈도우 관리 계장

Deadglyph는 WMI를 사용하여 로딩 체인을 실행합니다.

T1059.003

명령 및 스크립팅 인터프리터: Windows 명령 셸

쉘코드 다운로더는 다음을 사용합니다. cmd.exe를 자신을 삭제합니다.

T1106

네이티브 API

Deadglyph 모듈은 다음을 사용합니다. CreateProcessWCreateProcessAsUserW 실행을 위한 API 함수입니다.

T1204.002

사용자 실행: 악성 파일

쉘코드 다운로더 체인을 사용하려면 사용자가 이를 두 번 클릭하여 실행해야 합니다.

고집

T1546.003

이벤트 트리거 실행: Windows Management Instrumentation 이벤트 구독

초기 Deadglyph 로더는 WMI 이벤트 구독을 사용하여 유지됩니다.

방어 회피

T1027

난독화된 파일 또는 정보

Deadglyph 구성 요소는 암호화되어 있습니다. Deadglyph Orchestrator 및 내장 모듈은 .NET Reactor로 난독화됩니다.

쉘코드 다운로더는 ConfuserEx로 난독화되어 있습니다.

T1070.004

표시 제거: 파일 삭제

Deadglyph는 스스로 제거될 수 있습니다.

쉘코드 다운로더 체인은 자신을 삭제하고 WebDAV 캐시에 있는 파일을 삭제합니다.

T1112

레지스트리 수정

Deadglyph는 구성과 암호화된 페이로드를 레지스트리에 저장합니다.

T1134

액세스 토큰 조작

Deadglyph는 다른 사용자를 가장할 수 있습니다.

T1140

파일 또는 정보의 난독화/디코드

Deadglyph는 암호화된 문자열을 해독합니다.

쉘코드 다운로더 체인은 해당 구성 요소와 구성을 해독합니다.

T1218.011

시스템 바이너리 프록시 실행: Rundll32

초기 Deadglyph 로더는 다음을 사용하여 실행됩니다. rundll32.exe.

T1480.001

실행 가드레일: 환경 키잉

Deadglyph는 시스템 UUID에서 파생된 시스템별 키를 사용하여 암호화됩니다.

T1562.001

방어력 손상: 도구 비활성화 또는 수정

쉘코드 다운로더는 패치를 통해 AMSI 스캔을 방지합니다. clr.dll 기억 속에 .

T1620

반사 코드 로딩

Deadglyph는 맞춤형 PE 로더를 사용하여 모듈을 반사적으로 로드합니다.

발견

T1007

시스템 서비스 검색

A Deadglyph 모듈은 WMI 쿼리를 사용하여 서비스를 검색합니다. * Win32_Service에서 선택하세요.

T1012

쿼리 레지스트리

쉘코드 다운로더 체인은 레지스트리에서 기본 브라우저를 쿼리합니다.

T1016

시스템 네트워크 구성 검색

Deadglyph 모듈은 WMI 쿼리를 사용하여 네트워크 어댑터를 검색합니다. 선택 * Win32_NetworkAdapter에서SELECT * FROM Win32_NetworkAdapterConfiguration(InterfaceIndex=%d).

T1033

시스템 소유자/사용자 검색

Deadglyph 모듈은 WMI 쿼리를 통해 사용자를 검색합니다. 선택 * Win32_UserAccount에서.

T1057

프로세스 발견

Deadglyph 모듈은 WMI 쿼리를 사용하여 프로세스를 검색합니다. 선택 * Win32_Process에서.

T1082

시스템 정보 검색

Deadglyph 모듈은 WMI 쿼리를 사용하여 OS 버전, 드라이브, 환경 변수 및 드라이버와 같은 시스템 정보를 검색합니다.

T1518

소프트웨어 검색

Deadglyph 모듈은 WMI 쿼리를 사용하여 설치된 소프트웨어를 검색합니다. SELECT * Win32_Product에서.

T1518.001

소프트웨어 검색: 보안 소프트웨어 검색

Deadglyph 모듈은 WMI 쿼리를 사용하여 보안 소프트웨어를 검색합니다. * AntiVirusProduct에서 선택, AntiSpywareProduct에서 * 선택SELECT * FROM 방화벽제품.

쉘코드 다운로더 체인은 보안 솔루션을 위해 실행 중인 프로세스를 검사합니다.

수집

T1005

로컬 시스템의 데이터

Deadglyph에는 파일을 읽는 모듈이 있습니다.

명령 및 제어

T1071.001

애플리케이션 계층 프로토콜: 웹 프로토콜

Deadglyph와 쉘코드 다운로더는 HTTP 프로토콜을 통해 C&C 서버와 통신합니다.

T1090

대리

Deadglyph와 쉘코드 다운로더는 C&C 통신을 위해 HTTP 프록시를 사용할 수 있습니다.

T1573.001

암호화된 채널: 대칭 암호화

Deadglyph는 AES를 사용하여 C&C 통신을 암호화합니다.

여과

T1041

C2 채널을 통한 유출

Deadglyph는 유출을 위해 C&C 채널을 사용합니다.

타임 스탬프 :

더보기 우리는 보안을 산다