วันอังคารที่ 31 พฤษภาคม พ.ศ. 2554

เจาะลึก Web Application Security Knowledge Hackers Vs. Web Application Programme

เจาะลึก Web Application Security Knowledge Hackers Vs. Web Application Programme

เจาะลึก Web Application Security Knowledge Hackers Vs. Web Application Programme
Hacker ในอดีตแตกต่างจาก Hacker ในปัจจุบันและอนาคต เนื่องจาก Hacker ในอดีตนั้น มักจะเป็นผู้ที่มีความเชี่ยวชาญด้าน TCP/IP protocol suite หรือการเขียนโปรแกรมภาษา C อย่างลึกซึ้ง Hacker มักจะใช้ Exploit หรือ โปรแกรมเจาะระบบ เจาะผ่านทาง Port ต่างๆ ที่เปิดให้บริการบน Server ของเรา เช่น FTP Server จะเปิด Port 20 และ 21, Sun RPC บน Solaris Platform เปิด Port "Sun RPC" 111 เป็นต้น โดย Hacker นิยมเจาะระบบ Unix ผ่านทาง Port RPC โดยใช้ Exploit ของ Port 111 ซึ่งปกติจะเป็น Port Default ของ Solaris อยู่แล้ว (ข้อมูลเพิ่มเติมอ่านได้ที่ www.sans.org/top20) แต่ในปัจจุบัน Hacker จำเป็นต้องมีการเปลี่ยนแปลงพฤติกรรมในการเจาะระบบเนื่องจาก ระบบส่วนใหญ่มีการป้องกันโดยใช้ Firewall และ มักจะปิด Port ต่างๆ ที่ไม่จำเป็น ตลอดจนปิดแม้กระทั่ง ICMP ซึ่งจะทำให้ Hacker ไม่สามารถใช้คำสั่ง PING มายังเครื่องของเราได้ โดยเราจะเปิด Port สำหรับการใช้งานผ่านทาง Web เท่านั้น คือ Port HTTP 80 และ HTTPS 443 (SSL) จะเห็นได้ว่า Hacker นั้นไม่สามารถเจาะระบบโดยใช้ Exploit เดิมๆ เพราะ Port ต่างๆ ถูกปิดโดย Firewall เรียบร้อยแล้ว ดังนั้น จึงเป็นที่มาของ การ Hack ในแนวใหม่ (Next Generation Hacking) ก็คือ "Web Application Hacking" เจาะเฉพาะ Port 80 และ Port 443 (เพราะ Firewall ของทุกองค์กรยังไงก็ต้องเปิด Port 80 เพื่อให้คนภายนอกเข้ามาเยี่ยมชม Website) Hacker ในปัจจุบันจึงจำเป็นต้องมีความรู้ด้านการเขียนโปรแกรม Web Application ด้วย ถ้าเป็น Windows Platform ก็ต้องศึกษาเกี่ยวกับ IIS Web Server, Active Server Page (ASP) หรือถ้าใช้ Unix/Linux Platform ก็ต้องศึกษาเกี่ยวกับ Apache Web Server, mod_SSL, PERL หรือภาษายอดนิยม PHP และ Java Server Page (JSP) เป็นต้น แน่นอนว่า Web Application นั้นถูกเขียนโดย Web Programmer ส่วนใหญ่มักจะมีความเชี่ยวชาญในการเขียนภาษา ASP หรือ PHP บางคนก็ชอบใช้ Content Management System เช่น PHPnuke (http://www.phpnuke.org/) หรือ PHPbb (http://www.phpbb.com/) ซึ่งล้วนแต่มีช่องโหว่ให้กับ Hacker โดยปกติแล้ว Web Programmer มักจะไม่ได้สนใจเรื่องของ Security โดยตรง จะมีเพียงบางคนที่ศึกษาเรื่องนี้อย่างจริงจัง ดังนั้นการเขียน Web Application ที่ไม่ได้คำนึงถึงด้าน Web Application Security นั้น จึงเป็นการเปิดช่องให้กับ Hacker ในการเจาะระบบ ผ่านทาง Port 80 หรือ Port 443 ได้อย่างง่ายดาย โดยที่ Firewall ไม่สามารถที่จะป้องกันได้เลย การเจาะระบบผ่านทาง Port 80 หรือ 443 นั้น ไม่ยากอย่างที่เราคิด ลองตรวจสอบระบบของเราเองดู ด้วยวิธีการที่เรียกกันในกลุ่มคนที่ทำงานด้าน Information Security ว่า "Vulnerability Assessment" โดยใช้โปรแกรมจำลองการเจาะระบบ

ตัวอย่างเช่นโปรแกรม N-Stealth จาก Website http://www.nstalker.com/ เราจะพบว่า Web Server ของเรา ไม่ว่าจะเป็น IIS หรือ Apache ล้วนมีช่องโหว่ที่ Hacker สามารถมองเห็นโดยโปรแกรมจะวิเคราะห์ช่องโหว่ใน CGI Script, PERL Script ตลอดจน ASP, PHP, Cold Fusion และ JSP Script ด้วย ช่องโหว่ใน Web Application นั้น มีหลายประเภทเช่น Hidden Manipulation, Cookie Poisoning, Buffer Overflow, SQL Injection, Cross Site Scripting (XSS) Flaws (ซึ่งผมจะกล่าวรายละเอียดในฉบับต่อไป) ถามว่าวันนี้เรามีทั้ง Firewall และ IDS ในระบบของเราแล้วเราจะปลอดภัยจากการโจมตีของ Hacker หรือไม่ คำตอบก็คือ ไม่ได้ 100% เพราะยังไงเราก็ต้องเปิด Port ให้คนเข้ามาที่ Web Server ของเราอยู่ดี และ Web Application Programmer ส่วนใหญ่ก็ไม่ได้มีความรู้ในระดับของ Hacker ตลอดจนงานพัฒนาโปรแกรมนั้นก็มักจะเป็นงานที่เร่งรีบเสียจนไม่มีเวลาที่จะมา ตรวจสอบ Source Code เพื่อความปลอดภัยของระบบ ดังนั้นทางแก้ไขแบบบูรณาการก็คือ เราต้องถ่ายทอดความรู้ด้าน "Web Application Security" ให้กับโปรแกรมเมอร์ เพื่อโปรแกรมเมอร์จะได้มีความตระหนักถึงการจู่โจมของ Hacker เรียกว่าสร้าง "Security Awareness" ตลอดจนมีการนำ Source Code มาตรวจสอบทั้งแบบ Manual และ Automated โดยใช้ Tools ที่มีอยู่มากมายใน Internet ก็สามารถจะช่วยลดความเสี่ยงที่เกิดขึ้นกับ Web Application ของเราได้กว่า 50 %
จากข้อมูลใน web site http://www.netcraft.com/ ทำให้เราทราบว่าขณะนี้จำนวน web site ทั่วโลกได้เพิ่มขึ้นอย่างรวดเร็วกว่า 42 ล้าน web site ข้อมูลล่าสุดพบว่าใช้ web server Apache ( จาก http://httpd.apache.org/ ) 63.72% และ web server IIS ของ Microsoft 25.95% เราสามารถสรุปได้ว่า web server ทั่วโลกส่วนใหญ่ใช้ Apache ซึ่งเป็นโปรแกรม open source และ IIS บน Windows NT/2000 Server คราวนี้เรามาดูฝั่งของ Hacker กันบ้างจากข้อมูลใน web site ของเหล่าบรรดา Hacker ที่ชอบมาเปลี่ยนหน้า web page ตาม web site ต่าง ๆ ทั่วโลก ดูที่ http://www.zone-h-org/ เราพบว่าสถิติ web server ที่โดน Hack มากที่สุด (กว่า 80%) ก็คือ Platform ที่ใช้ Linux และ Windows 2000 เป็น web server และ เมื่อเราค้นข้อมูลเพิ่มเติมจาก Search Menu ก็พบว่า web site ของไทยเราโดน Hacker ต่างชาติ เข้ามา Hack กันมากพอสมควร เราอาจจะสงสัยว่า Hacker เหล่านี้เข้ามา Hack เราได้อย่างไร ทั้ง ๆ ที่เราก็เปิด Firewall เฉพาะ port 80 และ port 443 อนุญาตก็แค่เพียง HTTP และ HTTPS Traffic เท่านั้น Hacker ก็ยังเจาะเข้ามาได้ ดูสถิติจาก http://www.incidents.org/ ก็พบว่าการเจาะระบบในเวลานี้ ส่วนใหญ่แล้วเจาะเข้ามาทาง Port 80 ก็คือผ่านทาง ช่องโหว่ของ web server เรานั่นเอง Web Server Hacking และ Web Application Hacking จึงเป็นทิศทางใหม่ของเหล่า Hacker เพราะ web site ทุกแห่งทั่วโลกอย่างไรก็ต้องเปิดบริการ port 80 และ port 443 Hacker สามารถใช้เพียงช่อง Address ที่เราป้อง URL ใน Internet Explorer ก็สามารถเจาะระบบเราได้ โดยมุ่งเป้าหมายมาที่ Web Server และ Web Application ที่เราใช้งานอยู่ ในทางเทคนิคเราเรียกวิธีนี้ว่า "Web Subversion" เทคนิคในการ Hack Web Application มีหลายแบบได้แก่ "Hidden Manipulation" หมายถึง Hacker จะแอบเข้ามาดูข้อมูลที่อยู่ใน Hidden Field ที่ web master ชอบใช้ในการเขียน Web Application วิธีการดูก็ง่าย ๆ คือ Right Click Mouse ที่หน้าจอใน IE แล้วเลือก View source ก็สามารถเห็นข้อมูลที่โดยปกติ IE จะไปแสดงบนจอภาพซึ่ง Hacker สามารถใช้ข้อมูลเหล่านี้ ให้เป็นประโยชน์ในการโจมตี Web server ของเรา ปัญหาก็คือ ในความเข้าใจของ web

master โดยปกติคิดว่าข้อมูลใน Hidden Field จะไม่มีใครเห็น และจะไม่ถูกแก้ไขจากฝั่ง Client แต่ Hacker สามารถแก้ไขข้อมูลใน Hidden Field จะฝั่ง Client และส่งกลับมาประมวลผลในฝั่ง Server ได้ ทำให้ข้อมูลที่เรารับกลับเข้ามาจากฝั่ง Client เกิดความผิดพลาด ยกตัวอย่างเช่น เราทำ e-commerce web site ขายสินค้าผ่าน Internet พวก Hacker สามารถเข้ามาแก้ไขข้อมูลราคาสินค้าของเราให้ต่ำลงได้เวลาสั่งซื้อสินค้า ทำให้ web application คำนวณราคาผิดพลาด ส่งผลต่อยอดขายที่ไม่ถูกต้อง ซึ่งต้องใช้เวลาในการตรวจสอบกันพอสมควร เทคนิคที่ Hacker ชอบใช้อีกวิธีหนึ่งก็คือ "Cookie Poisoning" สังเกตได้ว่า web site ส่วนใหญ่เวลานี้ชอบใช้ เทคนิค Cookie ในการเก็บข้อมูลลูกค้าหลังจากที่เราเข้าไปใน web site เหล่านั้น เช่น เวลาเข้าไป Login หรือ Sign-on เข้าสู่ web site ข้อมูล User name และ Password ของเราจะถูกเก็บอยู่ใน Cookie Text File ใน Subdirectory C:\Documents and Settings\<ชื่อผู้ใช้>\cookies บน hard disk drive c: ของเครื่องเราเอง ข้อมูลส่วนตัวของเรานอกจาก User name และ Password ก็ถูกเก็บอยู่ใน Cookie ด้วยเช่นกัน Hacker สามารถวิเคราะห์ Pattern จากข้อมูลใน Cookie ทำให้ทราบถึงลักษณะการเก็บข้อมูลของเรา และใช้ข้อมูลเหล่านี้ในการเข้าถึงข้อมูลของลูกค้ารายอื่น ๆ ใน e-commerce site เนื่องจาก Cookie File ส่วนใหญ่เป็น Text File ที่ไม่ได้เข้ารหัส หรือไม่ก็ เข้ารหัสแบบง่าย ๆ ซึ่งทำให้ Hacker สามารถแกะ Pattern ออกมาได้ดังนั้น เราควรจัดการกับ Cookie อย่างระมัดระวัง ไม่อย่างนั้นข้อมูลลูกค้าใน Web site ของเราอาจจะรั่วไปสู่มือ Hacker ได้ง่าย ๆ web site ในต่างประเทศหลายที่ โดยเฉพาะพวก web โป๊ มักจะฝังโปรแกรมดักรอเราเมื่อเราเผลอเข้าไปใน web site พวกนี้ โปรแกรม Trojan ที่รอเราอยู่ใน web site จะถูก Download โดยอัตโนมัติเข้าสู่ hard disk ของเราโดยไม่ขออนุญาตเราก่อน ส่วนใหญ่จะเป็นโปรแกรมประเภท SpyWare หรือ AdWare SpyWare ก็คือโปรแกรมที่เข้ามาแอบดูข้อมูลส่วนตัวในเครื่องของเราส่วนใหญ่จะ วิเคราะห์จาก Cookies จากนั้นมันจะส่งข้อมูลกลับไปหา Site เหล่านั้น เพื่อนำข้อมูลเราไปขายหรือหวังผลทางด้านการตลาด เช่น ส่ง Spam Mail กลับมาหาเรา ส่วน AdWare นั้นจะคอยฝังตัวในเครื่องเราแล้วแสดงโฆษณาในลักษณะ Pop-Up AD ออกมาให้เรารำคาญอยู่เป็นระยะ ๆ ดังนั้น เราควรตรวจสอบโปรแกรมพวกนี้อยู่เป็นประจำว่ามีฝังตัวอยู่ในเครื่องเราหรือ ไม่ ลองเข้าไปดูที่ http://www.spychecker.com/software/antispy.htmlสำหรับ web master ควรใช้งาน Cookie อย่างระมัดระวัง หรือ เราอาจจะไม่ใช้ Cookie ในฝั่ง Client เลยก็ได้ เพื่อความปลอดภัยของ user ที่เข้ามาใช้บริการ web application ของเรา
เทคนิคการเจาะ Web Application ของเหล่า Hacker นั้น มีหลายวิธีดังที่ได้กล่าวไปแล้วในฉบับก่อนหน้านี้ เช่น "Hidden Manipulation" และ "Cookie Poisoning" เป็นต้น อีกเทคนิคที่ Hacker ชอบใช้เป็นประจำ ได้แก่ "Cross-Site Scripting" หรือที่เรียกกันในนาม XSS หรือ CSS จะเกิดขึ้นเมื่อเวลาที่เราป้อนค่าเข้าไปใน Web Browser เพื่อส่งให้กับ Web Server เช่น การป้อน Username และ Password หรือ การคีย์ข้อมูลลงใน Web Board หลังจากที่เรากดปุ่ม Submit หรือกดปุ่ม Enter เพื่อส่งข้อมูลให้ Web Server ทาง Web Server จะสร้าง Web Page ตอบกลับมายัง Web Browser ของเราในลักษณะที่เป็น Dynamic Content เช่น ถ้าเราป้อนชื่อผิด Web Server ก็จะแจ้งว่าชื่อนั้นไม่มีในระบบ เป็นต้น หาก Web Server มีการนำข้อมูลที่เราป้อนใส่ลงไปใน Web Page กลับมาแสดงเป็นผลลัพธ์ให้เราเห็นหลังจากที่เราได้ป้อนข้อมูลลงไป แล้ว Hacker สามารถป้อนข้อมูลที่ไม่ใช่ข้อมูลปกติลงไปในช่อง Input เช่น ป้อนข้อมูลเข้าไปในรูปแบบของ JAVA Script ซึ่งสามารถ ทำงานตามที่ Hacker ต้องการได้ เช่น สามารถขโมย Cookie ที่อยู่ในเครื่อง PC ของเราส่งกลับไปหา Hacker ได้ ช่องโหว่ในลักษณะ Cross-Site Scripting นี้ เราจะเห็นได้บ่อยๆใน Search Engine ที่มีการทวน Search Keyword ที่เราป้อนลงไป หรือใน Web Site ที่มีการทวน String ของข้อมูลที่เราป้อนลงไป ในลักษณะของ error message หรือ รูปแบบของ Web Form ที่มีการทวนข้อมูลหลังจากที่เราคีย์เข้าไปในตอนแรก และ พวก Web Board ที่อนุญาตให้ User สามารถเข้ามา POST ข้อมูลได้เป็นต้น เมื่อ Hacker พบว่า Web Site มีช่องโหว่ให้สามารถทำ Cross-Site Scripting ได้ Hacker ก็จะเขียน Script ที่สามารถดูดข้อมูลส่วนตัว ของเราที่เก็บไว้ในเครื่องเราเองในลักษณะที่เป็น Cookie ส่งกลับไปหา Hacker ให้ Hacker สามารถดูข้อมูลของเราได้อย่างง่ายดาย หรือ ส่งพวก Malicious Script แปลกๆ มา Run บนยังเครื่องเราตามที่ Hacker ต้องการก็สามารถที่จะทำได้หาก Web Browser ของเรานั้น อนุญาตให้ Run Script ต่างๆได้ เช่น JAVA Script เป็นต้น การแก้ปัญหา XSS Flaw นั้น ต้องมีการร่วมมือกันของหลายฝ่าย ได้แก่ ฝ่ายผู้พัฒนาโปรแกรม (Web Application Developer), ผู้ดูแลระบบ (Server Administration) และ ผู้ผลิต Web Browser (Browser Manufacturer)สำหรับผู้พัฒนาโปรแกรม ควรจะมีการกรองข้อมูลขาเข้าจากทาง Client Side โดยอย่าคิดว่า User จะป้อนข้อมูลธรรมดาๆ กลับมาที่ Web Server เสมอไป ควรต้องมีการตรวจเช็คข้อมูลขาเข้าทุกครั้งที่รับกลับมายัง Web Server ตลอดจน เวลาจะส่งข้อมูลกลับไปยัง Web B rowser ที่ควรแปลงพวก "Non-alphanumeric data" ให้กลายเป็น HTML character เสียก่อน เช่น เครื่องหมายน้อยกว่า "<" ควรถูกแปลงเป็น "& l t ;" เป็นต้น จะเห็นว่า Web Application Developer ต้องมาไล่ตรวจสอบ Source Code ที่เขียนด้วย ASP, JSP หรือ PHP ว่ามีช่องโหว่ดัง ลักษณะที่กล่าวมาหรือไม่ เวลานี้เราสามารถใช้ Tool ในการช่วยวิเคราะห์ Source Code ของเราได้ โดยไม่ต้องเหนื่อยกับกา รตรวจสอบทีละบรรทัด แต่เราต้องเสียทรัพย์ในการจัดซื้อ TOOL พวกนี้ เช่น WebInspect จาก SPI Dynamics หรือ AppScan จาก Sanctum Inc. ซึ่ง TOOL เหล่านี้มีราคาแพงพอสมควร หากเราได้ฝึกอบรมให้กับผู้พัฒนา Web Application ให้เข้าใจปัญหาต่างๆ เหล่านี้ TOOL ที่ใช้ในการตรวจสอบ Source Code ก็คงไม่มีความจำเป็นเท่าใดนัก สำหรับ End user การป้องกันตัวก็ทำได้ง่ายๆ โดยการ Disable Scripting Language ที่ Web Browser ของเรานั่นเอง แต่เราก็จะเล่นลูกเล่นต่างๆใน Web Site ไม่ได้เต็มที่ หรือ เวลาที่เราจะเข้า Web Site ก็ให้พิมพ์ชื่อลงในช่อง URL อย่า Click Link ที่มากับ e-mail โดยไม่ตรวจสอบให้รอบคอบเสียก่อน หรือ อย่า Click Link ทีอยู่ตาม Web Board ต่างๆ เพราะ Link เหล่านั้นอาจมีการแอบแฝง Script ตลอดจน Malicious URL ต่างๆไว้รอคุณอยู่ ดังนั้นการแก้ไขปัญหาที่ง่ายที่สุด คงอยู่ที่ตัวเราเอง ต้องเลือกเข้า Web Site ที่น่าเชื่อถือ ตลอดจนระมัดระวังเวลาที่จะ Click อะไรก็ตามที่เป็น Link อยู่บน Web Browser ของเรานะครับ ข้อมูลเพิ่มเติมเกี่ยวกับการ Hack และ การป้องกันช่องโหว่ใน Web Server และ Web Application

(ไปเจอมาในบล๊อคแห่งหนึ่งครับเห็น ว่าน่าสนใจดีหากซ้ำแล้วก็ขออภัย)
Credit By http://hub-analyst.blogspot.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น