Bu sayfa bir çeviridir. Esas alınan metin İngilizce sürümdür. İngilizcesini okuyun

threat-actor · litellm · agentic-ai · credential-theft · china-nexus

keyHunter: Kendi Araç Setini Sızdıran Bir LLM-Proxy Anahtar Operasyonu

Çince konuşan bir operatör, açıkta kalmış AI proxy panellerini bulmak için FOFA'yı tarıyor, bunları honeypot'ları tanımak üzere yazılmış birim testli kodla doğruluyor ve API anahtarlarını dışa aktarıyor. Operatörün ajanı, kendi makinesinden 283 dosya yolunu, tarama verimlerini, WeChat sohbet kaydını ve altı adet 2026 CVE'sine göre adlandırılmış exploit dosyalarından oluşan bir sonuç dizinini honeypot'larımızdan birine gönderdi; bunların arasında bir New-API Stripe-webhook atlatması da var.

Yazan Davis Zheng·

CWE
CWE-306

TLP:CLEAR. Kamuya açık yayım için onaylanmıştır. Aşağıdakilerin neredeyse tamamı, operatörün ajanının honeypot’larımızdan birine gönderdiği çıktıdan elde edilen, operatörün kendi materyalidir. Göstergeler etkisizleştirilmiştir; bu, saldırgan adreslerinin yanlışlıkla tıklanamayacak veya çözümlenemeyecek biçimde yazıldığı anlamına gelir. Tarama hedefleri, operatörün işaretlediği bir üçüncü taraf sunucusu ve FOFA API anahtarlarının tamamı yayımlanmamıştır.

Yönetici özeti

  • 27,173FOFA ile taranan aday sunucu
  • 194model listeleyen sunucu
  • 17dışa aktarılan API anahtarı
  • 6dosya adına göre 2026 CVE'si

Çince konuşan bir operatör, tek bir hedef için sekiz ülkede 27,173 sunucuyu taradı: arkasında canlı anahtarlar bulunan, açıkta kalmış AI proxy panelleri. AI proxy paneli, ekiplerin tek bir sağlayıcı anahtar setini paylaşabilmek için uygulamaları ile ücretli model sağlayıcıları arasına koyduğu yazılımdır; LiteLLM, One-API ve onun çatallaması New-API, Sub2API ve Chat2API bunlara örnektir. Bunlardan birini parolasız biçimde internette bırakırsanız, arkasındaki her şey yabancılar tarafından harcanabilir hale gelir. Operatör bunları, internet genelinde sürekli tarama üzerine kurulu bir arama motoru ve Shodan’ın Çin’deki karşılığı olan FOFA aracılığıyla buluyor, hangi panellerin hâlâ yanıt verdiğini denetliyor ve anahtarları dışa aktarıyor.

Bu sayılar operatörün kendi sayılarıdır; bizim tahminimiz değil, sonuç dosyalarından alınmıştır. Bu 27,173 sunucudan 194’ü bir model listeledi ve 17 anahtar dışa aktarım dosyasına ulaştı. Amerika Birleşik Devletleri koşusu en net tekil örnektir: girişte 10,447 hedef, çıkışta 64 model listelemesi, %0.61’lik bir isabet oranı ve nedenini kendi ajanları söyleyebiliyordu. Herkese açık biçimde maruz kalmış, gerçekten çağrılabilir LiteLLM örnekleri nadirdir ve tarayıcılarındaki bir URL oluşturma hatası, canlı sunucuları ölü olarak işaretliyordu.

Temel değerlendirmeler
  • Bu, yalnızca Çin altyapısı üzerinde yürüyen, Çin merkezli ve Çince yürütülen bir operasyondur. Elde edilen her dosya zaman damgası +0800, baştan sona çalışma dili Çince ve üç sunucu Alibaba Cloud, Tencent Cloud ve bir Huawei Cloud tarama sanal makinesi. Yüksek güven.
  • Araç seti piyasa malı değil; özel yazılmış ve birim testlidir. litellm_verifier.py üç test dosyasıyla birlikte geliyor, yedekler dizininde SHA256SUMS bulunuyor ve çalışma numaralandırılmış turlar halinde düzenlenmiş. Bu mühendislik disiplini, kimlik bilgisi taramacılığında alışılmadıktır. Yüksek güven; operatörün kendi dosya listelerinden alınmıştır.
  • Aldatmaya karşı önlemleri araçlarına gömüyorlar ve bu işe yarıyor. Doğrulayıcıları bir /v1/models listelemesini başarı olarak saymayı reddediyor, model başına gerçek bir sohbet tamamlaması istiyor, yanıtın iddia edilen sağlayıcıyla örtüşüp örtüşmediğini puanlıyor ve bir koşuda test edilen 41 model kaydından 20'sini honeypot_or_unusable olarak sınıflandırdı. Yüksek güven.
  • Exploit seti tümüyle n-day'dir. Sonuç dosyası adları, LiteLLM, Sub2API ve New-API'yi hedefleyen altı adet 2026 güvenlik bildirimine karşılık geliyor; bunlardan biri CISA Known Exploited Vulnerabilities listesinde. Özgün zafiyet araştırmasına işaret eden hiçbir şey yok. Ürünler ve teknikler konusunda yüksek güven; altısından dördü için belirli CVE konusunda orta düzey güven, zira bunlar gözlemlenmiş değil, dosya adlarından çıkarsanmıştır.
  • Yarışma çerçevesi, sonuç diziniyle karşılaşınca ayakta kalmıyor. Ajanlarına kapsamın yalnızca varsayılan kimlik bilgileri olduğunu söylüyorlar, ancak dizindeki dosya adları uzaktan kod çalıştırma, SQL enjeksiyonu, şablon enjeksiyonu, sunucu taraflı istek sahteciliği, token sızıntısı, kota taşması ve bir Stripe-webhook atlatmasını adlandırıyor. Elimizde dosya içerikleri değil, dosya listesi var; dolayısıyla niyet açık uçlu kalıyor, ancak her iki okumada da operatör bu araç setini geliştirip çalıştırmıştır. Artefaktlar konusunda yüksek güven; niyete dair hangi okumanın doğru olduğu konusunda orta düzey güven.

İsim üzerine

Bunu, operatörün kendi proje dizini olan /root/keyHunter-skill/ adından hareketle keyHunter olarak izliyoruz.

Kullandıkları ajan çatısının adı Hermes’tir ve Hermes, Nous Research’ün gerçek bir açık kaynak projesidir. Aktöre bu adı vermek, meşru bir aracı birisinin onunla yaptığı şeyden ötürü suçlamak olurdu; bu nedenle böyle yapmıyoruz. Aynısı, makinedeki ikinci ajan çatısı olan OpenClaw için de geçerli. Her ikisi de operatörün kurup başkalarının altyapısına yönelttiği sıradan yazılımlardır.

Operatör

Operatör, tamamı Çin bulutlarında bulunan üç sunucu üzerinden çalışıyor ve iş bunlar arasında bölüştürülmüş durumda. Alibaba Cloud (AS37963) üzerindeki 39.98.82[.]200, ajan ağ geçidini çalıştırıyor ve gördüğümüz keşif faaliyetinin çoğunu yürüttü. Tencent Cloud (AS45090) üzerindeki 101.43.41[.]72 bir röledir; 8087 portunda, ajanın model kapasitesi için çağırdığı OpenAI uyumlu bir uç nokta sunuyor. Her ikisi de, bir istemcinin HTTP isteklerini nasıl kurduğunu tanımlayan ve adres değişikliğinden etkilenmeyen po11nn070000_ebbca96fac43 JA4H parmak izini, bunun yanında özel üretilmiş Hermes-Agent/0.18.0 ve Hermes-Panel/1.0 kullanıcı aracılarını ve tek bir ortak sohbet oturumu tanımlayıcısını paylaşıyor. Bir arada ele alındığında bunlar, her iki düğümü de tek bir operatörün altına yerleştiriyor. Bu parmak izi tek bir yakalamaya dayanan bir artefakt değil: 16-20 Ağustos aktivitesi boyunca, aynı FOFA tabanlı taramada tekrar ediyor.

Tarama ise yine başka bir yerde gerçekleşiyor. Alibaba sunucusundan, yerel bir yönlendirme üzerinden bir Huawei Cloud sanal makinesine erişiyorlar:

ssh -o ServerAliveInterval=20 -i /root/.ssh/hw_vm_key -p 8888 developer@127.0.0.1 \
    'cd /home/developer && /home/developer/.venv-us30/bin/python litellm_scan_us_30d_optimized.py'

Bu makine dört gün dokuz saattir çalışır durumdaydı, 7.5 GB RAM ve dört çekirdeğe sahip ve tarama işçilerini çalıştırıyor. Gürültülü taramayı ajan ön yüzünden ayırmak bilinçli bir tercih ve hw_vm_key adı, operatörün burayı Huawei makinesi olarak düşündüğünü gösteriyor.

Kontrol WeChat üzerinden yürüyor. Ağ geçidi servisi kendisini “Hermes Agent Gateway, Messaging Platform Integration” olarak tanımlıyor ve operatör, ajana bir WeChat konuşmasında sohbet ederek görev veriyor. Ajanın uzun vadeli hafızası bu konuşmadır: üzerinde çalıştığı şeyi hatırlamak için kendi sohbet geçmişinde arama yapıyor. İkinci çatı da aynı örüntüyü gösteriyor; openclaw-weixin adlı bir oturumla. Tüketiciye yönelik bir mesajlaşma uygulaması ucuz bir kontrol kanalı sağlıyor: trafik varsayılan olarak şifreli ve diğer tüm WeChat kullanıcılarıyla birlikte Tencent’e akıyor, dolayısıyla komuta-kontrol sinyallemesi için ayarlanmış hiçbir tespiti tetiklemiyor.

Bütün bunların ardındaki akıl yürütme motoru, bir röle üzerinden erişilen ticari bir kodlama asistanı olan github_copilot/gpt-5.6-sol. Yapılandırmaları ayrıca birkaç başka sağlayıcı için isteğe bağlı anahtarları da içeriyor. Saldırı kodu özel yazılmış Python; akıl yürütme modeli, ajan çatısı ve altındaki WeChat kontrol kanalı ise tamamen hazır tüketici ürünleri.

Boru hattı

Ana becerileri tüm operasyonu tek satırda anlatıyor: “FOFA + keyHunter + özel doğrulama betikleri kullanarak herkese açık biçimde maruz kalmış AI API proxy panellerini (LiteLLM, Sub2API, New-API, One-API) keşfet, tara, doğrula ve arşivle.”

FOFA search, per country
  -> dedupe and normalise targets
  -> light HTTP fingerprint
  -> /v1/models listing
  -> real chat completion per model
  -> honeypot classification
  -> weak-credential panel login, key extraction
  -> export keys and accounts, archive

Keşif, ülke başına tekrarlanan tek bir FOFA sorgusudur:

(title="LiteLLM" || body="LiteLLM") && country="{cc}" && org!="AMAZON-AES"

Önemli olan yan tümce, AWS dışlamasıdır. Operatör, tek bir sunucuya bakmadan önce Amazon’u her taramadan çıkarıyor. Shodan ve Censys aralıklarını kendi sınırınızda engellemek, başkasının tarama verisi üzerine kurulu bir boru hattına karşı hiçbir şey kazandırmaz.

Ülke başına ayrı betikler tutuyorlar: Amerika Birleşik Devletleri için litellm_scan_hw.py, litellm_scan_gb_hw.py, litellm_scan_it_hw.py, kendi sanal ortamına sahip bir litellm_scan_us_30d_optimized.py ve keyHunter-skill/ altında Avustralya, Brezilya, Kanada, Fransa, Hindistan, Hollanda ve Singapur’u kapsayan bir dizi daha. On dört ülke için sonuç dosyası mevcut. Eşzamanlılık 48 hafif işçi ve 12 derin işçi; FOFA’nın 429 yanıtları için hız sınırı geri çekilmesi ve protokol, sunucu ve port üzerinden anahtarlanan uç nokta tekilleştirmesi var.

FOFA API anahtarı tarayıcı kaynağına gömülü; elimizde olmasının nedeni bu. Tarayıcı, hamal.cc[.]cd adresindeki resmi olmayan bir FOFA aynasına karşı çalışıyor ve yerel bir Squid proxy üzerinden dışarı çıkıyor.

Bir tarama gerçekte ne döndürüyor

ÜlkeFOFA hedefleriListelenen modellerİsabet oranı
Amerika Birleşik Devletleri10,44764%0.61
Çin6,32983%1.31
Güney Kore1,77210%0.56
Birleşik Krallık1,42218%1.27
İtalya1,1309%0.80
Avustralya, Hindistan, Brezilya6,07310, bunların 4’ü doğrulandı%0.16

Yakalanan bir koşu: FOFA’dan 2,255 ham satır, tekilleştirme sonrası 1,130 benzersiz uç nokta, model listeleyen 9 site, doğrulanan 8 site ve istek düzeyinde 8 başarısızlığa karşı 41 model başarısı.

Topladıkları FOFA başlık sayımı, maruz kalmış popülasyonun neye benzediğini gösteriyor. LiteLLM API - Swagger UI 7,630 sonuç döndürüyor. OmniRoute 171, SillyTavern 170, LiteLLM Dashboard 156, Claude Code Hub 131, Aivar AI Gateway 11 sonuç veriyor. Yüzeyin büyük bölümü tek bir üründen oluşuyor ve bu ürünün maruz kalmış örneklerinin çoğu otomatik üretilen API dokümantasyon sayfası.

Sürecin ucundaki verimi mutlak anlamda düşük olarak değerlendiriyoruz. litellm_extracted_keys.json, 23 model genelinde 43 örnek ve 3 çıkarılmış anahtar kaydediyor. exported_keys.json ise 17 anahtar tutuyor. On yedi anahtar için on binlerce sunucu taranmış; bu ya harcanan emeğin zayıf bir karşılığıdır ya da işi bir ajan yaptığı için emeğin ucuz olduğu yolunda bir argümandır.

Aldatmaya karşı önlem: honeypot avlıyorlar

Mühendislik en net biçimde tek bir dosyada görünüyor: litellm_verifier.py.

On kilobayt boyutunda ve bir birim test paketi var. Bir panelin duyurduğu her modele gerçek ve asgari bir sohbet tamamlaması gönderiyor ve yalnızca geçerli, OpenAI biçimindeki bir choices/message/content yanıtı ya da bitiş işaretçisi taşıyan meşru bir akış yanıtı geldiğinde başarı kaydediyor. Kendi kuralları, kendi sözleriyle: çıplak bir /models başarısı asla sayılmaz. Test adları bunu kodluyor; aralarında test_models_listing_alone_is_not_success adlı biri de var. Birisi, kendi araçlarının çalınmış bir anahtar hakkında kendisine yalan söylemesini engellemek için bir regresyon testi yazmış.

Tek bir koşudan hüküm sayıları:

verdict_counts: honeypot_or_unusable 20 · trusted_pass 5 · unavailable 16
formatted_false_success_model_hits 29
non_chinese_evidence_count 13
total_questions 205

formatted_false_success, hazır kalıp ya da yankılanmış bir yanıttır; naif bir tuzağın verdiği yanıt böyledir. non_chinese_evidence, bir modelin iddia ettiği sağlayıcı gibi davranıp davranmadığını puanlar. Ayrıca beş soruluk bir sorgulama olan 蜜罐五题测试 uyguluyorlar ve yakalanan zaman diliminde bunu, bir AWS Londra aralığındaki bir sunucuyu honeypot olarak işaretlemek için kullandılar. Bu adresi yayımlamıyoruz, çünkü başkasının sensörü ve adını vermek onu yakar.

Çalınmış çıkarım satın alan biri artık uç noktanın bir tuzak olabileceğini varsayıyor ve bunu sınıyor. Onları yakalayan karşı denetim aynı testi tersine çevirerek işler: API parametresine rağmen ağ geçidinizden gerçekte hangi modeli çalıştırdığını kanıtlamasını isteyen her istemci, mal doğrulaması yapıyordur.

Exploit cephaneliği: tümüyle n-day

Sömürü sonuç dosyalarının içerikleri bize hiç ulaşmadı. Dosya adları ulaştı ve hedefleri kamuya açık güvenlik bildirimleri bulunan açık kaynak ürünler olduğundan, exploit’ler bildirimlerden yeniden üretilebilir.

Sunucularındaki sonuç dosyasıCVEZafiyetDayanak
litellm_host_header_bypass_results.json (568 KB)CVE-2026-49468Host başlığı enjeksiyonu yoluyla LiteLLM kimlik doğrulama atlatması, CVSS 9.8, 1.84.0 öncesi. Kimlik doğrulamayı yönlendirmeden ayrıştırarak kimliği doğrulanmamış /key/generate ve /user/new erişimi sağlıyorDoğrulandı: aynı yönetim düzlemi çağrıları sensörümüze ulaştı ve CVE-2026-49468-Scanner kullanıcı aracısı sunuyorlardı
litellm_sqli_apikey_results.json (517 KB), litellm_sqli_models.jsonCVE-2026-42208Kimlik doğrulama yolunda LiteLLM kimlik doğrulama öncesi SQL enjeksiyonuDoğrulandı: anahtar olarak ' OR '1'='1 ifadesini on dokuz kez gönderdiler
litellm_rce_exploit.json, litellm_mcp_rce_results.jsonCVE-2026-42271LiteLLM komut enjeksiyonu ve uzaktan kod çalıştırma, CVSS 8.7, CISA Known Exploited Vulnerabilities listesinde, 1.74.2 ile 1.83.6 arası, bir MCP enjeksiyon vektörü dahilDosya adı ve üründen çıkarsandı
sub2api_cve_exploit.json ve üç sonraki aşamaCVE-2026-27812Güvenilen Host ve Forwarded başlıkları yoluyla Sub2API parola sıfırlama zehirlenmesi, hesap ele geçirmeye yol açıyor. Vahşi doğada sömürüldü, 0.1.85 öncesiÇıkarsandı
newapi_stripe_bypass_results.json, newapi_stripe_exploited.json, newapi_quota_overflow_results.jsonCVE-2026-41432Boş bir gizli anahtar üzerinden New-API Stripe webhook imza atlatması, ödeme yapmadan sınırsız kota sağlıyor, 0.12.10 öncesiÇıkarsandı
newapi_user_token_leak_results.json, oneapi_user_token_leak_results.json, newapi_ssrf_bypass_results.jsonCVE-2026-30886Video proxy uç noktasında New-API güvensiz doğrudan nesne referansı ve kimlik doğrulama atlatması; diğer kullanıcıların içeriğini açığa çıkarıyor ve saldırganın kurbanın kimlik bilgilerini yukarı akışta harcamasına izin veriyorÇıkarsandı
litellm_ssti_prompts_results.jsontek bir bildirim yokPrompt ve şablon uç noktalarına karşı Jinja2 sunucu taraflı şablon enjeksiyonuÇıkarsandı

Hiçbir dosyanın içeriği bize ulaşmadı; her satır dosya adına dayanıyor. Bunlardan ikisinde, Host başlığı atlatması ve kimlik doğrulama SQLi’sinde, tekniğin kendi sensörümüze ulaştığını bağımsız olarak gözlemledik; bu, dosyayı değil tekniği doğrular. Diğer dördü dosya adına ve ürünün bilinen bildirimine dayanıyor ve bu şekilde işaretlenmiştir.

Altısının tamamında örüntü aynı. Her bildirim 2026 tarihli, birkaçı aynı çeyrekten ve hiçbiri özgün araştırma değil. keyHunter, açık kaynak LLM-proxy ekosisteminde yeni açıklanan yüksek önem dereceli zafiyetleri yayımlandıkları anda sanayileştiriyor. Bu, genellikle tek bir geliştirici tarafından kurulup sonra kendi haline bırakılan bir yazılım sınıfı için kısa bir pencere.

Niyet: yarışma anlatısına karşı sonuç dizini

Operatör bunu kendi ajanına bir yarışma başvurusu olarak anlatıyor. Söz dağarcığı, elde edilen sohbet boyunca tutarlı: 比赛项目 (yarışma projesi), 评委 (jüri), 答辩材料 (sözlü savunma materyalleri), bir contest-kit dizini ve 第一轮 ile 第二轮, yani birinci ve ikinci turlar halinde düzenlenmiş çalışma.

Kapsam sorulduğunda operatör, hedefin varsayılan kimlik bilgileri olduğunu açıkça belirtiyor, özgün haliyle:

llm 的主要就是那几个默认密码为主流,用自己的 sk 那种没办法抓到啊

LLM olanlarda esas olarak o birkaç varsayılan parola baskın; kendi sk-* anahtarlarını kullananları ele geçirmenin bir yolu yok.

Ajan bunu onaylıyor ve kimlik doğrulama denemelerinin üç durumla sınırlı olduğunu teyit ediyor: kimlik doğrulama yok, sk-test ve sk-1234; sonuncusu LiteLLM’in kendi hızlı başlangıç dokümantasyonunda kullandığı anahtar.

Bir de /root/keyHunter-skill/results/ var. Dizin listesi uzaktan kod çalıştırma, SQL enjeksiyonu, şablon enjeksiyonu, sunucu taraflı istek sahteciliği, Sub2API’ye karşı oturum ele geçirme, kimlik bilgisi püskürtme, kullanıcı token sızıntısı ve kota taşması için dosyalar ile Stripe-webhook atlatması için iki dosya adlandırıyor; bunlardan biri newapi_stripe_exploited.json. Elimizde adlar ve bazı dosyalar için boyutlar var; Stripe atlatma sonuçları 2.4 MB’a ulaşıyor, ancak içerikleri bize hiç ulaşmadı. Savunulabilir ifade şudur: operatör, New-API’ye karşı sınırsız kota sağlayan ödeme atlatma araçları geliştirip çalıştırmıştır ve CVE-2026-41432 tam olarak bu türden gerçek bir zafiyettir. 2.4 MB’lık kayıtların tamamlanmış hileli bakiye yüklemeleri mi yoksa yalnızca denemeler mi olduğunu göremiyoruz. Dosya adındaki _exploited, operatörün kendi nitelemesidir; kayıtları okumadık.

Her iki okumayı da açık tutuyoruz. Yarışma gerçek olabilir ve sömürü, operatörün kayıt tutan bir ajanla konuşmadığı ayrı bir iş kolu olabilir; ya da yarışma bir hırsızlık operasyonu için kılıf olabilir. Bu ayrımı savunma tarafı açısından önemsiz olarak değerlendiriyoruz: her iki okumada da yetenek ve maruz kalmış bir panel için risk aynıdır.

Operasyonel yöntem açığı: operatörün kendi ajanı araç setini denetledi

Elde edilen sohbetteki en faydalı bölüm bir kod incelemesidir. Operatör ajanına tarama isabet oranının neden bu kadar düşük olduğunu sordu ve ajan tarayıcıyı satır satır gözden geçirdi.

Ajanın yanıtı, savunma tarafının kullanabileceğine indirgenmiş haliyle: tarayıcı, çoğu zaman zaten bir protokol taşıyan FOFA host alanının başına bir protokol daha ekliyor ve https://https://<target> biçiminde URL’ler üretiyor, dolayısıyla canlı sunucular ölü olarak kaydediliyordu. İş parçacığı havuzu sonuçları tamamlandıkça değil, oluşturulma sırasına göre topluyor; dolayısıyla yavaş bir istek arkasındaki her şeyi tıkıyor. Dört çekirdekli bir makinede CONCURRENCY=200 kendi zaman aşımlarını üretiyor. IP üzerinden tekilleştirme, aynı adresteki diğer geçerli portları atıyor. temperature değerini sabitlemek, bir uyumluluk hatasını başarısızlık olarak yanlış okuyor.

Honeypot tespitleri konusunda ajan açık sözlüydü: değerlendirme esas olarak yanıtın birebir aynı mı yoksa beş karakterden kısa mı olduğuna bakıyor, bu da normal modelleri eliyor ve iyi tuzakları kaçırıyor. Ayrıca operatör Çince dışı yanıt verenleri tespit etmesini istemiş olmasına rağmen, kodda hiçbir dil tespiti mantığı yoktu.

Güvenlik hijyenlerini de işaretledi: betiğe gömülü FOFA anahtarı, gerçek kullanıcı /home/developer iken /root için yazılmış mutlak yollar, her hata nedenini yutan except: pass, ülke başına ayrı bir betik kopyası ve hedefleri ile kimlik doğrulama yöntemlerini erişim denetimi veya maskeleme olmadan tutan sonuç dosyaları.

Bu son nokta huniyi yeniden çerçeveliyor. %0.61’lik Amerika Birleşik Devletleri isabet oranı, maruziyeti bilinen hataları olan bir tarayıcı üzerinden ölçüyor; dolayısıyla gerçekte maruz kalmış LiteLLM oranı, operatörün kendi sonuçlarının gösterdiğinden daha yüksek seyrediyor. Artık bu hataları düzeltmeye devam edecek bir ajanları var.

Paraya çevirme altyapısı

Aynı sunucu, kendilerine ait bir New-API örneği çalıştırıyor: Docker içinde calciumion/new-api:latest, 8901 portunda yayımlanmış ve verileri tarama sonuçlarının yanına bind-mount edilmiş. Çevresinde newapi_watchdog.py, bir kanal yedek dosyası ve her şeyin paketlenmiş bir kopyası duruyor.

New-API bir toplama panelidir. Bir yığın yukarı akış sağlayıcı anahtarını alıp bunları kendi kullanıcı hesapları ve kotaları olan tek bir API olarak sunar. Bunu bir anahtar toplama boru hattının yanına kurmanın amacı açıktır: toplanan anahtarlar panelde kanala dönüşür ve panel de satabileceğiniz bir erişime dönüşür. Yeniden satış gözlemlemedik ve bunu iddia etmiyoruz; bunun altyapısı kurulu ve çalışır durumda.

sub2api ve new-api şablonları üzerine kurulmuş yüzlerce benzer ücretsiz yönlendirici hâlihazırda dolaşımda ve keyHunter bu ekosistem içindeki operasyonlardan biri.

Küme ilişkileri

İstemci parmak izi, bu iki sunucuyu aynı yüzey üzerinde çalışan gevşek bir başka sunucu kümesine bağlıyor: CVE taramaları ve anahtar üretimi yapan bir Tayvan sunucusu, aynı SQL enjeksiyonunu gönderen bir Hong Kong sunucusu ve bir adım daha uzakta, tek günlük etkinlik patlamaları altı gün arayla 15 ve 21 Ağustos’a denk gelen bir LLM panel avcısı ile bir Ray kontrol paneli sömürücüsü. Örtüşmeler yer yer jenerik istemci yığınları üzerinde gerçekleşiyor; dolayısıyla bu, tek bir klavyedeki tek bir el yerine paylaşılan araçlar ve paylaşılan bir çevre olarak okunuyor. Bunu, LLM-proxy avı araçlarını paylaşan Çin bağlantılı bir topluluk olarak ele alın. Hiçbir gösterge bunu adı konmuş bir APT’ye bağlamıyor, bu yüzden bir faaliyet kümesi olarak izliyoruz.

İhlal göstergeleri

Ağ ve altyapı, etkisizleştirilmiş biçimde:

GöstergeRol
39.98.82[.]200Ajan ağ geçidi, keşif, SQL enjeksiyonu (Alibaba Cloud, AS37963, CN)
101.43.41[.]728087 portunda röle uç noktası, devredilmiş alt ajan işçisi (Tencent Cloud, AS45090, CN)
hamal.cc[.]cdTarayıcının sorguladığı resmi olmayan FOFA aynası
cae332848db5…Operatörün kendi FOFA API anahtarı, litellm_scan_hw.py içine gömülü. Burada kısaltılmıştır; tam değer yayımlanmak yerine FOFA’ya bildirilmek üzere saklanmıştır

İstemci parmak izleri ve kullanıcı aracıları:

po11nn070000_ebbca96fac43_00000000   shared across both nodes
Hermes-Agent/0.18.0
Hermes-Panel/1.0
Mozilla/5.0 (CVE-2026-49468-Scanner)

Sunucu artefaktları. Bunlar operatörün makinelerindeki yollardır; benzer bir sunucu ya da ikinci bir kurulum avında işe yarar:

/home/developer/litellm_verifier.py           real-chat verifier and honeypot classifier
/home/developer/test_litellm_verifier.py      unit tests
/home/developer/litellm_endpoint.py           endpoint normalise and dedupe
/home/developer/litellm_scan_hw.py            FOFA scanner, US, AWS excluded
/home/developer/litellm_scan_gb_hw.py
/home/developer/litellm_scan_it_hw.py
/home/developer/litellm_scan_us_30d_optimized.py
/home/developer/contest-kit/keyHunter-skill/
/home/developer/backups/litellm_verifier_round2_<ts>/SHA256SUMS
/root/keyHunter-skill/results/
/root/keyHunter-skill/{honeypot_test.py, verify_country_models.py, add_to_panel.py, report.py}
/root/.ssh/hw_vm_key                          key to the scanning VM, developer@127.0.0.1:8888
/opt/hermes-simple-panel/app.py               config panel, port 9120
/root/new-api.tar.gz, /root/newapi_watchdog.py

Beceri ve proje adları; tek bir dize üzerinden yapılabilecek en güçlü pivotlar bunlardır:

keyhunter / keyHunter
contest-kit
ai-proxy-panel-audit
fofa-panel-recon
delegation-orchestration

Davranışsal:

FOFA:  (title="LiteLLM" || body="LiteLLM") && country="XX" && org!="AMAZON-AES"
auth:  no credential, then sk-test, then sk-1234
SQLi:  ' OR '1'='1  in the API key field
verify: a real chat completion per advertised model; a /models listing alone is rejected
verdict strings: honeypot_or_unusable, trusted_pass, unavailable,
                 formatted_false_success, non_chinese_evidence
services on actor infra: new-api :8901, config panel :9120, agent gateway

Tespit

İnternetten erişilebilen bir LLM proxy işletiyorsanız, dizinin tamamı ağ geçidinin kendi günlüklerinde görünür. Çoğu SIEM platformunun içe aktarabildiği, üreticiden bağımsız kural biçimi olan Sigma ile:

title: AI proxy panel enumeration consistent with keyHunter
id: 2c6f9a41-8e07-4b53-9f1a-7d0c4b62ae35
status: experimental
description: >
  The keyHunter discovery and verification sequence against an exposed LLM
  proxy: an unauthenticated model listing followed by per-model chat
  completions from the same source, or one of the cluster's user agents.
references:
  - https://kinryu.sh/reports/keyhunter-llm-proxy-key-harvesting/
logsource:
  category: webserver
detection:
  model_listing:
    cs-uri-stem|endswith:
      - '/v1/models'
      - '/models'
  admin_paths:
    cs-uri-stem|startswith:
      - '/key/'
      - '/user/'
      - '/organization/'
  cluster_agents:
    c-useragent|contains:
      - 'Hermes-Agent'
      - 'Hermes-Panel'
      - 'CVE-2026-49468-Scanner'
  admin_allowlist:
    c-ip|cidr: '10.0.0.0/8'          # replace with your own admin range
  condition: (((model_listing or admin_paths) and not admin_allowlist) or cluster_agents)
falsepositives:
  - Client libraries that legitimately call /v1/models on startup from allow-listed ranges
level: high

Bir web erişim günlüğü Authorization başlığını kaydetmez; dolayısıyla varsayılan kimlik bilgisi ve enjeksiyon denemelerinin proxy’nin kendi istek günlüklemesinde yakalanması gerekir: birebir sk-1234 ve sk-test, eksik kimlik bilgisi ve anahtar alanında ' OR '1'='1.

Kural motoru gerektirmeyen üç davranışsal av:

  • Modellerinizi listeleyen ve ardından her birine sırayla tam olarak bir kısa sohbet tamamlaması gönderen tek bir kaynak arayın. Bu doğrulama taraması operasyonun imzasıdır ve gizlenmesi zordur.
  • Modelden, API parametresine rağmen gerçek kimliğini belirtmesini isteyen prompt’lar için uyarı üretin; bu, bir alıcının çalınmış erişime güvenmeden önce yaptığı denetimdir.
  • Panelinizin kanal listesini ve kullanıcı tablosunu düzenli aralıklarla karşılaştırın. Anahtar çıkarımı ve hesap dışa aktarımı paneli normal çalışır durumda bırakır, dolayısıyla size başka hiçbir şey haber vermez.

Ne yapmalı

İnternete açık her LLM proxy’sini, açıldığı andan itibaren ele geçirilmiş kabul edin. keyHunter bir ülkeyi bir günde tarıyor ve yayımlanmış CVE’leri açıklanmalarından sonraki haftalar içinde işliyor.

  • LiteLLM, One-API, New-API, Sub2API ve benzeri her şeyi kimlik doğrulaması yapan bir ters proxy’nin arkasına ya da özel bir ağa alın. Hiçbiri internete açılmak için savunulabilir bir varsayılan yapılandırmayla gelmiyor.
  • Güncel sürüme yama yapın. Yukarıdaki altı bildirimden LiteLLM RCE’si CISA Known Exploited Vulnerabilities listesinde yer alıyor ve Sub2API hesap ele geçirmesinin vahşi doğada sömürüldüğü doğrulanmış durumda.
  • Ana anahtarı değiştirin. sk-1234, LiteLLM’in kendi hızlı başlangıç belgesindeki değerdir ve bu operatörün denemeye zahmet ettiği yalnızca üç kimlik bilgisinden biridir.
  • /openapi.json ve /docs erişimini kısıtlayın. Anonim bir istemci yönetimsel API yüzeyinizi indirebiliyor olmamalı.
  • Her sanal anahtara bütçe üst sınırı koyun ve kapsamını daraltın, böylece çıkarılan anahtar yeniden satmaya değmeyen bir şey olsun.
  • New-API üzerinden Stripe ödemesi alıyorsanız, webhook imzalama gizli anahtarının gerçekten ayarlanmış olduğunu doğrulayın. CVE-2026-41432’nin tamamı boş bir gizli anahtardan ibarettir.
  • Hiçbir zaman açıkta kalmadığını kanıtlayamadığınız bir panelde bulunmuş her yukarı akış sağlayıcı anahtarını döndürün.

MITRE ATT&CK eşlemesi

TaktikTeknik
KeşifT1596.005 Search Open Technical Databases: Scan Databases (FOFA, ülke başına, AWS hariç); T1595.002 Active Scanning: Vulnerability Scanning (hafif ve derin HTTP yoklaması)
Kaynak GeliştirmeT1583.003 Acquire Infrastructure: Virtual Private Server (Alibaba, Tencent, Huawei); T1588.002 Obtain Capabilities: Tool (Hermes Agent, OpenClaw, bir FOFA aboneliği, akıl yürütme motoru olarak github_copilot/gpt-5.6-sol)
İlk ErişimT1190 Exploit Public-Facing Application (LiteLLM, Sub2API ve New-API’ye karşı Host başlığı kimlik doğrulama atlatması, kimlik doğrulama öncesi SQL enjeksiyonu, komut enjeksiyonu, SSTI, SSRF)
Savunmadan KaçınmaT1480 Execution Guardrails (honeypot sınıflandırması, non_chinese_evidence puanlaması, org!="AMAZON-AES" filtrelemesi)
Kimlik Bilgisi ErişimiT1078.001 Valid Accounts: Default Accounts (kimlik bilgisi yok, sk-test, sk-1234); T1552.001 Unsecured Credentials: Credentials In Files (exported_keys.json dosyasına anahtar çıkarımı)
KeşfetmeT1518 Software Discovery (model listeleme ve model başına doğrulama); T1087 Account Discovery (yönetim düzlemine karşı kullanıcı numaralandırma)
ToplamaT1213 Data from Information Repositories (hesap dışa aktarımı, normalleştirme, arşivleme)
Komuta ve KontrolT1102 Web Service (görevlendirme kanalı olarak bir WeChat konuşması)
EtkiT1657 Financial Theft (Stripe webhook atlatması, kota taşması); T1496 Resource Hijacking (toplanan çıkarım için yeniden satış altyapısı)

Metodoloji ve analist notları

Yukarıdakilerin neredeyse tamamı, operatörün kendi ajanının 16-20 Ağustos 2026 arasında honeypot’larımızdan birine gönderdiği çıktıdır: 283 farklı dosya yolu, servis ve konteyner listeleri, tarama sonucu özetleri ve ajanın kendi WeChat hafızasında yaptığı aramalar.

Dolayısıyla elimizdeki, gerçek sistemlerinin, ajanlarının numaralandırdığı kadarıyla sınırlı bir alt kümesidir. Hiçbir dosyanın içeriği bize ulaşmadı; operatörün kendi dizin listelerinden gelen adlar, boyutlar ve zaman damgaları elimizde. Tarama verimleri ve hüküm sayıları operatörün kendi rakamlarıdır, kendi araçları tarafından raporlanmıştır ve bunların hiçbirini bağımsız olarak doğrulamadık. Ajanları tarayıcılarında gerçek hatalar buldu; dolayısıyla isabet oranları maruziyetin ölçümü olarak değil, alt sınırı olarak okunmalıdır.

Çince sohbet çevrilmiştir. Teknik dizeler, yollar ve tanımlayıcılar hem bu raporda hem de çeviride birebir bırakılmıştır.

Bunun desteklediklerine dair dört sınır. Atıf, baştan sona Çince kullanan, Çin merkezli altyapı üzerindeki bir faaliyet kümesinde duruyor; adı konmuş bir gruba bağlantı yok ve biz de böyle bir bağlantı önermiyoruz. Niyet, bir yarışma başvurusu ile bir hırsızlık operasyonu arasında gerçekten belirsiz. Hiçbir exploit dosyasının içeriği bize ulaşmadı, dolayısıyla altı CVE eşlemesinin tamamı dosya adlarına dayanıyor; ikisinde tekniğin sensörümüze ulaştığı bağımsız olarak gözlemlendi, bu da dosyayı değil tekniği doğrular. Çalınmış bir anahtarın sonradan harcanıp harcanmadığı bilinmiyor: operatörün çıktısı yalnızca sayıları veriyor, 3 çıkarılmış ve 17 dışa aktarılmış, izlenecek hiçbir anahtar değeri yok.

Tarayıcılarının temas ettiği üçüncü taraf adresleri, kendilerinin honeypot olarak işaretlediği ve başkasının araştırmasına ait olan sunucu da dahil olmak üzere yayımlanmamıştır. FOFA API anahtarları burada kısaltılmıştır.

Tam gösterge setleri ve altta yatan yakalamalar, talep üzerine araştırmacılara sunulmaktadır: contact@kinryu.sh.

How to cite
Kinryū Labs (2026). keyHunter: Kendi Araç Setini Sızdıran Bir LLM-Proxy Anahtar Operasyonu. https://kinryu.sh/tr/reports/keyhunter-llm-proxy-key-harvesting/