Fast16: Stuxnet से 5 साल पहले का उच्च-सटीकता वाला software sabotage
(sentinelone.com)- 2005 में बनाया गया undocumented sabotage framework, जिसे चुने गए calculation software के memory code को patch करके संख्यात्मक परिणामों को विकृत करने के लिए डिज़ाइन किया गया था
svcmgmt.exeऊपर से service wrapper जैसा दिखता है, लेकिन इसके भीतर Lua 5.0 virtual machine, encrypted bytecode, auxiliary DLL, औरfast16.sysdriver मौजूद हैं, जो 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 के
fast16marker के साथ जोड़ने पर यह सामने आता है कि Stuxnet से पहले के दौर में भी precision industrial sabotage embedded scripting, narrow targeting, और kernel patching के संयोजन के रूप में मौजूद था
अवलोकन और पहचान के सुराग
fast16एक undocumented cyber sabotage framework है जिसके core components 2005 के हैं; इसमेंfast16.syshigh-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.pdbstring, 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 और-rargument लगे command, इन दो child processes को बनाने वाले Wrapper/Proxy mode में काम करता है
- इसके internal storage में encrypted Lua bytecode, auxiliary DLL, और
fast16.sysdriver साथ में मौजूद हैं - Lua environment को default स्थिति से आगे बढ़ाकर expand किया गया है, और इसमें
wstringmodule, built-in symmetric crypto functionb, तथा 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,
SvcMgmtservice install/start, conditionallyfast16.sysdeployment, 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\InstalledAppsHKLM\SOFTWARE\Sygate Technologies, Inc.\Sygate Personal FirewallHKLM\SOFTWARE\TrendMicro\PFWHKLM\SOFTWARE\Zone Labs\TrueVectorHKLM\SOFTWARE\F-SecureHKLM\SOFTWARE\Network Ice\BlackIceHKLM\SOFTWARE\McAfee.com\Personal FirewallHKLM\SOFTWARE\ComputerAssociates\eTrust EZ ArmorHKLM\SOFTWARE\RedCannon\FireballHKLM\SOFTWARE\Kerio\Personal Firewall 4HKLM\SOFTWARE\KasperskyLab\InstalledProducts\Kaspersky Anti-HackerHKLM\SOFTWARE\Tiny Software\Tiny FirewallHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Look n Stop 2.05p2HKCU\SOFTWARE\Soft4EverHKLM\SOFTWARE\Norman Data Defense SystemsHKLM\SOFTWARE\Agnitum\Outpost FirewallHKLM\SOFTWARE\Panda Software\FirewallHKLM\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)
- Windows
ड्राइवर संरचना और मेमोरी पैच करने का तरीका
fast16.sysइस फ्रेमवर्क का सबसे शक्तिशाली कंपोनेंट है, जिसे boot-start filesystem driver के रूप में सेट किया गया है, इसलिए यह disk driver के साथ बहुत शुरुआती चरण में लोड होता है- इसकी सेटिंग
Start=0,Type=2,SCSIclass group है, और यहNTFS,FAT,MRxSMBके ऊपर खुद को insert करता है - शुरुआती entry पर यह
Session Manager\PrefetchParametersके तहतEnablePrefetcherमान को 0 पर सेट करता है, ताकि बाद के code page requests पूरे filesystem stack से होकर गुजरें - साधारण XOR string encryption और
ntoskrnl.exescan के ज़रिए यह kernel API को dynamically resolve करता है, और\Device\fast16,\??\fast16, customDeviceType0xA57C को 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 मौजूद हो
- filename
- यह शर्त 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
- filename
नियम-आधारित पैच इंजन और 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 00D8 E1 D9 5D FC D9 04 0055 8B EC 83 EC 14 53 56 57 8B 3D ?? ?? ?? ?? 8B 0D 008D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? 83 C4 38 EB 0E 83 EC 04 00B9 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
- MD5
- 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
- MD5
- 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
- MD5
- अतिरिक्त 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
- MD5
- 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: MD50ff6abe0252d4f37a196a1231fae5f26, SHA192e9dcaf7249110047ef121b7586c81d4b8cb4e5, SHA25607c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529connotify.dll: MD5410eddfc19de44249897986ecc8ac449, SHA1675cb83cec5f25ebbe8d9f90dea3d836fcb1c234, SHA2568fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9svcmgmt.exe: MD5dbe51eabebf9d4ef9581ef99844a2944, SHA1de584703c78a60a56028f9834086facd1401b355, SHA2569a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
-
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_propagatestrings का उपयोग करता है 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, और
filestring वाला storage record signature भी साथ में detect किया जाता है - condition 10MB से छोटी फ़ाइल और MZ header के आधार पर
$s*में से 3,$rk*में से 12, कोई भी$e*, 2 crypto constants की नज़दीकी placement, और$code1,$stor1में से किसी एक को पूरा करने पर, या Lua magic और$s*में से 7 को पूरा करने पर true होती है
- carrier, Lua payload, और plaintext variants को पकड़ने के लिए डिज़ाइन किया गया है, और reference hash
-
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 ; DeviceTypepattern शामिल हैं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*, और 2dev*में से किसी एक को पूरा करने पर, या 6 source identifiers पूरे होने पर true होती है
- driver या संबंधित project files को पकड़ने के लिए डिज़ाइन किया गया है, और reference hash
-
clean_fast16_patchtarget
- patch target software को detect करता है, इसे
most probably cleanके रूप में चिह्नित किया गया है, और reference hash8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9है $el0से$el99तक जाने वाले कई byte patterns का उपयोग करता है- condition 20MB से छोटी फ़ाइल, MZ header, और defined signatures में से 2 या अधिक match होने पर true होती है
- patch target software को detect करता है, इसे
-
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 टिप्पणियां
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 से जोड़-तोड़ कर चलाया जा सकता है, तो उसे पूरा का पूरा फिर से लिखना अक्सर उतना क़ीमती नहीं होता
उसका नाम 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 नहीं रही होगी
numerical computing की दुनिया में वही वंशावली अब भी बुनियाद की भूमिका निभाती है
2000s तक भी RCS का इस्तेमाल सचमुच कई जगह हो रहा था, और tool के रूप में उसमें SVN या CVS से बेहतर बातें भी थीं
मसलन, fast16 शायद किसी ऐसे व्यक्ति ने लिखा हो जो मूल रूप से scientific computing software बनाता था, और Stunex किसी ऐसे ने जो Siemens में काम करता था
अगर वे कारण जस के तस बने रहें जिनकी वजह से 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 बनाएँगे
यह तो सिर्फ़ 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 में ही अंतर पैदा हो
उदाहरण के लिए, सार्वजनिक 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 कुछ वैसा था या नहीं
यह संकेत देता है कि developers पहले UNIX side पर भी काम कर चुके थे, क्योंकि SCCS/RCS वहाँ आम थे