7/29/2016

https โดนแฮกได้ยังไง จะระวังตัวยังไง

https โดนแฮกได้ยังไง จะระวังตัวยังไง
มีคนตั้งกระทู้ถามไว้ในพันทิป แล้วมาถามหลังเพจนะครับ น้องเค้าพบว่า เว็บที่มหาวิทยาลัยตัวเองเรียนอยู่ใช้เป็น https แต่ว่าพอเข้าแล้วดันขึ้นเตือนว่าใบรับรองไม่น่าเชื่อถือ ในทุก ๆ browser จึงมีความกังวลว่าจะมีความเสี่ยงต่อความปลอดภัย อาจโดนแฮก โดนดักข้อมูลได้รึเปล่า?
คำตอบสั้น ๆ ง่าย ๆ คือ มีโอกาสโดนดักข้อมูลครับ
คราวนี้ลองมาดูกันต่อ หลายคนอาจสงสัยว่าแล้ว เอ๊ะ! เว็บที่เป็น https:// แล้วขึ้นเตือนว่า “การเชื่อมต่อของคุณไม่เป็นส่วนตัว” มีหน้า error ขึ้นกุญแจสีแดงแบบนี้ กับเว็บที่เป็น https:// ที่เป็นกุญแจสีเขียวใช้งานได้ปกติ แตกต่างกันยังไง?
อยากรู้จริงปะครับ เรื่องมันยาว... จะเริ่มละนะครับ พร้อมยัง? จะอ่านกันจบไหมเนี่ย~

การโดนดักข้อมูลบน HTTP

เราคงไม่ต้องพูดถึง http:// กันมากแล้วเนอะ กรณี http:// คือไม่มีการเข้ารหัสใด ๆ ถ้าโดนแฮกเกอร์ในวง network เดียวกัน เช่นใช้ WiFi เดียวกัน อาจเป็นแบบ WPA/2 Personal หรือพวก captive portal ที่ล็อคอินผ่านหน้าเว็บก็ได้ สามารถโดนดักข้อมูลด้วยการทำ man-in-the-middle (จากนี้ขอย่อว่า MitM) แบบ passive ได้ง่ายและสบายมาก ๆ วิธีการคือ..

1. monitor mode

เปิด wireshark เลือก network interface ของ WiFi ที่ทำ monitor mode ได้ซึ่ง wireless chipset + driver ต้องรองรับด้วย ใครใช้ Macbook มันเปิดได้อยู่แล้วใครใช้ยี้ห้ออื่นต้องใช้พวก Alfa WiFi adaptor มาต่อ อธิบายภาษาไอที: ปกติ เครื่องที่เราใช้ wifi เช่น iphone หรือ macbook ตัว wireless chipset จะทำงานเป็น managed mode หมายถึงเป็น ผู้ใช้งานที่ จะต่อไปยัง access point เพื่อจะรับ-ส่งข้อมูลกันในหรือนอก network, ส่วนพวก access point/hotspot พวกนี้จะทำงานใน master mode คือรอให้ ผู้ใช้งานมาต่อ รับหน้าที่บริหารจัดการการส่งข้อมูลระหว่างผู้ใช้งาน และจะมี mode อื่น ๆ อีก เช่น repeater mode ไว้เปิดให้อุปกรณ์ access point ที่จะเอามาขยายสัญญาณ เป็นต้น แต่มีอยู่ mode นึงครับชื่อว่า monitor mode ในโหมดนี้สิ่งที่ wireless chipset ในคอมจะทำคือไม่ส่งข้อมูลใด ๆ ออกไป แต่จะทำการ “อ่าน” ข้อมูลทั้งหมดที่ลอยอยู่ในอากาศ โดยไม่สนว่า ข้อมูลที่ลอยอยู่ในอากาศนั้นเป็นของ access point ไหนหรือ client ไหนก็ตาม ถ้าเจอในอากาศดักมาให้หมด! แต่เงื่อนไขคือดักได้ทีละ 1 channel ในขณะนึงเท่านั้น (โปรแกรมบางตัวเช่น airodump-ng ใน aircrack suite มันดักทีละหลาย channel ได้เพราะมันทำการ hopping เร็ว ๆ ข้าม channel รัว ๆ ครับแต่จริง ๆ มันอยู่ได้ทีละ 1 channel เท่านั้น)

2. promiscuous mode

เลือกเปิด promiscuous mode อันนี้เปิดได้อยู่แล้วทำได้ทั้งใน วงแลนหรือ WiFi อธิบายภาษาไอที: ปกติใน network แบบเก่าที่ใช้ hub การส่งข้อมูลระหว่างเครื่อง A ไปยัง เร้าเตอร์ B ข้อมูลใน data packet จะระบุต้นทางเป็น A ปลายทางเป็น B ซึ่งถ้ามีเครื่อง C ใน network เดียวกัน ต่อให้ C ได้รับ packet ที่ A จะส่งให้ B มันก็จะไม่ยอมรับ ทำการ drop packet ทิ้ง แต่การเลือกเปิด promiscuous mode คือให้ไม่สนว่าปลายทาง data packet จะส่งไปเครื่องไหน ให้เลือกดักข้อมูลไว้ก่อนเลย แต่ปกติแล้ว promiscuous mode เปิดไว้เฉย ๆ มันก็ดักข้อมูลยังไม่ได้ทันทีเพราะสมัยนี้เค้าไม่ได้ใช้ hub กันแล้วข้อมูลมันไม่ได้ส่งหาทุกคน ดังนั้นการจะเปิด mode นี้ต้องมีตัวช่วยอื่น ๆ ด้วย เช่นสามารถดักรับข้อมูลในอากาศได้อยู่แล้วด้วย monitor mode แล้วจึงเปิด promiscuous mode ให้ wireshark นำ data packet ของการคุยกันระหว่างเครื่องอื่นที่ดักได้มาแสดงผล.. โหมดนี้แหละที่คนชอบเรียกกันว่า sniffer mode เพราะว่าชื่อจริงมันอ่านย๊ากก (แซวเล่นนะครับ)

3. WPA/2 Personal

ครบเงื่อนไข 2 ข้อแรกนี้ ถ้าอยู่บน open WiFi ที่ต่อได้เลยหรือเป็น login ผ่านหน้าเว็บก็จบเลย ดักข้อมูลได้ทันที *แต่* ถ้าเป็น WPA/2 Personal ก็จะต้องใส่รหัส Pre-Shared Key ลงไปในออฟชั่น preference ของ Wireshark ก่อน (กรณีนี้คือคนดักข้อมูลเข้าไปใช้ WiFi สาธาณะนั้น ๆ ได้ถ้าไม่ได้ก็ต้อง aircrack หากันเองนะครับ) ให้มัน เอาคีย์ไปถอดรหัส data packet ที่ดักมาจาก monitor mode ได้จากนั้นก็จะแอบดักดูข้อมูลทั้งหมดที่อยู่ในอากาศของคนอื่นใน WiFi เดียวกันได้ทันที
ถ้ามี username / password / credit card อะไรถูกส่งผ่าน http:// ก็เห็นกันชัด ๆ เต็มตาไปเลยจ้า
ที่ว่ามาคือการทำ passive MitM บน WiFi ในอากาศครับ แต่ถ้าบน ethernet (LAN) ละ? กรณีนี้ ถ้าเราทำการ mirror traffic จาก switch ออกมา หรือไปคั่นกลางเพื่อดักข้อมูลไม่ได้ สิ่งที่ต้องทำคือ active MitM ครับ วิธียอดนิยมก็เช่นการทำ ARP Spoofing, DNS Spoofing ทั้งหลายนั้นเอง อธิบายภาษาไอที: ปกติเวลาในวง LAN เครื่องสองเครื่อง*จะส่งข้อมูลหากันภายใน network* ย้ำว่าภายในนะครับ จะรู้ว่า ใครมีหมายเลข IP อะไร ผ่าน protocol ที่ชื่อว่า ARP ที่จะคอยส่งคำถาม/คำตอบว่า IP ในวง LAN นี้มี MAC address อะไร เพื่อจะส่งข้อมูลหากันถูกเครื่องนะครับ การทำ ARP Spoofing คือการ หลอกประกาศ หลอกตอบ เครื่องอื่น ๆ ในวง LAN ว่าเราเป็นใครอีกคนที่จริง ๆ แล้วไม่ใช่เรานะครับ ส่วนมากที่จะใช้กันคือ หลอกว่าเครื่องของแฮกเกอร์เป็นเร้าเตอร์ เพราะว่าเมื่อ คอมสักเครื่องในวง LAN เผลอเข้าใจผิดว่าเครื่องแฮกเกอร์เป็นเร้าเตอร์ เวลาจะส่งข้อมูลออกไปภายนอก network เช่นไปเฟซบุ๊กเงี้ย มันจะส่งไปที่เร้าเตอร์ก่อน ทำให้แฮกเกอร์ที่ไม่ใช่เร้าเตอร์จริง ๆ ดันได้รับข้อมูลไปด้วย ผลคือสามารถดักอ่านข้อมูลคนอื่นได้นะครับ โปรแกรมที่ทำได้ก็เช่นบน Linux มี ettercap/arpspoof บน Windows มี Cain & Able โบราณสุด ๆ... ส่วนอีกทริคที่นิยมใช้กันคือ การประกาศหรือหลอกตอบว่า เครื่องเร้าเตอร์มี MAC address มั่ว ๆ ที่ไม่มีอยู่จริงในวง LAN ผลคือ คอมที่หลงเชื่อไปนั้นจะเข้าเน็ตเข้าเว็บอะไรไม่ได้นะครับ นี้เป็นหลักการของโปรแกรม netcut ที่ไว้ตัดเน็ตแกล้งกันนั้นเอง
แต่เทคนิคการทำ spoofing ทั้งหลายนี้ สามารถถูกตรวจเจอได้ง่าย ๆ ว่าใครเป็นคนทำ หาตัวคนร้ายได้ไม่ยาก เพราะเครื่องแฮกเกอร์จะต้องคอยส่ง data packet ปลอม ๆ พวกนี้ ผู้ดูแลระบบหรืออุปกรณ์ network security สมัยใหม่สามารถตรวจเจอได้ กลับกันในแบบ passive MitM อันแรกนี้สิ โอกาสตรวจเจอยากกว่ามากครับ เพราะฉะนั้นแอดมินขอย้ำว่าใช้ WiFi สาธาณะร่วมกับคนอื่น มีความเสี่ยงจะโดนดักข้อมูลได้เยอะนะครับ ถ้ายังส่งข้อมูลที่ไม่ได้เข้ารหัส.. แต่เดี๋ยวก่อน วิธีดักข้อมูลแบบ passive ที่ว่ามาใช้ใน WPA/2 Enterprise ไม่ได้ครับ ที่มันมีให้กรอก username/password ของใครของมันเวลา login เป็นหน้าต่างขึ้นมา (ไม่รวมแบบกรอกผ่านหน้าเว็บนะครับ) ใครใช้อยู่ก็ไปกังวลแบบ active แทนวิธีป้องกันสำหรับผู้ดูแลระบบก็ทำพวก dynamic arp inspection/dhcp snooping/static IP คอย monitor network traffic เช็คสุขภาพ network ตัวเอง คอยวิเคราะห์ log จากอุปกรณ์ network security บ่อย ๆ จะช่วยลดความเสี่ยง-แก้ปัญหาการโดนดักข้อมูลแบบ active MitM ได้ครับ!
หรือโชคร้ายกว่านั้นหน่อยถ้า เราไม่ได้ถูกทำ MitM ทั้งแบบ passive หรือ active ในวง network เดียวกัน แต่อุปกรณ์ network ระหว่างการส่งข้อมูลจากเครื่องเราไปยังเว็บปลายทางดันโดนแฮก หรือโดนเข้าถึงได้จากผู้ไม่หวังดี ก็สามารถดักเห็นข้อมูลของผู้ใช้งานทุกคนที่ไม่ได้เข้ารหัสบน http:// ได้เช่นกันครับ
https://www.eff.org/pages/tor-and-https
จากรูปจะเห็นว่าการที่ เราเข้าเว็บ site.com จริง ๆ แล้วข้อมูลเรามันไม่ได้เด้งดึ๋งจากเครื่องเราผ่านเข้า web server ของ site.com ตรง ๆ แต่มันผ่านมือคนหลายมือ และแต่ละมือ ก็มีโอกาสจะเข้าถึงข้อมูลเราได้ง่าย ๆ ถ้าไม่ได้มีการเข้ารหัสข้อมูลครับ เช่นจาก ISP ผู้ให้บริการอินเทอร์เน็ตบ้านเราอย่าง True, 3BB บลา ๆ พวกนี้ ข้อมูลเราวิ่งผ่าน อุปกรณ์เค้าเต็ม ๆ มันก็ไม่ใช่เรื่องยากเกินความสามารถเลยที่เค้าจะเลือกจะเข้าถึงข้อมูลเราได้ และอาจนำข้อมูลนี้ไปแชร์ต่อใครก็ตามเช่น รัฐบาล หรือ ตำรวจ เคยได้ยินไหม ประโยคที่เวลาคนโดนแฮก หรือมีคดีไซเบอร์แล้วคนชอบบอกว่า “ไปขอ log จาก ISP มาสิ” นี้แหละครับ
ตัวอย่างอีกเหตุการณ์การง่าย ๆ ที่แต่ละ มือคน ที่ข้อมูลเราวิ่งผ่านจะเห็นข้อมูลเรา องค์กรทั่ว ๆ ไปจะมี web proxy server อยู่เวลาพนักงานในบริษัทจะเข้าเว็บจะวิ่งผ่านเครื่องนี้เพื่อจุดประสงค์บางอย่างเช่น จะบล็อคเว็บบางเว็บไม่ให้พนักงานเข้า หรือช่วยในการลดปริมาณข้อมูลการส่งออกด้วยการทำ caching (เป็นการทำสำเนาข้อมูลของเว็บที่เคยเข้าแล้วเก็บไว้แล้วส่งให้คนถัดไปที่จะมาเข้าเว็บเดิมแทนที่จะต้องวิ่งไปคุยกับเว็บนั้นหลาย ๆ รอบเปลืองเน็ตบริษัท) ตัว web proxy server นี้แหละตัวดี ผู้ดูแลระบบสามารถเปิด wireshark/tcpdump ดักข้อมูลที่ไม่ได้เข้ารหัสของทุกคนในบริษัทได้ครับ

การโดนดักข้อมูลที่เป็น HTTPS

คราวนี้จะเกิดอะไรขึ้นถ้า.. เกิดเหตุการณ์แบบเดียวกันแบบที่เล่ามาข้างบนเลยโดน passive/active MitM เละเทะ แต่ปรากฏว่าเว็บที่เราใช้เป็น HTTPS ครับ ตามในกระทู้พันทิปที่ถามถึงครับ ผลคือคนที่ดักข้อมูล ก็ดักได้ต่อไปครับ แต่ว่า ข้อมูลที่ได้มานั้น จะถูกเข้ารหัสด้วย SSL หรือ TLS .. จนถึงจุดนี้ทุกอย่างแลดู สวยงามดี งั้นถ้าเราเข้าเว็บที่เป็น https:// มีการเข้ารหัสแล้ว แสดงว่าต่อให้เราโดนดักข้อมูล ก็สบายใจได้ เพราะคนที่ได้ข้อมูลไปไม่สามารถถอดรหัสได้นี่นา คำตอบคือ... ไม่ใช่เสมอไปครับ
เพราะว่าตั้งแต่เกิดการใช้งาน https:// เพื่อเข้ารหัสข้อมูลป้องกันการถูกดักอ่านข้อมูลนั้น ก็มีการศึกษาค้นคว้าวิจัย วิธีโจมตี https ต่าง ๆ นา ๆ หลายรูปแบบ บางการโจมตี มุ่งไปที่ช่องโหว่ในตัวการเข้ารหัสด้วย SSL/TLS โดยตรง เพื่อหวังจะถอดรหัสอ่านข้อมูลข้างในเช่น BEAST, CRIME, POODLE, FREAK, LOGJAM อะไรพวกนี้นะครับ เป็นชื่อช่องโหว่ หลายคนในวงการไอที อาจเคยคุ้น ๆ หูกันมาบ้าง พวกช่องโหว่เหล่านี้ ใช้โจมตีในสถานการณ์จริง ๆ ค่อนข้างยากมาก เพราะมีเงื่อนไขเยอะ ส่วนใหญ่หลุดออกมาจากโลก academic ตีพิมพ์จาก paper ปริญญาเอก โดยทั่ว ๆ ไปเราจะไม่ได้นำมาใช้แฮกกัน คนจะสนใจโจมตีช่องโหว่พวกนี้ได้ต้องเป็นระดับรัฐครับเช่น NSA ของอเมริกา เพราะต้องมีงบ มี resource เยอะถึงจะทำได้ หรือทำแล้วคุ้มค่าจริง ๆ ส่วนคนธรรมดาที่อยากจะดักข้อมูลที่เป็น https:// เค้าจะใช้แนวทางดังต่อไปนี้ครับ

1. SSLStrip

เทคนิคนี้มีชื่อที่อธิบายกระบวนการของมันเองได้ชัดเจนครับคือการ strip ถอดเจ้า SSL/TLS ออกนั้นเอง วิธีการคือ เราต้องทำ MitM ใน network ให้ได้ก่อนครับ วิธีทำดังที่อธิบายไว้แล้วข้างบน
http://bahansen.info/the-attack/execution/attack-vector-1-sslstrip/
จากนั้น แฮกเกอร์ที่อยู่ตรงกลางในรูปคือตรงคำว่า “SSLStrip” นั้นแหละ จะทำการดักว่า ถ้าเหยื่อ (คอม ด้านซ้าย) พยายามจะต่อเข้าเว็บ เฟซบุ๊ก https ให้แฮกเกอร์ทำการเรียก เฟซบุ๊ก https แทนเครื่องเหยือ แต่ตอนส่งข้อมูลกลับมา ให้ส่งว่าเว็บที่กำลังเข้าอยู่เป็น เฟซบุ๊ก http คือการ “ถอด s ออก” เปลี่ยนจาก https เป็น http อย่างแยบยล ถ้า ผู้ใช้งานไม่ทันได้สังเกตว่าอยู่ดี ๆ เว็บที่เข้าอยู่จาก https เปลี่ยนเป็น http แล้วล็อคอินเข้าใช้งาน หรือส่งข้อมูลตามปกติ ก็ทำให้แฮกเกอร์สามารถดักอ่านข้อมูลได้ครับ
ทางแก้ไขสำหรับผู้ใช้งานทั่วไปคือ ระวังอย่าให้โดน MitM ครับ ถ้าไม่โดน MitM ก็โดน SSLStrip ไม่ได้แน่ ๆ ต่อมาคือ คอยสังเกตว่าเว็บที่เราใช้งานที่มันจะต้องเป็น https มันยังเป็น https อยู่รึเปล่า ถ้าวันดีคืนดี s มันหายไปเป็น http ธรรมดาแปลว่าเราอาจจะโดนของเข้าให้แล้วนะครับ แต่อันนี้ก็ขึ้นอยู่กับเว็บปลายทางด้วย บางเว็บอาจจะรองรับการเข้าแบบ http ปกติด้วยก็ได้ ก็ให้เราลองเลือกใช้เป็น https ดูว่าถูก ถอด s ออกหรือไม่ครับ อธิบายภาษาไอที: ใครอ่านแค่ส่วนแรกของ SSLStrip ก็มึนแล้วข้ามไปข้อ 2 เลยก็ได้นะครับ, ส่วนทางแก้ไขในโลก computer security นักวิจัยด้านความปลอดภัยก็พยายามหากระบวนการเข้ามาแก้ปัญหาตรงนี้ชื่อว่า HTTP Strict Transport Security (ขอเรียกย่อ ๆ ว่า HSTS) ซึ่งกระบวนการนี้จะถูกใช้โดย web browser กับ web server ที่เวลาส่ง HTTP Response header ชื่อ strict-transport-security ตอบกลับมาให้รู้ว่า เมื่อ web browser จะเข้าใช้งานเว็บ domain นี้ ต่อไปอีกวินาที (max-age) จะกำหนดให้...
- จะต้องเข้าเว็บนั้น ๆ เป็น https ให้หมด! ห้ามเข้าเว็บชื่อนี้เป็น http เด็ดขาด! - เสริมอีกว่าถ้ามี error ในใบรับรองความปลอดภัย certificate (คำคีย์เวิร์ดสำคัญของเราวันนี้โผล่มาแล้วในที่สุด!) หรือการเชื่อมต่อใน SSL/TLS ก็จะให้ web browser ห้ามเข้าเว็บนั้นเด็ดขาด! เช่นกัน
HSTS ของเว็บเฟซบุ๊ก
เอาจริง ๆ HSTS เกิดมาเพื่อแก้ไขอีกปัญหานึงชื่อว่า mixed content ด้วยคือในเว็บที่เป็น https คนเขียนเว็บนั้นเผลอใส่รูปใส่ js css ใส่ลิ้งเป็น http ถ้าผู้ใช้งานเข้าเว็บแล้วมันถูกโหลดอัตโนมัติ ต่อให้เว็บเป็น https ข้อมูลพวก cookie ที่ใช้ยืนยันว่าเรากำลังล็อคอินเว็บอยู่อาจหลุดไปอยู่ในมือคนดักข้อมูลได้ (ถ้าไม่ได้ ตั้ง secure flag ตอน set-cookie ไว้)
เกร็ดเล็กน้อย ผู้อ่านที่เฉลียวใจนิดนึง อ่านมาถึงตรงนี้อาจสังเกตได้ว่า HSTS มีช่องโหว่เล็กน้อย คือ web browser จะทราบได้ว่าเว็บนั้น ๆ มีการเปิดใช้งาน HSTS รึเปล่า ขึ้นอยู่กับ HTTP Response จาก web server ที่ตอบกลับมาแล้ว ดังนั้นแปลว่า HTTP Request แรกสุดที่เราส่งไปเว็บนั้นผ่าน web browser หรือ ตอนที่เราส่งหลังจาก clear cache หรือระยะเวลาหมดอายุในครั้งแรกนั้น จะไม่มีการเปิดใช้ HSTS ทำให้ถ้าเราดวงจู๋ โดนดักข้อมูลตรงจุดนี้ละก่อน HSTS ก็ช่วยอะไรไม่ได้ครับ เพราะแฮกเกอร์ก็สามารถ strip HSTS header ตอนตอบกลับมาออกได้นะครับ ดังนั้น web browser หลัก ๆ อย่าง Firefox หรือ Chrome ก็เลย... เอาวะ มาแก้ปัญหานี้กันด้วยการ แทนที่ web browser จะรอให้ web server ตอบกลับมาว่ารองรับการใช้งาน HSTS ทำไมเราไม่ บอก web browser ไปเลยว่า ถ้าจะเข้าเว็บบางเว็บให้ต้องเข้าเป็น https เท่านั้น คือฝังกระบวนการ HSTS สำหรับบางเว็บใหญ่ ๆ ดัง ๆ ที่รู้กันอยู่แล้วว่าพวกนี้ใช้ https หมด ลงไปเลย แล้วเรียกกระบวนการฝัง HSTS นี้ว่า HSTS preload ครับ
แต่แล้ววันดี คืนดีก็มีคนมาคิดวิธี bypass HSTS ได้ในบางกรณี เช่นไม่ได้ใช้ออฟชั่นใน HSTS header ที่ให้รวมทุก sub-domain โดยการแกล้งทำ DNS spoofing จากเว็บจริงเช่น www.facebook.com ไปที่ sub-domain มั่ว ๆ ที่ไม่ได้ทำ HSTS หรืออาจไม่มีอยู่จริงเช่น wwww.facebook.com เพราะตัว HSTS มันระบุต่อ 1 sub-domain ปัจจุบันที่ request ไปเท่านั้น แล้วให้ทำ SSLStrip ต่อจากนี้แทนวิธีป้องฝั่ง user ก็คอยสังเกตว่ากำลังใช้ sub-domain ผิดปกติรึเปล่า อีกวิธีคือใช้ browser extension ชื่อ HTTPS Everywhere ช่วยบังคับให้เข้าเว็บที่รองรับทั้ง http/https แล้วจะเข้าได้แต่เป็น https ฝั่งผู้ดูแลระบบก็ต้องตั้งค่ากันอย่างรัดกุมว่าจะใช้ https + HSTS ในทุก sub-domain ถ้าทำได้นะครับ

2. SSL Interception Proxy

วิธีนี้เป็นวิธีที่ว่ากันว่า โครงการ single gateway ของไทยเค้าจะทำแหละครับ หลักการของเทคนิคนี้คือขั้นแรกต้องโจมตีด้วยการทำ MitM ปกติให้ได้ก่อน (ใครลืมแล้วเลื่อนขึ้นไปอ่านว่าทำยังไงได้บ้างนะครับ) ขึ้นอยู่กับเรามองว่าคนจะดักข้อมูลเป็นใคร ซึ่งถ้าเป็น ISP หรือคนดูแล web proxy server ในองค์กร ไม่ต้องทำอะไร นั่งเฉย ๆ ก็มีข้อมูลผู้ใช้งานวิ่งผ่านตัวเองเป็น passive MitM อยู่แล้วนะครับ เพียงแต่อ่านข้อมูลที่เข้ารหัสด้วย SSL/TLS ยังไม่ออกเท่านั้นเอง จะเข้าใจวิธีการโจมตีนี้ได้ต้องพอเข้าใจว่า https ทำงานยังไงนะครับ
https://alohalb.wordpress.com/2011/09/16/benchmarking_ssl_performance/
จากรูป 7 ขั้นตอนในการ เปิด SSL/TLS session ตอนเริ่มการทำงาน https คร่าว ๆ นะครับ ขอสรุปเฉพาะส่วน certificate ละกัน... - web server ส่งกุญแจเข้ารหัส public key มาให้คนเข้าเว็บ เรียกว่า x.509 certificate (และส่งให้ทุก ๆ คนเหมือนกัน เป็นข้อมูลเปิดเผย) ตัวนี้แหละคือ ใบรับรองของเว็บ ที่เป็น https
- web browser จะนำ ใบรับรองตัวนี้ไปเช็คในเครื่อง ว่าถูกรับรองโดยองค์กรที่ไว้ใจได้ (เรียกว่า trusted CA: Certificate Authority) หรือไม่ ถ้าใช่จะถือว่า เป็นใบรับรองที่เชื่อถือได้
- ถ้าใบรับรองนั้น trusted หมดทั้ง chain จนไปถึง root CA และการตั้งค่าต่าง ๆ ปกติดี web browser จะ ขึ้นเป็นกุญแจตามปกติให้เราครับ
- ปัญหาคือถ้าใบรับรอง certificate นั้นไม่ได้ถูกรับรอง (คือการ sign ด้วย private key) โดย CA ที่น่าเชื่อถือ จะถือว่าไม่น่าเชื่อครับ... คำถามคือ จะรู้ได้ไงว่า CA ไหนน่าเชื่อถือ? อันนี้ ในระบบปฏิบัติการทั้ง Windows/Linux/OSX มันจะมี list ของ CA ที่น่าเชื่อถือใส่ไว้ให้อยู่แล้วใน certificate store นะครับ ตัวอย่างของ Windows 8.1
certificate store ใน Windows 8.1
CA ในนี้เรียกว่า trusted root CA เป็น CA ที่อยู่สูงสุดในลำดับชั้นของความน่าเชื่อถือ (chain of trust) พวก web browser ส่วนมากยกเว้น firefox จะเช็คใบรับรอง certificate จากการเชื่อมต่อไปเว็บที่เป็น https กับ list ตรงนี้ (ส่วน firefox จะมี list ของ trusted root CA เป็นของตัวเอง แต่ CA เกือบทั้งหมดก็จะเหมือน ๆ กันครับ) โดย trusted root CA สามารถรับรอง CA อื่นให้มีสิทธิ์ไปรับรอง cert ให้ใครต่อก็ได้ แล้วยังถือว่าน่าเชื่อถืออยู่ ได้เรียก CA ที่ถูกรับรองโดย root CA ว่า intermediate CA เพื่อว่าเวลามีคนขอ cert เยอะ ๆ แล้วจะได้ช่วย ๆ กันออกได้ด้วย เกร็ดเล็กน้อยเวลาจะสังเกตว่า CA ไหนเป็น root CA คือค่า Issued To กับ Issued By ของใบรับรองจะเป็นองค์กรเดียวกันนะครับ (เหมือน self-signed เป๊ะ แต่ trusted root CA คือจะอยู่ใน certificate store นี้)
ผลของการที่ถ้า x.509 certificate ที่ส่งมาจาก เว็บ ไม่ได้ถูกรับรองโดย trusted CA คือ web browser จะแจ้งเตือนขึ้น error ว่าการเชื่อมต่อไม่ปลอดภัย มีโอกาสโดนดักข้อมูลได้...
ทำไมอย่างงั้นละ.. ในเมื่อการเข้าเว็บ https ด้วย certificate ใด ๆ ที่จะรับรองโดยใครมันก็มีการเข้ารหัสข้อมูลทั้งนั้นนี่หน่า? ไม่ได้มีผลต่อ ความปลอดภัย (security) เลยว่า การเข้ารหัสมันจะอ่อนแอลงตรงไหน??
X.509 certificate error ใน Google Chrome








คำตอบคือ มันมีปัญหาเรื่องความน่าเชื่อถือ (trust) ว่าการเข้ารหัสที่เรากำลังเชื่อมต่ออยู่นี้ เราเข้ารหัสคุยกับ web server ปลายทางนั้นอยู่จริง ๆ รึเปล่า? ไม่ใช่ว่าเป็นการเชื่อมต่อที่เข้ารหัส แต่เราดันเข้ารหัสคุยกับเครื่องของแฮกเกอร์ที่ทำ MitM ดักข้อมูลเราอยู่ซะงั้น...
เพราะว่าการที่มันมี certificate ที่ออกโดยใครก็ได้และไม่ได้ถูกรับรองโดย trusted CA ที่ชื่อว่า self-signed certificate ปัญหาคือการที่ใครก็สามารถออกได้ มันจึงไม่มีความน่าเชื่อถือ เช่น ใคร ๆ ก็ออก x.509 certificate ให้ www.facebook.com ได้ (เพียงแต่ จะไม่ได้ถูก Issued by โดย trusted CA)
https://blog.css-security.com/blog/apples-ssl-flaw-another-man-middle-attack
ผลคือคนที่ดักข้อมูล MitM ได้ สามารถที่จะ จำลองการเชื่อมต่อ https ทั้งสองฝั่ง..
2.1 จากทั้งฝั่งเหยื่อเข้าเว็บ https มาเครื่องที่กำลังดักข้อมูล ตรงนี้คนดักข้อมูลสามารถส่ง self-signed certificate ของ www.facebook.com ไปให้เหยื่อใช้เข้าเว็บที่เป็น https ได้ เชื่อจะเห็นว่าตัวเองกำลังเข้าเว็บเป็น https://www.facebook.com/ ปกติเลย มีการเข้ารหัส *แต่* จะมี error บอกว่าการเชื่อมต่ออาจไม่ปลอดภัยเพราะใบรับรองไม่น่าเชื่อถือนั้นเอง 2.2 / 2.3 จากฝั่งเครื่องที่ดักข้อมูลเชื่อมต่อ https ของจริงปกติไปยังเว็บเป้าหมายจริง ๆ 2.4 เอาผลที่เว็บของจริง https://www.facebook.com/ ตอบกลับมา มาเข้ารหัสด้วย SSL/TLS session + private key ที่สร้างสำหรับ self-signed certificate ที่ส่งให้ใน 2.1 ส่งกลับไปหาเหยื่อ
ผู้ใช้งานเว็บที่เป็น https ก็สามารถที่จะป้องกันการโจมตีจากเทคนิคประเภทนี้ได้ด้วยการตระหนักว่า ถ้าเราเข้าเว็บที่เคยเป็น https กุญแจสีเขียว แล้ววันดีคืนดี เข้ามาใช้เป็นกุญแจสีแดงเออเร่อ หรือเออเร่อมันทุกเว็บที่เป็น https ให้ตั้งสมมุติฐานไว้ได้เลยว่าเราอาจจะกำลังโดนดักข้อมูลอยู่ให้ลองเปลี่ยนไปใช้ network ที่อื่น หรือหาสาเหตุของปัญหานะครับ ส่วนฝั่งของโลก computer security เกิดเป็นแนวทางการทำ certificate pinning และ HPKP นะครับ อันนี้แอดมินเคยอธิบายไว้แล้วในโพสต์นี้ นะครับ ใครสนใจก็ตามไปอ่านกันได้

สรุป https แบบ error สีแดง เทียบ https ไม่มีเออเร่อกุญแจสีเขียว

จากเหตุการณ์นี้ทำให้เราเห็นว่าการใช้ ใบรับรองที่ไม่น่าเชื่อถือ self-signed certificate ที่ web browser แจ้งเตือน error กุญแจสีแดง ๆ ว่า “การเชื่อมต่อของคุณไม่เป็นส่วนตัว” นั้นผลคือ ..
ทำให้ ผู้ใช้งานเว็บทั่วไป ไม่สามารถแยกแยะได้ว่า เว็บที่ตนเองกำลังใช้งานอยู่นั้น กำลังใช้ self-signed certificate กุญแจสีแดง ที่ผู้ดูแล web server นั้นเป็นคนออกเองจริง ๆ อย่างถูกต้อง *หรือ* กำลังใช้ self-signed certificate ที่ออกโดยแฮกเกอร์ ที่กำลังทำ MitM ดักข้อมูลที่เป็น HTTPS ทั้งสองทางของเราอยู่กันแน่
เพราะมันก็ขึ้น error แบบเดียวกันเป๊ะ ว่า certificate ไม่ได้ถูกรับรองโดย trusted CA (หรือถ้าใครมีความพยายามมากพอ อาจจะคอยนั่งจำ certificate fingerprint ไว้เวลาเข้าเว็บ self-signed ก็คอยกดดูเองเรื่อย ๆ ว่ายังเป็น fingerprint อันเดิม? ลำบากสุด ๆ ไปเลยครับ) แต่ในทางกลับกันถ้า เว็บนั้นใช้ certificate ที่ออกโดย trusted CA แล้ว แสดงว่าเว็บนั้นมีความน่าเชื่อถือเพราะ trusted CA มีความน่าเชื่อถือมากพอ เป็นบริษัทที่น่าไว้ใจมากพอว่าจะไม่เป็นคนดักข้อมูลเรา เนื่องจากถูกตรวจสอบอย่างแพงและเข้มข้นจากเจ้าของ certificate store ต่าง ๆ เช่น Microsoft, Mozilla, Apple .. (อื่น ๆ อีกขึ้นกับว่าจะอยากเป็น trusted root CA กับเจ้าไหนบ้าง) ไม่ได้จะเป็นกันง่าย ๆ
trusted CA จะเป็นผู้ตรวจสอบข้อมูลจากผู้ขอรับรอง certificate นั้นว่าเป็นเจ้าของชื่อเว็บ domain นั้นจริง ๆ ก่อนที่จะทำการรับรองให้ครับ (ตอนนี้มีวิธีอัตโนมัติกันบ้างแล้ว แต่ยิ่งของ่ายความน่าเชื่อถือก็ยิ่งน้อย)
ในอดีตเคยมีการจับได้ว่ามี trusted root CA เจ้านึงชื่อ DigiNotar โดนแฮก และออกใบรับรองปลอม ให้ gmail นำมาดักข้อมูลผู้ใช้งานในอิหร่านได้ เป็นแสน ๆ คน .. ผลที่ตามมาคือบริษัทล้มละลายเจ๊งทันทีครับ โดนค่าปรับ โดนฟ้องอ่วม .. ทุก certificate store เพิกถอน ออกอัพเดทเอา DigiNotar ออกจากรายชื่อ trusted root CA ของตัวเองอย่างรวดเร็ว
X.509 Certificate ของเว็บเฟซบุ๊ก
จากรูปเป็น X.509 certificate ของ *.facebook.com ที่ถูกรับรองโดย DigiCert SHA2 CA ที่เป็น intermediate CA และตัว DigiCert SHA2 ก็ถูกรับรองโดย DigiCert ที่เป็น Root CA อีกที จะเห็นว่า chain of trust ลำดับชั้นของความน่าเชื่อถือถูกการันตรีมาเป็นทอด ๆ จาก Root CA สู่ Intermediate CA สู่ public key certificate ของเว็บที่จะเอามาให้เราใช้ ทำให้เรามั่นใจว่า ใบรับรองอันนี้ส่งมาจาก server ที่น่าเชื่อถือได้ว่าเป็นเฟซบุ๊กจริง ๆ เพราะ server คนอื่นเช่นของคนดักข้อมูลจะไม่มี private key ที่ไว้ถอดรหัส key ที่ใช้เข้ารหัสข้อมูลใน https นะครับ
ปัญหาอีกอย่างก็คือการรับรอง certificate ของเว็บมันมี ค่าใช้จ่าย ครับยิ่งมีหลาย sub-domain หรือจะทำ wildcard certificate แบบเฟซบุ๊กก็มีค่าใช้จ่ายเพิ่มขึ้นอีก ที่จะต้องจ่ายตังให้ CA ที่จะมายืนยันความเป็นเจ้าของ ก่อนออกใบรับรองของเซิร์ฟเวอร์เรา.. ทำให้เว็บมหาวิทยาลัย หรือองค์กรบางแห่ง ไม่ได้ใช้ trusted certificate ในการให้บริการเว็บด้วย https ดังที่น้องเค้ามาถามไว้... โดยเฉพาะอย่างยิ่งระบบใน internal network ที่ไม่ได้เข้าผ่าน internet มักจะใช้ self-signed certificate กัน ก็น่าเห็นใจที่บางองค์กรหรือมหาวิทยาลัยมี domain/server มากมายจะให้ซื้อใบรับรองจริงใช้ก็เสียงบ เป็นกิจวัตรทุกปีแน่ ๆ คนทำงานราชการก็คงรู้อยู่ว่าเบิกงบอะไรสักอย่างไม่ใช่เรื่องง่าย ๆ
ข่าวดีคือตอนนี้ในปัจจุบันมีการให้บริการจาก trusted CA ที่สนับสนุนโดย Mozilla/Cisco/Akamai เพื่อจะรับรอง certificate ให้ domain ที่ใครสักคนเป็นเจ้าของได้ฟรี ๆ ในโครงการชื่อ let’s encrypt นะครับ ใครสนใจก็ลองไปกูเกิลหาวิธีทำดูง่ายมาก ๆ สำหรับ apache/nginx แทบลงจะอัตโนมัติให้ทุกอย่างไม่ต้องรู้ ไม่ต้องตั้งค่าอะไรเลย ก็มี https สีเขียว ๆ ให้ใช้ได้ละครับ พร้อมทั้งยังใช้การตั้งค่าต่าง ๆ ของ SSL/TLS ไว้เป็น best practice เป็นค่าเริ่มต้นที่เมื่อสแกนตรวจสอบความปลอดภัย https จากเว็บ Qualys SSL Labs แล้วได้คะแนน A ทันทีเลยด้วยครับ
CREDIT: https://www.facebook.com/longhackz/

7/25/2016

LINUX: จะรู้ได้อย่างไร ว่าเรา ถูก HACK

            หลังจาก hacker ได้ทำการ compromise ระบบแล้วนั้น ส่วนใหญ่ hacker จะไม่ทำการลบข้อมูลหรือทำอะไรที่จะเป็นผลเสียต่อระบบ ของท่าน แต่ hackers จะทำการติดตั้ง back door ในระบบซึ่งทำให้ hacker สามารถเข้าถ้าระบบในฐานะ root หรือบางที hacker อาจใช้ระบบของท่านในการโจมตีระบบอื่นๆต่อไป

เพราะฉะนั้นหากท่านประสบปัญหาอย่างเช่น ระบบของท่านเกิดช้าขึ้นมาอย่างผิดปกติแต่เมื่อท่านได ้ทำการตรวจสอบ disk space และ process แล้วก็ไม่มีสิ่งใดผิดปกติ checklist ต่อไปนี้คือสิ่งที่ท่านควรตรวจสอบเพื่อบอกว่าระบบของ ท่านถูก hacked หรือไม่

1. เหตุการณ์หรือสัญญาณที่ผิดปกติ

ถ้าท่านไม่สามารถทำการ ssh, telnet หรือ login เข้าสู่เครื่องได้เป็นสิ่งบอกเหตุว่าท่านอาจจะถูก hacked ได้
ท่านควรจะทำการตรวจสอบเหตุต่างๆ ที่ไม่สามารถอธิบาย เช่น network ซึ่งผิดปกติ resource ถูกใช้ไปเยอะมากทั้งที่มี users เข้าใช้อยู่เพียงไม่กี่คน
ควรตรวจสอบ /etc/password file ว่ามี account ใดบ้างที่เพิ่งถูกเพิ่มเข้ามาโดยที่คุณไม่ได้ทำการเพ ิ่มเอง รวมทั้งตรวจสอบ accounts ที่ไม่มี password หรือ UID ถูก set ให้เท่ากับ "0"
2. ตรวจหา sniffer


เนื่องจาก sniffer จะทำให้ network interface รับ packet ทุกชนิดที่เข้ามาและทำการบันทึก packet ซึ่งประกอบด้วย username และ password ของ ftp และ telnet แม้ว่าท่านจะแก้ปัญหานี้โดยการใช้ switching แทน hub แต่ถ้าเครื่องดังกล่าวเป็น Internet gateway แล้วปัญหาก็ไม่ได้หมดไป ท่านสามารถทำการ check promiscoous mode ได้โดย # ifconfig - a/grep PROMISC


แต่มี rootkit บางตัวที่ทำการเปลี่ยนแปลง ifconfig เพื่อหลบซ่อนจากการใช้ parameters นี้ เพื่อความแน่ใจให้ท่าน run antisniff http://www.securitysoftwaretech.om/antisniff/ จาก remote machine

3. ตรวจสอบ logs

ทำการตรวจสอบ log files โดยการใช้คำสั่ง last เพื่อที่จะ list logins ท้ายๆออกมาแล้วตรวจสอบว่ามี unknown users หรือ usernames ที่แปลกๆหรือไม่ รวมทั้ง access time ของแต่ละ user ด้วยว่ามีความผิดปกติหรือไม่

# last | head

ตรวจสอบ message file ใน /var/log/ (สำหรับ Linux) หรือ /var/adm/ (สำหรับ Solaris)
รวมทั้งตรวจสอบ log files อื่นๆ ซึ่งใช้โดย syslog (โดยดูจาก /etc/syslog.conf) โดยการ grep su failures ทั้งหลายและเหตุการณ์ที่ vid = 0

# grap "vid = 0" /var/log/
และ
# grep "su" /var/log/


log files ซึ่งมีขนาดเท่ากับ "0" ก็อาจเป็นสัญญาณของการถูกบุกรุกเช่นเดียวกัน
เนื่องจาก rootkit ใหม่ๆ จะทำการลบ usermane จาก wtmp, utmp และ lastlog files เพราะฉะนั้นหากท่านไม่ได้ใช้อุปกรณ์ที่เรียกว่า write once read many เช่น CD-R ในการบันทึก log files ท่านไม่ควรไว้ใจ log files เท่าใดนัก
4. ไม่ควรเชื่อ ps command

ตรวจสอบชื่อและจำนวนของ running processes และพยายามหา processes ที่ไม่ค่อยคุ้น ข้อแปลกๆ หรือ startup time ที่ไม่ค่อยปกติ รวมทั้ง process ที่ใช้ CPU time มากๆอย่างไรก็ตามโดยปกติแล้วผู้บุกรุกจะ run sniffers อยู่ภายใต้ daemon ปกติ เช่น sendmail หรือ named และ rootkits โดยส่วนใหญ่ก็จะทำการเปลี่ยนแปลง ps และ pidof เพื่อที่จะหลบซ่อน process ของพวกเขา ดังนั้นท่านควรจะเปรียบเทียบระหว่างผลลัพธ์ของ ps กับผลลัพธ์ใน /proc เช่น

#ps --no-headers -ef | wc

เมื่อท่าน run คำสั่งต่อไปนี้ใน RedHat 7.0 # ps - -no- headers- ef | wc แล้วผลต่างกันกับที่ run # ls - d /proc/ [0-9]* นั่นคืออาจมี process ที่แอบซ่อนอยู่
ในระบบ Solaris อาจใช้คำสั่ง crash เพื่อที่จะแสดง list ของ processes แล้วเปรียบเทียบกับ ps output
violin $ crash dumpfile = /dev/mem, namelist = /dev/ksyms, outfile = stdout > proc
หรือท่านอาจจะติดตั้งและ run Isof ftp://vic.cc.purdue.edu/pub/tools/ ซึ่งโปรแกรมนั้นจะบอกท่านว่า process ไหนกำลังใช้ files อะไร

5. ตรวจสอบ ports

ทำการ scan ports ของเครื่องโดยใช้ port scanner เช่น nmap [http://www.insecure.org/nmap/ ซึ่งค่า defaults ของ nmap นั้นคือ port1-1024 แต่ trojan horses ส่วนใหญ่จะใช้ ports ที่สูงกว่านั้น หากท่านต้องการเฉพาะเจาะจง ports ที่ต้องการจะ scan ให้ใช้ option-p เช่น


# nmap - p 1 - 65535 your_machin_address
หลังจากนั้น ให้ทำการใช้คำสั่ง netstat -a เพื่อตรวจสอบ port ที่เปิดอยู่บนเครื่องนั้นๆ
# netstat -a

หากพบว่ามี ports ที่ปรากฎใน output ของการใช้ nmap แต่ไม่ปรากฎใน output เมื่อใช้คำสั่ง netstat นั้นอาจหมายถึง netstat ได้ถูกเปลี่ยนแปลงเพื่อหลบซ่อน service บางอย่าง

6. ตรวจสอบ binaries

rootkits ส่วนใหญ่จะทำการเปลี่ยนแปลง system binaries เพื่อทำการหลบซ่อน file, sniffer หรือ port ที่ถูกเปิดอยู่ บน RedHat ท่านสามารถตรวจสอบ binaries ได้โดยใช้คำสั่ง


altis $ rpm - va | grep '1...5'
ซึ่งผลลัพธ์ที่เกิดขึ้นอาจเป็นลักษณะนี้คือ
s.5.....T c/etc/services
s.5....T c/etc/info-dir
s.5....T c/etc/inetd.conf
นั้นหมายถึงขนาดของ file เปลี่ยน (5)
MD5 checksum เปลี่ยน (5)
และเวลาที่ได้รับการเปลี่ยนแปลงถูกเปลี่ยน (T)

บนระบบซึ่งเป็น UNIX ท่านสามารถใช้คำสั่ง find ค้นหา files ที่ถูกเปลี่ยนแปลงในช่วงเวลาหนึ่งๆ ส่วน option ที่ใช้น่าจะใช้ -ctime option ดังนี้

# find/ bin -ctime -7

แต่วิธีที่ดีที่สุดคือใช้คำสั่ง cmp แล้วเปรียบเทียบ วันที่ ขนาดของไฟล์ และ time-stamp ของ system files กับ machine ที่เป็น clean machine และใช้ OS ประเภทเดียวกันซึ่งโดยปกติ binaries files ที่ถูกเปลี่ยนคือ

chsh, crontab, du, df, find, ifconfig, inedd, killall, login, ls, netstat, passwd, ps, sshd, syslogd และ top

ท่านสามารถใช้โปรแกรม tripwire หรือ samhain เพื่อให้แจ้งเตือนเมื่อ system files ถูกเปลี่ยนแปลง

Tripwire http://www.tripwire.org
samhain http://samhain.sourceforge.net


7. ตรวจสอบ Config Files

ท่านควรตรวจสอบ files ซึ่งถูกเปลี่ยนแปลงบ่อยๆได้แก่

/etc/inetd.conf file
หรือ
/etc/xinetd.conf file
หรือ
/etc/xinetd.d directory

พยายามตรวจดู service ที่เพิ่มเข้ามา ถูกเปลี่ยนแปลงหรือเป็น service ที่ท่านไม่คุ้นเคย


/etc/hosts.eguiv, ~/.rhosts

พยายามตรวจดู creationdate และ "+" รวมทั้ง host names ที่ท่านไม่คุ้นเคย

/dev/* เนื่องจากมี rootkits บางประเภทที่จะติดตั้ง configuration files ใน /dev/ ท่านสามารถตรวจสอบ text files ใน /dev directory ได้ดัวนี้

# file /dev/* | grep text
/ dev/ ptyp : ASCIItext
/ dev/ ptyq : ASCIItext
/ dev/ ptyr : ASCIItext


จากตัวอย่างนี้ท่านจะเห็นว่า rootkit ได้ใช้ text file ptyr เพื่อจะหลบซ่อนจาก command lsใช้ ptyq เพื่อจะลบ sockets/ addresses ออกจาก netstat และใช้ ptyq เพื่อจะลบ processes ออกจาก ps

ในฐานะ root ให้ท่าน run crontab - l and atq เพื่อตรวจดูว่ามีโปรแกรมใดที่กำลังรอการทำงานอยู่หรื อไม่

8. ตรวจสอบ setuid, setgid และไฟล์อื่นๆที่หลบซ่อนอยู่

ทำ setuid และ setgid files จะ run อยู่ในฐานะ root แม้ว่าจะถูก executed โดย user ธรรมดาก็ตาม
หากท่านต้องการค้นหา setuid files ให้ใช้คำสั่ง

# find / - perm -4000 -print

และในการค้นหา setgid ให้ใช้คำสั่ง

# find / -perm -2000 -print

โดยปกติแล้วผู้บุกรุกจะแอบซ่อน setuid files และ tools ท่านไว้ใน hidden directories ท่านสามารถตรวจสอบหา files ที่แอบซ่อนอยู่ได้โดยใช้คำสั่ง find

# find / -name " . * "

หรือบางทีผู้บุกรุกจะเลือก directory ไปในการแอบซ่อน files เช่น ~/ gnome, ~/.xauth เหล่านี้เป็นต้น

CREDIT: http://hosxp.net/smf2/index.php?topic=10974.0

7/21/2016

The Visual Microphone: Passive recovery of sound from video.

In a study conducted by MIT researcher Abe Davis, vibrations caused by sound are extracted using high-speed video, turning everyday objects into "visual microphones." (YouTube/Abe Davis)
Imagine someone listening in to your private conversation by filming the bag of chips sitting on the other side of the room. Oddly specific, I know, but researchers at MIT did just that: They've created an algorithm that can reconstruct sound (and even intelligible speech) with the tiny vibrations it causes on video.
When sound hits an object, it makes distinct vibrations. “There’s this very subtle signal that’s telling you what the sound passing through is,” said Abe Davis, a graduate student in electrical engineering and computer science at MIT and first author on the paper. But the movement is tiny – sometimes as small as thousandths of a pixel on video. It’s only when all of these signals are averaged, Davis said, that you can extract sound that makes sense. By observing the entire object, you can filter out the noise.
This particular study grew out of an earlier experiment at MIT, led by Michael Rubinstein, now a postdoctoral researcher at Microsoft Research New England. In 2012, Rubinstein amplified tiny variationsin video to detect things like the skin color change caused by the pumping of blood. Studying the vibrations caused by sound was a logical next step. But getting intelligible speech out of the analysis was surprising, Davis said.
The results are certainly impressive (and a little scary). In one example shown in a compilation video, a bag of chips is filmed from 15 feet away, through sound-proof glass. The reconstructed audio of someone reciting “Mary Had a Little Lamb” in the same room as the chips isn’t crystal clear. But the words being said are possible to decipher.
In most cases, a high-speed camera is necessary to accomplish the feat. Still, at 2,000 to 6,000 frames per second, the camera used by the researchers is nothing compared to the best available on the market, which can surpass 100,000 frames per second. And the researchers found that even cheaper cameras could be used.
“It’s surprisingly possible to take advantage of a bug called rolling shutter,” Davis said. “Usually, it creates these artifacts in the image that people don’t like.” When cameras use rolling shutter to capture an image, they don’t capture one single point in time. Instead, the camera scans across the frame in one direction, picking up each row at a slightly different moment.
By doing so, the camera happens to encode information at a much higher rate than its actual frame rate. For the researchers, that meant being able to analyze vibrations that should have happened too quickly for capture on film. “It kind of turns a two-dimensional low-speed camera into a one-dimensional high-speed camera,” Davis explained. “As a result, we can recover sounds happening at frequencies several times higher than the frame rate of the camera, which is remarkable when you consider that it’s just a complete accident of the way we make them.”
There are definitely limitations to the technology, Davis said, and it may not make for better sound reconstruction than other methods already in use. “Big brother won't be able to hear anything that anyone ever says all of a sudden,” Davis said. “But it is possible that you could use this to discover sound in situations where you couldn’t before. It’s just adding one more tool for those forensic applications.”
Davis and his colleagues care more about applications in scientific research. “This is a new dimension to how you can image objects,” he said. “It tells you something about how they respond physically to pressure, but instead of poking and prodding at them, all you need is to play sound at them.”

7/11/2016

PHP Frameworks: The Best 10 for Modern Web Development

PHP Frameworks: The Best 10 for Modern Web Development

best php frameworks
PHP web frameworks have an ecosystem of their own in the world of web development. PHP frameworks are used to build websites and web applications of all sizes and complexity, ranging from small static websites to large scale complex enterprise content management systems.
PHP is the language of choice for web development with almost 80% of all the existing websites breathing on PHP code. It would have been next to impossible to create such a huge web footprint by developing web applications using raw PHP code from scratch. It is the power of PHP frameworks that has fueled such a massive growth. 
Why Use PHP Web Framework?
When we look at modern web development needs, the key to success is speed development with well organized, reusable and maintainable code, all the while ensuring scalability. The best way to achieve this is by using an existing, proven PHP framework.
Frameworks offer ready to use components, libraries, enforce proven architecture, ensure separation of model, view and controller logic (MVC paradigm), abstract you away from the low level security concerns, enforce file and code structure, and the list is quite long. In short, PHP frameworks make web development fun and make you more productive.
Selecting the right framework, however, can be challenging at times. In an attempt to make the selection process a little easier, we haveanalyzed most of the PHP frameworks out there in the wild and listed below the 10 best.
These are the frameworks that are actively maintained, popular among developer community, promote modern web development practices and make it possible to build websites and web applications of all sizes and complexity.

Laravel

Laravel is undisputedly the king of PHP frameworks and spans the widths and depths of large scale web application development. Laravel ecosystem has quickly grown huge with supportive community and boasts tons of free tutorials and learning resources to get you started within no time.
Laravel is built to be simple, easy to learn and supports rapid application development. You get rich set of features to bring any large scale project to life within days. Laravel comes with its own templating engine named “Blade”. The best thing about Blade is that it allows you to write plain PHP in the templates which essentially means that Blade brings no performance overheads to your application.
Another power fact about Laravel is the inclusion of “Homestead” which is the packaged Vagarant box to let you start development without the hassles of installing web server, HHVM, PHP or any other package on your local machine or server.
New to the world of Laravel or PHP development, no problems, there is a dedicated website named Laracasts.com that hosts hundreds of PHP video tutorials. You can access the basic tutorials as well as most advanced ones to master Laravel at a very minimal cost. 
Laravel team has recently released “Lumen”, a micro PHP framework for the web developers who like to build lightning fast API’s as well as Laravel based services.
You can read more about Laravel at - Laravel.com.

Symfony 

Do you have a very complex and large scale enterprise project at hand? If yes, then Symfony 2 is the one framework to get your job done right. Symfony ecosystem as a whole consists of large set of reusable components, vibrant and active community, Symfony framework and a philosophy to take PHP to the next level.
Symfony framework gets all the super powers from the reusable and decoupled set of components it packs within. The power features of Symfony components can be guessed from the fact that even the big brother Laravel utilizes many of Symfony components.
Symfony components fuel some of the largest open source projects like Drupal, PHPBB, PIWIk, OROCRM and Laravel, to name a few. Symfony components also power one of the most popular templating engine named “Twig”.
Symfony framework was first released back in 2005 as open source PHP framework by interactive agency Sensiolabs. Symfony framework is available under MIT license and can be downloaded from its github repository - Github.com/symfony.
Read more about Symfony at - Symfony.com.
Symfony vs Laravel
In Short, I would go for Laravel for large scale rapid application development even with lesser experienced resources, but, if it is about complex enterprise grade application development, my preference would shift towards Symfony, with more skilled developers.

Phalcon

Phalcon is another modern framework and my personal favorite. Phalcon framework is built for speed, it is a PHP extension written in C and arguably the fastest PHP framework available as of today. Even though it is an extension written in C, it is full stack MVC framework and offers most of the modern features like routing, controllers, view templates, query language, Caching and ORM etc.
The framework beats all other frameworks by margins in performance, is easy to learn, brings in all features to develop web applications of any size and complexity, and PHP developers are loving it.
Phalcon is among the frameworks that have seen success in a very short span of time. It was released back in 2012 under BSD license and is a perfect candidate to complete for the top slot in the world of PHP frameworks.
Slightly underrated at the moment, but that is only because developers are finding it hard to accept that a framework is delivered as PHP extension, and written in C. Phalcon, otherwise is very well document with examples and beginners can easily get started with Phalcon PHP framework.
Read more about Phalcon framework at its official website - phalconphp.com.

Yii

Yii dates back to 2008 and is amongst the oldest of PHP frameworks. It was lagging behind Laravel and Symfony for last couple of years but with the release of Yii 2.0, it is fast becoming the preferred choice for enterprise grade web application development.
Yii 2.0 is a modern PHP framework with complete set of features to cater to the needs of modern websites and applications development. Yii also features a very powerful and best in class code generator tool called Gii.
Yii framework competes with none other than Symfony when it comes to building multitenant, secure and performant (powerful caching) applications that need complex workflows. CMS and CRM are among the categories where Yii shines along with Symfony.
Yii 2 community is very active, helpful and determined to take the Yii 2 framework to the next level. It also hosts one of the best documentation you will see in the world of PHP frameworks.
Yii 2 vs Symfony
Both Symfony and Yii2 are excellent frameworks and can deliver any modern large scale complex web application. I would personally select Symfony 2 for the shear elegance it brings on the table but at the cost of a bit more complexity. Yii 2 has more out of the box features, a little easier to grasp and can be selected for speed development instead of Symfony.
You can read more about Yii 2 at - Yiiframework.

Slim

PHP developers love Slim for developing Restful APIs and services, thanks to Josh Lockhart for creating this tiny beast. The best thing about starting with a micro framework like slim is that you don’t need to spend time learning it. The code base is so small that you can run through the entire code in a late night session.
Slim is an open source, sophisticated micro framework that comes with URL routing and best in class middleware architecture. It also supports encrypted cookies, flash messages, page templates and caching apart from many other features.
Slim framework is best suited in scenarios where you want to build simple applications or API’s grounds up with full flexibility in your hands. Slim resides at the core of your application and you write the code around as required or plug existing components from other frameworks to create fully functional web application.
Silex and Lumen are two other frameworks similar to Slim that fall into category of micro PHP frameworks.
You can read more about Slim at - Slimframework.com.

CakePHP

Another giant from the old times that doesn’t want to succumb in front of the most sophisticated modern PHP frameworks like Laravel and Phalcon. With the latest version “cakePHP 3.0”, this framework once again is back in demand and makes a definite point that it is here to stay.
CakePHP framework was originally released back in 2005 and is now available under MIT license. You can use it free of cost in personal, open source as well as commercial projects. CakePHP has held the spot of top PHP framework for a long time span and attracted corporates like BMW, Hyundai, Zumba and Express as its early users. Big names, isn’t it? That reflects the early life of this beast.
CakePHP 3.0 features enhanced session management, standalone libraries and decoupled components for better modularity, improvements in ORM and many helpers.
You can read more about cakePHP at - Cakephp.org.

FuelPHP

FuelPHP is relatively new entrant in the world of PHP frameworks, specifically when we compare it with the old giants like Codeigniter, Symfony, cakePHP and Yii. FuelPHP is a simple, flexible, full stack modern MVC framework that supports HMVC as well at architecture level. FuelPHP has not been able to make a big impact ever since its release and doesn’t really have the biggest of fan following.
Having said that, there is a lot happening around FuelPHP lately and it is very actively developed and upgraded with new features. The framework at its core offers everything to build an end to end web application of any size and complexity. The future of FuelPHP looks quiet promising and I expect FuelPHP to gain grounds in the months to come and definitely plan to keep an eye on it.
You can check out the git repository of FuelPHP at - Fuelphp.com.

Aura

Aura doesn’t compete with full stack PHP frameworks like Phalcon or with micro PHP frameworks like Slim. Aura is a collection of library packages where each package can be used independent of the other, in any code base.
Aura PHP framework is of particular interest and quite useful to PHP developers who love to write their code grounds up without starting off with a full stack opinionated framework. You can also plugin Aura packages to your application even if you are using any other full stack framework.
You can read more about Aura at – Auraphp.com.

Codeigniter

Codeigniter is the one framework that has maintained itself well over the period of time, however, in recent times, it is seeming shaky against the modern and newly launched PHP frameworks. Codeigniter was created by Ellislab back in 2006 and made available to public for free use under MIT license.
Codeigniter has been the framework of choice for the reason that it was lightweight, fast as compared to other contemporary PHP frameworks and easier to learn. As of today, most of PHP beginners are attracted towards Laravel, Phalcon and even FuelPHP rather than Codeigniter.
Although, the framework has been among best of its times, "IMHO" the future ahead for Codeigniter doesn’t look bright. Ellislab also doesn’t seem to support it anymore and it is now fully in control of the community.
Let us see how Codeigniter shapes up in the days to come, read more about Codeigniter at - Codeigniter.com.

Zend PHP Framework

Zend framework has been around for 9 years now and would always be counted in the list of greatest PHP frameworks of all time. Many big corporates like BBC, BNP Paribas and Cisco WebEx use Zend framework in one or the other of their web projects.
Zend’s development team includes developers of the core PHP and ensures that framework is robust, complete and stable. On the other side, Zend is one of the most difficult frameworks to learn and has a very steep learning curve. Additionally, configuration options are enormous that simply increase the complexity.
Shall I go ahead with Zend Framework for my next project?
With many other simple and easy to learn frameworks around, Zend is a strict “no” for small to medium sized projects and for PHP beginners. Many PHP developers these days are moving from Zend framework to Laravel, Phalcon and other simple frameworks.
But there seems to be future ahead for Zend, Zend 3 is just around the corner for release and I am watching it very closely. The features that Zend 3 promises to bring on the table have all the potential to bring it back in the game and compete with best of the modern PHP frameworks around.
Here is the Zend 3 roadmap for a quick reference.
Read more about Zend PHP Framework at - Framework.zend.com.

Conclusion

Phenomenon of PHP frameworks is very old but since the overall web development landscape is fast changing and so are the frameworks. PHP frameworks have always been the default choice of developers for creating complex web applications, specifically large scale open source projects, and enterprise CMS and CRM systems.
Frameworks come with different concepts and methodology but attempt to meet one underlying requirement i.e. speed developing large scale applications with scalable and maintainable code. The frameworks mentioned in this article are among the best PHP Frameworks in the world of web applications development as of today.
Let us know your experience with PHP frameworks and the framework of your choice via comments, cheers!!
About The Author: noeticsunil
Sunil is the founder and contributing editor at noeticforce.com. He writes about anything and everything that makes modern mobile apps, web apps and websites possible. Passionate about coding in any language including Python, Swift, JavaScript, PHP, Java, Android & iOS dev, not excluding CSS/HTML