
Önde gelen uç nokta algılama ve yanıt (EDR) platformu olan Elastic Security’nin savunmasını aşmak için tasarlanmış gelişmiş bir Linux çekirdeği rootkit’i.
Araştırmacı 0xMatheuZ tarafından GitHub’da yayınlanan rootkit, YARA tabanlı tespit ve davranışsal izlemeden kaçınmak için gelişmiş gizleme teknikleri kullanıyor.
Kesinlikle eğitim amaçlı sunulmasına rağmen Singularity, siber güvenlik silahlanma yarışında potansiyel olarak hem saldırganları hem de savunucuları bilgilendirerek, çekirdek düzeyinde tehdit tespitinde gelişen zorlukların altını çiziyor.
Elastic Defend ile entegre olan Elastic Security, rootkit taramaları sırasında dosya karantinaları ve işlem sonlandırma dahil olmak üzere genellikle iki düzineden fazla uyarıyı tetikler.
Singularity, kodunu parçalayarak, tanımlayıcıları rastgele dağıtarak ve yükleri bellekte sıralayarak, test sırasında tam kaçınma sağlayarak buna karşı koyar.
Temel yetenekler arasında /proc’tan süreçleri gizlemek, “tekillik” veya “matheuz” gibi kalıplarla dosya ve dizinleri gizlemek, 8081 numaralı bağlantı noktasında TCP bağlantılarını maskelemek ve özel sinyaller veya ortam değişkenleri aracılığıyla ayrıcalık yükseltmeyi etkinleştirmek yer alır.
Ayrıca, izlemeyi engelleyen ve günlükleri temizleyen anti-analiz önlemlerinin yanı sıra, belirli paket dizileri tarafından tetiklenen ters kabuklar için ICMP tabanlı bir arka kapıya da sahiptir.
Linux Rootkit Esnek EDR Tespitinden Kaçıyor
Singularity’nin başarısının temelinde statik analizden kaçınmaya yönelik çok katmanlı bir yaklaşım yatıyor. Geleneksel rootkit’ler, YARA kurallarının hedeflediği tahmin edilebilir dizeler ve semboller (örneğin, “lisans=GPL” ile eşleştirilmiş “kallsyms_lookup_name” veya “hook_getdents” gibi kancalar) üzerinde bocalar.

Rootkit’in Python tabanlı gizleme aracı, bunları derleme zamanında parçalar, dizeleri C derleyicisinin yeniden bir araya getirdiği bitişik değişmezlere böler; örneğin, MODULE_LICENSE(“GPL”) MODULE_LICENSE(“G” “P” “L”)’ye dönüştürür.
Bu, doğrudan eşleşme göstermeyen dizeler ve objdump gibi araçlar tarafından doğrulandığı gibi, ikili dosyanın dizelerini tarayıcılar için bitişik olmayan hale getirirken işlevsellik sağlar.
Sembol adı rastgeleleştirmesi, şüpheli önekleri (“hook_”, “fake_”) “sys_abjker_handler” veya “kern_wopqls_helper” gibi zararsız, çekirdeği taklit eden adlarla değiştirerek işi daha da ileri götürür.
MatheuZ, bir beyaz listenin temel çekirdek API’lerini koruduğunu ve normal ifade kalıplarının tutarlı yeniden adlandırma için işlevleri çıkardığını, kısmi değişiklikleri önlemek için uzunluğa göre sıralandığını söyledi.
Başka bir yaygın fırsat olan Ftrace kancalama işlevleri de benzer muamele görüyor ve bu tür iki veya daha fazla modeli tespit eden kurallardan kaçınmak için “fh_install_hook” olarak yeniden adlandırılıyor. Bu teknikler, Elastic’in genel rootkit kurallarındaki 57 işlev adı imzasını toplu olarak ortadan kaldırır.
Singularity, statik hilelerin ötesinde, derlenmiş .ko dosyasını, yeniden yapılandırma için meta verilerle birlikte depolanan rastgele 16 baytlık bir anahtar kullanarak 64 KB XOR kodlu parçalara ayırır.
Statik olarak derlenen özel bir yükleyici, disk yapıtlarını önleyen anonim bir dosya tanımlayıcı olan memfd_create aracılığıyla bunları bellekte yeniden birleştirir.
Finit_module’u çağırmak için doğrudan sistem çağrılarını (hem 64 bit hem de eski 32 bit, int $0x80 aracılığıyla) kullanır ve bağımlı libc işlevlerini atlatır. Bu yalnızca bellek yüklemesi, yürütme sonrasında silinebilen parçalarla disk üzerinde taramaya karşı dayanıklıdır.
Davranış tespiti, özellikle ICMP ile tetiklenen ters kabuk için daha zorlayıcıdır. Komut satırlarında setid gibi elastik bayrak desenlerini /dev/tcp/ ile veya çekirdek çalışanlarından kabuk yürütmelerini işaretler.
Tekillik, /singularity’ye aşamalı bir bash betiği yazarak, ortaya çıkan kworker PID’sini hemen gizleyerek ve ardından temiz bir /bin/bash /singularity çalıştırarak karşı koyar.
Betik bir TCP tanımlayıcı açar, arka planda sh’yi üretir ve meşru süreçleri etkilemeden komut satırı incelemesini atlayarak hedeflenen gizleme ve yükseltme için kesin PID’lerde kill -59’u kullanır.

Bonus kaçırma yöntemleri arasında yükleyicilerin izlenen /dev/shm yerine /tmp dosyasında derlenmesi ve çoğaltılabilirlik için gizleme hattının otomatikleştirilmesi yer alır. Testlerde Singularity, tespit edilmeyen, gizlenen süreçleri yükledi ve kök kabukları oluşturarak mevcut Elastic kurallarına karşı dayanıklılığını kanıtladı.
Bu çalışma, uyarlanabilir tehditlere karşı imza tabanlı savunmaların kırılganlığını vurgulamaktadır. EDR’ler geliştikçe, bu tür araştırmalar makine öğrenimi ile anormallik analizini harmanlayan bütünsel algılamayı zorunlu kılıyor. Savunmacılar için bu, daha derin çekirdek bütünlüğü kontrollerine ihtiyaç duyulduğunun sinyalini veriyor; araştırmacılar için bu, dirençliliğin bir planıdır.
Günlük siber güvenlik güncellemeleri için bizi Google Haberler, LinkedIn ve X’te takip edin. Hikayelerinizi öne çıkarmak için bizimle iletişime geçin.