วิธีตรวจสอบเว็บไซต์ที่โดน Hack #6

วันนี้ได้รับรายงาน ร้องเรียนจากองค์กรภายนอก ว่ามีเครื่องคอมพิวเตอร์จาก Domain ของ PSU ส่งข้อมูลจำนวนมาก ไปโจมตี ระบบเครือข่ายที่ต่างประเทศ จึงทำการสืบสวน เบื้องต้น พบว่า มาจากเครื่อง Web Server ของคณะหนึ่ง ซึ่งเพิ่งย้ายจากเครื่องเดิมซึ่งโดน Hack มาก่อน หวังขึ้นเครื่องใหม่ แล้วทุกอย่างคงจะดีขึ้น … แต่ก็ยังไม่ใช่ จึงขออนุญาต ผู้ดูแลระบบของคณะ เข้าตรวจสอบ โดยการสร้าง Account แยกต่างหาก และรายงานทุกขั้นตอนการทำงานให้ทราบ สิ่งที่พบคือ เป็น Ubuntu และใช้ Apache + PHP + MySQL มีการใช้งาน CMS เป็น WordPress เป็นส่วนใหญ่ แต่มี Joomla แค่หนึ่งเดียว นอกจากนั้น ยังพบว่ามี phpMyAdmin ด้วย เริ่มต้นจาก ตรวจสอบตามกระบวนการใน วิธีตรวจสอบเว็บไซต์ที่โตน Hack #4 ก็ไม่พบความผิดปรกติใด ผู้ดูแลระบบแจ้งว่า หลังจากทราบข่าว ก็ตรวจสอบทันที มีข้อสังเกต ว่า มี Process แปลกๆ ทำงาน ซึ่งตรวจสอบด้วยคำสั่ง ps aux ได้ผลว่ามีโปรแกรมแปลกๆ ทำงานในพื้นที่ /tmp และพยายามติดต่อไปภายนอก ดังนี้ ซึ่งทำงานด้วย User ชื่อ www-data ซึ่ง เป็น Web User ซึ่งผิดปรกติ โดยชื่อโปรแกรมที่ทำงาน ชื่อ /tmp/php /tmp/pnscan ดูจากคำสั่ง สงสัยได้ว่า จะมีการติดต่อไปยังภายนอก เพื่อทำการบางอย่าง … จึงตรวจสอบ พบว่าไฟล์ ด้วยคำสั่ง stat /tmp/php stat /tmp/pnscan  ได้ผลดังนี้ /tmp/php ไฟล์สร้างเมื่อประมาณ         2013-12-13 20:22:51 /tmp/pnscan ไฟล์สร้างเมื่อประมาณ     2013-12-13 20:22:35  จึงตรวจสอบต่อ ด้วยคำสั่ง top แล้วเลือกดู เฉพาะ Process ที่ทำงานด้วย www-data โดยกดปุ่ม u แล้ว พิมพ์ www-data ได้ผลดังนี้  จึงเห็น Process แปลกๆ คือ .xx มีเลข PID คือ 24813  จึงไปดูรายละเอียดว่าไฟล์ดังกล่าว อยู่ที่ใด ด้วยคำสั่ง ls -l /proc/24813 ได้ผลดังนี้  จึงทราบว่า Process ดังกล่าว ไปเรียกไฟล์จาก /dev/shm/.xx ซึ่งเป็นส่วนพื้นที่ของ Share Memory จึงลองใช้คำสั่ง ls -la /dev/shm/  ได้ผลดังนี้  พบว่า ไฟล์ดังกล่าว สร้างเมื่อเวลาประมาณ 2013-12-13 22:45 และ มีความพยายามจะสร้างอีกไฟล์ ชื่อ .x เมื่อเวลาประมาณ 2013-12-14 11:47  เพื่อให้เห็นการทำงาน ของ Process ID 24813 ให้ละเอียดยิ่งขึ้น จึงปรับคำสั่ง จาก ps aux เป็น (เพิ่ม we เข้าไป) ps auxwe | grep 24813 เพื่อให้แสดงผล แบบ Wide Output (w) และ แสดง Environment Variable (e) ที่เกี่ยวข้องด้วย ได้ผลดังนี้  จากคำสั่งนี้ ทำให้ทราบว่า Hacker เรียกมาจาก  REMOTE_ADDR=193.51.237.2

Read More »

วิธีตรวจสอบเว็บไซต์ที่โดน Hack #5

จากที่ผ่านมา เราได้เรียนรู้จาก วิธีตรวจสอบเว็บไซต์ที่โดน Hack #1 วิธีตรวจสอบเว็บไซต์ที่โดน Hack #2 วิธีตรวจสอบเว็บไซต์ที่โดน Hack #3 วิธีตรวจสอบเว็บไซต์ที่โดน Hack #4 เราได้แต่ตามแก้ไขปัญหา เมื่อเกิดเรื่องขึ้นกับ Website ของเราแล้ว ถึงเวลาแล้ว ที่เราจะต้อง “Proactive” หรือ ทำงานเชิงรุกกันได้แล้ว ในโลกเทคโนโลยี มีคนเก่งๆมากมายที่เขาทุ่มเทเวลา เพื่อค้นหาช่องโหว่ต่างๆ ในที่นี้ กรณีของ Joomla ก็สามารถไปดูได้ที่ Joomla Developer Network  http://developer.joomla.org/security.html จากเวปไซต์ดังกล่าว จะเป็นรายงานอย่างเป็นทางการของ Joomla, สิ่งที่ต้องสนใจ คือ Severity: ความร้ายแรง ถ้าเป็นระดับ High, Critical แสดงว่า ร้ายแรง ต้องแก้ไขทันที Versions: รุ่นของ Joomla ที่ได้รับผลกระทบ (ผู้เป็นเจ้าของ ควรรู้ว่าตัวเองใช้รุ่นใด) Exploit type: ลักษณะของช่องโหว่ เช่น XSS, SQL Injection, RFI, Buffer Overflow และอื่นๆ (จะอธิบายในลำดับต่อไป) Reported Date/Fixed Date : แสดง วันที่ที่ตรวจพบ จนถึงวันที่ Joomla ได้แก้ไขปัญหาดังกล่าว CVE Number: แสดงตัวเลขอ้างอิง สำหรับการตรวจสอบกับระบบรักษาความปลอดภัยต่างๆ ถ้ามีตัวเลข CVE แล้ว แสดงว่าปัญหาดังกล่าวมีการยืนยันว่าเป็นปัญหา และมีคนหาทางแก้ไขปัญหาแล้ว รวมถึง มักจะมี Exploited Tools หรือ เครื่องมือในการทดสอบแล้วด้วย ซึ่ง ก็จะมีพวก Script Kiddie หรือ พวกชอบลองของ เอาไปโจมตีเวปไซต์ต่างๆ ทั้งเพื่อความสนุกสนาน และทำลายล้าง (จะอธิบายในลำดับถัดไป) Description และ Solution: รายละเอียดของปัญหา และแนวทางแก้ไข CVE ย่อมาจาก Common Vulnerabilities and Exposures ดูรายละเอียดเพิ่มเติมที่ http://cve.mitre.org/ เรียกได้ว่า เป็น ชื่อทางการของช่องโหว่ โดยมีรูปแบบเป็น CVE-YYYY-NNNN โดยที่ YYYY เป็นปี ค.ศ. ที่ค้นพบช่องโหว่ ส่วน NNNN แสดงลำดับในการค้นพบ ดังนั้น จะมีชื่อได้ 10,000 ชื่อ เช่น CVE-2013-5576 แสดงว่า เป็นช่องโหว่ เกิดขึ้นปี 2013 และเป็นลำดับที่ 5576 ของปีนั้น (แต่ ตั้งแต่ 1 ม.ค. 2014 จะมีการเปลี่ยนแปลงรูปแบบ ตัวเลขตั้งแต่ 0-9999 จะยังใช้ NNNN หรือ 4 Digit เหมือนเดิม แต่เมื่อมากกว่านั้น ก็สามารถขยายไปได้เรื่อยๆ เช่น CVE-0001 แต่เมื่อเกิน 10,000 ก็จะเป็น CVE-10001 หรือใช้ NNNNN เป็น 5 Digit นั่นเอง) ปัญหาอยู่ที่ว่า จาก Website ของ Joomla Developer Network มักไม่ค่อยให้รายละเอียดมากนัก จึงขอแนะนำ อีก Website คือ http://www.scip.ch/en/?vuldb เวปไซต์ดังกล่าว จะแสดงรายการช่องโหว่ต่างๆที่ค้นพบ จัดลำดับเวลาในการเกิดเหตุ และความร้ายแรงได้อีกด้วย ในกรณีที่ต้องการค้นหา ปัญหาของ Joomla 2.5 สามารถใช้ Google ช่วยค้นหาได้ โดยการค้นหาด้วยคำต่อไปนี้ joomla 2.5 site:scip.ch จากผลการค้นหา จะพบว่า มีหลายช่องโหว่มาก ลองดูสักหนึ่งรายการ http://www.scip.ch/en/?vuldb.9847 จากภาพ

Read More »

วิธีแก้ปัญหา windows 8.1 กับ Powerpoint 2013 ที่มีความสามารถ Presenter View แล้วภาพสั่น

วิธีแก้ปัญหา windows 8.1 กับ Powerpoint 2013 ที่มีความสามารถ Presenter View ซึ่งทำให้ผู้บรรยายสามารถ รู้ว่า สไลด์ต่อไปเป็นภาพอะไร และมี Note ต่างๆ แถมยังสามารถ เลือก Slide ที่จะ show เบื้องหลัง ก่อนจะแสดงให้ผู้ชมเห็นทาง Projector ได้ด้วย หน้าจอ Presenter View จะเป็นประมาณนี้ ปัญหา: เราเอา Notebook ไปต่อกับ Projector แล้วทำเป็นแบบ Duplicate ตอนแสดง Desktop ก็เห็นสวยงามดี ไม่สั่น แต่พอเปิด Powerpoint 2013 แล้ว กด F5 เพื่อ Present ก็พบว่า ภาพบน Projector สั่น หรือได้สัดส่วนไม่พอดี เหตุ: Presenter View นั้น จะแอบสลับไปใช้ Secondary Screen Resolution นั่นเอง ถ้า ใครเคยตั้งไว้สูงลิ่ว เช่น 1920×1080 เพราะ ที่โต๊ะมี 2 จอ ให้ใช้ ก็จะทำให้เวลา Present เกิดอาการภาพสั่น วิธีแก้ไข: ให้ปรับ Resolution ของ Secondary Screen ให้เป็นแบบเดียวกับ Primary Screen ที่ดีอยู่แล้ว เช่น เป็น 1366×768 เท่ากัน แล้วจะทำให้การ Present ด้วย Powerpoint 2013 แบบ Presenter View ราบรื่น หรือถ้าจะให้ง่าย คือใช้เป็นแบบ Primary Screen อย่างเดียว โดย ไปที่ Presentation เลือก Primary Screen Uncheck “Use Presenter View” ดังภาพ

Read More »

dnsqsum script

DNS Query Summary Script สำหรับ Summary DNS Query Log เพื่อดูว่ามีการ query มาจาก host ใหน และ query domain ใหนบ้าง โดยแสดงเฉพาะ Top 10 — quick & dirty version — #!/bin/bash QLOG=”/var/log/named/query.log” [ ! -f “$QLOG” ] && echo “Log file ‘$QLOG’ doesn’t exist?” && exit DCOL=6 V=`head -1 $QLOG | cut -f5 -d’ ‘` if [ “$V” = “view” ]; then DCOL=8 fi echo “===== Source of Query =====” cat $QLOG | cut -f4 -d’ ‘ | cut -f1 -d’#’ | sort | uniq -c | sort -rn | head echo “=———————-=” echo “===== Domain to Query =====” cat $QLOG | cut -f$DCOL -d’ ‘ | sort | uniq -c | sort -rn | head echo “=———————-=”

Read More »

update fail2ban after DNS query attack

หลังจากทิ้งไว้นานกว่า 1 ปี ในที่สุดการโจมตีในลักษณะของการ DOS attack สำหรับ DNS Server ก็กลับมาอีกรอบ วันนี้ (2013-12-11) คุณ สงกรานต์ก็ post ข้อความในกลุ่ม PSU Sysadmin บน facebook ว่า DNS Server หลายๆเครื่องที่อยู่ภายในเครือข่ายของ PSU มี traffic เกิดขึ้นมากผิดปกติ และมากกว่าตัว DNS Server หลักของมหาวิทยาลัยเอง {ns1,ns2}.psu.ac.th ซึ่งตัว DNS Server ทั้งสองโดยทั่วไปแล้ว เนื่องจากเป็นเซิร์ฟเวอร์ที่ให้บริการเป็นหลักให้กับเครื่องคอมพิวเตอร์ทั้งหมดภายในมหาวิทยาลัย ก็ควรที่จะมี traffic สูงกว่า DNS Server ตัวอื่นๆ แต่เมื่อเครื่อง DNS Server อื่นๆมี traffic สูงกว่า ก็พอที่จะบอกได้คร่าวๆล่ะว่า มีเหตุการณ์ผิดปกติเกิดขึ้นแน่ๆ ในจำนวน server เหล่านั้น มีเครื่องเซิร์ฟเวอร์ที่ผมดูแลอยู่ด้วย เป็นเครื่องที่ใช้สำหรับสอน นศ. ในรายวิชา Linux Server Admin. ซึ่งหัวข้อหนึ่งที่นศ.จะต้องเรียน ก็คือการติดตั้งและให้บริการ Name Service ซึ่งเครื่องเซิร์เวอร์เครื่องนี้ นอกจากจะใช้เป็นตัวอย่างในการ setup แล้ว ยังทำหน้าที่เป็น 2nd DNS ให้กับ domain ของ นศ. ทั้งหมดด้วย (นศ. มี domain ของตัวเองคนละ 1 domain) logfile ที่เกิดจากการ query มีขนาดมากกว่า 2GB จากการเก็บ log ของการ query ในช่วงเวลาประมาณ 3 วันครึ่ง (เริ่ม 2013-12-08 16:25 จนถึง 2013-12-11 12:40) เมื่อเทียบกับ log ปกติมีขนาดประมาณ 1-2 MB สำหรับการเก็บ log ในช่วง 1 สัปดาห์ หรือถ้าเทียบในแง่ของจำนวนของการ query ในช่วง 3 วันที่ผ่านมามีการ query ประมาณ 18 ล้านครั้ง เมื่อเทียบกับการ query ปกติประมาณ 15,000 ครั้งต่อสัปดาห์ การโจมติมาจากใหนบ้าง? 7778377 95.211.115.114 3870621 93.170.4.34 2596494 94.198.114.135 2581297 95.211.216.168 331584 199.59.161.6 53137 216.246.109.162 47351 205.251.194.32 46793 205.251.193.79 41119 156.154.166.38 39572 156.154.166.37 39501 54.230.130.116 36855 205.251.198.179 34079 42.112.16.162 31690 134.255.243.100 28662 205.251.197.226 27481 212.118.48.20 23435 204.188.252.146 20565 82.221.105.131 20477 89.184.81.131 19036 95.141.37.197 17404 72.20.56.200 14156 206.72.192.13 11510 82.221.105.139 10387 5.135.14.245 ตัวเลขในคอลัมน์แรกคือจำนวนครั้งที่มีการ query และในคอลัมน์ที่สองเป็น ip address query อะไรบ้าง? ถ้าดูข้อมูลคร่าวๆก็จะได้ 08-Dec-2013 06:58:54.295 client 192.99.1.168#9118: view theworld: query: adrenalinessss.cc IN A +E (172.30.0.85) 08-Dec-2013 06:58:54.296 client 192.99.1.168#19072: view

Read More »