โล่สีทองเรืองแสงตั้งบนแท่นหิน ข้างกันมีตาชั่งทองเหลือง ฉากหลังเป็นแผงวงจรทอดยาวเหมือนเมืองยามค่ำคืน

Cyber 101 · บทที่ 0

รากฐานและจริยธรรม: แฮกเกอร์สายขาวคือใคร

แฮกเกอร์สายขาวคือใคร

คำว่า "แฮกเกอร์" ในข่าวมักมาพร้อมภาพคนร้าย แต่ในโลกความปลอดภัยไซเบอร์จริง ๆ แฮกเกอร์คือคนที่เข้าใจระบบลึกพอจะรู้ว่ามันพังได้ตรงไหน ความรู้ชุดเดียวกันนี้ใช้ทำลายก็ได้ ใช้ปกป้องก็ได้ เส้นแบ่งอยู่ที่ "การได้รับอนุญาต" และ "เจตนา" ไม่ใช่ที่ทักษะ คอร์สนี้พาคุณไปทางสายขาว คือใช้ความเข้าใจการโจมตีเพื่อป้องกัน ไม่ใช่เพื่อทำร้ายใคร

สายขาว (White hat)

ทำงานโดยได้รับอนุญาตเป็นลายลักษณ์อักษร มีขอบเขตชัด เป้าหมายคือหาช่องโหว่ก่อนคนร้ายแล้วช่วยอุด เช่น นักทดสอบเจาะระบบ (penetration tester) หรือทีมความปลอดภัยขององค์กร ทำแล้วรายงานให้เจ้าของแก้

สายเทา (Grey hat)

ทดสอบระบบของคนอื่นโดยไม่ได้ขออนุญาตก่อน แม้จะไม่ได้ตั้งใจทำลาย แต่การเข้าถึงโดยไม่ได้รับอนุญาตก็ผิดกฎหมายอยู่ดี "เจตนาดี" ไม่ใช่ข้อยกเว้นทางกฎหมาย คอร์สนี้ไม่สนับสนุนแนวทางนี้

สายดำ (Black hat)

โจมตีเพื่อประโยชน์ตนหรือสร้างความเสียหาย เช่น ขโมยข้อมูล เรียกค่าไถ่ หลอกเอาเงิน เป็นอาชญากรรมเต็มตัว มีโทษทางอาญา ไม่ใช่เป้าหมายของคอร์สนี้ในทุกกรณี

Responsible disclosure: มารยาทของคนหาช่องโหว่

เมื่อสายขาวเจอช่องโหว่ในระบบที่ได้รับอนุญาตให้ทดสอบ สิ่งที่ทำต่อเรียกว่า responsible disclosure หรือการเปิดเผยอย่างรับผิดชอบ หลักคือ แจ้งเจ้าของระบบเป็นการส่วนตัวก่อน อธิบายให้ชัดว่าช่องอยู่ตรงไหนและกระทบอะไร ให้เวลาเจ้าของแก้ตามสมควร (มักอ้างอิงราว 90 วัน) แล้วค่อยพิจารณาเปิดเผยต่อสาธารณะหลังแก้เสร็จ ไม่ใช่โพสต์ประจานทันที และไม่นำช่องโหว่ไปขายหรือใช้เอง องค์กรใหญ่จำนวนมากมีโครงการ bug bounty ที่เชิญให้คนช่วยหาช่องโหว่ในขอบเขตที่กำหนด แล้วให้รางวัลอย่างถูกกฎหมาย

🛡️ วิธีป้องกัน

ถ้าคุณเป็นเจ้าของเว็บหรือแอป ทำให้คนดี ๆ ติดต่อคุณได้ง่าย จะช่วยให้ช่องโหว่ถูกแจ้งแทนที่จะถูกใช้โจมตี วิธีที่นิยมคือวางไฟล์ security.txt (ตามมาตรฐาน RFC 9116) ไว้ที่ /.well-known/security.txt บอกอีเมลหรือช่องทางรับแจ้งช่องโหว่ กำหนดนโยบายชัดว่ายินดีรับรายงานและจะไม่ดำเนินคดีกับคนที่แจ้งอย่างสุจริตตามขอบเขต เท่านี้ก็เปลี่ยนคนที่บังเอิญเจอช่องโหว่ให้กลายเป็นแนวร่วมป้องกันได้

⚠️ จริยธรรมและกฎหมาย

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

CIA triad: สามเสาของความปลอดภัย

ก่อนจะป้องกันอะไร เราต้องรู้ก่อนว่า "ปลอดภัย" แปลว่าอะไร กรอบคิดที่เก่าแก่และยังใช้ได้ดีที่สุดคือ CIA triad ซึ่งไม่เกี่ยวกับหน่วยข่าวกรอง แต่ย่อมาจากสามคุณสมบัติที่ระบบที่ดีต้องรักษาไว้ให้ครบ ทุกช่องโหว่ที่คุณจะได้เรียนต่อจากนี้ สุดท้ายก็คือการที่หนึ่งในสามเสานี้ถูกทำลาย

Confidentiality (ความลับ)

ข้อมูลถูกเห็นได้เฉพาะคนที่ควรเห็น เช่น เวชระเบียนคนไข้ต้องไม่หลุดไปถึงคนนอก เครื่องมือรักษาเสาต้นนี้คือการเข้ารหัส การควบคุมสิทธิเข้าถึง และรหัสผ่านที่ดี เมื่อข้อมูลรั่ว เสานี้คือเสาที่พัง

Integrity (ความถูกต้อง)

ข้อมูลถูกแก้ไขได้เฉพาะโดยผู้มีสิทธิ และเราตรวจได้ว่ามันไม่ถูกดัดแปลงระหว่างทาง เช่น ยอดเงินในบัญชี หรือผลแล็บของคนไข้ ต้องเชื่อถือได้ เครื่องมือของเสานี้คือ hashing และลายเซ็นดิจิทัล

Availability (ความพร้อมใช้)

ระบบพร้อมให้คนที่ควรใช้ได้ใช้เมื่อจำเป็น การโจมตีแบบ DoS ที่ถล่มให้เว็บล่ม คือการทำลายเสานี้ เครื่องมือป้องกันคือการสำรองข้อมูล การกระจายโหลด และการวางแผนกู้คืน

ทำไมต้องครบทั้งสาม

ทั้งสามเสาต้องสมดุลกัน ถ้าเน้นความลับจนล็อกทุกอย่าง ระบบอาจใช้งานยากจนไม่มีใครทำงานได้ ซึ่งก็คือทำลาย availability ในทางกลับกัน ถ้าเปิดกว้างเพื่อความสะดวก ความลับก็เสี่ยง งานของสายป้องกันคือหาจุดสมดุลที่เหมาะกับความเสี่ยงจริงของระบบนั้น ๆ ไม่ใช่ปลอดภัยสูงสุดในทุกมิติแบบไม่ลืมหูลืมตา บางตำราเพิ่มคุณสมบัติอื่นเข้ามา เช่น authenticity (พิสูจน์ตัวตนได้จริง) และ non-repudiation (ปฏิเสธความรับผิดไม่ได้) แต่สามเสาหลักนี้คือจุดตั้งต้นที่ต้องแม่นก่อน

🧪 ลองในแล็บของคุณ

ยังไม่ต้องแตะเครื่องมืออะไร แค่หยิบกระดาษหรือเปิดไฟล์โน้ตของคุณเอง แล้วเลือกบัญชีหนึ่งของตัวเอง เช่น อีเมลส่วนตัว ลองเขียนแยกทีละเสา ว่าถ้าเสานั้นพังจะเกิดอะไร: ความลับพัง = ใครอ่านเมลเราได้บ้าง, ความถูกต้องพัง = ถ้ามีคนแก้เมลที่ส่งไปแล้วจะเป็นอย่างไร, ความพร้อมใช้พัง = ถ้าเข้าเมลไม่ได้ตอนจำเป็นจะกระทบอะไร นี่คือการทำ threat modeling ฉบับย่อกับสิ่งของตัวเอง เป็นการฝึกที่ถูกกฎหมายร้อยเปอร์เซ็นต์ เพราะมันคือระบบของคุณเอง

พ.ร.บ.คอมพิวเตอร์ไทย รู้ไว้ก่อนลงมือ

ในไทย กติกาสำคัญคือ พระราชบัญญัติว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. 2550 และฉบับแก้ไขเพิ่มเติม (ฉบับที่ 2) พ.ศ. 2560 หัวใจที่มือใหม่ต้องจำคือ กฎหมายลงโทษการเข้าถึง ดักรับ หรือรบกวนระบบและข้อมูลของผู้อื่น "โดยมิชอบ" คำว่าโดยมิชอบนี้แหละคือคำที่แยกสายขาวออกจากอาชญากร เพราะสิ่งที่ทำให้การทดสอบของคุณ "ชอบด้วยกฎหมาย" คือการได้รับอนุญาตจากเจ้าของระบบ

มาตราสำคัญโดยย่อ

ตารางนี้สรุปมาตราที่เกี่ยวกับคนที่ทดลองด้านความปลอดภัยมากที่สุด เพื่อให้เห็นภาพว่าการกระทำแบบไหนกฎหมายมองว่าผิด ตัวเลขโทษเป็นเพดานสูงสุดโดยประมาณและอาจปรับตามข้อเท็จจริงของแต่ละคดี

มาตราการกระทำโดยมิชอบโทษสูงสุดโดยย่อ
ม.5เข้าถึงระบบคอมพิวเตอร์ที่มีมาตรการป้องกันจำคุกไม่เกิน 6 เดือน หรือปรับไม่เกินหนึ่งหมื่นบาท
ม.7เข้าถึงข้อมูลคอมพิวเตอร์ที่มีมาตรการป้องกันจำคุกไม่เกินสองปี หรือปรับไม่เกินสี่หมื่นบาท
ม.8ดักรับข้อมูลระหว่างทาง (interception)จำคุกไม่เกินสามปี หรือปรับไม่เกินหกหมื่นบาท
ม.9แก้ไข ทำลาย ทำให้ข้อมูลเสียหายจำคุกไม่เกินห้าปี หรือปรับไม่เกินหนึ่งแสนบาท
ม.10รบกวนหรือขัดขวางการทำงานของระบบ (เช่น DoS)จำคุกไม่เกินห้าปี หรือปรับไม่เกินหนึ่งแสนบาท
ม.13จำหน่ายหรือเผยแพร่ชุดคำสั่งเพื่อใช้กระทำผิดข้างต้นมีโทษตามที่กฎหมายกำหนด

เจตนาและการได้รับอนุญาตคือหัวใจ

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

⚠️ จริยธรรมและกฎหมาย

ข้อความข้างต้นเป็นความรู้ทั่วไปเพื่อการศึกษา ไม่ใช่คำแนะนำทางกฎหมายและอาจไม่อัปเดตตามการแก้ไขล่าสุด ตัวบทจริง การตีความ และโทษขึ้นกับข้อเท็จจริงของแต่ละกรณีและดุลพินิจของศาล หากมีคำถามที่กระทบสิทธิจริง ควรอ่านตัวบทฉบับเต็มจากราชกิจจานุเบกษาและปรึกษานักกฎหมาย นอกจากนี้ยังมีกฎหมายอื่นที่เกี่ยวข้อง เช่น พ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล (PDPA) ที่ดูแลเรื่องข้อมูลส่วนบุคคลควบคู่กันไป

กฎทองของคอร์สนี้

ถ้าคุณจำอะไรจากบทนี้ได้แค่ประโยคเดียว ขอให้เป็นประโยคนี้: ฝึกเฉพาะกับระบบที่เป็นของเราเอง หรือระบบที่เราได้รับอนุญาตเป็นลายลักษณ์อักษรและมีขอบเขตชัดเจนเท่านั้น กฎข้อนี้อยู่เหนือทุกบทเรียน ไม่มีข้อยกเว้นเพราะ "อยากลอง" หรือ "เห็นว่าเว็บนั้นมันไม่ค่อยปลอดภัย"

ระบบของเราเอง

เครื่องคอมของคุณ, เครื่องเสมือน (VM) ที่คุณสร้างเอง, แอปที่คุณเขียนและรันบน localhost เหล่านี้คือสนามซ้อมที่ปลอดภัยและถูกกฎหมายเต็มที่ พังได้ ลองผิดลองถูกได้ตามใจ

เว็บฝึกที่เปิดให้ฝึก

มีเว็บและเครื่องมือที่จงใจสร้างช่องโหว่ไว้ให้ฝึกโดยเฉพาะ เช่น OWASP Juice Shop, DVWA, picoCTF และ PortSwigger Web Security Academy ติดตั้งหรือใช้ในขอบเขตที่เขาอนุญาต ถือว่าได้รับอนุญาตแล้ว

ที่ได้รับอนุญาตเป็นลายลักษณ์อักษร

ในงานจริง การทดสอบเจาะระบบต้องมีเอกสารมอบอำนาจและขอบเขต (scope) ระบุชัดว่าทดสอบอะไรได้ ช่วงเวลาใด ห้ามแตะส่วนไหน วาจาลอย ๆ ว่า "เอาเลย" ไม่พอ

🧪 ลองในแล็บของคุณ

เตรียมพื้นที่ฝึกของตัวเองไว้ล่วงหน้า โดยยังไม่ต้องโจมตีอะไรทั้งสิ้น ขั้นแรกลองดาวน์โหลดโปรแกรมทำเครื่องเสมือน เช่น VirtualBox ที่เป็นของฟรี ติดตั้งลงเครื่องของคุณ จากนั้นในบทถัด ๆ ไปเราจะสร้าง VM และตั้งค่าเครือข่ายแบบ host-only เพื่อกันไม่ให้แล็บไปยุ่งกับเครือข่ายบ้านหรืออินเทอร์เน็ต ตอนนี้แค่ทำความคุ้นเคยกับหน้าตาโปรแกรมและจดไว้ว่าเครื่องของคุณมีพื้นที่ว่างพอสำหรับ VM หรือไม่ ก็ถือว่าเริ่มต้นได้ดีแล้ว

⚠️ จริยธรรมและกฎหมาย

เว็บฝึกอย่าง Juice Shop ให้คุณติดตั้งไว้บนเครื่องตัวเองแล้วโจมตีสำเนาของคุณได้ แต่ห้ามนำเทคนิคเดียวกันไปยิงเว็บสาธารณะของคนอื่น แม้จะเป็นเว็บที่ดู "ไม่สำคัญ" การขออนุญาตต้องมาก่อนการทดสอบเสมอ ถ้าไม่แน่ใจว่าได้รับอนุญาตหรือยัง ให้ถือว่ายังไม่ได้ และอย่าทำ

Mindset ของสายป้องกัน

คนที่ป้องกันเก่งไม่ได้รอให้ถูกโจมตีแล้วค่อยแก้ แต่ฝึกคิดแบบผู้โจมตีล่วงหน้า เพื่อมองเห็นช่องก่อนที่คนร้ายจะเห็น แล้วอุดมันเสียก่อน นี่คือหัวใจของ ethical security คือยืมมุมมองของฝ่ายรุกมาใช้เพื่อสร้างเกราะให้ฝ่ายรับ

ถามคำถามแบบผู้โจมตี

เวลาคุณดูระบบใด ลองตั้งคำถามเชิงรุกกับระบบของตัวเอง เช่น ทางเข้าของระบบนี้มีกี่ทาง, ข้อมูลอะไรมีค่าที่สุดถ้าหลุดจะเจ็บที่สุด, ถ้าฉันเป็นคนร้ายจะเริ่มลองตรงไหนก่อน, จุดไหนที่คนออกแบบน่าจะเผลอไว้ใจ input จากผู้ใช้มากเกินไป การฝึกตั้งคำถามแบบนี้กับสิ่งที่คุณเป็นเจ้าของ จะเปลี่ยนวิธีที่คุณอ่านโค้ดและออกแบบระบบไปตลอด

🛡️ วิธีป้องกัน

เปลี่ยนคำถามของผู้โจมตีให้เป็นการกระทำฝั่งป้องกันสองหลักที่ใช้ได้กับทุกระบบ หลักแรกคือ defense in depth หรือการป้องกันหลายชั้น อย่าฝากความหวังไว้กับกำแพงเดียว ถ้าชั้นหนึ่งพัง ยังมีชั้นถัดไปคอยรับ หลักที่สองคือ least privilege หรือการให้สิทธิเท่าที่จำเป็น ทุกบัญชี ทุกบริการ ควรมีสิทธิน้อยที่สุดเท่าที่ทำงานได้ เพื่อว่าถ้าถูกยึด ความเสียหายจะถูกจำกัดวง สองหลักนี้จะกลับมาในทุกบทที่เหลือของคอร์ส

🧪 ลองในแล็บของคุณ

เลือกแอปหรือเว็บเล็ก ๆ ที่คุณเคยเขียนเอง หรือถ้ายังไม่มีก็ใช้บัญชีออนไลน์ของตัวเองแทน แล้วเขียน "แผนที่ผิว" (attack surface) ของมันบนกระดาษ ลิสต์ทุกจุดที่รับข้อมูลจากภายนอก เช่น ช่องล็อกอิน ช่องค้นหา ฟอร์มอัปโหลด แล้วให้คะแนนแต่ละจุดว่าถ้าพังจะกระทบเสาไหนของ CIA มากที่สุด นี่คือการฝึกคิดแบบผู้โจมตีเพื่อป้องกัน โดยทำกับของตัวเองล้วน ๆ เมื่อคุณเห็นผิวสัมผัสทั้งหมดแล้ว การตัดสินใจว่าจะอุดตรงไหนก่อนจะง่ายขึ้นมาก

เส้นทางข้างหน้า

บทถัดไปเราจะลงลึกพื้นฐานระบบ เครือข่าย และคอมมานด์ไลน์ พร้อมตั้งแล็บส่วนตัวให้พร้อมใช้งานจริง จากนั้นค่อยไปเรื่องการทำงานของเว็บ ช่องโหว่ยอดฮิตและวิธีอุด เครื่องมือสายความปลอดภัย ไปจนถึงการเขียนโปรแกรมฝั่งป้องกัน จำไว้ว่าทุกก้าวเดินบนกฎทองข้อเดียวเสมอ คือฝึกกับระบบของเราเองหรือที่ได้รับอนุญาตเท่านั้น

❓ คำถาม: อะไรคือเส้นแบ่งที่แท้จริงระหว่างแฮกเกอร์สายขาวกับสายดำ
เฉลย: ไม่ใช่ระดับทักษะ แต่คือการได้รับอนุญาตและเจตนา สายขาวทำงานในขอบเขตที่ได้รับอนุญาตเป็นลายลักษณ์อักษรเพื่อช่วยป้องกัน ส่วนสายดำเข้าถึงระบบของผู้อื่นโดยมิชอบเพื่อประโยชน์ตนหรือสร้างความเสียหาย
❓ คำถาม: การโจมตีแบบ DoS ที่ทำให้เว็บล่ม เป็นการทำลายเสาใดของ CIA triad
เฉลย: Availability หรือความพร้อมใช้ เพราะทำให้ผู้ใช้ที่ควรเข้าถึงระบบได้ กลับใช้งานไม่ได้เมื่อจำเป็น
❓ คำถาม: การสแกนพอร์ตเซิร์ฟเวอร์ของบริษัทอื่นโดยไม่ได้ขออนุญาต แต่ตั้งใจดีอยากเตือนเขา ทำได้หรือไม่ตามกฎหมายไทย
เฉลย: ไม่ควรทำและอาจเข้าข่ายผิดกฎหมาย การเข้าถึงหรือทดสอบระบบของผู้อื่นโดยไม่ได้รับอนุญาตอาจเข้าข่ายความผิดตาม พ.ร.บ.คอมพิวเตอร์ แม้จะไม่ได้เกิดความเสียหายและมีเจตนาดี เพราะกฎหมายพิจารณาที่การกระทำโดยมิชอบ ถ้าอยากช่วย ให้แจ้งผ่านช่องทางที่เขาเปิดไว้ เช่น security.txt หรือโครงการ bug bounty แทน
❓ คำถาม: responsible disclosure ต่างจากการโพสต์ประจานช่องโหว่ในโซเชียลอย่างไร
เฉลย: responsible disclosure คือแจ้งเจ้าของระบบเป็นการส่วนตัวก่อน ให้เวลาแก้ตามสมควร แล้วค่อยพิจารณาเปิดเผยหลังแก้เสร็จ เพื่อไม่ให้คนร้ายฉวยช่องโหว่ไปใช้ ส่วนการประจานทันทีทำให้ช่องโหว่ถูกเปิดต่อสาธารณะทั้งที่ยังไม่ถูกอุด เพิ่มความเสี่ยงต่อผู้ใช้จริง