Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> อีเมล

อ่าน Email Headers: จับ Spam, Phishing และปกป้อง Inbox

เคยได้ Spam หรือ Phishing Email จากที่อยู่อีเมลที่ไม่รู้จัก? ใครเสนอเที่ยวฟรี ขอ Bitcoin แลกภาพส่วนตัว หรือแค่ส่ง Marketing Email ไม่พึงประสงค์?

เคยสงสัยว่าอีเมลเหล่านั้นมาจากไหน? เห็น Spammer Spoof อีเมลของคุณ และสงสัยว่าทำยังไง?

Email Spoofing (ทำให้อีเมลดูเหมือนมาจาก Address อื่น ไม่ใช่ Address จริง เช่น อีเมลดูเหมือนมาจาก whitehouse.gov แต่จริงๆ มาจาก Scammer) ง่ายมาก

Core Email Protocols ไม่มี Authentication Method ใดๆ หมายความว่า Address From คือแค่ Fill-in-the-blank

ปกติเวลาได้อีเมล จะเห็นแบบนี้:

From: Name <name@gmail.com> Date: Tuesday, July 16, 2019 at 10:02 AM To: Me <Me@freecodecamp.com>

ด้านล่างคือ Subject และ Message

แต่เราจะรู้ยังไงว่าอีเมลนั้นมาจริงจากไหน? ไม่มีข้อมูลเพิ่มเติมให้วิเคราะห์ไหม?

สิ่งที่เราหาคือ Full Email Headers — สิ่งที่เห็นข้างต้นคือ Partial Header เท่านั้น ข้อมูลนี้จะให้ข้อมูลเพิ่มเติมว่าอีเมลมาจากไหน และมาถึง Inbox ยังไง

หากอยากดู Headers ของตัวเอง นี่คือวิธีบน Outlook และ Gmail โปรแกรมเมลส่วนใหญ่ทำงานคล้ายกัน Google Search บอกวิธีดู Headers บนบริการอื่น

ในบทความนี้เราจะอ่านชุด Headers จริง (แต่ Redacted มาก — เปลี่ยน Hostnames, Timestamps, IP Addresses)

เราจะอ่าน Headers จากบนลงล่าง แต่ระวัง: Server ใหม่แต่ละตัวเพิ่ม Header ของตนด้านบนของ Email Body หมายถึงเราจะอ่าน Header แต่ละอันจาก MTA (Message Transfer Agent) สุดท้าย ลงมาหา MTA แรกที่รับ Message

Internal Transfers

Received: from REDACTED.outlook.com (IPv6 Address) by REDACTED.outlook.com with HTTPS via REDACTED.OUTLOOK.COM; Fri, 25 Oct 2019 20:16:39 +0000

Hop แรกนี้แสดง HTTPS Line หมายถึง Server ไม่ได้รับ Message ผ่าน SMTP มาตรฐาน แต่สร้าง Message จาก Input ที่รับบน Web Application

Received: from REDACTED.outlook.com (IPv6Address) by REDACTED.outlook.com (IPv6Address) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1358.20; Fri, 25 Oct 2019 20:16:38 +0000 Received: from REDACTED.outlook.com (IPv6Address) by REDACTED.outlook.office365.com (IPv6Address) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2385.20 via Frontend Transport; Fri, 25 Oct 2019 20:16:37 +0000 Authentication-Results: spf=softfail (sender IP is REDACTEDIP)smtp.mailfrom=gmail.com; privatedomain.com; dkim=pass (signature was verified)header.d=gmail.com;privatedomain.com; dmarc=pass action=noneheader.from=gmail.com;compauth=pass reason=100Received-SPF: SoftFail (REDACTED.outlook.com: domain of transitioning gmail.com discourages use of IPAddress as permitted sender)

Header Blocks แรก 2 ตัวเป็น Internal Mail Transfers บอกว่ารับโดย Office365 Servers (outlook.com) และ Route ภายในไป Recipient ที่ถูกต้อง

ยังบอกว่าส่งผ่าน Encrypted SMTP รู้จาก Header รายการ with Microsoft SMTP Server แล้วระบุ TLS Version และ Cipher เฉพาะเจาะจง

Header Block ที่ 3 หมายถึง Transition จาก Local Mail Server ไป Mail Filtering Service รู้จาก via Frontend Transport ซึ่งเป็น Protocol เฉพาะ Microsoft-Exchange (ดังนั้นไม่ใช่ SMTP อย่างเคร่งครัด)

Block นี้ยังรวม Email Checks: Outlook.com Header รายละเอียด SPF/DKIM/DMARC Results SPF Softfail หมายถึง IP Address นี้ไม่ได้รับอนุญาตส่งอีเมลแทน gmail.com

dkim=pass หมายถึงอีเมลมาจาก Sender ที่อ้างจริง และ (น่าจะ) ไม่ถูกแก้ไขระหว่างทาง

DMARC คือ Rules บอก Mail Server ว่าตีความ SPF และ DKIM ยังไง Pass น่าจายหมายถึงอีเมลต่อไปยังปลายทาง

อ่านเพิ่มเติม SPF, DKIM, DMARC ได้ที่บทความนี้

Internal/External Transition

Received: from Redacted.localdomain.com (IP address) by redacted.outlook.com (IP address) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2305.15 via Frontend Transport; Fri, 25 Oct 2019 20:16:37 +0000 Received-SPF: None (Redacted.localdomain.com: no sender authenticity information available from domain of sender@gmail.com) identity=xxx; client-ip=IP address; receiver=Redacted.localdomain.com; envelope-from="sender@gmail.com"; x-sender="sender@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (Redacted.localdomain.com: domain of sender@gmail.com designates sending IP as permitted sender) identity=mailfrom; client-ip=IP address2; receiver=Redacted.localdomain.com; envelope-from="sender@gmail.com"; x-sender="sender@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"

นี่คือ SPF Record ของ Google — บอก Receiving Server ว่าอีเมลที่อ้างว่ามาจาก gmail.com มาจาก Google Approved Server

Received-SPF: None (redacted.localdomain.com: no sender authenticity information available from domain of postmaster@redatedgoogle.com) identity=helo; client-ip=IP address; receiver=Redacted.localdomain.com; envelope-from="sender@gmail.com"; x-sender="postmaster@.google.com"; x-conformance=sidf_compatible Authentication-Results-Original: Redacted@localdomain.com; spf=None smtp.pra=sender@gmail.com; spf=Pass smtp.mailfrom=sender@gmail.com; spf=None smtp.helo=postmaster@redacted.google.com; dkim=pass (signature verified) header.i=@gmail.com; dmarc=pass (p=none dis=none) d=gmail.com IronPort-SDR: IronPort-PHdr: =X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =X-IronPort-AV: ;d="scan" X-Amp-Result: SKIPPED (no attachment in message) X-Amp-File-Uploaded: False

นี่แสดง SPF/DKIM/DMARC Checks เพิ่มเติม และผลลัพธ์จาก IronPort Scan

IronPort เป็น Email Filter ยอดนิยม บริษัทหลายแห่งใช้ หา Spam, Viruses, Malicious Emails Scan Links และ Attachments ในอีเมล ตัดสินใจว่า Dropped, Delivered, หรือ Suspicious (Attach Header เตือน User)

Received: from redacted.google.com ([IP Address]) by Redacted.localdomain.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; Fri, 25 Oct 2019 16:16:36 -0400 Received: by redacted.google.com with SMTP id for recipient@localdomain.com; Fri, 25 Oct 2019 13:16:35 -0700 (PDT) X-Received: by IPv6:: with SMTP id; Fri, 25 Oct 2019 13:16:35 -0700 (PDT) Return-Path: sender@gmail.com Received: from senderssmacbook.fios-router.home (pool-.nycmny.fios.verizon.net. [IP address redacted]) by smtp.gmail.com with ESMTPSA id redacted IP (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 25 Oct 2019 13:16:34 -0700 (PDT) Received: from senderssmacbook.fios-router.home (pool-.nycmny.fios.verizon.net. [IP address redacted]) by smtp.gmail.com with ESMTPSA id redacted IP (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 25 Oct 2019 13:16:34 -0700 (PDT)

ส่วนนี้แสดง Internal Hops ที่อีเมลเดินทางจากอุปกรณ์ Sender เริ่มต้น ผ่าน Routing ของ Gmail ไปยัง Outlook Environment ของ Recipient จากนี้เห็นว่า Sender เริ่มต้นมาจาก Macbook ใช้ Home Router ด้วย Verizon Fios ใน NYC

นี่คือสุดของ Hops ที่แสดง Route จาก Sender ถึง Recipient หลังจากนี้จะเป็น Body ของอีเมล (และ Headers ที่มักเห็น เช่น From:, To: ฯลฯ) อาจมี Formatting ตาม Media Type และ Email Client (เช่น MIME Version, Content Type, Boundary ฯลฯ) อาจมี User-Agent Information (รายละเอียดอุปกรณ์ที่ส่ง)

ในกรณีนี้เรารู้แล้วว่า Sender Device เป็น Macbook จาก Naming Convention ของ Apple แต่อาจมีรายละเอียด CPU Type, Version, Browser และ Version ที่ติดตั้ง

บางกรณี (ไม่ใช่ทั้งหมด) อาจมี IP Address ของ Sender Device (แต่ Providers หลายแห่งซ่อนข้อมูลนี้ ต้องมี Subpoena)

Email Headers บอกอะไรได้บ้าง?

Email Headers ช่วยระบุได้ว่าอีเมลไม่ได้ส่งจาก Sender ที่อ้าง ช่วยให้ข้อมูล Sender บ้าง — แม้มักไม่พอระบุ True Sender

Law Enforcement มักใช้ Data นี้ Subpoena ข้อมูลจาก ISP ที่เกี่ยวข้อง แต่เราส่วนใหญ่ใช้ช่วยสืบสวน Phishing โดยทั่วไป

กระบวนการนี้ยากกว่าเพราะ Headers สามารถ Fake ได้โดย Malicious Servers หรือ Hackers หากไม่ติดต่อ Owner ของแต่ละ Server Verify ว่า Headers ในอีเมลตรงกับ SMTP Logs ของพวกเขา (ซึ่งลำบากและใช้เวลา) คุณไม่มั่นใจได้ว่า Headers ถูกต้อง (นอกจาก Headers ที่ Server ของคุณ Attach เอง)

หากไม่ติดต่อ Owner แต่ละ Server Verify ว่า Headers ในอีเมลตรงกับ SMTP Logs (ลำบากและใช้เวลา) คุณไม่มั่นใจได้ว่า Headers ทั้งหมดถูกต้อง..

DKIM, DMARC และ SPF ช่วยในกระบวนการนี้ แต่ไม่สมบูรณ์ และโดยไม่มีพวกเขา ไม่มี Verification เลย

ไม่อยากวิเคราะห์ Headers เอง? เว็บไซต์นี้ทำให้