ThaiCERT: Thai Computer Emergency Response Team
ศูนย์ประสานงานการรักษาความปลอดภัยคอมพิวเตอร์ ประเทศไทย 
 
 
 

ชื่อเรื่อง : Basic Intrusion Detection FAQ
เรียบเรียงโดย :
ร.อ. วิวัต เรืองมี
เรียบเรียงเมื่อ :
17 สิงหาคม 2544

Q: อะไรคือ การตรวจจับการบุกรุก (Intrusion Detection)

A: การตรวจจับการบุกรุกถือว่าเป็นศิลปะในการตรวจจับกิจกรรมที่ไม่เหมาะสม, ไม่ถูกต้องหรือไม่ปกติ ซึ่งระบบการตรวจจับการบุกรุก (Intrusion Detection Systems IDS) ซึ่งทำงานอยู่บนโฮสต์ เพื่อทำการตรวจจับเหตุการณ์หรือกิจกรรมต่างๆที่แอบแฝงบนโฮสต์ เราเรียกว่า host-based IDS และระบบการตรวจจับซึ่งทำงานบนระบบเครือข่ายเมื่อทำหน้าที่ในการตรวจสอบข้อมูลซึ่งไหลเวียนในเครือข่าย เราเรียกว่า network-based IDS
บางครั้งเกิดการเข้าใจผิดพลาดเกี่ยวกับการตรวจจับการใช้ที่ผิด(misuse detection) กับการตรวจจับการบุกรุก แต่โดยปกติแล้วการบุกรุกจะใช้อธิบายการโจมตีจากภายนอก ในขณะที่ "การใช้ที่ผิด" นั้นใช้อธิบายการโจมตีที่กำเนิดจากภายในเครือข่ายเอง

 

Q: Host-base Intrusion Detection คืออะไร

A: Host-based IDS ทำการตรวจจับข้อมูลที่ไหลเข้าและออกคอมพิวเตอร์แต่ละเครื่องนอกจากนั้นระบบก็ยังตรวจสอบความสมบูรณ์ของ system files และเฝ้าดู processes ที่น่าสงสัย Host-base IDS มี 2 ประเภทใหญ่คือ

  • host wrappers / personal firewall

  • agent-based software
  • ซึ่งทั้งสองชนิดจะมีประสิทธิภาพในการตรวจจับการบุกรุกจากภายในได้ดีกว่า network-based IDS แต่ประสิทธิภาพการตรวจจับการโจมตีจากภายนอกนั้นจะทำได้ดีพอๆ กัน

    Host Wrappers หรือ personal firewall
    เราสามารถที่จะทำการปรับแต่งให้ IDS ชนิดนี้ทำการตรวจสอบทุกๆ packets บนเครือข่าย การพยายามที่จะเชื่อมต่อเข้ามา หรือการที่จะพยายาม login เข้ามาซึ่งรวมถึงการเชื่อมต่อแบบ dial-in

    Host wrappers ที่รู้จักกันดีคือ TCP Wrapper (http://www.cs.purdue.edu/pub/tools/unix)

    Agent-based Software
    สามารถที่จะเฝ้าตรวจการ access และการเปลี่ยนแปลงของ system files รวมทั้งการเปลี่ยนแปลง privilege ของผู้ใช้ ID ประเภทนี้ที่รู้จักกันดีคือ Tripwire (http://www.tripwire.security.org)

     

    Q: Network based ID คืออะไร

    A: ระบบการตรวจจับการบุกรุกแบบ network-based นั้นจะทำการเฝ้าดูข้อมูลบนเครือข่ายโดยที่ระบบดังกล่าวจะทำการรับข้อมูลทั้งหมดที่อยู่บนส่วนของเครือข่ายที่รับผิดชอบ นอกเหนือจากส่วนของเครือข่ายที่รับผิดชอบ และชนิดของการสื่อสารอื่นๆ แล้วระบบดังกล่าวก็ไม่สามารถทำการตรวจจับ packet ต่างๆ จะถูกตรวจจับโดย sensor ของระบบ IDS ซึ่ง sensor จะมองเห็นเฉพาะ packet ที่ผ่านส่วนของเครือข่ายที่ sensor นั้นติดอยู่ packet ต่างๆ จะเป็นที่สนใจของ sensor ก็ต่อเมื่อ packet นั้นเข้ากับ signature ที่กำหนดซึ่งปกติแล้ว signature จะมี 3 ประเภทคือ

  • string signatures

  • port signatures

  • header condition signatures
  • String signature
    จะมองหา text string ซึ่งอาจบ่งบอกถึงการโจมตี ตัวอย่างเช่น " cat " + + " 7% rhost " อาจทำให้ระบบ UNIX เกิดช่องโหว่ต่อการโจมตีบนเครือข่าย

    Port signatures
    จะเฝ้าดูการพยายามติดต่อเข้ามาทาง port ที่รู้จักกันดี และมักจะถูกโจมตี เช่น telnet จะใช้ TCP port 23, FTP จะใช้ TCP port 21/20 SUNRPC ใช้ TCP/UDP port 111 และ IMAP จะใช้ TCP port 143 ซึ่งถ้า ระบบของเราไม่ได้เปิด port ดังกล่าว แต่มีการพยายามเชื่อมต่อเข้ามา แสดงว่า packets ดังกล่าว อาจจะมีประสงค์ร้ายก็ได้

    Header signatures
    พยายามมองหา combination ที่อันตรายและผิดกฎของ packet header ตัวอย่างที่เห็นได้ชัดของ header signature คือ TCP packet ซึ่งมีทั้ง SYN และ FIN Flags

     

    Q: เคยได้ยินว่าวิธีที่ดีที่สุดในการจัดการเรื่องความปลอดภัยของระบบคอมพิวเตอร์ คือ การแบ่งการป้องกันออกเป็น layer กรุณาอธิบายวิธีการนี้ และอยากทราบว่า IDS อยู่ในส่วนไหน?

    A: ระบบการรักษาความปลอดภัยให้กับคอมพิวเตอร์จะมีประสิทธิภาพมากที่สุด เมื่อองค์กรนั้นๆ นำระดับของการรักษาความปลอดภัยหลายๆ ชิ้นมาใช้ มักจะมีการเข้าใจผิดว่าแค่ firewall ก็เพียงพอแล้ว ท่านควรมี security model อื่นเพื่อเพิ่มประสิทธิภาพในการรักษาความปลอดภัยให้แก่คอมพิวเตอร์ขององค์กรอันได้แก่

    1. นโยบายทางด้านความปลอดภัย
    2. การรักษาความปลอดภัยของ host system
    3. การตรวจสอบระบบ
    4. การรักษาความปลอดภัยให้แก่ router
    5. การใช้ firewall
    6. ระบบการป้องกันการบุกรุก
    7. แบบแผนการตอบสนองต่อเหตุการณ์ต่างๆ

    แต่ละ layer จะมีประสิทธิภาพภายในการป้องกันการบุกรุกในระดับหนึ่ง หากผู้บุกรุกสามารถผ่าน layer มาได้หนึ่ง นั่นไม่ได้หมายความว่า ระบบของท่านจะถูก compromise เลย แต่ละ layer จะมีความเกี่ยวข้องกันอยู่ ถึงแม้ว่าท่านอาจจะทำการแยก implement ในแต่ละชั้น แต่จะมีประสิทธิภาพสูงสุดเมื่อทั้งหมดถูก implement ด้วยกัน จะเห็นได้ว่า IDS เป็นแค่ส่วนประกอบหนึ่งของ security model ที่มีประสิทธิภาพ

     

    Q: Knowledge-based IDS คืออะไร

    A: กระบวนการตรวจจับการบุกรุกนั้นสามารถทำได้ 2 วิธีคือ knowledge-based และ behavior-based
    Knowledge-based IDS จะอาศัยข้อมูลที่เกี่ยวกับการโจมตีชนิดต่างๆ พร้อมทั้งช่องโหว่ของระบบ ในการตรวจจับการให้ใช้ช่องโหว่ต่างๆ เมื่อความพยายามในการเข้าใช้นั้นถูกจับได้ IDS ก็จะทำการแจ้งเตือน เพราะฉะนั้นจะเห็นได้ว่า ความสมบูรณ์ และประสิทธิภาพของ IDS ชนิดนี้จะขึ้นอยู่กับความทันสมัยของข้อมูลเกี่ยวกับการโจมตีต่างๆ

    ข้อดีของวิธีการแบบนี้คือ อัตราการเกิดการแจ้งเตือนผิดๆ นั้นจะต่ำ และข้อมูลที่ได้จาก IDS นั้นจะมีรายละเอียดที่ดีทำให้ง่ายต่อผู้ใช้ในการป้องกันและแก้ไขการโจมตี
    ข้อเสียของวิธีนี้คือ ความยากในการรวบรวมข้อมูลเกี่ยวกับรูปแบบการโจมตี และการปรับปรุงข้อมูลเกี่ยวกับช่องโหว่ต่างๆ ให้ทันสมัยอยู่เสมอ เนื่องจากข้อมูลต่างๆ นั้นขึ้นอยู่กับระบบปฏิบัติการ, เวอร์ชั่น, platform และ application นอกจากชั้นการตรวจจับการโจมตีจากภายในนั้นทำได้ยากเนื่องจาก การโจมตีจากภายในเกี่ยวกับการละเมิดสิทธิของ user ซึ่งไม่ได้เกี่ยวข้องกับช่องโหว่แต่อย่างใด


    Q: Behavior-based IDS คืออะไร

    A: แนวความคิดของการตรวจจับการบุกรุกแบบนี้คือ จะมีการแจ้งเตือนเมื่อระบบมีการตรวจพบความเบี่ยงเบนและความผิดปกติของระบบหรือของผู้ใช้จากการใช้ระบบปกติ ซึ่งรูปแบบของพฤติกรรมที่เป็นปกตินั้น จะถูกรวบรวมจากข้อมูลอ้างอิงต่างๆ หลังจากนั้น IDS จะทำการเปรียบเทียบระหว่างพฤติกรรมในขณะนั้นกับรูปแบบอ้างอิง ดังนั้นจะเห็นได้ว่า false alarm จะเกิดขึ้นได้บ่อยครั้ง

    ข้อดีของการตรวจจับโดยใช้เทคนิคลักษณะนี้ คือสามารถที่จะตรวจจับแบบการบุกรุกแบบใหม่ๆ ที่ไม่เคยมีมาก่อน และความเกี่ยวโยงกับระบบปฏิบัติการค่อนข้างต่ำ รวมทั้งยังสามารถที่จะตรวจจับการบุกรุกที่ไม่ได้โจมตีช่องโหว่ เช่นการโจมตีจากภายใน
    ข้อเสียที่สำคัญที่สุดคือ false alarm จะค่อนข้างสูง ในช่วงของการศึกษาพฤติกรรมของระบบ และเนื่องจากพฤติกรรมจะเปลี่ยนแปลงอยู่ตลอดเวลา เพราะฉะนั้น IDS ก็ต้องใช้เวลาในการศึกษา และเป็นเหตุให้ IDS ขัดข้องหรืออาจทำให้เกิด false alarm มากขึ้น

     

    Q: Network Instrusion Detection System (NIDS) คือ อะไร

    A: การบุกรุก (Intrusion) คือความพยายามที่จะเจาะเข้าสู่ระบบหรือการใช้ระบบในทางที่ผิด (misuse) ซึ่งความหมายของคำว่า "misuse" จะกว้างและสามารถสะท้อนถึงความร้ายแรงตั้งแต่ขั้นร้ายแรงจนถึงถึงขั้นชั้นต่ำ
    ระบบการตรวจจับการบุกรุก (Intrusion detection system - IDS) คือ ระบบที่ทำการตรวจจับการบุกรุกดังกล่าวข้างต้น ซึ่ง IDS จะแบ่งออกเป็น 3 ประเภท คือ

     

    Q: ใครคือผู้บุกรุกระบบ?

    A: มีคำ 2 คำที่ใช้แทนผู้บุกรุกคือ "hacker" และ "cracker" ซึ่ง hacker คือบุคคลที่ชอบเจาะเข้าสู่สิ่งต่างๆ hacker ที่ดีคือ บุคคลที่พยายามที่จะเข้าสู่ระบบคอมพิวเตอร์ของตัวเองและพยายามที่จะเข้าใจการทำงานของมัน แต่ hacker ที่เป็นผู้ร้าย คือบุคคลที่พยายามเจาะเข้าสู่ระบบของผู้อื่น ซึ่ง hacker ฝ่ายดีพยายามที่จะให้สื่อต่างๆ ใช้คำว่า cracker แทนแต่ยังไงก็แล้ว สำหรับบุคคลที่ต่างๆ พยายามจะเจาะเข้าสู่ระบบของเรา เราจะเรียกว่า ผู้บุกรุก "intruder" ซึ่งผู้บุกรุกจะถูกแบ่งเป็น 2 ประเภทคือ

    1. Outsides--จากภายนอก
    หมายถึง ผู้บุกรุกจากภายนอกเครือข่ายของท่าน และบุคคลที่อาจจะโจมตีมาจากภายนอกเช่น การเปลี่ยนแปลงหน้ากากของ web server ของท่านหรือการ forward mail ผ่านทาง e-mail server ซึ่งการบุกรุกจากภายนอกอาจมาจาก Internet, การ dial-up, การบุกเข้าไป หรือเครือข่ายของคู่ค้าที่เชื่อมต่อมายังเครือข่ายของท่าน
    2.Insider--จากภายใน
    คือ ผู้บุกรุกที่มีสิทธิ์ในการใช้เครือข่ายภายใน รวมทั้งผู้ใช้ที่ใช้สิทธิ์ในทางที่ผิด หรือการลักลอบใช้สิทธิ์ของผู้ใช้คนอื่นๆ ที่มีสิทธิ์เหนือกว่า

     

    Q: ผู้บุกรุกเจาะเข้าสู่ระบบได้อย่างไร?

    A: มี 3 ทางหลักๆ ที่ผู้บุกรุกจะเจาะเข้าสู่ระบบ คือ

    1. Physical Intrusion ถ้าหากว่าผู้บุกรุกมีการเชื่อมต่อทางกายภาพกับเครื่องหรือ ระบบเครือข่าย การเจาะเข้าสู่ระบบจะเกิดขึ้นได้
    2. System Intrusion การบุกรุกในลักษณะนี้สมมติว่าผู้บุกรุกมี account เรียบร้อยแล้วแต่มีสิทธิ์ต่ำ ถ้าไม่ได้มีการ update patch ให้กับระบบผู้บุกรุกจะใช้ช่องโหว่ของระบบในการครอบครองสิทธิ์ของ administrator
    3. Remote Intrusion ผู้บุกรุกพยายามที่จะเจาะเข้าสู่ระบบข้ามเครือข่าย ซึ่งผู้บุกรุกจะไม่มีสิทธิ์ใดๆ เลยบนเครือข่ายนั้น

     

    Q: ทำไมผู้บุกรุกจึงสามารถเจาะเข้าสู่ระบบได้?

    A:
    Software bugs
    จะปรากฎอยู่ใน server daemons, โปรแกรมต่างๆ ของ client ระบบปฏิบัติการ ซึ่งสามารถแบ่ง Software bugs ออกเป็นประเภทต่างๆได้ดังนี้

    1. Buffer Overflows ช่องโหว่ของความปลอดภัยคอมพิวเตอร์จะเกิดจากปัญหานี้ ตัวอย่างของ Software bugs เช่น โปรแกรมเมอร์ได้ทำการตั้งค่าจำนวน characters ที่จะรับ login username เป็น 256 เนื่องจากเขาคิดว่าคงจะไม่มีใครที่จะใช้ username ที่ยาวกว่า 256 characters ตัวอย่างเช่น 300 characters จะเกิดอะไรขึ้นกับอีก 50 charcaters ที่เหลือ ซึ่งอาจประกอบด้วย code ที่จะถูก execute โดย server และทำให้ hacker เจาะเข้าสู่ระบบได้ hacker จะทำการค้น bugs เหล่านี้โดยวิธีต่างๆ เช่น

    2.Unexpectes Combinations โดยทั่วๆ ไป program จะประกอบ code หลายๆ layer ซึ่ง layer ที่อยู่ต่ำที่สุดคือ ระบบปฏิบัติการ ซึ่งเมื่อผู้บุกรุกส่ง input เข้าสู่โปรแกรม input นั้นอาจจะไม่มีความหมายอะไรเลยสำหรับ layer หนึ่ง แต่อาจจะทำให้เกิดผลกับอีก layer หนึ่ง จะเห็นได้ว่าโดยส่วนใหญ่ ภาษา PERL คือภาษาที่จะทำการ process user input บน web ซึ่งปกติแล้ว PERL จะส่ง Input ไปให้อีกโปรแกรมหนึ่ง
    3.Input ที่ไม่ถูกการประมวลผล โดยส่วนใหญ่ programmer จะเขียนโปรแกรม ที่จะจัดการกับ valid input แต่จะไม่พิจารณากรณีที่ input ไม่ได้ตรงตาม specification
    4.Race Conditions เนื่องจากปัจจุบันระบบส่วนใหญ่จะเป็น " Multitasking หรือ Multithreaded" หมายถึงว่า program หลายๆ program สามารถถูก execute พร้อมๆ กันได้ ซึ่งจะเป็นอันตรายอย่างเช่น ถ้า program นั้นๆ ใช้ data เดียวกัน ตัวอย่างเช่น programs A และ B จำเป็นที่จะต้องแก้ไข file เดียวกัน ในการที่จะแก้ไข file นี้ โปรแกรมจะต้องอ่าน ไฟล์ ไปเก็บไว้ใน memory แล้วทำการแก้ไข เนื้อความใน memeory แล้วคัดลอก memory กลับเข้าสู่ไฟล์ race conditions จะเกิดขึ้นเมื่อ program A อ่านไฟล์เข้าสู่ memory แล้วทำการแก้ไข แต่ก่อนที่ A จะเขียนกลับลงสู่ไฟล์ program B ได้ทำการอ่าน / แก้ไข / เขียน ลงสู่ไฟล์เรียนร้อยแล้ว หลังจากนั้น A ทำการ write กลับไปในไฟล์ จะเห็นได้ว่าการแก้ไขโปรแกรมทั้งหมดของ program B จะหายไป แต่ยังไงก็แล้วแต่ race conditions ค่อนข้างจะเกิดขึ้นได้ยาก ผู้บุกรุกต้องทำการทดลองเป็นพันๆ ครั้ง จึงจะสามารถเจาะเข้าสู่ระบบได้

    System Configuration

    bugs ที่เกิดจาก System Configuration สามารถจำแนกได้ดังต่อไปนี้
    1. Default Configurations ระบบส่วนใหญ่จะถูกจัดส่งจากผู้ขายด้วย default configuration ซึ่งง่ายในการใช้ แต่นั้นก็หมายถึงง่ายในการเจาะด้วย
    2.ความเกียจคร้านของ administrators มีระบบอยู่ไม่น้อยทีเดียวที่ถูก configured ให้ไม่ต้องใส่ root password เนื่องจาก administor เกียจคร้านที่จะ config แต่อยากให้เครื่องทำงานได้เร็วที่สุด เนื่องจากว่าการแก้ไข password ทีหลังทำได้ไม่ง่ายเลย ซึ่งจุดนี้อาจทำให้ผู้บุกรุกเจาะเข้าสู่ระบบได้
    3.Hole Creation บางครั้ง administrator จะเปิดช่องโหว่บนเครื่องไว้ ซึ่งคู่มือการดูแลระบบส่วนใหญ่จะแนะนำให้ทำการปิดทุกอย่างที่ไม่จำเป็นเพื่อป้องกันการเกิดช่องโหว่ขึ้นมาโดยไม่ตั้งใจ

    Password Cracking

    1.การเลือกใช้ password ที่ค่อนข้าง weak คนส่วนใหญ่จะเลือกใช้ password ที่เป็นชื่อของตนเอง, ชื่อลูก, ชื่อสามี/ภรรยา, สัตว์เลี้ยง, รุ่นของรถ หรือบางคนอาจใช้เป็น password หรืออาจไม่ใส่เลย จะเห็นว่าผู้บุกรุกทำการเดาสุ่ม password เหล่านี้ได้ง่าย
    2.Dictionary Attacks ขั้นตอนต่อไปนี้ ผู้บุกรุกอาจจะใช้ program ที่จะทำการ crack password โดยที่ program ดังกล่าวจะเลือกคำที่เป็นไปได้ในดิกชั่นนารี dictionary attacks แล้วเปรียบเทียบกับคำใน dictionary ที่ถูกเข้ารหัส
    3.Brute force attacks จะคล้ายกับ dictionary attacks ผู้บุกรุกจะพยายามนำ character ต่างๆ มาผสมกันเป็น password อย่างเช่น password ที่มีอักษร 4 ตัว และเป็น lower case เพียงอย่างเดียว อาจจะถูก cracked ภายในเวลาแค่ไม่กี่นาที หรือถ้าเป็น password ความยาว 7 ตัวอักษร ทั้งที่เป็น upper case และ lower case อาจต้องใช้เวลาหลายเดือนในการ crack

    Sniffing Unsecured traffic
    สามารถทำได้หลายวิธีด้วยกัน

    1. medium ที่ใช้ร่วมกัน ตัวอย่างเช่น ถ้าเป็น Eternet รุ่นเก่าๆ เพียงแค่นำ sniffer ไปติดตั้งบน wire ก็สามารถมองเห็น traffic ทั้งหมดได้ แต่จะยากขึ้นสำหรับ Switched Ethernet
    2.Server Sniffing การติดตั้ง Sniffer program บน server นั้นอาจได้ข้อมูลที่จะนำไปใช้ในการเจาะเข้าสู่ client machine ได้

     

    ข้อบกพร่องของการออกแบบ
    ถึงแม้ว่าการใช้ Software จะถูกต้องตาม design แต่อาจจะมี bugs ในตัว designs ที่จะนำไปสู่การเจาะระบบได้ เช่น

    1.TCP/IP protocol เนื่องจาก TCP/IP ได้ถูกออกมาก่อนที่วิวัฒนาการทางด้าน hacking จะเหมือนในปัจจุบัน เพราะฉะนั้นเป็นไปได้ที่อาจจะมีข้อผิดพลาดทางด้านการออกแบบที่จะนำไปสู่ปัญหาทางด้านความปลอดภัยได้ ตัวอย่างเข่น Smurt attack, IP spoofing หรือ SYN floods ได้มีการพัฒนา IPSec เพื่อที่จะแก้ปัญหาต่างๆ เหล่านี้ แต่ยังไม่มีการใช้อย่างแพร่หลาย
    2.Unix มี flaws ในระบบปฏิการ UNIX ซึ่งอาจทำให้ระบบถูกเจาะได้ซึ่งปัญหาที่สำคัญที่สุดคือ access control system



    Home || เอกสารเผยแพร่ || IDS

    ThaiCERT Disclaimer | Copyright © 2001 ThaiCERT(NECTEC). All rights reserved.