Category: Security

  • ติดตั้ง Let’s Encrypt Certificate สำหรับ SSL Sites บน IIS

    หลังจากที่พี่หนุ่ม คณกรณ์ หอศิริธรรม  ได้เขียนเรื่อง วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt ไปแล้วนั้น ก็จะมาถึงทางฝั่ง Windows กันบ้าง ซึ่งจะติดตั้งผ่านเครื่องมือ บน Command Line ครับ

    ตัวอย่างนี้จะเป็นวิธีการติดตั้งโดยใช้เครื่องมือที่ชื่อว่า WinACME ซึ่ง ดาวน์โหลดได้ที่นี่ (จริงๆ มีหลายตัวให้เลือกใช้ครับ ซึ่งส่วนใหญ่จะเป็นการพัฒนาผ่าน ACME API มีทั้งแบบเป็น Command Line, Power shell และเป็น GUI ครับ)

    หลังจากดาวน์โหลดไฟล์มาแล้ว ผม Extract ไปไว้ที่ C:\LetsEncryptSSL

    จากนั้นก็เปิด Command Prompt ด้วยสิทธิ Administrator
    (เปิดด้วยสิทธิ Administrator เพื่อให้มีการสร้าง Schedule Task ในการ Renew Cert. โดยอัตโนมัติครับ)

    จากนั้นทำการเรียกด้วยคำสั่ง letsencrypt จะพบกับเมนูดังภาพนี้ครับ

    ผมเลือกตอบตัว “n” จะพบกับเมนูให้เลือกด้านล่างนี้ (สำหรับผู้ที่มีความชำนาญ สามารถเลือก M เพื่อเปิด advanced option ได้ครับ)

    และเนื่องจากเครื่องที่แสดงอยู่นี้ เป็น multiple site และผมจะทำการติดตั้งลงไปเพียง 1 site ตามนี้ครับ

    เลือก site จากนั้นกด Enter จะพบว่าโปรแกรมเริ่มทำการ Generate SSL Cert. และ Assign ไปยัง Site ของเรา พร้อมทั้งกำหนด Schedule Task เรียบร้อยแล้ว

    ลองดูผลลัพธ์ใน II

    ลองเปิดเว็บดู ผ่าน Google Chrome ปรากฎว่ามีรูปกุญแจขึ้นแล้วและเป็น Cert. ของ Let’s Encrypt ตามที่ต้องการ

    กลับไปตรวจสอบ Schedule Task พบว่ามีการสร้าง Task เพื่อ Renew Cert. เอาไว้แล้ว

    จบปิ๊ง…

  • เตือนภัยอีเมลหลอกลวงว่าเป็นธนาคารกรุงไทย (Spam 2018-11-14)

    เช้านี้มีอีเมลหลอกลวงหลุดเข้ามา

    อ้างว่ามาจาก Krungthai Bank PCL ดังภาพ

    จะเห็นว่า From ก็หลอกว่ามาจาก info@ktb.co.th และในเนื้อหาก็มี Logo ของธนาคาร แถมมี Link  ที่วิ่งไป

    HTTPS://WWW.KTB.CO.TH/PERSONAL/DETAIL/VERIFY/172

    แต่ไม่ใช่ของจริง !!!

    เพราะ ถ้าท่านดูอีเมลฉบับนี้แบบ HTML จะเป็นการส่ง Link ไปที่ “เว็บไซต์หลอกลวง” หรือเรียกว่า Phishing Site 

    ไม่แนะนำให้คลิกตาม

    https://scrappse.tk/jssl/ktbnetbank/krungthai/index.html

    ซึ่งจะได้หน้าตาเหมือนกับของธนาคารจริง ๆ เพราะมันไปใช้ภาพจากเว็บไซต์จริง

    เว็บไซต์หลอกลวง !!!!

    และใช้ HTTPS และได้ “กุญแจ” ที่บอกว่า valid certificate อีกด้วย เพราะใช้ Let’s Encrypt

    ดังนั้นจึงแจ้งเตือนภัยมายังประชาคมให้รับทราบ ว่าปัจจุบันนี้

    • เห็น LINK ใน Email แล้วเป็น URL ชื่อของธนาคารจริง ก็ยังไม่พอ (กรณีนี้เป็นของ www.ktb.co.th)
    • คลิกไป เจอหน้าเว็บ หน้าตาน่าเชื่อถือ ก็ไม่พอ (ตามภาพ เลียนแบบเหมือนมาก)
    • ดูว่ามี “กุญแจ” ของ HTTPS ถูกต้องก็ไม่พอ (กรณีนี้ ได้กุญแจมาแล้ว แต่เป็นของเว็บไซต์หลอกลวง)
    • ดังนั้น ต้องดูด้วยว่า URL ที่ท่านเห็นด้านบน เป็นของธนาคารจริง ๆ หรือไม่ !!! (ในกรณีนี้ ไม่จริง เพราะเป็นของ https://scrappse.tk )

    ธนาคารกรุงไทย ได้แจ้งเตือนเรื่องนี้ไว้แล้วที่ 

    https://www.ktb.co.th/th/krungthai-update/announcement-detail/162

    ดังนั้น หากท่านได้รับ Email ในทำนองนี้ ให้ตรวจสอบกับธนาคาร หรือผู้เชี่ยวชาญก่อน เพราะคนร้ายจะหลอกให้ท่านกรอก Username/Password เพื่อเข้าสู่บัญชีธนาคารของท่านได้

  • วิธีตั้งค่า HTTPS บน Apache2 รุ่นที่สูงกว่า 2.4.8

    จากบทความ การแก้ไข Certificate สำหรับ Apache Web Server (Ubuntu 14.04 LTS) ตอนนี้ Apache2 รุ่นที่สูงกว่า 2.4.8 ประกาศให้ SSLCertificateChainFile นั้น obsolete หรือ จะไม่ใช้อีกต่อไป

    จากเดิม เราเคยใช้

    SSLCertificateFile /etc/apache2/cer/[cer-file-name].crt
    SSLCertificateKeyFile /etc/apache2/cer/[cer-file-name].key
    SSLCertificateChainFile /etc/apache2/cer/[cer-file-name].ca-bundle

    ต่อไปนี้ แนะนำให้ใช้แค่

    SSLCertificateFile /etc/apache2/cer/[cer-file-name]_combined.crt
    SSLCertificateKeyFile /etc/apache2/cer/[cer-file-name].key

    แล้ว 

    /etc/apache2/cer/[cer-file-name]_combined.crt

    มาจากไหน ??? มันมากจากการเอาไฟล์ [cer-file-name].crt แล้วต่อท้ายด้วยไฟล์ [cer-file-name].ca-bundle ด้วยคำสั่ง

    cat [cer-file-name].crt [cer-file-name].ca-bundle > [cer-file-name]_combined.crt

    เช่น

    cat in_psu.crt intermediate_ca.crt > in_psu_combined.crt

    เป็นต้น เสร็จแล้ว ก็ Restart Apache — จบแค่นี้ ใช้งานได้

    TL;DR

    Q: มีไฟล์ .crt เต็มไปหมด จะรู้ได้ไงว่า อันไหนคือ Certificate ของอะไร อย่างไร

    A: สมมุติ Certificate ของ Server ที่ได้มา ชื่อ server.crt ต้องใช้คำสั่งนี้ ดูรายละเอียด

    openssl x509 -in server.crt -text

    ผลที่ได้ จะประมาณนี้

    สิ่งสำคัญที่ควรดู ในที่นี้คือ Issuer จะเห็นว่า CN หรือ common name คือ AlphaSSL CA – SHA256 – G2  และบรรทัด Subject จะบอกว่า Domain (*.xxxxx.psu.ac.th) ที่ลงทะเบียนไว้ อยู่ภายใต้ “AlphaSSL CA” อีกที

    ซึ่ง ถ้าไปดูใน /etc/ssl/certs ก็จะเห็นว่า ไม่มี CA Certificate ของ “AlphaSSL CA” นี้อยู่ แต่จะมีของ “GlobalSign Root CA” อยู่

    ทำไมเป็นอย่างนั้น ??? เพราะ CA เค้าต้องรักษา Root Certificate ของตนเองไว้ให้ดี จึงออกสิ่งที่เรียกว่า Intermediate CA ขึ้นมาอีกชั้นหนึ่ง แล้วแจกจ่ายให้กับผู้ที่ซื้อ Certificate ของเค้าอีกชั้นหนึ่ง

    คราวนี้ มาลองดูข้อมูลใน intermediate_ca.crt ว่ามีข้อมูลเป็นอย่างไร ด้วยคำสั่ง

    openssl x509 -in intermediate_ca.crt -text

    จะเห็นได้ว่า Issuer เป็น “GlobalSign Root CA” และ Subject เป็น “AlphaSSL CA” 

    จากเดิม Apache2 รุ่น < 2.4.8 ให้ใช้ Directive  “SSLCertificateChainFile” ในการกำหนด Intermediate CA ได้ แต่หลังจากนั้น ก็ให้ Obsolete เพราะ สามารถเอา 2 ไฟล์มาต่อกันได้ตามที่เขียนไว้ข้างต้น

    ในทางปฏิบัติ จริง ๆ แล้ว ก็ยังใช้ได้อยู่ แต่เป็น Obsolete ทางที่ดี ก็ควรจะปรับปรุงตามที่แนะนำไว้จะดีกว่า

    และ ถ้าใช้งานแค่ SSLCertificateFile (แบบที่มีแต่ Server Certificate) และ SSLCertificateKey (Server Private Key) นั้น เมื่อ Restart apache2 แล้ว ทดสอบใช้งานกับ Web Browser ส่วนใหญ่ จะใช้งานได้ ไม่ต้องอ้าง Intermediate CA ก็ได้ *** เพราะใน Web Browser ได้ติดตั้ง Intermediate CA พวกนี้ไว้เป็นส่วนใหญ่แล้ *** แต่ถ้าลองเรียกผ่าน curl หรือบริการอื่น ๆ เช่น จาก Google DialogFlow Fulfillment ก็จะเรียกไม่ผ่าน เพราะในระบบเค้าไม่ได้ใส่ Intermediate CA ไว้นั่นเอง

    การที่ Combined ทั้ง Server Certificate และ Intermediate CA ไว้ในไฟล์เดียวกัน ทำให้มั่นใจได้ว่า สามารถใช้งาน https ได้จากทุก Platform นั่นเอง

    หวังว่าจะเป็นประโยชน์ครับ

  • Hardening your HTTP response headers

    Introduction

    HTTP Response headers คือ ค่าของสตริงที่ส่งกลับมาจากเซิร์ฟเวอร์ที่มีเนื้อหาตามที่ถูกร้องขอ โดยปกติจะใช้บอกข้อมูลทางเทคนิค เช่น เบราเซอร์ควรแคชเนื้อหา, ประเภทของเนื้อหาคืออะไร, ซอฟต์แวร์ที่ทำงานบนเซิร์ฟเวอร์ และอื่น ๆ   HTTP Response headers ถูกใช้เพื่อส่งต่อนโยบายความปลอดภัยไปยังเบราเซอร์  ทำให้การเปิดเว็บไซต์ของเรามีความปลอดภัยเพิ่มมากขึ้น

    Header ของ Apache2 ที่ควรต้องใส่เพื่อเพิ่มความปลอดภัยมีดังนี้

    Content Security Policy

    Header เรื่อง Content Security Policy (CSP) ช่วยให้กำหนดต้นทางของเนื้อหาที่อนุญาตสำหรับเว็บไซต์ โดยการจำกัดเนื้อหาที่เบราเซอร์สามารถโหลดได้ ได้แก่ js และ css

    สามารถสร้าง CSP ได้จาก https://report-uri.com/home/generate ทั้งนี้ต้องทดสอบการทำงานทุกครั้งเนื่องจาก การกำหนดค่าบางอย่างอาจทำให้เว็บไซต์ ทำงานไม่ถูกต้อง ดูรายละเอียดเพิ่มเติมได้ที่ https://scotthelme.co.uk/content-security-policy-an-introduction/ สำหรับ Apache2 เพิ่ม Header ต่อไปนี้ ในแฟ้มของไซต์ที่ต้องการ เช่น /etc/apache2/site-enabled/lsc-ssl.conf  หรือแฟ้ม .htaccess ในไซต์ที่ต้องการ (ซึ่งแนะนำว่าใช้ .htaccess จะได้ไม่ต้องรีสตาร์ทเซิร์ฟเวอร์) เพื่อเปิดการใช้งาน CSP


    Header always set Content-Security-Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval'"

    HTTP Strict Transport Security (HSTS)

    เว็บไซต์ ต้องมีการตั้งค่าให้ redirect จาก HTTP ไปยัง HTTPS เสมอ และ HSTS จะเป็น Header ที่กำหนดให้เบราเซอร์จำสถานะของ HTTPS เอาไว้แม้ว่าจะเป็นการเปิดจาก bookmark ที่เป็น HTTP ก็ตาม ก็จะถูกบังคับให้เป็น HTTPS รายละเอียดเพิ่มเติม https://scotthelme.co.uk/hsts-the-missing-link-in-tls/ เช่น เมื่อเปิด http://licensing.psu.ac.th ก็จะถูก redirect ไป https://licensing.psu.ac.th

    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

    X-Frame-Options

    X-Frame-Options หรือ XFO header จะช่วยป้องกันผู้ใช้จากการโจมตีแบบ clickjacking ที่ผู้บุกรุกสามารถโหลด iframe จากไซต์ของเขาบนไซต์ของเราได้ ซึ่งทำให้ผู้ใช้งานเว็บไซต์ของเราเชื่อว่าไม่อันตราย!! รายละเอียดเพิ่มเติม https://www.troyhunt.com/clickjack-attack-hidden-threat-right-in/

    Header always set X-Frame-Options "SAMEORIGIN"

    X-Xss-Protection

    Header นี้ใช้กำหนดค่าการป้องกัน XSS ที่มีอยู่บนเบราเซอร์ต่างๆ โดยการตั้งค่าจะมี 0 คือ ปิดการทำงาน 1 คือเปิดการทำงาน และ 1; mode=block ซึ่งจะกำหนดให้เบราเซอร์ทำการบล็อคการกระทำใดๆ ก็ตามที่มากกว่าการล้างข้อมูลสคริปต์

    Header always set X-Xss-Protection "1; mode=block"

    X-Content-Type-Options

    X-Content-Type-Options ใช้ในการป้องกันการโจมตีผ่านทางช่องโหว่ MIME sniffing ซึ่งจะเกิดเมื่อ เว็บไซต์อนุญาตให้ผู้ใช้อัพโหลดเนื้อหาไปยังเซิร์ฟเวอร์ ซึ่งผู้ใช้อาจเปลี่ยนหรือซ่อนไฟล์อันตราย แล้วอัพโหลดขึ้นเซิร์ฟเวอร์ รายละเอียดเพิ่มเติม https://www.keycdn.com/support/x-content-type-options/

    Header always set X-Content-Type-Options "nosniff"

    เบื้องต้นแนะนำเท่านี้ก่อนครับ พิเศษ!! สำหรับผู้ใช้งาน wordpress มีปลั๊กอินชื่อ HTTP Headers ใช่ตั้งค่า Header ต่างๆ ที่เล่ามาข้างต้นได้อย่างสบายใจหายห่วง!!! ไม่ต้องแก้ .htaccess ไม่ต้องแก้ config ใด ๆ  เมื่อติดตั้งเสร็จแล้วจะพบว่ามี Header อีกมากที่สามารถตั้งค่าเพิ่มเติมได้ ซึ่งจะกล่าวอีกในครั้งต่อ ๆ ไป

    ต้นฉบับ

    https://scotthelme.co.uk/hardening-your-http-response-headers/

    มีวิธีการเซ็ตสำหรับ Nginx และ IIS สามารถดูเพิ่มเติมได้ครับ
    อย่าลืม!!

    ตรวจ HTTP Response ได้ที่ https://securityheaders.com

    จบขอให้สนุก

  • อย่าเชื่อเครื่องมือมากเกินไป …

    เมื่อเดือนมีนาคม 2561 ผมได้ทำการทดสอบเครื่องมือเจาะระบบ “N”  (ใช้ทดสอบว่าระบบเป้าหมายมีช่องโหว่ใดให้โจมตีบ้าง) ภายใต้ภาระกิจ “Honeypot” เพื่อทดสอบว่า เครื่องมือดังกล่าว สามารถรับรองความปลอดภัยของระบบปฏิบัติการของเครื่องเซิร์ฟเวอร์ ก่อนที่จะอนุญาตให้เข้าถึงได้จากอินเตอร์เน็ตได้หรือไม่

    *** การทดลองนี้อยู่ในสภาวะควบคุมที่รัดกุม เป็นระบบที่สร้างขึ้นมา แยกออกจากระบบอื่นที่อาจจะได้รับผลกระทบ และเป็นการทดลองเพื่อวัดความสามารถของเครื่องมือ ไม่ได้มุ่งโจมตีผู้ใด หรือระบบใด ***

    วิธีการทดสอบ

    จัดให้มีเครื่องทดสอบ ชื่อ honeypot.in.psu.ac.th อยู่บน VM และใช้เครื่องมือเจาะระบบ “N” ตรวจสอบ 2 ครั้ง โดยครั้งแรก (Baseline 01) เป็นการติดตั้งระบบปฏิบัติการ Ubuntu 16.04 LTS แบบ Default และ Update ให้เป็นปัจจุบันที่สุด แล้วรีบแจ้งให้ “N” ตรวจสอบ ครั้งที่ 2 (Baseline 02) ทำการติดตั้ง Web Server, PHP, MySQL และติดตั้งช่องโหว่อย่างง่ายที่พัฒนาขึ้นเอง (https://github.com/nagarindkx/honeypot) ลงไป โดยภาพรวมดังภาพที่ 1 แล้วรีบแจ้งให้ “N” ตรวจสอบ

    ภาพที่1: ภาพรวมของ Honeypot

    honeypot.in.psu.ac.th ประกอบด้วยโครงสร้างไฟล์ ดังภาพที่ 2

    ภาพที่ 2: โครงสร้างไฟล์ของ honeypot

    เมื่อคลิก Login with SQL Injection Vulnerable  จะได้ภาพที่ 3 ซึ่งจะส่งไปที่ไฟล์ badform.html โดยในฟอร์มนี้จะมีช่องโหว่ SQL Injection ทำให้สามารถเข้าเป็น admin ได้โดยลองใส่ username/password ดังนี้

    ภาพที่ 3: http://honeypot.in.psu.ac.th/badform.html

    ซึ่งจะได้ผลว่า สามารถเข้าเป็น admin ได้โดยไม่ต้องทราบรหัสผ่านที่แท้จริง แต่อาศัยการเขียน SQL Statement ที่ไม่รัดกุม และไม่ตรวจสอบ Input ก่อน ดังภาพที่ 4

    ภาพที่ 4: ช่องโหว่ SQL Injection

    เมื่อคลิก  Simple Non Persistent XSS   จะได้ภาพที่ 5  ซึ่งจะส่งไปยัง simple.php โดยจะเห็นได้ว่า สามารถใส่ชื่อ นามสกุล ลงไปใน URL ได้เลย ผ่านตัวแปร name  (ต้องลองใช้กับ FireFox ถ้าเป็น Google Chrome จะมี XSS Auditor ไม่ได้รับผลกระทบ)

    ภาพที่ 5: ช่องโหว่ Non Persistent XSS

     

    ช่องโหว่นี้ ทำให้ Hacker นำเว็บไซต์นี้ไป ดักเอา Cookie Session ของผู้อื่น หรือ Session HiJacking ดังภาพที่ 6
    ด้วย URL นี้
    http://honeypot.in.psu.ac.th/simple.php?name=%3Cscript%3Ealert(escape(document.cookie))%3C/script%3E

    ภาพที่ 6: Session HiJacking

    หรือ เปลี่ยนเปลี่ยน URL ที่ “Click to Download” ไห้ยังเว็บไซต์ที่ต้องการได้ เช่นเป็น hacked.com เป็นต้น ดังภาพที่ 7 ด้วย URL นี้
    http://honeypot.in.psu.ac.th/simple.php?name=%3Cscript%3Ewindow.onload=function()%20{%20var%20link=document.getElementsByTagName(%22a%22);%20link[0].href=%27http://hacked.com%27}%3C/script%3E

    ภาพที่ 7: HTML Injection

    เมื่อคลิก Login to Test Permanent XSS จะได้ภาพที่ 8  ซึ่งจะส่งไปยัง goodlogin.php

    ภาพที่ 8:ช่องโหว่ Persistent XSS

    ซึ่ง เป็น Form ที่ป้องกัน SQL Injection และ ไม่ยอมรับ username/password ว่าง หากไม่ทราบรหัสผ่านจริงๆ ก็จะเข้าไม่ได้ ดังภาพที่ 9

    ภาพที่ 9: กรณี Login ไม่สำเร็จ

    หาก Login เป็น user1 สำเร็จ จะสามารถเปลี่ยน Display Name ได้ ดังภาพที่ 10
    ทดลองด้วย

    username: user1
    password: user1123**

    ภาพที่ 10: user1 เมื่อ Login สำเร็จ สามารถเปลี่ยน Display Name ได้

    หาก user1 ต้องการดัก Session HiJack จาก Admin สามารถทำได้โดย แก้ Display Name ดังนี้

    <a href=”#” onclick=alert(escape(document.cookie))>User1</a>

    เมื่อกดปุ่ม Update จะได้ภาพที่ 11

    ภาพที่ 11: user1 วาง Session HiJacking สำเร็จ

    เมื่อ admin เข้ามาในระบบ ด้วย

    username: admin
    password: admin123**

    จะได้ภาพที่ 12

    ภาพที่ 12: admin จะมองเห็นรายชื่อ users ทั้งหมด ในที่จะเห็น user1 ที่มี display name ของตนเองเป็น Link

    เมื่อ admin ติดกับดัก ลองคลิก link ที่เขียนโดย user1 ก็จะเปิดเผย (และสามารถส่ง session กลับไปให้ user1 ได้หลายวิธี) ก็จะได้ผลดังภาพที่ 13

    ภาพที่ 13: แสดง Session ของ Admin ซึ่งในช่วงเวลานั้นๆ user1 สามารถเข้ามาเป็น admin ได้โดยไม่ต้องทราบรหัสผ่านของ admin

    *** และ มี Backdoor ที่อยู่ใน /uploads/ ไฟล์ image.php ที่ ไม่ได้แสดงใน index.php หน้าแรก ซึ่งจะสามารถส่งคำสั่งเข้าไปให้ Execute ได้ เช่น ls -l ดังภาพที่ 14 หรือ แม้แต่ wget ไฟล์จากภายนอกมาไว้ในนี้ได้ เพื่อสร้าง Backdoor ในที่ต่างๆ ซึ่งเรียกว่า Remote Code Execution

    ภาพที่ 14: Backdoor ใน /uploads/image.php ที่ไม่ได้อยู่ใน index.php หน้าแรกของ honeypot

    ผลการทดสอบ

    จากผลการทดสอบด้วย “N” เมื่อ Mon, 12 Mar 2018 13:57:16 ICT ผลดังภาพที่ 15

    ภาพที่ 15: แสดงรายการช่องโหว่ “N”  ตรวจพบ ประกอบด้วย 1 High, 5 Medium Risk

    ผลการทดสอบสามารถสรุปเป็นตารางได้ ดังตารางที่ 1

    ตารางที่ 1: แสดงผลเปรียบเทียบสิ่งที่ honeypot วางไว้ กับสิ่งที่ “N” ตรวจพบ ตามตำแหน่งไฟล์ต่างๆ

    ตำแหน่งไฟล์Honeypot วาง“N” ตรวจพบ
    badform.htmlSQL Injectionยอมรับได้
    – Web Application Potentially Vulnerable to Clickjacking (เป็น Form ที่ยอมให้เว็บอื่นเอาไปใส่ใน iframe ได้)
    login.phpJavaScript Injectionเป็น False Positive
    เพราะ Login Fail

    – CGI Generic SQL Injection (blind)
    – CGI Generic XSS (quick test)
    – CGI Generic Cookie Injection Scripting
    – CGI Generic XSS (comprehensive test)
    – CGI Generic HTML Injections (quick test)
    ยอมรับได้
    – Web Application Potentially Vulnerable to Clickjacking (เป็น Form ที่ยอมให้เว็บอื่นเอาไปใส่ใน iframe ได้)


    ไม่เข้าไปตรวจ JavaScript Injection เพราะไม่ได้ตรวจสอบ SQL Injection จากหน้า badform.html
    simple.phpNon-Persistent XSSยอมรับได้
    – CGI Generic XSS (quick test)
    – CGI Generic Cookie Injection Scripting
    – CGI Generic XSS (comprehensive test)
    – CGI Generic HTML Injections (quick test)
    goodlogin.phpเป็น False Positive เพราะ Login Fail
    – CGI Generic SQL Injection (blind)

    ยอมรับได้
    – Web Application Potentially Vulnerable to Clickjacking (เป็น Form ที่ยอมให้เว็บอื่นเอาไปใส่ใน iframe ได้)
    home.phpPersistent XSSไม่เข้าไปตรวจ เพราะไม่สามารถเดารหัสผ่านที่ถูกต้องได้
    /uploads/image.phpBackdoor (Remote Code Execution)ไม่เข้าไปตรวจ เพราะไม่มี Link จากหน้าแรก

    สรุปผลการทดสอบ

    1. น่าตกใจ ที่ “N” ไม่สามารถตรวจพบ SQL Injection ได้ในหน้า badform.html
    2. “N” ตรวจพบ XSS ในหลายรูปแบบในหน้า simple.php ซึ่งนับว่าดี
    3. “N” ตรวจสอบได้เฉพาะ URL ที่สามารถติดตามไปจากหน้าแรกได้เท่านั้น จะเห็นได้ว่า ไม่สาามารถเข้าไปตรวจสอบ home.php ซึ่งต้องเดารหัสผ่านให้ได้ก่อน และ /uploads/image.php ซึ่งไม่มีการเรียกจากหน้าแรก ซึ่งโดยทางปฏิบัติ Hacker เมื่อเจาะเข้ามาวางไฟล์ได้แล้ว จะเอา URL นั้นไปโพสต์ประกาศในกลุ่ม หรือ บนหน้าเว็บไซต์อื่นๆ เช่น zone-h.org เป็นต้น ทำให้ เราตรวจด้วย “N” ยังไงก็ไม่เจอ แต่ Google ตรวจเจอเพราะไปตรวจสอบเว็บไซต์ของกลุ่ม Hacker อีกที
    4. “N” ทำงานเป็นลำดับ ดังนั้น เมื่อ ไม่ตรวจพบ SQL Injection ในหน้า badform.html ก็ไม่ตรวจ JavaScript Injection ในหน้า login.php
    5. “N” เตือนเรื่องสามารถนำ Form ไปอยู่ใน iframe ของเว็บไซต์อื่นๆได้ ซึ่งนับว่าดี

    อภิปรายผลการทดสอบ

    การมีเครื่องมือในการเจาะระบบอย่าง “N” เป็นเรื่องดี ทำให้สามารถลดงานของผู้ดูแลระบบได้ อย่างน้อยก็เรื่องการตรวจสอบ Version ของ OS, Software ที่ใช้ ว่าได้รับผลกระทบต่อช่องโหว่ที่สำคัญ ซึ่งจะประกาศเป็นเลข CVE เอาไว้แล้ว ทำให้ตรวจสอบภาพรวมๆได้ และตรวจสอบได้ตาม Signature ที่บริษัทเค้ากำหนดมาเท่านั้น

    อย่างไรก็ตาม ในทางปฏบัติ “N” หรือ เครื่องมืออื่นๆที่ทำงานแบบ Outside-In อย่างนี้ จะไม่มีทางตรวจสอบ ช่องโหว่ ที่อยู่ “ภายใน” เครื่องได้ หากแต่ การตรวจสอบ Log File และ การตรวจสอบเครื่องเซิร์ฟเวอร์จากภายใน จึงเป็นสิ่งจำเป็นอย่างยิ่ง นอกจากจะทำให้เราตรวจพบช่องโหว่ต่างๆก่อนจะโดนรายงาน แล้ว ยังเป็น การสะสมความรู้ซึ่งสำคัญยิ่่งกว่า เพราะเราจะได้ทำการ ป้องกัน ก่อนที่จะต้องมาตามแก้ไข อย่างเช่นในปัจจุบัน

  • วิธีเอา Boxbe ออกไปจากชีวิตของคุณ

    Boxbe เป็น Free Service ที่พยายามจะจัดการกับ Spam โดยอยู่บนสมมุติฐานว่า ผู้ที่ไม่อยู่ใน Contact ของเรา หรือ อยู่ใน Guest List นั้น มีแนวโน้มจะเป็น Spam เมื่อมีการส่ง email จากกลุ่มนี้ ก็จะถูกเอาไปอยู่ในกล่องที่เป็น Wait List จึงทำให้กล่อง Inbox ซึ่งเราจะอ่าน email เป็นประจำนั้น มาจากคนที่อยู่ใน Contact เท่านั้น

     

    โดยความตั้งใจ ดูดี แต่ …

     

    คนใน Contact ของเรา เป็น Subset ของ email universe ที่เราจะต้องติดต่อด้วย สำหรับคนที่ไม่ได้ทำธุรกิจติดต่อกับคนที่ไม่เคยรู้จักมาก่อน หรือติดต่อเฉพาะคนในองค์กร ก็พอจะไปได้ แต่ในความเป็นจริง ไม่ใช่ทุกคนที่ต้องการอย่างนั้น

    อีกปัญหาหนึ่งคือ ก่อนหน้านี้ เมื่อมีคนที่ไม่ได้อยู่ใน Contact ของเราติดต่อมา สิ่งที่ Boxbe ทำคือ ส่ง email ตอบกลับไปยังผู้ส่ง ว่า “email ของคุณถูกส่งไปอยู่ใน Wait List” แล้วก็อธิบายด้วยข้อความที่ค่อนข้างสับสน

    จากนั้น ผู้ส่งที่ได้รับ email ตอบกลับมานั้น ก็อาจจะไม่เข้าใจ แล้วเหลือบไปเห็นปุ่ม “สีน้ำเงิน”  อะไรสักอย่าง แล้วคิดว่า ปุ่มนี้คือปุ่มที่ทำให้ email ของตน ส่งไปยังผู้รับได้ ก็เลยคลิก

     

    เมื่อคลิก สิ่งที่เกิดขึ้นคือ Boxbe จะพาไปยังหน้า Sign-Up Boxbe (จริง ๆ แล้ว ปุ่มสีน้ำเงิน นั่นก็บอกแล้วว่า เป็นการ Sign-Up) แล้วก็ของ Permission ในการ “Read, send, delete and manage your email”

    และแน่นอน ผู้ใช้ก็กด Allow เป็นธรรมดา หลังจากนั้น …. คุณก็เป็นสมาชิกของ Boxbe ไปโดยไม่รู้ตัว และเกิดปฏิกิริยาลูกโซ่ตามมา คือ คนที่ส่ง email ถึงคุณก็จะได้รับข้อความตอบกลับจาก Boxbe และ คนเหล่านั้นก็ทำอาการเดียวกับคุณ 5555 เข้าใจตรงกันนะ

     

    เอาเป็นว่า มาดูวิธีเอา Boxbe ออกจากชีวิตดีกว่า

    1. อันดับแรก ให้ไป Delete Boxbe Account ก่อน โดยไปที่ https://www.boxbe.com/ แล้วคลิกที่ Sign In หรือ ถ้า Login ค้างอยู่ให้คลิกที่ Dashboard
    2. จากนั้น คลิก Disable Account
    3. แล้วพิมพ์คำว่า Yes แล้วคลิกปุ่ม Close Forever

    ยัง …. ไม่ยังไม่ตาย เพราะตอนที่ Sign Up นั้น เราไปอนุญาตให้ Boxbe เชื่อมต่อกับ Account ของเรา ในตัวอย่างนี้ เป็นกรณีของ Gmail

    1. ไปที่ https://myaccount.google.com/permissions เราจะเจอ Boxbe นั่งยิ้มหวานอยู่
    2.  บรรจงคลิก Boxbe แล้วคลิก Revoke Access
    3. แล้วก็คลิก OK

     

    จบจ้า

     

  • ระวังการใช้งานบนเครื่องที่ยังเป็น Windows XP จะถูกติดตั้ง Key Logger ระบาดในมหาวิทยาลัย

    ช่วง 2-3 วันนี้ ระบบ PSU Webmail ตรวจพบว่า มีบัญชีผู้ใช้อย่างน้อย 3 ราย ถูกใช้งานจากสิงคโปร์ และตุรกี  แล้วส่ง email ออกไปเป็นจำนวนมาก ระบบตรวจจับได้ จึงทำการ Force Reset Password ของระบบ PSU Email บัญชีผู้ใช้ดังกล่าวอัตโนมัติ

    IP ที่ใช้งาน PSU Webmail ดังภาพด้านบน ตรวจสอบแล้ว พบว่า มาจาก

    • 202.189.89.116 จากเครือข่ายของ Twentieth Century Fox ที่ ตุรกี
    • 206.189.89.212 จากเครือข่ายของ Twentieth Century Fox ที่ สิงคโปร์
    • 128.199.202.189 จากเครือข่ายของ DigitalOcean ที่สิงคโปร์

    ส่งอีเมลจำนวน 4 ฉบับ ถึง 800 emails ภายใน 1 นาที ดังภาพ

    ในการตรวจสอบเชิงลึกต่อไป พบว่า IP  206.189.89.116 ยังพยายาม Login ไปยังบัญชีผู้ใช้ 2 ใน 3 ข้างต้นอีกด้วย จึงสันนิษฐาน ว่า น่าจะเป็นคนร้ายกลุ่มเดียวกัน เพียงแต่สลับแหล่งที่เข้าใช้ PSU Webmail ไปมา

    จากการลงพื้นที่ ไปดูที่เครื่องผู้ใช้ พบว่า มีพฤติกรรมที่เหมือนกัน คือ

    1. ยืนยันว่า ไม่เคยคลิกเปิด email ที่ต้องสงสัยจริง ๆ (เอ่อ ใครก็จะพูดเช่นนั้น เอาว่าไม่มีหลักฐาน ก็ไม่สามารถสรุปได้ว่าไม่จริง)
    2. *** มีการใช้คอมพิวเตอร์ส่วนกลาง *** ซึ่งหนึ่งในนั้น จะเป็น Windows XP และมีโปรแกรมเถื่อนเป็นจำนวนมาก

    จึงขอตั้งข้อสังเกตว่า ถ้าผู้ใช้ยืนยันว่า ไม่ได้คลิก email หลอกลวงแน่ ๆ และยืนยันว่า ไม่ถูกหลอกแน่ ๆ เป็นจริง ก็น่าจะเป็นเพราะพฤติกรรมการใช้คอมพิวเตอร์ส่วนกลาง ที่เป็น Windows XP ซึ่งเป็นไปได้อีกว่า คงจะมี Key Logger หรือ โปรแกรมดักจับการพิมพ์บน Keyboard แล้วส่งไปให้คนร้าย

     

    ในภาพใหญ่ของมหาวิทยาลัยสงขลานครินทร์ ยังมีเครื่องรุ่นเก่าที่ยังใช้ Windows XP อยู่ แถมยังใช้โปรแกรมเถื่อนที่อาจจะติดมาจากร้าน หรือ คนในออฟฟิซเองเอามาติดตั้งอยู่ หากสามารถ Enforce ให้เปลี่ยนได้ น่าจะลดปัญหาพวกนี้ได้

     

    กำลังหาหลักฐานที่หนักแน่นพอ เพื่อนำเสนอผู้ใหญ่ต่อไปครับ

     

  • CIS Control v7

    Cybersecurity Best Practices
    CIS Controls and CIS Benchmarks are global industry best practices endorsed by leading IT security vendors and governing bodies.

    CIS Controls : Secure Your Organization
    IT security leaders use CIS Controls to quickly establish the protections providing the highest payoff in their organizations. They guide you through a series of 20 foundational and advanced cybersecurity actions, where the most common attacks can be eliminated.

    CIS Benchmarks : Secure Your Systems & Platforms
    Proven guidelines will enable you to safeguard operating systems, software and networks that are most vulnerable to cyber attacks. They are continuously verified by a volunteer IT community to combat evolving cybersecurity challenges.

    Basic CIS Controls
    1 Inventory and Control of Hardware Assets (บันทึกรายการและควบคุมทรัพย์สินที่เป็นฮาร์ดแวร์)
    2 Inventory and Control of Software Assets (บันทึกรายการและควบคุมทรัพย์สินที่เป็นซอฟต์แวร์)
    3 Continuous Vulnerability Management (จัดการกับช่องโหว่อย่างต่อเนื่อง)
    4 Controlled Use of Administrative Privileges (ควบคุมการใช้สิทธิพิเศษในการบริหารระบบ)
    5 Secure Configuration for Hardware and Software on Mobile Devices, Laptops, Workstations and Servers
    (กำหนดค่าที่ปลอดภัยให้กับฮาร์ดแวร์และซอฟท์แวร์ บนอุปกรณ์พกพา แลปทอป เวิร์กสเตชั่น และเซิร์ฟเวอร์)
    6 Maintenance, Monitoring and Analysis of Audit Logs (บำรุงรักษา เฝ้าสังเกต และวิเคราะห์ ข้อมูลล๊อกการใช้งานต่างๆ)

    Foundational CIS Controls
    7 Email and Web Browser Protections (ป้องกันอีเมล และเว็บเบราว์เซอร์)
    8 Malware Defenses (ป้องกันมัลแวร์)
    9 Limitation and Control of Network Ports, Protocols, and Services (จำกัดและควบคุม พอร์ต โปรโตคอล และบริการต่างๆ บนเครือข่าย)
    10 Data Recovery Capabilities (ต้องกู้คืนข้อมูลกลับมาได้)
    11 Secure Configuration for Network Devices, such as Firewalls, Routers, and Switches
    (กำหนดค่าที่ปลอดภัยให้กับอุปกรณ์เครือข่ายต่างๆ เช่นไฟร์วอลล์ เราเตอร์ และสวิตช์)
    12 Boundary Defense (ป้องกันเขตเครือข่าย)
    13 Data Protection (ปกป้องข้อมูล)
    14 Controlled Access Based on the Need to Know (ควบคุมให้เข้าถึงได้เฉพาะสิ่งจำเป็น)
    15 Wireless Access Control (ควบคุมการเข้าถึงผ่านทางระบบไร้สาย)
    16 Account Monitoring and Control (เฝ้าสังเกตและควบคุม บัญชีผู้ใช้)

    Organizational CIS Controls
    17 Implement a Security Awareness and Training Program (ดำเนินการฝึกอบรมสร้างความตระหนักรู้ด้านความปลอดภัย)
    18 Application Software Security (จัดการความปลอดภัยของซอฟท์แวร์โปรแกรมประยุกต์)
    19 Incident Response and Management (จัดการและตอบสนองต่อเหตุการณ์ที่ไม่ปลอดภัย)
    20 Penetration Tests and Red Team Exercises (ทดสอบเจาะส่วนต่างๆ และฝึกซ้อมบุกรุกทั้งระบบ)

     

    CIS Control v7 แปลไทยบางส่วน
    https://www.cc.psu.ac.th/pdf/CIS_Control_v7_1May2018.pdf

  • จดหมายลอกลวง 23/4/61

    ช่วง ศุกร์ที่ 20 ถึง เช้าวันนี้ จันทร์ที่ 23 เมษายน 2561 พบว่า มีผู้ใช้หลายท่านได้รับ email ลักษณะประมาณนี้

    แล้วมีคำถามว่า เป็นของมหาวิทยาลัยส่งจริงหรือไม่

    ตอบก่อนเลยว่า “ไม่ใช่อีเมลของทางมหาวิทยาลัย” เป็นจดหมายหลอกลวง

    ทางระบบของมหาวิทยาลัยจะไม่ส่ง email แจ้งเตือนใดๆอย่างนี้

    ข้อสังเกต

    1. ลิงค์ใน email ที่ให้คลิก จะเป็นอะไรที่ไม่ใช่ psu.ac.th (ทราบไม๊ครับ ? ว่าโดเมนเนมของมหาวิทยาลัยสงขลานครินทร์ คือ psu.ac.th ???)

      ถ้าเป็นเว็บไซต์ที่ถูกต้อง ของมหาวิทยาลัย จะต้องปรากฏ รูปกุญแจเขียว และ โดเมนเป็นของมหาวิทยาลัยสงขลานครินทร์ ซึ่งใช้โดเมนเนม psu.ac.th ดังภาพ

    2. ผู้ส่ง (From) ในทางปฏิบัติ จะ “ตั้งค่า” ให้เป็นใครก็ได้ แต่ในที่นี้ เค้าจะไม่สามารถตั้งค่าเป็น @psu.ac.th ได้ เพราะเราได้ทำการจดทะเบียน DomainKeys Identified Mail (DKIM) และทำตามกระบวนการ Sender Policy Framework (SPF) แล้ว ซึ่งจะกำหนดว่า ต้องเป็น IP ที่ได้รับอนุญาตเท่านั้น จึงจะบอกว่า ส่งจาก @psu.ac.th ได้เท่านั้น …. แม้จะส่งได้และเข้ามาใน Inbox ของท่าน แต่อาจจะเป็นบน gmail.com, hotmail.com, yahoo.com ก็ตาม ก็จะถูกระบุว่า ไม่สามารถเชื่อถือได้

      ในที่นี้ จึงเลี่ยงไปใช้ @itservice.psu.ac.th ซึ่ง ก็ไม่มีอยู่จริงเช่นกัน

     

    หากหลงเชื่อ คลิก Link แล้วกรอกข้อมูลไปแล้วควรทำอย่างไร?

    ให้ทำการตั้งรหัสผ่าน PSU Email ใหม่ที่ ตามวิธีการนี้เท่านั้น

    http://gafe.psu.ac.th/support/1/1

     

    และ เว็บไซต์ที่จะทำการ ตั้งรหัสผ่าน PSU Email ได้ ต้องเป็นเว็บไซต์นี้เท่านั้น ซึ่งต้องยืนยันตัวจริง ด้วย PSU Passport อีกชั้นหนึ่งด้วย

    https://webmail.psu.ac.th/src/resetpassword.html

     

    ลืม PSU Passport / ไม่แน่ใจว่า PSU Passport คืออะไร ทำอย่างไร ???

    1. บุคลากรมหาวิทยาลัยสงขลานครินทร์ >>> ติดต่อการเจ้าหน้าที่ คณะ หน่วยงานของท่าน
    2. นักศึกษา >>> ติดต่อ ศูนย์คอมพิวเตอร์ ม.สงขลานครินทร์ วิทยาเขตหาดใหญ่ (email สอบถาม: passport@psu.ac.th)
    3. บุคลากรที่เกษียณ/ไม่ได้ทำงานที่มหาวิทยาลัยแล้ว >>> มหาวิทยาลัยยังคง email ของท่านไว้เสมอ สามารถใช้ต่อไปได้ แม้ เกษียณ/ลาออก ก็ตาม แต่ในกรณีที่ท่านต้องการเปลี่ยนรหัสผ่าน PSU Email แล้ว ไม่สามารถใช้งาน PSU Passport ได้แล้ว ให้มาติดต่อด้วยตนเองที่ศูนย์คอมพิวเตอร์ มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตหาดใหญ่เท่านั้น