ซีรีย์เล่าเท่าที่รู้นี่ รอบที่แล้วเล่าเรื่องความรู้ tech พื้นฐาน กระแสตอบรับดีพอสมควรเหมือนกันครับ ผ่านมา 1 ปี อะไรๆ เปลี่ยนไปเยอะพอสมควร หากท่านใดสนใจอัพเดท ผมแนะนำดูคลิปนี้ของ LearnCode.academy ครับ
ช่วงนี้เรียนวิชา basic computer security ครับ ก็นับว่าได้เปิดหูเปิดตาเหมือนกัน จึงนำมาฝากกันใน blog นี้ครับ ต้องบอกก่อนว่า security นี่เป็นเรื่องที่กว้างมาก และผมเองก็ไม่ได้รู้เยอะ ดังนั้นจึงเป็นไปไม่ได้ที่จะสรุปใน blog เดียว วันนี้ผมจะเขียนถึงเรื่องภัยคุกคาม (threat) ประเภทต่างๆ และมันจะเป็นแค่ overview มากๆ นะครับ
จุดประสงค์หลักคือ เพื่อให้เข้าใจว่าศัพท์คำต่างๆ เกี่ยวกับ threat นี้หมายถึงอะไร และจัดอยู่ในกลุ่มไหนก็พอครับ หากมีข้อผิดพลาดประการใดรบกวนชี้แนะด้วยนะครับ ^.^
สำหรับการแบ่งประเภท จริงๆ มีวิธีแบ่งเยอะมากๆ ตามสำนักต่างๆ ผมเองขอเลือกแบ่งตามคอร์ส CompTIA Security+ certification ของ Lynda นี้เป็นหลักนะครับ เพราะเป็น material หลักที่ผมใช้ศึกษา เสริมด้วยข้อมูลจากแหล่งต่างๆ
Highlights
- Security ประกอบด้วย confidentiality, integrity, และ availability
- Threat (ภัยคุกคาม) คือปัจจัยภายนอกที่มีผลต่อ security เรา เราคุมไม่ได้ ที่เราคุมได้คือเตรียมรับมือและอุด vulnerability (ช่องโหว่)
- Malware ผมแบ่ง 2 แบบคือแบ่งตามวิธีกระจายตัว (virus, worm, trojan) และแบ่งตามการกระทำต่อระบบ (spyware, adware, rootkits, botnets, backdoors, logic bombs, ransomware)
- Attack (การโจมตี) ผมแบ่งเป็น 5 ประเภท Network attacks 2. Wireless network attacks 3. Password attacks 4. Social Engineering attacks 5. Application attacks
- Network attack คือโจมตีระบบ network ที่ดังๆ และได้ยินบ่อย เช่น Denial of Service, Man in the Middle, DNS poisoning เป็นต้น
- Wireless attack คือ โจมตีระบบ wireless network เช่น Sniffing, Evil twins
- Password attack คือ การพยายามแกะ password
- Social engineering attack คือ ใช้วิธีการทางสังคมต่างๆ ในการหลอก
- Application attack คือ โจมตีโดยช่องโหว่ใน app เช่น SQL injection, Cross-site scripting
Information security
อยากนิยามคำว่า security ก่อนครับ security ประกอบด้วย 3 องค์ประกอบ
- Confidentiality – ข้อมูลเข้าถึงได้เฉพาะผู้ที่ได้รับอนุญาต สำหรับคนอื่นข้อมูลจะเป็นความลับ อันนี้น่าจะชัดเจนสุดในมุมคนทั่วไป ตัวอย่างเช่น จะดูข้อมูลได้ต้องใส่รหัสก่อน
- Integrity – ข้อมูลมีความถูกต้อง แก้ไขได้โดยผู้ที่ได้รับอนุญาตเท่านั้น เช่น เราเปิดดูรายงาน financial report ข้อมูลนั้นต้องถูกต้อง ไม่ใช่มีคนมาแอบแก้
- Availability – ข้อมูลสามารถเข้าถึงได้เมื่อต้องการ เช่น เราจะดูข้อมูลก็ดูได้ ไม่ใช่เว็บล่ม

ภัยคุกคาม – Threat
Threat คือปัจจัยภายนอกที่มีผลต่อ security ของเรา เราควบคุมไม่ได้ มันมีของมันอยู่แล้ว เช่น
- ภัยธรรมชาติ – น้ำท่วมศูนย์ข้อมูล, แผ่นดินไหว, ทอร์นาโด ฯลฯ
- มนุษย์ที่ไม่เกี่ยวกับไอที – ก่อการร้าย, สงคราม, ม็อบปิดศูนย์ข้อมูล ฯลฯ
- มนุษย์ที่เกี่ยวกับไอที – hacker, การโจมตีทาง cyber ฯลฯ
เราควบคุม threat ไม่ได้ (ไปสั่งทอร์นาโดอย่าเพิ่งพัดไม่ได้, สั่ง hacker อย่าเพิ่ง hack นะก็ไม่ได้) ที่เราควบคุมได้คือ vulnerability (ช่องโหว่) ในระบบของเรา เรารู้ว่ามี threat เหล่านั้นอยู่ ที่เราทำได้คืออุดช่องโหว่ไม่ให้ threat เหล่านั้นเข้ามาโจมตีเราสำเร็จ
ถ้ามี threat อยู่ในโลกภายนอก และระบบของเรามี vulnerability แปลว่าเรามี risk (ความเสี่ยง) อยู่ สรุปก็คือ Risk = Threat + Vulnerability
Malicious Software (malware)
Malware คือ software ที่สร้างขึ้นด้วยความประสงค์ร้ายต่อระบบ เป็นคำกว้างๆ ที่มี software ประเภทย่อยๆ อยู่ในนั้นอีกมาก และการแบ่งประเภท Malware ก็มีหลายแบบมากครับ สำหรับผมเองขอแบ่งเป็น 2 แบบ ตามคอร์สใน Lynda (อันนี้ไม่ใช่การแบ่งที่เป็นมาตรฐานนะครับ)

1. แบ่งตามวิธีการกระจายตัว (propagation)
Virus
malware ที่ฝังตัวอยู่ในโปรแกรม ทำงานเมื่อรันโปรแกรมนั้น การแพร่กระจายต้องอาศัย user action ก่อน (เช่น สั่งรันโปรแกรม) จึงจะ infected และกระจายต่อได้ (คนที่รับต่อก็ต้องรันก่อนเหมือนกัน)
Worm
malware ที่แพร่ไปเอง ทำงานเอง user ไม่ต้องทำอะไร เช่น ถ้าแพร่ผ่าน network ก็คือกระจายไปเองเลย ถ้าแพร่ผ่าน USB drive แค่เสียบ USB ก็แฝงเข้ามาใน USB drive เราได้เลย
Trojan
malware ที่แฝงอยู่ในเครื่องเพื่อรอดำเนินการบางอย่าง trojan มักไม่ได้มีวิธีการแพร่กระจายไปเครื่องอื่นโดยอาศัยเราหรือเครื่องเรา แต่อาจใช้วิธีเช่น แฝงมากับโปรแกรมอื่นที่ดูมีเจตนาดี เช่น โปรแกรมฟังเพลง เมื่อ user เปิดโปรแกรมนั้น ก็ติด trojan
ไม่ว่าจะเป็น virus, worm, trojan เมื่อติดในเครื่องแล้วสามารถทำอันตรายต่อเครื่องเราได้หลายแบบดังในข้อ 2. ที่จะกล่าวต่อไป หรืออาจเป็นอันตรายอื่นๆ เช่น สร้างความเสียหายต่อข้อมูล หรือต่อฮาร์ดแวร์ ก็ได้เช่นกัน
2. แบ่งตามการกระทำต่อระบบ (payload)
อันนี้ไม่จำเป็นนำครับว่า malware 1 ตัวจะต้องเข้ากลุ่มเดียว อาจเป็น malware เทพทำได้หลายอย่าง ก็ได้เช่นกันครับ
Spyware
จุดประสงค์เพื่อสอดแนมข้อมูลบางอย่างจากเรา เช่น ข้อมูลทางการเงิน, อีเมล, ลำดับการกด keyboard (keylogging)
Adware
คอยแสดงโฆษณา (ads) ด้วยวิธีต่างๆ เช่น เปลี่ยน default search engine ของ browser, pop-up ads, หรือไปเปลี่ยน ads ในเว็บต่างๆ เป็น ads ของตัวเอง
Rootkits
malware ที่จะยกระดับให้ผู้ใช้ malware สามารถมีสิทธิ์ต่างๆ เหมือน admin ของระบบ
ระยะหลังๆ rootkit เป็นวิธีการในการที่ malware อื่นจะใช้หลบซ่อนตัวเองโดยเข้าถึงสิทธิ์ admin แล้วไปเปลี่ยน function ของระบบให้ตรวจไม่พบ malware นั้น เป็นต้น
Botnets
Botnets คือเครือข่ายคอมพิวเตอร์ที่โดน malware ที่ฝังในเครื่องเพื่อใช้พลังการประมวลผลของเครื่องเป็นส่วนหนึ่งของเครือข่ายในกิจกรรมบางอย่าง เช่น เอาไว้โจมตีประเภท Distributed Denial of Service (DDoS), เอาไว้ขุด bitcoin, เอาไว้ส่ง spam, ทำ brute force attack ฯลฯ
ระบบที่ตกไปอยู่ใน botnets เรียกว่า zombie system
Backdoors
ช่องทางการเข้าสู่ระบบที่มีคนจงใจทิ้งเอาไว้ เพื่อให้เข้าถึงระบบได้โดยไม่ผ่านวิธีปกติ เช่น โปรแกรมเมอร์สร้างไว้เข้ามาแก้ bug, หรือ hacker ที่เข้าระบบได้แล้วเปิดไว้เข้าครั้งต่อๆ ไป
Logic bombs
malware ที่รอทำงานเมื่อถึงเงื่อนไขบางอย่าง เช่น ถึงวันที่กำหนด, โปรแกรมเมอร์ที่เขียนถูกไล่ออกจากบริษัท ฯลฯ
Ransomware
ช่วงนี้กำลังฮิตเลย คือ software เรียกค่าไถ่ จะล็อคเครื่องเราไว้ไม่ให้เราใช้งานได้จนกว่าจะจ่ายเงิน
ศัพท์อื่นที่เกี่ยวข้อง
Polymorphic malware
วิธีการทำงานของ anti-malware คือการตรวจจับ signature ของ malware ในไฟล์ต่างๆ polymorphic malware ก็คือ malware ที่เปลี่ยน signature ตัวเองได้เรื่อยๆ ทำให้ anti-malware ตรวจไม่เจอ
Armoured virus
คือ virus ที่มีกระบวนการป้องกันการ reverse engineer ทำให้บริษัท anti-malware ออกโปรแกรมแก้ได้ลำบากขึ้น
Security Attack ประเภทต่างๆ
อันนี้เป็นเรื่องที่ใหญ่และเยอะมากครับ และมีวิธีการแบ่งหลายแบบมาก อันนี้ผมก็แบ่งตามหลายๆ แหล่งผสมกัน (ย้ำอีกทีว่านี่ไม่ใช่การแบ่งที่เป็นมาตรฐานนะครับ)
1. Network Attacks
การโจมตีที่พุ่งเป้าไปที่ระบบเครือข่าย เวลาเรานึกถึง security attack เรามักถึงประเภทนี้ เป็นการโจมตีที่เห็นบ่อยๆ ในหน้ง

1.1 Denial of Service (DoS)
ปกติเวลาเราเข้าเว็บก็คือเราใช้ browser ส่ง request ไปที่ server เพื่อให้ server ตอบกลับมา DoS คือการที่ผู้โจมตีส่ง request จำนวนมากๆ ไปที่ server เพื่อให้ server ตอบกลับ จนไม่สามารถตอบกลับ request ของ user ปกติได้ (ที่ช่วงนึงชาวเน็ตรณรงค์ไปกด refresh ในเว็บหน่วยงานหนึ่ง อันนี้ก็คือการโจมตีประเภทนี้)
ปัญหาของการโจมตีแบบนี้คือแค่ server block IP address จำนวนหนึ่งก็ปิดกั้นได้แล้ว และต้องใช้ bandwidth จำนวนมากในการโจมตีถึงจะเอา server ดีๆ ลงได้
1.2 Distributed Denial of Service (DDoS)
เพื่อแก้ปัญหาของ DoS จึงเกิดเป็น DDoS ขึ้นมา หลักการทำงานคือใช้ zombie system ใน botnets ที่เตรียมไว้เป็นเครื่องมือโจมตี
วิธีที่นิยมคือ Smurf attack หรือการใช้เครื่องส่ง request ไปหา server ต่างๆ แต่ปลอมแปลง IP (spoofing) สำหรับตอบกลับให้เป็น IP ของเป้าหมาย เมื่อ server เหล่านั้นตอบกลับมา ก็จะไปตอบเครื่องเป้าหมาย เป้าหมายก็จะถูกโจมตีด้วย traffic จำนวนมาก

1.3 Spoofing
คือการปลอมแปลงข้อมูลของต้นทาง (source) ให้เหมือนมาจากที่อื่น เช่น IP spoofing (ปลอมแปลง IP), MAC spoofing (ปลอมแปลง MAC address), E-mail spoofing (ปลอมช่อง From: ใน email)
- หลายๆ wireless network จะอนุญาตให้เฉพาะเครื่องที่มี MAC address บางค่าเท่านั้นเข้าได้ (MAC filtering) → MAC spoofing จึงเป็นวิธีการผ่าน MAC filtering
1.4 Eavesdrop/ Sniffing
Hacker ดักจับข้อมูลที่ส่งผ่าน network แล้วนำข้อมูลนั้นไปวิเคราะห์หาข้อมูลที่ต้องการอีกที (โปรแกรมที่นิยมใช้ชื่อ Wireshark)
- Replay attack คือการใช้ data ที่ capture มาได้ไปเลียนแบบการเข้าสู่ระบบ เช่น capture password มาแล้วเอาไป log in
1.5 Man-in-the-Middle (MiTM)
ภาพด้านล่างคือ Web communication โดยปกติ

MiTM ก็คือมี Hacker เข้าไปอยู่ตรงกลางระหว่าง user 2 ฝั่ง ทั้ง 2 ฝั่งคิดว่าตนเองส่งข้อมูลหากัน แต่จริงๆ แล้วทุกอย่างผ่าน hacker ตรงกลางหมดเลย

1.6 DNS poisoning
ปกติแล้วเวลาเราพิมพ์ url ในเว็บไซต์ มีกระบวนการหลายอย่างเกิดขึ้นที่สุดท้ายแล้ว browser จะได้ IP address ของ server มา จากนั้นจึงเชื่อมต่อกับ IP address นั้น

DNS poisioning คือการทำให้ IP ที่ได้มามันเป็น IP ที่ hacker วางไว้ ดังนั้น เราจะเข้าคิดว่าเราเข้าเว็บไซต์ปกติ แต่จริงๆ ไม่ใช่เว็บไซต์ที่เราต้องการ (pharming) หรือใช้ทำอย่างอื่นที่ไม่ใช่แค่ browser เช่น ให้ app ส่ง traffic ที่มีข้อมูลสำคัญไปที่เครื่องกลางแทน (Man in the middle) เป็นต้น
DNS poisoning มักโจมตีที่ local DNS server (เช่น ของบริษัท) หรือ host file ที่มีในทุกเครื่อง (file ที่เก็บข้อมูลว่า url ไหน IP อะไร)
1.7 ARP poisoning
หลักการคล้ายๆ DNS poisoning แต่เป็นระดับ Local network โดย ARP เป็น protocol สำหรับเปลี่ยน MAC address เป็น IP address โดยทั่วไปทุกเครื่องใน network ก็จะต่อกับ router (default gateway IP)
ARP poisoning จะไปเปลี่ยนค่าตรงนี้ ทำให้เครื่องไปสื่อสารกับเครื่องของ hacker แทน
โดยสรุปคือ ทั้ง DNS poisoning และ ARP poisoning คือการโจมตีที่ทำให้ user ไปสื่อสารกับเครื่องของ hacker แทนเครื่องที่ควรจะเป็น
1.8 Privilege escalation
ก็คือการพยายามยกระดับสิทธิ์ของ hacker ให้กลายเป็นระดับ admin เพื่อควบคุมระบบ network หลักการเดียวกับ rootkits แต่อันนั้นเป็นประเภทของ malware อันนี้เป็นประเภทการโจมตี (คืออาจใช้ rootkits เป็น tool)
1.9 Port scanning attack
port คือสิ่งที่ระบุว่าสำหรับ IP นั้นๆ ให้ใช้โปรแกรมอะไรตอบ request เช่น เวลาเราเข้าเว็บ default port คือ 80 ดังนั้น request เต็มๆ มันคือ IP+ port:80 ส่งไป server ก็จะ response เป็นเว็บกลับไป แต่ถ้า IP เดียวกัน เราระบุ port 21 อันนี้ก็ต้องใช้ FTP
Port scanning คือ hacker พยายาม scan ดูว่าใน network มี port ไหนเปิดอยู่บ้าง เพื่อหาโอกาสเจาะใน port ที่เปิดอยู่ต่อไป
2. Wireless Attacks
เป็น subset ของ network attack แต่มุ่งโจมตี wireless network เพราะ wireless network สื่อสารผ่านทางอากาศ การโจมตีจึงมีลักษณะต่างไปจาก wired network ที่มีสายให้เห็นชัดเจน เลยแยกออกมา

2.1 Packet sniffing
ใช้ wireless card และ sniffer ดักจับข้อมูล ถ้าข้อมูลไม่ได้เข้ารหัสก็จะข้อมูลรั่วไหลได้
2.2 Propagation attacks
- Jamming and interference
ปล่อยสัญญาณรบกวนทำให้ user ไม่สามารถ connect กับ wireless network นั้นๆ ได้ (โจมตีที่ availability) - War Driving
ขับรถวนรอบเมืองเพื่อเก็บข้อมูล wireless network ในที่ต่างๆ และหา network ที่มีช่องโหว่ - War Chalking
เป็นส่วนขยายของ war driving คือถ้าใครเจอ wireless network ที่ connect ได้ ก็ให้ใช้ชอล์คทำสัญลักษณ์ไว้แถวนั้น (คนสอนใน Lynda บอกไม่เคยเห็นของจริงมาก่อน ไม่น่ามีใครทำแล้ว)
2.3 WPA attack
Wi-Fi Protected Access (WPA) สั้นๆ คือเป็น protocol ในการ encrypt ข้อมูลสำหรับสื่อสารใน wireless network ปัจจุบันค้นพบช่องโหว่ใน protocol นี้ แต่โดยรวมก็ยังถือว่าก็ปลอดภัยอยู่ แต่ถ้าเน้นความปลอดภัยมากแนะนำให้ไป WPA2
2.4 WPS attack
Wi-Fi Protected Setup (WPS) เป็นวิธี connect กับ wireless network โดยใส่ PIN ที่อยู่หลัง router ก็เข้าได้เลย มักใช้ใน home user สำหรับคนที่ต่อ wireless network ไม่เป็น

(ภาพจาก Wiki Media Commons โดย RoundupResistance, Link )
มีการค้นพบว่าสามารถ brute-force PIN ได้ WPS จึงไม่ปลอดภัยแล้ว
2.5 Bluetooth attack
พวกนี้เป็น concept ที่เก่าแล้วและทำไม่ได้ในอุปกรณ์ยุคปัจจุบัน
- Bluejacking: ส่งสัญญาณ Bluetooth ไปสั่งงานอีกเครื่อง
- Bluesnarfing: access อีกเครื่องผ่านสัญญาณ Bluetooth
2.6 Rogue access points
คือ Access point เถื่อน เช่น user ไปซื้อ router เอง มาต่อเข้ากับ wireless network ขององค์กรโดยไม่แจ้งให้ทราบ
ปัญหาคืออุปกรณ์เหล่านี้อาจไม่ได้มาตรฐานและไม่ได้ผ่านการตั้งค่า security ที่เหมาะสม จึงกลายเป็นช่องโหว่ให้ attacker โจมตี network ภายในขององค์กรได้
2.7 Evil Twins
Attacker ตั้ง access point ใหม่ขึ้นมาโดยจงใจให้ SSID เหมือนกับที่คนคุ้นเคย เช่น Airport_WiFI แล้วไปตั้งไว้สนามบิน พอมีคนหลง connect เข้าก็โดนดักเลย

อีกแบบคือตั้งชื่อ SSID ที่คนนิยมใช้ เช่น “home” “dlink” “linksys” อุปกรณ์ส่วนใหญ่ถูกตั้งให้ต่อกับ SSID ที่เราเคยต่อแล้วโดยอัตโนมัติ พอมาเจอพวกนี้ก็เลยต่อเองเลย โดนดักเลย
ดังนั้นคำแนะนำสำหรับ user ทั่วไปคือ
- ไม่ควรต่อกับ Wi-Fi ที่ไม่รู้จักหรือไม่แน่ใจ เช่น พวก Wi-Fi สนามบิน จริงๆ ร้านกาแฟ ร้านอาหารทั้งหลายก็ถือว่าไม่ปลอดภัย ถ้าจะต่อจริงๆ ก็ไม่ควรใช้รับส่งข้อมูลสำคัญ (ถึงแม้ข้อมูลเราจะ encrypt ก็ตาม)
- ควรตั้งชื่อ SSID ที่บ้านหรือที่ทำงานให้มัน unique นิด หากอยากจะเปิด auto-connect to Wi-Fi
3. Password Attacks

ก็คือการพยายามเจาะ password หลักๆ คือ
3.1 Dictionary attack
คือโปรแกรมที่มี list ของ common username และ common password จากนั้นเอารายการเหล่านั้นมาลองเข้าสู่ระบบ ข้อเสียคือ password สมัยนี้มักจะ complex เกินกว่าจะใช้วิธีนี้ได้
3.2 Brute-force attack
คือลองไล่ไปทีละตัวเลยจาก a-z, symbol, number เริ่มจากหลักน้อยๆ ไปจนหลายๆ หลัก ข้อเสียคือช้า
3.3 Hybrid attack
คือลอง mixed คำใน dictionary กับตัวอักษรอื่นๆ เช่น จาก house เป็น h@use
3.4 Birthday attack
Hash function สั้นๆ คือ function สำหรับการเปลี่ยนข้อมูลเป็นข้อมูลสั้นๆ ที่จะไม่ซ้ำกับข้อมูลอื่น และไม่สามารถแปลงกลับได้ ปกติระบบจะเก็บ password โดยผ่าน hash function ก่อน (admin ก็ไม่รู้ password user) เวลา user กรอก password ก็เอาไปเข้า hash แล้วเปรียบเทียบดูว่าเหมือนกันไหม
Birthday attack คือ สมมติเราได้ password ที่ผ่าน hash มาแล้วเราอยากหาค่า password นั้น → ถ้าเราลองเอา password จำนวนมากๆ ไปเข้า hash → เราจะได้ ข้อมูลหลัง hash 2 ชุดที่มีค่าเหมือนกัน → password นั้นคือ password ที่ถูกต้องนั่นเอง
(ชื่อมาจากถ้ามีคนจำนวนเยอะพออยู่ในห้อง โอกาสที่จะมีคนเกิดวันเดียวกันจะสูง)
3.5 Rainbow table
อันนี้ผมไม่ค่อยทราบรายละเอียดเหมือนกันครับ รู้แต่เป็นวิธีในการเพิ่มประสิทธิภาพของ brute-force attack
4. Social Engineering Attacks (วิศวกรรมสังคม)

เป็นวิธีการโจมตีโดยใช้วิธีการทางสังคมต่างๆ หลอกให้ user ทำสิ่งที่เสี่ยงต่อความปลอดภัยของตนเอง แบ่งเป็นประเภทย่อยๆ ได้คือ
4.1 Impersonation
Hacker ปลอมตัวเป็นบุคคลอื่น ที่พบบ่อยคือ
- ปลอมเป็น admin: โทรหา user เพื่อให้ user กระทำการบางอย่าง เช่น บอกว่า account ของคุณมีปัญหา ส่ง username, password มาให้หน่อยเดี๋ยวจะแก้ให้, ที่พบบ่อยในเมืองไทยก็คือบอกว่าโทรมาจากธนาคาร ให้โอนเงินไปให้ เดี๋ยวจะดำเนินการบางอย่างให้
- ปลอมเป็น user: โทรหา admin บอกว่าลืม password พวกนี้มักจะแกล้งอารมณ์ หงุดหงิดที่เข้าระบบไม่ได้
- ปลอมเป็นผู้จัดการ: โทรหา user ที่เป็นลูกน้องเพื่อให้ดำเนินการบางอย่างให้
4.2 Phishing
ส่ง email ไปหา user โดยเลียนแบบให้เหมือนเป็น email จากธุรกิจ เช่น เลียนแบบ email จากธนาคาร บอกว่า account ของคุณไม่ปลอดภัย กรุณากด link นี้เพื่อทำการเปลี่ยน password → โดยเราต้องกรอก username และ password เดิมก่อน → พอเราคลิกเราก็จะไปถึงเว็บที่หน้าตาเหมือนเว็บธนาคารเด๊ะ → ถ้าเรากรอกข้อมูลของเราก็จะถูกเก็บไป
ภาพตัวอย่าง Phishing ในไทยได้จากเว็บธนาคารกสิกรไทย

ประเภทย่อยของ Phishing
- Spear Phishing เป็น phishing ที่เน้นเป้าหมายไปที่ตัวบุคคล มักปลอมเป็นคนที่เรารู้จัก เช่น ปลอมเป็นเพื่อนเรา หรือหัวหน้าเรา ส่งลิงค์มาให้คลิก หรือมาขอความช่วยเหลือ
- Whaling คือ spear phishing ที่มุ่งเป้าที่ผู้บริหารระดับสูงขององค์กร
- Vishing (Voice Phishing) คือ Phishing โดยใช้เสียง เช่น ผ่านระบบโทรศัพท์ (บอกว่าโทรมาจากธนาคาร)
4.3 Pharming
คือการสร้างเว็บไซต์ปลอมที่หน้าตาเหมือนเว็บเป้าหมาย (เช่น เว็บธนาคาร) แล้วใช้วิธีการบางอย่างในการ redirect user มาที่หน้านี้โดยไม่รู้ตัว Phishing ด้านบนก็เป็นวิธีหนึ่ง แต่ยังมีวิธีอื่นๆ อีกมาก
4.4 Typosquatting (URL Hijacking)
คือสร้างเว็บที่หน้าเหมือนกับเว็บเป้าหมาย แต่งหน้าตาให้เหมือนกัน แล้วรอ user พิมพ์ผิดแล้วกรอกข้อมูลโดยไม่รู้ตัว เช่น พิมพ์ scbeasy.com เป็น scveasy.com → ถ้าหลง log in นึกว่าเป็นเว็บธนาคารก็เสร็จเลย
4.5 Hoaxes
ข่าวลวง เช่น บอก user ว่าไฟล์บางไฟล์มีอันตรายมาก ให้รีบลบ แต่พอลบจริงก็เกิดเป็นช่องโหว่ขึ้นมา
4.6 Watering hole attack
Watering hole คือ แหล่งน้ำที่สัตว์มารุมกันในหน้าร้อนเพื่อกินน้ำ อันนี้ก็คือ hacker สร้างเว็บไซต์ที่ทุกคนอยากเข้า (เช่น เว็บโป๊) แล้วปล่อย malware ในนั้น
4.7 Spam/spIM
Spam อันนี้น่าจะรู้จักกันดีอยู่แล้วครับ ส่วน spIM คือ spam with instant messaging (เช่น line) น่าจะเคยเจอกันบ่อย
4.8 Physical Social Engineering
ไม่ได้ใช้เทคโนโลยีอะไร ใช้สิ่งที่จับต้องได้
- Shoulder Surfing
แอบมองจอของเป้าหมาย เช่น นั่งข้างๆ กันบนรถไฟฟ้าแล้วแอบมองจอล้วงข้อมูล - Dumpster Diving
คุ้ยขยะของเป้าหมาย เผื่อเจอข้อมูลสำคัญ หรือ password ที่โยนทิ้งขยะไว้ - Tailgating
แอบเดินตามคนที่มี keycard เพื่อเข้าสู่บริเวณของอาคารที่ไม่ควรจะเข้าถึง ป้องกันได้โดยการอบรมพนักงานถ้าเจอใครแอบตามผ่านประตูโดยไม่ใช้บัตรให้ขอให้เขาออกไปแล้วเข้ามาใหม่
5. Application Attacks
ก็คือการออกแบบโปรแกรมที่รันในระบบมีช่องโหว่ ทำให้ใช้ช่องโหว่นั้นโจมตีได้

5.1 SQL injection
SQL เป็นภาษาที่ใช้จัดการ database และ software จำนวนไม่น้อยรันด้วย SQL ประเภทใดประเภทหนึ่ง SQL injection ก็คือการใส่คำสั่ง SQL ลงไปในฟอร์มเพื่อหวังผลให้เกิดความเสียหายต่อ database ของเรา ถ้าโปรแกรมไม่ได้เตรียมป้องกันเรื่องนี้ (เช่น form validation) ก็จะมีปัญหาได้
Injection อื่นๆ ก็ concept เดียวกัน
- XML injection
- LDAP injection
- Arbitrary code execution/ remote code execution
5.2 Cross-site scripting (XSS)
Hacker ป้อน script บางอย่างเข้าไปเพื่อหวังผลให้ server ส่ง script นั้นไปรันบนเครื่องอื่น (จริงๆ อันนี้ก็ถือเป็น injection แนว SQL injection ด้านบน) ตัวอย่างเช่น ใส่ JavaScript code เข้าไปใน form หน้า profile ของเว็บ พอ user คนอื่นเข้ามาดูหน้า profile ของ hacker คนนั้น script ก็ทำงาน เช่น ให้ส่ง cookies ไปให้ เพื่อใช้ session hijacking (หัวข้อถัดๆ ไป) ต่อไป ป้องกันได้ด้วย form validation เช่นกัน

5.3 Buffer overflow
ป้อนค่าที่เกิน buffer ของโปรแกรมจะรับได้ บางครั้งจะทำให้เกิด unexpected behavior โปรแกรมทำงานผิดไปจากที่คาดไว้ หรืออาจให้สิทธิ์บางอย่างแก่ user ที่ไม่ควรให้
เช่น มีช่องให้ใส่เลขก็ใส่เลขไป 4,000 หลัก เป็นต้น ป้องกันได้ด้วย form validation เช่นกัน
5.4 Directory traversal
Hacker เข้าถึงไฟล์ต่างๆ ผ่าน directory structure โดยไม่ได้รับอนุญาต เช่น จาก root/../../../image.jpg ก็เข้า directory ระดับบนไปเรื่อยๆ สมมติอาจไปเข้าได้ที่ root/../ แล้วได้ไฟล์บางอย่างที่ไม่ควรได้ไป เป็นต้น ป้องกันได้โดยตั้ง permission ให้ดี

5.5 Session hijacking
Cookies คือสิ่งที่เว็บไซต์สร้างไว้ใน browser ใช้เก็บข้อมูลผู้ใช้เพื่อเอาไว้ใช้ในการเข้าเว็บไซต์ครั้งต่อๆ ไป ตัวอย่างเช่น การ log in โดยไม่ต้องกรอกใหม่
อันนี้ถ้าออกแบบไม่ดีก็จะเป็นอันตรายได้ เช่น user ชื่อ Jack หาวิธีแปลง cookies ให้เหมือน user ชื่อ Jane พอ Jack เข้าเว็บไซต์ก็จะ log in ด้วย account ของ Jane ได้
5.6 Malicious add-on
อันนี้ตรงตัวครับ ก็พวก add-on ของโปรแกรมต่างๆ เช่น Chrome extension บางครั้งก็มี malware ปนมา
หรือบางครั้งเราลง add-on ที่น่าเชื่อถือ มีรีวิวที่ดี ปรากฏว่าบริษัทนั้นโดนซื้อไปแล้ว แล้วแอบเปลี่ยน code เป็น malware ให้คนโหลด

จบแล้วครับ ยาวมาก หวังว่าจะพอมีประโยชน์นะครับ แต่ต้องบอกว่าทั้งหมดนี้ไม่ถึง 20% ของวิชา security 101 คือทั้งหมดนี้มันจบในวันเดียวน่ะครับ เพราะงั้นอย่างที่บอกว่าเรื่อง security มันเป็นเรื่องที่กว้างมากๆ และใช้เวลาเป็นปีๆ กว่าจะ master ได้ เนื่องจากผมก็ไม่ใช่ผู้เชี่ยวชาญ บทความข้างบนนี้หากมีข้อผิดพลาดอย่างไรรบกวนชี้แนะด้วยนะครับ
ไว้มีโอกาสหน้ามาแชร์เพิ่มเติมครับ ^.^
สนใจหาข้อมูลเพิ่มเติม
เนื่องจากผมก็ไม่ใช่คนในวงการ security เลยไม่แน่ใจว่าปกติเขาหาอ่านกันที่ไหนเหมือนกันครับ แต่ผมว่านิยามของ threat ส่วนใหญ่ search google ก็เจอเลยนะ
หรือ
- The Open Web Application Security Project
- ThaiCERT จะมี section เอกสารเผยแพร่อยู่ครับ แต่ดูไม่ค่อยได้อัพเดท
- WiserLIB blog ภาษาไทย ของใครไม่รู้ แต่ละเอียดดีครับ
Facebook Page
ใครมีแหล่งไหนเด็ดๆ แนะนำได้นะครับ 🙂
References
- CompTIA Security+ Exam Prep (SY0-401): Threats and Vulnerabilities. https://www.lynda.com/Security-tutorials/CompTIA-Security-Exam-Prep-SY0-401-Threats-Vulnerabilities/415404-2.html
- Glen E. Clarke. “CompTIA Security+ Certification Bundle (Exam SY0-401).”
สุดยอดมากครับ อ่านแล้วเข้าใจง่าย เป็นความยู้มาก อยากให้ทำแบบนี้ต่อไปเื่อยๆครับ เป็นกำลังใจสู้ๆครับ
ขอบคุณครับ ติดตามผลงานคุณรัฐอยู่เสมอนะครับ
ขอบคุณ ครับ ได้ความรู้มากครับ อยากให้มีเนื้อหา ดีๆ มาเรื่อยๆ ครับ
ขอบคุณมากค่ะ สรุปได้เข้าใจง่ายมากเลย