1 คะแนน โดย GN⁺ 2023-10-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • พนักงานของบริษัทอากาศยานสเปนได้รับการติดต่อบน LinkedIn จาก Lazarus ที่ปลอมตัวเป็น ผู้สรรหาของ Meta และการรันไฟล์ที่ดูเหมือนแบบทดสอบรับสมัครงานบนอุปกรณ์ของบริษัทก็กลายเป็นจุดเริ่มต้นของการเจาะระบบ
  • งานทดสอบอันตรายถูกส่งมาเป็น Quiz1.exe และ Quiz2.exe โดยหลังจากแสดง “Hello, World!” และพิมพ์ลำดับ Fibonacci แล้ว จะไปกระตุ้นการติดตั้งเพย์โหลดเพิ่มเติมจากอิมเมจ ISO
  • หลังเจาะระบบได้แล้ว มีการแพร่ NickelLoader, miniBlindingCan และ RAT ตัวใหม่ชื่อ LightlessCan ผ่าน DLL side-loading โดย ESET ระบุด้วยความเชื่อมั่นสูงว่าเป็นกิจกรรมของ Lazarus ที่เกี่ยวข้องกับ Operation DreamJob
  • LightlessCan ดูเหมือนเป็นรุ่นต่อจาก BlindingCan และจำลองความสามารถของคำสั่ง Windows อย่าง ipconfig, net, ping, systeminfo, sc ภายใน RAT เอง เพื่อลดร่องรอยการรันคอนโซล
  • เป้าหมายของการโจมตีคือ การสอดแนมทางไซเบอร์ และการฝังคำสั่งไว้ภายในรวมถึง execution guardrails ที่ทำให้ถอดรหัสได้เฉพาะบนเครื่องเหยื่อ ยิ่งทำให้การตรวจจับแบบเรียลไทม์และการวิเคราะห์นิติวิทยาศาสตร์ย้อนหลังทำได้ยากขึ้น

การเจาะระบบเริ่มต้นจากเหยื่อล่อรับสมัครงานบน LinkedIn

  • Lazarus ติดต่อพนักงานหลายคนของบริษัทอากาศยานสเปนผ่าน LinkedIn Messaging
    • ผู้โจมตีแอบอ้างเป็นผู้สรรหาของ Meta บริษัทแม่ของ Facebook, Instagram และ WhatsApp
    • ใช้วิธีขอให้พิสูจน์ทักษะการเขียนโปรแกรม C++ ราวกับเป็นส่วนหนึ่งของกระบวนการรับสมัคร
  • เหยื่อดาวน์โหลด Quiz1.iso และ Quiz2.iso จากคลาวด์สตอเรจของบุคคลที่สาม แล้วรันไฟล์ปฏิบัติการข้างในบนอุปกรณ์ของบริษัท
    • Quiz1.exe: ปลอมเป็นโจทย์ง่าย ๆ ที่พิมพ์ “Hello, World!”
    • Quiz2.exe: ปลอมเป็นโจทย์ที่พิมพ์ลำดับ Fibonacci ไปจนถึงสมาชิกที่มากที่สุดซึ่งยังน้อยกว่าค่าป้อนเข้า
    • ไฟล์ปฏิบัติการทั้งสองจัดการอินพุตและเอาต์พุตเหมือนแอปคอนโซลปกติ ก่อนจะเริ่มติดตั้งเพย์โหลดอันตรายเพิ่มเติม
  • เพย์โหลดตัวแรกคือดาวน์โหลดเดอร์ผ่าน HTTP(S) ที่ ESET ตั้งชื่อว่า NickelLoader
    • NickelLoader สามารถปล่อยโปรแกรมตามที่ผู้โจมตีต้องการเข้าไปในหน่วยความจำของคอมพิวเตอร์เหยื่อได้

หลักฐานการระบุว่าเป็น Lazarus และ Operation DreamJob

  • ESET ระบุด้วยความเชื่อมั่นสูงว่าการโจมตีในสเปนครั้งนี้เป็นฝีมือของ Lazarus โดยเฉพาะกิจกรรมที่เกี่ยวข้องกับ Operation DreamJob
  • มัลแวร์ โครงสร้างพื้นฐาน และเป้าหมาย ซ้อนทับกับแคมเปญ Lazarus ก่อนหน้า
    • วิธีการติดต่อผ่าน LinkedIn แล้วหลอกให้รันไฟล์อันตรายที่ปลอมเป็นแบบทดสอบรับสมัครงาน เป็นยุทธวิธีที่ Lazarus ใช้มาตั้งแต่ Operation DreamJob
    • มีการพบโหลดเดอร์ขั้นกลางและแบ็กดอร์สาย BlindingCan เวอร์ชันใหม่ ซึ่งเคยถูกยืนยันในกรณีของเนเธอร์แลนด์เมื่อปี 2022
    • เครื่องมือเหล่านี้ใช้การเข้ารหัส AES-128 และ RC6 ที่ใช้กุญแจ 256 บิต ซึ่งเป็นรูปแบบเดียวกับที่ใช้ในแคมเปญธีม Amazon
  • แทนที่จะตั้งเซิร์ฟเวอร์ C&C ระยะแรกขึ้นเอง ผู้โจมตีเลือกเจาะเว็บไซต์ที่มีอยู่แล้วซึ่งมีความปลอดภัยอ่อนแอหรือขาดการดูแลรักษา แล้วนำมาใช้
  • การขโมยองค์ความรู้ของบริษัทอากาศยานสอดคล้องกับเป้าหมายระยะยาวของ Lazarus
    • รายงานของ UN กล่าวถึง APT ที่เชื่อมโยงกับเกาหลีเหนือว่าโจมตีบริษัทอากาศยานเพื่อเข้าถึงเทคโนโลยีอ่อนไหวและความรู้ด้านอากาศยาน

ชุดเครื่องมือหลังการเจาะระบบ

  • หลัง NickelLoader ทำงานแล้ว ผู้โจมตีปล่อย RAT สองชนิดลงสู่ระบบเหยื่อ
    • miniBlindingCan: รุ่นลดทอนความสามารถของแบ็กดอร์ BlindingCan ที่เป็นเครื่องมือที่รู้จักกันของ Lazarus
    • LightlessCan: RAT ตัวใหม่ที่ยังไม่เคยมีการบันทึกสาธารณะมาก่อน
  • เชนการรันประกอบด้วยหลายขั้นที่มีความซับซ้อนต่างกัน โดยมีทั้ง dropper และ loader ก่อนถึงขั้นรัน RAT สุดท้าย
    • dropper มีเพย์โหลดฝังอยู่ภายใน และสามารถโหลดกับรันจากหน่วยความจำโดยตรงได้โดยไม่จำเป็นต้องเขียนลงไฟล์ซิสเต็ม
    • loader จะดึงเพย์โหลดจากไฟล์ซิสเต็มโดยไม่มีอาร์เรย์เข้ารหัสฝังอยู่ภายใน
  • ไฟล์หลักส่วนใหญ่ใช้โครงสร้าง DLL side-loading ที่โปรแกรมปกติไปโหลด DLL อันตราย
    • PresentationHost.exe + mscoree.dll: อิงจาก NppyPluginDll ที่ถูกทำให้เป็นโทรจัน ใช้ส่ง NickelLoader
    • colorcpl.exe + colorui.dll: อิงจาก LibreSSL 2.6.5 ใช้ส่ง miniBlindingCan
    • fixmapi.exe + mapistub.dll: อิงจาก Lua plugin 1.4.0.0 สำหรับ Notepad++ ใช้ส่ง LightlessCan
    • tabcal.exe + HID.dll: อิงจาก MZC8051 3.2 สำหรับ Notepad++ ใช้ส่ง LightlessCan

คุณสมบัติเด่นของ LightlessCan

  • LightlessCan ดูเหมือนเป็นรุ่นต่อของ BlindingCan ซึ่งเป็น HTTP(S) RAT ของ Lazarus และหมายเลขเวอร์ชันภายในของรุ่นปัจจุบันคือ 1.0
  • ถูกออกแบบมาให้รองรับได้สูงสุด 68 คำสั่ง และในเวอร์ชันปัจจุบันมีการลงมือทำฟังก์ชันแล้ว 43 คำสั่ง
    • คำสั่งที่เหลือมีอยู่ในรูป placeholder แต่ยังไม่มีฟังก์ชันจริง
    • ลำดับของคำสั่งที่ใช้ร่วมกันยังคงถูกเก็บไว้มาก ทำให้ดูเหมือนอิงจากซอร์สโค้ดของ BlindingCan
  • การเปลี่ยนแปลงใหญ่ที่สุดคือการจำลองความสามารถของคำสั่งพื้นฐานของ Windows หลายตัวไว้ภายใน RAT เอง
    • ตัวอย่างคำสั่งที่ทำไว้แล้ว ได้แก่ ipconfig, net, netsh advfirewall, netstat, ping, reg, sc, tasklist, wmic process call create, nslookup, schtasks, systeminfo, arp, mkdir เป็นต้น
    • ในการโจมตี Lazarus ก่อนหน้า มักมีกรณีที่คำสั่งเหล่านี้ถูกผู้โจมตีเรียกใช้หลายครั้งผ่านคอนโซลหลังจากยึดหลักในระบบได้แล้ว
    • วิธีใหม่นี้ประมวลผลภายใน RAT โดยไม่ต้องเรียกคอนโซลยูทิลิตีต้นฉบับให้เด่นชัด จึงทำให้ EDR และเครื่องมือนิติวิทยาศาสตร์ดิจิทัลย้อนหลังตรวจจับได้ยากขึ้น
  • ESET ให้น้ำหนักว่าผู้พัฒนา LightlessCan อาจทำ reverse engineering กับไบนารีแบบปิดซอร์สเพื่อเลียนแบบยูทิลิตีหลักของ Windows
    • แม้โปรเจกต์ Wine จะมีการอิมพลีเมนต์หลายโปรแกรมไว้ แต่บางความสามารถที่ LightlessCan เลียนแบบนั้นแตกต่างจากของ Wine หรือไม่มีอยู่เลย

เชนการเจาะระบบของ NickelLoader

  • NickelLoader เป็น HTTP(S) downloader ที่รันบนระบบที่ติดเชื้อ และถูกใช้เพื่อส่งเพย์โหลดอื่นของ Lazarus ต่อไป
  • เมื่อเหยื่อรันไฟล์ quiz ด้วยตนเอง PresentationHost.exe จะถูกรันอัตโนมัติ และ mscoree.dll อันตรายในพาธเดียวกันคือ C:\ProgramShared\ จะถูก side-load เข้ามา
    • mscoree.dll เป็นไฟล์ที่ทำให้ NppyPluginDll.dll จากโปรเจกต์ General Python Plugins DLL for Notepad++ ซึ่งยุติไปตั้งแต่ปี 2011 กลายเป็นโทรจัน
    • มันมีทั้ง export ของ mscoree.dll ปกติและ export ของ NppyPluginDll.dll ต้นฉบับ โดยมีโค้ดอันตรายอยู่ใน export CorExitProcess
  • การถอดรหัสอาร์เรย์เข้ารหัสที่ฝังอยู่ต้องใช้คีย์เวิร์ด 16 อักขระ 3 ชุด
    • ชื่อ parent process PresentationHost
    • พารามิเตอร์ภายในที่ hardcode อยู่ในไบนารี 9zCnQP6o78753qg8
    • พารามิเตอร์ภายนอกที่ส่งมาทาง command line ‑embeddingObject
    • คีย์เวิร์ดทั้งสามถูก XOR แบบไบต์ต่อไบต์เพื่อสร้างกุญแจถอดรหัส AES-128
  • NickelLoader รู้จักคำสั่ง 5 ตัวอักษร 4 คำสั่ง
    • abcde: ขอคำสั่งถัดไปทันทีโดยไม่หน่วง sleep นานตามปกติ
    • avdrq: โหลด DLL จากบัฟเฟอร์ที่ได้รับแล้วรัน export ที่ hardcode ไว้คือ info
    • gabnc: โหลด DLL จากบัฟเฟอร์ที่ได้รับ
    • dcrqv: ปิดการทำงานของตัวเอง
  • ESET ตั้งชื่อเพย์โหลดนี้ว่า NickelLoader จากโครงสร้างคำสั่ง 5 ตัวอักษรที่ชวนให้นึกถึง nickel ซึ่งเป็นชื่อเรียกเหรียญ 5 เซนต์ของสหรัฐฯ

เชนการรันของ miniBlindingCan

  • หนึ่งในเพย์โหลดที่ NickelLoader ดาวน์โหลดและรันคือ miniBlindingCan
    • มันเป็น BlindingCan RAT เวอร์ชันที่เรียบง่ายลง และถูก Mandiant รายงานครั้งแรกในเดือนกันยายน 2022 ภายใต้ชื่อ AIRDRY.V2
  • การโหลดใช้ colorcpl.exe ปกติและ colorui.dll อันตรายที่รันจาก C:\ProgramData\Adobe\
    • colorui.dll เป็น DLL อันตรายแบบ 64 บิตที่ถูก obfuscate ด้วย VMProtect
    • มี export หลายพันรายการ และ LaunchColorCpl ทำหน้าที่รันขั้นถัดไป
  • dropper ตัวนี้ใช้ฟังก์ชันหลบการวิเคราะห์ตั้งแต่ช่วงเริ่มต้น
    • ทำ anti-debugging ด้วยการตรวจค่า BeingDebugged ในโครงสร้าง PEB
    • ใช้เทคนิค anti-sandbox เพื่อหลบการตรวจจับในสภาพแวดล้อม sandbox
    • ตรวจอย่างชัดเจนว่า parent process คือ colorcpl.exe มิฉะนั้นจะจบทันที
  • การถอดรหัสเพย์โหลดสุดท้ายใช้สตริงยาวที่ได้จากการต่อชื่อ parent process ชื่อไฟล์ dropper และพารามิเตอร์ command line ภายนอกมาเป็น XOR key
    • ตัวอย่างสตริงที่ได้คือ COLORCPL.EXECOLORUI.DLL669498484488D3F22712CC5BACA6B7A7
  • miniBlindingCan มีตรรกะจัดการคำสั่งคล้าย BlindingCan แต่ลดฟังก์ชันลงมาก
    • รองรับการส่งข้อมูลระบบ อัปเดตช่วงเวลาสื่อสาร ส่งและอัปเดตคอนฟิก ดาวน์โหลดและถอดรหัสไฟล์ รวมถึงรัน shellcode ที่ส่งมา
    • คอนฟิกที่ถอดรหัสแล้วมีขนาด 9,392 ไบต์ และมี URL ได้สูงสุด 5 รายการ โดยแต่ละรายการยาวได้ถึง 260 wide characters

เชนการรันแบบเรียบง่ายของ LightlessCan

  • เชนแบบเรียบง่ายของ LightlessCan ใช้ fixmapi.exe ปกติและ mapistub.dll อันตรายที่รันจาก C:\ProgramData\Oracle\Java\
  • mapistub.dll เป็น DLL ที่ทำให้ Lua plugin 1.4 สำหรับ Notepad++ กลายเป็นโทรจัน
    • มีการคัดลอก export ของ mapi32.dll ปกติของ Windows มาไว้
    • export FixMAPI รับหน้าที่ถอดรหัสและโหลดขั้นถัดไป
    • export อื่น ๆ ถูกเติมด้วยโค้ดปกติจากโปรเจกต์ตัวอย่าง MineSweeper ที่เผยแพร่สาธารณะ
  • dropper ตัวนี้ตั้งค่าความคงอยู่ผ่าน scheduled task
    • ESET ระบุว่ายังมีรายละเอียดของ task นี้ไม่มาก แต่ parent process ดูเป็น %WINDOWS%\system32\svchost.exe -k netsvcs -p -s Schedule
  • การถอดรหัสข้อมูลที่ฝังอยู่ใช้คีย์เวิร์ด 3 ชุด
    • ชื่อ parent process fixmapi.exe
    • พารามิเตอร์ภายใน IP7pdINfE9uMz63n
    • พารามิเตอร์ภายนอกจาก command line AudioEndpointBuilder
    • คีย์เวิร์ดถูก XOR กันแบบไบต์ต่อไบต์ และผลลัพธ์กลายเป็นกุญแจ AES 128 บิต

เชนการรันแบบซับซ้อนของ LightlessCan และ execution guardrails

  • เชนแบบซับซ้อนกว่าของ LightlessCan ต่อเนื่องจากแอปปกติ, initial dropper, full dropper, intermediate dropper, ไฟล์คอนฟิก, ไฟล์ข้อมูลระบบ, intermediate loader ไปจนถึง LightlessCan RAT ตัวสุดท้าย
  • initial dropper คือ HID.dll อันตรายที่ถูก side-load โดย tabcal.exe ปกติซึ่งรันจาก C:\ProgramData\Adobe\ARM\
    • HID.dll เป็นไฟล์ที่ทำให้ MZC8051.dll จากโปรเจกต์ 8051 C compiler plugin สำหรับ Notepad++ กลายเป็นโทรจัน
    • export HidD_GetHidGuid รับหน้าที่ drop ขั้นถัดไป
  • ขั้นถอดรหัสแรกต้องใช้คีย์เวิร์ด 3 ชุด
    • ชื่อ parent process tabcal.exe
    • พารามิเตอร์ภายใน 9zCnQP6o78753qg8
    • เนื้อหาไฟล์ %WINDOWS%\system32\thumbs.db คือ LocalServiceNetworkRestricted
    • ค่าทั้งสามถูก XOR เพื่อสร้างกุญแจ AES 128 บิต
  • full dropper ที่ถูกสร้างขึ้นมี InternalName resource เป็น AppResolver.dll และมีอาร์เรย์ข้อมูลเข้ารหัส 2 ชุด
    • มีอาร์เรย์ขนาดเล็ก 126 ไบต์ และอาร์เรย์ขนาดใหญ่ 1,807,464 ไบต์
    • อาร์เรย์เล็กถูกถอดรหัสด้วย RC6 ที่ใช้กุญแจ 256 บิต เพื่อให้ได้พาธ C:\windows\system32\oci.dll และ C:\windows\system32\grpedit.dat
    • ผลจากการถอดรหัสอาร์เรย์ใหญ่มีทั้ง LightlessCan, intermediate dropper และไฟล์คอนฟิกเข้ารหัสขนาด 14,948 ไบต์ที่ถูก drop ไปยัง %WINDOWS%\System32\wlansvc.cpl
  • full dropper จะเก็บคุณลักษณะหลายอย่างที่ใช้ระบุตัวเครื่องติดเชื้อไว้ใน %WINDOWS%\System32\4F59FB87DF2F
    • ค่าส่วนใหญ่ถูกดึงมาจากรีจิสทรีพาธ Computer\HKLM\HARDWARE\DESCRIPTION\System\BIOS
    • มีทั้ง SystemBIOSDate, SystemBIOSVersion, SystemManufacturer, SystemProductName และค่า Identifier ใต้ disk controller
    • สตริงที่เกิดจากการนำค่าเหล่านี้มาต่อกันจำเป็นต่อการถอดรหัส grpedit.dat ที่เข้ารหัสไว้ในไฟล์ซิสเต็ม
  • โครงสร้างนี้ทำงานเป็น execution guardrails
    • ทำให้เพย์โหลดถูกถอดรหัสได้เฉพาะบนคอมพิวเตอร์ของเหยื่อที่ตั้งใจไว้ และยากต่อการถอดรหัสบนเครื่องอื่นของนักวิจัยความปลอดภัย

การหลบเลี่ยงการตรวจจับและผลกระทบต่อการวิเคราะห์

  • LightlessCan สามารถลดร่องรอยการรันโปรแกรม command line ของ Windows ที่มักถูกใช้บ่อยในช่วงหลังโจมตีได้อย่างมาก
    • แทนที่ความสามารถของคำสั่งด้วยการอิมพลีเมนต์ภายใน จึงหลีกเลี่ยงการรันคอนโซลยูทิลิตีต้นฉบับ
    • ร่องรอยที่สังเกตได้จากการล็อกประวัติคำสั่งและการตรวจจับแบบเรียลไทม์จึงลดลง
  • ตลอดเชนการโจมตีมีการผสมหลาย เทคนิคหลบการป้องกัน
    • DLL side-loading
    • การ obfuscate ด้วย VMProtect
    • การ resolve Windows API แบบไดนามิก
    • เพย์โหลดฝังภายใน
    • reflective DLL injection
    • process injection
    • การหลบ debugger และ sandbox
    • เครื่องมือและคอนฟิกที่เข้ารหัสไว้ในไฟล์ซิสเต็ม
  • การสื่อสารกับ C&C ก็ถูกออกแบบให้วิเคราะห์และตรวจจับยาก
    • LightlessCan และ miniBlindingCan ใช้ HTTP/HTTPS ในการสื่อสารกับ C&C
    • ทราฟฟิก C&C ถูกเข้ารหัสด้วย AES-128
    • ใช้ base64 สำหรับการเข้ารหัสข้อมูลในทราฟฟิก
    • LightlessCan ยังมีความสามารถด้านการขโมยข้อมูล และสามารถส่งข้อมูลออกไปยังเซิร์ฟเวอร์ C&C ได้

สรุป IoC และ MITRE ATT&CK

  • ไฟล์ IoC เริ่มต้นที่สำคัญ
    • C273B244EA7DFF20B1D6B1C7FD97F343201984B3: %TEMP%\7zOC35416EE\Quiz1.exe, initial dropper ที่ปลอมเป็นชาเลนจ์ “Hello World”\n - 38736CA46D7FC9B9E5C74D192EEC26F951E45752: %TEMP%\7zOCB3CC96D\Quiz2.exe, initial dropper ที่ปลอมเป็นชาเลนจ์ลำดับ Fibonacci
    • C136DD71F45EAEF3206BF5C03412195227D15F38: C:\ProgramShared\mscoree.dll, dropper ของ NickelLoader
    • E61672B23DBD03FE3B97EE469FA0895ED1F9185D: HTTPS downloader ของ NickelLoader
  • ไฟล์ IoC ที่เกี่ยวข้องกับ LightlessCan ที่สำคัญ
    • 0F33ECE7C32074520FBEA46314D7D5AB9265EC52: %ALLUSERSPROFILE%\Oracle\Java\mapistub.dll, dropper ของ LightlessCan
    • C7C6027ABDCED3093288AB75FAB907C598E0237D: LightlessCan ที่ถูก drop โดย mapistub.dll
    • E18B9743EC203AB49D3B57FED6DF5A99061F80E0: %ALLUSERSPROFILE%\Adobe\ARM\HID.dll, initial dropper ของเชนแบบซับซ้อน
    • 3007DDA05CA8C7DE85CD169F3773D43B1A009318: %WINDIR%\system32\grpedit.dat, LightlessCan ที่ถูก drop ในเชนแบบซับซ้อน
    • 247C5F59CFFBAF099203F5BA3680F82A95C51E6E: %WINDIR%\system32\oci.dll, intermediate dropper
  • C&C ใช้เว็บไซต์ปกติที่ถูกเจาะ
    • bug.restoroad[.]com
    • hurricanepub[.]com
    • turnscor[.]com
    • mantis.quick.net[.]pl
    • www.radiographers[.]org
    • kapata-arkeologi.kemdikbud.go[.]id
    • barsaji.com[.]mx
    • www.keewoom.co[.]kr
    • kerstpakketten.horesca-meppel[.]nl
    • kittimasszazs[.]hu
    • nrfm[.]lk
  • ตามกรอบ MITRE ATT&CK สามารถแมปได้กับการสอดแนมผ่านโซเชียลมีเดีย, spearphishing ผ่านลิงก์และบริการ, การให้ผู้ใช้รันไฟล์อันตราย, scheduled task, DLL side-loading, execution guardrails, การลดทอนการบันทึกประวัติคำสั่ง, C&C ผ่านเว็บโปรโตคอล, ช่องทางเข้ารหัสแบบสมมาตร และการขโมยข้อมูลผ่านช่องทาง C2

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

 
GN⁺ 2023-10-02
ความคิดเห็นจาก Hacker News
  • แทรกซึมผ่าน โจทย์ LeetCode แบบทำที่บ้าน ได้ ถือว่าฉลาดมาก
    ผมพัฒนาซอฟต์แวร์ของ Apple อยู่ และโปรเจกต์ Xcode สามารถเข้าถึงได้ค่อนข้างลึก แม้ Apple จะขึ้นคำเตือนเมื่อเปิดโปรเจกต์ที่ดาวน์โหลดมา แต่ถ้าคิดว่าเป็นการบ้านทำที่บ้านก็มักจะกดข้ามไปแทบไม่สนใจ
    โจทย์ออนไลน์เองก็อาจขอสิทธิ์เข้าถึงที่ยุ่งยากได้ และเป้าหมายแบบนี้มีโอกาสสูงที่จะมีสิทธิ์เข้าถึง ทรัพย์สินหลัก ของบริษัทค่อนข้างมาก แน่นอนว่าไม่มีใครใช้ทรัพยากรบริษัทเพื่อหางานหรอก แต่ถ้าบอกว่าเรื่องแบบนั้นเกิดขึ้นค่อนข้างบ่อย ทุกคนที่นี่ก็คงอ่อนไหวกับเรื่องนี้มาก

    • บริษัทผมก็ให้ผู้สมัครทำโจทย์ที่บ้าน แล้วตอนสัมภาษณ์ก็ดูโค้ดด้วยกันและขอให้แก้เล็กน้อย เพื่อดูการสื่อสารและทักษะทางเทคนิค
      ผู้สมัครคนหนึ่งแม้แต่ REPL ของโปรเจกต์ตัวเองก็ยังเปิดไม่ขึ้น เขานั่งงมอยู่พักหนึ่งแล้วพึมพำว่า “น่าจะใช้คอมพิวเตอร์บริษัทไปเลย” การที่รันขั้นพื้นฐานที่สุดบนคอมพิวเตอร์ส่วนตัวไม่ได้ แปลว่าเขาทำโจทย์นั้นบนคอมพิวเตอร์บริษัท
    • ตอนทำงาน IT ที่แรก เคยเห็นข้อความตีกลับของอีเมลที่ส่งไปยังที่อยู่รับสมัครงานของบริษัทยารายใหญ่ในพื้นที่
      ต้องยอมรับว่าในปี 1996 อีเมลส่วนตัวยังไม่ได้แพร่หลายเท่าตอนนี้ แต่ถึงอย่างนั้นก็ยังเป็นความผิดพลาดระดับพื้นฐาน ผมยึดหลัก ไม่ทำเรื่องส่วนตัวบนคอมพิวเตอร์บริษัท มาตั้งแต่นานแล้ว แต่ทัศนคติแบบนี้ก็ไม่ได้พบได้ทั่วไปนัก
    • แม้จะตัดประเด็นที่คลุมเครือทางศีลธรรมออกไป ผมเคยได้รับ เวลาทำงานทั้งวันเพื่อหางานใหม่ เป็นส่วนหนึ่งของข้อตกลงเลิกจ้าง และฝ่ายบริหารก็สนับสนุนกันอย่างกว้างขวาง
    • Apple เพิ่งเพิ่ม เชลล์สคริปต์แบบ sandboxed ซึ่งดูเหมือนเป็นส่วนหนึ่งของความพยายามทำให้การ build ถูกปิดล้อมมากขึ้น
      อาจไม่ใช่วิธีแก้ที่สมบูรณ์แบบ แต่คงดีถ้าเปิดโปรเจกต์ในโหมดที่ทุกขั้นตอน build รันใน sandbox ได้ ถ้าล้มเหลวก็ค่อยดูว่ามันพยายามจะทำอะไร
    • เวลาตรวจโจทย์ทำที่บ้าน สิ่งแรกที่ผมทำคือเปิด ไฟล์โปรเจกต์ Xcode ด้วย vim เพื่อตรวจหาสิ่งน่าสงสัย
      พูดตรง ๆ ผมไม่คิดว่าเพื่อนร่วมงานส่วนใหญ่จะทำ due diligence ระดับเดียวกัน
  • ผมแปลกใจทุกครั้งที่เห็นคนใช้เครื่องของบริษัทปัจจุบันทำ โจทย์ทำที่บ้าน, ส่งอีเมลคุยกับ headhunter, หรือรับสายสัมภาษณ์กับบริษัทอื่น
    หลายคนบอกว่าทำแบบนั้น แต่ผมไม่เข้าใจเลย ผลลัพธ์ที่อาจตามมามีเยอะเกินไป ผู้จัดการที่กระตือรือร้นคนหนึ่งเคยใช่เส้นสายส่วนตัวไปโน้มน้าวนายจ้างในอนาคตไม่ให้รับผมเข้าทำงาน เพียงเพราะเขารู้เรื่องนี้
    ต่อให้ผิดจริยธรรมหรือผิดกฎหมาย เรื่องแบบนี้ก็เกิดขึ้นจริง และเกิดในบริษัทเทคโนโลยีขนาดใหญ่ด้วย ถ้าคิดว่าเป็นการสมัครใจแชร์รายละเอียดการหางานให้กับนายจ้าง มันก็ดูแปลก ๆ ผมว่าเรื่องงานกับชีวิตส่วนตัวควรแยกกันเหมือน การแยกศาสนากับรัฐ

    • ผมค่อนข้างไม่สบายใจที่เพื่อนร่วมงานหลายคนไม่มีคอมพิวเตอร์ส่วนตัวเลย และใช้แค่ แล็ปท็อปบริษัท กับทุกอย่าง
      พวกเขาเป็นนักพัฒนาซอฟต์แวร์และมีกำลังซื้อแล็ปท็อปได้สบาย ระดับสูงสุดที่ผมยอมปนกันคือใช้แล็ปท็อปบริษัทที่เล็ก เบา และมี Bluetooth ดูวิดีโอ YouTube ที่ไม่มีพิษภัยระหว่างล้างจาน เมื่อก่อนบางครั้งก็ใช้พิมพ์งานที่ออฟฟิศด้วย
    • การใช้เครื่องที่ใช้ทุกวันต่อไปกับงานใหม่ ๆ มีแรงเสียดทานน้อยมาก จึงไม่แปลกใจเลย
      ผมเห็นด้วยเต็มที่ว่าความเสี่ยงสูงและไม่ควรทำ แต่ถ้าคนไม่คิดให้ลึกหรือไม่ได้ระวังตัวตลอดเวลา เรื่องแบบนี้ก็เกิดขึ้นได้
    • อย่างน้อยเพื่อป้องกันตัวเอง ถ้าจำเป็นก็สัมภาษณ์ผ่าน โทรศัพท์หรือแท็บเล็ต ก็ได้
      ไม่รู้จะเพิ่มความเสี่ยงที่ไม่จำเป็นไปทำไม บางทีอาจชอบความตื่นเต้นแบบนั้นก็ได้
  • นี่คือส่ง ไฟล์ .exe ไปให้เหยื่อโดยอ้างว่าต้องจำลองฟีเจอร์เป็น C++ ใช่ไหม? ทันทีที่ได้รับไฟล์ .exe จากใครสักคน มันควรเป็นสัญญาณแรง ๆ ว่านั่นคือการโจมตี หรืออย่างน้อยที่สุดผู้ส่งก็ไร้ความสามารถทางเทคนิคอย่างไม่น่าเชื่อ
    แต่คงเป็นเพราะผมผ่านยุค Windows 95 มาด้วยมั้ง บางบทเรียนดูเหมือนต้องเรียนรู้กันใหม่ทุกเจเนอเรชัน

    • แค่มีข้อเสนองานที่น่าดึงดูด ก็ต้องสำเร็จเพียงครั้งเดียวในบริษัทที่เต็มไปด้วยผู้คน
      เราไม่มีทางรู้ว่ามีกี่คนที่เจอโจทย์ทดสอบแปลก ๆ แล้วตอบว่า “งั้นไม่ทำ” ทุกวันนี้การรันแอปพลิเคชันใน sandbox ทำได้ค่อนข้างง่าย แต่ก็ยังไม่ทำกัน ซึ่งโง่มาก Sandboxie ฟรี และไม่ได้รับประกันว่าจะทำงานได้เสมอไป แต่ก็อาจสำเร็จได้ หรืออย่างน้อยก็น่าจะทำให้พฤติกรรมแปลก ๆ สังเกตเห็นได้ง่ายขึ้น Windows Pro ก็เคยมีตัวเลือกเมนูคลิกขวาสำหรับรันไฟล์ executable ใน sandbox อยู่พักหนึ่ง
      ตอนเห็นหัวข้อ ครั้งแรกผมนึกว่าเป็นการติดเชื้อผ่าน IDE ที่มีคำถามอย่าง “คุณเชื่อถือผู้สร้างโปรเจกต์นี้หรือไม่” นั้นมีเหตุผล และในกรณีของ VS Code ยังสามารถใช้กลเม็ดผ่านการตั้งค่า Git เพื่อรันโค้ดก่อนพรอมป์ได้ด้วย
      ผมจะระวังเรื่องการรันโปรแกรม แต่ถ้านายหน้าส่งโจทย์โค้ดมาในรูปโปรเจกต์ที่ยังทำไม่เสร็จบน Git repository ผมก็อาจกดปุ่ม “อนุญาตให้รันโค้ด” ได้ โดยเฉพาะถ้าเป็นสัมภาษณ์ทางไกลที่ดูโค้ดแบบเรียลไทม์แล้วบอกว่า “จะดูวิธีเข้าหาปัญหา” การโจมตีครั้งนี้พื้นฐานมาก แต่การทำให้ตรวจจับการติดเชื้อเริ่มต้นได้ทันเวลานั้นไม่ได้ยากนัก
    • ตอนแรกผมนึกว่านี่เป็นการโจมตีที่ฉลาดกว่าความเป็นจริง
      การหลอกให้ดาวน์โหลดหรือรันไฟล์ executable ที่แนบมานั้นเรียบง่าย แต่ดูเหมือนยังได้ผลอยู่ วิธีที่ชั่วร้ายและได้ผลกว่าคือชี้ไปยัง GitHub repository ที่มีโปรเจกต์ “โจทย์” แล้วให้เหยื่ออ้างอิง แพ็กเกจที่ถูกเจาะ ซึ่งทำสิ่งที่ผู้โจมตีต้องการตอนที่เหยื่อทดสอบคำตอบของตัวเอง
    • พอรู้ว่าพวกเขาพยายามทำอะไร ผมกลับคิดว่าถ้าจะหลอกผมก็น่าจะพยายามให้ดีกว่านี้
      ผมรู้ว่าพวกเขาไม่ใช่ script kiddie ธรรมดา แต่ก็สงสัยว่าจะตอบสนองอย่างไรถ้าถูกลองสวนกลับ ถ้าให้ .exe มาแล้วบอกให้รัน ผมจะไม่รัน แต่จะเปิดตรวจด้วย hex editor ไฟล์ที่อ้างว่าเป็น “hello world” หรือ Fibonacci generator ถ้ามีขนาดใหญ่กว่าที่คาดมาก หรือมีข้อมูลที่ดูเหมือนเข้ารหัสหรือมีความพยายาม obfuscation อยู่ ผมก็จะไม่รัน
    • เมื่อก่อนผมเคยเสนอให้แจกไบนารีเป็นส่วนหนึ่งของ โจทย์แบบ black-box
      ถ้าล็อกซอร์สไว้และเปลี่ยนรายละเอียดตามผู้สมัครแต่ละคนได้ เฉลยที่ถูกโพสต์ออนไลน์ก็จะช่วยอะไรไม่ได้
    • น่าจะไม่ใช่ .exe แต่เป็น ไฟล์ติดตั้ง .msi หรือไฟล์ zip มากกว่า
  • ตอนทำงานให้คำปรึกษาโครงการของรัฐบาล ผมตั้งใจไม่เอาเรซูเม่ขึ้นอินเทอร์เน็ต
    ไม่ได้มีสิทธิ์เข้าถึงอะไรที่สายลับน่าจะอยากได้ แต่ถ้าดูแค่คีย์เวิร์ดบางคำก็อาจดูเหมือนมี เหมือนพวกรีครูตเตอร์ที่สแปมทุกคนที่ติดผลค้นหาคีย์เวิร์ดบน LinkedIn นั่นแหละ
    ผมรู้ว่าต้องรายงานเหตุด้านความปลอดภัยทุกกรณี และคิดว่าสัญญากับรายได้อาจสะดุดไปในระหว่างที่ระบบราชการที่รอบคอบจัดการเหตุการณ์นั้น ดังนั้นผมเลยเอาเรซูเม่ออนไลน์ออก และทำมาตรการป้องกันไม่ให้โจรสุ่ม ๆ เผลอมาขโมยแล็ปท็อปงานไปด้วย
    ตอนนี้ผมออกจากงานนั้นแล้ว เลยสนุกกับสแปมรับสมัครงานบน LinkedIn แบบ Junior Python Leetcode Hazing Engineer เหมือนคนอื่น ๆ

    • ไม่รู้ว่าทำไมถึงโดนดาวน์โหวต
      ในบางตำแหน่งหรือบางอุตสาหกรรม การไม่เปิดเผยสถานะการจ้างงานอาจเป็นมาตรการความปลอดภัยธรรมดา ๆ เพื่อป้องกัน การโจมตีแบบเจาะจงเป้าหมาย ก็ได้ ถ้าเทียบกับโลกจริง เจ้าหน้าที่ CIA ก็คงไม่เดินแจกนามบัตรที่ประทับตรา CIA ในต่างประเทศหรอก
    • แบบนั้นดูระแวงเกินไป
      ผมก็คล้ายกันตรงที่ไม่อยากให้บางคนรู้ว่าผมทำงานที่ไหน แต่คิดว่าเรซูเม่เก่าที่ไม่ได้ระบุที่ทำงานปัจจุบัน ปล่อยไว้ออนไลน์ก็ไม่เป็นไร ผมยังขอหัวหน้า HR ด้วยว่าอย่าให้ชื่อผมไปอยู่บนหน้า “ทีมของเรา” แบบสาธารณะเด็ดขาด
      ผลข้างเคียงคือ ผมหัวเราะทุกครั้งเวลาอบรมความปลอดภัยภาคบังคับของบริษัทที่สอนวิธีรับมือการโจมตีแบบเจาะจงและยกตัวอย่างอีเมลฟิชชิง จนถึงตอนนี้ นอกจากการทดสอบของบริษัททำ penetration test แล้ว ผมยังไม่เคยได้รับ ฟิชชิงแบบเจาะจงเป้าหมาย เลยแม้แต่ครั้งเดียว
  • คนโง่แบบไหนกันที่เอาอุปกรณ์บริษัทไปทำเรื่องส่วนตัว
    ไม่ได้พูดถึงคนจน แต่พูดถึงคนที่มีเงินพอจะซื้ออุปกรณ์ส่วนตัวของตัวเอง

    • ผมทำเรื่องส่วนตัวบนแล็ปท็อปบริษัทตลอด
      คอมพิวเตอร์ส่วนตัวเป็นเหมือนเครื่องทำความร้อนที่เล่นวิดีโอเกมได้ด้วย เลยไม่ได้ใช้เป็นเครื่องหลัก ผมมีเงินซื้อเครื่องที่สามได้ แต่เอาเงินไปทำอย่างอื่นดีกว่า
      แน่นอนว่าผมพยายามทำตามกฎความปลอดภัยของบริษัท ผมเชื่อใจบริษัท ผมไม่อยากทำงานให้บริษัทที่ผมฝาก คุกกี้เบราว์เซอร์ ไว้ไม่ได้ ในเขตอำนาจที่ผมอยู่ กฎหมายก็เข้าข้างผม บริษัทไล่ผมออกไม่ได้เพียงเพราะผมทำอะไรที่บริษัทไม่ชอบบนแล็ปท็อปบริษัท ต้องมีเหตุผลที่สมเหตุสมผลมาก ๆ
    • รูมเมตผมไม่อยากเสียเงินซื้อแล็ปท็อปส่วนตัว เลยใช้ แล็ปท็อปทำงาน เหมือนเป็นแล็ปท็อปส่วนตัวอยู่ 2 ปี
      ตอนเป็นนักศึกษาฝึกงานและจนกว่านี้มาก ผมก็เคยทำแบบเดียวกัน
    • ผมก็ทำเรื่องส่วนตัวบนฮาร์ดแวร์บริษัทนะ แต่เรื่องที่เป็นส่วนตัวจริง ๆ ไม่ทำ
      ไม่ล็อกอิน แค่ดูหนังบนแล็ปท็อปงานก็พอสนุกแล้ว
    • ก็คงเป็นคนโง่คนเดียวกับที่รัน Quiz1.exe ที่คนแปลกหน้าบนอินเทอร์เน็ตส่งมาให้นั่นแหละ
    • อาจทำเพราะจำเป็นก็ได้
      ในกรณีนี้เหยื่อทำงานที่บริษัทอวกาศการบิน ผมรู้จักคนในอุตสาหกรรมนั้นอยู่บ้าง ทุกคนทำงานกันนานเกินเหตุ แถมเป็นบริษัทสเปนด้วย การทำงานวันละ 10 ชั่วโมงขึ้นไปอาจถูกมองว่าเป็นเรื่องปกติ
  • ออกนอกเรื่องนิดหน่อย แต่ถ้าคนเกาหลีเหนือแทบไม่มีสิทธิ์เข้าถึงอินเทอร์เน็ตจนกว่าจะได้เป็นเจ้าหน้าที่รัฐ ผมสงสัยว่า Lazarus/HIDDEN COBRA กลายเป็น ผู้โจมตีที่มีรัฐหนุนหลัง ที่ซับซ้อนขนาดนั้นได้อย่างไร
    ถ้าเข้าถึงงานวิจัยด้านความปลอดภัยสมัยใหม่ โครงการโอเพนซอร์ส เอกสารการเขียนโปรแกรม และมัลแวร์ที่แพร่กระจายจริงไม่ได้ ก็น่าจะยากที่จะสร้างแฮกเกอร์รุ่นเก่ง ๆ ขึ้นมาได้ บางทีพวกเขาอาจจับคนที่อ้อมไฟร์วอลล์ได้ แล้วเสนองานในหน่วยงานให้ก็ได้

    • รู้ได้อย่างไรว่าพวกเขาหาของพวกนั้นไม่ได้
      แล้วก็สงสัยว่าคิดว่าเขาฝึกแฮกเกอร์กันอย่างไร มันไม่ใช่แค่สอนทำแอป todo ด้วย React nightly build แล้วจบ พวกเขาน่าจะท่องจำและท่องย้อนกลับ สแต็ก TCP/IP กับอีเทอร์เน็ตได้ดีกว่าคนที่สร้างมันขึ้นมาเสียอีก และแค่นั้นก็เพียงพอจะเจาะอะไรได้มากมายแล้ว
    • เหมือนเคยได้ยินจากประกาศของหน่วยงานความมั่นคงไซเบอร์ของเนเธอร์แลนด์ว่า พวกเขาฝึกแฮกเกอร์ในประเทศแล้วส่งไปจีน และแน่นอนว่าให้ปฏิบัติการใน อินเทอร์เน็ตคาเฟ่ ภายใต้การเฝ้าระวังอย่างเข้มงวด
    • อาจมี โครงการการศึกษาสำหรับเด็กอัจฉริยะ ที่ให้สิทธิ์เข้าถึงทุกอย่างแก่เด็ก 7 ขวบที่มีพรสวรรค์ด้านเทคนิค แล้วเลี้ยงให้เป็นแฮกเกอร์ก็ได้
    • ว่ากันว่าพวกเขาคัดคนเก่งที่สุดตั้งแต่ในโรงเรียนตั้งแต่เนิ่น ๆ และฝึกอย่างเข้มข้น
      ในประเทศที่ขาดแคลนหลายอย่างอย่างอาหาร ไฟฟ้า ฯลฯ นี่เป็นอาชีพที่ใคร ๆ ก็ใฝ่ฝันมาก ถ้าอยากรู้มากขึ้น ลองฟังพอดแคสต์ Lazarus Heist ดูได้
    • มองว่าไปปฏิบัติการจากจีนอาจจะถูกกว่า
  • ในพื้นที่ของผม จากบริษัทจัดหาพนักงาน 300 แห่ง มีแค่ 23 แห่งที่ได้รับอนุญาตให้ดำเนินงานเป็นบริการอย่างถูกกฎหมายจริง ๆ เลยไม่แปลกใจ
    การพยายามตรวจสอบว่าเจ้าไหนปลอม เจ้าไหนจริง เป็นเส้นด้ายที่บริษัทและผู้สมัครส่วนใหญ่ไม่ค่อยอยากดึง
    กลโกงรับสมัครงานปลอม ก็มีเหมือนกัน คือเสนอแพ็กเกจค่าตอบแทนที่น่าดึงดูดให้พนักงานเพื่อดึงตัวออกมา จากนั้นคู่แข่งก็ขุดข้อมูล และไล่ออกก่อนหมดช่วงประเมิน ปกติภายใน 6–10 เดือน ผู้ไม่ประสงค์ดีหลายรายยังแพร่ PDF ที่ติดเชื้อมาพร้อมคำสัญญาเกินจริงด้วย
    ต้องระวัง และ 86Box รองรับอิมเมจแบ็กกิงแบบอ่านอย่างเดียวกับเซสชันเหมือน Bochs/kvm: https://github.com/86Box/86Box/releases
    ทำงานบนแล็ปท็อป Apple M1 ได้ด้วย แต่ช้า

  • เรื่องแย่ ๆ แบบนี้เกิดขึ้นจริง
    ในปี 2019 แล็ปท็อปผมถูกแฮ็กผ่าน Wi‑Fi ฟรี ที่สำนักงานใหญ่จัดให้ จนต้องเปลี่ยนคีย์ SSH ทั้งหมด

    • อยากรู้ว่า “ถูกแฮ็กผ่าน Wi‑Fi ฟรีของสำนักงานใหญ่” หมายความว่าอย่างไรโดยละเอียด
  • “ไฟล์ปฏิบัติการอันตรายสองไฟล์… ไฟล์แรกเป็นโปรเจกต์ Hello World… ไฟล์ที่สองพิมพ์ลำดับฟีโบนัชชีจนถึงค่าสูงสุดที่น้อยกว่าค่าที่ป้อนเข้า” นี่ควรเป็นสัญญาณแรกแล้วว่ามีอะไรผิดปกติ
    ถ้าเป็น Meta คงเริ่มจาก LeetCode medium หรือ hard แล้ว

  • ความปลอดภัยของเว็บไซต์นี้ยอดเยี่ยมมาก
    เขาบล็อกไม่ให้ใช้ ปุ่มลูกศร เวลาเลื่อนเนื้อหาในหน้า เห็นได้ชัดว่าเป็นเพราะเวกเตอร์โจมตีที่ยังไม่เป็นที่รู้จักผ่านคีย์บอร์ด เยี่ยมจริง ๆ