2 puan yazan GN⁺ 2 일 전 | 1 yorum | WhatsApp'ta paylaş
  • 2005 yılında geliştirilmiş, belgelenmemiş bir sabotaj çerçevesi olup, seçilen hesaplama yazılımlarının bellek içi kodunu yamalayarak sayısal sonuçları çarpıtmak üzere tasarlanmıştır
  • svcmgmt.exe dışarıdan bir servis sarmalayıcısı gibi görünse de içinde Lua 5.0 sanal makinesi, şifrelenmiş bytecode, yardımcı DLL’ler ve fast16.sys sürücüsünü barındırır; böylece görev bazlı yükleri ayrı ayrı çalıştırır
  • fast16.sys, önyüklemede başlayan bir dosya sistemi sürücüsü olarak çok erken aşamada yüklenir; ardından Intel C/C++ derleyicisiyle oluşturulmuş .EXE dosyalarını seçip çekirdek düzeyinde bellek yamaları uygular
  • Yama motoru 101 kural ile çalışır; özellikle FPU komut bloklarını kullanarak iç dizi değerlerinin ölçeklendirmesini değiştirir ve inşaat mühendisliği, fizik, süreç simülasyonu gibi özel hesaplama araçlarını hedeflediğine dair iz bırakır
  • ShadowBrokers sızıntısındaki fast16 işaretiyle birlikte değerlendirildiğinde, Stuxnet öncesi dönemde hassas endüstriyel sabotajın gömülü betikleme, dar hedefleme ve çekirdek yaması birleşimiyle zaten var olduğu ortaya çıkıyor

Genel bakış ve tanımlama ipuçları

  • fast16, 2005 tarihli çekirdek bileşenlere sahip, belgelenmemiş bir siber sabotaj çerçevesidir; fast16.sys, yüksek hassasiyetli hesaplama yazılımlarını seçici biçimde hedef alarak bellekteki kodu yamalar ve hesaplama sonuçlarını çarpıtır
  • svcmgmt.exe, dışarıdan Windows 2000/XP döneminin sıradan bir servis sarmalayıcısı gibi görünse de içinde Lua 5.0 sanal makinesi ve servis giriş noktasının açtığı şifreli bir bytecode kapsayıcısı bulunur
  • Lua tabanlı kötü amaçlı yazılım araştırmasında, bytecode sihirli baytları 1B 4C 75 61, sürüm baytı, LUA_PATH ve karakteristik C API kullanımı önemli ipuçları oldu; bu akış içinde svcmgmt.exe tespit edildi
  • svcmgmt.exe içindeki C:\buildy\driver\fd\i386\fast16.pdb dizesi, servis yürütülebilir dosyası ile çekirdek sürücüsü projesini birbirine bağlayan adli bir ipucu oldu
  • 2017’deki ShadowBrokers sızıntısının drv_list.txt dosyasında da aynı adlı fast16 yer alıyor; bu da svcmgmt.exe içindeki PDB dizesi ile hassas sabotaj amaçlı sürücüyü tek bir çizgide birleştiriyor
  • ShadowBrokers tarafındaki kaçınma imzasında fast16 *** Nothing to see here – carry on*** ifadesi yer alıyor

Taşıyıcı yapı ve çalışma biçimi

  • svcmgmt.exe, komut satırı argümanlarına göre davranış değiştiren uyarlanabilir bir taşıyıcı olarak tasarlanmıştır
    • Argüman yok: Windows servisi olarak çalışır
    • -p: InstallFlag = 1 olarak ayarlanır ve servis olarak çalışır
    • -i: InstallFlag = 1 olarak ayarlanır ve Lua kodunu çalıştırır
    • -r: kurulum bayrağı olmadan Lua kodunu çalıştırır
    • Diğer <filename>: özgün komut ile -r argümanı eklenmiş komut olmak üzere iki alt süreç oluşturan bir Wrapper/Proxy modunda çalışır
  • Dahili depoda şifreli Lua bytecode’u, yardımcı DLL’ler ve fast16.sys sürücüsü birlikte bulunur
  • Lua ortamı varsayılanın ötesinde genişletilmiştir; wstring modülü, yerleşik simetrik şifreleme işlevi b, Windows NT dosya sistemi, kayıt defteri, servis kontrolü ve ağ API bağlama modülleri sunar
  • Harici taşıyıcı ikili dosya görece sabit tutulurken, görev bazlı yükler şifreli biçimde ayrıştırılarak ortama ve operasyon hedeflerine göre yeniden kullanılabilir hale getirilmiştir
  • svcmgmt.exe tanımlayıcıları şöyledir
    • Dosya adı svcmgmt.exe
    • Boyut 315,392 bytes
    • MD5 dbe51eabebf9d4ef9581ef99844a2944
    • SHA1 de584703c78a60a56028f9834086facd1401b355
    • SHA256 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
    • Tür PE32 executable for MS Windows 4.00 (console), Intel i386
    • Bağlama zamanı 2005-08-30 18:15:06 UTC

Wormlet yayılımı ve kaçınma yapısı

  • svcmgmt.exe, birden fazla wormlet taşıyabilen küme mühimmat benzeri bir taşıyıcı gibi davranır; doğrulanan örnekte yalnızca bir SCM wormlet bulunur
  • Çalışma akışı; yapılandırma hazırlığı, geniş karakter dizisine dönüştürme, yetki yükseltme, SvcMgmt servisinin kurulup başlatılması, koşullu fast16.sys yerleştirme, wormlet salımı, ilk gecikme ve başarısızlık eşiğine ya da harici sonlandırma koşuluna kadar tekrar eden çalıştırma döngüsünü içerir
  • SCM wormlet, Windows 2000/XP ortamlarını hedefler; zayıf ya da varsayılan yönetici parolası ayarlanmış dosya paylaşımlarını kullanarak ağ sunucularını bulur, yükü kopyalar ve ardından uzak servisi başlatır
  • Yayılım, özel bir ağ protokolüne değil; servis kontrol API’si ve dosya paylaşım API’si gibi standart Windows yönetim işlevlerine dayanır
  • Kurulumdan önce ok_to_install(), ortamı denetlemek için ok_to_propagate() çağrısını yapar ve elle zorlama yoksa belirli güvenlik ürünlerinin kayıt defteri anahtarlarının varlığına göre yayılımın mümkün olup olmadığını belirler
  • Aşağıdaki kayıt defteri anahtarlarından herhangi biri varsa kurulum durdurulur; böylece izleme ortamlarına dağıtım yapılması önlenir
    • HKLM\SOFTWARE\Symantec\InstalledApps
    • HKLM\SOFTWARE\Sygate Technologies, Inc.\Sygate Personal Firewall
    • HKLM\SOFTWARE\TrendMicro\PFW
    • HKLM\SOFTWARE\Zone Labs\TrueVector
    • HKLM\SOFTWARE\F-Secure
    • HKLM\SOFTWARE\Network Ice\BlackIce
    • HKLM\SOFTWARE\McAfee.com\Personal Firewall
    • HKLM\SOFTWARE\ComputerAssociates\eTrust EZ Armor
    • HKLM\SOFTWARE\RedCannon\Fireball
    • HKLM\SOFTWARE\Kerio\Personal Firewall 4
    • HKLM\SOFTWARE\KasperskyLab\InstalledProducts\Kaspersky Anti-Hacker
    • HKLM\SOFTWARE\Tiny Software\Tiny Firewall
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Look n Stop 2.05p2
    • HKCU\SOFTWARE\Soft4Ever
    • HKLM\SOFTWARE\Norman Data Defense Systems
    • HKLM\SOFTWARE\Agnitum\Outpost Firewall
    • HKLM\SOFTWARE\Panda Software\Firewall
    • HKLM\SOFTWARE\InfoTeCS\TermiNET
  • connotify.dll asgari bir raporlama kanalı görevi görür
    • Windows AddConnectNotify() API’si ile kaydedilir ve RAS tabanlı yeni bir ağ bağlantısı oluştuğunda her seferinde çağrılır
    • Karmaşıklaştırılmış dizeleri çözerek named pipe \\.\pipe\p577 değerini elde eder, yerel pipe’a bağlanır, uzak/yerel bağlantı adlarını kaydedip çıkar
    • Bağımsız çalışan bir modül değildir; ana süreç tarafından kaydedilmesi gerekir
    • Dosya adı svcmgmt.dll
    • Boyut 45056 bytes
    • MD5 410eddfc19de44249897986ecc8ac449
    • SHA1 675cb83cec5f25ebbe8d9f90dea3d836fcb1c234
    • SHA256 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
    • Bağlama zamanı 2005-06-06 18:42:45 UTC
    • Tür PE32 DLL (i386, 4 sections)

Sürücü yapısı ve bellek yama yöntemi

  • fast16.sys, çerçevenin en güçlü bileşenidir; önyükleme başlangıç dosya sistemi sürücüsü olarak ayarlanmıştır ve disk sürücüsüyle birlikte çok erken bir aşamada yüklenir
  • Yapılandırması Start=0, Type=2, SCSI sınıf grubudur ve kendisini NTFS, FAT, MRxSMB üzerine ekler
  • İlk girişte Session Manager\PrefetchParameters altındaki EnablePrefetcher değerini 0 yaparak sonraki kod sayfası isteklerinin tüm dosya sistemi yığınından geçmesini sağlar
  • Basit XOR dize şifrelemesi ve ntoskrnl.exe taramasıyla çekirdek API'lerini dinamik olarak çözer; \Device\fast16, \??\fast16 ve özel DeviceType 0xA57C değerini açığa çıkarır
  • IoRegisterFsRegistrationChange ile etkin ve yeni dosya sistemi aygıtlarının üzerine worker device object ekler ve IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_CLOSE, IRP_MJ_QUERY_INFORMATION, IRP_MJ_FILE_SYSTEM_CONTROL ile ilgili Fast I/O yollarını kancalar
  • Önyükleme anında yüklense de gerçek çekirdek düzeyi kod enjeksiyon motoru ancak explorer.exe açıldıktan sonra etkinleşir
  • Yama hedefi aynı anda iki koşulu da karşılamalıdır
    • dosya adı .EXE ile biter
    • son PE bölüm başlığının hemen arkasında Intel ile başlayan yazdırılabilir bir ASCII dizesi bulunur
  • Bu koşul, Intel C/C++ derleyicisi ile derlenmiş çalıştırılabilir dosyaları hedef alır ve saldırganın hedef yazılımın araç zincirini bildiğini gösterir
  • Koşullara uyan dosyalara bellek içi PE başlığı değişikliği uygulanır; .xdata ve .pdata adlı iki bölüm yeni baştan eklenir ve temiz bir kod kopyasını korumak için özgün kod bölümü baytları doldurulur
  • fast16.sys tanımlama değerleri şöyledir
    • dosya adı fast16.sys
    • boyut 44,580 bytes
    • MD5 0ff6abe0252d4f37a196a1231fae5f26
    • SHA1 92e9dcaf7249110047ef121b7586c81d4b8cb4e5
    • SHA256 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
    • tür PE32 executable for MS Windows 5.00 (native), Intel i386, 5 sections
    • link zamanı 2005-07-19 15:15:41 UTC

Kural tabanlı yama motoru ve hedef özellikleri

  • Yama motoru, 101 kuraldan oluşan minimal bir durum tabanlı tarayıcıdır; dosya diskten okunurken desen eşleme ve değiştirme mantığıyla yürütme kodunu bellekte sessizce değiştirir
  • Performansı korumak için 256 baytlık bir dispatch array ile bazı başlangıç baytlarını hızla eler, desen içinde wildcard kullanımına izin verir ve bazı kurallar durum bayraklarını ayarlayıp denetleyerek çok aşamalı değişiklik dizileri uygular
  • Yama desenlerinin çoğu, x86 kodunda yürütme akışını ele geçiren veya etkileyen genel komut dizilerine karşılık gelir, ancak bunlardan biri çok daha büyük bir FPU komut bloğundan oluşur
  • Bu FPU bloğu, hassas aritmetik ve iç dizi değerlerinin ölçeklenmesine adanmış koddur; tipik kötü amaçlı enjeksiyonlardan farklı bir karakter taşır
  • Araştırmacılar yama kurallarını YARA imzalarının onaltılık desenlerine dönüştürüp aynı döneme ait yazılım külliyatına uyguladı; iki veya daha fazla desenle eşleşen dosya sayısı 10'dan azdı
  • Eşleşen dosyaların ortak özelliği, inşaat mühendisliği, fizik ve fiziksel süreç simülasyonu gibi özel alan hesaplama araçları olmalarıydı
  • FPU yaması, üç iç diziye aktarılan değerleri ölçekleyerek hesaplamaları ince biçimde değiştirir; bunun, hedefin yetkisiz erişim veya genel yayılım değil sayısal sonuçları manipüle etmek olduğunu gösterdiği düşünülüyor
  • Kesin hedef ikili dosya ve iş yüklerinin tamamı doğrulanamadığı için dizilerin anlamı tam olarak belirlenemedi
  • Hesaplamalar ayrı bir sistemde doğrulanırsa bu tür bir sabotaj başarısız olabilir, ancak aynı ağ ve güvenlik ortamını paylaşan birden çok sisteme aynı sürücü dağıtılırsa bağımsız doğrulama hesaplarının tutarsız çıkma olasılığı da azalır
  • Ek bölümde, yama motorundan çıkarılmış bazı desenler aynen yer alıyor
    • 48 89 84 24 9C 00 00 00 4B 0F 8F 79 FF FF FF 00
    • D8 E1 D9 5D FC D9 04 00
    • 55 8B EC 83 EC 14 53 56 57 8B 3D ?? ?? ?? ?? 8B 0D 00
    • 8D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? 83 C4 38 EB 0E 83 EC 04 00
    • B9 01 00 00 00 C1 E7 02 8B BF ?? ?? ?? ?? 8B D7 85 FF 8B 55 30 8B 45 30 D8 C9 8B 75 2C 00 9A 8B 00 00 00 1B 00 90 0F 94 C3 0B D8 33 D2 83 3D 00

Yama hedefi adayları

  • Desen eşleştirme sonuçlarının en güçlü biçimde çakıştığı hedefler LS-DYNA 970, PKPM, MOHID oldu
  • LS-DYNA 970, aşırı koşullarda malzeme ve yapı davranışını analiz eden bir mühendislik simülasyon yazılımıdır; otomobil çarpışmaları, patlamalar, darbeler, metal şekillendirme ve üretim süreçlerini kapsar ve otomotiv, havacılık, savunma-askeri araştırma, üretim ve malzeme biliminde kullanılmıştır
    • 1976'dan beri geliştirilmektedir
    • MD5 1d2f32c57ae2f2013f513d342925e972
    • SHA1 2fa28ef1c6744bdc2021abd4048eefc777dccf22
    • SHA256 5966513a12a5601b262c4ee4d3e32091feb05b666951d06431c30a8cece83010
    • Dosya boyutu 5,225,591 bytes
    • Link zamanı 2003-10-24 16:34:57 UTC
    • Dosya türü PE32 executable for MS Windows 4.00 (console), Intel i386, 7 sections
  • PKPM, Çin'de yaygın olarak kullanılan bir yapı mühendisliği CAD ürün ailesi olup bina yapısal tasarımının tüm yaşam döngüsünü kapsayan birden fazla çalıştırılabilir modülden oluşur
    • SATWE, döşeme, kiriş, kolon, duvar ve çerçevelerin genelindeki 3 boyutlu yapısal analizden sorumlu çekirdek motordur
    • Beton kesme tasarımı modülü tanımlayıcıları
      • MD5 af4461a149bfd2ba566f2abefe7dcde4
      • SHA1 586edef41c3b3fba87bf0f0346c7e402f86fc11e
      • SHA256 09ca719e06a526f70aadf34fb66b136ed20f923776e6b33a33a9059ef674da22
      • Dosya boyutu 7716864 bytes
      • Dosya türü PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections
      • Link zamanı 2011-08-26 10:58:17 UTC
    • Building Structure CAD modülü tanımlayıcıları
      • MD5 49a8934ccd34e2aaae6ea1e6a6313ffe
      • SHA1 3ce5b358c2ddd116ac9582efbb38354809999cb5
      • SHA256 8b018452fdd64c346af4d97da420681e2e0b55b8c9ce2b8de75e330993b759a0
      • Boyut 11849728 bytes
      • Link zamanı 2005-12-01 08:35:46 UTC
      • MD5 e0c10106626711f287ff91c0d6314407
      • SHA1 650fc6b3e4f62ecdc1ec5728f36bb46ba0f74d05
      • SHA256 06361562cc53d759fb5a4c2b7aac348e4d23fe59be3b2871b14678365283ca47
      • Boyut 16355328 bytes
      • Link zamanı 2012-07-07 08:47:11 UTC
    • SATWE yapısal analiz motoru tanımlayıcıları
      • MD5 2717b58246237b35d44ef2e49712d3a2
      • SHA1 d475ace24b9aedebf431efc68f9db32d5ae761bd
      • SHA256 bd04715c5c43c862c38a4ad6c2167ad082a352881e04a35117af9bbfad8e5613
      • Boyut 9908224 bytes
      • Link zamanı 2011-01-12 06:37:39 UTC
      • MD5 daea40562458fc7ae1adb812137d3d05
      • SHA1 1ce1111702b765f5c4d09315ff1f0d914f7e5c70
      • SHA256 da2b170994031477091be89c8835ff9db1a5304f3f2f25344654f44d0430ced1
      • Boyut 8454144 bytes
      • Link zamanı 2012-11-29 03:10:12 UTC
      • MD5 2740a703859cbd8b43425d4a2cacb5ec
      • SHA1 ca665b59bc590292f94c23e04fa458f90d7b20c9
      • SHA256 aeaa389453f04a9e79ff6c8b7b66db7b65d4aaffc6cac0bd7957257a30468e33
      • Boyut 16568320 bytes
      • Link zamanı 2014-12-30 03:23:43 UTC
      • MD5 ebff5b7d4c5becb8715009df596c5a91
      • SHA1 829f8be65dfe159d2b0dc7ee7a61a017acb54b7b
      • SHA256 37414d9ca87a132ec5081f3e7590d04498237746f9a7479c6b443accee17a062
      • Boyut 8089600 bytes
      • Link zamanı 2009-04-22 01:46:46 UTC
      • MD5 cb66a4d52a30bfcd980fe50e7e3f73f0
      • SHA1 e6018cd482c012de8b69c64dc3165337bc121b86
      • SHA256 66fe485f29a6405265756aaf7f822b9ceb56e108afabd414ee222ee9657dd7e2
      • Boyut 9219072 bytes
      • Link zamanı N/A
    • Ek PKPM CAD dosyası tanımlayıcıları
      • MD5 075b4aa105e728f2b659723e3f36c72c
      • SHA1 145ef372c3e9c352eaaa53bb0893749163e49892
      • SHA256 c11a210cb98095422d0d33cbd4e9ecc86b95024f956ede812e17c97e79591cfa
      • Boyut 6852608 bytes
      • Link zamanı 2012-06-18 10:01:54 UTC
      • MD5 cf859f164870d113608a843e4a9600ab
      • SHA1 952ed694b60c34ba12df9d392269eae3a4f11be4
      • SHA256 7e00030a35504de5c0d16020aa40cbaf5d36561e0716feb8f73235579a7b0909
      • Boyut 8392704 bytes
      • Link zamanı 2012-11-29 03:10:12 UTC
  • MOHID, Portekiz Lizbon'daki Instituto Superior Técnico'nun MARETEC birimi tarafından geliştirilen açık kaynaklı su sistemi modelleme sistemidir; deniz ve kıyı hidrodinamiği, su kalitesi simülasyonu, sediment taşınımı, petrol sızıntısı modellemesi ve Lagrangian parçacık izlemeyi kapsar
    • Şu an itibarıyla bile amaçlanan saldırı etkisini kesin olarak tespit edemediklerini belirttiler
    • MD5 f4dbbb78979c1ee8a1523c77065e18a5
    • SHA1 9e089a733fb2740c0e408b2a25d8f5a451584cf6
    • SHA256 e775049d1ecf68dee870f1a5c36b2f3542d1182782eb497b8ccfd2309c400b3a
    • Dosya boyutu 5443584 bytes
    • Dosya türü PE32 executable for MS Windows 4.00 (console), Intel i386, 3 sections
    • Link zamanı 2002-10-18 09:29:54 UTC
  • LS-DYNA, İran'ın JCPOA Section T ihlali şüphelerine ilişkin kamuya açık haberlerde nükleer silah geliştirmeyle ilgili bilgisayar modellemesi araştırmalarıyla birlikte anılmıştı

Tespit kuralları ve ihlal göstergeleri

  • İhlal göstergeleri

    • Doğrulanan 3 dosya fast16.sys, connotify.dll, svcmgmt.exe
    • fast16.sys: MD5 0ff6abe0252d4f37a196a1231fae5f26, SHA1 92e9dcaf7249110047ef121b7586c81d4b8cb4e5, SHA256 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
    • connotify.dll: MD5 410eddfc19de44249897986ecc8ac449, SHA1 675cb83cec5f25ebbe8d9f90dea3d836fcb1c234, SHA256 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
    • svcmgmt.exe: MD5 dbe51eabebf9d4ef9581ef99844a2944, SHA1 de584703c78a60a56028f9834086facd1401b355, SHA256 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
  • apt_fast16_carrier

    • carrier, Lua payload'u ve düz metin varyantlarını yakalamak için tasarlandı; referans hash 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
    • Lua bytecode magic 1B 4C 75 61, build_wormlet_table, unpropagate, scm_wormlet_install, install_implant, start_worm, ok_to_propagate dizelerini kullanır
    • Symantec, Sygate Personal Firewall, Zone Labs\TrueVector, Kaspersky Anti-Hacker gibi birçok güvenlik ürünü registry anahtarı da koşullara dahildir
    • Şifrelenmiş dize byte pattern'leri, 2 şifre sabiti, saklama container'ı uzunluğu çözme kodu ve file dizesini içeren saklama kayıt imzası da birlikte tespit edilir
    • Koşul, MZ header ve 10 MB'dan küçük dosya temelinde $s* içinden 3 öğe, $rk* içinden 12 öğe, herhangi bir $e*, 2 şifre sabitinin yakın yerleşimi ve $code1, $stor1 ikilisinden birini karşılamasıyla; ya da Lua magic ve $s* içinden 7 öğeyi karşılamasıyla oluşur
  • apt_fast16_driver

    • driver'ı veya ilgili proje dosyalarını yakalamak için tasarlandı; referans hash 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
    • @(#)foo.c :, @(#)par.h :, @(#)pae.h :, @(#)ree.c : gibi çok sayıda kaynak dosya tanımlayıcı dizesi kullanır
    • \\Device\\fast16, \\??\\fast16, C:\\buildy\\, driver\\fd\\i386\\fast16.pdb, push 0A57Ch ; DeviceType pattern'ini içerir
    • ExAllocatePool, ExAllocatePoolWithTag, ExFreePool, ExFreePoolWithTag değerlerini XOR biçiminde push eden API pattern'i de imzanın içindedir
    • Koşul, 10 MB'dan küçük dosyada MZ header ile birlikte 2 PDB yolu, C:\\buildy\\ ve 1 kaynak tanımlayıcı, #devtype == 3, pe.machine == pe.MACHINE_I386, pe.subsystem == pe.SUBSYSTEM_NATIVE, herhangi bir api*, dev* içinden 2 öğe koşullarından birini karşılamasıyla; ya da 6 kaynak tanımlayıcıyı karşılamasıyla oluşur
  • clean_fast16_patchtarget

    • Yama hedefi yazılımı tespit eder, most probably clean olarak işaretlenmiştir ve referans hash 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
    • $el0 ile $el99 arasında uzanan çok sayıda byte pattern'i kullanır
    • Koşul, 20 MB'dan küçük dosya, MZ header ve tanımlı imzalardan en az 2 eşleşmedir
  • apt_fast16_patch

    • Yama kodunun kendisini tespit eder; statik olarak yamalanmış dosyalarda veya bellek dökümlerinde bulunabilir
    • Referans hash 0ff6abe0252d4f37a196a1231fae5f26
    • $p1, $p2, $p3 olmak üzere 3 byte pattern'i tanımlar
    • Koşul any of them şeklindedir; üç pattern'den yalnızca biri eşleşse bile tespit edilir

Soy ağacı ve tarihsel çıkarımlar

  • Binary içindeki @(#)par.h $Revision: 1.3 $ dizesi, bu framework'ün soy ağacını tahmin etmeye yarayan bir ipucu olur
  • @(#) öneki, 1970'ler-1980'ler Unix'teki SCCS/RCS kaynak yönetimi geleneğine işaret eder; mid-2000s Windows kernel driver'larında bu tür izler nadirdir
  • Bu artifact'ler, tipik bir yalnızca Windows geliştiricisinden ziyade, eski yüksek güvenlikli Unix ortamlarının kültürüne ve toolchain'lerine aşina kıdemli bir mühendisin izine daha yakın görünür
  • svcmgmt.exe yaklaşık 10 yıl önce VirusTotal'a yüklendi, ancak bugün bile tespit oranı çok düşük ve yalnızca bir engine onu sınırlı güvenle genel amaçlı zararlı olarak sınıflandırıyor
  • ShadowBrokers'ın Territorial Dispute imzalarıyla birlikte değerlendirildiğinde, fast16 ciddi ve gizliliğe odaklı devlet düzeyinde siber sabotajın geliştirme zamanına yeniden bakmayı gerektiriyor
  • fast16, daha yaygın bilinen ailelerden önce gömülü scripting engine, derleyici tabanlı dar hedefleme ve kernel seviyesinde yama birleştiren tutarlı bir yapı gösteriyor
  • Uzun süre boyunca kamuya açık analiz, adlandırılmış kampanyalar ve öne çıkan olaylarla neredeyse hiçbir bağlantı kurulmadı; içeride kalan insan tarafından okunabilir işaretler de *** Nothing to see here – carry on*** örneğindeki gibi sınırlı kaldı
  • Sonraki Lua- and LuaJIT-based toolkits ile devam eden APT evrim çizgisi arasında bir bağlantı noktası olarak konumlanıyor

1 yorum

 
GN⁺ 2 일 전
Hacker News görüşleri
  • Bu kısım özellikle ilginçti
    2005 tarihli Windows kernel kodu içinde SCCS/RCS notasyonu görülmesini, bugün bir ofiste çevirmeli telefon görmekle kıyaslamaları epey ikna ediciydi
    2006'da çalıştığım astrofizik laboratuvarı da hâlâ svn kullanıyordu ve kod tabanında 70'ler ile 80'lerin sistem izlerini taşıyan çok sayıda Fortran vardı
    Yine de modern optimize edici derleyiciler sayesinde gayet iyi çalışıyordu ve 90'larda Vax'tan Linux'a taşınma süreci de şaşırtıcı derecede sorunsuz olmuştu
    Eskiden dinlediğim do over or make due sunumunu hatırlattı; ana fikir, büyük ve çalışan bir kod tabanını baştan yazmanın, modern araçlarla zor da olsa birbirine bağlayıp kullanabiliyorsanız, çoğu zaman buna değmeyeceğiydi

    • 2012 civarına kadar RCS tabanlı SCM kullanan bir şirkette çalıştım; paylaşımlı dosya sunucusunun üstüne zorla sarılmış, hack işi bir RCS sistemiydi
      Adı MKS idi ve belirli bir revizyon ağacını "project file" olarak yöneten bir yaklaşımı vardı; Java EE ile yeniden yapılmış bir sürüm bile değil, tam anlamıyla 90'lardan kalma gibiydi
      Dosyaların başında $Revision: 1.3 $ gibi etiketler ve changelog olurdu ama yeni dosyaların önemli bir kısmında etiket hiç yoktu, dolayısıyla yer değiştirme de olmuyordu; tutarlılık tam bir felaketti
      Hedef cihaz ailesi 90'ların ortasında başlamıştı ama o andaki kodun fiilen 5 yıldan daha eski olan kısmı neredeyse yoktu
      Sadece birkaç düzine mühendis olmasına rağmen commit çakışmaları sık yaşanıyordu ve tüm ağaç düzenli olarak bozuluyordu
      Eğlencesine tüm geçmişi okuyup git'e aktaran bir betik yazdım ama sadece birkaç yıl geriye gidince bile kayıtlar tamamen darmadağınıktı
      Neden o zamana kadar bunu kullandıklarını bilmiyorum ama donanım şirketleri sanılandan daha yakın zamanlara kadar kaynak yönetimini "uzaktaki paylaşımlı klasör" gibi görebiliyordu; bu yüzden yazılım tarafındaki sürüm kontrolü öncelik değildi sanırım
    • 2026'da R kullanıyorsanız, büyük olasılıkla bir yerde 70'ler veya 80'lerden kalma Fortran ile derlenmiş kodu neredeyse kesin olarak çağırıyorsunuzdur
      Sayısal hesaplama dünyasında o soy hâlâ temel taşı olmaya devam ediyor
    • Eskiden Stuxnet'in devlet destekli olduğu iddialarına biraz kuşkuyla bakardım ama böyle notları görünce neden böyle tahminler yapıldığını anladım
      2000'lerde bile RCS kullanan yerler gerçekten vardı ve aracın kendisi bazı açılardan SVN ya da CVS'den daha iyiydi
    • O zaman şu üç harfli kısaltmalı kurumların her kötü amaçlı yazılım türü için o alandan insan toplayabildiği mi düşünülmeli diye merak ettim
      Mesela fast16'yı aslında bilimsel hesaplama yazılımı geliştiren biri, Stuxnet'i ise Siemens'te çalışmış biri yazmış olabilir diye insanın aklına geliyor
    • Refactoring her derde deva değil
      Kodu başta refactoring gerektirir hâle getiren nedenler yerinde duruyorsa, sonunda yine aynı duruma dönersiniz
      Bu nedenler bazen geliştiricinin alışkanlıkları, inançları, mesleki travmaları gibi psikolojik katmanlara kadar derine işlemiş oluyor
      Buna bir de Conway yasası eklenince ekipler kaçınılmaz olarak daha büyük organizasyon yapısına benzeyen yazılımlar üretir ve organizasyon değişmezse refactoring sonucu da çoğunlukla tekrar eder
      İstisna, başka bir ekibin ya da önceki sahiplerin kod tabanını devralıp yapıyı yeniden kurduğunuz durumlardır
      Ama aynı insanlar kendi kodları için refactoring ilan ettiğinde, sonuç çoğu zaman sadece kendileri için daha kullanışlı bir fare kapanı daha yapmak olur
      Kendi düşünme biçiminizin ürününü yinelemeli olarak iyileştirmek sorun değil ama atlıkarıncadan inmek istiyorsanız kötü mimarinin nedenlerini yazıp kendinize dürüstçe bakmanız gerekir
      Birçok geliştiricinin inanmak istediği gibi, "dikkatli ve çalışkan olursanız biraz kötü bir tasarımı da iyi uygulayabilirsiniz" sözü çoğu zaman doğru değildir
      Sonuçta kök tasarımdır; ondan büyüyen ağacı ya kabul etmeniz ya da kesmeniz gerekir, yalnızca budamayla bir yere kadar gidilir
  • Bu yazı epey ürkütücü geldi
    Bu kötü amaçlı yazılımın 20 yıl boyunca tespit ağının altında kalmış olması bile tek başına yeterince tekinsiz

  • Merak edenler için indirme bağlantısı
    https://bazaar.abuse.ch/sample/9a10e1faa86a5d39417cae44da5ad...
    Sanırım önce bir Windows XP VM kurardım

    • Daha önce hiç Windows service dosyası yüklenmiş miydi diye merak ettim
      Bu sadece bir loader gibi görünüyor
  • IEEE-754 yalnızca +-*/ ve sqrt için doğru yuvarlamayı zorunlu kılar
    sin/cos/exp/log/pow gibi aşkın fonksiyonlar için son birkaç ULP farkına izin verir ve glibc, musl, MSVC, Intel SVML de pratikte böyle davranır
    PID çoğunlukla temel işlemleri kullandığı için libm farklarından daha az etkilenir ama motor vektör kontrolü ya da sensör lineerleştirme her çevrimde bu tür fonksiyonlara dokunduğundan küçük tutarsızlıklar birikir
    Bu yüzden kaynak kodda tek bir diff bile olmasa, sadece bağlı libm değiştiği için sahadaki davranış drift edebilir
    Bu farklar gerçekten Payne-Hanek argument reduction ya da en kötü durumdaki table-maker's dilemma sınırlarında ortaya çıkar
    Muhtemelen bu yüzden güvenlik kritik sistem kılavuzları sadece "IEEE-754 uyumlu" demekle yetinmeyip belirli bir libm build'ini sabitler

  • Gerçekten olağanüstü bir keşif
    Bu kuralların tam olarak neyi hedeflediğini ve sonuçları nasıl değiştirdiğini çok merak ediyorum
    Belki de reaktör gibi çok belirli simülasyon koşullarında fark yaratacak şekilde tasarlanmışlardır

    • LS-DYNA gibi bir yazılımın nasıl manipüle edilebileceğini biraz inceledim
      Örneğin kamuya açık kılavuzdaki [1] EOS_JWL denklemi, LS-DYNA'nın uyguladığı denklemlerden biri ve diğer denklemlerle birlikte kullanıldığında bir füze savaş başlığındaki ateşleyicinin ana patlayıcıyı tetikleyip 20 m mesafede belirli bir basınç dalgası üretmesine kadar geçen süreyi hesaplamak için kullanılabilir gibi görünüyor
      Sonucu tersine kullanarak gereken füze tapası zamanlaması da tahmin edilebilir
      LS-DYNA'da kullanılan denklemler ve parametreler [2] gibi bilimsel çalışmalardan geliyor; bu da 1980'lerde ABD hükümetinin yüksek patlayıcı deneyleri üzerine bir araştırma
      Burada patlayıcının onu saran çeşitli malzemelerle sürtünme özelliklerini ölçen deneyler de var
      Patlayıcı modelleme denklemleri zaten hazır olduğuna göre, yalnızca bu denklemleri hafifçe değiştirip sürtünme katsayısına ±20% gürültü ekleseniz bile bilim insanları ya da mühendisler, yazılım manipülasyonundan önce çelik üretim kalitesi sorunundan şüphelenebilir
      Güncel bir benzetmeyle, düşman bir devletin Çinli bir cracking grubunun Çin forumlarına koyduğu Ansys Autodyn 2026 R1 korsan kopyasını, Rusya'daki bir ISP'nin arkasındaki birkaç seeder'dan alıp kullandığını hayal edebilirsiniz
      Sonra deney sonuçları ile hesaplamalar sürekli uyuşmadığında, ancak o zaman kopyanın bilerek manipüle edilmiş olabileceğinden şüphelenebilirler
      Yine de bugünlerde o düşman devlet için, rastgele bir üniversitenin ya da havacılık-uzay/savunma danışmanlık firmasının ele geçirilmiş ağından resmî bir kopya çekmek daha kolay olabilir
      2026'daki bir düşman devletin yazılımı sıfırdan üretemeyeceğini varsaymak da safça olabilir; el hesabı ya da deneylere dayanarak da istenen sonuca ulaşabilirler
      Sonuçta üretim kalitesini doğrulamak için deney ekipmanı ve yetkinlik en baştan beri gereklidir
      Simülasyon yazılımı esas olarak model yapımı ve fiziksel deney sayısını azaltarak maliyet ve zamandan tasarruf sağlar
      Örneğin [3]'teki gibi bir merminin zırh plakasına çarpma senaryosunu 1000 kez çalıştırmak ucuzdur ama bunu gerçekte tekrarlamak çok daha pahalı ve zaman alıcıdır
      [1] https://ftp.lstc.com/anonymous/outgoing/jday/manuals/LS-DYNA...
      [2] https://www.osti.gov/servlets/purl/6530310
      [3] https://www.youtube.com/watch?v=_dv2PecKUBM
  • Yayınladığım şeylerde RCS revision data bulunduğunu görünce insanların bir an duraksamasını isterim

  • Yakın zamanda okuduğum kitap, Andy Greenberg'in Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers adlı kitabıydı
    Oldukça iyiydi ve yeni bilgiler gelmeye devam ettiğine göre bir devam serisine ihtiyaç olabilir diye düşünüyorum

  • Guix ve yeniden üretilebilir hesaplamanın PowerPC ya da eski makineler dahil taşınabilir hâle gelmesini, hükümetler ya da 1984 tarzı kurumlar ve Orta Doğu'daki bazı yapılar muhtemelen gerçekten sevmezdi
    Ortam ne kadar heterojen olursa o kadar iyi

  • Anahtar sayı worm
    Çünkü başka bir bilgisayarda kontrol etseniz bile yakalayamazsınız; ortada baştan temiz ikinci bir bilgisayar yoktur

  • İlginç bir bulgu ama source control ile ilgili yorum biraz isabetsiz geldi
    O dönemde SCCS benzeri şeyler hâlâ etraftaydı ve CVS'nin benzer bir tarzda olup olmadığını da bir an düşündüm

    • O yorum muhtemelen bunun Windows yazılımında nadir olduğu anlamına geliyordu
      Geliştiricilerin aslında UNIX tarafında da çalışmış insanlar olduğunu ima ediyor, çünkü SCCS/RCS orada yaygındı