تحليلگران ويروس و محققان امنيت كامپيوتر در حال رقابت براي جمع آوري هر چه بيشتر نمونه هاي بات نت جديد هستند. آنها از هانی پات برای اهداف خود استفاده می کنند... اما اگر بخواهید بدافزار را در شرایط واقعی مشاهده کنید چه؟ سرور یا روتر خود را در معرض خطر قرار می دهید؟ اگر دستگاه مناسبی وجود نداشته باشد چه؟ این سؤالات بود که من را بر آن داشت تا bhunter را ایجاد کنم، ابزاری برای دسترسی به گره های بات نت.
ایده اصلی
راههای زیادی برای گسترش بدافزار برای گسترش باتنتها وجود دارد: از فیشینگ تا بهرهبرداری از آسیبپذیریهای ۰ روزه. اما متداول ترین روش هنوز هم گذرواژه های SSH با اجبار بی رحمانه است.
این ایده بسیار ساده است. اگر برخی از گرههای باتنت سعی میکنند گذرواژههای brute-force را برای سرور شما اعمال کنند، به احتمال زیاد خود این گره توسط گذرواژههای ساده بیرحمانه گرفته شده است. این بدان معنی است که برای دسترسی به آن، فقط باید متقابل کنید.
بانتر دقیقاً اینگونه عمل می کند. به پورت 22 (سرویس SSH) گوش می دهد و همه لاگین ها و رمزهای عبوری را که سعی می کنند به آن متصل شوند جمع آوری می کند. سپس با استفاده از پسوردهای جمع آوری شده سعی می کند به گره های مهاجم متصل شود.
الگوریتم کار
این برنامه را می توان به 2 قسمت اصلی تقسیم کرد که در موضوعات جداگانه کار می کنند. اولین مورد هانی پات است. تلاشهای ورود را پردازش میکند، لاگینها و رمزهای عبور منحصربهفرد را جمعآوری میکند (در این مورد، جفت ورود + رمز عبور به عنوان یک کل واحد در نظر گرفته میشود)، و همچنین آدرسهای IP را اضافه میکند که سعی در اتصال به صف برای حمله بیشتر دارند.
قسمت دوم مستقیماً مسئول حمله است. علاوه بر این، حمله در دو حالت انجام میشود: BurstAttack (حمله انفجاری) - ورود به سیستم و گذرواژههای brute force از لیست عمومی و SingleShotAttack (حمله تک شلیک) - رمزهای عبور brute force که توسط گره مورد حمله استفاده شده است، اما هنوز استفاده نشده است. به لیست کلی اضافه شد
برای اینکه بلافاصله پس از راهاندازی حداقل مقداری پایگاه داده از لاگینها و رمزهای عبور داشته باشیم، bhunter با فهرستی از فایل /etc/bhunter/defaultLoginPairs مقداردهی اولیه میشود.
رابط
راه های مختلفی برای راه اندازی bhunter وجود دارد:
فقط به عنوان یک تیم
sudo bhunter
با این راهاندازی، میتوان bhunter را از طریق منوی متنی آن کنترل کرد: ورود و گذرواژهها را برای حمله اضافه کنید، پایگاهدادهای از لاگینها و رمزهای عبور را صادر کنید، هدفی را برای حمله مشخص کنید. تمامی گره های هک شده در فایل /var/log/bhunter/hacked.log قابل مشاهده هستند
با استفاده از tmux
sudo bhunter-ts # команда запуска bhunter через tmux
sudo tmux attach -t bhunter # подключаемся к сессии, в которой запущен bhunter
Tmux یک مالتی پلکسر ترمینال، یک ابزار بسیار راحت است. به شما امکان می دهد چندین پنجره را در یک ترمینال ایجاد کنید و پنجره ها را به پانل ها تقسیم کنید. با استفاده از آن، می توانید از ترمینال خارج شده و سپس بدون وقفه در فرآیندهای در حال اجرا وارد شوید.
اسکریپت bhunter-ts یک جلسه tmux ایجاد می کند و پنجره را به سه پانل تقسیم می کند. اولین، بزرگترین، شامل یک منوی متنی است. بالا سمت راست شامل گزارشهای هانیپات است، در اینجا میتوانید پیامهایی درباره تلاشها برای ورود به هانیپات ببینید. پانل پایین سمت راست اطلاعاتی در مورد پیشرفت حمله به گره های بات نت و هک های موفق را نشان می دهد.
مزیت این روش نسبت به روش اول این است که می توانیم با خیال راحت ترمینال را ببندیم و بعداً به آن برگردیم، بدون اینکه بانتر کار آن را متوقف کند. برای کسانی که آشنایی کمی با tmux دارند، پیشنهاد می کنم
به عنوان یک خدمت
systemctl enable bhunter
systemctl start bhunter
در این حالت، در هنگام راه اندازی سیستم، راه اندازی خودکار bhunter را فعال می کنیم. در این روش تعامل با bhunter ارائه نمی شود و لیست گره های هک شده را می توان از /var/log/bhunter/hacked.log دریافت کرد.
اثربخشی
در حین کار بر روی bhunter، موفق شدم دستگاه های کاملا متفاوتی را پیدا کنم و به آنها دسترسی پیدا کنم: رزبری پای، روترها (مخصوصا میکروتیک)، سرورهای وب، و یک بار یک مزرعه ماینینگ (متاسفانه دسترسی به آن در طول روز بود، بنابراین چیز جالبی وجود نداشت. داستان). در اینجا یک اسکرین شات از برنامه است که لیستی از گره های هک شده را پس از چند روز کار نشان می دهد:
متأسفانه، اثربخشی این ابزار انتظارات من را برآورده نکرد: bhunter میتواند چندین روز پسوردهای گرهها را بدون موفقیت امتحان کند و میتواند چندین هدف را در چند ساعت هک کند. اما این برای هجوم منظم نمونههای باتنت جدید کافی است.
اثربخشی تحت تأثیر پارامترهایی مانند: کشوری که سرور باانتر در آن قرار دارد، میزبانی و محدوده ای که آدرس IP از آن تخصیص داده شده است. طبق تجربه من، موردی وجود داشت که من دو سرور مجازی را از یک هاست اجاره کردم و یکی از آنها 2 بار بیشتر مورد حمله بات نت ها قرار گرفت.
اشکالاتی که هنوز رفع نکرده ام
هنگام حمله به هاست های آلوده، در برخی شرایط نمی توان به طور واضح تشخیص داد که آیا رمز عبور صحیح است یا خیر. چنین مواردی در فایل /var/log/debug.log ثبت می شوند.
ماژول Paramiko که برای کار با SSH استفاده میشود، گاهی اوقات رفتار نادرستی دارد: زمانی که میخواهد به آن متصل شود، بیوقفه منتظر پاسخ از طرف میزبان است. من با تایمر آزمایش کردم، اما به نتیجه مطلوب نرسیدم
روی چه چیز دیگری باید کار کرد؟
نام خدمات
طبق RFC-4253، سرویس گیرنده و سرور نام سرویس هایی را که پروتکل SSH را قبل از نصب اجرا می کنند، مبادله می کنند. این نام در فیلد "SERVICE NAME" موجود است که هم در درخواست سمت مشتری و هم در پاسخ از سمت سرور وجود دارد. فیلد یک رشته است و مقدار آن را می توان با استفاده از wireshark یا nmap پیدا کرد. در اینجا یک مثال برای OpenSSH آورده شده است:
$ nmap -p 22 ***.**.***.** -sV
Starting Nmap ...
PORT STATE SERVICE VERSION
22/tcp open ssh <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds
با این حال، در مورد Paramiko، این فیلد حاوی رشتهای مانند «Paramiko Python sshd 2.4.2» است که میتواند باتنتهایی را که برای «جلوگیری از تلهها» طراحی شدهاند، بترساند. بنابراین، من فکر می کنم لازم است این خط را با چیزی خنثی تر جایگزین کنیم.
سایر بردارها
SSH تنها ابزار مدیریت از راه دور نیست. شبکه راه دور، rdp نیز وجود دارد. ارزش دارد که نگاه دقیق تری به آنها بیندازید.
گسترش
داشتن چندین تله در کشورهای مختلف و جمعآوری مرکزی لاگینها، رمزهای عبور و گرههای هک شده از آنها در یک پایگاه داده مشترک عالی خواهد بود.
از کجا می توانم بارگیری کنم؟
در زمان نگارش فقط یک نسخه آزمایشی آماده است که می توانید آن را دانلود کنید
منبع: www.habr.com