วันพุธที่ 3 พฤศจิกายน พ.ศ. 2564

เทคนิคการ Hack Email Account แบบ Social Engineering และการป้องกัน

 จากที่ผมเองมีประสบการณ์ดูและระบบ Zimbra Server ให้กับองค์กรหลายๆที่ มาเป็นเวลาหลายปี ปัญหาหลักหนึ่งที่เจอ ก็คือ Account บน Zimbra  ถูก Hack โดยผู้ไม่หวังดี  โดยในช่วงแรกจะใช้วิธี Brute force โดยเหล่า hacker จะใช้โปรแกรมพยายามเดา Password ของ Account บน Zimbra ที่ Password ถูกตั้งไว้ไม่ซับซ้อน ซึ่งผมได้เคยเขียนบทความที่เกี่ยวกับเรื่องนี้ไปแล้วหลายบทความ ลองหาอ่านดูย้อนหลังได้ครับ 

    หลังจากที่ได้ทำการให้ความรู้กับลูกค้าและแก้ปัญหาไปแล้ว ปัญหา Account ถูก Hack ของลูกค้าผมได้ลดน้อยลงและหายไปอยู่หลายปีครับ แต่ในช่วงหลังๆ ตั้งแต่ปี 2019 เป็นต้นมา ผมเจอว่า ลูกค้าของผมหลายๆที่ ที่ได้มีการตั้ง Password  ที่ซับซ้อนก็ยังโดน Hack ได้ ซึ่งหลังๆ เจอได้บ่อยขึ้นเรื่อยๆ จากการตรวจสอบและวิเคราะห์ พบว่า Hacker ใช้วิธีการ Email Social Engineering คือ ส่ง Email เข้ามาหลอกถาม Password  และก็มีคนหลงเชื่อและป้อน Password ให้เค้าไปเยอะเสียด้วย 


 Social Engineering คืออะไร 

    สรุปแบบง่ายๆ เป็น Email หลอกลวง หรือ Phishing Email รูปแบบหนึ่ง โดยจุดประสงค์หลัก คือการหลอกถาม Password นั่นเองครับ วิธีนี้ไม่ได้เป็นเรื่องใหม่ แต่เป็นเทคนิคดั้งเดิมของ Hacker ที่เอาประยุกต์เอามาใช้กับการ Hack Email Account ครับ โดยผู้ไม่หวังดี จะส่ง Email ไปยัง Email Address เป้าหมาย เพื่อ หลอกถาม Password 

 โดยวิธีการที่หลอกให้เราบอก Password มีหลายหลายรูปแบบครับ เช่น 

  • เป็น Link ฝังมากับ Email 
  • เป็น ไฟล์แนบ ที่แนบมากับ Email 
  • หรืออาจจะเป็นหน้าจอ ฝังมาในเนื้อ Email เลย 
ส่วนข้อความ ส่วนใหญ่เป็นภาษาอังกฤษ แต่เคยเจอเป็นภาษาไทยก็มี โดยข้อความหลอกจะมีหลายรุปแบบ ตัวอย่างเช่น
  • ระบบคุณไม่ได้ใช้งานนาน ให้ป้อน password เพื่อยืนยันตัวตน ไม่งั้น email account จะถูกลบทิ้งภายใน xxx วัน 
  • email account คุณ เนื้อที่ใช้งานใกล้เต็ม ของป้อน password เพื่อยืนยันการเพิ่มเนื้อที่ใช้งานให้ 
  • กรณีที่เป็นไฟล์แนบ ก็จะหลอกประมาณว่า เป็นไฟล์สำคัญ เช่น invoice จากคู่ค้า อะไรทำนองนี้เมื่อเราเปิดไฟล์ จะมีการถาม Password ของ Email Account เพื่อปลดล็อกการเข้ารหัส



ตัวอย่างหน้าจอหลอกถาม Password 

ตัวอย่างนี้ email จะถูกส่งมาโดยมีไฟล์แนบ ชื่อ Copy Payment slip xls.html และหลอกให้เราเปิดไฟล์แนบนี้  


ถ้าเปิดไฟล์แนบ จะมีหน้าจอหลอกถาม password ตามนี้ 



นอกจากนี้ ยังมี Email หลอกถาม password อีกหลายรูปแบบ ซึ่งผมเคยได้เขียนบทความไว้แล้ว ตามนี้ 

เมื่อเจอ Email หลอกถาม password ต้องทำอย่างไร 
  • ระดับผู้ใช้งานทั่วไป  ก็อย่าป้อน password ที่หน้าจอที่หลอกถามเรานะครับ
    •  ถ้า Email เหมือนจะส่งจากผู้ดุและระบบ ให้ถามผู้ดูแลระบบก่อนว่า เป็น Email ที่ระบบหรือผู้ดูและระบบหรือต้นทางตั้งใจส่งจริงๆ หรือไม่ (ซึ่งส่วนใหญ่เกือบ 100% ไม่ใช่ เพราะผู้ดูแลระบบของ Zimbra สามารถจัดการ account ใน Zimbra ได้โดยที่ไม่ต้องรู้ Password ของ User) 
    • ถ้า Email ถูกส่งจากคนที่เรารู้จัก ให้สอบถามก่อนว่าเค้าตั้งใจส่งมาจริงๆหรือเปล่า เพราะเป็นไปไปได้ว่า Account ของคนส่งถูก Hack และกลายเป็นที่กระจาย Email ทำนองนี้ออกไปแล้ว 
    • แต่ถ้าเป็น Email ที่ส่งมาจาก Email Address ที่เราไม่รู้จัก แนวโน้มว่าจะเป็น email หลอก ให้ลบทิ้งไปเลย 

สุดท้าย อย่าเผลอให้ Password ของ Email Account ไป  Account ของคุณจะกลายเป็น Account ที่ใช้ส่ง Spam ในอนาคต
  • ระดับผู้ดูแลระบบ 
    โดยปกติแล้ว การส่ง Email ประเภทนี้ เค้าจะส่งเป็นชุด ไปยังองค์กรเป้าหมาย เมื่อมี Account ในองค์กรได้รับ Email ทำนองนี้ แนวโน้มที่ Account อื่นๆ ในองค์กรจะได้รับ Email เดียวกันนี้ เป็นไปได้ค่อนข้างสูง ดังนั้น สิ่งที่ผู้ดุและระบบควรจะต้องทำ มีดังนี้ 
    1. แจ้ง user คนอื่นๆ ในองค์กร ให้ทราบ
      เมื่อมี User สอบถามมาเกี่ยวกับ Email ที่น่าสงสัย และพบว่าเป็น Email พวกนี้  แจ้งให้ User ทุกคนในองค์กรทราบว่า Email ที่อาจจะได้รับ เป็น Email หลอกถาม Password ถ้าเจอให้ลบทิ้ง หรือถ้าไม่แน่ใจ ให้สอบถามกลับมา ส่วนใหญ่ Email ประเภทนี้ในการส่งแต่ละรอบ จะส่งจาก Email address หรือ Domain เดียวกัน, Subject เนื้อหา รูปแบบ จะคล้ายๆ กันครับ ทำให้ระบุได้ไม่ยาก
    2. Setup firewall ให้ block การเชื่อมต่อจากเครื่องในองค์กรไปยัง Server ที่หลอกถามข้อมูล
      ถ้าตรวจสอบได้ว่า Link ที่แนบมากับ Email ชี้ไปที่ server ไหน และ Firewall ขององค์กร สามารถตั้งค่าให้ Block การเชื่อมต่อ ออกไปยัง Server ของ URL ที่หลอกถาม Password ได้ ก็ให้ทำการ Block เลยครับ วิธีการนี้เผื่อว่ามี User ในองค์กรที่ไม่ทราบ เผลอเชื่อมต่อไปยัง URL ที่จะหลอกถาม password จะได้ทำไม่ได้ 
      แต่วิธีการนี้ ก็ป้องกันไม่ได้ 100% นะครับ เพราะหลายๆ องค์กร User สามารถใช้งาน Email ผ่าน Mail client จากภายนอกองค์กรได้ ทำให้เราไม่สามารถปิดกั้นการเชื่อมต่อไปยัง server ที่หลอกถาม Password ได้ทุกกรณี
    3. Scan หาและลบ Email หลอกถาม Password ที่ได้รับออกจากทุก account  
      วิธีการนี้เป็นท่ายากครับ คือต้องเขียน Script บน Zimbra Server ไล่ scan หา Email หลอกถาม password ใน account ทั้งหมดบนเครื่อง Zimbra โดยดูจาก Email address ผู้ส่ง หรือ subject ของ Email
      อย่างไรก็ตาม วิธีนี้จะได้ผลถ้าเราทำการลบ Email พวกนี้ ก่อนที่ User เปิดอ่านเท่านั้น 

Mail Gateway ช่วยกรอง Email ทำนองนี้ได้หรือไม่ 

หลายๆ องค์กรมีการตั้ง Mail Gateway เพื่อกรอง Spam mail ก่อนที่จะผ่านเข้ามายัง Mail Server ขององค์กร คำถามคือ อุปกรณ์พวกนี้ สามารถช่วยกรอง Email ที่หลอกถาม Password ได้หรือไม่ 
ส่วนตัวผม คิดว่าสามารถกรองได้ระดับหนึ่งครับ แต่ไม่ 100%  จากประสบการณ์ก็ยังเจอว่า Mail Gateway ยี่ห้อดังๆ ก็ยังมี Email หลอกถาม Password หลุดเข้ามาได้ เพราะ hacker ก็จะพยายามหา เทคนิคและช่องทางใหม่ๆ ที่ให้ Email ที่ไม่ดีเหล่านี้ หลุดรอดผ่านเข้าไปถึง User ได้  การให้ความรู้ กับ User ให้ระวัง Email เหล่านี้อยู่เสมอ น่าจะเป็นคำตอบที่ดีที่สุดครับ 

วันพฤหัสบดีที่ 27 พฤษภาคม พ.ศ. 2564

วิธีการค้นหา Email ใน Zimbra Web Client และแก้ปัญหาการค้นหาคำในภาษาไทยไม่เจอ

 สำหรับผู้ที่ใช้งาน  Zimbra Web Client อาจจะยังมีบางท่านที่ไม่เคยใช้ Search ฺBar ในการค้นหา Email ในบทความนี้ เราจะมาพูดถึงเรื่องนี้กันครับ 

Zimbra Web Client จะมีช่องอยุ่ด้านบนเยื้องไปทางขวาของจอ สามารถให้เราป้อนคำ เพื่อใช้ในการค้นหาได้ ตามรุปครับ ซึ่งโดยปกติ จะตั้งค่าเริ่มต้นไว้ให้ค้นหาคำที่เราป้อนใน Email 

วิธีการค้นหา Email แบบง่ายๆ ก็คือ ป้อนคำที่เราต้องการค้นหาเข้าไป ที่ search bar แล้วกด  แล้วกด Enter 

Zimbra จะทำการค้นหาคำที่เราป้อนจาก  Email ทั้งหมดที่มีอยู่ในระบบ  โดยค้นหาจาก

  • Email Address ผู้ส่ง 
  • Email Address ของผู้รับ 
  • Subject ของ Email 
  • ข้อความในเนื้อ Email 

 โดย Web Client จะเปิด Tab ใหม่ชื่อว่า search  และแสดงรายการของ Email ที่มีข้อความตามที่เราป้อน ตัวอย่างเช่น ผมพิมพ์คำว่า accept ที่ search bar แล้วกด Enter ผลลัพท์ที่ได้จะเป็นตามรูป

แต่อย่างไรก็ตาม การค้นหาคำใน Email นี้มีส่ิงที่เราควรทราบเบื้องต้นตามนี้ครับ 

Folder ที่ถูกค้นหา

การ Search แบบนี้ จะค้นหาทุก folder ใน account ของเรา ยกเว้น Junk และ Trash  ดังนั้นจะค้นหาใน Draft และ Sent folder ด้วยครับ 

วิธีการค้นหาคำ 

ส่วนวิธีการที่ใช้ในการค้นหาข้อความของ Zimbra นั้นอ้างอิงวิธีการค้นหาคำในภาษาอังกฤษครับ ซึ่งกระบวนการคือ Zimbra จะทำการแยกประโยคยาวๆ ออกมาเป็นคำก่อน โดยใช้ช่องว่างและตัวอักษรอักขระพิเศษในการแบ่งคำ (เช่น . -,   อะไรทำนองนี้ ) เสร็จแล้วค่อยเทียบคำที่มีใน Email กับคำที่ใช้ในการค้นหาครับ 

ตัวอย่างเช่น ในประโยค "This is a big-fat boy"  Zimbra จะทำการแยกคำออกมาได้ เป็น "this" "is"  "a"  "big" "fat"  "boy" ครับ 

และเวลา Zimbra  ค้นหาคำที่เราป้อน ปกติจะหาคำที่ตรงกันเป๊ะๆ  ตัวอย่างเช่นคำว่า dictionary ถ้าเราป้อนแค่คำว่า "dict" เพื่อใช้ในการค้นหา  Zimbra จะหาไม่เจอครับ  

แต่อย่างไรก็ตามการหาของ Zimbra ไม่สนใจตัวอักษรตัวเล็กและตัวใหญ่ในภาษาอังกฤษ นะครับ ในกรณีนี้ Zimbra จะมองตัวอักษรตัวเล็กและตัวใหญ่ในภาษาอังกฤษเหมือนกัน 

ปัญหาการค้นหาคำโดยใช้ภาษาไทย

ปัญหาก็คือ คำในภาษาไทยไม่ได้แบ่งด้วยช่องว่างเหมือนภาษาอังกฤษครับ ดังนั้นหลายๆ คนอาจจะเคยสังเกตุว่า เวลาหาคำโดยป้อนคำที่ต้องการค้นหาโดยใช้ภาษาไทยแล้ว  Zimbra หา Email ที่มีคำที่เราต้องการหาไม่เจอ สาเหตุก็เพราะเรื่องนี้เองครับ 

บางคนอาจจะแย้งว่า ผมใช้คำไทยหาตามปกติ ก็เจอนี่  เท่าที่ผมเคยเห็น สาเหตุที่หาเจอก็เพราะใน Email ของเรา อาจจะมีคำที่ใช้ในการค้นหานี้อยู่หลายจุด ซึ่งบางจุด อาจจะสามารถแบ่งคำโดยใช้วิธีการแบ่งคำแบบภาษาอังกฤษได้ เลยหาเจอ 

Wildcard Search ค้นหาโดยใช้อักษรที่มีความหมายพิเศษ

    การค้นหาคำใน Zimbra มีอีกความสามารถหนึ่งคือเราสามารถใช้ตัวอักษร "*" ในคำที่เราป้อนใน search bar เพื่อใช้ในการค้นหาได้ครับ ตัวอักษรตัวนี้จะให้ความหมายเหมือนกับว่าเป็นตัวอักษรหรือคำอะไรก็ได้ หรือไม่มีก็ได้ 

ยกตัวอย่างเช่น ถ้าเราป้อนในช่อง search โดยใช้คำว่า

  • *do   จะหมายความว่าหาคำที่ลงท้ายด้วย do หรือคำว่า do
  • do*  จะหมายความว่าหาคำที่ขึ้นต้วด้วย do หรือคำว่า do
  • *do*  จะหมายความว่า ให้หาคำที่ลงท้ายด้วย do หรือ ขึ้นต้นด้วย do และรวมไปถึงคำว่า do ด้วย
แก้ปัญหาการค้นหาคำภาษาไทย โดยใช้ Wildcard 

    จากรูปแบบการใช้ wildcard search ข้างต้น เราสามารถนำมาประยุกต์เพื่อแก้ปัญหากับการค้นหาคำในภาษาไทยได้ โดยการใส่ * ก่อนและหลังคำที่ต้องการค้นหา 

เช่น เราต้องการค้นหาคำว่า สุภา ใน search bar ให้ป้อน *สุภา*  แบบนี้ Zimbra จะแสดงราย Email ที่มีคำว่าสุภาทั้งหมดออกมาครับ แต่จะรวมไปถึงคำอื่นๆ เช่น สุภาพ ด้วย ซึ่งกรณี อาจจะหาเจอมากกว่าที่เราต้องการ แต่ผมว่า ก็ยังดีกว่าหาไม่เจอเลยครับ 

ลองนำไปใช้กันดูนะครับ 


วันจันทร์ที่ 19 เมษายน พ.ศ. 2564

การปรับวิธีการจัดเรียง Email (sort) ในหน้าจอ Web Client ของ Zimbra

 สำหรับท่านที่ใช้ web client ของ Zimbra เราจะสามารถปรับแต่งวิธีการเรียง Email บนหน้าจอได้ครับ โดยวิธีการจะแตกต่างกันสำหรับหน้าจอแต่ละแบบ ผมขอแยกเป็นสองกลุ่ม ตามนี้ครับ 


หน้าจอ Reading Pane at the bottom หรือ Off 

หน้าจอแบบนี้ เราสามารถจัดเรียง Email ได้ โดยการกดปุ่มเมาส์ซ้ายที่หัวคอลัมน์ในส่วนของหน้าจอแสดง รายการ Email ดังรูป คลิ็กที่คอลัมน์ไหน จะเป็นการจัดเรียง Email ตามคอลัมน์นั้นๆ  เช่น คลิ๊กที่ หัวคอลัมน์ Subject จะเป็นการเรียงลำดับ Email ตามข้อความที่อยู่ใน Subject  ของแต่ละ Email  ตัวอย่างตามรูปครับ


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



หน้าจอ Reading Pane on the right

 สำหรับหน้าจอแบบนีี้ ที่หัวคอลัมน์ในส่วนที่แสดงรายการของ Email จะบอกอยู่แล้วว่า  Email ถูกจัดเรียงแบบไหน และเรียงจากมากไปน้อย หรือน้อยไปมาก โดยดูที่รูปเครื่องหมายสามเหลึยม ตามรูป  โดยการสลับการเรียง น้อยไปมาก และมากไปน้อย สามารถทำได้โดยการกดปุ่มเมาส์ซ้ายที่หัวคอลัมน์ 



ถ้าต้องการเปลี่ยนหัวข้อที่ใช้ในการเรียงลำดับ ให้กดปุ่มเมาส์ขวาที่หัวคอลัมน์ และเลือกหัวข้อที่ต้องการจัดเรียง ตามรูป 


สุดท้าย  Zimbra จะจำวิธีการเรียง Email ล่าสุดไว้  ในหน้าจอทั้งสองแบบ ครับ ลองนำไปใช้งานกันดูนะครับ 

ศิวัฒน์ ศิวะบวร


วันจันทร์ที่ 27 กรกฎาคม พ.ศ. 2563

Email หาย เมื่อส่งจาก Outlook ไปที่ Zimbra


      ปัญหาหนึ่งที่ผู้ดูแลระบบหรือผู้ใช้ zimbra อาจจะเคยเจอหรือได้รับรายงาน คือมีการส่ง Email เข้ามาที่เครื่อง Zimbra แล้วผู้รับไม่ได้รับ แต่ไม่ได้เป็นทุกครั้ง และส่วนใหญ่จะหาสาเหตุไม่ได้ ผมเองก็ได้รับรายงานจากลูกค้าผมเหมือนกัน ตอนแรกๆ ก็สงสัยว่าเกิดอะไรขึ้น จนสุดท้าย เมื่อได้รับรายงานและมีข้อมูลให้วิเคราะห์มากพอ เมื่อตรวจสอบลึกลงไป ก็ได้ทราบถึงสาเหตุ และวิธีการแก้ไข ตามนี้ครับ

สถานการณ์ที่เกิดขึ้นกับผม 
  • user_a@senderdomain.com มีการส่ง Email มายัง Zimbra  โดยส่งมาให้ user_b@zimbradomain.com และ CC: user_c@zimbradomain.com
  • user_b@zimbradomain.com ไม่ได้รับ Email นี้
  • แต่ user_c@zimbradomain.com ได้รับ Email 
ส่ิงที่ผมทำก็คือ ดูที่ /var/log/zimbra.log  เพื่อดูว่า เครื่อง Zimbra ได้รับ Email ที่ว่านี้จาก user_a  หรือไม่ ข้อมูลจาก log file คือ เครื่อง Zimbra ได้รับ Email และส่งต่อไปให้ ยัง User B และ User C แล้ว ตามข้อมูลนี้ 
Jul 16 17:22:36 mail amavis[595]: (00595-15) Passed CLEAN {RelayedInternal}, ORIGINATING_POST/MYNETS LOCAL [127.0.0.1]:43744 [110.170.164.226] <user_a@senderdomain.com> -> <user_c@zimbradomain.com>,<user_b@zimbradomain.com>, Queue-ID: 559BC40DE6EAE, Message-ID: <!&!AAAAAAAAAAAYAAAAAAAAAHMG31lBzq9EnA4ND3fjIazCgAAAEAAAALwAfFLJ9TdEgSYwUSy/GGEBAAAAAA==@senderdomain.com>, mail_id: I

Jul 16 17:22:36 mail amavis[595]: (00595-15) IyGsl1CPBC8i FWD from <user_a@senderdomain.com> -> <user_c@zimbradomain.com>,<user_b@zimbradomain.com>, BODY=7BIT 250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as CF12E40DE6E91

.....

Jul 16 17:22:37 mail postfix/lmtp[1001]: CF12E40DE6E91: to=<user_c@zimbradomain.com>, relay=mail.zimbradomain.com[192.168.22.43]:7025, delay=0.22, delays=0.06/0/0.05/0.12, dsn=2.1.5, status=sent (250 2.1.5 Delivery OK)

Jul 16 17:22:37 mail postfix/lmtp[1001]: CF12E40DE6E91: to=<user_b@zimbradomain.com>, relay=mail.zimbradomain.com[192.168.22.43]:7025, delay=0.22, delays=0.06/0/0.05/0.12, dsn=2.1.5, status=sent (250 2.1.5 Delivery OK)

Jul 16 17:22:37 mail postfix/qmgr[5540]: CF12E40DE6E91: removed
วิเคราะห์ข้อมูลต่อ ใน mailbox.log

สิ่งที่ผมทำต่อคือ ดูข้อมูลในไฟล์ /opt/zimbra/log/mailbox.log ดูว่า user_b ทำไม่ได้รับ Email โดยผมกรองเฉพาะ log ที่เกี่ยวข้องกับ user_b มาดู ผมไปเจอ message ที่น่าสนใจคือ 
2020-07-16 17:22:37,066 INFO  [LmtpServer-59285] [name=user_b@zimbradomain.com;mid=175;ip=192.168.22.43;]
lmtp - Not delivering message with duplicate Message-ID
 <!&!AAAAAAAAAAAYAAAAAAAAAHMG31lBzq9EnA4ND3fjIazCgAAAEAAAALwAfFLJ9TdEgSYwUSy/GGEBAAAAAA==@senderdomain.com>
ลองหาข้อมูลเกี่ยวกับ "Not delivering message with duplicate Message-ID" ที่เกียวข้องกับ Zimbra ว่าคืออะไร สรุปก็คือ Zimbra จะมีการ เก็บ Message-ID ของ Email แต่ละฉบับที่ส่งเข้ามาให้กับแต่ละ Account บน Zimbra ย้อนหลังไว้จำนวนหนึ่ง ซึ่งเมื่อ มี Email ใหม่เข้ามา Zimbra จะตรวจสอบ Message-ID ของ Email ใหม่เที่ยบกับ Message-id ที่เคยเก็บไว้ของ User นั้นๆ ซึ่งถ้าเจอว่า มี Message-ID ซ้ำ Zimbra ก็จะไม่ส่ง Email นี้ไปที่ inbox ของ User

Message-ID คืออะไร 

    เมื่ออ่านถึงตรงนี้ ผู้อ่านหลายท่านคงสงสัยว่า แล้ว Message-id นี้คืออะไร ขออธิบายง่ายๆ แล้วกันครับ ว่า Message-ID จะเหมือนหมายเลขประจำตัว ของ Email แต่ละฉบับ จะถูกสร้างตั้งแต่ต้นทางที่สร้าง Email ขึ้นมา เช่น Email Client (MS outlook , thunderbird, ...) หรือ ระบบ Webmail  โดย Message-ID นี้จะฝังอยู่ใน Email Header  เราสามารถหาดูได้โดยดูบรรทัดที่ขึ้นต้นด้วยคำว่า Message-ID: ใน Email Header ดังตัวอย่างตามรูป


จากรุป Message-ID ของ Email ในรูปคือ 5ec3add-be8b-c846-1c55-0fa33428aac1@xsidekick.com

ซึ่งโดยปกติ ค่าจะถูกสร้างมาโดยไม่ซ้ำกัน และไม่ซ้ำกับ Email อื่นๆ ด้วยครับ

ส่วนวิธีการดู  Email Header ของ Email ใน Zimbra โดยใช้ Web client ลองอ่านวิธีดูบทความนี้ดูนะครับ

นอกจากนี้ ใน /var/log/zimbra.log จะมีการเก็บ Message-ID ของ Email ทีี่มีการรับส่งด้วย ลองดูในตัวอย่าง log ที่ผมใส่ไว้ตอนต้นบทความก็ได้ จะเห็น Message-ID ของ Email นี้อยู่ด้วย และในไฟล์ /opt/zimbra/log/mailbox.log ที่บอกว่า เจอ duplicate Message-ID ก็จะมีการระบุ Message ID ที่เจอว่า Duplicate ไว้ด้วย

Microsoft Outlook ต้นเหตุของปัญหา

     เมื่อลองพยายามค้นหาข้อมูลต่อ ก็พบว่า มันคนเคยเจอปัญหานี้เหมือนกัน เค้าระบุว่า ต้นตอของปัญหานี้เกิดจากคนส่ง Email ใช้ Microsoft Outlook  เขียน Email และส่งออกมา ซึ่ง ตัว Outlook เองจะมีประเด็น (เท่าที่มีข้อมูลเป็น MS Outlook 2010) ที่ทำให้  Email  บางฉบับที่ส่งออก มี Message-ID ซ้ำกับ Email ที่เคยส่งออกมาแล้ว

โดยกรณีของผม  พบว่าสถานการณ์ที่ ทำให้ Outlook สร้าง Message-ID คือ

1) user_a@senderdomain.com ใช้งาน MS Outlook  ส่ง Email ฉบับหนึ่งให้ user_b@zimbradomain.com
2) หลังจากนั้น user_a@senderdomain.com ทำการเขียน Email อีกฉบับโดย Forward  จาก Email ในข้อ 1) ไปให้ user_b@zimbradomain.com ตามสถาณการณ์ ที่ได้เล่าไปตั้งแต่แรก 

ซึ่งในกรณีที่ผมเจอ พอสืบย้อนกลับไป พบว่า ก่อนหน้าที่จะเกิด Message-ID Duplication ใน Zimbra user_a@senderdomain.com ได้เคยส่ง Email ให้กับ user_b@zimbradomain.com จริงๆ และ หลังจากนั้น เค้าได้ Forward Email ที่เคยส่งไปแล้ว ให้กับ user_b@zimbradomain.com อีกครัั้ง แต่คราวนี้ CC: user_c@zimbradomain.com ด้วย

และถ้ากลับไปดูที่ Email header ทั้งสองฉบับ (ฉบับทีส่งครั้งแรก และ ฉบับที่ Forward ) เราจะเจอว่า

  • Message-ID ซ้ำกัน
  • แถมเจอร่องรอยอีกบรรทัดคือ  
X-Mailer: Microsoft Outlook 16.0
ซึ่งบรรทัดนี้ เป็นตัวบอกว่า Email ที่เกิดปัญหา ถูกส่งจาก MS Outlook จริงๆ แต่เป็น version  2016 (จุดนี้บอกพวกเราเป็นนัยๆ ว่าอาการแบบนี้มีใน MS Outlook หลายๆ version)

ปัญหาคือ ตกลงมันเป็น Bug ของ MS outlook จริงๆ หรือเป็นพฤติกรรมปกติของ Email Client ทั่วไป ผมเลยลองทดสอบส่ง Email โดยใช้ Thunderbird จำลองสถานการณ์แบบเดียวกัน ผลปรากฎว่า Message-ID ไม่ซ้ำ ทำให้คิดว่าน่าจะเป็น Bug ของ MS Outlook จริงๆ (ใครรู้จริงช่วยบอกหน่อย)

การแก้ไข

     ปัญหาอยู่ตรงนี้ครับ เพราะคนที่ส่ง Email ที่มี Message-ID ซ้ำนี้ เป็นคนนอกองค์กร จะไปบังคับเค้าให้ใช้ Email Client ยี่ห้ออื่น หรือลง Patch ของ MS Outlook ก็ลำบาก เราคงต้องมาหาทางแก้ปัญหากันที่ระบบ Zimbra ของเราเอง (แบบอ้อมๆ) ซึ่งก็โชคดีครับ พอจะทำได้

วิธีการก็คือ เราต้อง setup Zimbra ไม่ได้ทำการเช็ค Message-ID ซ้ำ โดย

ใช้คำสั่ง zmprov ที่ Linux command line แก้ไข config parameter ที่ชื่อ zimbraMessageIdDedupeCacheSize ให้เป็น 0 (ปกติ จะเป็น 3000)  ตามนี้
zmprov mcf zimbraMessageIdDedupeCacheSize 0 
คำสั่งนี้ ต้องเรียกใช้ในขณะที่เป็น Account ที่ชื่อ Zimbra บน Linux ซึ่งขั้นตอนดูตามบทความนี้ครับ

ซึ่งเราสามารถตรวจสอบได้ว่าค่า zimbraMessageIdDedupeCacheSize ถูก set เป็น 0 แล้วจริงๆ หรือเปล่าโดยใช้คำสั่ง
zmprov gcf zimbraMessageIdDedupeCacheSize
คำสั่งนี้จะแสดงค่า zimbraMessageIdDedupeCacheSize ที่ถูก set อยู่ ณ.ขณะนั้น

เสร็จแล้วทำการ Restart service ของ Zimbra ที่ชื่อ mailboxd เพื่อให้  Zimbra รับรู้ค่าที่เรา set ใหม่นี้ โดยใช้คำสั่ง
zmmailboxdctl restart
ตัวอย่างเช่น







ข้อควรระวังของการแก้ไขโดยใข้วิธีการนี้ 

      ตามที่ได้บอกไปว่าวิธีการแก้ไขนี้ เป็นการปิดระบบของ Zimbra ไม่ให้ตรวจสอบ Message-id ซ้ำ ดังนั้นเป็นไปได้ว่าหลังจากนี้ ผู้ใช้ระบบของเรา อาจจะเจอว่าได้รับ Email ซ้ำในระบบ ซึ่งส่วนใหญ๋ เกิดจากข้อผิดพลาดในระบบ Email ตั้งแต่ตั้นทางมาถึงปลายทางคือเครื่อง Zimbra ของเรา ดังนั้น ผู้ดูแลระบบควรจะต้องแจ้งให้ User หรือผู้ดูและระบบคนอื่นๆในองค์กรทราบด้วย

หวังว่าคงจะได้ประโยชน์ และสามารถนำความรู้จากบทความนี้ ไปแก้ไขปัญหา Zimbra กันนะครับ

อ้างอิง https://forums.zimbra.org/viewtopic.php?t=28155




วันอังคารที่ 21 กรกฎาคม พ.ศ. 2563

วิธี download ข้อมูลรายชื่อ Account บน Zimbra ผ่านทาง Admin Console


หลายๆครั้งที่ผมได้รับคำถาม จากผู้ดูแลระบบ Zimbra ว่าอยากได้รายชื่อ ของ Account ที่มีอยู่ใน Zimbra ออกมา รวมถึงข้อมูลบางอย่าง ของแต่ละ Account เช่น ชื่อ นามสกุล ของ user หรือ Status (Active/Close) ของ Account  มีวิธีการ Export ออกมาอย่างไรได้บ้าง

ถ้าเป็นเมื่อก่อน คงต้องอาศัย Linux command line ร่วมกับกับการเขียนโปรแกรม แต่ใน Zimbra Version ใหม่ๆ เราสามารถ Export ออกมาได้เลย โดยมีขั้นตอนดังนี้ครับ

1) Login Admin Console  (https:// ... :7071)

2) ทำการค้นหารายชื่อที่เราต้องการสร้างรายงาน เช่น ผมต้องการ Account ทั้งหมดใน Domain ที่ชื่อ mydomain.com บนเครื่องผม โดย

   2.1)  ไปที่  Search bar  ที่อยู่ด้านบนสุดของหน้าจอ


   2.2) เลือก ชนิดของสิ่งที่ต้องการค้นหา ว่าต้องการ search หาอะไร (Account / Distribution List, Alias ...) โดยกดที่ปุ่มรูปสามเหลียมหลัง Icon เพื่อเปิดเมนู แล้วเลือกชนิดของสิ่งที่ต้องการค้นหา


 
   2.3) ป้อนคำที่ใช้ Search จากตัวอย่าง ผมป้อน mydomain.com   
    2.4) ทำการค้นหาโดยคลิ๊กที่รูปแว่นขยายท้าย search bar




เมื่อเสร็จขั้นตอนนี้ ผมจะได้รายชื่อ Email address  ใน mydomain.com พร้อมข้อมูลอื่นๆออกมาที่หน้าจอ ดังตัวอย่างตามรูป



3) ทำการ Export ข้อมูล ออกมาเป็น .csv  Ffp คลิ๊กไปที่ Icon รูปเฟืองเพื่อกางเมนู และเลือก Download

ขั้นตอนนี้ จะมีการ Download ไฟล์ ที่ชื่อ search_result.csv จาก web browser มาที่ Desktop ตามชื่อ Directory ที่ตั้งไว้



เปิดไฟล์นี้ด้วย โปรแกรม spreedsheet เช่น Excel หรือ LibreOffice Calc  โดยระบุให้ใช้เครื่องหมาย Comma เป็นตัวแบ่ง Field และ Character Set เป็น UTF-8



ซึ่งการระบุ เป็น UTF-8 จะแก้ปัญหาที่บางครั้งข้อมูลที่เป็นภาษาไทยพอ Convert จาก .csv ที่ได้มาแล้ว อ่านภาษาไทยไม่ออก

ถ้าทำทุกอย่างถูกต้อง เราจะเป็นข้อมูลที่เราได้ทำการค้นหา และ Export ออกมาเพื่อเอาไปใช้งานต่อ บนโปรแกรม spreadsheet  ได้แล้วครับ



วันพุธที่ 27 พฤศจิกายน พ.ศ. 2562

Email Phishing เป้าหมายจู่โจมผู้ใช้ Zimbra มาอีกแล้ว

        ผมเคยเขียนบทความเกียวกับ Email Phishing ที่มีเป้าหมายจู่โจมผู้ใช้งาน  Zimbra  กันไปบ้างแล้ว  แต่ก็พบว่าก็ยังเจออยู่เรื่อยๆ ด้วยเทคนิคลูกเล่นเยอะกว่าแต่ก่อน คราวนี้ผมได้รับแจ้งจาก Line Group ที่ผมสร้างไว้เพื่อพูดคุยกับผู้เคยอบรม Zimbra  กับผม  คุณ KorLid (@Korlid)  ได้ส่งตัวอย่าง Phishing Email เป็นไฟล์ในรูปแบบ eml มาให้ผม ซึ่งผมได้ลองเปิดดูโดยใช้โปรแกรม Email Client ที่ใช้งานอยู่ เจอ Email หน้าตาแบบนี้ครับ

ตัวอย่างข้อความใน phishing Email

  Email ที่ว่า มีรายละเอียดที่น่าสนใจ ดังนี้ครับ 

  • จ่าหน้าว่าถูกส่ง Email Address ที่ชื่อ domain เป็นของ  ISP  เจ้าดังรายหนึ่ง (ผมขอไม่เปิดเผยนามละกัน) ซึ่งทำให้ phishing email นี้มีความน่าเชื่อถือเพิ่มขึ้น 
  • เนื้อ Email จะมีข้อความเป็นภาษาไทย บอกประมาณว่า ขนาด Mailbox (กล่องจดหมาย)  ใกล้เต็ม ให้ลบ Email ทิ้งไปบ้าง  อันนี้ดูแล้วมีเหตุผล
  • ลงท้าย Email บอกให้ตรวจสอบบัญชีภายใน 24 ชั่วโมง แต่ถ้าไม่ทำ ต้องยืนยันบัญชี โดยการ click ที่ link  ข้อนี้นี้ไม่น่าจะใช่ละ 

ถ้าลอง click ไป จะเจอ website ให้เรากรอก User , Email , Password ตามรูป 



ถึงจุดนี้ หลายคนที่มีประสบการณ์ หรือเคยเป็นผู้ดูแลระบบ Zimbra ก็คงเริ่มเห็นข้อพิรุธหลายอย่าง ตามนี้ 

  1.  Email ทำให้ Mailbox เต็ม ทำไมต้องยืนยันตัวตนด้วย อย่างมาก user คนนั้นๆ ก็แค่รับ Email ใหม่ๆ ไม่ได้  อยากให้รับ Email ใหม่ๆ ได้ ก็ ไปที่ Zimbra Web Client ที่เคยใช้งานกัน  ทำการ Login เสร้จแล้วก็ลบ Email เก่าๆ ทิ้งก็เรียบร้อย 
  2. เมื่อกดที่ link   website ที่แสดงขึ้นมาตามรูป จะเห็น url แปลกๆ  ไม่ใช่ domain ขององค์กรเรา ไม่ใช้ domain ของ Zimbra
  3. ผมได้ลองกรอกข้อมูล พบว่ามีจุดที่ผิดปกติอีกอย่างคือ เวลากรอกในช่อง  PASSWORD และ CONFIRM PASSWORD   ตัวอักษรที่พิมพ์เข้าไปไม่มีการปิดบังอะไรเลย แทนที่เวลากรอก เราไม่ควรมองไม่เห็นตัวอักษรที่เราพิมพ์ แต่เห็นเป็น *  แทน ซึ่งกรณีนี้ พิมพ์อะไรก็ขึ้นมาตามตัวอักษรที่ิพิมพ์  

สังเกตุถึงตรงนี้ แน่นอกครับเป็น phishing email แน่นอน


จะส่ง Phishing Email หลอกเราไม่ทำไม 

    จากรูปด้านบน เค้าจะหลอกเอาข้อมูล ชื่อ นามสกุล Email address พร้อมทั้ง password จากเราไป คำถามก็คือ เอาไปแล้วได้อะไร เท่าที่เคยเจอมา เค้าจะทำเพื่อ 

  • เอาข้อมูลนี้ มา hack account ของเราบน Zimbra  และใช้ประโยชน์จาก account ของเราในการส่ง Spam ขายของ 
  • ใช้ Account ของเราที่ถูก hack ได้แล้วนี้เป็นต้นทางในการส่ง Phishing Email ไปยัง User อื่นๆ ที่อยู่ใน email domain เดียวกันกับของเรา หรือ Email address อื่นๆ ที่เราเคยพูดคุย ต่อไปอีก  
  • ส่ง email ไปยังคู่ค้าเราโดยดูจาก Email ที่เคยรับและส่ง หลอกว่าถ้ามีการค้าขายกัน ให้โอนเงินเข้าบัญชีของ hacker แทนบัญชีเดิม อันนี้น่ากลัว โดยกันที่เสียหายเป็นหลักล้านบาทก็เคยได้ยิน และไม่ค่อยเป็นข่าว เพราะเสียหน้า เสียชื่อด้วย 


แจ้งเตือนไว้ให้ทราบนะครับ สำหรับผู้ดูและระบบ แจ้งเตือนผู้ใช้หรือ user ในองค์กรกันไว้ด้วยนะครับ 

ศิวัฒน์ ศิวะบวร

วันอังคารที่ 16 กรกฎาคม พ.ศ. 2562

อันตราย เตือนภัยช่องโหว่ด้านความปลอดภัยของ Zimbra (CVE-2016-9924, CVE-2018-20160, CVE-2019-9670)

อันตราย เตือนภัยช่องโหว่ด้านความปลอดภัยของ Zimbra (CVE-2016-9924, CVE-2018-20160, CVE-2019-9670)

ประมาณต้นเดิือน พฤษภาคมที่ผ่านมา ผมได้รับข้อความผ่านทาง Facebook Fanpage ของ Thai Zimbra  จาก คุณ Mana Saringkanratana‎ ว่ามีการพบ ช่องโหว่ด้านความปลอดภัย ของ Zimbra สามตัว คือ  CVE-2016-9924, CVE-2018-20160, CVE-2019-9670  ซึ่ง hacker สามารถใช้ช่องโหว่ทั้งสามตัวนี้ประกอบกัน  เป็นช่องทางเรียกใช้คำสั่ง ของ Linux บนเครื่อง Zimbra ได้ (ศัพท์เทคนิคเรียกว่า Remote Code Execution)  ซึ่งทำให้ผมต้องลองหาข้อมูลดูว่าร้ายแรงแค่ไหน อาการเป็นอย่างไร และป้องกันอย่างไร

เท่าที่พบ มีหลาย  web site ที่พูดถึง ซึ่งถ้าสนใจเชิงลึก ลองไปศึกษาดูกันเองละกันครับ ดูได้ตาม website อ้างอิงท้ายบทความ

Version  ของ Zimbra  ที่มีปัญหา 
 เท่าที่มีการรายงาน จะเกิดขึ้นกับ Zimbra Version 8.5 ถึง 8.7.11  โดยจะเกิดกับเครื่องที่มีการเปิด Port 80 หรือ 443 เพื่อให้มีการใช้  web client ของ Zimbra จาก Network ภายนอกได้ ซึ่งก็เปิดกันเป็นปกติอยู่แล้ว แปลว่า Zimbra version ข้างต้นไม่ปลอดภัย

อาการ
ถ้าถามผม โดน Remote Code Execution ไปเนี่ย โดนเจาะไปถึงระดับ Linux เรียกว่าทำอะไรได้เกือบทุกอย่างเลยครับ ถ้าให้ดี  คงต้องมีการตรวจสอบไปถึงระดับ Linux เลยว่ามีโปรแกรมแปลกปลอมอะไรถูกฝังไว้ หรือ มีโปรแกรมแปลกๆ อะไรทำงานอยู่หรือเปล่า
อาการของเครื่องที่โดน hack นี้ เท่าที่มีรายงาน และที่ผมเจอ จะมีอาการเป็นสามกลุ่มใหญ่ๆ คือ

1)  Zimbra ไม่ทำงานหรือทำงานผิดพลาด เช่น Start เสร็จแล้ว ตาย Restart แล้วก็ตาย

2)   Zimbra ดูเหมือนทำงานปกติดี แต่มีการฝังโปรแกรม บน Linux และเรียกโปรแกรมนี้ขึ้นมาทำงาน โดย โปรแกรมที่เจอว่ามีการฝังไว้ คือ
2.1 /tmp/zmcat,  /var/tmp/zcat , /tmp/l.sh, /tmp/s.sh 
 พวกนี้จะเป็น โปรแกรมที่ hacker  เอามาวางไว้ ถึงแม้จะชื่อเหมือนหรือคล้ายกับ คำสั่งของ zimbra  ก็ตาม แต่ปกติ ไม่น่าจะมี คำสั่งมาอยุ่ที่  /tmp หรือ /var/tmp
2.2 /opt/zimbra/log/zmswatch
ซึ่งถ้าใช้คำสั้ง file  ตรวจสอบดูไฟล์นี้ จะพบว่าเป็นคำสั่งทีเรียกใช้งานได้ (executable)  ซึ่งผิด ปกติครับ  ตัวอย่างเช่น

[zimbra@zimbra log]$ file /opt/zimbra/log/zmswatch zmswatch: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped

ปกติแล้วใน /opt/zimbra/log จะเก็บ log file ของ Zimbra ซึ่งเป็น Text ไฟล์ หรือไม่ก็เป็น log file ที่ถุก zip ไว้ (ไฟล์ลงท้ายด้วย .gz)  ไม่ควรจะมีคำสั่งใดๆมาเก็บไว้ที่ directory นี้

3) มีแอบสร้าง การสร้าง Account ของ Zimbra ขึ้นมา  อันนี้ต้องลองไล่ดูเองนะครับ ถ้าเห็นมี account บน Zimbra  ชื่อแปลกๆ ละก็ตรวจสอบให้ดีๆ ว่าเป็นของ Zimbra  หรือของคนในองค์กรหรือเปล่า

การปิดช่องโหว่ 
จากข้อมูลที่หามา มีสองวิธีที่พวกเราน่าจะพอทำกันได้ครับ
วิธีแรก คือ Upgrade เป็น Version 8.7.11 หรือ 8.8.x ครับ  ซึ่งถ้าจะใช้การ Upgrade มีคำแนะนำอยู่สองข้อ คือ Backup ของเดิมไว้กันเหนียว และ ทดลองที่ระบบ Test ก่อนทำที่เครื่องจริงหรือที่เราเรียกว่าระบบ Production  ที่ต้องทำแบบนี้เพราะเคยมีประวัติว่ามีคน Upgrade Zimbra ที่เครื่อง Production พอทำเสร้จแล้วเจอว่า Zimbra ทำงานผิดพลาด เรื่องนี้อย่าชะล่าใจนะครับ บางที่การ Upgrade จากต้นทาง Version เดียวกัน ไปเป็น Version ใหม่เดียวกัน เครือง A ไม่มีปัญหาแต่เครื่อง      B มีปัญหา ก็เจอมาแล้ว


วิธีที่สอง สำหรับ zimbra version ตั้งแต่  8.5 แก้ไขไฟล์ ปิดช่องโหว่ซะ โดยแก้ไขไฟล์ที่ชื่อ /opt/zimbra/mailboxd/etc/service.web.xml.in  (อย่าลืม copy  ไฟล์ดั้งเดิมเก็บไว้ด้วยนะครับ กันเหนียว )
ขั้นตอนก็คือ เปิดไฟล์ที่ว่านี้ขึ้นมาหาบรรทัด ทีมีคำว่า ProxyServlet กับบรรทัดที่มีคำว่า   AutoDiscoveryServlet 

...
<servlet-name>ProxyServlet</servlet-name>
    <servlet-class>com.zimbra.cs.zimlet.ProxyServlet</servlet-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>allowed.ports</param-name>
      <param-value>%%zimbraMailPort%%, %%zimbraMailSSLPort%%, 7070</param-value>
...
 <servlet-name>AutoDiscoverServlet</servlet-name>
    <servlet-class>com.zimbra.cs.service.AutoDiscoverServlet</servlet-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>allowed.ports</param-name>
      <param-value>%%zimbraMailPort%%, %%zimbraMailSSLPort%%, %%zimbraAdminPort%%, 7070, 7443</param-value>
    </init-param>
...

ซึ่งใน Tag ทั้งสองอันนี้ ให้ดูที่บรรทัด  <param-value> ให้หาคำว่าคำว่า %%zimbraMailPort%%, %%zimbraMailSSLPort%%,

 แล้วลบออก  ผลลัพท์จะได้ตามนี้ครับ

  <servlet>
    <servlet-name>ProxyServlet</servlet-name>
    <servlet-class>com.zimbra.cs.zimlet.ProxyServlet</servlet-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>allowed.ports</param-name>
      <param-value>7070</param-value>
    </init-param>
    <load-on-startup>8</load-on-startup>
  </servlet>
...
  <servlet>
    <servlet-name>AutoDiscoverServlet</servlet-name>
    <servlet-class>com.zimbra.cs.service.AutoDiscoverServlet</servlet-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>allowed.ports</param-name>
      <param-value>%%zimbraAdminPort%%, 7070, 7443</param-value>
    </init-param>
    <load-on-startup>12</load-on-startup>
  </servlet>

เสร้จแล้ว save file และทำการ restart zimbra สักรอบเป็นอันเสร็จ

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

ถ้ามีข้อมูลหรือเจออะไรแปลกๆ ที่น่าจะเป็นผลจากช่องโหว่ด้านความปลอดภัยของ Zimbra ชุดนี้ ส่งข้อมูลมา update กันหน่อยนะครับ


website อ้างอิง 
https://portswigger.net/daily-swig/multiple-rce-vulnerabilities-impact-all-versions-of-zimbra-email-software
https://lorenzo.mile.si/zimbra-cve-2019-9670-being-actively-exploited-how-to-clean-the-zmcat-infection/961/
https://blog.tint0.com/2019/03/a-saga-of-code-executions-on-zimbra.html
https://forums.zimbra.org/viewtopic.php?t=66005