مقدمه
تحلیل ایمیل با n8n
تحلیل ایمیل با n8n:
آموزش تحلیل ایمیل با ChatGPT Vision در n8n و ثبت خودکار در Jira
در دنیای امروز، حملات فیشینگ یکی از رایجترین و خطرناکترین تهدیدات امنیتی برای سازمانها به شمار میروند. بسیاری از تیمهای امنیتی، روزانه با دهها ایمیل مشکوک روبهرو هستند که بررسی دستی هر یک از آنها زمانبر و پرهزینه است. اینجاست که تحلیل ایمیل با n8n میتواند نقشی حیاتی ایفا کند. در این مقاله، یک Workflow کامل معرفی میشود که بهصورت خودکار ایمیلهای ورودی از Gmail یا Microsoft Outlook را رصد کرده، محتوای آن را به تصویر تبدیل میکند، این تصویر را با استفاده از قابلیت Vision مدل ChatGPT تحلیل میکند و در نهایت گزارشی کامل را در قالب یک تیکت در Jira برای تیم امنیتی ثبت میکند.
این Template بهویژه برای تیمهای Help Desk، کارشناسان امنیت اطلاعات (SOC) و سازمانهایی که با حجم بالای گزارشهای فیشینگ از سوی کارمندان مواجه هستند طراحی شده است. با استفاده از این Workflow، دیگر نیازی نیست کارشناس امنیتی بهصورت دستی هدرهای ایمیل را بررسی، محتوای HTML را رندر و صحت لینکها را ارزیابی کند؛ تمام این مراحل بهصورت خودکار و در عرض چند ثانیه انجام میشود. در ادامه این مقاله، ساختار کامل Workflow، عملکرد تکتک Nodeها و نحوه شخصیسازی آن را بهطور کامل بررسی خواهیم کرد تا بتوانید این سیستم را در سازمان خود پیادهسازی کنید.
قبل از شروع
اگر هنوز n8n را نصب نکردهاید، پیشنهاد میکنیم ابتدا مقاله «آموزش n8n» را مطالعه کنید. در آن مقاله، مراحل نصب با Node.js و Docker، راهاندازی اولیه و ساخت اولین Workflow بهصورت کامل آموزش داده شده است. پس از نصب و راهاندازی، به این مقاله بازگردید و مراحل پیادهسازی این Workflow را دنبال کنید.
این Workflow تحلیل ایمیلهای مشکوک با ChatGPT Vision چه کاری انجام میدهد؟
این ساختار تحلیل ایمیل با n8n بهصورت خودکار ایمیلهای ورودی به یک صندوق پستی Gmail یا Outlook را زیر نظر میگیرد. بهمحض دریافت ایمیل جدید، اطلاعات کلیدی آن مانند موضوع، فرستنده، متن و هدرهای فنی استخراج میشود. سپس محتوای HTML ایمیل به یک تصویر (Screenshot) تبدیل میشود تا ظاهر واقعی ایمیل، شامل لینکها، لوگوها و طراحی فریبنده آن، قابل مشاهده باشد. این تصویر به همراه هدرهای فنی ایمیل برای مدل ChatGPT ارسال میشود تا احتمال فیشینگ بودن آن بررسی شود. در پایان، یک تیکت کامل در Jira ایجاد میشود که شامل خلاصه ایمیل، تحلیل هوش مصنوعی و تصویر ایمیل بهعنوان پیوست است تا تیم امنیتی بتواند بهسرعت اقدام لازم را انجام دهد.
کاربردهای این Workflow
کاربرد های تحلیل ایمیل با n8n:
-
خودکارسازی فرآیند بررسی ایمیلهای مشکوک گزارششده توسط کارمندان
-
کاهش زمان پاسخگویی تیم امنیت اطلاعات به گزارشهای فیشینگ
-
ایجاد آرشیو بصری از ایمیلهای مشکوک برای بررسیهای آتی
-
کمک به تیمهای Help Desk در سازمانهای بزرگ با حجم بالای ایمیل
-
تحلیل هوشمند هدرهای ایمیل برای شناسایی جعل هویت فرستنده (Spoofing)
-
یکپارچهسازی فرآیند امنیتی با سیستم مدیریت تیکت Jira برای پیگیری بهتر
پیشنیازها
برای پیادهسازی این Template به موارد زیر نیاز دارید:
-
نصب و راهاندازی n8n (نسخه Cloud یا Self-hosted)
-
یک حساب Gmail و تنظیم Credential نوع OAuth2 برای آن
-
در صورت نیاز، یک حساب Microsoft Outlook و Credential مربوط به Microsoft Graph API
-
یک حساب فعال در سرویس hcti.io و دریافت API Key برای تولید Screenshot از HTML
-
یک حساب OpenAI و API Key معتبر برای استفاده از مدل ChatGPT
-
یک حساب Jira Cloud و ایجاد Credential مربوط به Jira Software Cloud API
-
شناسایی Project و Issue Type مناسب در Jira برای ثبت تیکتهای امنیتی
دانلود Template
فایل JSON این Workflow را از این قسمت دانلود کنید.
رمز فایل: danixai.com
آموزش Import کردن Workflow
وارد داشبورد n8n شوید و روی Import from File کلیک کنید. فایل JSON را انتخاب کنید و به این شکل Workflow ایجاد خواهد شد، سپس Credentialهای موردنیاز را تنظیم کنید.
ساختار workflow و اموزش کامل node ها
Gmail Trigger
وظیفه: این Node مسئول رصد لحظهای صندوق پستی Gmail است و هر یک دقیقه یک بار بررسی میکند که آیا ایمیل جدیدی دریافت شده است یا خیر.
ورودی: نیازی به ورودی ندارد و بهعنوان نقطه شروع Workflow عمل میکند.
خروجی: اطلاعات کامل ایمیل دریافتی شامل موضوع، فرستنده، گیرنده، متن HTML و هدرها.
تنظیمات مهم: حالت Poll روی هر یک دقیقه تنظیم شده است.
نکات قابل تغییر: میتوان بازه بررسی را افزایش یا کاهش داد یا فیلترهایی برای محدود کردن ایمیلهای خاص اضافه کرد.
دلیل استفاده: بهعنوان دروازه ورودی برای دریافت خودکار ایمیلهای گزارششده توسط کاربران.
Microsoft Outlook Trigger
وظیفه: مشابه Gmail Trigger، این Node ایمیلهای ورودی به یک حساب Outlook را رصد میکند. در این Template بهصورت پیشفرض غیرفعال است.
ورودی: ندارد.
خروجی: فیلدهایی مانند body، toRecipients، subject و bodyPreview.
تنظیمات مهم: فیلدهای خروجی بهصورت دستی انتخاب شدهاند تا فقط دادههای موردنیاز دریافت شود.
نکات قابل تغییر: در صورت استفاده از Outlook بهجای Gmail، کافی است این Node را فعال و Gmail Trigger را غیرفعال کنید.
دلیل استفاده: ارائه گزینه جایگزین برای سازمانهایی که از Microsoft 365 استفاده میکنند.
Retrieve Headers of Email
وظیفه: با استفاده از Microsoft Graph API، هدرهای کامل ایمیل و بدنه متنی آن را دریافت میکند.
ورودی: شناسه پیام (id) دریافتی از Trigger مربوط به Outlook.
خروجی: آرایهای از هدرهای فنی ایمیل (internetMessageHeaders) و بدنه متنی.
تنظیمات مهم: استفاده از Header سفارشی Prefer برای دریافت بدنه بهصورت متن ساده.
نکات قابل تغییر: میتوان فیلدهای بیشتری مانند پیوستها را نیز از طریق Query اضافه کرد.
دلیل استفاده: هدرهای ایمیل اطلاعات حیاتی درباره مسیر ارسال و احتمال جعل فرستنده ارائه میدهند.
Format Headers
وظیفه: این Node از نوع Code، آرایه خام هدرها را به یک ساختار Key-Value قابل خواندن تبدیل میکند.
ورودی: آرایه internetMessageHeaders از Node قبلی.
خروجی: یک Object که هر هدر به همراه مقدار یا مقادیر مربوط به آن نمایش داده میشود.
تنظیمات مهم: کد جاوااسکریپت با استفاده از تابع reduce دادهها را گروهبندی میکند.
نکات قابل تغییر: در صورت نیاز میتوان فقط هدرهای خاصی مانند Received یا Authentication-Results را فیلتر کرد.
دلیل استفاده: سادهسازی دادههای خام برای استفاده در مراحل بعدی و تحلیل هوش مصنوعی.
Set Outlook Variables
وظیفه: استخراج و یکسانسازی متغیرهای کلیدی ایمیل دریافتی از Outlook مانند htmlBody، subject، recipient و textBody.
ورودی: دادههای خروجی از Node های Format Headers و Retrieve Headers of Email.
خروجی: یک ساختار استاندارد شامل پنج فیلد اصلی.
تنظیمات مهم: استفاده از Expression برای ارجاع مستقیم به دادههای Node های قبلی.
نکات قابل تغییر: میتوان فیلدهای اضافی مانند تاریخ دریافت یا شناسه پیام را نیز اضافه کرد.
دلیل استفاده: یکسانسازی خروجی Outlook با خروجی Gmail برای ادامه مسیر مشترک Workflow.
Set Gmail Variables
وظیفه: مشابه Node قبلی، اما برای استخراج متغیرهای ایمیل دریافتی از Gmail.
ورودی: خروجی کامل Gmail Trigger.
خروجی: فیلدهای htmlBody، headers، subject، recipient و textBody.
تنظیمات مهم: مقداردهی مستقیم از فیلدهای json.html، json.headers و json.text.
نکات قابل تغییر: امکان افزودن فیلدهای دیگر مانند CC یا BCC ایمیل.
دلیل استفاده: آمادهسازی دادههای Gmail بهگونهای که با ساختار مشترک Workflow سازگار باشد.
Set Email Variables
وظیفه: ادغام خروجی هر دو مسیر (Gmail و Outlook) در یک ساختار واحد برای پردازشهای بعدی.
ورودی: خروجی از Set Gmail Variables یا Set Outlook Variables.
خروجی: همان دادهها به همراه سایر فیلدهای موجود (به دلیل فعال بودن گزینه Include Other Fields).
تنظیمات مهم: گزینه includeOtherFields فعال است تا هیچ دادهای از دست نرود.
نکات قابل تغییر: میتوان اعتبارسنجی یا شرط IF قبل از این Node اضافه کرد تا فقط ایمیلهای خاصی پردازش شوند.
دلیل استفاده: ایجاد یک نقطه اتصال مشترک میان دو مسیر ورودی ایمیل.
Screenshot HTML
وظیفه: ارسال محتوای HTML ایمیل به سرویس hcti.io برای تولید یک تصویر از نمای واقعی ایمیل.
ورودی: فیلد htmlBody.
خروجی: آدرس URL تصویر تولیدشده.
تنظیمات مهم: احراز هویت از نوع HTTP Basic Auth با استفاده از Credential مربوط به hcti.io.
نکات قابل تغییر: در صورت داشتن سرور اختصاصی، میتوان بهجای این سرویس از ابزارهای رندر محلی مانند Puppeteer استفاده کرد تا محتوای ایمیل به سرویس ثالث ارسال نشود.
دلیل استفاده: نمایش بصری ایمیل به تیم امنیتی و مدل هوش مصنوعی کمک میکند تا طراحی فریبنده صفحات فیشینگ بهتر شناسایی شود.
Retrieve Screenshot
وظیفه: دریافت فایل تصویری از آدرس URL تولیدشده توسط Node قبلی.
ورودی: فیلد url دریافتی از Screenshot HTML.
خروجی: فایل باینری تصویر.
تنظیمات مهم: همان Credential مربوط به hcti.io برای احراز هویت استفاده میشود.
نکات قابل تغییر: میتوان فرمت خروجی تصویر را در تنظیمات hcti.io تغییر داد.
دلیل استفاده: آمادهسازی فایل تصویری برای ارسال به ChatGPT و پیوست کردن به تیکت Jira.
ChatGPT Analysis
وظیفه: تحلیل تصویر ایمیل و هدرهای فنی آن با استفاده از مدل هوش مصنوعی برای تشخیص احتمال فیشینگ بودن.
ورودی: فایل تصویری Base64 و هدرهای ایمیل.
خروجی: متنی توصیفی شامل تحلیل کامل و نظر مدل درباره فیشینگ بودن یا نبودن ایمیل.
تنظیمات مهم: استفاده از مدل chatgpt-4o-latest، محدودیت 1500 توکن برای پاسخ و فرمت خروجی سازگار با Jira Wiki Markup.
نکات قابل تغییر: میتوان Prompt را برای تمرکز بیشتر روی لینکهای مخرب یا الگوهای خاص جعل هویت تغییر داد یا مدل دیگری از OpenAI انتخاب کرد.
دلیل استفاده: قلب تحلیلی Workflow که با استفاده از هوش مصنوعی، تصمیمگیری اولیه درباره خطرناک بودن ایمیل را انجام میدهد.
Create Jira Ticket
وظیفه: ایجاد یک تیکت جدید در Jira شامل خلاصه، توضیحات کامل و نتیجه تحلیل ChatGPT.
ورودی: دادههای ایمیل از Set Email Variables و تحلیل از ChatGPT Analysis.
خروجی: اطلاعات تیکت ایجادشده از جمله شناسه (key) آن.
تنظیمات مهم: انتخاب Project با نام Support و Issue Type از نوع Task.
نکات قابل تغییر: میتوان Project، نوع Issue، برچسبها (Labels) یا سطح اولویت را متناسب با ساختار سازمان تغییر داد.
دلیل استفاده: مستندسازی رسمی هر گزارش فیشینگ برای پیگیری توسط تیم امنیتی.
Rename Screenshot
وظیفه: تغییر نام فایل تصویری قبل از پیوست شدن به تیکت Jira.
ورودی: فایل باینری از Retrieve Screenshot.
خروجی: همان فایل با نام emailScreenshot.png.
تنظیمات مهم: اجرای کد بهصورت جداگانه برای هر آیتم (Run Once for Each Item).
نکات قابل تغییر: میتوان نام فایل را بر اساس تاریخ یا شناسه تیکت پویا کرد.
دلیل استفاده: اطمینان از خوانا و منظم بودن نام فایل پیوستشده در Jira.
Upload Screenshot of Email to Jira
وظیفه: پیوست کردن تصویر ایمیل بهعنوان ضمیمه به تیکت ایجادشده در Jira.
ورودی: شناسه تیکت (issueKey) و فایل تصویری.
خروجی: تأیید موفقیتآمیز بودن آپلود پیوست.
تنظیمات مهم: استفاده از Resource نوع issueAttachment در Jira Node.
نکات قابل تغییر: میتوان فایلهای اضافی دیگری مانند فایل متنی هدرها را نیز به همین شکل پیوست کرد.
دلیل استفاده: ارائه شواهد بصری کامل به تیم امنیتی برای بررسی سریعتر و دقیقتر.
نحوه شخصیسازی Workflow
برای تطبیق این Workflow تحلیل ایمیل با n8n با نیازهای سازمان خود میتوانید موارد زیر را تغییر دهید:
Prompt ارسالی به ChatGPT را میتوان بازنویسی کرد تا روی معیارهای خاصتری مانند بررسی دامنه لینکها یا شباهت به برندهای شناختهشده تمرکز کند. مدل هوش مصنوعی نیز قابل تغییر است و میتوان از مدلهای سبکتر یا مدلهای اختصاصی دیگر استفاده کرد. Trigger ورودی نیز قابل تعویض است؛ بهجای Gmail یا Outlook میتوان از یک Webhook عمومی برای دریافت گزارش از فرمهای داخلی سازمان استفاده کرد. زمانبندی Trigger (Polling Interval) نیز بسته به حجم ایمیلهای سازمان قابل تنظیم است. Labelها و نوع Issue در Jira را میتوان بر اساس سطح خطر تشخیص دادهشده بهصورت پویا تغییر داد. همچنین میتوان شرطهای IF اضافه کرد تا فقط ایمیلهایی که توسط ChatGPT با درصد اطمینان بالا فیشینگ تشخیص داده شدهاند وارد مرحله ایجاد تیکت شوند و مسیر اجرای Workflow برای موارد کمخطر متفاوت باشد.
مزایای استفاده از این Workflow
مزایای استفاده از workflow تحلیل ایمیل با n8n:
-
کاهش چشمگیر زمان پاسخگویی به گزارشهای فیشینگ
-
حذف نیاز به بررسی دستی هدرهای پیچیده ایمیل
-
ایجاد مستندات بصری و متنی یکپارچه برای هر گزارش
-
امکان پردازش همزمان ایمیل از دو منبع Gmail و Outlook
-
افزایش دقت تشخیص با ترکیب تحلیل تصویری و متنی هوش مصنوعی
-
یکپارچگی کامل با ابزار مدیریت پروژه Jira که در اکثر سازمانها استفاده میشود
نکات مهم
از نکات مهم در اجراری سیستم تحلیل ایمیل با n8n:
-
Credential سرویس hcti.io باید بهصورت مرتب بررسی شود تا منقضی نشده باشد.
-
ارسال محتوای HTML ایمیل به سرویس ثالث hcti.io ممکن است حریم خصوصی دادهها را تحت تأثیر قرار دهد؛ در صورت حساسیت بالا از رندر محلی استفاده کنید.
-
محدودیت توکن مدل ChatGPT (1500 توکن) ممکن است برای ایمیلهای طولانی کافی نباشد و نیاز به افزایش داشته باشد.
-
Project و Issue Type انتخابشده در Jira باید از قبل در سازمان تعریف شده باشند.
-
در صورت فعال بودن همزمان Gmail Trigger و Outlook Trigger، بررسی کنید که Workflow برای هر دو مسیر بهدرستی تست شده باشد.
-
بهتر است یک محدودیت نرخ (Rate Limit) برای فراخوانی API مدل OpenAI در نظر گرفته شود تا هزینهها کنترل شود.
-
کیفیت تحلیل ChatGPT به کیفیت Prompt وابسته است؛ برای نتایج بهتر Prompt را بهمرور بهبود دهید.
-
نگهداری و آرشیو منظم تیکتهای Jira کمک میکند الگوهای تکرارشونده حملات فیشینگ شناسایی شوند.
خطاهای رایج (Troubleshooting)
خطای عدم دریافت Screenshot از hcti.io
علت: انقضای Credential یا محدودیت پلن رایگان سرویس. راهحل: بررسی اعتبار API Key و در صورت نیاز ارتقای پلن حساب hcti.io.
خطای عدم پاسخگویی ChatGPT Analysis
علت: اتمام اعتبار حساب OpenAI یا نامعتبر بودن API Key. راهحل: بررسی موجودی حساب OpenAI و صحت Credential تنظیمشده در n8n.
خطای عدم ایجاد تیکت در Jira
علت: نامعتبر بودن شناسه Project یا Issue Type. راهحل: بازبینی مقادیر project و issueType در Node مربوط به Create Jira Ticket.
خطای عدم پیوست شدن تصویر به تیکت
علت: اجرای نادرست ترتیب Nodeها یا از دست رفتن داده باینری تصویر. راهحل: اطمینان از اجرای صحیح Node Rename Screenshot پیش از آپلود پیوست.
خطای عدم دریافت هدرهای ایمیل در Outlook
علت: عدم دسترسی کافی Credential به Microsoft Graph API. راهحل: بررسی Scopeهای تعریفشده برای Credential Outlook و افزودن دسترسی Mail.Read.
سوالات متداول
آیا این Workflow میتواند بهصورت همزمان از Gmail و Outlook استفاده کند؟
بله، هر دو Trigger در Workflow وجود دارند و میتوان هر دو را فعال کرد تا ایمیل از دو منبع دریافت شود.
آیا دادههای ایمیل به سرویس ثالث ارسال میشود؟
بله، محتوای HTML ایمیل برای تولید تصویر به سرویس hcti.io ارسال میشود؛ در صورت حساسیت امنیتی میتوان از رندر محلی استفاده کرد.
آیا امکان استفاده از مدل دیگری بهجای ChatGPT وجود دارد؟
بله، مدل مورد استفاده در Node مربوط به OpenAI قابل تغییر است و میتوان از سایر مدلهای متنی یا تصویری استفاده کرد.
آیا لازم است حتماً از Jira استفاده کنم؟
خیر، Node پایانی قابل جایگزینی با سایر ابزارهای مدیریت تیکت مانند Trello یا ClickUp است.
آیا این Workflow نیاز به دانش برنامهنویسی دارد؟
دانش پایه جاوااسکریپت برای درک Nodeهای Code مفید است، اما پیادهسازی کلی Workflow برای کاربران مبتدی تا متوسط نیز قابل انجام است.
جمعبندی
پیادهسازی این Workflow تحلیل ایمیل با n8n میتواند بهطور قابلتوجهی فرآیند امنیتی سازمانها را بهبود بخشد. با ترکیب هوشمندانه Gmail یا Outlook برای دریافت ایمیل، سرویس hcti.io برای بصریسازی محتوا، مدل ChatGPT برای تحلیل هوشمند و Jira برای مستندسازی و پیگیری، این Template یک راهکار جامع و خودکار برای تیمهای امنیت اطلاعات فراهم میکند. با شخصیسازی Promptها، شرطها و تنظیمات، میتوانید این Workflow را دقیقاً متناسب با نیازهای خاص سازمان خود پیکربندی کنید. استفاده از این نوع اتوماسیون نهتنها در زمان و هزینه صرفهجویی میکند، بلکه دقت و سرعت واکنش به تهدیدات سایبری را نیز افزایش میدهد.


