PointBlank: PyPI RAT, C2'yi JSON-Bin Servisinde Gizliyor

PointBlank: Komut kanalını ücretsiz bir not barındırma hizmeti üzerinden çalıştıran, tam özellikli bir Python RAT'ı.

TL; DR

PyPI'de bulunan bir paket adı gcli-kontrol Windows için eksiksiz bir uzaktan erişim aracı sunuyordu: tuş vuruşu kaydı, web kamerası ve mikrofon yakalama, pano izleme, tarayıcı kimlik bilgilerine erişim, ekran kontrolü, kalıcılık, ayrıcalık yükseltme ve kendi kendine ilan ettiği "140'tan fazla komut". Ne olduğunu gizlemedi: paketin kendi PyPI özetinde "Windows üzerinden uzaktan erişim aracı" olarak tanımlanıyordu. npoint.io".

Üzerinde durulması gereken ayrıntı şu ifadedir. "npoint.io aracılığıyla." İmplant, özel bir sunucuya bağlanmak yerine, şu yöntemi kullandı: npoint[.]io (Küçük JSON belgelerini barındırmak için ücretsiz, yasal bir hizmet) komuta ve kontrol rölesi olarak kullanılıyor. Operatör komutları bir JSON kutusuna yazıyor; kötü amaçlı yazılım bu kutuyu sorguluyor, çalıştırıyor ve sonuçları geri yazıyor. Engellenecek saldırgana ait bir alan adı yok, işaretlenecek yeni bir IP adresi yok: trafik, geliştiricilerin her gün kullandığı bir hizmete gidiyor.

Yaklaşık on üç buçuk saat içinde altı farklı versiyon yayınlandı ve her biri bir öncekinden daha başarılıydı. Her birinin müzik notaları da mevcuttu. ml_tahmin_güvenli Manuel incelemeden önce otomatik bir sınıflandırıcı tarafından yapılan sınıflandırma sonucunda aile kötü niyetli olarak yeniden sınıflandırıldı.

Saldırı anatomisi

gcli-kontrol İçe aktarma paketini kurar gcli35 modülden oluşan bir Python kod tabanıdır. Kurulum gerektirmez. hooks — sırasında hiçbir şey çalışmaz pip kurulumuBu özellik modüllerin içinde yer alır, araç çalıştırıldığında bir kez çağrılır ve modül düzeni bir ürün teknik özellik sayfası gibi okunur:

Yetenek alanıModüller
Ev sahibi gözetimikeylog, webcam, audio, clipboard, desktop, monitoring
Kimlik bilgileri ve veri erişimibrowser, forensics, fileops, transfer, users
Dayanak noktası ve tırmanmapersistence, elevator, registry, security
Sunucu ve ağ keşfisystem, processes, network_config, wifi, bluetooth, netutils
Komuta ve kontrolclient, host, session, protocol, npoint, crypto, encrypt

Komut kanalı asıl ilgi çekici kısım. Uzaktan erişim araçlarının çoğu, operatörün kontrol ettiği bir sunucuya ulaşır; bu bir IP adresi, bir alan adı veya raporlanıp çevrimdışı hale getirilebilen bir barındırma sağlayıcısı olabilir. gcli-kontrol bunun yerine bir Ücretsiz JSON-bin hizmeti, gizli veri bırakma noktası olarak kullanılabilir.. npoint Bu modül, küçük JSON belgelerini okur ve yazar. npoint[.]io sıradan HTTPS üzerinden; kripto/şifrelemek Modüller, değiş tokuş edilen yükleri sarmalayarak, bin içeriğinin düz metin komutları olmamasını sağlar. Sonuç olarak, aracılı, şifrelenmiş bir aktarım gerçekleşir:

  • Operatör, şifrelenmiş bir talimatı bir JSON kutusuna bırakır.
  • Kurban bilgisayarda çalışan kötü amaçlı yazılım, bu çöp kutusunu sorgular, şifresini çözer, komut işleyicilerinden birini çalıştırır ve (şifrelenmiş) sonucu geri yazar.
  • Bir ağ izleme uzmanı için kurban, sadece onunla konuşuyor demektir. npoint[.]io — Geliştirici trafiğinde görünmek için meşru bir nedeni olan bir hizmet.

Burada ikinci aşama indirme veya gizlenmiş yükleyici yok: özellik, okunabilir Python koduyla eksiksiz olarak sunuluyor ve tek "gizleme", aktarım yönteminin seçimi ve aktarılan yüklerin şifrelenmesidir.

JSON-bin formatında veri bırakma yönteminin operasyonel açıdan neden cazip olduğunu açıklamakta fayda var, çünkü bu durum bu modelin tekrar ortaya çıkmasını beklememizin nedenini açıklıyor:

  • Operatöre ait uç nokta yok. Kaydedilecek bir C2 alan adı yok, kiralanacak bir VPS yok ve bir savunucunun veya kayıt şirketinin ele geçirebileceği hiçbir şey yok. Kaldırma işlemi paket kanala dokunmuyor; kaldırılması kanal Bu, genel amaçlı bir SaaS hizmetinden milyonlarca belge arasından birini denetlemesini istemek anlamına gelir.
  • İtibar aklama. Tanınmış bir geliştirici servisine giden HTTPS trafiği, yeni bir alan adı veya ham bir IP adresinin yol açacağı itibar kayıplarına neden olmaz. Birçok giden e-posta filtreleme kurulumu bunu örtülü olarak sağlar.
  • Asenkronluk ve inkar edilebilirlik. Bir yoklama modeli (implant, açık bir soket tutmak yerine belirli aralıklarla bir belgeyi alır), etkileşimli bir oturum değil, periyodik API yoklaması gibi görünen bir trafik üretir. Belge içeriğinin şifrelenmesi, çöp kutusunu bulan bir analistin bile komut listesi değil, şifrelenmiş metin görmesi anlamına gelir.
  • Önemsiz rotasyonFarklı bir klasöre veya tamamen farklı bir not/yapıştırma hizmetine geçmek, operatör için tek satırlık bir yapılandırma değişikliğidir. Belirli röleye göre ayarlanmış herhangi bir engelleme listesi, gönderildiği anda geçersiz hale gelir.

Operatörün kabul ettiği ödünleşme, veri aktarım hızı ve gecikme süresidir: bir doğrudan bağlantıya kıyasla, doğrudan bağlantı üzerinden yapılan aktarım daha yavaş ve daha düşük bant genişliğine sahiptir. Çoğunlukla kısa komutlar veren ve sonuçları zaman içinde toplayan bir gözetim ve kontrol implantı için bu ödünleşmeyi yapmak kolaydır.

Tarihçesi

Aile hızla durumu tırmandırdı. İşaretlenen sürümler için bilet oluşturma zaman damgaları, gözlemlenen tüm süreci yaklaşık on üç buçuk saat içinde tamamlıyor ve tarayıcının kendi kanıt sayısı da kodla birlikte arttı; ilk sürümdeki birkaç işaretlenmiş noktadan en son sürümdeki on dörde yükseldi.

Sürümüİlk görüldüğü tarih (UTC)not
0.1.02026-07-21 12:59İlk yükleme; minimum düzeyde işaretlenmiş yüzey
0.5.02026-07-21 18:01Yetenekler genişliyor
0.2.02026-07-21 18:03(Sürüm numaralandırması yükleme sırasına göre monotonik değildir)
0.6.02026-07-22 00:44Daha geniş modül seti
0.7.02026-07-22 01:58Neredeyse eksiksiz araç seti
0.7.12026-07-22 02:28En yeni; 35 modül, tam kapasite

Sürüm numaraları kesin bir sırayla yayınlanmadı, ancak yön açık: küçük bir ilk sürüm, ardından tam özellikli 0.7.1'e doğru hızlı bir yineleme. Bu, tek seferlik bir yayın değil, aktif olarak geliştirilen ve büyüdükçe halka açık bir kayıt defterine itilen bir projenin şeklidir.

Uzlaşma Göstergeleri

Aşağıdaki tüm göstergeler, disk üzerindeki paket içeriği ve 0.7.1 sürümünün deterministik gösterge taramasıyla doğrulanmıştır; hiçbiri spekülatif değildir.

MenşeiGösterge
Paket (PyPI)gcli-control0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1 sürümleri
İthalat paketigcli
C2 rölesinpoint[.]io (JSON-bin gizli bırakma; şifrelenmiş yükler)
Belirtilen depogithub[.]com/gcli-control/gcli
Davranışsal parmak iziAynı yerde bulunan gözetim modülleri: keylog, webcam, audio, clipboard, browserAyrıca, kalıcılık, asansör ve istemci/ana bilgisayar/protokol komut katmanını tek bir pakette sunuyor.
kurmak hooksYok: Bu özellik, kurulum sırasında değil, araç çalışma zamanında çalışır.

Savunmacı notu: En güçlü ve kalıcı sinyal, etki alanı (bir röle sunucusu önemsiz bir şekilde döner) değil, ... şekil: Üç veya daha fazla farklı sunucu gözetim temel öğesini bir araya getiren tek bir paket hem de Herkese açık bir içerik barındırma hizmeti üzerinden komut/yanıt döngüsünü yönlendirir. Engelleme npoint[.]io Doğrudan uyarı vermek çoğu işletme için pratik değildir; hem giriş aygıtlarını yakalayan hem de bir JSON-bin servisiyle iletişim kuran beklenmedik bir işlem hakkında uyarı vermek çok daha sağlam bir çözümdür.

Gözlemlenen davranış ve çerçeveleme

Bu örneği alışılmadık kılan iki şey var ve bunların ikisi de güdüye dair çıkarımlardan ziyade gözlemlenebilir gerçeklerdir.

Kendini tanıttı. PyPI'da dağıtılan paket özeti, yetenekleri açık bir dille sıralıyordu: uzaktan erişim, masaüstü kontrolü, kullanıcı yönetimi, web kamerası, ses, keylogger, kalıcılık, tarayıcı verileri, WiFi, kayıt defteri, "140'tan fazla komut". Kodun, halka açık kayıt defterlerinde daha sık gördüğümüz gibi, bir derleme yardımcısı, bir CLI sarmalayıcısı veya bir yapay zeka ajanı yardımcı programı olarak sunulmasına yönelik bir girişim yoktu. Bu açıklığın, erişim kontrolleri olmadan yayınlanan bir kırmızı ekip aracı mı yoksa başka bir şey mi olduğunu, paket içeriği tek başına çözemez; kesin olan şey, çalışan, genel amaçlı bir uzaktan erişim ve gözetim araç setinin herkes tarafından kurulabilir olmasıdır. bip.

Bu, iyi niyetli bir hizmete duyulan güvene dayanıyordu. kullanma npoint[.]io Aktarım, belirleyici teknik olduğu için, daha geniş bir modelin örneğidir: C2'yi meşru bir SaaS (yapıştırma siteleri, JSON kutuları, web sohbeti) üzerinden yönlendirmek.hooks(Bulut dokümanları gibi) kötü amaçlı trafiğin normal geliştirici faaliyetleriyle karışması ve ele geçirilebilecek operatöre ait bir uç noktanın olmaması sağlanır. Röledeki yükler şifrelenmişti, bu nedenle bin içeriği sıradan bir gözlemci için komut olarak okunmazdı.

Yayıncının verdiği sinyaller yetersiz ve genel nitelikte. Paket şu beyanı içeriyordu: Yazar “gcli contributors” ve MIT lisansına sahip olan bu proje, ana sayfası ve depo alanlarını şu şekilde işaret etti: github[.]com/gcli-control/gcliBunların hiçbiri doğrulama değildir: yazar dizesi serbest metindir, MIT lisans başlığı hiçbir maliyet gerektirmez ve paket meta verilerindeki depo URL'si bir iddiadır, kaynak kanıtı değildir. Desen – yepyeni bir isim, genel bir kolektif yazar ve paket etrafında oluşturulmuş kendi kendine referans veren bir org/repo – uzaktan kumanda özelliği kazanmış yerleşik bir araçtan ziyade, özellikle kodu taşımak için kurulmuş bir projenin nasıl göründüğünü gösterir. Bunları gözlemler olarak belirtiyoruz; bunlar amaca yönelik bir dağıtımla tutarlıdır, ancak kendi başlarına bunu kanıtlamazlar.

Bu yazılımın kötü amaçlı olduğunu, yetenek ve dağıtım şekline dayanarak açıklıyoruz: gizli bir röle aracılığıyla herkese açık bir paket dizininde dağıtılan, eksiksiz ve çalıştırılabilir bir uzaktan erişim ve gözetleme yazılımı. Hedef veya güdü belirtmiyoruz.

Etki, trendler ve savunmacıların yapabilecekleri

Kamuflaj odaklı triyajda kör nokta. Paketlerin otomatik olarak sınıflandırılmasının büyük bir kısmı şu anahtarlara dayanmaktadır: gizlemek sinyalleri tipik kayıt defteri kötü amaçlı yazılımı — gizlenmiş veri blokları, kurulum zamanı hooksKimlik bilgilerini ele geçiren tek satırlık mesajlar. Basit bir paket. açıkça bir RATTemiz, okunabilir kod yapısı ve kurulum kancası olmaması sayesinde, bu ipuçlarının hiçbirini göstermez ve gizlemeyi bekleyen sezgisel yöntemlerden sıyrılabilir. Bu sınıfı güvenilir bir şekilde yakalayan sinyaller, kılık değiştirmeye dayalı olmaktan ziyade yapısal niteliktedir: bir yetenek sayımı (bir pakette kaç farklı ana bilgisayar gözetim ilkelinin birlikte var olduğu) ve C2 şekli analizi (genel amaçlı bir içerik barındırma hizmeti üzerinden yönlendirilen bir komut/yanıt döngüsü). Bu kontroller, ne kadar dürüst veya Karartılmış Ambalajı öyle.

SaaS'ın C2 olarak kullanılması trendi. Yasal bir hosting hizmetini gizli veri aktarım noktası olarak kötüye kullanmak yeni bir şey değil, ancak bu yöntem işe yaramaya devam ediyor çünkü hizmeti engellemenin savunma maliyeti yüksek ve hizmet değiştirmenin saldırı maliyeti neredeyse sıfır. Bunun daha fazlasını bekleyin. Belirli kötü amaçlı alan adlarına yönelik ağ savunmaları anında geçerliliğini yitirir; davranışsal kurallar ("bu işlem panoyu ve web kamerasını okur ve ardından bir not barındırma API'siyle iletişim kurar") ise geçerliliğini yitirmez.

Somut bir tespit krokisi. Kalıcı kural isim vermez. npoint[.]io Hiç de değil. Bu, normal bir geliştirici veya CI sunucusunda ayrı ayrı yaygın olan ancak birlikte nadir görülen iki gözlemi birleştiriyor:

Tek bir oturum içindeki tek bir işlemde aşağıdaki iki durum gerçekleştiğinde uyarı verilir:
(A) bir ana bilgisayar gözetim ilkel öğesine erişir — giriş aygıtı (klavye/fare kancası), kamera, mikrofon, ekran yakalama, pano okuma döngüsü veya bir tarayıcı kimlik bilgisi deposu ("Login Veri" / "Yerel Durum" / DPAPI); VE
(B) (B)'deki belirli hizmetten bağımsız olarak, halka açık içerik barındırma / yapıştırma / JSON-bin / sohbet-webhook hizmetine giden istekler gönderir ve ardından incelemeye sunar.

İki tarafın hiçbiri tek başına şüpheli değil: birçok meşru araç ekran görüntüsü alıyor ve birçok araç da bir API'ye JSON gönderiyor. Kısa ömürlü bir süreç içindeki bağlantı sinyaldir ve herhangi bir aktarım döngüsünden sağ çıkar.

Takımlar için pratik adımlar:

  • Geliştirici ve CI sunucularındaki herkese açık paket kurulumlarını bir kolaylık olarak değil, bir yürütme sınırı olarak ele alın; bir derleme aracısında bulunan bir RAT, gizli bilgilerinize erişebilen bir RAT'tır.
  • İzin verilenler listesindeki dahili aynaları tercih edin; uzaktan kontrol için adlandırılmış ve bir keylogger'ı tanımlayan bir paket asla kurumsal bir dizinde çözümlenmemelidir.
  • Uyarı kombinasyon — tek başına zararsız kullanımları olan herhangi bir temel bileşen yerine, giriş aygıtı veya ekran yakalama artı içerik/yapıştırma/JSON-bin hizmetine giden giden trafik.
  • Geniş kapsamlı sunucu erişim yeteneğine sahip paketler için otomatik "güvenli" puanına nihai karar olarak güvenmeyin; bunları insan incelemesine yönlendirin.

Paket ailesi kötü amaçlı olarak sınıflandırılmış ve kayıt defterinden kaldırılması için yönlendirilmiştir. Röle tabanlı bir C2, operatöre ait hiçbir sunucunun zarar görmesine izin vermediğinden, kalıcı savunma değeri herhangi bir tek kara liste girdisinde değil, yukarıdaki davranışsal parmak izindedir.

sca-tools-software-composition-analysis-tools
Yazılım risklerinizi önceliklendirin, giderin ve güvence altına alın.
Ücretsiz hesabınızı alın.
Hiçbir kredi kartı gerekmektedir.

Yazılım Geliştirme ve Teslimatınızı Güvence Altına Alın

Xygeni Ürün Paketi ile