2 पॉइंट द्वारा GN⁺ 2 일 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 2005 में बनाया गया undocumented sabotage framework, जिसे चुने गए calculation software के memory code को patch करके संख्यात्मक परिणामों को विकृत करने के लिए डिज़ाइन किया गया था
  • svcmgmt.exe ऊपर से service wrapper जैसा दिखता है, लेकिन इसके भीतर Lua 5.0 virtual machine, encrypted bytecode, auxiliary DLL, और fast16.sys driver मौजूद हैं, जो task-आधारित payloads को अलग-अलग चलाते हैं
  • fast16.sys एक boot-start filesystem driver है, जो बहुत शुरुआती चरण में load होने के बाद Intel C/C++ compiler से बने .EXE चुनता है और kernel स्तर पर memory patching करता है
  • Patch engine 101 नियमों पर काम करता है, और खास तौर पर FPU instruction blocks का उपयोग करके internal array values की scaling बदलता है, जिससे civil engineering, physics, और process simulation जैसे specialized calculation tools को निशाना बनाने के संकेत मिलते हैं
  • ShadowBrokers leak के fast16 marker के साथ जोड़ने पर यह सामने आता है कि Stuxnet से पहले के दौर में भी precision industrial sabotage embedded scripting, narrow targeting, और kernel patching के संयोजन के रूप में मौजूद था

अवलोकन और पहचान के सुराग

  • fast16 एक undocumented cyber sabotage framework है जिसके core components 2005 के हैं; इसमें fast16.sys high-precision calculation software को चुनिंदा रूप से निशाना बनाकर memory में code patch करता है और calculation results को विकृत करता है
  • svcmgmt.exe ऊपर से Windows 2000/XP दौर के सामान्य service wrapper जैसा दिखता है, लेकिन इसके भीतर Lua 5.0 virtual machine और एक encrypted bytecode container है, जिसे service entry point unpack करता है
  • Lua-आधारित malware की खोज के दौरान bytecode magic bytes 1B 4C 75 61, version byte, LUA_PATH, और विशिष्ट C API अहम सुराग बने, और उसी क्रम में svcmgmt.exe की पहचान हुई
  • svcmgmt.exe के भीतर मौजूद C:\buildy\driver\fd\i386\fast16.pdb string, service executable और kernel driver project को जोड़ने वाला forensic सुराग बनता है
  • 2017 ShadowBrokers leak के drv_list.txt में भी वही fast16 नाम दिखाई देता है, जो svcmgmt.exe की PDB string और precision sabotage driver को एक ही धारा में जोड़ता है
  • ShadowBrokers की evasion signature में fast16 *** Nothing to see here – carry on*** वाक्य शामिल है

carrier संरचना और execution तरीका

  • svcmgmt.exe को command-line arguments के अनुसार व्यवहार बदलने वाले adaptive carrier के रूप में डिज़ाइन किया गया है
    • कोई argument नहीं: Windows service के रूप में चलता है
    • -p: InstallFlag = 1 पर सेट करके service के रूप में चलता है
    • -i: InstallFlag = 1 पर सेट करके Lua code चलाता है
    • -r: install flag के बिना Lua code चलाता है
    • अन्य <filename>: मूल command और -r argument लगे command, इन दो child processes को बनाने वाले Wrapper/Proxy mode में काम करता है
  • इसके internal storage में encrypted Lua bytecode, auxiliary DLL, और fast16.sys driver साथ में मौजूद हैं
  • Lua environment को default स्थिति से आगे बढ़ाकर expand किया गया है, और इसमें wstring module, built-in symmetric crypto function b, तथा Windows NT filesystem, registry, service control, और network API binding modules दिए गए हैं
  • बाहरी carrier binary को अपेक्षाकृत स्थिर रखा गया, जबकि task-specific payloads को encrypted रूप में अलग रखा गया ताकि उन्हें environment और operational objectives के हिसाब से दोबारा इस्तेमाल किया जा सके
  • svcmgmt.exe की पहचान संबंधी मान इस प्रकार हैं
    • फ़ाइल नाम svcmgmt.exe
    • आकार 315,392 bytes
    • MD5 dbe51eabebf9d4ef9581ef99844a2944
    • SHA1 de584703c78a60a56028f9834086facd1401b355
    • SHA256 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
    • प्रकार PE32 executable for MS Windows 4.00 (console), Intel i386
    • link time 2005-08-30 18:15:06 UTC

wormlet propagation और evasion संरचना

  • svcmgmt.exe कई wormlet ले जाने वाले cluster-munition carrier की तरह काम कर सकता है, और पुष्टि किए गए sample में केवल एक SCM wormlet मौजूद है
  • Execution flow configuration तैयारी, wide string conversion, privilege escalation, SvcMgmt service install/start, conditionally fast16.sys deployment, wormlet release, शुरुआती delay, और failure threshold या external termination condition तक दोहराए जाने वाले execution से मिलकर बना है
  • SCM wormlet Windows 2000/XP environment को निशाना बनाता है, और कमज़ोर या default administrator passwords वाले file shares का उपयोग करके network servers खोजता है, payload copy करता है, और फिर remote service शुरू करता है
  • Propagation किसी custom network protocol पर नहीं, बल्कि service control API और file sharing API जैसी standard Windows management functionalities पर निर्भर करती है
  • Install से पहले ok_to_install() , ok_to_propagate() को call करके environment की जांच करता है, और manual force न होने पर कुछ security products की registry keys की मौजूदगी के आधार पर propagation की अनुमति तय करता है
  • नीचे दी गई registry keys में से कोई एक भी मिले तो install रोक दिया जाता है, ताकि monitoring environments में deployment से बचा जा सके
    • 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 न्यूनतम reporting channel की भूमिका निभाता है
    • Windows AddConnectNotify() API के जरिए register होता है और हर बार RAS-आधारित नया network connection बनने पर call किया जाता है
    • Obfuscated strings को decode करके named pipe \\.\pipe\p577 प्राप्त करता है, local pipe से connect होकर remote/local connection names दर्ज करता है और फिर समाप्त हो जाता है
    • यह standalone execution module नहीं है और host process registration की आवश्यकता होती है
    • फ़ाइल नाम svcmgmt.dll
    • आकार 45056 bytes
    • MD5 410eddfc19de44249897986ecc8ac449
    • SHA1 675cb83cec5f25ebbe8d9f90dea3d836fcb1c234
    • SHA256 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
    • link time 2005-06-06 18:42:45 UTC
    • प्रकार PE32 DLL (i386, 4 sections)

ड्राइवर संरचना और मेमोरी पैच करने का तरीका

  • fast16.sys इस फ्रेमवर्क का सबसे शक्तिशाली कंपोनेंट है, जिसे boot-start filesystem driver के रूप में सेट किया गया है, इसलिए यह disk driver के साथ बहुत शुरुआती चरण में लोड होता है
  • इसकी सेटिंग Start=0, Type=2, SCSI class group है, और यह NTFS, FAT, MRxSMB के ऊपर खुद को insert करता है
  • शुरुआती entry पर यह Session Manager\PrefetchParameters के तहत EnablePrefetcher मान को 0 पर सेट करता है, ताकि बाद के code page requests पूरे filesystem stack से होकर गुजरें
  • साधारण XOR string encryption और ntoskrnl.exe scan के ज़रिए यह kernel API को dynamically resolve करता है, और \Device\fast16, \??\fast16, custom DeviceType 0xA57C को expose करता है
  • IoRegisterFsRegistrationChange के जरिए यह active और नए filesystem devices के ऊपर worker device object जोड़ता है, और IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_CLOSE, IRP_MJ_QUERY_INFORMATION, IRP_MJ_FILE_SYSTEM_CONTROL तथा संबंधित Fast I/O paths को intercept करता है
  • यह boot के समय लोड हो जाता है, लेकिन असली kernel-level code injection engine explorer.exe खुलने के बाद ही सक्रिय होता है
  • पैच target को एक साथ दो शर्तें पूरी करनी होती हैं
    • filename .EXE पर खत्म हो
    • आखिरी PE section header के ठीक बाद Intel से शुरू होने वाली printable ASCII string मौजूद हो
  • यह शर्त Intel C/C++ compiler से बने executable files को target करती है, जो दिखाती है कि हमलावर target software के toolchain को जानता था
  • शर्त पूरी करने वाली files पर memory में PE header modification लागू किया जाता है, .xdata, .pdata नाम की दो नई sections inject की जाती हैं, और original code section bytes भरकर code की साफ कॉपी बनाए रखी जाती है
  • fast16.sys के पहचान मान इस प्रकार हैं
    • filename fast16.sys
    • size 44,580 bytes
    • MD5 0ff6abe0252d4f37a196a1231fae5f26
    • SHA1 92e9dcaf7249110047ef121b7586c81d4b8cb4e5
    • SHA256 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
    • type PE32 executable for MS Windows 5.00 (native), Intel i386, 5 sections
    • link time 2005-07-19 15:15:41 UTC

नियम-आधारित पैच इंजन और target की विशेषताएं

  • पैच इंजन 101 rules से बना एक न्यूनतम state-based scanner है, जो file के disk से पढ़े जाते समय pattern matching और replacement logic से memory में execution code को चुपचाप बदल देता है
  • performance बनाए रखने के लिए यह 256-byte dispatch array से कुछ शुरुआती bytes को तेजी से filter करता है, pattern के अंदर wildcard की अनुमति देता है, और कुछ rules state flags को set/check करके multi-stage modification sequence चलाते हैं
  • अधिकांश patch patterns x86 code में execution flow को hijack करने या प्रभावित करने वाले सामान्य instruction sequences से मेल खाते हैं, लेकिन उनमें से एक कहीं बड़ा FPU instruction block है
  • यह FPU block precision arithmetic और internal array values की scaling के लिए समर्पित code है, जो सामान्य malicious injection से अलग प्रकृति दिखाता है
  • शोधकर्ताओं ने patch rules को YARA signatures के hexadecimal patterns में बदलकर उसी दौर के software corpus पर लागू किया, और जिन files में दो या अधिक patterns मिले, उनकी संख्या 10 से भी कम थी
  • जिन files पर hit मिला, वे आम तौर पर civil engineering, physics, और physical process simulation जैसे विशेषीकृत computational tools थे
  • FPU patch तीन internal arrays को दिए गए values को scale करके calculations में सूक्ष्म बदलाव करता है, जिससे साफ होता है कि इसका लक्ष्य unauthorized access या सामान्य propagation नहीं, बल्कि numerical results में हेरफेर था
  • सटीक target binaries और workloads दोनों की पूरी पुष्टि न होने के कारण arrays का अर्थ पूरी तरह तय नहीं किया जा सका
  • अगर calculations को किसी अलग system पर verify किया जाए तो ऐसा sabotage विफल हो सकता है, लेकिन यदि एक ही network और security environment साझा करने वाले कई systems पर वही driver deploy किया जाए, तो स्वतंत्र cross-check में mismatch की संभावना भी घट जाती है
  • परिशिष्ट में patch engine के कुछ extracted patterns ज्यों के त्यों दिए गए हैं
    • 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

पैच target उम्मीदवार

  • pattern matching के नतीजों में सबसे मज़बूत overlap वाले target LS-DYNA 970, PKPM, MOHID थे
  • LS-DYNA 970 एक engineering simulation software है जो अत्यधिक परिस्थितियों में materials और structures के behavior का विश्लेषण करता है; यह automobile crash, explosion, impact, metal forming और manufacturing processes को संभालता है, और automotive, aerospace, defense·military research, manufacturing·materials science में इस्तेमाल हुआ है
    • इसका development 1976 से होता आ रहा है
    • MD5 1d2f32c57ae2f2013f513d342925e972
    • SHA1 2fa28ef1c6744bdc2021abd4048eefc777dccf22
    • SHA256 5966513a12a5601b262c4ee4d3e32091feb05b666951d06431c30a8cece83010
    • फ़ाइल आकार 5,225,591 bytes
    • link time 2003-10-24 16:34:57 UTC
    • फ़ाइल प्रकार PE32 executable for MS Windows 4.00 (console), Intel i386, 7 sections
  • PKPM चीन में व्यापक रूप से इस्तेमाल होने वाला एक structural engineering CAD product suite है, जो building structure design के पूरे lifecycle को कवर करने वाले कई executable modules से बना है
    • SATWE floor, beam, column, wall और पूरे frame की 3D structural analysis करने वाला core engine है
    • concrete shear design module identifiers
      • MD5 af4461a149bfd2ba566f2abefe7dcde4
      • SHA1 586edef41c3b3fba87bf0f0346c7e402f86fc11e
      • SHA256 09ca719e06a526f70aadf34fb66b136ed20f923776e6b33a33a9059ef674da22
      • फ़ाइल आकार 7716864 bytes
      • फ़ाइल प्रकार PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections
      • link time 2011-08-26 10:58:17 UTC
    • Building Structure CAD module identifiers
      • MD5 49a8934ccd34e2aaae6ea1e6a6313ffe
      • SHA1 3ce5b358c2ddd116ac9582efbb38354809999cb5
      • SHA256 8b018452fdd64c346af4d97da420681e2e0b55b8c9ce2b8de75e330993b759a0
      • आकार 11849728 bytes
      • link time 2005-12-01 08:35:46 UTC
      • MD5 e0c10106626711f287ff91c0d6314407
      • SHA1 650fc6b3e4f62ecdc1ec5728f36bb46ba0f74d05
      • SHA256 06361562cc53d759fb5a4c2b7aac348e4d23fe59be3b2871b14678365283ca47
      • आकार 16355328 bytes
      • link time 2012-07-07 08:47:11 UTC
    • SATWE structural analysis engine identifiers
      • MD5 2717b58246237b35d44ef2e49712d3a2
      • SHA1 d475ace24b9aedebf431efc68f9db32d5ae761bd
      • SHA256 bd04715c5c43c862c38a4ad6c2167ad082a352881e04a35117af9bbfad8e5613
      • आकार 9908224 bytes
      • link time 2011-01-12 06:37:39 UTC
      • MD5 daea40562458fc7ae1adb812137d3d05
      • SHA1 1ce1111702b765f5c4d09315ff1f0d914f7e5c70
      • SHA256 da2b170994031477091be89c8835ff9db1a5304f3f2f25344654f44d0430ced1
      • आकार 8454144 bytes
      • link time 2012-11-29 03:10:12 UTC
      • MD5 2740a703859cbd8b43425d4a2cacb5ec
      • SHA1 ca665b59bc590292f94c23e04fa458f90d7b20c9
      • SHA256 aeaa389453f04a9e79ff6c8b7b66db7b65d4aaffc6cac0bd7957257a30468e33
      • आकार 16568320 bytes
      • link time 2014-12-30 03:23:43 UTC
      • MD5 ebff5b7d4c5becb8715009df596c5a91
      • SHA1 829f8be65dfe159d2b0dc7ee7a61a017acb54b7b
      • SHA256 37414d9ca87a132ec5081f3e7590d04498237746f9a7479c6b443accee17a062
      • आकार 8089600 bytes
      • link time 2009-04-22 01:46:46 UTC
      • MD5 cb66a4d52a30bfcd980fe50e7e3f73f0
      • SHA1 e6018cd482c012de8b69c64dc3165337bc121b86
      • SHA256 66fe485f29a6405265756aaf7f822b9ceb56e108afabd414ee222ee9657dd7e2
      • आकार 9219072 bytes
      • link time N/A
    • अतिरिक्त PKPM CAD फ़ाइल identifiers
      • MD5 075b4aa105e728f2b659723e3f36c72c
      • SHA1 145ef372c3e9c352eaaa53bb0893749163e49892
      • SHA256 c11a210cb98095422d0d33cbd4e9ecc86b95024f956ede812e17c97e79591cfa
      • आकार 6852608 bytes
      • link time 2012-06-18 10:01:54 UTC
      • MD5 cf859f164870d113608a843e4a9600ab
      • SHA1 952ed694b60c34ba12df9d392269eae3a4f11be4
      • SHA256 7e00030a35504de5c0d16020aa40cbaf5d36561e0716feb8f73235579a7b0909
      • आकार 8392704 bytes
      • link time 2012-11-29 03:10:12 UTC
  • MOHID पुर्तगाल के लिस्बन स्थित Instituto Superior Técnico के MARETEC द्वारा विकसित एक open source water system modeling system है, जो समुद्री·तटीय hydrodynamics, water quality simulation, sediment transport, oil spill modeling और Lagrangian particle tracking को संभालता है
    • उन्होंने कहा कि अभी तक भी हमले के इच्छित प्रभाव की निर्णायक पहचान नहीं हो सकी है
    • MD5 f4dbbb78979c1ee8a1523c77065e18a5
    • SHA1 9e089a733fb2740c0e408b2a25d8f5a451584cf6
    • SHA256 e775049d1ecf68dee870f1a5c36b2f3542d1182782eb497b8ccfd2309c400b3a
    • फ़ाइल आकार 5443584 bytes
    • फ़ाइल प्रकार PE32 executable for MS Windows 4.00 (console), Intel i386, 3 sections
    • link time 2002-10-18 09:29:54 UTC
  • LS-DYNA का उल्लेख ईरान की JCPOA Section T उल्लंघन आशंकाओं से जुड़ी सार्वजनिक रिपोर्टिंग में nuclear weapons development-related computer modeling research के साथ किया गया था

डिटेक्शन नियम और compromise indicators

  • compromise indicators

    • पुष्टि किए गए 3 फ़ाइलें 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, और plaintext variants को पकड़ने के लिए डिज़ाइन किया गया है, और reference hash 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525 है
    • Lua bytecode magic 1B 4C 75 61, build_wormlet_table, unpropagate, scm_wormlet_install, install_implant, start_worm, ok_to_propagate strings का उपयोग करता है
    • Symantec, Sygate Personal Firewall, Zone Labs\TrueVector, Kaspersky Anti-Hacker जैसे कई security product registry keys को conditions में शामिल किया गया है
    • encrypted string byte patterns, 2 crypto constants, storage container length decryption code, और file string वाला storage record signature भी साथ में detect किया जाता है
    • condition 10MB से छोटी फ़ाइल और MZ header के आधार पर $s* में से 3, $rk* में से 12, कोई भी $e*, 2 crypto constants की नज़दीकी placement, और $code1, $stor1 में से किसी एक को पूरा करने पर, या Lua magic और $s* में से 7 को पूरा करने पर true होती है
  • apt_fast16_driver

    • driver या संबंधित project files को पकड़ने के लिए डिज़ाइन किया गया है, और reference hash 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529 है
    • @(#)foo.c :, @(#)par.h :, @(#)pae.h :, @(#)ree.c : जैसे source file identification strings कई बार उपयोग किए जाते हैं
    • \\Device\\fast16, \\??\\fast16, C:\\buildy\\, driver\\fd\\i386\\fast16.pdb, push 0A57Ch ; DeviceType pattern शामिल हैं
    • ExAllocatePool, ExAllocatePoolWithTag, ExFreePool, ExFreePoolWithTag को XOR form में push करने वाले API patterns भी signature में शामिल हैं
    • condition 10MB से छोटी फ़ाइल में MZ header के साथ 2 PDB paths, C:\\buildy\\ और 1 source identifier, #devtype == 3, pe.machine == pe.MACHINE_I386, pe.subsystem == pe.SUBSYSTEM_NATIVE, कोई भी api*, और 2 dev* में से किसी एक को पूरा करने पर, या 6 source identifiers पूरे होने पर true होती है
  • clean_fast16_patchtarget

    • patch target software को detect करता है, इसे most probably clean के रूप में चिह्नित किया गया है, और reference hash 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9 है
    • $el0 से $el99 तक जाने वाले कई byte patterns का उपयोग करता है
    • condition 20MB से छोटी फ़ाइल, MZ header, और defined signatures में से 2 या अधिक match होने पर true होती है
  • apt_fast16_patch

    • patch code खुद detect करता है, और यह statically patched files या memory dump में मौजूद हो सकता है
    • reference hash 0ff6abe0252d4f37a196a1231fae5f26 है
    • $p1, $p2, $p3 तीन byte patterns define करता है
    • condition any of them है, यानी तीन patterns में से सिर्फ एक match होने पर भी detect हो जाएगा

वंशावली और ऐतिहासिक निहितार्थ

  • बाइनरी के अंदर मौजूद @(#)par.h $Revision: 1.3 $ string इस framework की वंशावली का अनुमान लगाने वाला संकेत बनती है
  • @(#) prefix 1970~1980 के दशक के Unix के SCCS/RCS source management convention की ओर इशारा करता है, और mid-2000s Windows kernel driver में ऐसे निशान दुर्लभ हैं
  • ऐसे artifacts सामान्य Windows-only developer की तुलना में, पुराने high-security Unix environments की संस्कृति और toolchain से परिचित लंबे अनुभव वाले engineer के निशानों के अधिक करीब लगते हैं
  • svcmgmt.exe लगभग 10 साल पहले VirusTotal पर upload किया गया था, लेकिन आज भी इसकी detection rate बहुत कम है, और सिर्फ एक engine इसे सीमित confidence के साथ generic malware के रूप में classify करता है
  • ShadowBrokers के Territorial Dispute signature के साथ मिलाकर देखें तो fast16 गंभीर stealth-oriented state-grade cyber sabotage के development timeline को फिर से देखने पर मजबूर करता है
  • fast16 अधिक प्रसिद्ध families से पहले embedded scripting engine, compiler-based narrow targeting, और kernel-level patching को जोड़ने वाली एक सुसंगत संरचना दिखाता है
  • लंबे समय तक इसका सार्वजनिक analysis, named campaigns, या प्रमुख incidents से लगभग कोई connection नहीं मिला, और अंदर छोड़े गए human-readable markers भी *** Nothing to see here – carry on*** जैसी संयमित शैली तक सीमित रहे
  • इसके बाद आने वाले Lua- and LuaJIT-based toolkits की APT evolution flow के बीच एक connecting point के रूप में इसे रखा जाता है

1 टिप्पणियां

 
GN⁺ 2 일 전
Hacker News की राय
  • यह हिस्सा खास तौर पर दिलचस्प लगा
    2005 के Windows kernel code में SCCS/RCS notation दिखना ऐसा बताया गया था जैसे आज के ऑफिस में rotary phone दिख जाए, और यह तुलना काफ़ी भरोसेमंद लगी
    2006 में जिस astrophysics lab में मैंने काम किया था, वहाँ भी अब तक svn इस्तेमाल हो रहा था, और codebase में 70~80 के दशक के सिस्टम की छाप लिए बहुत सा Fortran था
    फिर भी modern optimizing compilers की वजह से सब ठीक चलता था, और 90 के दशक में Vax से Linux पर migration भी हैरान कर देने वाली तरह smooth था
    इससे मुझे पुरानी do over or make due presentation याद आ गई, जिसका मतलब मोटे तौर पर यह था कि अगर कोई बड़ा codebase जैसे-तैसे modern tools से जोड़-तोड़ कर चलाया जा सकता है, तो उसे पूरा का पूरा फिर से लिखना अक्सर उतना क़ीमती नहीं होता

    • मैं 2012 के आसपास तक ऐसी कंपनी में काम करता था जो RCS-based SCM इस्तेमाल करती थी, और वह shared file server के ऊपर RCS को जबरन लपेटकर बनाया गया एक जुगाड़ू सिस्टम था
      उसका नाम MKS था, और वह किसी खास revision tree को "project file" के रूप में मैनेज करता था, लेकिन Java EE में दोबारा बनाए गए version की बजाय 90 के दशक के पुराने सिस्टम जैसा लगता था
      फ़ाइलों के ऊपर $Revision: 1.3 $ जैसे tags और changelog होते थे, लेकिन कई नई फ़ाइलों में tag डाला ही नहीं गया था, इसलिए replacement भी नहीं होता था और consistency पूरी तरह बिखरी हुई थी
      target device family की शुरुआत mid-90s में हुई थी, लेकिन उस समय का code असल में शायद ही 5 साल से ज़्यादा पुराना था
      इंजीनियर सिर्फ़ कुछ दर्जन थे, फिर भी commit conflicts अक्सर होते थे और पूरा tree बार-बार टूट जाता था
      मज़े के लिए मैंने पूरा history पढ़कर उसे git में लाने वाली script लिखी थी, लेकिन कुछ साल पीछे जाते ही records पूरी तरह अस्त-व्यस्त निकले
      पता नहीं वे तब तक उसी पर क्यों टिके रहे, लेकिन hardware कंपनियाँ अपेक्षा से कहीं हाल तक source control को बस "remote shared folder" जैसा ही मानती रही होंगी, इसलिए software वाली version control उनकी priority नहीं रही होगी
    • अगर 2026 में आप R इस्तेमाल कर रहे हैं, तो बहुत संभावना है कि कहीं न कहीं आप 70~80 के दशक के Fortran से compile हुए code को ज़रूर call कर रहे होंगे
      numerical computing की दुनिया में वही वंशावली अब भी बुनियाद की भूमिका निभाती है
    • पहले मैं Stuxnet के state-backed होने के दावे पर थोड़ा शक करता था, लेकिन ऐसे notes देखकर समझ आता है कि लोग ऐसा अनुमान क्यों लगाते थे
      2000s तक भी RCS का इस्तेमाल सचमुच कई जगह हो रहा था, और tool के रूप में उसमें SVN या CVS से बेहतर बातें भी थीं
    • तब क्या इसका मतलब यह है कि ऐसी 3-letter acronym agencies हर तरह के malware के लिए उस domain के लोगों को खींच ला सकती थीं?
      मसलन, fast16 शायद किसी ऐसे व्यक्ति ने लिखा हो जो मूल रूप से scientific computing software बनाता था, और Stunex किसी ऐसे ने जो Siemens में काम करता था
    • Refactoring हर बीमारी की दवा नहीं है
      अगर वे कारण जस के तस बने रहें जिनकी वजह से code को refactoring की ज़रूरत पड़ी, तो अंत में चीज़ें फिर उसी हालत में लौट आती हैं
      ऐसे कारण अक्सर developer की आदतों, मान्यताओं, और professional trauma जैसी मनोवैज्ञानिक परतों तक गहरे धँसे होते हैं
      ऊपर से Conway's Law भी जुड़ जाए, तो टीम आख़िरकार बड़े organizational structure जैसी software ही बनाएगी, और organization नहीं बदले तो refactoring के नतीजे भी ज़्यादातर दोहराए जाते हैं
      अपवाद तब होते हैं जब आप किसी दूसरी टीम का codebase या किसी predecessor का code लेकर उसकी structure फिर से जमाते हैं
      लेकिन वही लोग जब अपने ही code की refactoring घोषित करते हैं, तो अक्सर वे बस अपने लिए एक और सुविधाजनक mousetrap बना लेते हैं
      अपनी सोच के उत्पाद को बार-बार सुधारते रहना ठीक है, लेकिन अगर merry-go-round से उतरना है, तो bad architecture के कारणों को लिखना और ख़ुद का ठंडे दिमाग़ से आकलन करना ज़रूरी है
      बहुत से developers जिस बात पर यक़ीन करना चाहते हैं, वह कि "अगर आप सावधान और मेहनती हों तो थोड़ा खराब design भी अच्छी तरह implement हो सकता है", आम तौर पर सही नहीं होती
      आख़िरकार जड़ design ही है; उससे उगे पेड़ को या तो स्वीकार करना होगा या काटना होगा, सिर्फ़ pruning से काम नहीं चलेगा
  • यह लेख काफ़ी सिहराने वाला लगा
    सिर्फ़ यह तथ्य ही काफ़ी अशुभ है कि यह malware 20 साल तक detection systems के नीचे छिपा रहा

  • जिसे दिलचस्पी हो उसके लिए download link
    https://bazaar.abuse.ch/sample/9a10e1faa86a5d39417cae44da5ad...
    मेरा अंदाज़ा है कि लोग पहले Windows XP VM बनाएँगे

    • सोच रहा हूँ, क्या अभी तक Windows service file भी अपलोड हुई है?
      यह तो सिर्फ़ loader लग रहा है
  • IEEE-754 सिर्फ़ +-*/ और sqrt के लिए correct rounding अनिवार्य करता है
    sin/cos/exp/log/pow जैसे transcendental functions में आख़िरी कुछ ULP के अंतर की गुंजाइश रहती है, और glibc, musl, MSVC, Intel SVML भी व्यवहार में ऐसा ही करते हैं
    PID ज़्यादातर basic operations ही इस्तेमाल करता है, इसलिए libm के फ़र्क़ का असर कम पड़ता है, लेकिन motor vector control या sensor linearization हर cycle में ऐसे functions छूते हैं, इसलिए छोटी असमानताएँ जमा होती रहती हैं
    इसलिए source code diff बिल्कुल न होने पर भी सिर्फ़ linked libm बदलने से field behavior drift कर सकता है
    ऐसे फ़र्क़ Payne-Hanek argument reduction या worst-case table-maker's dilemma boundary पर सचमुच सामने आते हैं
    शायद इसी वजह से safety-critical systems की guidelines सिर्फ़ "IEEE-754 compliant" लिखकर नहीं छोड़तीं, बल्कि खास libm build को pin करती हैं

  • वाकई ज़बरदस्त खोज है
    बहुत जिज्ञासा है कि ये rules ठीक किस target के लिए थे और इन्होंने नतीजों को कैसे बदला
    हो सकता है इन्हें इस तरह बनाया गया हो कि reactor जैसी किसी बहुत specific simulation condition में ही अंतर पैदा हो

    • मैंने थोड़ा देखा कि LS-DYNA जैसे software के साथ छेड़छाड़ कैसे की जा सकती है
      उदाहरण के लिए, सार्वजनिक manual [1] में दिया गया EOS_JWL equation वह formula है जिसे LS-DYNA implement करता है, और दूसरे formulas के साथ मिलाकर यह शायद ऐसी चीज़ें गणना करने में काम आ सकता है जैसे missile warhead के detonator को main charge फोड़ने में कितना समय लगे ताकि 20m दूरी पर एक खास pressure wave बने
      उस नतीजे को उल्टा इस्तेमाल करके ज़रूरी fuze timing का अनुमान भी लगाया जा सकता है
      LS-DYNA में इस्तेमाल होने वाले equations और parameters [2] जैसे scientific research से आते हैं, और यह 1980s की अमेरिकी सरकारी high explosives research है
      इसमें ऐसे experiments भी शामिल हैं जो मापते हैं कि explosive उसे घेरे हुए अलग-अलग materials के साथ friction में कैसा व्यवहार करता है
      जब explosive modeling के equations पहले से तैयार हों, तो उन equations में हल्का-सा बदलाव करके friction coefficient में ±20% noise जोड़ देने पर भी scientists या engineers को software tampering से पहले steel manufacturing quality की समस्या पर शक होने की संभावना ज़्यादा है
      आधुनिक उदाहरण के तौर पर सोचिए कि कोई hostile state किसी Chinese cracking group द्वारा Chinese forum पर डाली गई Ansys Autodyn 2026 R1 की pirated copy रूस के किसी ISP के पीछे छिपे कुछ seeders से लेकर इस्तेमाल कर रही हो
      फिर बाद में जब experimental values और calculated values बार-बार न मिलें, तब जाकर शक हो कि pirated copy जानबूझकर tamper की गई होगी
      हालाँकि अभी उस hostile state के लिए किसी random university या aerospace/defense consulting company के hacked network से legitimate copy निकाल लेना शायद ज़्यादा आसान हो
      यह मान लेना भी भोला होगा कि 2026 की hostile state software को शुरू से बना ही नहीं सकती, और वह manual calculations या experiments पर निर्भर रहकर भी मनचाहा परिणाम पा सकती है
      आख़िर manufacturing quality verify करने के लिए experimental equipment और capability तो मूल रूप से चाहिए ही
      Simulation software का काम मुख्यतः model-making और physical experiments की संख्या घटाकर लागत और समय बचाना है
      उदाहरण के लिए [3] की तरह किसी shell के armor plate से टकराने वाली स्थिति को 1000 बार चलाना सस्ता है, लेकिन असल दुनिया में उसे दोहराना कहीं ज़्यादा महँगा और समय लेने वाला है
      [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
  • मैं चाहता हूँ कि जब लोग मेरी सार्वजनिक की गई चीज़ों पर RCS revision data लगे देखें, तो वे कम से कम एक पल को ठिठकें

  • हाल में मैंने Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers, by Andy Greenberg पढ़ी
    काफ़ी अच्छी लगी, और चूँकि नई जानकारी लगातार आ रही है, शायद इसकी sequel series की ज़रूरत पड़े

  • Guix और reproducible computing को PowerPC या legacy machines तक port होते देख कर लगता है कि सरकारें, 1984 जैसी संस्थाएँ, और Middle East के कुछ संगठन इसे सच में नापसंद करेंगे
    environment जितना ज़्यादा heterogeneous होगा, उतना फ़ायदा होगा

  • असली key factor है worm
    दूसरी मशीन पर जाँच करने पर भी वह पकड़ा नहीं जाता, क्योंकि शुरू से कोई साफ़ दूसरी मशीन मौजूद ही नहीं होती

  • खोज तो दिलचस्प है, लेकिन source control पर की गई टिप्पणी थोड़ी misaligned भी लगती है
    उस दौर में SCCS जैसे tools अब भी कहीं-कहीं रहे होंगे, और एक पल को यह भी याद नहीं रहा कि CVS का style कुछ वैसा था या नहीं

    • मेरा ख़याल है उस टिप्पणी का मतलब शायद यह था कि Windows software में यह दुर्लभ था
      यह संकेत देता है कि developers पहले UNIX side पर भी काम कर चुके थे, क्योंकि SCCS/RCS वहाँ आम थे