정보 탈취 악성코드 스레드 플루언트 코드 난독화

다단계 정보 탈취 악성코드 패키지 분석

파이썬 패키지 스레드플루언트PyPI에서 발견된 이 라이브러리는 다음과 같이 식별되었습니다. 악의있는이 악성코드는 일반적인 정보 탈취 악성코드를 포함하고 있습니다. 그러나 가장 큰 특징은 페이로드를 숨기기 위해 고급 코드 난독화 기법을 사용한다는 점이며, 이로 인해 분석이 특히 어렵습니다. 이 악성코드는 공격 과정 전반에 걸쳐 세 단계의 난독화를 반복적으로 적용하여 수동 분석에 상당한 어려움을 초래합니다.

저희 악성코드 조기경보팀은 해당 패키지를 PyPI 보안팀에 신고했고, 보안팀은 신속하게 이를 제거했습니다. 이 글에서는 그 과정을 단계별로 설명합니다. 스레드플루언트이 공격 방식과 목적을 숨기기 위해 사용하는 방법, 특히 정보 탈취 악성코드와 코드 난독화가 어떻게 상호작용하는지에 초점을 맞춰 분석합니다.

요약 자료: 정보 탈취 악성코드 및 코드 난독화

Infostealer 멀웨어란 무엇인가요?

정보 탈취 악성 프로그램은 마치 디지털 세상에서 몰래 활동하는 도둑처럼 행동합니다. 사용자가 눈치채지 못하게 비밀번호, 신용카드 번호, 개인 정보와 같은 중요한 정보를 조용히 빼돌립니다. 이러한 프로그램은 사용자가 입력하는 내용을 기록(키로깅)하거나, 브라우저를 하이재킹하거나, 기기의 파일을 스캔하여 귀중한 데이터를 수집합니다. 가장 무서운 점은 바로 이러한 프로그램들이 눈에 띄지 않게 숨어 있다는 것입니다.

ThreadFluent Infostealer 멀웨어의 난독화 계층

1. 삼중 암호화

난독화 과정은 고도로 암호화된 페이로드를 내부에 삽입하는 것으로 시작됩니다. 플루언트.파이 파일의 초기 인코딩 및 복호화 과정은 다음과 같이 요약할 수 있습니다.

encoded_data = base64_module.b64decode("... BASE-6 with encrypted payload, IV and RSA-encrypted keys…”); # … Sequential decryption: ChaCha20, Blowfish and AES … encrypted_payload = AES_Cipher.new(aes_key, AES_Cipher.MODE_CBC, iv=aes_iv).decrypt(encrypted_payload[16:]) final_payload = unpad_function(encrypted_payload, AES_Cipher.block_size) exec( zlib_module.decompress(bz2_module.decompress(final_payload)) ) 

이 난독화 과정에는 다음이 포함됩니다.

  • 압축gzip과 bzip을 사용합니다.
  • 대칭 암호화ChaCha20, Blowfish, AES를 사용한 체인 암호화 방식입니다.
  • 비대칭 암호화RSA는 대칭 키를 암호화하는 데 사용되었습니다.

결과는 Base64로 인코딩되어 다음과 같이 삽입됩니다. 인코딩된 데이터각 반복은 이전 단계를 기반으로 구축되어 중첩된 암호화 구조를 생성하므로 역공학 없이는 실제 페이로드를 알아내기가 매우 어렵습니다.

 

2. Gzip 압축 해제

악성코드는 여러 중간 단계에서 간단하지만 효과적인 난독화 방법, 즉 Gzip 압축과 Base64 인코딩을 결합한 방식을 사용합니다. 

import base64, zlib; eval(zlib.decompress(base64.b64decode(<STR>).decode('utf-8')) 

이 기술은 난독화된 페이로드가 모든 단계에서 숨겨진 상태로 유지되도록 보장합니다.

3. 코드 연결 및 동적 컴파일

마지막 단계에서는 난독화된 페이로드를 여러 변수로 분할하고, 실행 중에 이 변수들을 동적으로 연결하고 디코딩합니다.

import base64, zlib  FEQXCBDOZKHVIhT = '...' # ....(111 other variables with base-64 encoded values) ...  zZytWuvuEdBXSrO =   eval(<FEQXCBDOZKHVIhT' encoded with '\x>) +   eval(<next variable, encoded>) +   eval( ' zlib.decompress(base64.b64decode(<VAR>)).decode('utf-8') ') + ...  eval(compile(base64.b64decode(eval(zZytWuvuEdBXSrO)).decode('utf-8'), ‘<app>', 'exec')) 

이 단계는 각 변수를 해독하고 재조합하여 다음 페이로드를 밝혀내야 하므로 수동으로 역설계하기가 특히 번거롭습니다.

이러한 난독화 기법들을 결합함으로써, 인포스틸러 악성코드 in 스레드플루언트 탐지를 회피하는 것은 중요한 역할을 보여줍니다. 코드 난독화 현대 사이버 공격에서.

ThreadFluent의 다단계 공격 체인

The 스레드플루언트 인포스틸러 악성코드 각각 추가적인 레이어를 도입하는 네 가지 단계로 구성됩니다. 코드 난독화이러한 단계들은 탑재체를 전달하는 역할뿐만 아니라 탐지 및 분석으로부터 보호하는 역할도 합니다.

정보 탈취 악성코드 난독화 스레드 플루언트

0단계: 초기 코드 실행

진입점은 __초기화__.py 이 파일은 난독화된 페이로드의 실행을 시작합니다. 플루언트.파이이 파일은 1단계 드로퍼를 생성하기 위해 다층 난독화(1~3단계에서 설명한 대로)를 사용합니다.

import os,threading def main():     if os.name == 'nt':         from . import fluent         fluent.main()          thread = threading.Thread(target=main , daemon=True) thread.start() 

1단계: 초기 스포이드 사용

첫 번째 드로퍼는 난독화가 해제되면 추가적인 악성 코드를 다운로드하고 삽입합니다. puts.pyGitHub 저장소에서 가져온 것입니다. 붉은머리 정강이-1337/repuests (경고: 악성 코드가 포함될 수 있습니다.) 

스포이드가 삽입됩니다 puts.py 인기 있는 제품의 현지 설치로 요청 라이브러리를 수정합니다. __초기화__.py 파일을 사용하여 난독화 해제를 실행하고 다음 단계를 진행합니다. 이 난독화 해제 과정은 1~3단계 난독화 레이어의 여러 적용 사례를 리버스 엔지니어링하는 것으로 구성됩니다.

2단계: 두 번째 드로퍼

두 번째 드로퍼는 동일한 과정을 거쳐 난독화가 해제되면 또 다른 페이로드를 다운로드합니다. ssl.py GitHub 저장소에서 이름을 변경합니다. udp.py그리고 악성코드가 반복적으로 재설치되지 않도록 잠금 파일을 생성합니다. 그런 다음 실행하여 악성코드의 난독화를 해제하고, 최종 정보 탈취 페이로드를 실행합니다.

3단계: 최종 정보 탈취자

최종 단계는 고급 회피 기술을 사용하는 완벽하게 작동하는 정보 탈취 시스템입니다.

  • 안티 분석 기능:
    • 악성코드 방지 도구를 탐지하고 블랙리스트에 등록된 프로세스, IP 주소, 호스트 이름 또는 가상 환경이 감지되면 종료합니다.
  • 데이터 유출:
    • IP 주소, MAC 주소, VPN 데이터, 브라우저 쿠키/기록, 신용카드 정보, 암호화폐 지갑 자격 증명 등 다양한 정보를 수집하며, 스크린샷도 포함됩니다.
    • 탈취한 데이터(암호화됨)를 여기에 표시된 템플릿을 사용하여 텔레그램 채널을 통해 전송합니다. 
정보 탈취 악성코드 난독화 스레드 플루언트

난독화 해제 전략

유사한 패키지를 분석하려면 연구자들은 체계적으로 난독화 계층을 역순으로 제거해야 합니다.

  • 난독화 단계를 모방하세요: 페이로드를 실행하지 않고 변환(예: 복호화, 압축 해제)을 시뮬레이션하는 스크립트를 작성하세요.
  • 역방향 암호화 계층: 내장된 키와 알고리즘을 사용하여 페이로드를 추출하고 복호화합니다.
  • 반복 분석: 각 중간 단계를 반복적으로 처리하여 최종 페이로드를 재구성합니다.

이러한 분석을 간소화하려면 자동화 도구와 샌드박스 환경이 필수적입니다.

 

실시간으로 발생하는 위협에 앞서 나가는 방법에 대해 더 자세히 알아보고 싶으신가요?

'조기 경보: 실시간 위협 탐지 및 우선순위 지정' 백서를 다운로드하여 소프트웨어 공급망을 보호하는 방법을 알아보세요.

위협 행위자

알고 보니 해당 패키지는 두 개의 PyPI 계정에서 게시되었습니다. 아비르호세인10 아노밀라노785현재는 삭제되었습니다. 

현재 활성화된 GitHub 계정이 있습니다. 아비르호세인10이는 캠페인과 관련이 있을 수 있습니다. 붉은 머리 정강이-1337 2단계 및 3단계 페이로드를 다운로드하는 데 사용된 저장소를 소유한 GitHub 사용자도 분석 대상입니다.

비록 배후를 정확히 밝히는 것은 항상 복잡하고 레드팀 소속일 가능성도 있지만, 유출된 정보의 종류와 양을 보면 악의적인 행위자의 소행일 가능성이 높습니다.

결론: 악성코드 진화에서 코드 난독화의 역할

The 스레드플루언트 이 패키지는 다단계 전달 방식을 통해 최신 악성코드 난독화 기법을 잘 보여줍니다. 또한, 사용된 회피 기법들을 통해 탐지를 피하고 분석을 저항하려는 분명한 노력을 엿볼 수 있습니다.

이 분석은 이러한 위협에 대응하는 데 있어 협업과 자동화 도구의 중요성을 강조합니다. 보안 전문가들은 이러한 방법들을 분석하고 이해함으로써 향후 유사한 악성 소프트웨어에 대한 더 나은 방어 체계를 구축할 수 있습니다.

Xygeni의 MEW 시스템이 악성 threadfluent 패키지의 프로덕션 배포를 차단한 방법

자이제니스 악성코드 조기경보(MEW) 이 시스템은 이를 막는 데 결정적인 역할을 했습니다. 스레드플루언트 고급 기능을 포함하는 악성 종속성이 있는 Python 패키지 코드 난독 화 그리고 다단계 인포스틸러 악성코드운영 환경에 악영향을 미치기 전에 차단할 수 있습니다. 방법은 다음과 같습니다.

  • 정적 분석을 통한 탐지
    뮤가 발견되었습니다 스레드플루언트숨겨진 코드를 분석하여 계층형 암호화 및 비정상적인 종속성 활동과 같은 의심스러운 징후를 찾아냅니다.
  • 런타임 도달 가능성 평가
     해당 시스템은 패키지의 코드가 사용 중에 실행될 수 있음을 감지하여 실제로 실행하지 않고도 심각한 위협으로 표시했습니다.
  • CI/CD Pipeline 보호
    MEW가 차단했습니다 스레드플루언트 실시간으로 문제를 감지하여 빌드에 포함되지 않도록 하고 프로덕션 환경에 배포되지 않도록 차단했습니다. 개발자에게 실행 가능한 알림을 보내 귀중한 시간을 절약해 주었습니다.
  • 위협 인텔리전스 공유
    Xygeni는 해당 패키지를 PyPI에 신속하게 신고하고 글로벌 보안 네트워크와 조사 결과를 공유하여 추가 확산을 막았습니다.

잡음으로써 스레드플루언트 초기에 Xygeni의 MEW 시스템은 악성 코드가 소프트웨어 공급망에 피해를 주지 않도록 했습니다. CI/CD 워크 플로우.

당신을 보호하십시오 CI/CD Pipeline무료로

다음과 같은 위협을 예방하세요 스레드플루언트 Xygeni의 악성코드 조기 경보 시스템을 사용해 보세요. 지금 시작하세요. 무료 시험판 지금 바로 소프트웨어 공급망을 확보하세요.

루이스 로드리게스의 사진

루이스 로드리게스

루이스 로드리게스는 물리학자입니다.cist + 수학자 그리고 CISSP. 현재 Xygeni Security의 공동 창립자 겸 CTO입니다. 소프트웨어 보안 분야에서 20년 이상의 경력을 보유하고 있으며 다음과 같은 프로젝트에 참여했습니다. SAST SCA그는 현재 다음 사항에 집중하고 있습니다. software supply chain security.

다니엘 마르틴의 사진

다니엘 마틴

다니엘 마르틴은 사이버 보안 전문가이자 Xygeni 연구 보안 팀의 일원이며, 전문 분야는 다음과 같습니다. SDLC 보안 및 애플리케이션 취약점 완화.

sca-tools-software-composition-analysis-tools
소프트웨어 위험을 우선순위화하고, 해결하고, 보호하십시오.
무료 계정을 만드세요.
신용 카드가 필요하지 않습니다.

소프트웨어 개발 및 제공을 안전하게 보호하세요

Xygeni 제품군과 함께