Hacking Web Application (ตอนที่ 2) "ช่องโหว่ใน SSL Protocol และ ความเข้าผิดในการใช้งาน SSL กับ Web Application
by A.Pinya Hom-anek, CISSP,CISA
ACIS Professional Team
Web Application ในทุกวันนี้โดยส่วนใหญ่ เวลาผู้ใช้ต้องการจะ Log on หรือ Sign on เข้าสู่ระบบเช่น ระบบ Web Mail หรือ ระบบ Intranet ของบริษัท ผู้พัฒนาระบบมักจะใช้เพียงโปรโตคอล HTTP ( TCP Port 80) ซึ่งเป็นข้อมูลที่ไม่ได้รับการเข้ารหัสเพื่อป้องกัน Hacker มาแอบดูข้อมูล (information sniffing) ในทางเทคนิค เราเรียกข้อมูลเหล่านี้ว่าเป็นข้อมูลแบบ “Plain Text” เช่น HTTP, FTP, Telnet, POP3 และ SMTP สังเกตได้ว่าข้อมูลที่เป็น Plain Text นั้น Hacker สามารถดักแอบดูได้ง่ายๆ ดังนั้น ผู้พัฒนา Web Application ที่ทำธุรกิจในลักษณะ e-commerce หรือ Internet Banking จึงหันมาใช้โปรโตคอล ที่มีการเข้ารหัสให้กับ Web Application ได้แก่ โปรโตคอล SSL (Secure Socket Layer) พัฒนาและคิดค้นโดยบริษัท Netscape Communication แต่ภายหลังกลายมาเป็นมาตรฐานในโลก e-commerce โดย Web Server ชื่อดังทั้งสองค่าย ได้แก่ Apache จาก httpd.apache.org และ IIS จาก www.microsoft.com ล้วนนำ SSL มาใช้กับ Web Server ของตนเอง โดยในโลก Open source นั้นมีการใช้ทั้ง mod_SSL (http://www.modssl.org) และ OpenSSL (http://www.openssl.org) ในการเข้ารหัสข้อมูล http ให้กลายเป็น https ผ่าน port 443 แทนที่จะเป็น port 80 ปกติ
ยกตัวอย่าง Internet Banking ในประเทศไทยนั้น ทุกธนาคารใช้ SSL ในการป้องกันข้อมูล Username และ Password ของลูกค้าธนาคาร เวลาลูกค้าต้องการทำ Transaction ผ่านทาง Internet เช่นขอดูยอดคงเหลือ, ขอดู statement หรือ โอนเงินไปยังบุคคลอื่นที่ผูกบัญชีอยู่กับตนเอง เป็นต้น
ปัญหาก็คือ ตัว SSL Module ที่ถูกนำมาใช้ทำงานร่วมกับ Web Server เช่น Apache Web Server นั้นมีช่องโหว่ (Vulnerability) ที่ Hacker สามารถยิงโปรแกรมจำพวก Exploit เข้ามาโจมตีได้โดย Hacker จะสามารถเข้ายึด (Compromised) เครื่องที่ขาดการดูแล ไม่ได้มีการ update หรือ patch ตัว SSL Module ให้เรียบร้อย โดย Hacker สามารถได้สิทธิเป็น “root” ของระบบ UNIX ที่เราใช้งานอยู่ไม่ว่าจะเป็น SUN Solaris, AIX, HP-UX หรือ LINUX จากนั้น Hacker สามารถเข้ามาฝัง Trojan Module ไว้เพื่อครั้งหน้าจะได้สามารถเข้าถึง Web Server เราได้อีกไม่ว่าเราจะเปลี่ยน Username และ Password ไปสักกี่ครั้งก็ตาม เพราะTrojan Module เช่นพวก Rootkit ไม่จำเป็นต้องใช้ Username และ password ปกติที่เก็บอยู่ใน file /etc/shadow แต่มันจะใช้ username และ password ที่อยู่ในตัว Trojan Module เอง
ทางแก้ปัญหาก็คือ ต้องหมั่นตรวจสอบว่า SSL Modules ที่เราใช้อยู่ไม่ว่าจะเป็นOpenSSL หรือ mod_SSL มีช่องโหว่ที่เรายังไม่ได้ Patch หรือไม่ ถ้ามีก็ควรรีบ Patch เสียตั้งแต่เนิ่นๆ ก่อน Hacker จะเข้าสู่ระบบเราแล้วฝัง Trojan Module เราจะแก้ไขและตรวจสอบได้ลำบากมาก
การเจาะระบบที่ใช้ SSL นั้นไม่ได้มีเพียงวิธีที่กล่าวมาแล้วแค่นั้น แต่ Hacker สามารถดักจับ Session ที่เข้ารหัสด้วย SSL โดยการใช้โปรแกรมประเภท Packet Snifferที่ถูกออกแบบมาพิเศษ ซึ่งโปรแกรมประเภทนี้สามารถดักจับข้อมูลในสภาวะแวดล้อมที่ใช้Switching ได้ด้วย ปกติแล้ว Sniffer จะทำงานกับสภาวะแวดล้อมที่ใช้ HUBเท่านั้น แต่โปรแกรม Hack รุ่นใหม่ๆ สามารถ Sniff หรือดักดูข้อมูลในสภาวะแวดล้อมที่ใช้ Switching ได้อย่างสบายๆ โดยใช้เทคนิคเช่น ARP Spoofing หรือเทคนิคใหม่ล่าสุด “Port Stealing” นอกจากนี้ session ที่ใช้ SSL หรือ SSH (Secure Shell) ที่มีการเข้ารหัสข้อมูลด้วย KEY อันซับซ้อน โปรแกรม Hack เหล่านี้ก็สามารถดักจับข้อมูลระหว่างทาง ในลักษณะที่เรียกว่า MIM Attack (Man-in-the-Middle Attack) และมีการดักจับ KEY ที่ทั้ง 2 ฝ่าย (Web Browser และ Web Server) กำลังแลกเปลี่ยนกันเพื่อต่อเชื่อม session SSL หรือ SSH เมื่อ Hacker ดักจับ KEY ได้ Hacker ก็จะใช้ KEY ในการถอดรหัสข้อมูลที่ถูกเข้ารหัส (Cipher Text) ออกมาเป็น Plain Text ซึ่งสามารถดูข้อมูลได้อย่างง่ายดาย
บางคนอาจคิดว่าอย่างนี้ Internet Banking ก็ไม่ปลอดภัยแล้วสิ? อย่าเพิ่งเครียดนะครับ เพราะ Hacker ไม่สามารถดักจับข้อมูลเราได้ง่ายๆ Hacker ต้องดักอยู่ระหว่างทางที่ข้อมูลส่งกันไปมาระหว่าง Web Browser และ Web Server ดังนั้น ถ้า Hacker ไม่อยู่ในตำแหน่งที่เหมาะสมก็ไม่สามารถทำได้ง่ายๆ จุดที่เราควรระวังก็คือบริเวณ DMZ (Demilitarized Zone) ของเราเอง อาจมีเครื่องอื่นที่ถูก Hacker ยึดไปเรียบร้อยแล้ว และกำลัง Run โปรแกรมประเภท SSL/SSH Password Sniffer อยู่ หรือ บริเวณจุดเชื่อมต่อที่ ISP ก็เป็นไปได้ และท้ายสุดคือ วง LAN ที่เรากำลังใช้งาน Web Browser อยู่ ก็อาจมีมือดีมาดักจับ Username และ Password ตลอดจน เลขที่บัญชีและเลขที่บัตรเครดิตต่างๆ ของเราได้โดยใช้เทคนิค MIM Attack
ทางแก้ปัญหาคือ ในวง DMZ ที่เราวาง Web Server อยู่ ควรมีการ Set “Port Security” ที่ตัวอุปกรณ์ Switching เพื่อป้องกัน ARP Spoofing และ ARP Poisoning และเราต้องมีโปรแกรมตรวจสอบประเภท Intrusion Detection System (IDS) เพื่อดักดูว่ามีอะไรผิดปกติและสิ่งแปลกปลอมใน Network ของเราหรือไม่ ถ้าเราใช้ SSH ก็ควร Update เป็น version 2 เพราะ SSH Version 1 นั้น Hacker สามารถดักข้อมูลและถอดรหัสได้
ในฉบับหน้าผมจะกล่าวถึงเรื่องการจัดการภายในเครือข่ายของเราให้ปลอดภัยกว่าในปัจจุบันเพื่อเตรียมรับมือกับ Virus ใหม่ๆ ที่จะเกิดขึ้น อย่าลืมติดตามนะครับ
จาก : หนังสือ eLeaderThailand
ฉบับที่174 ประจำเดือนสิงหาคม2546
Update Information : 17 กรกฎาคม 2546