Saldırganların sisteme ilk giriş noktası, Apache Tomcat üzerinde çalışan ve herkese açık bir Java uygulamasındaki SQL enjeksiyon açığıydı . Uygulamanın otomatik tamamlama (autocomplete) arama özelliği, kullanıcı girdilerini gerektiği gibi doğrulamadığı için saldırganlar, Oracle veritabanına olan JDBC bağlantısı üzerinden SQL komutları enjekte edebildi . Huntress araştırmacılarının da belirttiği gibi, bu yeni bir açık türü değildi; SQL enjeksiyonu saldırıları onlarca yıldır var ve genellikle SQL sunucusuna giden kullanıcı girdilerinin yanlış işlenmesinden kaynaklanır . Uygulamanın basit bir arama alanını temizlememesi, tüm bu saldırı zincirini başlatmaya yetti.
Saldırganlar, ele geçirilen sunucuya geleneksel kötü amaçlı dosyalar yerleştirmek yerine, Oracle'ın yerleşik JVM'sini ve CREATE JAVA SOURCE ifadesini kullanarak tüm sömürü sonrası araç setini, Oracle veritabanı içinde Java şema nesneleri olarak derleyip depoladı . Bu yaklaşım, standart işletim sistemi düzeyindeki savunmalar tarafından görülmelerini engelledi çünkü EDR ve antivirüs yazılımları, işletim sistemindeki süreçlere, ikili dosyalara (binary) ve dosyalara odaklanır; Oracle içinde depolanan Java sınıflarını ve PL/SQL sarmalayıcılarını genellikle denetlemez .
Khunt araç seti şu bileşenleri içeriyordu ve her biri bir veritabanı nesnesi olarak saklanıyordu:
| Bileşen | İşlevi |
|---|---|
| KhuntCmd | Veritabanına gönderilen SQL ifadelerine gömülü olarak cmd.exe'yi yükler ve rastgele işletim sistemi komutları çalıştırır |
| KhuntHash | Oracle'ın iç kullanıcı tablolarından kullanıcı adlarını ve parola hash'lerini çıkararak bir dosyaya kaydeder |
| KhuntFS / KhuntFS2 | Ele geçirilen sistemdeki dosyaları listeleme, okuma, arama ve boyutlarını kontrol etme işlevlerine sahip dosya gezginleridir |
| KhuntT | Araç setinin kurulu ve erişilebilir olduğunu teyit etmek için kullanılan basit bir "ping" aracıdır |
| KhuntUnzip | Dosyaları sıkıştırmadan çıkarma (unzip) yardımcı programıdır |
| khunt_ PL/SQL sarmalayıcıları* | Alttaki Java yöntemlerini çağırmak için kullanılan PL/SQL sarmalayıcı prosedürleridir |
Saldırganlar, yalnızca veritabanı seviyesinde kalmadı. Khunt araç setini kullanarak çok adımlı bir süreçle veritabanı katmanından alttaki Windows işletim sistemine geçtiler:
cmd.exe /c whoami komutunu çalıştırdılar ve Windows sunucusunda SYSTEM seviyesinde yetkileri olduğunu doğruladılar. Bu, veritabanından işletim sistemine uzaktan kod çalıştırma (RCE) anlamına geliyordu .reg.exe komutunu çağırdılar ve SECURITY ile SYSTEM kayıt defteri kovanlarını kopyalayarak F:\Oracle\ dizinine khuntSECURITY.hiv ve khuntSYSTEM.hiv olarak kaydettiler .tasklist /svc komutunu çalıştırarak çıktıyı khunttasks.txt dosyasına kaydettiler .esentutl.exe aracını kullanarak SAM ve ikinci bir SECURITY kovanı kopyasını alıp khuntSAM.hiv ve khunt_SECURITY.hiv olarak kaydettiler .Sızdırılan bu kayıt defteri kovanları, çevrimdışı olarak kullanılıp sistemdeki tüm yerel hesapların parola hash'lerini çıkarmak ve kırmak için kullanılabilirdi .
Huntress'in soruşturması, bu saldırının başarılı olmasına ve tespit edilmekten kaçınmasına izin veren birkaç kritik kör noktayı ortaya çıkardı:
Bu saldırıya dayanarak Huntress şu önlemleri önerdi :
Bu saldırı, yerleşik programlama ortamlarına (Oracle'ın JVM'si gibi) sahip veritabanı motorlarının, tek bir doğrulanmamış girdi alanıyla birleştiğinde nasıl gizli saldırı platformlarına dönüşebileceğinin çarpıcı bir hatırlatıcısıdır. Güvenlik ekipleri, izleme faaliyetlerini işletim sisteminin ötesine taşıyarak veritabanı nesne katmanını da kapsamalıdır.