1. 개요

- Apple에서 나온 거의 모든 장비에 영향을 주는 10년간 방치되어 있다 발견 [1]
- 취약점은 종속성 관리자 CocoaPods 프로그램에서 발생 [2]
- 악용한 시도는 아직까지 확인되지 않았으며, 취약점은 패치됨

 

1.1 관련 용어

구분 설명
Pod 프로젝트의 Dependency 상황을 서술하고 있는 파일
Dependency(의존성) 소프트웨어를 구성하는 요소들끼리 상호 의존하는 관계
CocoaPods Swift와 Objective-C 언어로 만들어진 애플리케이션들의 디펜던시 관리를 편리하게 해 주는 오픈소스로, 팟들을 관리
Swift 개발 언어 중 하나
Objective-C
Trunk 코코아팟즈와 연결된 서버로, 팟들을 저장하고 관리

 

2. 주요내용

2.1 CocoaPods 마이그레이션

- 2014년 CocoaPods은 새롭게 구축한 Trunk 서버로 마이그레이션
- 마이그레이션으로 인해 모든 Pod의 소유자가 초기화
Pod의 원 소유자들은 CocoaPods에 연락해 Pod에 대한 소유권을 주장
- 그러나 일부 Pod 소유자들은 소유권을 주장하지 않았고, 1,870개의 Pod가 주인 없이 방치

 

2.2 CVE-2024-38368 [3]

[사진 1] CVE-2024-38368

의의 사용자가 방치된 Pod의 소유권을 획득할 수 있는 취약점 (CVSS: 9.3)

누구나 Pod에 접근 및 내용을 수정이 가능하여 악성코드 삽입 가능
> 방치된 Pod는 기본 CocoaPods 계정(unclaimed-pods[@]cocoapods.org)과 연결되어 있었음
> 또한, Pod의 소유권을 주장할 수 있는 공개 API 엔드포인트가 사용가능해 누구나 검증 없이 Pod의 소유권을 획득할 수 있었음

 

- 공격자는 해당 API에 대상 Pod를 포함한 간단한 CURL 요청을 통해 소유권 획득 가능

# Curl request for changing ownership of a targeted orphaned pod
curl -X 'POST' \
 -H 'Host: trunk.cocoapods.org' \
 -H 'Content-Type: application/x-www-form-urlencoded' \
--data-binary 'owner[name]=EVA&email=research@evasec.io'
--data-binary 'pods[]=[TARGET_UNCLAIMED_POD]&button=SEND'
 'hxxps://trunk.cocoapods.org/claims'

 

2.3 CVE-2024-38366 [4]

[사진 2] CVE-2024-38366

이메일 도메인의 MX 레코드 유효성을 확인하는 rfc-822 라이브러리에의해 발생하는 원격 코드 실행 취약점 (CVSS: 10.0)

> rfc-822 라이브러리는 MX 레코드 유효성 검증을 위해 셸 명령을 실행하여 이로 인해 원격 코드 실행이 가능해짐
익스플로잇에 성공시 모든 Pod 소유자들의 세션 토큰 덤프하고 클라이언트 트래픽 조작 가능하며, 서버 자체를 완전히 셧다운 시키는 것도 가능

 

[사진 3] 취약한 rfc-822 구현

① mx_records()
> 38행: 이메일 주소를 받아 모듈의 EMAIL 정규식 패턴과 비교하여 검증
> 41행: 제공된 이메일 주소에서 분할된 도메인 부분을 이용해 raw_mx_records() 호출
② raw_mx_records()
> 49~51행: 도메인 부분 수신 및 DNS MX 레코드 검증을 위해 host_mx() 호출
③ host_mx()
> 53~55행: 임의의 OS 명령 '/usr/bin/env host -t MX #{domain}'을 실행하고, 이를 사용자가 제공한 이메일의 도메인과 연결
적절한 검증 없이 제공된 이메일 주소에 대해 OS 명령을 실행하여 취약점 발생

 

[영상 1] 취약점 시연 영상 [5]

2.4 CVE-2024-38367 [6]

[사진 4] CVE-2024-38367

- 사용자들의 상호작용 없이 세션 인증 토큰을 탈취할 수 있는 제로클릭 취약점 (CVSS: 8.2)

> 취약점은 세션 유효성 검사 URL을 구성하는 sessions_controller 클래스의 'Trunk' 서버 소스 코드에 위치

 

[사진 5] sessions_controller.rb

① request.host_wth_port()
> 21행: 세션 검증 URL의 도메인 부분을 생성하며, 새 세션이 생성 및 생성된 링크가 이메일을 통해 전송
request.host_wth_port()는 Host 헤더나 다른 환경 변수 값보다 X-Forwarded-Host 헤더를 우선시

 

- 공격자는 조작된 X-Forwarded-Host를 통해 스푸핑된 도메인이 포함된 세션 검증 URL을 생성공격자 메일로 전송
> 공격자는 검증 URL을 통해 세션 토큰을 탈취할 수 있음

POST /api/v1/sessions HTTP/1.1
Host: trunk.cococapods.org
Content-Type: application/json; charset=utf-8
Accept: application/json; charset=utf-8
User-Agent: CocoaPods/1.12.1
Accept-Encoding: gzip, deflate
X-Forwarded-Host: research.evasec.io
Content-Length: 78

{
  "email":"research@evasec.io",
  "name":"EVAResearch",
  "description":null
}

 

3. 대응방안

- 패치 적용

구분 설명
CVE-2024-38368 23.09 commit 71be5440906b6bdfbc0bcc7f8a9 fec33367ea0f4
CVE-2024-38366 23.09 commit 001cc3a430e75a16307f5fd6cdff1363ad2f40f3
CVE-2024-38367 23.10 commit d4f66f49cedab449af56a21ab697b9f7b97

 

- 기타 방안

① 모든 CocoaPods 관리자와 개발자들이 항상 같은 버전의 podfile.lock 파일을 보유하고 있어야함

> 동기화를 제대로 해야 모든 구성원이 똑같이 사용할 수 있으며 비정상적인 것들을 일찍 발견할 수 있음

② Trunk 서버에 Pod을 하나 호스팅한 뒤 다운로드하여 내부적으로 보유하고 있는 Pod와 비교해 CRC 검사 수행

> 배포하려는 것과 보유하고 있는 것이 정말로 같은 파일인지 확인하는 것

③ 서드파티 코드를 쓰려면 여러 번 확인 과정을 거칠 것

④ 주인 없는 Pod 사용 여부 점검

⑤ 인기있는 Dependency를 사용해야 한다면 더더욱 주의를 기울이고 검사에 만전을 기해야 함

> 공격자들은 유명한 것들을 더 활발히 악용

 

4. 참고

[1] https://www.evasec.io/blog/eva-discovered-supply-chain-vulnerabities-in-cocoapods
[2] https://cocoapods.org/
[3] https://nvd.nist.gov/vuln/detail/CVE-2024-38368
[4] https://nvd.nist.gov/vuln/detail/CVE-2024-38366
[5] https://www.youtube.com/watch?v=nO84n2v3ZyM
[6] https://nvd.nist.gov/vuln/detail/CVE-2024-38367
[7] https://www.boannews.com/media/view.asp?idx=131055&page=1&kind=1

1. 개요

- 모든 GNU/리눅스 운영체제의 인기 오픈소스 ‘XZ Utils’ 라이브러리에서 백도어가 발견
> 일종의 소프트웨어 공급망 공격으로 볼 수 있음
기존 공급망 공격과 달리 운영체제 레벨에서 사용되는 오픈소스 프로젝트 저장소에 접근
- CVSS 점수 10.0 할당 되었으며, 무단 원격 엑세스를 허용하도록 설계된 백도어 설치
- XZ Utils에 대한 점검과 패치 개발이 완료될 때까지 다운그레이드하여 사용 권고

 

2. 주요내용

2.1 XZ Utils [1]

- 범용 데이터 압축 형식
- GNU/리눅스 운영체제에서 데이터 압축에 필요한 필수 유틸리티를 제공하는 인기 오픈소스

 

2.2 CVE-2024-3094 [2]

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2024-3094

 

XZ-Utils의 liblzma 라이브러리에서 백도어 악성코드가 발견 (CVSS: 10.0)
> 백도어 동작시 공격자가 SSH 인증없이 서버 로그인 가능
> 일련의 복잡한 난독화 과정을 거쳐 라이브러리에 연결된 모든 소프트웨어에서 사용할 수 있는 수정된 liblzma 라이브러리가 생성
> 수정된 라이브러리를 사용해 XZ Utils 라이브러리와의 데이터 상호 작용을 가로채고 수정

영향받는 버전: XZ Utils 5.6.0 및 5.6.1

 

- 해당 백도어는 GCC 컴파일러의 GNU 간접 함수(IFUNC) 속성을 활용하여 실행 흐름에 악성코드를 삽입 [3]

> 삽입된 백도어 코드는 실행을 가로채거나 후크

> 페이로드 오브젝트 파일로부터 추출되고, 조작된 "_get_cpuid()"를 호출하는 코드를 삽입하기 위해

> cpuid를 확인하는 "is_arch_extension_supported"를 대체하기 위해 ifunc 호출을 수정

One of the core techniques used by the XZ backdoor to gain initial control during execution is the GNU Indirect Function (ifunc) attribute for the GCC compiler to resolve indirect function calls in runtime. The implanted backdoor code initially intercepts or hooks execution. It modifies ifunc calls to replace a check "is_arch_extension_supported" which should simply invoke "cpuid" to insert a call to "_get_cpuid" which is exported by the payload object file (i.e., liblzma_la-crc64-fast.o) and which calls malformed _get_cpuid() which is implanted into the code shown in the figure below.

 

[사진 2] 백도어 코드 동작 과정

 

- 2021년 공격자는 깃허브에 JiaT75(Jia Tan) 계정을 생성 [4]
> 여러 프로젝트에 참여하며 평판을 쌓아 XZ 프로젝트 관련자로 참여
> 이후 새로운 관리자 계정 추가, 커밋 병합 등을 거쳐 백도어를 포함한 커밋이 저장소에 추가
> MS는 깃허브 서비스 약관 위반을 이유로 XZ Utils 리포지토리를 비활성화

 

3. 대응방안

① XZ-Utils 업데이트 금지 또는 5.4.x 버전으로 다운그레이드 [5]
- xz --version 명령 결과가 'xz 5.6.1'이나 'liblzma 5.6.1'인 경우 다음 중 두 가지를 수행
1) 사용하고 있는 리눅스 배포판의 업데이트 버전이 여부 확인 및 있을 경우 업데이트를 진행
2) XZ 유틸즈는 다운그레이드
3) SSH 전체를 당분간 비활성화

 

> 악의적인 행위자는 이미 5.4 버전을 출시하고 서명했기 때문에 더 이전 버전으로의 다운그레이드 주장 의견도 존재

 

② 취약한 XZ-Utils를 포함하지 않는 리눅스 배포판으로 다운그레이드 또는 업데이트 버전으로 마이그레이션 [6]

[사진 3] 영향 받는 리눅스 배포판 버전

 

③ 무료 온라인 스캐너 활용 [7]

> 펌웨어 보안 회사 Binarly는 취약점에 영향 받는 리눅스 실행 파일을 탐지하도록 설계된 새로운 온라인 스캐너 공개

> 바이트 문자열 매칭 및 파일 해시 차단 목록과 같은 기존 방법과는 다른 새로운 방식으로 탐지

> 바이너리에 대한 정적 분석을 사용해 GNU IFUNC의 트랜지션 변조를 식별

> 사용자가 파일을 업로드하여 무제한 무료로 검사 가능

 

4. 참고

[1] https://en.wikipedia.org/wiki/XZ_Utils
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-3094

[3] https://www.binarly.io/blog/xz-utils-supply-chain-puzzle-binarly-ships-free-scanner-for-cve-2024-3094-backdoor

[4] https://boehs.org/node/everything-i-know-about-the-xz-backdoor
[5] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71388&menuNo=205020
[6] https://unit42.paloaltonetworks.com/threat-brief-xz-utils-cve-2024-3094/

[7] https://xz.fail/

[8] https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
[9] https://github.com/libarchive/libarchive/issues/2103
[10] https://www.boannews.com/media/view.asp?idx=128350&page=2&kind=1
[11] https://www.boannews.com/media/view.asp?idx=128375&page=1&kind=1
[12] https://www.boannews.com/media/view.asp?idx=128372&page=1&kind=1

[13] https://www.dailysecu.com/news/articleView.html?idxno=154855

'취약점 > Supply-Chain Attack' 카테고리의 다른 글

Apple CocoaPods 공급망 공격  (0) 2024.07.03
리포재킹(Repojacking) 공격  (0) 2023.09.14
지니언스 NAC 업데이트 서버 해킹  (0) 2023.07.05
3CX 공급망 공격  (0) 2023.04.06

1. 개요

- Github의 논리적 결함으로 인해 공격자가 수천 개의 리포지터리를 제어할 수 있게되는 취약점이 발견
- 공격자는 해당 결함으로 리포지터리를 악용해 공급망 공격으로 이어질 가능성이 존재

 

2. RepoJacking [1]

- Github에서는 사용자 계정마다 고유한 URL을 부여

> 사용자 이름 및 저장소 이름 변경이 자주 발생 (사명변경, 인수합병, 관리자 변경 등)

 

- 이름 변경 등으로 프로젝트의 종속성이 깨지는 것을 방지하기 위해 리다이렉션 생성
> 이름 A에서 이름 B로 변경시 새로운 URL이 생성되고, 원 URL과 연결되어 있던 모든 리포지터리들이 자동으로 새 URL과 연결
① 사용자는 계정 A 생성
② 계정 A에대한 고유한 URL 생성 (ex, hxxp://github.com/A~)
③ 사용자는 계정을 B로 변경
④ 계정 B에대한 고유한 URL 생성 (ex, hxxp://github.com/B~)

⑤ 계정 A의 리포지터리가 자동으로 계정 B로 리다이렉션

 

RepoJacking이란 공격자가 위 과정에 개입하여 이름 A를 등록해 공격자의 리포지터리에서 접근하도록 하는 공격
리포지터리를 생성하는 과정과 사용자의 이름을 변경하는 과정에서 경합 조건이 발동된다는 것이 취약점의 핵심적인 내용
① 사용자는 "A/Repo" 네임스페이스를 소유
② 사용자는 "A"의 이름을 "B"로 변경
③ "A/Repo"는 폐기처리
④ 공격자 "C"는 동시에 "Repo" 리포지터리를 생성하며, "A"로 이름을 변경하는 명령 수행
⑤ 사용자는 공격자 소유의 "A/Repo"에 접근하여 공격자가 업로드한 파일, 명령을 사용

 

※ Race Condition 공격과 유사한 공격으로 판단됨 [2][3]

- Race Condition: 두 개의 스레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황
> 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때,
> 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라
> 그 실행 결과가 같지 않고 달라지는 상황

- Race Condition Attack: 실행 프로세스가 임시파일을 생성할 시, 실행 중에 끼어들어 임시 파일을 목적 파일로 연결(심볼릭 링크)하여 권한 상승(setuid를 이용) 등 악용

 

3. 대응방안

① 해당 취약점을 발견한 Checkmarx는 Github에 해당 문제를 전달
> Github은 "인기 있는 저장소 네임스페이스 종료"를 도입 [4]
> Checkmarx는 모니터링을통해 우회 방법들이 발견될때마다 내용 공유를 통해 지속 대응중으로 확인됨

> Checkmarx는 RepoJacking 공격에 취약한 리포지터리를 확인하는 도구를 개발해 제공 [5]

 

② 무차별 대입 공격 및 프로젝트 탈취를 방지하기 위해 저장소에 2FA 적용
③ 엄격한 형상관리
④ 프로젝트 모니터링과 검토를 통해 취약점 조기 식별 및 조치 등

 

4. 참고

[1] https://checkmarx.com/?s=Repojacking
[2] https://iredays.tistory.com/125
[3] https://isc9511.tistory.com/120
[4] https://github.blog/2018-04-18-new-tools-for-open-source-maintainers/#popular-repository-namespace-retirement
[5] https://github.com/Checkmarx/chainjacking
[6] https://blog.aquasec.com/github-dataset-research-reveals-millions-potentially-vulnerable-to-repojacking
[7] https://thehackernews.com/2023/09/critical-github-vulnerability-exposes.html
[8] https://www.boannews.com/media/view.asp?idx=111102&page=1&kind=1
[9] https://www.boannews.com/media/view.asp?idx=121918&page=3&kind=1 

1. 개요

- 23.06.07 지니언스社 Genian NAC 업데이트 서버에 침해사고 의심 정황 발견
> Genian NAC 솔루션 고객사는 금융권, 가상자산 거래소, 제약회사, 방송사, 언로사 등 약 2400 곳
> 23.06.07 경찰의 본사 시스템 조사 후 23.06.08 KISA 신고 
> 23.06.30 홈페이지에 관련 입장문 게시
※ 지니언스: NAC, EDR 솔루션 등을 제공하는 보안 기업
※ Genian NAC: 지니언스에서 개발 및 서비스하는 네트워크 접근 제어 솔루션
※ NAC: 네트워크에 접속하는 사용자나 기기를 식별, 인증, 통제

 

2. 주요내용

- 지니언스 업데이트 서버에서 고객사 NAC 정책서버임의의 파일이(확인되지 않은 파일) 전송된 것을 확인
> 업데이트 서버가 침해되었다고 판단 후 공격자 및 침투 경로 확인 중
※ 업데이트 서버는 클라우드에 위치해 고객사에 설치된 NAC 정책서버와 통신하여 GPDB(Genian Platform DB) 등 동작에 필요한 정보를 주기적으로 업데이트하는 기능을 수행

 

- 솔루션 자동 업데이트를 설정한 고객사를 중심으로 피해 사례가 확산
> 자동 업데이트를 설정한 고객사에 관련 정보 통보

 

- 업데이트 서버의 로그 파일 전수 조사를 통해 파일이 전송된 일부 고객사 확인 및 고지 조치
> 관계당국과 협조하여 고객사의 침해 여부 조사 및 장비 교체 완료

 

- 현재까지 확인된 사항
① 고객사 피해는 확인되지 않음
② 기존 업데이트 체계 전면 중단
③ 새로운 업데이트 체계 및 서버 준비 완료
④ Genian NAC 패치 준비 완료
⑤ 침해 여부 확인을 위한 점검 툴 개발 완료 및 배포

 

3. 기타

- EDR, GPI(내PC지키미) 및 Cloud NAC 제품은 영향 없음
- 고객의 NAC 정책 서버가 폐쇄망에 설치되어 있는 경우 영향 없음
- 추가 진행사항이 있는 경우 지속적 공지 약속

 

4. 참고

[1] https://www.genians.co.kr/notice/2023
[2] https://www.boannews.com/media/view.asp?idx=119744
[3] https://www.edaily.co.kr/news/read?newsId=02912646635646968&mediaCodeNo=257&OutLnkChk=Y

'취약점 > Supply-Chain Attack' 카테고리의 다른 글

Apple CocoaPods 공급망 공격  (0) 2024.07.03
XZ Utils 라이브러리 백도어 (CVE-2024-3094)  (0) 2024.04.01
리포재킹(Repojacking) 공격  (0) 2023.09.14
3CX 공급망 공격  (0) 2023.04.06

1. 3CX

- 영상 회의 솔루션인 PBX와 기업용 통신 앱(윈도용, 맥OS용, 리눅스용)인 3CX 데스크톱앱을 제공하는 벤더사

 

2. 취약점

- 3CX는 전 세계 60만 개 기업이 고객사로 알려져 있으며, 솔루션을 사용하는 사람은 매일 약 1200만 명으로 알려짐

- 다수의 보안 업체에서 3CX 데스크톱앱 바이너리의 정상 업데이트 파일에서 수상한 행동 패턴의 확인을 알렸고, 관련 조사를 통해 확인

- 국내 모 대학에서 공급망 공격이 알려지기 이전에 18.12.407 버전과 18.12.416 버전의 3CX Electron Windows App 설치 로그 확인

- 북한의 라자루스(Lazarus)로 추정되는 해킹 그룹이 CVE-2013-3900 및 고푸람 멀웨어를 이용, 윈도우와 맥 사용자들을 대상으로 3CX의 VoIP 데스크톱 애플리케이션을 침해

고푸람(Gopuram)
- 2020년 동남아시아 암호화폐 기업에서 최초 발견된 백도어
- 여러 기능을 가진 모듈을 포함: 데이터 탈취, 추가 멀웨어 설치, 임의 서비스 시작, 종료 및 삭제, 피해자 시스템의 직접 제어 권한 등
- 애플제우스(AppleJeus)라는 또 다른 백도어가 함께 설치
- 고푸람, 애플제우스 모두 라자루스와 연관

 

영향받는 제품 및 버전
① Electron Windows application shipped in Update 7
- 18.12.407
- 18.12.416

② Electron macOS application
- 18.11.1213
- 18.12.402
- 18.12.407
- 18.12.416

 

2.1 CVE-2013-3900

- 2013년에 발견되고 패치된 취약점

- 당시 MS의 설명에 따르면, 익스플로잇에 성공한 공격자들은 서명된 실행파일에 악성 코드를 삽입할 수 있게 된다고함

- MS는 윈도 오센티코드(Windows Authenticode)로 서명된 바이너리들의 인증 방식 자체를 변경

> 서명된 바이너리를 누군가 변경하면 해당 바이너리를 더 이상 서명된 바이너리로 윈도우가 인식하지 않도록 한 것

> ‘옵트인’ 방식으로 이루어졌으며, 사용자들이 패치를 적용할 것인지 말 것인지를 선택하도록 함

 

2.2 공격 방식

- 애플리케이션의 설치 패키지(MSI 파일) 내에 있는 두 개의 DLL이 공격자에 의해 감염

- 3CX의 인증서로 서명되어 있었으며, 자동 업데이트를 통해 DLL 파일을 유포

- 유포된 DLL은 추가 악성 파일을 설치 및 실행하여 정보 유출형 악성코드 인포스틸러 설치

 

- 공격 방식은 다음과 같음

① 침해된 파일 3CXDesktopApp.exe가 실행되면, DLL Side-Loading 기법으로 ffmpeg.dll이 로드

> ffmpeg.dll: d3dcompiler.dll에서 악성쉘 코드를 읽고 로드 및 실행하기 위해 사용되는 트로이목마 DLL

 

② ffmpeg.dll은 다시 d3dcompiler.dll을 DLL Side-Loading 기법으로 로드

> d3dcompiler.dll: 입력된 16진수 문자열 뒤에 암호화된 쉘코드가 추가된 DLL

[사진 1] d3dvompiler.dll 로드 과정

 

③ d3dcompiler.dll은 쉘코드를 복호화해 C2 접근을 위한 ICO 파일이 있는 GitHub 저장소 엑세스

> 3jB(2bsG#@c7 키와 함께 RC4를 사용하여 악성 쉘코드 복호화

> GitHub에 엑세스하지 못하면 프로세스 종료

> GitHub 저장소: raw[.]githubusercontent[.]com/IconStorages/images/main/icon[.]ico_현재는 삭제되어 접속 불가

[사진 2] 하드코딩된 GitHub 저장소

 

④ ICO 파일을 이용해 C2 엑세스 시도

- Window

> ICO 파일: Based64 인코딩 및 AES+GCM 암호화 사용

> ICO 파일의 뒷부분에는 실제 C&C 서버의 주소들이 인코딩되어 존재하며, 이를 복호화 할 경우 실제 C&C 서버 주소가 확인

[사진 3] 공격에 사용된 ICO 파일

 

> 다운로더는 ICO 파일의 뒷부분에서 “$” 시그니처를 검색한 후 인코딩된 문자열을 찾아 복호화

[사진 4] ICO 파일에 삽입된 인코딩 데이터

 

[사진 5] 복호화된 C2 주소

 

- MAC

> 공격자는 DMG 설치 파일에 악성코드를 삽입

[사진 6] MAC 공격에 사용된 파일

 

> 설치 파일 내부에 존재하는 공유 라이브러리 파일들 중 libffmpeg.dylib 파일에는 C&C 주소가 XOR 인코딩되어 저장되어 있음

[사진 7] XOR 인코딩된 C2 주소 목록

 

⑤ 인포스틸러 멀웨어로 정보 수집

> 지정된 애플리케이션이 아닌 임의 애플리케이션에 의해 로드되면 에러 발생

> 3CXDesktopApp 폴더에서 config.json 파일을 확인하여 호스트 이름, 도메인 이름, OS 버전 정보 수집

[사진 8] config.json 확인

> 미리 정의된 문자열 목록을 이용해 Chrome, Edge, Brave 브라우저의 History 및 FireFox의 places.sqlite 정보 수집

[사진 9] 미리 정의된 문자열 목록

 

[사진 10] 공격 방식 요약

2.2.1 DLL Side-Loding 기법

- 안티바이러스 S/W에 의해 탐지되는 것을 우회하여 악성코드를 전파하기 위해 사용하는 기법 중 하나

- 윈도우 OS의 DLL loading 메카니즘을 악용한 기법

 

- 윈도우 애플리케이션 실행 과정에서 필요한 시점에 동적으로 라이브러리를 호출하는데, 이를 DLL (Dynamic Linking Library)이라 함

- 이때, 필요한 DLL의 이름은 애플리케이션에 따라 내부에 명시되어 있거나, 없을 수도 있음

- 만약 DLL이 애플리케이션 내부에 명시되어 있지 않은 경우 OS에 미리 정의된 순서에 따라 DLL을 찾음

Window OS의 DLL 검색 순서
① Application이 load 된 Directory
② 현재 Directory
③ 시스템 Directory
④ 16비트 시스템 Directory
⑤ Windows Directory
⑥ PATH 환경 변수에 나열된 Directory

 

- DLL 검색 순서를 악용해, 특정 애플리케이션이 사용하는 DLL이 아닌 악성코드가 포함된 DLL을 OS가 먼저 검색하여 실행하도록하는 기법

- 단, 악성 DLL의 이름정상 DLL의 이름동일해야 함

 

3. 조사 보고서

- MANDIANT는 해당 사건에 대한 분석 보고서를 발표

- 해당 공격은 과거 발생한 1차 공급망 공격이 2차 공급망 공격으로 이어진 최초의 사례

[사진 11] 공격 과정 요약

 

3.1 내용 요약

① 최초 침입 벡터: 트레이딩 테크놀로지스(Trading Technologies) 소프트웨어 엑스트레이더(X_TRADER) 설치 패키지

- 엑스트레이더는 금융거래를 목적으로 사용하는 소프트웨어

- 공격자는 모종의 사유로 트레이딩 테크놀로지스를 침해해 엑스트레이더 설치 패키지를 감염

> 공격에 사용된 파일명: X_TRADER_r7.17.90p608.exe (MD5: ef4ab22e565684424b4142b1294f1f4d)

> 엑스트레이더는 2020년 서비스가 종료되었지만, 웹 사이트에서 2022년에도 다운로드가 가능했음

> 또한, 감염된 소프트웨어에를 서명하는데 사용된 인증서는 2022.10 만료되도록 설정

 

② 3CX 직원이 감염된 설치 패키지 다운 및 실행

- 감염된 소프트웨어 설치파일 setup.exe를 실행 및 악성 파일이 추출되어 백도어 설치

> SIGFLIP: RC4로 페이로드를 해독하고 바이트 시퀀스 FEEDFACE를 사용하여 쉘코드 검색

> DAVESHELL: 드로퍼 역할을 수행하는 쉘코드

> VEILEDSIGNAL (MD5: c6441c961dcad0fe127514a918eaabd4): C2 통신을 위한 백도어로, C2 주소 하드코딩

 

③ 공격자의 내부 이동 및 공격 지속성 유지

- 백도어와 오픈 소스 FRP를 이용해 3CX 내부를 이동하며 자격 증명을 수집

> FRP: NAT 또는 방화벽 뒤에 있는 로컬 서버를 인터넷에 노출할 수 있는 빠른 역방향 프록시

- 공격을 지속하기 위해 추가작업 수행

> Window: Taxhaul 멀웨어로 DLL 사이드로딩을 사용하여 지속성을 달성하고 탐지 가능성을 줄이며, Coldcat 다운로더를 배포

> Mac: POOLRAT 백도어로 지속성 달성

 

④ UNC4736 공격 그룹

> 3CX 공급망 공격과 트레이딩 테크놀로지스 공급망 공격의 배후를 모두 북한 해킹그룹으로 추정되는 UNC4736로 지목

 

⑤ 3CX는 공격을 탐지하는 데 사용할 수 있는 YARA 규칙 및 IoC 공유 

 

4. 대응방안

① 벤더사 관련 공지 참고

> 3CX에서는 현재 새로운 인증서 발급 준비 중이며, 인증서 발급 전까지 PWA 애플리케이션을 대신 사용할 것을 권장

> PWA 설치 가이드: https://www.3cx.com/blog/releases/web-client-pwa/

 

② 관련 프로그램 삭제

> 제어판 > 프로그램 및 기능 > 3CX Desktop App 제거

 

③ 공개된 IoC 정보 등을 보안 장비에 적용 및 모니터링

 

④ CVE-2013-3900 패치를 찾아 적용

> 윈도 11의 경우 해당 패치를 적용하였더라도, 재적용 필요_새 버전의 OS가 패치를 되돌리기도 하기 때문

 

⑤ 안티바이러스 S/W, OS 최신 버전 업데이트 등의 기본 보안수칙 준수

 

5. 참고

[1] https://www.trendmicro.com/en_us/research/23/c/information-on-attacks-involving-3cx-desktop-app.html
[2] https://www.sentinelone.com/blog/smoothoperator-ongoing-campaign-trojanizes-3cx-software-in-software-supply-chain-attack/
[3] https://www.kaspersky.com/blog/supply-chain-attack-on-3cx/47698/
[4] https://www.bleepingcomputer.com/news/security/cryptocurrency-companies-backdoored-in-3cx-supply-chain-attack/
[5] https://www.bleepingcomputer.com/news/security/hackers-compromise-3cx-desktop-app-in-a-supply-chain-attack/
[6] https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/3cx-supply-chain-attack
[7] https://asec.ahnlab.com/ko/50797/
[8] https://www.boannews.com/media/view.asp?idx=116815&page=1&kind=1
[9] https://www.boannews.com/media/view.asp?idx=116779&page=1&kind=1
[10] https://www.boannews.com/media/view.asp?idx=115665&kind=1&search=title&find=3cx 

[11] https://www.boannews.com/media/view.asp?idx=116997&kind=1&search=title&find=3cx

[12] https://asec.ahnlab.com/ko/50965/

[13] https://www.mandiant.com/resources/blog/3cx-software-supply-chain-compromise

[14] https://github.com/fatedier/frp

[15] https://www.boannews.com/media/view.asp?idx=117351&page=3&kind=1 

+ Recent posts