paint-brush
Python에서 RAT 돌연변이가 데이터를 훔치고 탐지를 회피하는 방법~에 의해@hernanortiz
3,732 판독값
3,732 판독값

Python에서 RAT 돌연변이가 데이터를 훔치고 탐지를 회피하는 방법

~에 의해 Hernán Ortiz7m2023/02/02
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

보안 연구원들이 매일 악성 Python 패키지를 발견하고 있음에도 불구하고 RAT 돌연변이라고 불리는 새로운 유형의 악성 코드가 우리의 관심을 끌고 있습니다. 그들은 시간이 지남에 따라 더욱 회피적이고 위험해지도록 변화하고 적응해 왔습니다. 암호화폐 지갑과 개인 데이터를 훔치고, 마우스와 키보드를 원격으로 제어하고, 탐지를 회피하도록 진화하는 방법에 대한 이야기는 다음과 같습니다.
featured image - Python에서 RAT 돌연변이가 데이터를 훔치고 탐지를 회피하는 방법
Hernán Ortiz HackerNoon profile picture



"현명한 닌자는 자신이 완전히 이해하지 못하는 적을 찾지 않습니다." - 십대 돌연변이 닌자 거북이의 스플린터


SF에 대한 열정이 있는 기술 작가로서 Sonatype에서 일하면서 가장 흥미로운 부분 중 하나는 보안 연구 팀과 협력할 수 있는 기회를 가질 때입니다.


우리가 발견한 이후로  지난 달 일련의 Python 패키지 원격 액세스 트로이 목마와 정보 도용자의 기능을 활용하는 새로운 악성 코드인 RAT 돌연변이라고 부르는 것에 해당하는 보안 연구원들은 데자뷰를 느꼈습니다.


이는 드문 일이 아닙니다. 그들은 오픈 소스 레지스트리에서 수백 개의 의심스러운 패키지를 지속적으로 평가하여 실제로 악성인지 확인합니다. 이 절차 동안 그들은 패키지 사이의 친숙한 패턴을 식별하고 때로는 강력한 유사성을 인식하면 뒤에 있는 행위자/캠페인을 추적하기 위한 추가 조사를 수행합니다.


2022년 마지막 주부터 2023년 초 사이에 우리 AI 시스템은 pyrologin , easytimestamp , discorder , discord-dev , style.py pythonstyles 를 포함하여 PyPI 레지스트리에 업로드된 의심스러운 패키지에 플래그를 지정했습니다. 우리 보안 연구원들이 이를 살펴본 결과 실제로 악성임을 확인했습니다. 그리고 추가 분석을 통해 그들은 이러한 패키지에 Python 악성 코드에서 흔히 볼 수 없는 일련의 기능이 추가된 것을 발견했습니다.


사실상의 전략으로, 악의적인 행위자는 setup[.]py 파일에 페이로드를 숨기므로 개발자는 간단한 pip 설치만 사용하면 감염됩니다. 이 경우 공격자가 피해자의 마우스, 키보드를 제어하고 스크린샷을 찍고 숨겨진 원격 연결을 생성할 수 있는 라이브러리를 설치하기 위해 ZIP 파일을 다운로드하는 PowerShell 스크립트를 실수로 실행하게 됩니다. 게다가 이러한 패키지는 비밀번호, 쿠키, 암호화폐 지갑 데이터와 같은 민감한 정보를 유출하고 심지어 원격 액세스를 위한 도구를 설치하려고 시도합니다. 우리의 연구 결과는 다음과 일치했습니다. Phylum의 기술 보고서 매우 동일한 패키지 중.


그럼에도 불구하고 보안 연구원인 Carlos Fernandez는 데자뷰에 대한 잊혀지지 않는 감각을 갖고 있었습니다. 우리가 패키지를 공개한 지 일주일 동안 그의 마음속에는 이 악성 코드의 이전 버전을 본 기억이 떠올랐습니다. 위협 행위자가 시간이 지남에 따라 악성 코드를 발전시켜 왔을 수도 있지만 우리는 확실히 해야 했기 때문에 그의 직관에 진실이 있는지 확인할 수 있도록 OSINT 모자를 썼습니다.

기원 이야기

데이터베이스를 되돌아보면 2022년 9월 25일에 pygradient 라는 패키지가 PyPI 저장소에 업로드되었습니다. 우리 AI는 이를 의심스러운 것으로 표시했고 보안 연구원은 여기에 악성 코드가 포함되어 있고 pystyle 이라는 다른 패키지의 소스를 번들로 포함하고 있음을 확인했습니다. 두 라이브러리 모두 작성자는 다음과 같습니다. 빌리테고트356 , 일명 BillyTheGoat, 일명 BillyV3(loTus04 및 BlueRed의 기여 포함). 프랑스 출신의 이 작가(적어도 GitHub에서의 그의 위치와 그의 Discord 채널을 통해 사용되는 언어를 통해 알 수 있음)는 배후의 인물로 인정됩니다. 하이페리온 , 최근 업로드된 악성코드에서 자주 발견되는 Python 난독처리기이자 다음의 제작자 중 한 명입니다. W4SP 스틸러 , 7월부터 활동 중인 정보 도용자입니다. 계속되는 공급망 공격 레지스트리를 엽니다.


W4SP 스틸러는 지속성(사용자가 PC를 다시 시작할 때마다 다시 활성화됨), 난독화(저자가 완전히 감지할 수 없다고 약속함), 이미지 파일 내에서 다형성 및 고도로 난독화된 페이로드를 숨기는 스테가노그래피 기술을 자랑합니다. 악성코드는 하드코딩된 Discord 웹훅 주소를 통해 피해자의 모든 Discord 계정, 신용카드, 비밀번호, 암호화폐 지갑을 공격자에게 다시 보냅니다. 이 악성코드에 관심이 있는 악의적인 행위자는 암호화폐로 약 20달러를 지불하여 이를 구입했습니다.



이미지를 디코딩하면 숨겨진 base64 난독화된 Python 코드가 드러납니다.



원래 pystyle 가독성과 사용자 경험을 향상시키기 위해 스타일 및 색상 콘솔 출력에 무해한 패키지인 악의적인 특성이 없었습니다. 그러나 Phylum 연구에 따르면 일단 인기를 얻게 되자(패키지는 여전히 PyPI에서 활성화되어 있고 매월 40,000회 이상의 다운로드를 누적하고 있음) 몇 가지 릴리스에 W4SP 악성 코드를 추가하기로 결정했습니다.


pystyle 과 같은 오픈 소스 패키지는 몇 달 동안만 잠자는 에이전트 역할을 할 수 있으며 나중에 악의적인 목적으로 작성자에 의해 활성화될 수 있습니다. 위험한 조치입니다. 인기 있는 패키지가 우리와 같은 보안 연구원에 의해 발견되어 악성으로 보고되고 영원히 삭제될 수 있기 때문입니다. 그렇기 때문에 무해한 라이브러리의 소스 코드를 포함하는 대신 새로운 패키지를 만들고, 일부 유형의 악성 페이로드를 추가하고, 일반적이고 온화하게 들리며 순진해 보이는 새로운 이름으로 업로드하는 경우가 많습니다. pygradient 와 같은 이름.


Carlos를 자세히 살펴본 후 우리는 이 프로토-RAT 돌연변이 악성 코드가 12월 버전의 일부 기능이 부족하다는 사실을 발견했습니다. 이는 PowerShell 스크립트를 실행하고 민감한 데이터를 유출했음에도 불구하고 base64로 인코딩된 페이로드나 허용 목록을 사용하지 않았습니다. txt 파일을 삭제하여 자가 감염을 방지하세요. 어떤 면에서는 더 온화하고 덜 정교한 변형이었습니다.


그러나 우리는 paintpy , devicespoofdevicespoofer 포함하여 11월 초에 업로드된 패키지를 살펴보고 더 자세히 살펴본 후 의심스러운 점을 확인했습니다. 즉, 악성 코드가 실제로 진화하고 있다는 것입니다.

악성코드를 추적하는 모방범

BillyTheGoat가 11월 이후 GitHub에서 활동하지 않았음에도 불구하고 우리는 여전히 그의 창작물을 기반으로 하거나 BillyTheGoat에서 직접 훔치는 악성코드를 발견하고 있습니다. 주로 포르투갈에 기반을 둔 것으로 보이는 지크트 .


이 사용자는 PyPI에서 최근 제거된 pystilez 패키지를 업로드했는데, BillyTheGoat의 이름으로 잘못 표시되었습니다. 재킹 시작 — 인기 있는 GitHub 라이브러리에 연결하여 수백 개의 별 및 포크와 연결함으로써 새 패키지의 평판을 높이는 기술입니다.


체크막스 추적 중입니다 이 공격자는 악성 코드 내에 Discord 서버 링크가 포함된 apicolor (비슷한 이름의 변형 포함)라는 패키지에서 W4SP 공격을 발견한 후 발생했습니다. 확인된 Steam 계정에 연결된 관리자 프로필과 "zeeckt"라는 이름이 공격자의 Steam 별칭 중 하나로 나타났습니다.


체크포인트 또한 이 위협 행위자가 합법성을 높이기 위해 인기 있는 GitHub 계정의 프로필을 복사하여 가짜 사용자를 만들고 있다고 보고했습니다. 그리고 피해자 중 한 명이 만들기로 결정했습니다. YouTube 동영상 가짜 프로필 중 하나에 속은 후 사람들에게 이 공격에 대해 경고합니다.


보안 연구원이 교육 목적으로 zeeckt의 페이로드 중 하나를 게시했고 그는 W4SP 스틸러의 공동 작성자로부터 흥미로운 답변을 받았습니다.




도둑질을 당한 것이 얼마나 아이러니한 일인가.


17세의 Python 개발자인 것으로 보이는 동일한 저자는 자신의 GitHub 프로필에 있는 README 파일에서 자신의 좌절감을 반복적으로 밝혔습니다.



Zeeckt가 다른 악의적인 행위자로부터 어떤 악성 코드를 훔쳤는지 정확히 알 수는 없지만 한 가지는 확실합니다. 해당 이름은 오픈 소스 레지스트리 전반의 악성 코드 캠페인에 계속해서 등장하고 있다는 것입니다.


좀 더 운동화 같은 변종이 당신의 암호화폐 자산을 갉아먹습니다

Carlos는 최근 다음을 통해 4개의 패키지를 더 발견했습니다. 지크트 : forenitq , forenith , forenityforenitz . 추가 조사 후 그는 해당 항목에 악성 태그를 지정하고 PyPI에 보고하여 삭제하도록 했습니다. 가장 빠른 경우는 게시부터 삭제까지 약 20분 정도 소요되었습니다.


forenitq setup[.]py 살펴보면 Carlos는 다음과 같은 1단계 페이로드를 발견했습니다.




공격자는 "start" 명령을 사용하여 특정 URL에서 Windows 바이너리를 다운로드하고 실행하는 임시 파일 3개를 생성합니다. 슬러그 /rat/clip 악의적인 의도를 암시하더라도 내부를 살펴보지 않고는 해당 가정을 확인할 수 없습니다.


이 글을 쓰는 시점에서 hxxp://20[.]226[.]18[.]203 에 호스팅된 페이지는 여전히 활성 상태이며 이미 만료되었거나 비공개인 Discord 초대에 대한 링크만 표시합니다.


Carlos는 그 패키지가 인기 있는 것처럼 가장하고 있다는 것을 알아차렸습니다. 컬러라마 가능한 StarJacking 시도에 대한 메타데이터를 사용하는 패키지입니다.


RAT 파일의 난독화를 해제한 후 그는 가능한 클립보드 하이재커를 로드하는 줄을 찾았지만 그 세부 사항은 base64로 인코딩되어 있었습니다.


디코딩 시 피해자의 클립보드를 하이재킹하여 의도한 암호화폐 지갑 주소를 공격자의 주소로 바꾸도록 설계된 Python 코드를 얻습니다.


비트코인 (bc1), 이더리움 (0x), 모네로(4), 라이트코인 (L 또는 M 또는 3)과 같은 특정 패턴을 찾아 패턴이 발견되면 의도한 주소를 공격자의 암호화폐 지갑 주소로 대체합니다. .


코드는 파이퍼클립 클립보드 데이터를 복사하여 붙여넣는 라이브러리입니다. 아직 설치되지 않은 경우 라이브러리를 설치한 다음 암호화폐 지갑 주소를 클립보드에 복사합니다. 그런 다음 코드는 연속 루프에 설정되어 클립보드에서 지갑 주소 패턴을 모니터링합니다.


또한 우리는 이 RAT 돌연변이가 탐지를 회피하기 위해 사용하는 더 많은 기술을 발견했습니다. 즉, setup[.]py forenitq/ansi[.]py 파일에 추가된 1단계 페이로드와 실행할 때마다 변경되는 2단계 다형성 페이로드입니다. 바이너리.


공격자는 또한 매우 완전한 도움말 메뉴와 함께 새로운 명령 및 컨트롤을 추가했으며 이번에는 포르투갈어를 추가했습니다.



보시다시피, 악의적인 행위자는 귀하의 인프라에 더 침투하기 위해 암호화폐 자금과 시스템 자격 증명을 훔치려고 합니다. 이들의 RAT 악성 코드는 개발자를 더욱 회피하고 피해를 주기 위해 계속 변이하고 있습니다. 따라서 현재 소프트웨어 공급망을 보호하고 있지 않다면 가능한 한 빨리 조치를 취하는 것이 좋습니다.


IOC(침해 지표)

hxxp://20[.]226[.]18[.]203/inject/tCxFLYLT6ViY9ZnP

hxxp://20[.]226[.]18[.]203/clip

hxxp://20[.]226[.]18[.]203/rat