3CX 데스크톱 앱 공격을 사용하여 소프트웨어 서명 및 확인의 중요성 설명

모든 게시물

2023년 XNUMX월 말, 보안 연구원들은 위협 행위자의 복잡한 소프트웨어 공급망 공격 3CX의 비즈니스 커뮤니케이션 소프트웨어(주로 회사의 음성 및 화상 통화 데스크톱 앱)에 관한 것입니다. 연구원들은 이 앱이 어떻게든 트로이 목마에 감염되었으며 이를 사용하면 위협 행위자의 유출 계획에 조직이 노출될 수 있다고 경고했습니다. 이 공격은 'Smooth Operator'라고 불렸으며 이 공격이 몇 달 동안 계속되고 있음을 시사하는 몇 가지 증거가 있습니다. 

그렇다면 정확히 무슨 일이 일어났으며, 이 트로이 목마 버전을 사용하면 어떻게 위험에 빠지게 되며, 소프트웨어 서명 및 확인을 사용하여 이를 어떻게 방지할 수 있었습니까? 

가장 먼저 해야 할 일: 3CX란 무엇입니까?

3CX 기존 하드웨어 PBX를 대체하는 소프트웨어 기반 개방형 표준 IP PBX(Private Branch Exchange)입니다. 인터넷을 통해 음성 통신을 전송하는 VoIP(Voice over Internet Protocol) 기술을 사용하여 기업이 전화를 걸고 받을 수 있도록 설계되었습니다. 3CX에는 화상 회의, 현재 상태, 인스턴트 메시징 등과 같은 고급 기능도 포함되어 있으며 온프레미스 또는 클라우드에 배포할 수 있습니다. Windows, macOS 및 Linux는 앱을 사용할 수 있는 인기 있는 운영 체제 중 일부에 불과합니다. 또한 Chrome 확장 프로그램 덕분에 브라우저를 통해 클라이언트에 액세스할 수 있으며 클라이언트에는 PWA 버전도 있고 Android 및 iOS 장치용 모바일 애플리케이션으로도 사용할 수 있습니다.

3개 회사에서 자사 앱을 사용하고 있으며 일일 사용자 수는 600,000만 명이 넘습니다. 12CX 웹사이트에서 소프트웨어 공급망 공격의 잠재적인 영향에 대한 아이디어를 얻을 수 있습니다.

공격에 대한 엿보기: 알아야 할 사항

이는 다소 복잡하므로 다음 단계로 나누어 보겠습니다.

  1. 당신은 데스크톱 앱의 트로이 목마 버전이 있거나 이미 설치되어 있으면 트로이 목마 버전으로 업데이트하기만 하면 됩니다.
  2. 3CXDesktopApp.exe 실행 파일은 ffmpeg.dll이라는 악성 DLL(동적 링크 라이브러리)을 로드합니다.
  3. ffmpeg.dll은 d3dcompiler_47.dll에서 암호화된 페이로드를 추출하고 실행하는 데 사용됩니다.
  4. 그런 다음 악성 코드는 이미지 끝에 Base64로 인코딩된 문자열이 추가된 GitHub에 호스팅된 순진해 보이는 아이콘 파일을 다운로드합니다.
  5. 그런 다음 인코딩된 데이터는 디코딩되어 가능한 최종 페이로드를 검색하기 위해 백도어가 연결하는 암호화된 C&C 서버가 포함된 다른 단계를 다운로드하는 데 사용됩니다.
  6. 마지막 단계에서는 Chrome, Edge, Brave 및 Firefox 브라우저에서 시스템 데이터와 브라우저 데이터를 수집하는 등 정보 탈취 기능이 실행됩니다. 여기에는 장소 테이블의 검색 기록 및 정보 쿼리는 물론 잠재적으로 기록 테이블 쿼리도 포함될 수 있습니다.

처음에, 3CX는 공격을 무시했지만 나중에 이것이 실제 위협임을 인정하고 회사가 사건을 해결하고 완화할 때까지 PWA 버전을 사용할 뿐만 아니라 특정 지침에 따라 앱을 제거하고 다시 설치할 것을 제안했습니다.

명심해야 할 또 다른 매우 중요한 요소는 손상에 트로이 목마 바이너리에 서명하는 데 사용되는 코드 서명 인증서가 포함된다는 것입니다. 음, 정확하지는 않습니다. 실제로는 다음과 같은 알려진 취약점을 사용하고 있습니다. CVE-2013-3900 (원래 2013년에 게시되었지만 2022년과 이번 주에 다시 업데이트됨) 표시 합법적으로 서명되었습니다.

데자뷰: 이전에도 이런 일이 있었습니다

만약 이 이야기가 3CX 트로이 목마 버전은 이전에 발생했기 때문에 친숙하게 들립니다.

이 경우에는 당신입니다회사가 사용하는 오픈 소스 업스트림 라이브러리가 감염되었는지 또는 실제 공격이 회사의 개발 환경을 침해했는지는 확실하지 않습니다. 

그 외 유명한 공격으로는 'Kingslayer'(2016)부터 'CCleaner'(2017), 'VestaCP'(2018), 'WIZVERA VeraPort'(2020), 'SolarWinds'(2020)까지 회사의 서버, 구축 환경 또는 실제 다운로드 가능한 실행 파일을 손상시키려는 일반적인 위협 행위자 관행입니다. 결국, 나쁘고 위험한 것을 신뢰할 수 있는 것으로 위장하는 것은 사람들이 귀하의 페이로드를 신뢰하고 다운로드하도록 하는 좋은 방법입니다.

이는 a의 정의 중 일부입니다. 소프트웨어 공급망 공격 – 공격자는 소프트웨어 공급망을 손상시켜 다수의 피해자에게 악성 소프트웨어를 배포했습니다. 이러한 유명한 사례에서 공격자는 합법적인 소프트웨어 패키지에 악성 코드를 삽입한 후 사용자에게 배포할 수 있었습니다. 공격자는 종종 소프트웨어 업데이트 서버나 코드 서명 인증서 등 신뢰할 수 있는 소프트웨어 공급업체나 공급자를 손상시켜 이를 수행할 수 있었습니다.

의심하지 않는 고객이 합법적인 응용 프로그램의 수정된 버전을 다운로드하게 함으로써 공격자는 본질적으로 내부에 있는 거의 모든 것을 숨길 수 있습니다.

그리고 여기에 주요 문제가 있습니다 - '의심하지 않음'. 결국 실행 파일, 바이너리 또는 이미지는 생성 회사에서 제공되었으며 분명히 승인을 받았으며 서명된 인증서도 포함되어 있습니다. 고객은 무엇을 더 할 수 있나요? 각 업데이트를 확인하기 위해 회사에 전화해야 합니까? 백도어가 있는지 코드(사용 가능한 경우)를 스캔하시겠습니까? 그것은 터무니없고 비현실적이다. 하지만 거기에는 is 할 수 있는 일.  

인증서 너머에 신뢰 계층을 어떻게 추가할 수 있습니까? 

신뢰 계층을 보여주는 이미지

제안 된 모델 매우 간단하며 코드 서명 인증서와 동일한 아이디어를 기반으로 합니다. 코드 서명 인증서는 소프트웨어나 코드에 디지털 서명하는 데 사용되는 제3자가 발행한 디지털 인증서입니다. 소프트웨어가 코드 서명 인증서로 서명되면 사용자는 소프트웨어를 설치하거나 실행하기 전에 소프트웨어의 신뢰성과 무결성을 확인할 수 있습니다.

서명 인증서는 신뢰할 수 있는 제3자에 의해 발급됩니다. 인증 기관 (CA), 소프트웨어 게시자의 신원과 소프트웨어 코드의 무결성을 확인합니다. 인증 기관은 암호화 알고리즘을 사용하여 소프트웨어의 디지털 서명을 생성한 다음 서명된 코드에 포함됩니다. 사용자가 소프트웨어를 설치하거나 실행하려고 하면 시스템은 디지털 서명을 확인하여 인증 기관에서 생성한 서명과 일치하는지 확인합니다. 서명이 일치하면 소프트웨어는 정품으로 간주되며 서명 이후 변조되지 않았습니다. 

이 시스템은 비대칭 암호화라고도 알려진 공개 키 암호화를 기반으로 합니다. 이는 공개 키와 개인 키라는 두 개의 서로 다른 키를 사용하여 데이터를 암호화하고 해독하는 암호화 방법입니다. 코드 서명과 관련하여 개인-공개 키 쌍은 소프트웨어 및 코드에 서명하는 데 사용됩니다.

이 프로세스에서 소프트웨어 게시자는 개인 키가 비밀로 유지되고 공개 키가 다른 사람에게 공개되는 개인-공개 키 쌍을 생성합니다. 그런 다음 소프트웨어 게시자는 개인 키를 사용하여 서명하려는 소프트웨어 또는 코드의 디지털 서명을 만듭니다. 이 디지털 서명은 수학적 알고리즘을 통해 소프트웨어나 코드를 실행한 다음 게시자의 개인 키로 결과 해시 값을 암호화하여 생성된 해시 값입니다.

사용자가 서명된 소프트웨어나 코드를 다운로드하면 해당 시스템은 소프트웨어 게시자의 공개 키를 사용하여 디지털 서명을 해독하고 다운로드한 소프트웨어나 코드의 해시 값과 일치하는지 확인합니다. 디지털 서명이 유효하면 사용자는 소프트웨어 게시자가 서명한 이후 소프트웨어 또는 코드가 변조되지 않았음을 확신할 수 있습니다.

이 간단한 개념을 기반으로 제안된 해결 방법은 회사의 키 또는 빌드 파이프라인 키를 사용하여 모든 새 릴리스, 바이너리 및 이미지에 직접 서명하고 사용자가 소프트웨어를 다운로드하거나 업데이트할 때 서명을 확인하도록 요청하는 것입니다.

물론 상황이 항상 그렇게 간단하지는 않습니다. 악의적인 행위자가 빌드 서버에 침투한 경우 빌드에 서명하는 것은 이미 의미가 없습니다. 핵심 인프라가 손상되면 전체 훈련도 마찬가지로 의미가 없습니다.

그러나 자동으로 수행될 수 있는 빠르고 쉬운 서명 확인을 사용자에게 요청하는 것은 다음 소프트웨어 공급망 공격을 방지하는 데 도움이 되는 작은 비용입니다.

하지만 잠깐만요. 실제로 오염의 원인이 업스트림 오픈 소스 라이브러리라면 어떨까요? 이러한 경우 손상 코드가 '내장'되어 있으므로 빌드에 서명하는 것은 의미가 없습니다.

여기서 우리는 이러한 서명에 서명하고 확인하는 것을 기반으로 하는 신뢰 생태계를 고려하기 시작해야 합니다. 이러한 오픈 소스 패키지가 서명되고 회사 코드에 통합될 때 서명이 확인되면 위반 가능성이 줄어들 수 있습니다.

서기관이 들어오는 곳

학자 라는 도구를 구현했습니다. 발린트 그것은 당신이 할 수 있도록 서명하고 확인하다 파일, 폴더, 이미지. 복잡한 PKI 시스템을 유지할 필요 없이 이 도구는 이미 확립된 확인된 ID(예: Google, Microsoft, GitHub 또는 AWS ID)를 사용하여 원하는 아티팩트에 서명하는 새로운 접근 방식을 구현합니다. 나중에 동일한 도구를 사용하여 아티팩트가 서명되었는지, 그리고 서명에 사용된 ID가 무엇인지 확인할 수 있습니다.

빌드 파이프라인이 컨테이너 이미지를 최종 아티팩트로 생성한다고 가정해 보겠습니다. 해당 이미지가 생성된 직후에 서명하고 서명된 버전을 클라이언트가 다운로드할 수 있는 저장소에 업로드해야 합니다. 일단 서명된 이미지는 더 이상 수정할 수 없으며 잠겨 있습니다. 원하는 사람은 누구나 서명되었는지, 서명 ID가 회사에서 게시한 내용과 일치하는지 확인할 수 있습니다.

이 도구는 구현을 통해 부여되는 기능의 일부일 뿐입니다. 스크라이브 SaaS 솔루션 귀하의 조직을 위해. 소프트웨어 공급망 보안과 전반적인 투명성을 모두 향상시키려는 목표를 가지고 Scribe가 제공할 수 있는 기능을 확인해 볼 이유가 충분합니다. 

기치

이 콘텐츠는 소프트웨어 공급망 전반에 걸쳐 코드 아티팩트와 코드 개발 및 전달 프로세스에 최첨단 보안을 제공하는 선도적인 엔드투엔드 소프트웨어 공급망 보안 솔루션 제공업체인 Scribe Security에서 제공합니다. 자세히 알아보기.