آقای Benjamin Brundage محقق امنیتی در حوزه ی هوش تهدید (Threat Intelligence) از Synthient، پروژه ای رو با هدف جمع آوری داده های منتشر شده توسط بدافزارهای سارق اطلاعات راه اندازی کرده، اما بدلیل حجم بالای داده ها، تصمیم گرفته این داده های حجیم رو به HIBP بده. در این پست نگاهی به نحوه ی پیاده سازی سیستم جمع آوری داده ها که عمدتا از طریق تلگرام بوده انداختیم، همچنین تحلیل کیفی داده ها توسط HIBP رو بررسی کردیم و در نهایت یسری پلتفرم، برای بررسی داده های نقض یا نشت داده شده، معرفی کردیم تا با بررسی اطلاعات خودتون در این پلتفرمها، مطلع بشید که اطلاعاتتون به سرقت رفته یا نه و برای این منظور چاره اندیشی کنید.
پیاده سازی سیستم:
در چند سال اخیر، اکوسیستم بدافزارهای سارق اطلاعات (InfoStealer) در جنبههای مختلفی تحول یافته. از خانواده های بدافزاری گرفته تا پلتفرمهایی که از اونا برای انتشار دادهها استفاده میشه. حدود یک سال پیش، محققای Synthient شروع به نظارت بر چندین پلتفرم مرتبط با این اکوسیستم کردن و یک سامانه ای برای جمع آوری دادههای منتشر شده، با هدف کمک به قربانیان این حملات، طراحی کردن.
در طراحی این سامانه، هدف ساختن یک پلتفرم هوش تهدید (Threat Intelligence) در سطح رقابتی با بزرگترین پلتفرمهای موجود بود.
اهداف اصلی شامل موارد زیر بود:
- جمع آوری بیشترین دادهی منحصر به فرد ممکن
- دستیابی به هشدارهای تقریبا بلادرنگ (Real-Time)
- پایش چند منبع داده مختلف، که هرکدوم ارزش خاصی برای تحلیل داشتن.
منابع پایششده شامل:
- تلگرام: اصلی ترین منبع داده در اکوسیستم لاگهای بدافزارهای سارق اطلاعات. در برخی روزها، میلیونها اعتبارنامهی منحصر به فرد از طریق تلگرام منتشر میشد.
- انجمنها (Forums): اغلب شامل لینکهای اشتراک فایل، مانند لیستهای ترکیبی (Combo Lists)، لاگهای بدافزارهای سارق اطلاعات یا دامپهای دیتابیس بود.
- شبکه های اجتماعی: لینکهایی به گروهها یا کانالهای تلگرامی که Combo List یا Stealer Log منتشر میکردن.
- شبکه Tor: بدلیل کمبود داده، تصمیم گرفتن این مورد رو اسکن نکنن.

در نهایت مشخص شد که تلگرام بزرگترین منبع داده هستش، بطوری که تنها یک حساب تلگرام میتونه تا ۵۰ میلیون اعتبارنامه در یک روز رو جمع آوری کنه. به همین دلیل، تمرکز اصلی این مقاله روی تلگرام هستش.
خزیدنِ تلگرام (Crawling Telegram):
پیش از پرداختن به جزئیات فنی ساخت سامانه، لازم است نگاهی به اکوسیستم لاگهای Stealer داشته باشیم، چون درک این ساختار برای فهم تصمیمات طراحی حیاتی هستش. این اکوسیستم از چندین گروه اصلی تشکیل شده:
- فروشندگان اصلی: مسئول عملیات اصلی هستن، اغلب کانال عمومی برای اشتراک لاگها دارن و یک کانال خصوصی پولی برای مشتریانی که میخوان برای دسترسی به این داده ها، هزینه پرداخت کنن، دارن.
- تجمیع کنندگان: لاگها رو از منابع مختلف جمع آوری کرده و در کانال عمومی خودشون منتشر میکنن. اغلب به مشتریان امکان جستجوی قربانیان در سایتهای خاص رو با استفاده از دادههای جمع آوری شده میدن.
- ترافرها (Traffers):مسئول فروش لاگها نیستن، بلکه وظیفهی انتشار بدافزارها رو در همکاری با فروشندگان اصلی دارن. گاهی کانال مخصوص خودشون رو دارن تا دادههای بدست اومده رو بعنوان مدرک منتشر کنن.

انگیزهی تجمیع کنندگان، معمولا با فروشندگان اصلی متفاوت هستش. اونا اغلب دادهها رو برای جلب توجه عمومی افشا میکنن، اصلاحا شوآف میکنن. بنابراین، علاوه بر کانالهای اصلی، نیاز هستش که، اکوسیستم کانالهای ثانویهیِ تجمیع کنندگان رو هم تحت نظارت قرار بدیم.
علاوه بر این، نوع دادههای به اشتراک گذاشته شده بین این گروهها به شدت متفاوت هستش. تجمیع کنندگان معمولا دادهها رو از چند منبع مختلف ادغام میکنن، و ترافِرها هم از بدافزارهای متنوعی استفاده میکنن که خروجی اونا از لحاظ فرمت و ساختار متفاوت هستش. فروشندگان اصلی برای جلوگیری از سوء استفاده، اغلب آرشیوها رو رمزگذاری کرده و لینک کانال خودشون رو بعنوان پسورد قرار میدن، که این مسئله روند ردیابی پیامها و آرشیوها رو پیچیدهتر میکنه.

ساخت سامانه:
تلگرام از پروتکل MTProto برای ارتباطات خودش استفاده میکنه، که بواسطهی API باتها (Bots API) میشه با اون تعامل داشت. با وجود سادگی ظاهری، بسیاری از کتابخانه های متن باز موجود، فاقد امکانات مورد نیاز محققا بودن یا دیگه نگهداری نمی شدن. در نتیجه، محققا یک فورک (Fork) از یکی از نسخه های Pyrogram ایجاد کردن و اونو برای نیازهای خودشون توسعه دادن.

در نهایت حدودا از ۲۰ حساب تلگرام پریمیوم استفاده کردن که بهشون Worker میگن. وظیفهی هر Worker، نظارت یا استخراج داده از کانالها بوده.

اگه پردازشگر (Processor) تشخیص میداد که یک کانال، مرتبط با دادهی سرقتی هستش، به Worker دستور میداد تا عضو اون کانال بشه. Worker بعد از عضویت، یک Listener پیام فعال میکرد تا پیامها رو به پردازشگر ارسال کنه.

پردازشگر، پیامها رو برای استخراج لینکهای جدید عضویت در گروهها و کانالهای تلگرام، فایلهای ضمیمه و سایر دادهها بررسی میکنه و بعدش اونارو برای موتور دانلود (Downloader) مجزا ارسال میکنه تا دادهها رو استخراج و تحلیل کنه. تمام پیامها و فایلها در دیتابیس ClickHouse درج و ایندکس میشن، و هشدارها برای داراییهای تحت تأثیر ارسال میشه.
Downloader یا موتور دانلود، یکی از اجزای اصلی سیستم هستش. محققا نمیخواستن Workerها منطق پردازش داده رو بر عهده بگیرن، چون این کار باعث افت کیفیت کد و کاهش عملکرد میشد. بنابراین، محققا این اکانتهارو برای بار دوم احراز هویت میکردن، و از فایل جلسه (session file) جدید برای مدیریت یک worker منحصر به فرد که تنها هدفش دانلود و دریافت دادهها از فایلها بود، استفاده میکردن. Downloader بعد از دریافت فایل، نوع اون رو شناسایی و دادهها رو استخراج میکرد. پس از پردازش، فایل حذف میشه، چه پردازش اون موفق باشه یا نه، تا فضای کافی برای دادههای جدید آزاد بشه.
مقابله با دادههای تکراری:
یکی از بزرگترین چالشها، حجم عظیم دادههای تکراری بود. اغلب یک فایل مشابه، صدها بار در کانالهای مختلف منتشر میشه. محققا دو مرحله برای حذف دادههای تکراری در نظر گرفتن:
- بررسی هش فایل (FileHash) در تلگرام قبل از دانلود
- استفاده از ReplacingMergeTree در ClickHouse برای حذف دادههای تکراری در سطح دیتابیس
همچنین تصمیم گرفتن FileHash رو بعنوان بخشی از کلید اصلی (Primary Key) ذخیره کنن تا بتونن توزیع دادهها در کانالهای مختلف رو ردیابی کنن.

شناسایی کانالهای مخرب تلگرام:
هدف نهایی این پروژه، تمرکز بر زیرساختهای مخرب در تلگرام بود. برای این منظور، محققا از مجموعهای از کانالهای شناخته شدهی مخرب بعنوان نقطهی شروع استفاده کردن و کانالهایی که به اونا ارجاع داده میشد رو هم بررسی کردن. هرچه تعداد کانالهای مخرب اشاره کننده به یک کانال ناشناخته بیشتر میشد، احتمال مخرب بودن اون هم افزایش می یافت و در نتیجه برای پایش انتخاب میشد.
نتیجهگیری:
محققا در ابتدای پروژه نمیدونستن چه حجمی از داده رو قراره پردازش کنن، اما خیلی زود مشخص شد که حجم و منابع مورد نیاز بسیار بیشتر از توان اوناست. به همین دلیل تصمیم گرفتن دادهها رو به (HIBP) Have I Been Pwned اهدا کنیم. در حال حاضر، بسیاری از پلتفرمهای امنیت سایبری اجازه میدن هر کسی با یک کارت اعتباری ثبت نام کنه و به دادههای قربانیان دسترسی پیدا کنه، بدون هیچگونه بررسی هویت یا KYC. هدف محققا از اشتراک این دادهها با Have I Been Pwned این بود که قربانیان بتونن امنیت خودشون رو بازیابی کنن، بدون اینکه دوباره قربانی سوء استفاده جدید بشن.
آمار نهایی:
- پیامهای ایندکس شده از تلگرام: ۳۰ میلیارد
- اعتبارنامههای استخراج شده: ۸۰ میلیارد
- بیشترین تعداد اعتبارنامهی پردازش شده در یک روز: ۶۰۰ میلیون
- بیشترین تعداد پیامهای ایندکس شده در یک روز: ۱.۲ میلیارد
آنالیز HIBP از داده ها:
بعد از اینکه محققا، داده ها رو به HIBP ارسال کردن، این سایت هم یک آنالیزی روی داده ها انجام داده، که در ادامه، بررسیش میکنیم.
معرفی سایت HIBP :
HIBP مخفف عبارت Have I Been Pwned هستش. این وب سایت یک سرویس عمومی و رایگان هستش که توسط Troy Hunt (محقق امنیت سایبری استرالیایی) ساخته شده و به کاربران اجازه میده بررسی کنن آیا اطلاعات شخصیشون (مثل ایمیل یا پسورد) در نشت دادهها یا دیتابیس های سرقت شده دیده شده یا نه. البته برخی از سرویس های این سایت، از جمله استفاده از API یا جستجوهای پیشرفته تر، نیاز به پرداخت پول داره.
دادههای شما در اینترنت کجاست؟
منظورم از این سوال، فقط جاهایی نیست که خودتون آگاهانه اطلاعاتتون رو وارد کردید، بلکه منظور جاهایی هستش که داده های شما بصورت غیر مستقیم نشت کردن و حالا در حال استفاده یا سوء استفاده به روشهایی هستن که هرگز تصورش رو هم نمیکنید.
واقعیت اینِ که وقتی دادههای شما بدست مجرمان سایبری می افته، اونا معمولا بارها و بارها در پلتفرمها و کانالهای مختلف تکثیر و بازنشر میشن. اگه این دادهها در مقیاس وسیع جمع آوری بشن، چیزی بدست میاد که در صنعت امنیت سایبری به اون دادههای هوش تهدید (Threat Intelligence Data) میگن. و این دقیقا کاری هستش که Ben از شرکت Synthient انجام داده.
داده هایی که HIBP دریافت کرده:
- ۳.۵ ترابایت داده
- بزرگترین فایل به تنهایی ۲.۶ ترابایت
- مجموعا شامل ۲۳ میلیارد رکورد

اگه از دید بزرگی این نقض داده رو بخواییم بررسی کنیم، میشه گفت که یکی از بزرگترین نقض های داده ای هستش. مثلا میشه این نقض رو در کنار افشای 10 میلیارد پسورد منحصر به فرد قرار داد. اما HIBP برای آنالیز، بیشتر رفته سراغ کیفیت داده ها.
بخش عمدهی حجم بالای داده ها، ناشی از این هستش که Ben دادههایی از Stealer Logها و همچنین لیستهای Credential Stuffing رو با هم جمع آوری کرده.
Stealer Logها چی هستن:
Stealer Log حاصل عملکرد بدافزارهای سارق اطلاعات (Infostealer) هستن. بدافزاری که روی سیستم قربانی اجرا شده و اعتبارنامههای وارد شده در سایتها رو ذخیره میکنه. خروجی این لاگها معمولا شامل سه بخش هستش:
- آدرس وب سایت
- آدرس ایمیل
- پسورد
مثلا اگه کسی وارد حساب Gmail خودش بشه، ترکیب gmail.com + email + password در خروجی لاگ قرار میگیره.
با توجه به اینکه، Stealer Logها بارها و بارها در کانالهای مختلف بازنشر میشن، نخستین کاری که HIBP انجام داده بررسی این بوده که چه مقدار از دادهها جدید هستن. برای این کار، از یک اسکریپت پاورشل استفاده کردن تا ایمیلها رو با دیتابیس HIBP مقایسه کنه. نتیجه نشان داد که از میان ۹۴ هزار ایمیل نمونه، ۹۲٪ از قبل در دیتابیس وجود داشتن. این دقیقا همان تکرار بی پایانی هستش که در ابتدای متن به اون اشاره شد.

اما همین آمار نشان میده ۸٪ دادهها جدید هستن. با توجه به اینکه Ben در مجموع ۱۸۳ میلیون ایمیل منحصر به فرد جمعآوری کرده، حدود ۱۴ میلیون آدرس جدید به HIBP اضافه شده. البته، بعد از آپلود کامل داده، تعداد ایمیلهای جدید و تأیید شده، ۱۶.۴ میلیون بود.
برای اطمینان از صحت دادهها، از چندین مشترک HIBP خواستن صحت اطلاعات مربوط به خودشون رو بررسی کنن. مثلا برای یکی اطلاعات لاگین مربوط به جیمیل رو ارسال کردن و اون فرد تایید کرده که اطلاعات درست هستش. برای یک فرد دیگه اطلاعات مربوط به لاگین چندین سایت رو ارسال کردن، از جمله ارز دیجیتال، کازینو و … که ایشون همه رو تایید کردن.
حتی بدون پاسخ مستقیم کاربران، میشه با روشهای بدون افشای حریم خصوصی (مانند آزمون Enumerations) صحت دادهها رو بررسی کرد. برای نمونه، یکی از حسابهای کاربران در سایت ShopBack فیلیپین وجود داشت و با اضافه کردن چند کاراکتر اشتباه، سایت تأیید کرد که آن حساب وجود ندارد، اما وقتی کاراکترهای اشتباه حذف شدن، سایت تأیید کرد که حساب معتبر هستش. چنین نشانه هایی بارها تکرار شد و نشان داد، دادهها واقعی هستن.
بنابراین حالا ۱۸۳ میلیون ایمیل در HIBP قابل جستجو هستن و پسوردها هم در دیتابیس Pwned Passwords اضافه شدن.
در ماه گذشته این سرویس رکورد جدیدی ثبت کرده. در ۳۰ روز گذشته، Pwned Passwords بیش از ۱۷.۴۵ میلیارد درخواست رو پاسخ داده، بطور میانگین ۶۷۳۳ درخواست در ثانیه، و در اوج، تا ۴۲ هزار در ثانیه. همچنین امکان جستجوی آدرسهای سایت از طریق داشبورد شخصی یا API برای دارندگان دامنه های تأیید شده قابل جستجو هستش. این دادهها در HIBP با عنوان “Synthient Stealer Log Threat Data” درج شدن. یعنی اگه ایمیلتون رو وارد کردید و در نتایج این عبارت بود، یعنی اطلاعاتتون مرتبط به این نقض هستش.
لیست Credential Stuffing:
علاوه بر Stealer Log، دادههای Ben شامل لیستهای Credential Stuffing هم بوده. برخلاف Stealer Logها که توسط بدافزار جمع آوری میشن، این لیستها معمولا از دادههای نشت یافتهی دیگه، مثلا دیتابیسی که پسوردها در اون هش نشدن یا بصورت ضعیف هش شدن، ساخته میشن. این دادهها برای حملات Credential Stuffing استفاده میشن، تا از طریق پسوردهای تکراری، اکانتهای دیگه از قربانیان رو هم بدست بیارن. مثلا فرض کنید شما در یک سایت بازی ثبت نام کردید، اون سایت هک شده و هکرها به دیتابیس این سایت دسترسی و پسورد کاربران رو استخراج کردن. اگه شما مثلا از همین پسورد در جیمیل هم استفاده کنید، بنابراین هکرها میتونن به اکانت جیمیل شما هم دسترسی پیدا کنن. برای همین معمولا در مستندات امنیتی اشاره میشه که برای هر اکانت از پسورد منحصر به فرد استفاده کنید. برای داشتن یک پسورد خوب، میتونید این مقاله رو بخونید.
مثالهایی از آسیبهای ناشی از Credential Stuffing میشه به موارد زیر اشاره کرد:
- نفوذ به Uber در سال ۲۰۱۷ و مجدداً در سال ۲۰۲۲
- حمله به 23andMe در سال ۲۰۲۳
- نشت اطلاعات ۲۰ هزار کاربر Dunkin’ Donuts و شکایت حقوقی ناشی از اون
این حملات هنوز هم یکی از مؤثرترین و تکرار شونده ترین روشهای نفوذ هستن. از زمان لوود Collection #1 در سال ۲۰۱۹، تیم HIBP در برخورد با این نوع دادهها بسیار محتاط تر شده. مشکل اصلی لیستهای credential stuffing این هستش که نمیشه یک ردیف مشخص رو به یک سایت یا نشت داده ی معین نسبت داد و HIBP سرویسی برای جستجوی زوجهای نامکاربری/پسورد ارائه نمیده. یعنی نمیشه گفت آیا فلان ایمیل با فلان پسورد، تحت تاثیر بوده یا نه. بدون دونستن دقیق اینکه کدوم پسورد در لیست، افشا شده، دونستن اینکه در اون لیست هستین یا نه، به تنهایی کمکی نمیکنه. با اضافه شدن پسوردها در Pwned Passwords اکنون سه روش ساده وجود داره تا بررسی کنید آیا از یک پسورد آسیبپذیر استفاده میکنید یا نه (یعنی فقط پسورد رو وارد میکنید، بدون وارد کردن مثلا ایمیل و متوجه میشید که آیا پسوردتون آسیب پذیر هستش یا نه):
- جستجو در Pwned Passwords (در مرورگر، بدون ارسال پسورد به سرور)
- استفاده از API مبتنی بر k-Anonymity برای برنامه نویسان
- استفاده از قابلیت Watchtower در نرمافزار مدیریت پسورد 1Password (توجه: 1Password از حامیان مالی HIBP هستش.) : Watchtower ساده ترین روش برای بررسی میزان خطر پذیری اکانتهای شماست.

وضعیت فعلی و آینده:
چیزی که با آپلود تعداد بیشتری از stealer logها بیشتر مشخص میشه اینِ که در نظر گرفتن اونا بعنوان یک نشت داده جداگانه، نمایش دقیقی از نحوه ی عملکرد این دادهها نیست. حقیقت اینِ که برخلاف یک نشت داده ی منفرد مثل Ashley Madison، Dropbox یا صدها مورد دیگه که در HIBP ثبت شدن، stealer logها بیشتر شبیه یک شیلنگ آتشین از دادهها هستن که بطور مداوم اطلاعات شخصی رو همه جا پخش میکنن. این رویکرد نشون دهنده بازنگری در مدل HIBP هستش.
پلتفرمهای دیگه ی جستجوی داده های نقض شده:
معمولا دونستن اینکه آیا اطلاعاتمون د یک نقض داده وجود داره یا نه، مهم هستش. چون میتونیم اقداماتی مانند موارد زیر رو انجام بدیم:
- اطلاعات احراز هویت مانند پسورد رو تغییر بدیم.
- حواسمون نسبت به فیشینگ و حملات مهندسی اجتماعی جمع تر میشه.
- طرح شکایت کنیم
- و … .
برای این که متوجه این قضیه بشیم، پلتفرمهای مختلفی وجود داره. برای مثال یکی از این پلتفرمها همین HIBP هستش که بالا معرفی کردیم.
علاوه بر HIBP، پلتفرمهای دیگه هم برای این کار وجود دارن که برخیشون رو در لیست موتورهای جستجوی برای محققین امنیت سایبری معرفی کردیم از جمله Hudsonrock.
اما مشکلی که برای ما ایرانی ها وجود داره اینه که نقض و نشت داده در ایران زیاد هستش، از طرفی خیلی از این پلتفرمها، خیلی داده های مرتبط با ایران رو پوشش نمیدن. البته سرویسی بنام لیکفا وجود داره که تا حدودی این موارد رو پوشش میده اما متاسفانه خیلی حمایت نمیشه.
علاوه بر سرویس های بالا، اگه از سرویس جیمیل استفاده میکنید، گوگل هم سرویسی برای این منظور داره. مزیت سرویس گوگل نسبت به سرویس های بالا این هستش که وقتی نقض یا نشتی به دیتابیس این سایتها اضافه میشه، معمولا اطلاعاتی که در اختیار کاربر قرار میگیره صرفا موجود بودن یا نبودن دیتا رو مشخص میکنه، مثلا میگه که ایمیل شما در نقض داده Synthient Stealer Log Threat Data وجود داره یا نه. مشکل این روش اینِ که ممکنه داده های قدیمی، جدیدا به سایت اضافه بشن، مثلا داده ها مربوط به سال 2021 باشن و شما در سال 2022 پسوردتون رو عوض کردید. حالا وقتی که جستجو میکنید، نتیجه نشون میده که شما هم تحت تاثیر هستید، اما در واقعیت بدلیل اینکه شما پسوردتون رو عوض کردید، داده های شما معتبر نیست.
مزیت سرویس دارک وب گوگل، این هستش که بخشی از پسورد شما رو هم نشون میده و شما اینجوری متوجه میشید که واقعا تحت تاثیر این نقض هستید یا نه. همچنین با توجه به اینکه پسورد شما لو رفته، متوجه میشید که دیگه نباید از این پسورد استفاده کنید.
این سرویس دارای محدودیتهایی هستش، اما برای اینکه از سرویس دارک وب گوگل استفاده کنید، مراحل زیر رو طی کنید:
- وارد اکانتتون در گوگل بشید.
- وارد بخش Security بشید.
- اینجا بخشی با عنوان گزارش دارک وب (Dark web report) وجود داره که باید فعالش کنید.
- میتونید فیلدهای زیر رو تنظیم کنید تا در صورتیکه در نقض ها مشاهده شد، برای شما هشداری ارسال بشه.
- نام شما
- نشانی
- شماره تلفن
- ایمیل
- نام کاربری
- پسورد
منابع:

