Author: kanakorn.h

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

    ต่อจาก “วิธีตรวจสอบเว็บไซต์ที่โดน Hack #1” และ “วิธีตรวจสอบเว็บไซต์ที่โดน Hack #2

    จากการใช้งาน CMS ยอดนิยม อย่าง Joomla อย่างแพร่หลาย ซึ่งเป็นเรื่องง่ายในการพัฒนาเว็บไซต์ เพราะผู้ใช้ สามารถสร้างเนื้อหาได้ง่ายดาย แถมรุ่นใหม่ๆ สร้างแทรกภาพ แทรกวิดีโอได้มากมาย ทำให้เว็บไซต์น่าสนใจ

    แต่สิ่งที่แลกมา คือ ความปลอดภัย เพราะมี Joomla รุ่น 1.5 และใช้เครื่องมือการแก้ไขข้อความ (editor) ที่ชื่อว่า JCE นั้น  (รุ่นต่ำกว่า 2.5) มีช่องโหว่ ซึ่งเรียกรวมๆว่า JCE Exploited

    รายละเอียดของช่องโหว่ สามารถอ่านได้จาก http://www.bugreport.ir/78/exploit.htm

    โดยสรุป วิธีการ Hack ทำเช่นนี้

    1. ตรวจสอบว่า website เป้าหมายมี com_jce หรือไม่
    2. ถ้ามี จะส่งคำสั่ง ผ่านช่องโหว่ทาง URL เข้าไปเพื่อสร้างไฟล์ชื่อ xxxx.gif แล้วเขียนหัวไฟล์ว่า GIF89
    3. จากนั้น ก็ใส่ php code ซึ่งจะใช้เป็น Backdoor เข้าไป
    4. ใช้ช่องโหว่ JCE แก้ไขไฟล์เป็น .php

    เมื่อสามารถเขียนไฟล์ ลงไปได้แล้ว Hacker ก็จะเข้ามาจัดการเครื่องเราในภายหลัง … เช่น เบื้องต้น อาจจะวางไฟล์ 0day.php หรือ อะไรก็แล้วแต่ เพื่อเอาไปอวดเพื่อนๆว่า นี่ๆ ฉัน Hack ได้แล้ว หรือบางคน ก็เข้ามาเปลี่ยนหน้าตาของ Website และเลวร้ายที่สุด คือ สามารถเข้ามาแล้ว เอา Source Code มา Compile บนเครื่องของเรา แล้วยึดเครื่องได้เลย หรืออาจจะเข้ามาใน Network เพื่อ Scan และยิงเครื่องอื่นๆได้เลยทีเดียว

    จาก website ที่อ้างอิงข้างต้น เป็นโค๊ดที่สามารถ นำไปใช้ทดสอบเครื่องในความดูแลของตนเอง แต่ในขณะเดียวกัน ก็จะมี Hacker มือใหม่ หรือที่เรียกว่า Script Kiddie จะลองของ โดยเอา PHP, Perl Script ข้างต้น ไปลอง Hack ดู ซึ่ง … สร้างความเสียหายได้ง่ายๆ

    วิธีการตรวจสอบ ซึ่ง ผู้ดูแล Website พึงตรวจสอบเป็นประจำ

    1. พวก Script Kiddie จะเอาโค๊ดไปใช้ โดยไม่แก้ไขอะไร หรือ แก้ไขเฉพาะให้ Hack ได้ โดยจะลืมแก้ Signature ของ Script ดังภาพ (ส่วนหนึ่งของ Script)

    ดังนั้น จะใน Log File ของ Web Server ก็จะปรากฏข้อความ “BOT for JCE” ด้วย จึงสามารถใช้คำสั่งต่อไปนี้ ค้นหาว่ามีความพยายาม Hack หรือไม่

    grep -i "BOT for JCE" /var/log/httpd/domains/*.log | grep 200

    คำสั่งนี้ จะค้นหาคำว่า  “BOT for JCE” ในที่ที่เก็บ Log File คือ /var/log/httpd/domains/*.log ( ซึ่งแต่ละแห่งใช้ที่เก็บ Log ไม่เหมือนกัน เช่นอาจจะเป็น /var/log/apache2/access.log.* ก็ได้ ขอให้ปรับเปลี่ยนตามความเป็นจริง) และ grep 200 คือ ดูว่า มี Status Code เป็น 200 ซึ่งแปลว่า ติดต่อสำหรับ ดังภาพ

    ถ้าเห็นอย่างนี้บ้าง ก็แสดงว่า เครื่องของเรา มีคนมาเยี่ยมเยียนสำเร็จแล้ว …

    2. ถ้า มีการ Hack สำเร็จ ก็จะวางไฟล์ไว้ โดยพื้นฐาน จะวางไว้ที่ไดเรคทอรี่  images/stories เพราะ Joomla มักจะเปิดให้สามารถ Upload ภาพไปวางได้ เมื่อวางไฟล์ได้แล้ว ก็จะเปลี่ยนนามสกุลจาก .gif เป็น .php  วิธีการค้นหาไฟล์ต้องสงสัย จึงควรหาด้วยคำสั่ง

    find /var/www/ -name "*.php" -type f | grep 'images/stories'

    คำสั่งนี้ จะค้นหาไฟล์ใน /var/www/html ที่มีชื่อเป็น *.php และ ระบุว่า หาเฉพาะชนิดเป็น file (Option -type f) และ เมื่อค้นหาเจอแล้ว ก็จะเลือกเฉพาะที่อยู่ใน ‘images/stories’

    โดยที่ /var/www/html เป็น Web Directory หลัก หรือบางแห่งให้ผู้ใช้ใช้งานได้ใน /home ก็ปรับเปลี่ยนตามความเป็นจริง

    ผลที่ได้ ก็จะเป็นเช่นนี้

    ซึ่งโดยปรกติ ไม่ควรจะมีไฟล์ .php อยู่ใน images/stories ซึ่งเป็นพื้นที่ที่เปิดให้ Upload ไฟล์ภาพเข้ามาได้

    3. หากลองเข้าไปในไฟล์ก็จะพบว่า เป็น Backdoor จริง ตามที่กล่าวไว้ใน “วิธีตรวจสอบเว็บไซต์ที่โดน Hack #2

    ซึ่งจะเห็นได้ว่า ยังมี Back Door ที่สามารถค้นหาในเครื่องด้วยคำสั่ง (ที่เคยบอกไว้แล้ว)

    find ./ -name "*.php" -exec egrep -l "@eval.*base64_decode" {} \;

    (ก็ขอให้ไปทำกันด้วย …)

    4. แต่ก็จะมีแนวทางใหม่ๆ ซึ่งจะค้นหาด้วยคำสั่งเดิมๆไม่เจอ แบบนี้

    ซึ่ง ทำให้การตรวจสอบเป็นไปได้ยากยิ่งขึ้น … แต่หากใส่ใจกันมากขึ้น ก็จะตรวจสอบความผิดปรกติได้

    5. วิธีตรวจสอบว่า บน Web Server ของเรา มีการใช้ com_jce และ Plugin ที่เสี่ยงต่อการโดน hack หรือไม่ ใช้คำสั่งต่อไปนี้

    find /home/ -name "imgmanager.php" -type f |xargs grep '$version ='

    ผลที่ได้

    Picture1

    แนวทางป้องกัน

    1. หากใช้ Joomla ต้อง Upgrade รุ่นให้ทันสมัยเสนอ และติดตามข่าวสาร และปรับปรุงรุ่นของ Component ต่างๆให้ทันสมัยด้วย

    2. Joomla บนระบบที่ใช้งานจริง (Production) ควรจะเป็น Read Only กล่าวคือ Owner ต้องไม่ใช่ Web User เช่น httpd, apache, www-data เป็นต้น ควรจะเป็นของผู้ใช้แต่ละคน เพราะ หากเกิดการโจมตี จะโดนเป็นรายๆไป ไม่กระทบกระเทือนกัน และระมัดระวัง ผู้ใช้บางคนเปลี่ยนสิทธิ์ Permission เองเป็น 777, 757 อะไรทำนองนั้น

    3. เปลี่ยนวิธี แนวการทำงานใหม่ ห้าม ผู้ใช้แก้ไข Production Site ทาง Web Browser โดยเฉพาะ การ Upload ภาพโดยตรงจาก Web Browser เพราะ ถ้าเปิดให้ Upload ภาพได้ แสดงว่า เปิดให้ Web User สามารถเขียนได้ โดย เปลี่ยนไปใช้วิธี Upload ภาพ ผ่านทาง FTP Client เช่น FileZilla แทน วิธีการนี้ ผู้ใช้ยังสามารถแก้ไข Article ได้ตามปรกติ แต่จะไม่สามารถ Upload ภาพได้โดยตรงเท่านั้น

    4. หากจำเป็นจริงๆ ที่จะต้องเปิดให้ ผู้ใช้ และบุคคลทั่วไป Upload ไฟล์ผ่านทาง Web Browser ได้จริงๆ ก็ต้องใช้ .htaccess เพื่อปิดไม่ให้ php, perl และภาษาอื่นๆ สามารถ Execute Script เหล่านั้น ที่อยู่ในไดเรคทอรี่นั้นๆเด็ดขาด

    5. เครื่อง Production ต้องไม่มี Compiler เพราะจากประสบการณ์ เคยเจอมาแล้ว ที่ Hacker ผ่านมาทางช่องโหว่นี้ แล้ว Upload ไฟล์ .c มาวาง ยังดีที่เครื่องนั้นๆ ไม่มี Compiler

    ขอให้โชคดีครับ

    NOTE FOR Windows Server

    > Find specific file type (*.php) in ‘images/stories’

    gci e:\inetpub\vhosts -rec -include “*stories*” | where {$_.psiscontainer} | gci -Filter “*.php”

    > Find Log files in ‘statistics’ folder with name “*.log” which has “BOT for JCE”

    gci e:\inetpub\vhosts -rec -include “statistics” | where {$_.psiscontainer} | gci -rec -filter “*.log” | get-content | select-string -pattern “BOT for JCE”

    > Find imgmanager.php and the version of file

    gci e:\inetpub\vhosts -rec -filter “imgmanager.php” | get-content | select-string -pattern “version = ”

    > Find some known backdoor

    gci e:\inetpub\vhoss -rec -filter “*.php” | get-content | select-string -pattern “@eval.*base64_decode”

  • การสร้าง Mail Merge ด้วย Thunderbirds

    ส่งจดหมายเวียนในรูปแบบ Email ด้วย Thunderbird

    1. Download และ ติดตั้ง Thunderbird
      http://www.mozilla.org/en/thunderbird/all.html
      แล้วติดตั้ง email Account ตามปรกติ, ทดสอบให้สามารถส่ง email ออกไปได้จริง

    2. Download และ ติดตั้ง ThunderBird Mail Merge Extension
      https://addons.mozilla.org/en-us/thunderbird/addon/mail-merge/
      โดยเปิด Thunderbird แล้วกดปุ่ม  Alt-T แล้วเลือก Add-ons
      แล้วไปที่ รูปเฟือง แล้วเลือก Install Add-ons From file…
      จากนั้น เลือกไฟล์ที่ Download มา (mail_merge.XXXXX.xpi)
      เมื่อติดตั้งเสร็จ ให้ Restart Thunderbird

    3. Download และ ติดตั้ง Notepad++
      http://notepad-plus-plus.org/download/

    4. สร้างฐานข้อมูลด้วย Microsoft Excel หรือ LibreOffice Cal ก็ได้
      โดย ให้บรรทัดแรกของตาราง เป็นชื่อของ Field ซึ่งต้องเป็นภาษาอังกฤษ ไม่มีเว้นวรรค
      04-excel

      ในที่นี้จะมีชื่อ name, email, salary, topup, bonus, sso, total

      แล้ว Save As เป็น .CSV (Comma Delimited) ในที่นี้ตั้งชื่อ salary.csv
      05-saveascsv

      จากนั้นให้ปิด Excel ไปได้เลย

    5. ต่อไป ต้องปรับให้ salary.csv มีการ Encoding เป็น UTF-8 ก่อน โดยใช้โปรแกรม Notepad++
      โดย Right-Click ที่ไฟล์ salary.csv แล้วเลือก Edit with notepad++
      06-editwithnotepadplus

      แล้วเลือก Encoding > Convert to UTF-8
      07-convertutf-8

      เสร็จแล้ว Save แล้วปิดไป

    1. กลับมาที่ Thunderbird ให้สร้าง email ใหม่
      การอ้างอิงข้อมูลใน CSV นั้น ต้องมีเครื่องหมาย {{ }} คร่อมชื่อ Field
      ดังภาพ

      08-write-template

    2. เมื่อต้องการส่ง คลิก File>Mail Merge
      แล้วตั้งค่าดังภาพ โดยเลือกไฟล์ salary.csv ที่แก้ไขแล้วข้างต้น

      09-setting-mailmerge

    3. เมื่อกดปุ่ม OK ระบบก็จะส่งจดหมายไปตาม email ที่กำหนด
      10-sending

    4. ตัวอย่าง email ที่ส่งผ่านระบบ
      11-result

  • แกะรอย Facebook Spam

    ตามรอย Facebook Spam with Virus

    คำเตือน : ขั้นตอนต่อไปนี้ ทำเพื่อให้เห็นว่า Facebook แพร่ Virus มาได้อย่างไรเท่านั้น

    อย่านำไปลองทำที่บ้าน !!! โดยเฉพาะ Windows Users

    1. มี Message มา เป็น Link แปลกๆ

    01-facebook-message

    2. ระแวงไว้ก่อน ลองใช้ Linux Mint LiveCD ตรวจสอบ

    โดยเปิด Link ดังกล่าวด้วย  FireFox (พิมพ์ลงไป ไม่ได้เปิดโดยตรงจาก Facebook)
    พบว่า มันให้ Download ไฟล์ Zip ชื่อ CameraImage-35160.jpg.zip
    ดังภาพ

    02-linuxmintcd

    แต่เดี๋ยวก่อน !!! อย่าใช้คำสั่ง Open เด็ดขาด
    ให้เปลี่ยนเป็น Save File

    หากใครเจอเหตุการณ์เช่นนั้น แล้วเผลอไปเปิด
    คุณก็ติด Virus เข้าแล้ว !!!

    3. จะเห็นได้ว่า พวกนี้จะหลอกให้ผู้ใช้ โดยเฉพาะ Windows ที่มักจะ “ซ่อน” นามสกุลของไฟล์

    (Hide known extensions) ทำให้ไม่เห็นว่าไฟล์ที่ download มานั้นเป็น .Zip ซึ่งจะสามารถสั่งให้
    Execute โปรแกรมหรือ สั่งให้ Virus ทำงานได้ทันที !

    ผู้ใช้ที่ไม่รู้หรือไม่สังเกตุ ก็จะเห็นเป็นแค่
    CameraImage-35160.jpg
    ซึ่งน่าจะเป็นภาพ แทนที่จะเป็น
    CameraImage-35160.jpg.zip
    ซึ่งเป็นไฟล์อันตราย

    4. คราวนี้ มาดูว่า เจ้าไฟล์นี้ มันทำอะไร

    โดยทดลองเปิดดู (บน Linux Mint ไวรัสไม่สามารถทำอะไรได้)
    พบว่าใน Zip ไฟล์นี้ มี ไฟล์ชื่อ
    summertime-fun.jpg.exe
    อยู่ ซึ่งเป็น Virus นั่นเอง (ดังภาพ)
    03-exe-inside

    5. ต่อไป เป็นการส่งไฟล์ไปตรวจสอบ ว่าเป็น Virus ชนิดใด

    ในที่นี้เลือกใช้

    https://www.virustotal.com/en/

    เพราะสามารถส่งไฟล์ไปตรวจสอบได้ทาง Web Browser ดังภาพ
    04-sendfile-to-scan

    โดยเลือกไฟล์ summertime-fun.jpg.exe ข้างต้นไปตรวจสอบ

    ผลที่ได้คือ

    05-scan-result

    สรุป เป็น Virus/Malware ชนิดหนึ่ง

    รายละเอียดยังไม่แน่ชัด แต่ไม่ไปยุ่งกับมันเป็นดีที่สุด

    6. อ่านเพิ่มเติมเกี่ยว Virus/Spam ที่มากับ Facebook ได้ที่

    http://www.hacker9.com/beware-of-spambook-facebook-spam-and-virus.html

     

    สำหรับใครที่เจอเหตุการณ์นี้ แล้ว

    1. ได้รับ Message แล้วคลิก Link … ถ้า Web Browser ของท่านฉลาดสักหน่อย ก็จะถามว่า จะ Save หรือ Open
    (กรณีใช้ Microsoft Windows เท่านั้น)

    ถ้าเลือก Save แล้วไม่ได้ไปเปิดไฟล์ –> ก็ยังปลอดภัย แค่ไปลบไฟล์ทิ้ง จบ
    ถ้าเลือก Open แล้ว ไม่ได้ไป Double Click ไฟล์ที่ซ่อนอยู่ –> ก็ยังปลอดภัย ลบไฟล์ทิ้ง จบ
    แต่ถ้า เลือก Open แล้ว double click –> ท่านน่าจะติด Virus ไปแล้วครับ ถ้าในเครื่องมี Antivirus แต่ไม่ Update
    หรือตรวจสอบไม่เจอ ก็เป็นอันว่า มันฝังในเครื่องแล้ว

    หากติดแล้ว จะเห็นได้ว่า เครื่องจะช้าลง เพราะ Virus/Malware/Trojan พวกนี้จะพยายามติดต่อ Internet เพื่อทำการบางอย่างเช่น แพร่ข้อความ หรือ ที่เคยเจอมา “จะติดต่อกลับไปหาเจ้าของ” ซึ่ง Trojan พวกนี้ จะเปิด Backdoor เอาไว้ ทำให้เครื่องของท่าน
    กลายเป็น Botnet หรือ หุ่นเชิด ผู้ร้ายจะสามารถนำไฟล์อื่นๆมาลงในเครื่องได้ ซึ่งความเสี่ยงได้แก่
    1.1 มีการวาง Key-logger ซึ่งจะดักจับการ กด Keyboard ไว้แล้วส่งไปให้ผู้ร้าย ดังนั้น ถ้าท่านมีการพิมพ์รหัสผ่านต่างๆ
    ก็มีโอกาสที่ผู้ร้าย จะสามารถเข้าถึงบัญชีต่างๆของท่าน และเสี่ยงมากขึ้น หากเป็นข้อมูลทางการเงิน เป็นต้น
    1.2 วางไฟล์ที่จะแพร่ Virus/Malware/Trojan พวกนี้ผ่าน Social Network/Email ไปยังคนที่เกี่ยวข้องกับท่าน
    สร้างความเสียหายเป็นวงกว้าง
    1.3 อื่นๆอีกมากมาย เช่น ก่อกวนทำความเสียหายให้กับเครื่องคอมพิวเตอร์และระบบเครือข่าย

    แนะนำให้หาผู้เชี่ยวชาญใกล้ตัว เพื่อล้าง virus ครับ

    2. ท่านที่ได้รับ Message แต่ไม่ได้เป็น Windows ก็ไม่ต้องเป็นห่วงครับ มันทำอะไรไม่ได้
    แต่ควรระวัง อย่าคลิกอะไรโดยไม่ดู เพราะ ครั้งนี้ ตัวอย่างนี้ เป็นการแพร่ไวรัสแบบ เป็น “ไฟล์”
    ซึ่ง ยังมีอีกรูปแบบหนึ่งคือ มันจะฝังมาใน Temporary Internet File ซึ่ง แค่คลิกลิงค์ ก็ติดแล้ว
    โดย เมื่อคลิกลิงค์ ก็จะไปเปิด Website ที่แพร่ Malware เครื่องของท่านก็จะอยู่ภายใต้การควบคุมทันที
    ซึ่ง ทุกระบบปฏิบัติการ มีโอกาสเสี่ยงได้เท่าๆกัน

     

     

    วิธีป้องกันตัวเอง คือ

    ระแวงในทุกสิ่งที่มาจาก Internet แล้วคุณจะปลอดภัยมากขึ้น
    ไม่รู้ ไม่แน่ใจ อย่าคลิก และ ให้สอบถามจากผู้รู้

  • จดหมายหลอกลวง 2013-08-07

    วันนี้ 7 สิงหาคม 2556 มีจดหมายหลอกลวงหลุดเข้ามาในระบบ
    โดยผ่าน ผู้ใช้ของมหาวิทยาลัย 3 คน ซึ่งโดนหลอกเอารหัสผ่านไปก่อนหน้านี้
    ซึ่ง ทั้งหมด ถูกระงับการใช้งาน PSU Email ชั่วคราวไปแล้ว

    โดยจะมีหน้าตาจดหมาย เป็นภาษาไทย แต่อ่านแล้วสับสน เพราะใช้ Google Translate แปล เพื่อหลอกคนไทยโดยเฉพาะ เนื้อหาประมาณนี้

    spam-20130807

     

    โดยหวังให้ผู้ที่โดนหลอก คลิก Link ใน Email ซึ่งจะได้พบหน้า Website นี้

    spam-20130807-2

     

    เมื่อมีผู้หลงเชื่อ กรอกข้อมูลลงไป โดยเฉพาะ Username และ Password ก็ทำให้ผู้ร้ายสามารถเข้ามาใช้ PSU Webmail ของผู้นั้น เป็นฐานในการโจมตีผู้อื่นต่อไป

    ผลกระทบที่ผู้ถูกหลอกจะได้รับ

    1. จะมีจดหมายจากตัวเอง ส่งไปหาคนทั่วโลก นับแสนคน สร้างความเดือนร้อนรำคาญ

    2. ผู้ร้าย จะทำการเปลี่ยนข้อมูลส่วนตัวของผู้นั้น เมื่อผู้รับตอบกลับมา จะไม่กลับมายัง Email ของคนนั้นอีกเลย แต่จะส่งไปให้ผู้ร้ายแทน

    หากมีข้อมูลทางการเงิน ก็อาจทำให้สูญทรัพย์สินได้

    3. หากมีการส่ง Email ขยะออกไปมาก จะทำให้ ทั่วโลกปิดกั้นการรับข้อมูลจากมหาวิทยาลัย และทำให้เกิดความเสียหายกับทั้งมหาวิทยาลัยได้

     

    ทางมหาวิทยาลัย จะไม่มีจดหมายลักษณะดังกล่าวไปแจ้งผู้ใช้ ** เด็ดขาด **

    กรุณาอ่านเพิ่มเติม เกี่ยวกับกลลวงต่างๆได้ที่

    http://share.psu.ac.th/blog/cyber007/25717

    หากท่านใดได้รับ กรุณาลบทิ้งทันที อย่าได้ลองคลิก Link เด็ดขาด เพราะอาจจะมีการฝัง Script บางอย่าง เพื่อฝังไว้ในเครื่องของท่านก็เป็นได้

     

    จึงเรียนมาเพื่อทราบ

  • วิธีติดตั้ง Oracle Virtualbox Guest Additions สำหรับ Ubuntu 12.04 Guest

    การใช้งาน Oracle Virtualbox นั้น ต้องติดตั้ง Guest Additions เพื่อให้สามารถใช้งานความสามารถต่างๆได้มากขึ้น เช่น การ Sync Time ของ Guest จากตัว Host ได้, การ Copy-and-Paste ระหว่าง Guest กับ Host, ความสามารถในการ Copy File ข้ามระหว่าง Guest กับ Host  รวมถึง การใช้งาน Share Folder ด้วย

    สำหรับ Guest ที่เป็น Ubuntu 12.04 Server ซึ่งไม่มี GUI สามารถใช้คำสั่งต่อไปนี้ในการติดตั้ง

    1. ใน Guest OS, เลือกเมนู Device > Install Guest Additions …
    2. ที่ Prompt ใน Guest ต้องติดตั้ง dkms และ build-essential ก่อน ด้วยคำสั่ง
      # sudo apt-get install dkms build-essential
    3. จากนั้น mount เอา /dev/cdrom มาไว้ที่ /media/cdrom ด้วยคำสั่ง
      # sudo mount /dev/cdrom  /media/cdrom
    4. ติดตั้ง Guest Additions ด้วยคำสั่ง
      # sudo /media/cdrom/VBoxLinuxAdditions.run
    5. จากนั้น Reboot
      # sudo reboot

    การ Mount เอา Share Folder จาก Host มาให้ Guest เห็น  โดยอาจจะสร้าง directory
    สำหรับ Mount เอาไว้ชื่อ /media/vboxshare01
    และ Host ได้สร้าง share folder ชื่อ sharename
    ใช้คำสั่ง
    # sudo mkdir /media/vboxshare01
    # sudo mount -t vboxsf sharename /media/vboxshare01

  • วิธีตั้งค่า PSU Email สำหรับ Outlook Express

    การตั้งค่า Outlook Express ให้ใช้งานกับ PSU Email โดย สมมุติว่า

    1. ผู้ใช้ชื่อ Username Surname ใช้ email address เป็น username.s@psu.ac.th

    2. Incoming Server : mail.psu.ac.th

    และใช้งานผ่าน IMAP

    3. ตั้งค่า Outgoing Server: smtp2.psu.ac.th
    Port: 587
    และมีการเข้ารหัสข้อมูลในการส่ง (STARTTLS ) รวมถึงมีการยืนยันตัวตนก่อน (SMTP Authentication) ทำให้สามารถใช้งานได้จากทั่วโลก

     

    วิธีการตั้งค่า มีดังนี้

    1) ใส่ชื่อและนามสกุล

    001

    2. ใส่ email address

    002

    3. ตั้งค่าการเชื่อมต่อเป็น IMAP

    Incoming mail: mail.psu.ac.th

    Outgoning mail: smtp2.psu.ac.th

    003

    4. ใส่ username และ password ของ PSU Email

    004

     

    5. เสร็จการเริ่มต้นตั้งค่า

    005

    6.  ต่อไป เป็นการตั้งค่าความปลอดภัยอื่นๆ

    ไปที่ Tools > Accounts …

    006

    7. คลิกที่ Mail > mail.psu.ac.th > Properties

    จากนั้นคลิก Tab “Servers” , ในส่วนของ Outgoing Mail Server ให้ติ๊กที่ My Server requires authentication

    คลิกที่ปุ่ม Setting

    คลิกที่ Use same setting as my incoming mail server

    แล้วคลิก OK

    007

     

    8. ไป Tab “Advanced”

    ตั้งค่า Server Port Numbers ของ Outgoing  Mail Server เป็น 587

    และติ๊ก This server requires a secure connection (SSL)

     

     

     

    008

     

    เป็นอันเรียบร้อย

  • แนวทางการ Backup บน Ubuntu Server (กรณีระบบ PSU EMail) #2

    ขยายความต่อจาก

    แนวทางการ Backup บน Ubuntu Server (กรณีระบบ PSU EMail)

    ลองมาดูทีละขั้นตอน

    1. ใน directory username.s มีไฟล์ดังนี้
    $ ls -l username.s
    total 0
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 a.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 b.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 c.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 d.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 e.txt

    2. ใช้คำสั่งต่อไปนี้ เพื่อทำการ Full Backup
    tar -zcf username.s-full.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-full-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-full.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/a.txt
    username.s/b.txt
    username.s/c.txt
    username.s/d.txt
    username.s/e.txt

    3. ต่อมามีไฟล์เกิดใหม่ 2 ไฟล์ ชื่อ f.txt, g.txt
    4. เมื่อถึงเวลา ระบบทำการ Incremental Backup ด้วยคำสั่ง
    tar -zcf username.s-i01.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-i01-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-i01.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/f.txt
    username.s/g.txt

    5. ลบไฟล์ c.txt, e.txt
    และมีไฟล์ h.txt เกิดขึ้น
    6. เมื่อถึงเวลา ระบบทำการ Incremental Backup ด้วยคำสั่ง
    tar -zcf username.s-i02.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-i02-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-i02.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/h.txt

    7. (ในระบบ Email ไม่มีเหตุการณ์นี้ แต่ทำให้ดูเป็นตัวอย่าง) ถ้ามีการแก้ไขไฟล์ a.txt
    ซึ่งเดิมเป็นไฟล์ว่างๆ แต่ต่อมา มีการแก้ไขไฟล์ โดยเพิ่มคำว่า “hello world” เข้าไป
    echo "hello world" > username.s/a.txt
    8. เมื่อถึงเวลา ระบบทำการ Incremental Backup ด้วยคำสั่ง
    tar -zcf username.s-i03.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-i03-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-i03.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/a.txt

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

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

    ต่อจาก “วิธีตรวจสอบเว็บไซต์ที่โดน Hack #1” ซึ่งเป็นวิธีการตรวจสอบ จาก วันเวลา ของไฟล์ที่ตรวจสอบพบว่า ถูกนำมาวาง จากช่องโหว่ของ Joomla

    แต่เมื่อตรวจสอบลึกลงไป โดยตรวจสอบ ไฟล์ที่เอามาวางไว้ พบว่ามีรูปแบบหลากหลาย *** แต่มีวิธีการเดียวกัน*** นั่นคือ การใช้ eval และ base64_decode ทั้งสิ้น

    ตัวอย่างที่ 1:

    sample1

     

    จะเห็นได้ว่า hacker เขียนไฟล์ดังกล่าว แล้วสร้างตัวแปรว่า $code ในนั้นเป็น Code ซึ่ง “เข้ารหัสแบบ Base64 แล้ว gzip เอาไว้” เพื่อไม่ให้เราตรวจสอบได้ง่ายๆ

    จากนั้น จึงใช้คำสั่ง

    eval(gzinflate(base64_decode($code)))

    ซึ่งจะ decode ข้อความแบบ Base64 ก่อน แล้วค่อย unzip ออกไปอีกที … ซับซ้อน
    ก็จะทำให้ hacker สามารถใช้ code นั้นๆ มาทำอะไรต่อมิอะไรในเครื่อง web server เราได้

     

    ตัวอย่างที่ 2:

    sample2

    ใช้วิธีไปเขียนไฟล์ ของ Joomla โดยตรง (contact.php) ซึ่งพื้นที่ดังกล่าว เปิดให้ apache เขียนได้ และมีที่เปิด Permission เป็น 777 จึงทำให้ apache เขียนได้เช่นกัน

    โดยในตัวอย่างนี้ ใช้วิธีเขียนไว้ที่บรรทัดแรกของไฟล์ และใช้คำสั่ง

    eval(base64_decode($_REQUEST['c_id']))

    ต่างจากตัวอย่างที่ 1 ตรงที่ แทนที่จะฝัง Code ไว้ในไฟล์ ก็ใช้วิธีส่ง Code ผ่านทาง Action “POST” ของ HTTP มา (ในภาษา PHP ตัวแปรที่รับค่าจาก HTTP เข้ามามีได้ทั้ง GET, POST และ REQUEST ซึ่งตัว REQUEST ดังกล่าว สามารถรับได้ทั้งแบบ GET และ POST)

    ถ้าเฝ้าดูใน log ไฟล์ ก็จะเห็นรูปแบบดังนี้

    216.239.45.67 - - [24/Apr/2013:08:22:41 +0700] "GET /language/settings.class.php HTTP/1.1" 200 197 "-" "Python-urllib/2.7"
    202.46.129.104 - - [24/Apr/2013:08:23:02 +0700] "POST /language/settings.class.php HTTP/1.1" 200 497 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:08:35:08 +0700] "POST /language/settings.class.php HTTP/1.1" 200 197 "-" "Mozilla/5.0 Firefox/3.6.12"
    62.193.237.22 - - [24/Apr/2013:08:51:35 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"
    200.198.186.38 - - [24/Apr/2013:08:56:29 +0700] "POST /language/settings.class.php HTTP/1.1" 200 197 "-" "Mozilla/5.0 Firefox/3.6.12"
    31.196.4.41 - - [24/Apr/2013:08:56:32 +0700] "POST /language/settings.class.php HTTP/1.1" 200 197 "-" "Mozilla/5.0 Firefox/3.6.12"
    203.172.251.84 - - [24/Apr/2013:08:57:27 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:09:02:13 +0700] "POST /language/settings.class.php HTTP/1.1" 200 197 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:09:22:22 +0700] "POST /language/settings.class.php HTTP/1.1" 200 197 "-" "Mozilla/5.0 Firefox/3.6.12"
    77.246.145.52 - - [24/Apr/2013:09:46:32 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:09:51:14 +0700] "POST /language/settings.class.php HTTP/1.1" 200 197 "-" "Mozilla/5.0 Firefox/3.6.12"
    122.155.13.146 - - [24/Apr/2013:09:53:19 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:09:56:22 +0700] "POST /language/settings.class.php HTTP/1.1" 200 197 "-" "Mozilla/5.0 Firefox/3.6.12"
    203.172.179.246 - - [24/Apr/2013:10:08:05 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:10:17:13 +0700] "POST /language/settings.class.php HTTP/1.1" 200 226 "-" "Mozilla/5.0 Firefox/3.6.12"
    118.127.4.170 - - [24/Apr/2013:10:32:10 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:10:53:42 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"
    61.152.116.103 - - [24/Apr/2013:10:53:51 +0700] "POST /language/settings.class.php HTTP/1.1" 200 211 "-" "Mozilla/5.0 Firefox/3.6.12"

    เช่นเดิม เมื่อรับค่าผ่าน GET/POST/REQUEST มาแล้ว ก็จะเอามาผ่าน base64_decode แล้วจะได้ Code มา จากนั้น ส่งให้ eval ทำงานต่อ ก็สามารถใช้งาน Web Server เราทำอะไรก็ได้แล้ว

    ตัวอย่างที่ 3:

    sample3

    ในตอนแรก ก็ยังสงสัยอยู่ว่า ไฟล์นี้ เป็นไฟล์ของระบบหรือไม่ เพราะหน้าตาไม่น่าจะเป็นอันตราย ดูคล้ายๆเป็น Configuration File ธรรมดา

    แต่เมื่อดูให้ดีๆ ก็พบว่ามี

    eval(base64_decode($_REQUEST['c_id']))

    อีกแล้ว ซึ่งวิธีการใช้งาน ก็แบบเดียวกับตัวอย่างที่ 2

    UPDATE !!!

    แบบที่ไม่ใช่ eval ก็มีนะ

    new-backdoor

    วิธีการตรวจสอบ

    ให้ใช้คำสั่งต่อไปนี้

    find ./ -name "*.php" -exec egrep -l "@eval.*base64_decode" {} \;

    เพื่อตรวจสอบ หาไฟล์ที่มีคำว่า eval และ base64_decode อยู่ใกล้ๆกัน หากพบไฟล์เข้าข่ายดังกล่าว แนะนำให้ตรวจสอบอย่างละเอียด และย้ายออกมาจากพื้นที่ website เพื่อตรวจสอบให้แน่ใจอีกครั้งครับ

    นอกจากนั้น ควรตรวจสอบว่า มี Directory ใดบ้าง ที่ www-data หรือ apache (user ของ Web Server) เขียนได้ โดยใช้คำสั่งต่อไปนี้

    find ./ -user www-data -perm -u+w -type d

  • ตัวอย่างการใช้งาน mutt เพื่อส่ง email แบบ command line

    เมื่อต้องการส่ง email ด้วย command line วิธีที่ถูกต้องที่สุด ไม่ผูกติดกับ email client program บน Linux คือการสร้างไฟล์ แล้วส่งผ่าน sendmail ไม่ว่าจะเป็น original sendmail หรือ backward-compatibility ของ postfix ก็ตาม (จะกล่าวในอีกบทความหนึ่ง)

    แต่หากต้องการความง่าย ก็ลองใช้วิธีนี้ดูครับ

    ผ่านโปรแกรมชื่อ mutt

    ตัวอย่างคือ

    1. ส่ง email ไปให้ username.s@xxx.psu.ac.th

    2. บอกว่า ส่งจาก IT Department ซึ่ง email address เป็น blah@itdept.xxx.psu.ac.th

    3. มี Subject ว่า This is Subject

    4. แนบไฟล์ชื่อ test.txt

    5. แต่จดหมายนี้ ไม่ต้องการให้ผู้ใช้ตอบกลับ จึงส่งให้ no-reply@xxx.psu.ac.th เพื่อโยนทิ้งทันที

    6. เนื้อความ ว่า Hello World

     

    สามารถใช้คำสั่งต่อไปนี้

    export REPLYTO="no-reply@xxx.psu.ac.th"; export EMAIL="IT Department <blah@itdept.xxx.psu.ac.th>"; echo "Hello World" | mutt -s "This is Subject" -a test.txt -- kanakorn.h@psu.ac.th