Category: Security
-
Spam-20150420-01
หากท่านได้รับ Email ในลักษณะดังภาพต่อไปนี้ … นี่เป็นจดหมายหลอกลวง !!!
สิ่งที่ต้องทำ !
- ห้ามคลิกลิงค์ใดๆ: เพราะมันจะนำไปสู่เว็บไซต์หลอกลวงเอาข้อมูลส่วนตัว รหัสผ่าน และข้อมูลทางการเงินได้ หรือ อาจจะถูกฝังโปรแกรมดักจับข้อมูลในเครื่องของท่านได้ โดยไม่มีการเตือน
- ห้าม Reply, Forward : เพราะท่านกำลังทำให้เกิดการแพร่กระจาย และ ตกเป็นเป้าหมายต่อไปทันที
- ให้ลบทิ้งทันที
หากคลิก หรือ พลาดบอกรหัสผ่านไปแล้ว
- ให้ตั้งรหัสผ่านใหม่ทันที !!! และต้องแตกต่างจากเดิมโดยสิ้นเชิง
- หาก Reply ไปตอบโต้กับผู้ส่ง ท่านต้องระวังตัวมากขึ้น เพราะจะมีจดหมายหลอกลวงอื่นๆจำนวนมากที่จะวิ่งเข้ามาหาท่าน
ทางมหาวิทยาลัย จะไม่ส่งจดหมายแจ้งเตือน/สอบถามรหัสผ่านจากท่านเด็ดขาด
ดูลักษณะ จดหมายหลอกลวงได้ที่นี่ http://sysadmin.psu.ac.th/tag/spamtoday/ -
วิธีตรวจสอบเว็บไซต์ที่โดน Hack #16
ShellShock หรือในอีกชื่อคือ Bashdoor (เลียนเสียง Backdoor) ซะงั้น เป็นช่องโหว่ใน Shell ที่ใช้กันทั่วไปในตระกูล *NIX ทั้ง UNIX, Linux รวมถึง Mac OS X[1] ด้วย โดยอาศัยความสามารถในการเขียน Function ใส่ใน Environment Variable ได้ โดยไม่มีการตรวจสอบข้อมูลที่แถมมาทำให้สามารถแทรกคำสั่งของระบบปฏิบัติการได้
ช่องโหว่นี้เริ่มประกาศเป็น CVE-2014-6271[2] โดย Bash Shell ที่ได้รับผลกระทบเริ่มตั้งแต่รุ่น 1.14.0 ถึง 4.3 ย้อนกลับไปตั้งแต่ปี 1999 กันเลยทีเดียว !! มีผลกระทบกับ CGI-base Web Server (ได้แก่ Apache), OpenSSH Server, DHCP Clients และ Qmail Server โดยเป็น Bug ตาม CWE 78[3] Improper Sanitization of Special Elements used in an OS Command (‘OS Command Injection’)
วิธีตรวจสอบ Bash Version ใช้คำสั่ง
bash --version
หากพบว่า ต่ำกว่า 4.3 ก็ให้ลองคำสั่งต่อไปนี้
env x='() { :;}; echo Vulnerable' bash -c 'echo Hello World'
ถ้าตอบมาว่า
Vulnerable Hello World
ก็แสดงว่า เป็นเครื่องนี้มีช่องโหว่ครับ
อธิบายเพิ่มเติม
1. คำสั่งในการสร้าง Environment Variable คือ
env x=' … '
โดยในที่นี้จะมีตัวแปร x เป็น Environment Variable
2. ต่อมา ในตัวแปร x สามารถสร้าง Function ได้ ในรูปแบบ
env x='() { :;};'
ภายใน { } จะใส่คำสั่งอะไรก็ได้ แต่ในตัวอย่างนี้ เครื่องหมาย : มีความหมายเหมือนกับ true อะไรทำนองนั้น
3. ปัญหาอยู่ตรงที่ว่า Bash Shell ที่มีปัญหา ไม่ได้ตรวจสอบว่า Environment Variable ที่สร้างแบบ Function นี้ สิ้นสุดแค่การสร้าง function ทำให้สามารถแทรกคำสั่งเพิ่มเติมได้ หลังเครื่องหมาย ;
env x='() { :;}; echo Vulnerable'
ลองใช้คำสั่ง
env x='() { :;}; cat /etc/passwd'
จะแสดงตัวแปร Environment Variable ทั้งหมด และพบตัวแปร x มีค่าเป็น function อยู่ แต่จะยังไม่มีอะไรเกิดขึ้น
4. แต่เมื่อมีการเรียก Bash Shell ทำงาน ด้วยคำสั่ง
env x='() { :;}; echo Vulnerable' bash -c 'echo Hello World'
ก็จะเป็นการเรียกคำสั่งในตัวแปร x ออกมาด้วยนั่นเอง
กรณีผลกระทบของ DHCP Client คือ ถ้าเครื่อง DHCP Server ตัวอย่างเช่น dnsmasq[4] สามารถตั้งค่า dhcp-option-force ซึ่งจะส่งคำสั่งไปยัง DHCP Client ที่ใช้ Bash Shell ทำงานตามต้องการได้ เช่น
dhcp-option-force=100,() { :; }; echo ‘You are going to be shocked..ShellShock !!!’>/tmp/
ในส่วนของ Web Security หากติดตั้ง Apache [5]และใช้งาน CGI บนเครื่องที่มี Bash Shell ที่มีช่องโหว่นี้ ก็จะเกิดปัญหา โดยอาศัยตัวแปร Agent String วิธีการทดสอบมีดังนี้
1. ที่เครื่องเว็บเซิร์ฟเวอร์ที่มี Apache และใช้งาน CGI มี test.cgi ง่ายๆดังนี้
#!/bin/bash echo "Content-type: text/plain" echo echo echo "Hi"
2. ถ้าเรียกผ่าน Web Server มี IP Address เป็น 192.168.56.101 และจะเรียก URL ของ CGI ดังนี้
http://192.168.56.101/cgi-bin/test.cgi
การเรียกผ่าน Web Browser ก็จะทำงานตามปรกติ
3. แต่ถ้าใช้ wget ผ่านทาง command linet ไป โดยกำหนด option -U เพื่อบอกว่า Agent String ที่ติดต่อไปคืออะไร ก็จะสามารถแทรกคำสั่งเพิ่มเติมได้ เพราะ Apache CGI ใช้ Bash Shell ในการทำงานนี้ เช่นใช้คำสั่ง
wget -U "() { :;};echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd" http://192.168.56.101/cgi-bin/test.cgi
คำสั่งนี้ จะติดต่อไปยัง Web Server โดยแทนที่จะบอกว่าติดต่อไปจาก Agent อะไรธรรมดาๆ ก็จะแทรก Shell เข้าไปด้วย โดยตัวอย่างนี้ จะได้ /etc/passwd ออกมา เก็บไว้ที่เครื่อง ชื่อไฟล์ test.cgi
ดังนั้น รีบ Patch ซะ
ขอให้โชคดี
[1] “Shellshock (software bug) – Wikipedia, the free encyclopedia.” 2014. 20 Jan. 2015 <http://en.wikipedia.org/wiki/Shellshock_(software_bug)>
[2] “CVE-2014-6271 – CVE Details.” 2014. 20 Jan. 2015 <http://www.cvedetails.com/cve/CVE-2014-6271/>
[3] “CWE – CWE-78: Improper Neutralization of Special …” 2006. 20 Jan. 2015 <http://cwe.mitre.org/data/definitions/78.html>
[4] “shellshock dhcp exploitation – Security StackExchange.” 2014. 20 Jan. 2015 <http://security.stackexchange.com/questions/68877/shellshock-dhcp-exploitation>
[5] “What is a specific example of how the Shellshock Bash bug …” 2014. 20 Jan. 2015 <http://security.stackexchange.com/questions/68122/what-is-a-specific-example-of-how-the-shellshock-bash-bug-could-be-exploited>
-
วิธีตรวจสอบขณะเข้าเว็บไซต์ที่มีหน้าเว็บ login ด้วย username
วิธีตรวจสอบขณะเข้าเว็บไซต์ที่มีหน้าเว็บ login ด้วย username
สำหรับเบราว์เซอร์ Chrome ให้สังเกตว่าจะมีรูปกุญแจล๊อค(สีเขียว) หน้าคำว่า https แสดงว่า เว็บเพจหน้านี้ปลอดภัย
หากแสดงเป็นอย่างอื่น เช่น กากบาทสีแดงคาดที่คำว่า https แสดงว่าไม่ปลอดภัย อาจจะกำลังโดนใครดักข้อมูล username และ password ของท่าน
ตัวอย่างเว็บไซต์ gmail
ตัวอย่างเว็บไซต์ต่างๆของ PSU ที่เรียกใช้ด้วย Chrome browser และ แสดง https กุญแจสีเขียว สถานะปลอดภัย
สำหรับเบราว์เซอร์ Firefox ก็แสดงเป็นรูปกุญแจล๊อค แต่เป็นสีเทา ไม่แสดงเป็นสีเขียว ก็คือปรกติครับ (ผมไม่ได้ใส่รูปตัวอย่างสำหรับ Firefox)
สำหรับเบราว์เซอร์ IE (Internet Explorer) ในขณะที่เขียนบทความนี้ (19 ธันวาคม 2557) ผมไม่แนะนำให้ใช้ครับ
ขอให้ตรวจสอบทุกครั้งก่อนใช้งานใส่ username ลงไปนะครับ
-
เปลี่ยน Certificate!?
เนื่อง Certificate *.psu.ac.th จาก Comodo เดิมซึ่งกลายเป็น Cert. ที่จัดว่า WEAK แล้ว ทางเจ้าหน้าที่เครือข่ายจึงได้ขอ Cert. ใหม่มา ที่ Strong ขึ้น 🙂 ก็ต้องมานั่งเปลี่ยน Cert. ในเครื่องที่ให้บริการขั้นตอนดังนี้
- Download Cert. ใหม่มาซึ่งต้องติดต่อขอไปที่ Net@dmin โดยผ่านช่องทางของ help.psu.ac.th
- ไฟล์ที่จะโหลดมาใช้งานมีทั้งหมด 3 ไฟล์ได้แก่ STAR_psu_ac_th.ca-bundle, STAR_psu_ac_th.crt และ STAR_psu_ac_th_key.key เมื่อดาวน์โหลดมาเสร็จแล้วให้เอาไปแทนที่เก่าได้เลย ในตัวอย่างนี้จะเก็บไว้ที่ /etc/ssl/private
- ทีนี้ มาดู config เก่าของ apache2
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName bahamut.psu.ac.th
ServerAdmin cc-server-admin@group.psu.ac.th
DocumentRoot "/var/www/html"
ErrorLog ${APACHE_LOG_DIR}/bahamut.ssl_error_log
TransferLog ${APACHE_LOG_DIR}/bahamut.ssl_access_log
LogLevel warnSSLEngine on
SSLCertificateFile /etc/ssl/private/STAR_psu_ac_th.crt
SSLCertificateKeyFile /etc/ssl/private/STAR_psu_ac_th.key
SSLCertificateChainFile /etc/ssl/private/STAR_psu_ac_th.ca-bundleRewriteEngine On
RewriteRule /avl https://licensing.psu.ac.th<Directory /var/www/licensing>
AllowOverride All
Order deny,allow
Deny from all
Allow from 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
</Directory>
</VirtualHost>
</IfModule>- จะเห็นว่าไฟล์ชื่อไม่ตรงอยู่ไฟล์หนึ่งคือ STAR_psu_ac_th.key ก็เปลี่ยนชื่อให้ตรง เป็นอันเสร็จ
- แต่ … เนื่องจากเป็น Cert. ใหม่ เพื่อเพิ่มความแข็งแรง เจ้าหน้าที่เครือข่ายจึงได้กำหนด Passphrase ไว้ด้วย ต้องแก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf ในบรรทัดที่เขียนว่า SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase ให้แก้ /usr/share/apache2/ask-for-passphrase เป็น /etc/ssl/private/passphrase-script แล้วสร้างแฟ้ม /etc/ssl/private/passphrase-script มีข้อความว่า
#!/bin/sh
echo "passphrase ที่ได้รับแจ้งจาก Net@dmin"
- chmod +x /etc/ssl/private/passphrase-script และทดสอบ script ด้วยว่าผลลัพธ์ที่ได้ตรงกับ passphrase ที่ Net@dmin แจ้งมา
- restart apache2 ด้วยคำสั่ง sudo service apache2 restart ถ้า passphrase ที่ใส่ไว้ในแฟ้ม passphrase-script ถูกต้องจะ restart สำเร็จ
- เป็นอันเสร็จ
สิ่งที่ต้องแก้เพื่อให้ได้ A+ ในการทดสอบกับเว็บ https://www.ssllabs.com/ssltest/analyze.html
- แก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf โดยแก้ไข/เพิ่ม ข้อความดังต่อไปนี้
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:
RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
SSLHonorCipherOrder on
SSLProtocol all -SSLv3 -SSLv2
SSLCompression off- sudo a2enmod headers เพื่อให้ module headers ของ apache2 ทำงาน
- แก้ไขแฟ้มของไซต์ที่เปิด ssl ไว้ จากตัวอย่างนี้คือ /etc/apache2/sites-enabled/licensing-ssl.conf โดยเพิ่มข้อความว่า
Header add Strict-Transport-Security "max-age=15768000;includeSubDomains"
- ตัวอย่าง
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName licensing.psu.ac.th
ServerAdmin cc-server-admin@group.psu.ac.th
DocumentRoot "/var/www/html/avl"
ErrorLog ${APACHE_LOG_DIR}/licensing.ssl_error_log
TransferLog ${APACHE_LOG_DIR}/licensing.ssl_access_log
LogLevel warn
SSLEngine on
Header add Strict-Transport-Security "max-age=15768000;includeSubDomains"
SSLCertificateFile /etc/ssl/private/STAR_psu_ac_th.crt
SSLCertificateKeyFile /etc/ssl/private/STAR_psu_ac_th.key
SSLCertificateChainFile /etc/ssl/private/STAR_psu_ac_th.ca-bundle
</VirtualHost>
</IfModule>- restart apache2 ด้วยคำสั่ง sudo service apache2 restart
- ทั้งหมดนี้ทำ บน Ubuntu 14.04.1
- ผลของการตั้งค่าตามนี้ จะทำให้ผู้ใช้ที่ยังใช้งาน Windows XP และ IE6 ไม่สามารถใช้งานเว็บไซต์ได้
- จบ ขอให้สนุกครับ
จุดสังเกตุเมื่อเปลี่ยน certificate แล้ว
ก่อนเปลี่ยนบน Chrome เบราเซอร์
หลังเปลี่ยนบน Chrome เบราเซอร์
ที่มา:
http://www.bauer-power.net/2014/04/how-to-enable-http-strict-transport.html#.VJJ8pXtKW7A
http://www.hackido.com/2009/10/quick-tip-auto-enter-password-for-your.html
-
การป้องกัน Man In The Middle (MITM) ดักบัญชีผู้ใช้และรหัสผ่าน
การป้องกัน Man In The Middle (MITM) ดักบัญชีผู้ใช้และรหัสผ่าน
Man In The Middle (MITM) คือ เทคนิคการโจมตีของแฮคเกอร์ที่จะปลอมเป็นคนกลางเข้ามาแทรกสัญญาณการรับส่งข้อมูลระหว่างผู้ใช้ (เบราว์เซอร์) และเซิร์ฟเวอร์ โดยใช้โปรแกรมดักฟังข้อมูลของเหยื่อ แล้วแฮกเกอร์ก็เป็นตัวกลางส่งผ่านข้อมูลให้ระหว่างเบราว์เซอร์กับเซิร์ฟเวอร์ วิธีการทำอย่างหนึ่งคือ การส่งข้อมูล MAC Address ของเครื่องของแฮกเกอร์ไปให้กับเครื่องของผู้ใช้โดยแจ้งว่าเป็น MAC Address ของ Gateway ของระบบเครือข่าย หลังจากนั้นเมื่อเครื่องเหยื่อรับ MAC Address ดังกล่าวไปใส่ไว้ใน ARP Table cached แล้ว กระบวนการส่งข้อมูลจากเบราว์เซอร์ของเครื่องเหยื่อจะถูกส่งผ่านไปยังเครื่องแฮกเกอร์ก่อนที่จะส่งไปยังเครื่องเซิร์ฟเวอร์
ที่มารูปภาพ: http://www.computerhope.comดังนั้นเมื่อเครื่องเหยื่อเข้าไปยังหน้าเว็บเพจที่ต้อง login ด้วย Username และ Password โปรแกรมดักฟังข้อมูลก็จะทำการส่งหน้าเว็บเพจที่ไม่ได้ป้องกันไปให้เครื่องเหยื่อ ดังรูป
ผู้ใช้ทั่วไปจะสังเกตไม่ออก (หรือไม่มีความรู้) ก็จะคลิกผ่านคำเตือนใดๆที่เบราว์เซอร์แจ้งเตือนไปแล้วสุดท้ายผู้ใช้งานก็จะใส่ Username และ Password ในหน้า login ซึ่งแฮกเกอร์ก็จะได้ข้อมูลดังกล่าว ดังรูป
การทดสอบเทคนิคการโจมตีวิธีนี้ง่ายมากๆเลย เพียงแค่ค้นหาใน search engine ก็จะพบวิธีการทั้งทำการด้วยโปรแกรมบนวินโดวส์หรือโปรแกรมบนลินุกซ์ ผมจะไม่ลงรายละเอียดการทดสอบในบทความนี้นะครับ
ผมพบว่าการป้องกันที่ดีที่สุดคือ หนึ่ง การให้ความรู้วิธีการใช้งานเบราว์เซอร์ทั้ง IE, Google Chrome, Firefox หรือ Safari เป็นต้น ความรู้ที่ว่าก็คือ ผู้ใช้ต้องสังเกตว่า เว็บเพจที่เข้าใช้งานประจำนั้นปรกติหน้า login จะต้องมีอักษร https แสดงอยู่ที่มุมซ้ายบรรทัดที่อยู่ของเว็บเพจ เช่น https://www.facebook.com ดังรูป
และจะต้องไม่มีการเตือนว่า “ไม่ปลอดภัย” และถามว่า “จะดำเนินการต่อหรือไม่” ดังรูป
แต่หากวันใดที่เราถูกแฮกเกอร์ทำ MITM กับเครื่องของเราแล้ว เราจะเห็นหน้าเว็บเพจแปลกไปจากเดิม เราจะต้องไม่คลิกปุ่มเพื่อดำเนินการต่อไป แต่หากคลิกต่อไปแล้วจะเห็นแบบดังรูป
และถ้าใส่ Username และ Password ก็ถูกดักไปได้ครับ ดังรูป
เราสามารถตรวจสอบด้วยวิธีอย่างง่ายๆด้วยคำสั่ง arp -a ทั้งบนวินโดวส์และลินุกซ์ เพื่อดูว่ามีเลข MAC Address ของ IP คู่ใดบ้างที่ซ้ำกัน มักจะเป็นคู่ระหว่าง IP ของ Gateway กับ IP ของเครื่องแฮกเกอร์ ดังรูป
ถ้าเห็นอย่างนี้แสดงว่า “โดนเข้าแล้วครับ” ทางแก้ไขทางเดียวคือปิดเครื่องและแจ้งผู้ดูแลระบบประจำหน่วยงานของท่านสอง การป้องกันตัวเองไม่ต้องรอพึ่งระบบเครือข่าย(เพราะอาจไม่มีระบบป้องกัน) ในทุกครั้งที่เปิดเครื่องและก่อนใช้งานใดๆ ให้ใช้คำสั่ง arp -s เพื่อทำ static ค่า IP กับ MAC ของ Gateway ลงในตาราง ARP ของเครื่องคอมฯ
คำสั่ง คือ arp -s [IP ของ Gateway] [MAC Address ของ Gateway]
เราจะรู้ค่า IP และ MAC Address ของ Gateway ก็ด้วยคำสั่งดังนี้
1. ดูว่า IP ของ Gateway (default) คือเบอร์ใด
ลินุกซ์
ip route show
วินโดวส์
route -4 print2. arp -a เพื่อดูค่า IP กับ MAC คู่ที่ต้องการ
เช่น
IP ของ Gateway คือ 192.168.10.1 และ
MAC Address ของ Gateway คือ 00-13-64-2b-3d-a1
ก็ใช้คำสั่งว่า
arp -s 192.168.10.1 00-13-64-2b-3d-a1โดยที่เครื่องวินโดวส์รุ่นใหม่ๆ (8 ขึ้นไป) ให้คลิกขวาที่ปุ่ม Start เลือก “Command Prompt (Admin)” เพื่อเปิดหน้าต่าง Cmd ดังรูป
ส่วนเครื่องลินุกซ์ ให้เปิด Terminal แล้วใส่คำว่า sudo นำหน้าคำสั่งนั้นด้วย ดังรูป
เพียงเท่านี้ ท่านก็จะเล่นอินเทอร์เน็ตได้อย่างปลอดภัย ไม่มีมือที่มองไม่เห็นมาขโมย Username และ Password ของเรา
เพิ่มเติมให้อีกนิดนะครับ หากผู้ใช้ต้องการใช้โปรแกรมสำเร็จรูป สำหรับวินโดวส์ก็มีโปรแกรมชื่อ xarp ซึ่งจะคอยเช็คเรื่องนี้ให้เองตั้งแต่เปิดเครื่อง ส่วนใครใช้ smart phone ที่ใช้ android ก็จะมีโปรแกรมชื่อว่า droidsheep เพื่อคอยเช็คให้เช่นกันลองติดตั้งใช้ดูนะครับ
อ่านเพิ่มเติมได้นะ
http://www.computerhope.com/jargon/m/mitma.htm
http://incognitolab.com/2013/05/07/https-insecurity-part-2/