2 คะแนน โดย GN⁺ 2 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น เฟรมเวิร์กก่อวินาศกรรมที่ไม่มีเอกสารอธิบายซึ่งสร้างขึ้นในปี 2005 ออกแบบมาเพื่อแพตช์โค้ดในหน่วยความจำของซอฟต์แวร์คำนวณที่เลือกไว้ และ บิดเบือนผลลัพธ์เชิงตัวเลข
  • svcmgmt.exe ภายนอกดูเหมือน service wrapper แต่ภายในบรรจุ Lua 5.0 virtual machine, ไบต์โค้ดที่เข้ารหัส, DLL เสริม และไดรเวอร์ fast16.sys เพื่อแยกรันเพย์โหลดตามงาน
  • fast16.sys เป็น ไดรเวอร์ไฟล์ซิสเต็มที่เริ่มทำงานตั้งแต่บูต ซึ่งถูกโหลดตั้งแต่ระยะเริ่มต้นมาก ก่อนจะเลือก .EXE ที่คอมไพล์ด้วย Intel C/C++ compiler แล้วทำ memory patching ในระดับเคอร์เนล
  • เอนจินแพตช์ทำงานด้วย กฎ 101 ข้อ โดยเฉพาะการใช้บล็อกคำสั่ง FPU เพื่อเปลี่ยนการสเกลค่าภายในอาร์เรย์ ทิ้งร่องรอยว่าเล็งเป้าไปยังเครื่องมือคำนวณเฉพาะทาง เช่น วิศวกรรมโยธา ฟิสิกส์ และการจำลองกระบวนการ
  • เมื่อนำไปรวมกับเครื่องหมาย fast16 จากข้อมูลรั่วของ ShadowBrokers จะเห็นว่า การก่อวินาศกรรมอุตสาหกรรมแบบแม่นยำในยุคก่อน Stuxnet มีอยู่แล้วในรูปแบบที่ผสาน embedded scripting, การเลือกเป้าแบบแคบ, และ kernel patching

ภาพรวมและเบาะแสการระบุตัวตน

  • fast16 เป็นเฟรมเวิร์กไซเบอร์ซาโบตาจที่ไม่มีเอกสารอธิบายและมี คอมโพเนนต์แกนหลักจากปี 2005 โดย fast16.sys จะเลือกเล็งเป้า ซอฟต์แวร์คำนวณความแม่นยำสูง ทำการแพตช์โค้ดในหน่วยความจำและบิดเบือนผลการคำนวณ
  • svcmgmt.exe ภายนอกดูเหมือน service wrapper ทั่วไปในยุค Windows 2000/XP แต่ภายในบรรจุ Lua 5.0 virtual machine และ คอนเทนเนอร์ไบต์โค้ดที่เข้ารหัส ซึ่งถูกคลายออกโดย service entry point
  • ระหว่างการสำรวจมัลแวร์ที่ใช้ Lua นั้น magic byte ของไบต์โค้ด 1B 4C 75 61, version byte, LUA_PATH และ C API เฉพาะตัว กลายเป็นเบาะแสสำคัญ และในกระแสนั้นเองจึงระบุ svcmgmt.exe ได้
  • สตริง C:\buildy\driver\fd\i386\fast16.pdb ภายใน svcmgmt.exe กลายเป็นเบาะแสทางนิติวิทยาศาสตร์ดิจิทัลที่เชื่อมไฟล์ปฏิบัติการของบริการเข้ากับโปรเจกต์เคอร์เนลไดรเวอร์
  • ใน drv_list.txt จากข้อมูลรั่วของ ShadowBrokers ปี 2017 ก็มีชื่อ fast16 เดียวกันปรากฏอยู่ ทำให้เชื่อมสตริง PDB ใน svcmgmt.exe กับไดรเวอร์สำหรับงานซาโบตาจแบบแม่นยำเข้าเป็นเส้นเรื่องเดียวกัน
  • ฝั่ง ShadowBrokers ยังมี signature สำหรับหลบเลี่ยงที่รวมข้อความ fast16 *** Nothing to see here – carry on***

โครงสร้างตัวพาและวิธีการทำงาน

  • svcmgmt.exe ถูกออกแบบเป็นตัวพาแบบปรับตัวได้ที่เปลี่ยนพฤติกรรมตาม อาร์กิวเมนต์บรรทัดคำสั่ง
    • ไม่มีอาร์กิวเมนต์: รันเป็นบริการ Windows
    • -p: ตั้งค่า InstallFlag = 1 แล้วรันเป็นบริการ
    • -i: ตั้งค่า InstallFlag = 1 แล้วรันโค้ด Lua
    • -r: รันโค้ด Lua โดยไม่ตั้งแฟล็กการติดตั้ง
    • อื่น ๆ <filename>: ทำงานในโหมด Wrapper/Proxy โดยสร้าง child process สองตัว ตัวหนึ่งด้วยคำสั่งเดิม และอีกตัวเพิ่มอาร์กิวเมนต์ -r
  • ภายในสตอเรจมีทั้ง Lua bytecode ที่เข้ารหัส, DLL เสริม และไดรเวอร์ fast16.sys
  • สภาพแวดล้อม Lua ถูกขยายเกินกว่าค่าพื้นฐาน โดยมีโมดูล wstring, ฟังก์ชันเข้ารหัสแบบสมมาตรในตัว b, และโมดูล binding สำหรับ Windows NT filesystem, registry, service control และ network API
  • ไบนารีตัวพาภายนอกถูกคงไว้ให้ค่อนข้างเสถียร ขณะที่เพย์โหลดเฉพาะงานถูกแยกเก็บในรูปแบบเข้ารหัส เพื่อให้นำกลับใช้ซ้ำได้ตามสภาพแวดล้อมและเป้าหมายของปฏิบัติการ
  • ค่าระบุตัวตนของ svcmgmt.exe มีดังนี้
    • ชื่อไฟล์ svcmgmt.exe
    • ขนาด 315,392 bytes
    • MD5 dbe51eabebf9d4ef9581ef99844a2944
    • SHA1 de584703c78a60a56028f9834086facd1401b355
    • SHA256 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
    • ประเภท PE32 executable for MS Windows 4.00 (console), Intel i386
    • เวลาเชื่อมลิงก์ 2005-08-30 18:15:06 UTC

โครงสร้างการแพร่กระจายแบบ wormlet และการหลบเลี่ยง

  • svcmgmt.exe ทำงานคล้ายตัวพาแบบคลัสเตอร์ที่สามารถบรรทุก wormlet ได้หลายตัว และในตัวอย่างที่ยืนยันแล้วพบเพียง SCM wormlet ตัวเดียว
  • ลำดับการทำงานประกอบด้วยการเตรียมค่าคอนฟิก การแปลง wide string การยกระดับสิทธิ์ การติดตั้งและเริ่มบริการ SvcMgmt การวาง fast16.sys แบบมีเงื่อนไข การปล่อย wormlet การหน่วงเวลาเริ่มต้น และการวนซ้ำทำงานจนถึงเกณฑ์ความล้มเหลวหรือเงื่อนไขยุติจากภายนอก
  • SCM wormlet เล็งเป้าไปยังสภาพแวดล้อม Windows 2000/XP โดยค้นหาเซิร์ฟเวอร์ในเครือข่ายผ่าน file share ที่ตั้งรหัสผ่านผู้ดูแลระบบแบบอ่อนแอหรือค่าเริ่มต้น คัดลอกเพย์โหลดเข้าไป แล้วเริ่มบริการจากระยะไกล
  • การแพร่กระจายไม่ได้อาศัยโปรโตคอลเครือข่ายแบบปรับแต่งเอง แต่พึ่งพาฟังก์ชันการจัดการมาตรฐานของ Windows เช่น service control API และ file sharing API
  • ก่อนติดตั้ง ok_to_install() จะเรียก ok_to_propagate() เพื่อตรวจสอบสภาพแวดล้อม และหากไม่มีการบังคับด้วยมือ จะตัดสินความเป็นไปได้ในการแพร่กระจายจากการมีอยู่ของ registry key ของผลิตภัณฑ์ความปลอดภัยบางรายการ
  • หากพบ registry key ใด ๆ ต่อไปนี้ จะยกเลิกการติดตั้งเพื่อหลีกเลี่ยงการกระจายไปยังสภาพแวดล้อมสำหรับมอนิเตอร์
    • 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 ทำหน้าที่เป็นช่องทางรายงานผลแบบขั้นต่ำ
    • ถูกลงทะเบียนผ่าน Windows AddConnectNotify() API และจะถูกเรียกทุกครั้งที่มีการเชื่อมต่อเครือข่ายใหม่แบบ RAS
    • ถอดรหัสสตริงที่ทำให้อ่านยากเพื่อให้ได้ named pipe \\.\pipe\p577 จากนั้นเชื่อมต่อกับ local pipe, บันทึกชื่อการเชื่อมต่อแบบ remote/local แล้วจบการทำงาน
    • ไม่ใช่โมดูลรันเดี่ยวและต้องอาศัยการลงทะเบียนจากโฮสต์โปรเซส
    • ชื่อไฟล์ svcmgmt.dll
    • ขนาด 45056 bytes
    • MD5 410eddfc19de44249897986ecc8ac449
    • SHA1 675cb83cec5f25ebbe8d9f90dea3d836fcb1c234
    • SHA256 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
    • เวลาเชื่อมลิงก์ 2005-06-06 18:42:45 UTC
    • ประเภท PE32 DLL (i386, 4 sections)

โครงสร้างไดรเวอร์และวิธีการแพตช์หน่วยความจำ

  • fast16.sys เป็นคอมโพเนนต์ที่ทรงพลังที่สุดในเฟรมเวิร์ก โดยถูกตั้งค่าเป็น boot-start filesystem driver จึงถูกโหลดในระยะเริ่มต้นมากร่วมกับไดรเวอร์ดิสก์
  • การตั้งค่าคือ Start=0, Type=2, กลุ่มคลาส SCSI และแทรกตัวเองไว้เหนือ NTFS, FAT, MRxSMB
  • เมื่อเริ่มทำงานในช่วงแรก จะตั้งค่า EnablePrefetcher ใต้ Session Manager\PrefetchParameters เป็น 0 เพื่อให้คำขอ code page หลังจากนั้นต้องผ่านทั้งสแตกของไฟล์ซิสเต็ม
  • ใช้การเข้ารหัสสตริงแบบ XOR อย่างง่ายและการสแกน ntoskrnl.exe เพื่อ resolve kernel API แบบไดนามิก และเปิดเผย \Device\fast16, \??\fast16 รวมถึง DeviceType แบบกำหนดเอง 0xA57C
  • ใช้ IoRegisterFsRegistrationChange เพื่อติด worker device object ไว้เหนืออุปกรณ์ไฟล์ซิสเต็มที่มีอยู่และที่เพิ่มเข้ามาใหม่ แล้วดักเส้นทางที่เกี่ยวข้องกับ IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_CLOSE, IRP_MJ_QUERY_INFORMATION, IRP_MJ_FILE_SYSTEM_CONTROL และ Fast I/O ที่เกี่ยวข้อง
  • แม้จะถูกโหลดตั้งแต่ช่วงบูต แต่ เอนจินฉีดโค้ดระดับเคอร์เนล ที่แท้จริงจะทำงานหลังจาก explorer.exe ถูกเปิดแล้วเท่านั้น
  • เป้าหมายที่จะถูกแพตช์ต้องตรงตามสองเงื่อนไขพร้อมกัน
    • ชื่อไฟล์ลงท้ายด้วย .EXE
    • มีสตริง ASCII ที่พิมพ์ได้ซึ่งขึ้นต้นด้วย Intel อยู่ถัดจาก PE section header สุดท้ายทันที
  • เงื่อนไขนี้ชี้ว่าเจาะจงไฟล์ปฏิบัติการที่ build ด้วย Intel C/C++ compiler และแสดงให้เห็นว่าผู้โจมตีรู้จัก toolchain ของซอฟต์แวร์เป้าหมาย
  • สำหรับไฟล์ที่ตรงเงื่อนไข จะมีการแก้ไข PE header ในหน่วยความจำ โดยฉีดสองเซกชันใหม่คือ .xdata, .pdata และเติมไบต์ของเซกชันโค้ดเดิมลงไปเพื่อเก็บสำเนาโค้ดที่สะอาดไว้
  • ค่าระบุตัวตนของ fast16.sys มีดังนี้
    • ชื่อไฟล์ fast16.sys
    • ขนาด 44,580 bytes
    • MD5 0ff6abe0252d4f37a196a1231fae5f26
    • SHA1 92e9dcaf7249110047ef121b7586c81d4b8cb4e5
    • SHA256 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
    • ประเภท PE32 executable for MS Windows 5.00 (native), Intel i386, 5 sections
    • เวลาลิงก์ 2005-07-19 15:15:41 UTC

เอนจินแพตช์แบบอิงกฎและลักษณะของเป้าหมาย

  • เอนจินแพตช์เป็นสแกนเนอร์แบบอาศัยสถานะขนาดเล็กที่ประกอบด้วย 101 กฎ โดยจะเปลี่ยนโค้ดที่รันอยู่ในหน่วยความจำอย่างเงียบ ๆ ด้วยตรรกะการจับคู่แพตเทิร์นและการแทนที่ ขณะไฟล์ถูกอ่านจากดิสก์
  • เพื่อคงประสิทธิภาพไว้ มันใช้ dispatch array ขนาด 256 ไบต์เพื่อคัดกรองบางไบต์เริ่มต้นอย่างรวดเร็ว อนุญาต wildcard ภายในแพตเทิร์น และบางกฎจะตั้งค่า/ตรวจสอบ state flag เพื่อทำลำดับการแก้ไขหลายขั้น
  • แพตเทิร์นแพตช์ส่วนใหญ่สอดคล้องกับลำดับคำสั่งทั่วไปในโค้ด x86 ที่ใช้ยึดหรือมีผลต่อ execution flow แต่มีอยู่หนึ่งรายการที่ประกอบด้วย บล็อกคำสั่ง FPU ขนาดใหญ่กว่ามาก
  • บล็อก FPU นี้เป็นโค้ดเฉพาะสำหรับเลขคณิตความแม่นยำสูงและการสเกลค่าของอาร์เรย์ภายใน ซึ่งมีลักษณะแตกต่างจากการฉีดโค้ดอันตรายทั่วไป
  • นักวิจัยได้แปลงกฎแพตช์เป็นแพตเทิร์นเลขฐานสิบหกของ YARA signature แล้วนำไปใช้กับคอร์ปัสซอฟต์แวร์ร่วมสมัย และพบว่าไฟล์ที่ตรงสองแพตเทิร์นขึ้นไปมีน้อยมาก ไม่ถึง 10 ไฟล์
  • ไฟล์ที่ตรวจพบมีจุดร่วมคือเป็น เครื่องมือคำนวณเฉพาะทาง ในสาขาอย่างวิศวกรรมโยธา ฟิสิกส์ และการจำลองกระบวนการทางกายภาพ
  • แพตช์ FPU จะสเกลค่าที่ส่งเข้าไปยังอาร์เรย์ภายในสามชุดเพื่อปรับการคำนวณอย่างละเอียด ซึ่งแสดงให้เห็นว่าเป้าหมายไม่ใช่การเข้าถึงโดยไม่ได้รับอนุญาตหรือการแพร่กระจายทั่วไป แต่เป็น การบิดเบือนผลลัพธ์เชิงตัวเลข
  • เนื่องจากยังยืนยันทั้งไบนารีเป้าหมายที่แน่ชัดและเวิร์กโหลดได้ไม่ครบถ้วน ความหมายของอาร์เรย์เหล่านั้นจึงยังไม่อาจระบุได้ทั้งหมด
  • การตรวจสอบผลการคำนวณบนระบบแยกต่างหากอาจทำให้การก่อวินาศกรรมแบบนี้ล้มเหลวได้ แต่หากไดรเวอร์ตัวเดียวกันถูกกระจายไปยังหลายระบบที่ใช้เครือข่ายและสภาพแวดล้อมความปลอดภัยเดียวกัน ก็จะลด โอกาสเกิดความไม่สอดคล้องจากการตรวจคำนวณแบบอิสระ ลงด้วย
  • ภาคผนวกได้แนบแพตเทิร์นที่ดึงมาบางส่วนของเอนจินแพตช์ไว้ตามเดิม
    • 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

ผู้สมัครเป้าหมายของแพตช์

  • เป้าหมายที่ผลการจับคู่แพตเทิร์นซ้อนทับกันมากที่สุดคือ LS-DYNA 970, PKPM, และ MOHID
  • LS-DYNA 970 เป็นซอฟต์แวร์จำลองทางวิศวกรรมที่ใช้วิเคราะห์พฤติกรรมของวัสดุและโครงสร้างภายใต้สภาวะสุดขั้ว ครอบคลุมการชนของรถยนต์ การระเบิด แรงกระแทก การขึ้นรูปโลหะ และกระบวนการผลิต และถูกใช้ในอุตสาหกรรมยานยนต์ อากาศยานและอวกาศ งานวิจัยด้านกลาโหมและการทหาร การผลิต และวัสดุศาสตร์
    • พัฒนามาตั้งแต่ปี 1976
    • MD5 1d2f32c57ae2f2013f513d342925e972
    • SHA1 2fa28ef1c6744bdc2021abd4048eefc777dccf22
    • SHA256 5966513a12a5601b262c4ee4d3e32091feb05b666951d06431c30a8cece83010
    • ขนาดไฟล์ 5,225,591 bytes
    • เวลาเชื่อมลิงก์ 2003-10-24 16:34:57 UTC
    • ประเภทไฟล์ PE32 executable for MS Windows 4.00 (console), Intel i386, 7 sections
  • PKPM เป็น ชุดผลิตภัณฑ์ CAD วิศวกรรมโครงสร้าง ที่ใช้กันอย่างแพร่หลายในจีน ประกอบด้วยโมดูลปฏิบัติการหลายตัวที่ครอบคลุมวงจรการออกแบบโครงสร้างอาคารทั้งหมด
    • SATWE เป็นเอนจินหลักที่รับหน้าที่วิเคราะห์โครงสร้างสามมิติของพื้น คาน เสา ผนัง และเฟรมโดยรวม
    • ค่า identifier ของโมดูลออกแบบคอนกรีตรับแรงเฉือน
      • MD5 af4461a149bfd2ba566f2abefe7dcde4
      • SHA1 586edef41c3b3fba87bf0f0346c7e402f86fc11e
      • SHA256 09ca719e06a526f70aadf34fb66b136ed20f923776e6b33a33a9059ef674da22
      • ขนาดไฟล์ 7716864 bytes
      • ประเภทไฟล์ PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections
      • เวลาเชื่อมลิงก์ 2011-08-26 10:58:17 UTC
    • ค่า identifier ของโมดูล Building Structure CAD
      • MD5 49a8934ccd34e2aaae6ea1e6a6313ffe
      • SHA1 3ce5b358c2ddd116ac9582efbb38354809999cb5
      • SHA256 8b018452fdd64c346af4d97da420681e2e0b55b8c9ce2b8de75e330993b759a0
      • ขนาด 11849728 bytes
      • เวลาเชื่อมลิงก์ 2005-12-01 08:35:46 UTC
      • MD5 e0c10106626711f287ff91c0d6314407
      • SHA1 650fc6b3e4f62ecdc1ec5728f36bb46ba0f74d05
      • SHA256 06361562cc53d759fb5a4c2b7aac348e4d23fe59be3b2871b14678365283ca47
      • ขนาด 16355328 bytes
      • เวลาเชื่อมลิงก์ 2012-07-07 08:47:11 UTC
    • ค่า identifier ของเอนจินวิเคราะห์โครงสร้าง SATWE
      • MD5 2717b58246237b35d44ef2e49712d3a2
      • SHA1 d475ace24b9aedebf431efc68f9db32d5ae761bd
      • SHA256 bd04715c5c43c862c38a4ad6c2167ad082a352881e04a35117af9bbfad8e5613
      • ขนาด 9908224 bytes
      • เวลาเชื่อมลิงก์ 2011-01-12 06:37:39 UTC
      • MD5 daea40562458fc7ae1adb812137d3d05
      • SHA1 1ce1111702b765f5c4d09315ff1f0d914f7e5c70
      • SHA256 da2b170994031477091be89c8835ff9db1a5304f3f2f25344654f44d0430ced1
      • ขนาด 8454144 bytes
      • เวลาเชื่อมลิงก์ 2012-11-29 03:10:12 UTC
      • MD5 2740a703859cbd8b43425d4a2cacb5ec
      • SHA1 ca665b59bc590292f94c23e04fa458f90d7b20c9
      • SHA256 aeaa389453f04a9e79ff6c8b7b66db7b65d4aaffc6cac0bd7957257a30468e33
      • ขนาด 16568320 bytes
      • เวลาเชื่อมลิงก์ 2014-12-30 03:23:43 UTC
      • MD5 ebff5b7d4c5becb8715009df596c5a91
      • SHA1 829f8be65dfe159d2b0dc7ee7a61a017acb54b7b
      • SHA256 37414d9ca87a132ec5081f3e7590d04498237746f9a7479c6b443accee17a062
      • ขนาด 8089600 bytes
      • เวลาเชื่อมลิงก์ 2009-04-22 01:46:46 UTC
      • MD5 cb66a4d52a30bfcd980fe50e7e3f73f0
      • SHA1 e6018cd482c012de8b69c64dc3165337bc121b86
      • SHA256 66fe485f29a6405265756aaf7f822b9ceb56e108afabd414ee222ee9657dd7e2
      • ขนาด 9219072 bytes
      • เวลาเชื่อมลิงก์ N/A
    • ค่า identifier ของไฟล์ PKPM CAD เพิ่มเติม
      • MD5 075b4aa105e728f2b659723e3f36c72c
      • SHA1 145ef372c3e9c352eaaa53bb0893749163e49892
      • SHA256 c11a210cb98095422d0d33cbd4e9ecc86b95024f956ede812e17c97e79591cfa
      • ขนาด 6852608 bytes
      • เวลาเชื่อมลิงก์ 2012-06-18 10:01:54 UTC
      • MD5 cf859f164870d113608a843e4a9600ab
      • SHA1 952ed694b60c34ba12df9d392269eae3a4f11be4
      • SHA256 7e00030a35504de5c0d16020aa40cbaf5d36561e0716feb8f73235579a7b0909
      • ขนาด 8392704 bytes
      • เวลาเชื่อมลิงก์ 2012-11-29 03:10:12 UTC
  • MOHID เป็น ระบบจำลองแบบแหล่งน้ำแบบโอเพนซอร์ส ที่พัฒนาโดย MARETEC ของ Instituto Superior Técnico ในลิสบอน ประเทศโปรตุเกส ครอบคลุมอุทกพลศาสตร์ทางทะเลและชายฝั่ง การจำลองคุณภาพน้ำ การเคลื่อนที่ของตะกอน การจำลองการรั่วไหลของน้ำมัน และการติดตามอนุภาคแบบลากรางจ์
    • ระบุว่าจนถึงปัจจุบันก็ยังไม่สามารถระบุผลของการโจมตีที่ตั้งใจไว้ได้อย่างชี้ขาด
    • MD5 f4dbbb78979c1ee8a1523c77065e18a5
    • SHA1 9e089a733fb2740c0e408b2a25d8f5a451584cf6
    • SHA256 e775049d1ecf68dee870f1a5c36b2f3542d1182782eb497b8ccfd2309c400b3a
    • ขนาดไฟล์ 5443584 bytes
    • ประเภทไฟล์ PE32 executable for MS Windows 4.00 (console), Intel i386, 3 sections
    • เวลาเชื่อมลิงก์ 2002-10-18 09:29:54 UTC
  • LS-DYNA เคยถูกอ้างถึงร่วมกับงานวิจัยด้าน การจำลองคอมพิวเตอร์ที่เกี่ยวข้องกับการพัฒนาอาวุธนิวเคลียร์ ในรายงานสาธารณะที่เกี่ยวกับข้อสงสัยการละเมิด JCPOA Section T ของอิหร่าน

กฎการตรวจจับและตัวบ่งชี้การบุกรุก

  • ตัวบ่งชี้การบุกรุก

    • ไฟล์ที่ยืนยันแล้ว 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 และ plain-text variant โดยมีแฮชอ้างอิงคือ 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
    • ใช้ Lua bytecode magic 1B 4C 75 61, สตริง build_wormlet_table, unpropagate, scm_wormlet_install, install_implant, start_worm, ok_to_propagate
    • รวมคีย์รีจิสทรีของผลิตภัณฑ์ความปลอดภัยจำนวนมากไว้ในเงื่อนไข เช่น Symantec, Sygate Personal Firewall, Zone Labs\TrueVector, Kaspersky Anti-Hacker
    • ตรวจจับร่วมกับแพตเทิร์นไบต์ของสตริงที่เข้ารหัส, ค่าคงที่ของรหัสลับ 2 ค่า, โค้ดถอดรหัสความยาวของ storage container และ signature ของ storage record ที่มีสตริง file
    • เงื่อนไขจะเป็นจริงเมื่อไฟล์มี MZ header และขนาดต่ำกว่า 10MB โดยตรงตามอย่างใดอย่างหนึ่งต่อไปนี้: ตรงกับ $s* 3 รายการ, $rk* 12 รายการ, รายการใดก็ได้ใน $e*, การวางใกล้กันของค่าคงที่รหัสลับ 2 ค่า และอย่างใดอย่างหนึ่งระหว่าง $code1, $stor1; หรือเมื่อตรงกับ Lua magic และ $s* 7 รายการ
  • apt_fast16_driver

    • ออกแบบมาเพื่อตรวจจับ driver หรือไฟล์โปรเจ็กต์ที่เกี่ยวข้อง โดยมีแฮชอ้างอิงคือ 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
    • ใช้สตริงระบุไฟล์ซอร์สจำนวนมาก เช่น @(#)foo.c :, @(#)par.h :, @(#)pae.h :, @(#)ree.c :
    • มีแพตเทิร์น \\Device\\fast16, \\??\\fast16, C:\\buildy\\, driver\\fd\\i386\\fast16.pdb, push 0A57Ch ; DeviceType
    • ลายเซ็นยังรวมแพตเทิร์น API ที่ push ExAllocatePool, ExAllocatePoolWithTag, ExFreePool, ExFreePoolWithTag ในรูปแบบ XOR ด้วย
    • เงื่อนไขจะเป็นจริงในไฟล์ที่มีขนาดต่ำกว่า 10MB เมื่อมี MZ header และตรงตามอย่างใดอย่างหนึ่งต่อไปนี้: PDB path 2 รายการ, C:\\buildy\\ และ source identifier 1 รายการ, #devtype == 3, pe.machine == pe.MACHINE_I386, pe.subsystem == pe.SUBSYSTEM_NATIVE, และอย่างใดอย่างหนึ่งระหว่าง api*, dev* 2 รายการ; หรือเมื่อตรงกับ source identifier 6 รายการ
  • clean_fast16_patchtarget

    • ตรวจจับ ซอฟต์แวร์เป้าหมายของการแพตช์ และระบุว่า most probably clean โดยมีแฮชอ้างอิงคือ 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
    • ใช้แพตเทิร์นไบต์จำนวนมากตั้งแต่ $el0 ถึง $el99
    • เงื่อนไขคือ ไฟล์ขนาดต่ำกว่า 20MB, มี MZ header และ ตรงกับลายเซ็นที่กำหนดอย่างน้อย 2 รายการ
  • apt_fast16_patch

    • ตรวจจับ โค้ดแพตช์ เอง ซึ่งอาจอยู่ในไฟล์ที่ถูกแพตช์แบบสแตติกหรือใน memory dump
    • แฮชอ้างอิงคือ 0ff6abe0252d4f37a196a1231fae5f26
    • กำหนดแพตเทิร์นไบต์ 3 รายการคือ $p1, $p2, $p3
    • เงื่อนไขคือ any of them ซึ่งหมายถึงตรวจจับได้แม้ตรงเพียงหนึ่งในสามแพตเทิร์น

สายวิวัฒนาการและนัยสำคัญทางประวัติศาสตร์

  • สตริง @(#)par.h $Revision: 1.3 $ ภายในไบนารีเป็นเบาะแสที่ช่วยให้คาดเดาสายวิวัฒนาการของเฟรมเวิร์กนี้ได้
  • คำนำหน้า @(#) ชี้ไปยังธรรมเนียมการจัดการซอร์สโค้ดตระกูล SCCS/RCS ของ Unix ในช่วงทศวรรษ 1970–1980 และร่องรอยแบบนี้พบได้ยากใน Windows kernel driver ช่วงกลางทศวรรษ 2000
  • อาร์ติแฟกต์เหล่านี้ดูใกล้เคียงกับร่องรอยของวิศวกรระยะยาวที่คุ้นเคยกับวัฒนธรรมและ toolchain ของสภาพแวดล้อม Unix เก่าที่มีความมั่นคงปลอดภัยสูง มากกว่านักพัฒนาที่ทำงานกับ Windows เป็นหลักตามแบบทั่วไป
  • svcmgmt.exe ถูกอัปโหลดไปยัง VirusTotal เกือบ 10 ปีก่อน แต่จนถึงตอนนี้ก็ยังมีอัตราการตรวจจับต่ำมาก และมีเพียงเอนจินเดียวที่จัดเป็นมัลแวร์ทั่วไปด้วยระดับความเชื่อมั่นที่จำกัด
  • เมื่อพิจารณาร่วมกับซิกเนเจอร์ของ ShadowBrokers ใน Territorial Dispute ทำให้ fast16 บีบให้ต้องย้อนมองช่วงเวลาการพัฒนาของ การก่อวินาศกรรมไซเบอร์ระดับรัฐ ที่แฝงตัวอย่างร้ายแรงอีกครั้ง
  • fast16 แสดงโครงสร้างที่สอดคล้องกันซึ่งผสาน embedded scripting engine, การเล็งเป้าหมายแบบแคบที่อิงคอมไพเลอร์ และ การแพตช์ระดับเคอร์เนล ตั้งแต่ก่อนตระกูลที่เป็นที่รู้จักกว้างขวางกว่า
  • ตลอดช่วงเวลายาวนาน แทบไม่มีความเชื่อมโยงกับการวิเคราะห์สาธารณะ แคมเปญที่ถูกตั้งชื่อ หรือเหตุการณ์ตัวแทนใด ๆ และแม้แต่ร่องรอยที่มนุษย์ภายในทิ้งไว้อ่านได้ก็ยังถูกจำกัดไว้เพียงรูปแบบอย่าง *** Nothing to see here – carry on***
  • จึงถูกจัดวางให้เป็นจุดเชื่อมในกระแสวิวัฒนาการของ APT ที่ต่อมานำไปสู่ toolkit ที่อิง Lua และ LuaJIT

1 ความคิดเห็น

 
GN⁺ 2 일 전
ความคิดเห็นใน Hacker News
  • ตรงนี้น่าสนใจเป็นพิเศษ
    มีการเปรียบเทียบว่าการเห็น สัญลักษณ์แบบ SCCS/RCS ใน โค้ดเคอร์เนลของ Windows เมื่อปี 2005 ก็เหมือนกับการเห็นโทรศัพท์หมุนในออฟฟิศสมัยนี้ ซึ่งฟังดูมีน้ำหนักพอสมควร
    ห้องแล็บดาราศาสตร์ฟิสิกส์ที่ผมเคยทำงานอยู่ในปี 2006 ก็ยังใช้ svn อยู่ และใน codebase ก็มี Fortran ที่หลงเหลือร่องรอยของระบบจากยุค 70~80 อยู่มาก
    ถึงอย่างนั้นมันก็ยังทำงานได้ดีเพราะคอมไพเลอร์สำหรับ optimization รุ่นใหม่ และกระบวนการย้ายจาก Vax ไป Linux ในยุค 90 ก็ลื่นไหลอย่างน่าประหลาดใจ
    ทำให้นึกถึงงานพูด do over or make due ที่เคยฟังมาก่อน ซึ่งโดยรวมแล้วใจความคือ การเขียน codebase ขนาดใหญ่ที่ยังใช้งานได้ทั้งก้อนขึ้นมาใหม่ มักไม่คุ้มค่าถ้ายังพอประคับประคองใช้ต่อด้วยเครื่องมือสมัยใหม่ได้

    • ผมก็เคยทำงานที่บริษัทยังใช้ SCM ที่อิง RCS อยู่จนถึงราวปี 2012 ซึ่งมันเป็นระบบแนวแฮ็กที่เอา RCS มาครอบบนไฟล์เซิร์ฟเวอร์แบบแชร์อีกที
      ชื่อมันคือ MKS และใช้วิธีจัดการ revision tree เฉพาะเป็น "project file" ซึ่งดูเหมือนของเก่ายุค 90 มากจนไม่ใช่แม้แต่เวอร์ชันที่ถูกทำใหม่ด้วย Java EE
      ส่วนหัวไฟล์จะมีแท็กอย่าง $Revision: 1.3 $ กับ changelog อยู่ แต่ไฟล์ใหม่จำนวนมากกลับไม่ได้ใส่แท็กตั้งแต่แรก เลยไม่มีอะไรให้แทนค่า และความสม่ำเสมอก็พังยับ
      ตระกูลอุปกรณ์เป้าหมายเริ่มมาตั้งแต่กลางยุค 90 แต่ตัวโค้ด ณ เวลานั้นจริง ๆ แล้วแทบไม่มีส่วนไหนเก่ากว่า 5 ปี
      แม้จะมีวิศวกรแค่ไม่กี่สิบคน แต่ commit conflict ก็เกิดบ่อย และทั้ง tree ก็พังอยู่เรื่อย ๆ
      ผมเลยเขียนสคริปต์เล่น ๆ เพื่ออ่าน history ทั้งหมดแล้ว import เข้า git แต่พอย้อนกลับไปไม่กี่ปี บันทึกก็เละเทะจนหมดสภาพ
      ไม่รู้เหมือนกันว่าทำไมถึงยังใช้มันอยู่ถึงตอนนั้น แต่บริษัทฮาร์ดแวร์หลายแห่งแม้จะไม่นานมานี้ก็ยังมองการจัดการซอร์สโค้ดเหมือนเป็นแค่ "โฟลเดอร์แชร์ระยะไกล" อยู่ และคงเพราะงั้น การจัดการเวอร์ชัน ฝั่งซอฟต์แวร์เลยไม่ใช่เรื่องสำคัญลำดับต้น ๆ
    • ถ้าคุณยังใช้ R อยู่ในปี 2026 ก็มีโอกาสสูงมากว่าที่ไหนสักแห่งคุณกำลังเรียกโค้ดที่คอมไพล์มาจาก Fortran ยุค 70~80 อยู่แทบจะแน่นอน
      สายสืบทอดนั้นยังคงเป็นฐานสำคัญของโลกการคำนวณเชิงตัวเลขมาจนถึงทุกวันนี้
    • เมื่อก่อนผมเคยสงสัยพอสมควรกับทฤษฎีที่ว่า Stuxnet มีรัฐหนุนหลัง แต่พอเห็นบันทึกแบบนี้ก็เริ่มเข้าใจแล้วว่าทำไมถึงมีการคาดเดาแบบนั้น
      จนถึงยุค 2000 ก็ยังมีที่ที่ใช้ RCS กันอยู่จริง และในตัวเครื่องมือเองมันก็มีบางอย่างที่ดีกว่า SVN หรือ CVS ด้วย
    • ถ้าอย่างนั้นก็ชวนสงสัยว่า หน่วยงานตัวย่อ 3 ตัวอักษร พวกนั้นสามารถดึงคนจากสายงานเฉพาะของมัลแวร์แต่ละประเภทมาได้ด้วยหรือเปล่า
      เช่นก็พอจินตนาการได้ว่า fast16 อาจเขียนโดยคนที่เดิมทำซอฟต์แวร์คำนวณทางวิทยาศาสตร์ ส่วน Stunex อาจเป็นคนที่เคยทำงานที่ Siemens เขียน
    • การรีแฟกเตอร์ ไม่ใช่ยาครอบจักรวาล
      ถ้าต้นเหตุที่ทำให้โค้ดต้องรีแฟกเตอร์ตั้งแต่แรกยังอยู่เหมือนเดิม สุดท้ายมันก็มักจะกลับไปสภาพเดิมอีก
      ต้นเหตุนั้นหลายครั้งก็ฝังลึกลงไปถึงระดับจิตวิทยา เช่นนิสัย ความเชื่อ หรือบาดแผลทางอาชีพของนักพัฒนา
      พอมี กฎของ Conway เข้ามาซ้อน ท้ายที่สุดทีมก็เลี่ยงไม่ได้ที่จะสร้างซอฟต์แวร์ให้มีหน้าตาเหมือนโครงสร้างองค์กรที่ใหญ่กว่า และถ้าองค์กรไม่เปลี่ยน ผลของการรีแฟกเตอร์ก็มักจะวนซ้ำ
      ข้อยกเว้นมักเกิดตอนที่เราได้รับ codebase ของทีมอื่นหรือของคนก่อนหน้ามาดูแล แล้วค่อยจัดโครงสร้างใหม่
      แต่ถ้าเป็นคนกลุ่มเดิมประกาศจะรีแฟกเตอร์โค้ดของตัวเอง ส่วนใหญ่ก็มักจบลงที่การสร้างกับดักหนูแบบใหม่ที่สะดวกกับตัวเองกว่าเดิมเท่านั้น
      การปรับปรุงสิ่งที่เกิดจากวิธีคิดของตัวเองซ้ำ ๆ ก็ไม่ได้แย่ แต่ถ้าอยากลงจากม้าหมุนจริง ๆ ก็ควรเขียน สาเหตุของสถาปัตยกรรมที่แย่ ออกมา แล้วตรวจสอบตัวเองอย่างตรงไปตรงมา
      อย่างที่นักพัฒนาหลายคนอยากเชื่อว่า "ถ้าระวังและขยันพอ แม้การออกแบบจะค่อนข้างแย่ก็ยังทำ implementation ให้ดีได้" นั้น โดยมากแล้วไม่จริง
      สุดท้ายรากของปัญหาคือ การออกแบบ และเราต้องเลือกว่าจะยอมรับหรือตัดต้นไม้ที่งอกออกมาจากมัน เพราะแค่ตัดแต่งกิ่งอย่างเดียวมีข้อจำกัดมาก
  • บทความนี้ให้ความรู้สึก ชวนขนลุก มาก
    แค่ความจริงที่ว่ามัลแวร์ตัวนี้อยู่ใต้เรดาร์การตรวจจับมาเป็นเวลา 20 ปี ก็ฟังดูน่ากลัวพอแล้ว

  • นี่คือลิงก์ดาวน์โหลดสำหรับคนที่อยากลองดู
    https://bazaar.abuse.ch/sample/9a10e1faa86a5d39417cae44da5ad...
    คงต้องสร้าง Windows XP VM ก่อนเป็นอย่างแรก

    • สงสัยว่าเคยมี ไฟล์ Windows service ถูกอัปโหลดมาบ้างหรือยัง
      อันนี้ดูเหมือนจะเป็นแค่ loader
  • IEEE-754 บังคับให้มีการปัดเศษที่ถูกต้องเฉพาะกับ +-*/ และ sqrt เท่านั้น
    ส่วน ฟังก์ชันอดิศัย อย่าง sin/cos/exp/log/pow นั้นยอมให้ต่างกันได้ไม่กี่ ULP สุดท้าย และ glibc, musl, MSVC, Intel SVML ก็ทำงานแบบนั้นจริง
    PID ใช้แค่การคำนวณพื้นฐานจึงได้รับผลจากความต่างของ libm น้อยกว่า แต่การควบคุมเวกเตอร์ของมอเตอร์หรือการทำ sensor linearization นั้นแตะฟังก์ชันพวกนี้ทุก cycle ทำให้ความไม่ตรงกันเล็กน้อยสะสมได้
    ดังนั้นถึงไม่มี source code diff เลย การเปลี่ยนแค่ libm ที่ลิงก์อยู่ก็อาจทำให้พฤติกรรมในหน้างานค่อย ๆ drift ได้
    ความต่างแบบนี้เกิดขึ้นจริงได้ตรงจุดอย่าง Payne-Hanek argument reduction หรือบริเวณขอบเขตของ table-maker's dilemma ที่แย่ที่สุด
    นั่นคงเป็นเหตุผลว่าทำไมแนวทางสำหรับระบบที่มีความสำคัญต่อความปลอดภัยจึงไม่ได้เขียนแค่ว่า "เป็นไปตาม IEEE-754" แต่จะตรึง บิลด์ของ libm ที่ใช้ให้เฉพาะเจาะจงไปเลย

  • เป็นการค้นพบที่น่าทึ่งจริง ๆ
    ผมอยากรู้มากว่ากฎเหล่านี้เล็งเป้าไปที่อะไรแน่ และมันเปลี่ยนผลลัพธ์อย่างไร
    หรือมันอาจถูกออกแบบให้สร้างความต่างเฉพาะในเงื่อนไขการจำลองที่จำเพาะมาก ๆ เช่นระดับเครื่องปฏิกรณ์นิวเคลียร์ก็ได้

    • ผมลองขุดดูนิดหน่อยว่าซอฟต์แวร์อย่าง LS-DYNA จะถูกดัดแปลงได้อย่างไร
      ตัวอย่างเช่น สมการ EOS_JWL ในคู่มือสาธารณะ [1] เป็นสมการที่ LS-DYNA ใช้นำไปใช้ และเมื่อใช้ร่วมกับสมการอื่น ๆ ก็ดูเหมือนว่าจะนำไปคำนวณสิ่งอย่างเวลาที่ชนวนระเบิดของหัวรบมิสไซล์ใช้ในการจุดระเบิดวัตถุระเบิดหลักเพื่อสร้างคลื่นความดันที่ระดับหนึ่งในระยะ 20 เมตรได้
      และถ้าย้อนใช้ผลลัพธ์นั้นกลับ ก็อาจประเมินเวลาของชนวนที่ต้องการได้เช่นกัน
      สมการและพารามิเตอร์ที่ใส่ใน LS-DYNA มาจากงานวิจัยวิทยาศาสตร์อย่าง [2] ซึ่งเป็นการวิจัยการทดลองวัตถุระเบิดแรงสูงของรัฐบาลสหรัฐในยุค 1980
      ในงานนั้นยังมีการทดลองวัดลักษณะการเสียดสีของวัตถุระเบิดกับวัสดุหุ้มหลายชนิดด้วย
      เมื่อมีสมการสำหรับการจำลองวัตถุระเบิดเตรียมไว้พร้อมแล้ว ถ้าไปขยับสมการพวกนั้นเพียงเล็กน้อยแล้วเติม noise ±20% ลงใน ค่าสัมประสิทธิ์ความเสียดทาน นักวิทยาศาสตร์หรือวิศวกรก็น่าจะสงสัยเรื่องคุณภาพการผลิตเหล็กกล้าก่อน มากกว่าจะคิดว่าซอฟต์แวร์ถูกบิดเบือน
      ถ้าจะเปรียบแบบร่วมสมัย ก็อาจนึกถึงสถานการณ์ที่ประเทศคู่สงครามแห่งหนึ่งใช้สำเนาเถื่อนของ Ansys Autodyn 2026 R1 ที่กลุ่มแคร็กจีนโพสต์ไว้บนเว็บบอร์ดจีน แล้วไปดาวน์โหลดจาก seeder ไม่กี่รายที่อยู่หลัง ISP รัสเซีย
      แล้วพอภายหลังค่าจากการทดลองกับค่าที่คำนวณได้เริ่มไม่ตรงกันบ่อย ๆ ถึงค่อยสงสัยว่าสำเนาเถื่อนนั้นอาจถูกดัดแปลงโดยเจตนา
      อย่างไรก็ตาม ตอนนี้ประเทศคู่สงครามนั้นอาจหาเอาสำเนาถูกลิขสิทธิ์ออกมาจากเครือข่ายที่ถูกแฮ็กของมหาวิทยาลัยสุ่ม ๆ หรือบริษัทที่ปรึกษาด้านอวกาศ การบิน หรือกลาโหมได้ง่ายกว่า
      และการคิดว่าประเทศคู่สงครามในปี 2026 จะไม่สามารถสร้างซอฟต์แวร์ขึ้นมาเองตั้งแต่ต้นได้เลยก็คงไร้เดียงสาเกินไป แถมยังอาจไปถึงผลลัพธ์ที่ต้องการได้ด้วยการคำนวณมือหรือการทดลองอีกด้วย
      ท้ายที่สุดแล้ว การตรวจสอบคุณภาพการผลิตก็จำเป็นต้องมีอุปกรณ์และความสามารถในการทดลองอยู่แล้วแต่เดิม
      ซอฟต์แวร์จำลอง มีหน้าที่หลักเพื่อช่วยลดจำนวนครั้งของการสร้างต้นแบบและการทดลองทางกายภาพ เพื่อประหยัดต้นทุนและเวลา
      ตัวอย่างเช่น การรันสถานการณ์ที่กระสุนปืนใหญ่ชนแผ่นเกราะ 1000 ครั้งแบบ [3] นั้นราคาถูก แต่ถ้าทำซ้ำในโลกจริงจะทั้งแพงและใช้เวลามากกว่ามาก
      [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
  • เวลาคนเห็นว่าของที่ผมเผยแพร่มี ข้อมูล revision ของ RCS ติดมาด้วย ผมก็หวังว่าพวกเขาจะชะงักไปสักนิด

  • หนังสือที่เพิ่งอ่านไม่นานมานี้คือ Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers ของ Andy Greenberg
    มันดีมาก และเพราะยังมีข้อมูลใหม่ออกมาเรื่อย ๆ ผมเลยคิดว่าอาจถึงขั้นควรมีภาคต่อได้เลย

  • พอเห็นว่า Guix กับการคอมพิวต์แบบทำซ้ำได้กำลังพอร์ตไปถึง PowerPC หรือเครื่อง legacy ได้ ก็รู้สึกว่ารัฐบาลหรือองค์กรแบบ 1984 รวมถึงบางกลุ่มในตะวันออกกลางคงไม่ชอบสิ่งนี้เอามาก ๆ
    ยิ่งสภาพแวดล้อม ต่างสถาปัตยกรรม มากเท่าไร ก็ยิ่งได้เปรียบมากขึ้น

  • ตัวเลขสำคัญคือ หนอน
    มันไม่ถูกตรวจพบบนคอมพิวเตอร์เครื่องอื่นด้วย เพราะตั้งแต่แรกก็ไม่มีคอมพิวเตอร์เครื่องที่สองที่สะอาดจริง ๆ อยู่แล้ว

  • เป็นการค้นพบที่น่าสนใจ แต่คอมเมนต์เรื่อง การจัดการซอร์สโค้ด ดูเหมือนจะคลาดเคลื่อนไปนิดหน่อย
    ตอนนั้นของแนว SCCS ก็น่าจะยังมีหลงเหลืออยู่บ้าง และผมเองก็แอบลังเลอยู่ครู่หนึ่งว่า CVS จัดเป็นสไตล์คล้ายกันหรือเปล่า

    • ผมคิดว่าคอมเมนต์นั้นน่าจะหมายถึงว่ามันพบได้ไม่บ่อยใน ซอฟต์แวร์ของ Windows
      ซึ่งบ่งชี้ว่านักพัฒนาน่าจะเป็นคนที่เดิมทำงานฝั่ง UNIX มาด้วย เพราะในฝั่งนั้น SCCS/RCS เป็นเรื่องปกติ