FAQ

Stepan Ilyin aka Step

Xakep, номер #057, стр. 057-104-2


Q: Расскажи, пожалуйста, о так называемым Blaster’е, новом вирусе, который столь быстро и безнаказанно заразил половину Сети. Мне, прежде всего, интересен принцип работы и распространения. Я, например, никогда не получал по почте и уж тем более не запускал подозрительные файлы, но тем не менее, мой компьютер оказался заражен!

А: Червь Worm.Win32.Blaster.a (или Lovesan) обещает стать еще одним культовым вирусом, основу и принцип работы которого мы еще не раз увидим в куче клонов. Недавно появившаяся зараза использует уязвимость в службе Microsoft Windows DCOM RPC NT/2000/XP систем (подробнее читаем здесь: www.microsoft.com/technet/treeview/?url=/technet/security/bulletin/MS03-026.asp), патч на которую выпустили уже довольно давно. Однако, учитывая то, что админы и уж тем более простые смертные не спешат апдейтить систему, несложно догадаться, почему вирус моментально блокировал миллиарды компьютеров по всему миру. Дырка позволяет любому желающему подключаться к непропатченной системе и исполнять на удаленной машине произвольный код. В нашем случае червь с помощью системного приложения TFTP.exe скачивает и запускает свой исполняемый код. Причем при запуске вирус «просматривает» случайный диапазон IP-адресов и с помощью банального сканирования ищет и атакует уязвимые машины. Столь грамотное использование уязвимости позволило вирусу за считанные часы заразить огромное количество компьютеров. В результате они начали перегружаться с завидным постоянством в связи с ошибкой «RPC service failing». И это еще не самое страшное. Вирус крайне опасен из-за того, что создает огромное количество избыточного трафика, который переполняет каналы роутеров. Если бы не установленная в черве задержка между атаками, большая часть Сети могла быть парализована. Впрочем, защититься от заразы несложно. Достаточно лишь пропатчить «окна» и закрыть фаерволом 135, 139, и 445 порты.

Q: Как определить количество LPT портов в системе? Желательно, чтобы работало под Delphi 4.

А: Процедура, написанная Peter Below (TeamB) – именно то, что тебе нужно.

uses winspool;

procedure TForm1.Button1Click(Sender: TObject);

var

pInfo, pScan: PPortInfo1;

bytesNeeded, items, i: DWORD;

begin

EnumPorts( nil, 1, nil, 0, bytesNeeded, items );

GetMem( pInfo, bytesNeeded );

try

Win32Check(

EnumPorts( nil, 1, pInfo, bytesNeeded, bytesNeeded, items ));

pScan := pInfo;

For i:= 0 To items-1 Do Begin

memo1.lines.add( pScan^.pName );

Назад на стр. 057-104-1  Содержание  Вперед на стр. 057-104-3