วันอังคารที่ 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

ทำยังไงให้ส่ง Email ที่ใหญ่กว่า 7 MB บน Zimbra ได้

ปัญหาของผู้ใช้ Zimbra ที่เจอกันบ่อยๆ คือ พยายามจะ Attach file ที่มีขนาดใหญ่  หรือ ขนาดโดยรวมของ Attach file มีขนาดใหญ่ แล้ว Zimbra ไม่ยอม  ขึ้น error ประมาณว่า

“Attachment failed since the item would exceed the size limit of  N MB”

ถ้าอยากจะเพิ่ม limit หรือข้อจำกัดให้สามารถ Attach file ขนาดใหญ่ๆ บน Zimbra ได้จะทำอย่างไร

วิธีการปรับแต่ง 
ที่จริงเราสามารถปรับค่า parameter ที่จำกัดขนาดของ attach file บน Zimbra ได้ครับ แต่ต้องอาศัย Account ของผู้ดูแลระบบ (Account ผู้ใช้งานธรรมดาของ Zimbra ไม่มีสิทธินะครับ) โดย Login ไปที่ web GUI  ป้อน URL https://zimbra_hostname:7071 โดยแทนที่ zimbra_hostname ด้วย IP Address หรือ Hostname ของ zimbra 

โดย parameter ที่ต้องปรับแก้ มีสองจุดครับ 

1) ปรับค่า Max Upload File Size 

จุดแรกที่เราต้องปรับคือ Max Upload File Size หรือขนาดที่ใหญ่ที่สุดของไฟล์ที่ Upload ขึ้นไปที่ Zimbra ได้ โดยไปที่ 

Configure >> Global Settings  





























ที่หัวข้อ General Information  ดูที่บรรทัด 

Maximum size of a file uploaded from the desktop (KB) 

ปรับค่า Max Upload File Size 










ค่านี้เป็นตัวกำหนดขนาดที่ใหญ่ที่สุดของไฟล์ 1 ไฟล์ (หน่วยเป็น KB) ทีสามารถ Upload ไปที่ Zimbra ได้ ซึ่งการ attach file ก็ถือว่าเป็นการ upload ไฟล์ขึ้นไปที่ Zimbra อย่างหนึ่งครับ Default อยู่ที่ประมาณ 10 MB แต่จริงๆ ได้ไม่ถึงหรอกครับ เดี๋ยวไว้บอกที่หลัง ว่าทำไมไม่ได้ 

หลังจากปรับค่าตามที่ต้องการไปแล้ว ก็กดปุ่ม save ด้วยครับ 

2) ปรับค่า Maximum Message Size 
หลังจากผ่านขั้นตอนดังกล่าวแล้ว ยังไม่จบนะครับ เรามี parameter ที่ต้องปรับอีกที่หนึ่ง คือค่า Maximum Message Size

วิธีการ ไปที่ Configure >> Global Settings  >> MTA  >> 

ที่หัวข้อ Messages  หา parameter บรรทัด Maximum messages size(KB) 

การปรับค่า Maximum message size

ค่านี้ เป็นค่าที่กำหนดขนาดที่ใหญ่ที่สุดของ Email 1 ฉบับ ที่ส่งได้ในระบบ ซึ่งค่านี้จะเป็นกำหนดขนาดของ Email ทั้งหมด ซึ่งรวม เนื้อ email + email header + attach file ทั้งหมดครับ ค่าที่ระบุ หน่วยเป็น KB (Kilobyte) 

ปรับแก้แล้ว อย่าลืม save ด้วยนะครับ 

ปัญหาของการกำหนดค่า 

สำหรับคนที่เคยเจอกับปัญหานี้ ถ้าลองสังเกตุดีๆ จะเห็นนะครับ ว่าค่า default ของ  parameter ทั้งสองตัว คือ 10Mb  แต่เวลา attach file จริงๆ ได้ไม่เกิน 7Mb  ?

ที่เป็นแบบนี้ ไม่แน่ใจว่าเป็น Bug ของ Zimbra v8.x หรือเปล่า แต่ก็เป็นปัญหาที่เกิดขึ้นจริงๆครับ ว่าขนาดที่ zimbra อนุญาต จะเล็กกว่าค่าที่เราระบุที่ parameter ทั้งสองตัว วิธีแก้ปัญหาแบบอ้อมๆ ของผมก็คือ ระบุค่าทั้งสองจุดนี้ ให้มากกว่าค่าจริงๆ ที่เราต้องการจริงๆ สักหนึ่งในสาม เช่น ต้องการ 10MB  ผมจะระบุค่าเป็น  13 หรือ 14 MB ครับ 

หวังว่าจะได้ความรู้เพิ่มเติมไปใช้งาน หรือแก้ปัญหากันนะครับ 

วันอังคารที่ 26 มิถุนายน พ.ศ. 2561

เตือนภัย Email ล่อลวง จู่โจมผู้ใช้ Zimbra โดยเฉพาะ

 ผมได้รับ email ฉบับนี้มาจากลูกค้าของผมเอง คนไม่รู้เป็นดูผ่านๆ เหมือนกับ เป็น Email  ที่ส่งจากระบบ Zimbra เป็น email หลอกให้เราไปป้อนข้อมูลการ Login ระบบ Zimbra ของเรา เพื่อจะเอา ข้อมูลย้อนกลับมาเจาะระบบเรา หน้าตา Email ประมาณนี้ครับ  แปลเป็นไทยด้วย  เห็นบอกว่ามี version เป็นภาษาอังกฤษด้วยนะ 


แต่ถ้าดูดีๆ จะเห็นว่ามีจุดผิดปกติหลายอย่างครับ  

 1)ส่งมาจาก @msn.com  ... ส่งมาจากคู่แข่งกัน Zimbra เลยเนี่ยนะ 

 2) Email postmaste@msn.com  ไม่มีครับ ปกติจะเป็น postmaster@msn.com ต่อให้ email ถูกmsn ก็ไม่มีธุระอะไรกับ Zimbra อยู่แล้ว  

3) ปลายทางเป็น postmaste@msn.com ไม่ใช่ Email Address  ของเรา

4) URL ใน Email (http://validate-your-accout.......ng ) ชี้ไป  domain อะไร อยู่ที่ประเทศไหนก็ไม่รู้  ไม่เกี่ยวอะไรกับ องค์กรเรา และ Zimbra เลย 

 5) ถ้าจะซ่อมบำรุง server หรือเช็คว่า Account เราบน Zimbra มีการใช้งานหรือเปล่า ไม่จำเป็นต้องขอ User ครับ Admin ของ Zimbra สามารถดูได้เลยจากหน้าจอ Admin Cnosole

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

 ถ้าคุณเจอแบบนี้ อย่าคลิ๊กที่ URL นะครับ ดีไม่ได้อาจจะเป็น URL ที่ใช้ Download Ransomware  มาก็ได้ เราเตือนท่านแล้วนะ  

 

 แต่สำหรับผม....ไม่กลัว  มาลองดูกันซะหน่อย เดี๋ยวจะหาว่าไม่แน่จริง 

  พอลองคลิกที่ URL เครื่องคอมพิวเตอร์ของเรา จะเปิด Web browser และไปที่หน้าจอนี้ 


ฮั่นแน่ หน้าจอคล้ายๆ หน้าจอ Login ของ Zimbra เลยนะครับ มี Copyright ของ Zimbra ด้านล่างด้วย 

 ถ้ามี User ในองค์กรสักคน เผลอไปให้ข้อมูลการ login ที่  URL นี้เข้า  รับรอง Account บน Zimbra โดน Hack แน่นอน 

 - ระดับเบา ก็แค่ เอา Account เรา ไปส่ง Spam  เครื่องจะอืดๆ ช้าๆ อาการที่พอสังเกตุได้คือ จะเริ่มส่ง Email ไป free email เช่น Gmail Hotmail ไม่ออก เพราะทาง Gmail หรือ Hotmail เค้าเห็นว่าเราส่ง Spam เลย ปฏิเสธ Email ที่ส่งจาก เครื่อง Zimbra ของเรา 

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

บางคนโชคดี โดนทั้งสองอย่างเลย สองเด้ง hacker (ไม่ใช่เจ้ามือ) กินรวบ 

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

 

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

   

วันพุธที่ 14 มีนาคม พ.ศ. 2561

Zimbra (โดน) Hack 2016 (ตอนที่ 2)

ในบทความครั้งที่แล้ว เรื่อง Zimbra โดน Hack 2016 (ตอนที่ 1) ผมได้เขียนถึงการเจาะระบบ Email Server แบบเดิมๆ แต่อย่างที่บอกครับ หลังจากที่ผมได้ติดตามกระบวนการ Brute force เพื่อพยายาม Hack account Zimbra (และ Email Server) มาหลายปี เห็นการเปลี่ยนแปลงรูปแบบ จนในปัจจุบันมีวิวัฒนาการ ที่ทำให้การป้องกันและการตรวจจับยากยิ่งขึ้น  เราจะมาพูดถึงเรื่องนี้ต่อกันครับ

Brute Force แบบใหม่ 
รูปแบบของการเจาะระบบ ที่พัฒนาไป มีดังนี้ครับ

1) พยายาม Hack โดยใช้วิธีการ Login เข้ามาทาง port 25,  465 หรือ 587 (smtp authentication)
ช่องทางนี้ เป็นช่องทางที่ป้องกันได้ยาก เพราะเป็น Port ที่ Email Server ทุกเครื่องต้องเปิดไว้เพื่อรับ Email จากภายนอก หรือ ผู้ใข้ในองค์กร แต่ส่ง email จากภายนอก

2) ต้นทางในการ hack จะมาจากหลายๆ IP Address จากหลายๆประเทศ สลับกันไปมา ตัวอย่างเช่น


3) เป้าหมายการ Brute Force จะทำกับ Account หลายๆ Account สลับกันไป เช่น พยายาม login   user1@mydomain 1-5 ครั้ง ถ้าไม่ได้ จะเปลี่ยนเป้าหมายเป็น Account อื่นๆ  user2@mydomain.com และ user3@mydomain.com ไปเรื่อยๆ

4) การ Brute Force จะทำในช่วงเวลาห่างๆ กัน เช่นประมาณ 20 วินาที จะทำแค่ 1 ครั้ง

5) ถ้ามี Account ถูกเดา password ได้ Hacker จะใช้ Account พวกนี้ส่ง spam โดยใช้วิธีส่ง มาให้
เครื่อง Zimbra เราส่งต่อ (Relay) โดยเครื่องต้นทางจะมาจากหลายๆ เครื่อง สลับกันไปมา

พฤติกรรมในข้อ 2-5  ผมวิเคราะว่า Hacker พยายามหลีกเลี่ยง การตรวจจับและ block การ hack โดยใช้โปรแกรมที่ตรวจสอบรูปแบบการ hack เช่น fail2ban ซึ่งผู้ดูแลระบบบางท่านติดตั้งไว้ ซึ่งข้อเสียของวิธีนี้คือ hacker สามารถจะปรับเปลียนรูปแบบการ hack ไปเรื่อยๆ ซึ่ง fail2ban ดักจับไม่ได้ ซึ่งเป็นเรื่องที่คาดเดาได้อยู่แล้ว แต่ผมไม่คิดมาก่อนว่า Hacker จะพยายามปรับรูปแบบเพีอหลีกเลี่ยงการตรวจจับได้เร็วขนาดนี้

6) Spam Email จะค่อยๆถูกส่งออก ไม่ถูกถล่มส่งเหมือนเมื่อก่อน และจะกระจาย Domain เป้าหมาย

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

7) Spam  Email ที่ถูกส่งออกแต่ละฉบับจะระบุผู้รับแค่คนเดียวแทนที่จะระบุที่ละหลายๆคนต่อ spam mail หนึ่งฉบับ

ส่วนพฤติกรรมที่เปลี่ยนไปในข้อ  6 และ 7   ทำให้ระบบที่ถูก hack ส่ง spam ได้เนียนจนผู้ดูและระบบไม่รู้ตัว และไม่สังเกตุเห็นความผิดปกติ

8) เป้าหมายของ spam Email จะหลีกเลี่ยงผู้บริการ Free Email เจ้าดังๆ เช่น Gmail, Hotmail, Yahoo

สาเหตุในข้อนี้ ผมคาดว่าเพราะระบบตรวจจับ  Spam ของ Free Email เจ้าดังและมีประสิทธิภาพ สามารถตรวจสอบและแยกแยะพฤติกรรมของการส่ง Spam ได้รวดเร็ว และหลายๆครั้ง ถึงแม้ Spam Email ส่งไปถึง Account เป้าหมาย โอกาสที่ spam จะไปอยู่ใน Spam หรือ Junk Folder มีสูง และโอกาสที่ Email Server ที่ถูก Hack มาได้จะถูก  Block  เพราะมีพฤติกรรมส่งสัยว่าส่ง Spam ออกมา ก็เป็นไปได้อีกเช่น

ซึ่งถ้า Email Server ถูก block จะเกิดความผิดปกติขึ้นในระบบ Email Server ที่ส่ง Spam  ออกไป จะทำให้ผู้ดูและระบบรู้ตัว Hacker เลยพยายามหลีกเลี่ยง

เท่าที่ผมเคยให้คำปรึกษาและแก้ปัญหาเรื่อง Zimbra ถูก hack ในช่วงสองสามปีที่ผ่านมาทาง  Thai Zimbra Facebook Fanpage  พบว่าส่วนใหญ่จะรู้ตัวกันตอนที่ส่ง  Email ไม่ออก เนื่องจาก Mail Server ปลายทางปฏิเสธการรับ Email จาก Zimbra ซึ่งโดน Hack กลายเป็นเครื่องส่ง Spam ไปเรียบร้อยแล้ว


ป้องกันและตรวจสอบได้อย่างไร 

ในกรณีของ Zimbra ทำได้ดังนี้ครับ
1)  กำหนด Password Policy กับ Failed Login Policy รายละเอียดอยู่ในบทความที่ผมเคยเขียนไว้แล้ว ตามนี้ครับ
http://thaizimbra.blogspot.com/2013/03/zimbra-tips-and-technique-7-password.html
http://thaizimbra.blogspot.com/2013/03/zimbra-tip-and-technique-8-password.html
http://thaizimbra.blogspot.com/2013/03/zimbra-tips-and-technique-9-password.html
http://thaizimbra.blogspot.com/2013/04/zimbra-tip-and-technique-10-failed.html
ลองอ่านดูนะครับ

2) หมั่นดู Daily Mail Report ที่ส่งจากระบบ Zimbra ไปให้ admin account  ทุกวัน
Email นี้จะมี Subject  เป็น Daily Mail Report for yyyy-mm-dd   ซึ่ง Email นี้จะสรุปการรับส่ง Email และ Error ที่เกิดขึ้น ซึ่งจะทำให้เห็นพฤติกรรมที่อาจผิดแปลกไป


3) หมั่นคอยตรวจสอบ log file ของ Zimbra  /var/log/zimbra.log และ /opt/zimbra/log/audit.log ว่ามีความพยายาม login มาจาก IP address หรือ host ที่ User ในระบบไม่น่าจะ login เข้ามา เช่นต่างประเทศหรือไม่

มาถึงตรงนี้ ผมอยากบอกกับผู้อ่านทุกท่านว่า Zimbra เป็นระบบที่ดีระบบหนึ่งนะครับ แต่ที่เห็นว่าถูก hack กันได้ เป็นเพราะความไม่รู้หรือไม่ระวังของผู้ติดตั้งหรือผู้ดูและระบบ  และการ Hack ระบบ Email Server  นั้นไม่ได้เกิดขึ้นแต่เฉพาะกับ Zimbra นะครับ  Email Server ทุกเครื่องเป็นเป้าหมายหมด ทุกครั้งเวลามีคนมาปรึกษาผมเรื่องเกี่ยวกับระบบโดน Hack ผมมักจะบอกว่า ถ้าคุณตั้ง Mail  Server และเปิดรับ Email จากภายนอกเมื่อไหร่ คุณก็กลายเป็นเป้าของการถูก hack  ทันที เพียงแต่จะโดน hack สำเร็จหรือไม่ โดย hack แล้ว รู้ตัวหรือเปล่า และสุดท้าย แก้ไขได้ไหม

ถ้าสงสัยว่าระบบ Zimbra ที่คุณดูแลอยู่ ว่าจะถูก hack และกลายเป็นเครื่องส่ง Spam  ติดต่อผมได้ทาง Thai Zimbra Facebook Fanpage ครับ



เมื่อ Zimbra มองไฟล์แนบ pdf ที่ต้องใช้ password เปิดอ่าน ว่าเป็น virus

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

เคยเจอไหมครับ อยู่ๆ ก็มี email แจ้งมากจาก account ที่ชื่อ admin บนเครื่อง Zimbra ของเรา โดยมีหัวเรื่องว่า


       VIRUS (Heuristics.Encrypted.PDF) in mail TO YOU from ......

เนื้อหาภายใน พอจะจับใจความได้ว่ามี email ส่งมาจากใครคนหนึ่ง ใน Email มี virus เนื้อหานอกนั้นคนทั่วไปอ่านแล้วไม่ค่อยจะเข้าใจ  ตัวอย่าง Email แจ้งเตือน หน้าตาทำนองนี้ครับ


สาเหตุที่เราได้รับ Email แจ้งเตือน

คำถามคือ มันเกิดอะไรขึ้น  ผมขอสรุปสิ่งที่เกิดขึ้นให้เข้าใจง่ายๆ ตามนี้ครับ 

  1.  มีคนส่ง email มาหา account บนเครื่อง zimbra  ซึ่ง email ที่ส่งมาแนบไฟล์ที่ Zimbra ไม่สามารถเปิดอ่านไฟล์แนบ เพื่อตรวจสอบได้  ส่วนใหญ่ที่เจอกันบ่อยๆ จะเป็นไฟล์ pdf ที่เมื่อเปิดอ่านจะถาม password ก่อน  และเท่าที่ผมเจอส่วนใหญ่ในไทย เกือบ 100% คนส่งคือธนาคารครับ ส่งข้อมูลที่ค่อนข้างเป็นข้อมูลส่วนตัว ให้กับลูกค้าของธนาคาร 
  2. Zimbra จะกัก email address ที่แนบ ไฟล์ pdf ที่ต้องใช้ password เพื่อเปิดอ่านนี้ไว้ใน account พิเศษที่เป็น  virus quarantine account (อ่านเรื่อง virus quarantine account ได้จากบทความเรื่อง Account พิเศษของ Zimbra ที่ห้ามลบทิ้ง )
  3.  สุดท้าย  Zimbra จะส่ง email  แจ้งเตือนไปยัง 
  • เจ้าของ email address ปลายทาง ของ email เจ้าปัญหานี้ 
  • Account ที่ทำหน้าที่ admin ระบบ บนเครื่อง Zimbra ซึ่งปกติ จะชื่อ admin
แล้วเราจะทำอย่างไรดี

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

แต่ถ้าคุณเป็นผู้ดูแลระบบ มีสิ่งที่ต้องตัดสินใจอยู่สองอย่างคือ 
  1. ถ้ามีคนส่ง email ทำนองนี้มาอีก จะให้ zimbra กัก email แบบนี้เหมือนเดิมหรือไม่ หรือจะให้ Zimbra ปล่อย Email แบบนี้ผ่านไปให้คนรับเลย 
  2.  ถ้า user ที่เป็นคนรับ email อยากได้ email และไฟล์แนบที่ถูกกักไว้ จะเอาให้ user ได้อย่างไร 

กำหนดให้ Zimbra ไม่กัก Email ที่แนบไฟล์ที่ไม่สามารถเปิดอ่านได้ 

ถ้าตัดสินใจให้ Zimbra ไม่กัก Email ทำนองนี้ไว้ต่อไปในอนาคต ต้องทำแบบนี้ครับ 
 1. Login Zimbra Admin Console (https://zimbra-hostname:7071) ด้วย Account ที่มีสิทธิ admin  Zimbra  ปกติจะเป็น Account ที่ชื่อ admin
2. ดูที่คอลัมน์ด้านซ้ายของ  Admin Console เลือก Configure  และ Global Settings ตามลำดับ 
 3. เลือกหัวข้อ AS/AV  และดูที่ด้านขวาในหัวข้อ  “Antivirus Setting”  เอาเครื่องหมายติ๊กถูกออกจาก บรรทัด “Block encrypted archives”  เสร็จแล้ว กดปุ่ม “Save” (อยู่แถวๆ มุมบนขวาของหน้าจอ )


หลังจากนี้ ถ้า Zimbra ได้รับ email ที่มีไฟล์แนบที่เปิดออกเพื่อตรวจเช็คไม่ได้  Zimbra จะส่งต่อไปให้กับคนรับเหมือน Email อื่นๆ ตามปกติ 

Email เก่าๆ ที่ถูกกักไว้

คำถามที่ตามมาก็คือ แล้ว Email ที่ถูกกักไว้ที่ Virus Quarantine Account หละ จะทำอย่างไร  

ถ้า admin ของ Zimbra ได้ทำการยกเลิกการตรวจสอบตามวิธีการข้างต้นแล้ว  admin สามารถไปที่ virus quarantine account (โดยการใช้ view mail) และ forward email ไปยังผู้รับได้ 

แต่ถ้า admin Zimbra ตัดสินใจที่จะให้ Zimbra ยังคงกัก email ทำนองนี้ไว้ ก็คงต้อง download attach ไฟล์ใน email ที่ถูกกักไว้ ไปส่งให้ user (โดยไม่ใช้ระบบ Email บนเครื่อง Zimbra) ครับ เช่น download มาลง file server หรือ thumb drive 

ซึ่งการเข้าถึง Email ที่ถูกกักไว้ ก็ต้องไปที่ Virus Quarantine Account โดยใช้วิธีการ view mail  เหมือนกันครับ


หวังว่า คงจะมีประโยชน์บ้าง ไม่มากก็น้อยครับ 


วันจันทร์ที่ 8 สิงหาคม พ.ศ. 2559

Zimlet : Plugin ของ Zimbra และการปิดการใช้งาน

Zimlet  คืออะไร 
สำหรับคนที่ยังไม่ทราบ Zimlet ก็คือ Addon หรือ Plugin ของ Zimbra นั่นเองครับ ทำให้เราเพิ่ม feature หรือความสามารถของ Zimbra ได้ โดยไม่ต้องไปแก้ไข source code โดย การพัฒนา Zimlet ขึ้นมาต้องทำตามมาตรฐานการสร้าง Zimlet แต่ยังไงก็ต้องเขียนโปรแกรมอยู่ดี
 มี Zimlet หลายอยู่ตัวถูกติดตั้งมาให้เรียบร้อยตั้งแต่ตอนติดตั้ง Zimbra  และมีอีกหลายๆ ตัวที่สามารถไป download มาติดตั้งเพิ่มเติมได้ (มีคนใจดีเขียนไว้) ซึ่งหาได้จาก 
https://zimbra.org/extend/ แต่การติดตั้งต้องระวังนะครับ ซึ่งผมมีข้อแนะนำดังนี้ 

  1. ดูด้วยว่า Zimlet ที่เราสนใจ ใช้งานได้กับ Zimbra Version ที่เรามีอยู่หรือเปล่า 
  2. ทดลองลงกับเครื่องทดสอบ ก่อนติดตั้งกับ Zimbra ที่ใช้งานจริงๆ
สำหรับข้อ 2 นี้มีเหตุผลครับ เพราะน้องที่บริษัทผมเคยเจอว่า มี Zimlet บางตัว บอกว่าใช้งานกับ Zimbra version ที่เรามีได้ แต่พอลงไป ใช้งานไม่ได้ แถม stop zimbra แล้ว start ไม่ขึ้น  ถอนการติดตั้ง (uninstall) Zimlet ตัวนี้ออกจากระบบก็ยัง start Zimbra ไม่ได้ สรุปเลยต้องลง Zimbra ใหม่ แต่พอดี เป็นระบบทดสอบ ไม่ใช้เครื่องที่ใช้งานจริงๆ เลยรอดตัวไป 

Zimlet หลายๆตัวจะทำงานอยู่หลังฉาก ไม่แสดงตัวให้ผู้ใช้เห็น แต่ก็มีอีกหลายๆ ตัวเช่นกันที่แสดง Icon ออกมาที่หน้าจอ ตามรูปตัวอย่างนี้ครับ 

ตัวอย่าง Zimlet ที่แสดง icon บนหน้าจอ web client ของ Zimbra

จากประสบการณ์ Zimlet ที่มีมาให้หลายๆตัว ก็มีประโยชน์ แต่ก็มีหลายๆตัวที่ไม่ค่อยมีประโยชน์ เวลาที่ผมไปอบรม Zimbra ให้ผู้ดูแลระบบหลังการติดตั้ง  หลายๆครั้งที่มักจะถูกขอร้องให้ปิด Zimlet พวกที่แสดง icon นี้ออกไปเลย (โดยเฉพาะ WebEx กับ Y Emoticons)  เพราะไม่มีประโยชน์และผู้แลระบบก็ขี้เกียจตอบคำถามผู้ใช้ Zimbra ด้วย   

วิธีปิดการใช้งาน (Disable) Zimlet และ ถอนการติดตั้ง
  1. Login Admin Console (https://zimbra_hostname:7071) เสร็จแล้วไปที่ Home -> Configure -> Zimlets 
  2. เลือก Zimlet ที่เราต้องการเปลี่ยนสถานะ 
  3. คลิ๊กเมาส์ขวา เพื่อเปิดเมนู 
  4. เลือก Toggle Status  ซึ่งเลือก option  นี้ จะเป็นการเปลี่ยน status ของ Zimlet สลับไปสลับมาระหว่าง Disabled กับ Enabled  ซึ่ง การ disable คือการกำหนดให้ Zimlet ไม่ทำงาน แต่ยังคงถูกติดตั้งอยู่ในระบบ Zimbra ของเรา ส่วน สถานะของ Zimlet แต่ละตัว ดูได้จาก คอลัมน์ Status 
ขั้นตอนการเปลี่ยน status ของ  Zimlet
แตถ้าเราเลือก option อีกอันคือ Undeploy จะเป็นการ uninstall Zimlet ออกจากระบบครับ 
ทดลองใช้งานกันดูนะครับ 

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

วันจันทร์ที่ 8 กุมภาพันธ์ พ.ศ. 2559

Zimbra โดน Hack 2016 (ตอนที่ 1)

ตั้งแต่ช่วงสามเดือนสุดท้ายของปี 2015 ผมพบว่ามีการจู่โจมระบบ Mail Server อีกระลอกหลังจากที่เงียบ หายไปตั้งแต่ต้นปี

จุดประสงค์ของการเจาะระบบก็เหมือนเดิมครับ คือ Hackerพยายามเอาเครื่อง Zimbra หรือเครื่อง Mail Server ของเราเป็นเครื่องส่ง Spam mail แต่มารอบนี้มีกระบวนการที่แนบเนียนและพลิกแพลงไปกว่าเดิม จนทำให้หลุดรอบระบบตรวจจับบางแบบไปได้ด้วย

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

พยายามใช้เครื่อง  Mail Server  เป็น  Spam Mail Relay  คือกลายเป็นเครื่องที่ทำหน้าที่ส่งต่อ  (Relay)   Spam  จากเครื่องต้นทางของ  Hacker
 ระบบ  Zimbra ที่กลายเป็น  Spam Relay  ส่วนใหญ่เกิดกับ  Zimbra  ที่ติดตั้งไม่ถูกต้อง  หรือตัว Zimbra  เองติดตั้งถูกต้องแต่  Config Firewall  ไม่ถูกต้อง  กระบวนการนี้ แทบไม่ต้องเจาะระบบเลย  แค่ลองใช้เครื่อง Mail  Server เป้าหมายเป็น  Spam Relay ถ้าใช้ได้  ก็เรียบร้อย

เจาะมาทางช่องโหว่ของระบบ  เช่น ทางช่องโหว่ทางด้านความปลอดภัยของตัว  Zimbra  หรือระบบปฏิบัติการ  Linux เช่นเข้ามาทาง  port ssh (TCP port 22)

จู่โจมโดยการเดา  Password ของ  Account บน  Zimbra โดยพยายามเจาะ  Account มาตรฐาน  Account  ที่คาดว่าจะมีในระบบ  รวมไปถึงรายชื่อ Account   ที่ได้มาโดยวิธีอื่นๆ  ซึ่งผมเคยเขียนบทความที่เกี่ยวข้องก่อนหน้านี้แล้วครับ   เช่นจากบทความ  http://thaiZimbra.blogspot.com/2013/12/Zimbra-admin.html



รูปแบบการ Brute Force เพื่อ Hack Zimbra แบบปกติ เมื่อเครื่องต้นทางถูก Block   Hacker จะย้ายไป Hack จากเครื่องใหม่แทน 

ที่ผมเน้นในบทความนี้จะเป็นการเจาะระบบแบบสุดท้าย คือการเดา password ซึ่งรูปแบบการเจาะระบบแบบเดิมๆ นี้ Hacker จะพยายาม login โดยใช้ Account  ของ Zimbra ที่ได้มาโดยวิธีการใดวิธีการใดวิธี การหนึ่ง  โดยปกติ ช่องทางการเจาะระบบ Email จะเข้ามาทาง web client (TCP port 80 หรือ 443),  pop3(s), imap(s) , smtp , และถ้าเป้าหมายเป็น  Zimbra จะเพิ่มช่องทางคือ Admin Console (TCP port 7071)ไปด้วย โดยใช้โปรแกรมที่เขียนขึ้นมาพิเศษทำการทดลอง login เข้ามาตามช่องทางเหล่านี้ ส่วน Password ที่ใช้ในการ login จะได้จากเดาได้จากรายชื่อ Password ที่น่าจะเป็นไปได้ซึ่ง Hacker จะมี list ของ password เป็นหมื่นๆคำ

วิธีนี้ในวงการเรียกว่า Brute Force ครับ

Brute Force แบบเดิมๆ
จากข้อมูลที่ผมได้รับ รูปแบบการ Brute Force (หรือที่บางคนเรียกว่าถูกยิง) ที่ใช้กันก่อนหน้านี้สรุปลักษณะที่เหมือนๆกันได้ดังนี้  คือ

1) Brute Force มาจากเครื่องเพียงเครื่องเดียว ซึ่งถ้าเรา Block เครื่องนี้ Hacker จะเปลี่ยนเครื่องยิงมาจากเครื่องอื่นๆใน Internet แทน

2) จะพยายามเดา password ที่ละ Account โดยยิง password  เป็นชุดติดๆกัน เรียกได้ว่าวินาทีละครั้งเลยทีเดียวเลย  ถ้าพยายามสักพักแล้วไม่ได้ จะเปลี่ยนไปลอง hack กับ Account ชื่อใหม่ๆ บนเครื่องเดิม

3) ถ้าระบบเป้าหมายมี Account ที่ถูกเดา Password ได้สำเร็จ Hacker จะใช้ Account นั้นส่ง Spam Email ออกไปเป็นจำนวนมาก โดยส่งไปยังเป้าหมายที่เป็น Domain เดียวกันเป็นส่วนใหญ่ และหลายๆครั้งพบว่า โดเมนเป้าหมายเป็น Free Email เช่น hotmail.com, outlook.com, yahoo.com, gmail.com ซึ่ง   Account ต้นทางที่ใช้ส่ง Spam ออกไป อาจจะไม่ใช่ Account ที่ถูกเดา password สำเร็จก็ได้นะครับ

4) Spam Email ที่ส่งออกไป 1 ฉบับ จะระบุผู้รับ(TO: หรือ CC:)หลายๆคน ที่เคยเห็นมีตั้งแต่ 5 ถึง 20  หรือมากกว่านั้นในฉบับเดียว

วิธีการสังเกตุว่า Zimbra Server ของเราถูก hack
ถ้าระบบถูก hack และกลายเป็นเครื่องส่ง Spam แบบเดิมๆ ผู้ดูและระบบ จะรู้ว่า Zimbra Server ที่ดูแลอยู่ถูก hack กลายเป็นเครื่องส่ง Spam  ไปแล้ว จากการที่

1) มี Email ส่งไปยัง Domain ภายนอกที่ปกติไม่เคยมีธุรกรรมด้วย ในปริมาณที่มากผิดปกติ
ถ้ายังปล่อยให้เกิดเหตุการนี้ไปเรื่อยๆ จะทำให้เกิดข้อต่อไปคือ

2) IP Address ภายนอก ของ Email Server ติด Blacklist ของ IP ที่ใช้ส่ง Spam

3) ส่ง Email ไป Email Address ภายนอกไม่ได้

4) ส่ง Email ไปยัง Email Address ภายใน Domain เดียวกันช้า

5) มี Email ค้างอยูใน Queue ส่งไม่ออก เป็นพันๆ หรือหมื่นๆ ฉบับ

ในครั้งหน้า ผมจะมาพูดต่อถึงวิวัฒนาการการ hack ระบบ Mail Server ในปีที่ผ่านมาครับ ว่า มีการพลิกแพลง ที่ทำให้ยากแก่การตรวจจับกันอย่างไร

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