Как да открием общ метод за зловреден софтуер

Архив на броеве/2006/Брой №9 (46)/Как да откривам зловредни програми? Универсален метод

КРИС КАСПЕРСКИ

Как да открием зловреден софтуер?

Антивирусите, защитните стени и други системи за защита се справят добре с вирусите и червеите, но са безсилни в борбата срещу зловредния софтуер. За да не се удави в терминологично объркване, по-долу в текста, злонамерен софтуер ще означава програми, които тайно проникват в отдалечен компютър и инсталират там задна врата или крадат секретна информация.

На първо място, ще се интересуваме от злонамерени програми, които не могат да се репликират и често се пишат индивидуално за всяка конкретна атака и следователно съществуват в едно копие. При условие, че те не са разпознати от евристичния анализатор (и е много лесно да се заблуди евристичния анализатор), антивирусът никога няма да ги хване, тъй като такива подписи все още не са в неговата база данни и откъдето и да са дошли?!

Личната защитна стена също не е много силна защита. Много дупки дават на атакуващия права на СИСТЕМА (които ще бъдат по-високи от администратора), с които можете да правите всичко, включително получаване/изпращане на пакети, заобикаляйки защитната стена.

Въпреки това все още е възможно да се открие наличието на зловреден софтуер на компютър. Анализирах много злонамерени програми и открих слабите им места, които издават факта, че са им инжектирани.

Как злонамерен софтуер прониква в компютър

Най-примитивните екземпляри на зловреден софтуер създават нов процес, който внимателният потребител може лесно да забележи в „диспечера на задачите“. Разбира се, това изисква да се знае кои процеси присъстват в "стерилната" система и къде се намират техните файлове. По-специално, explor.exe, намиращ се не в WINNT, а в WINNTSystem32, вече не е изследовател, а истинска програма за злонамерен софтуер!

„Диспечерът на задачите“ обаче е изключително уязвим и зловредните програми могат лесно да скрият присъствието си от погледа му. Същото се отнася за FAR, Process Explorer, tlist и други системни помощни програми, базирани на недокументираната API функция NtQuerySystemInformation (), експортирана от динамичната библиотека NTDLL.DLL и следователно много лесно прихващана от нивото на приложението, без достъп до ядрото и дори без администратор привилегии.

Между другото, зловредният софтуер, скриващ се от диспечера на задачите, веднага издава присъствието си, като сравнява показанията на мекия лед с диспечера на задачите. Един от тези случаи е показан на фиг. 1. Вижте, soft-ice показва процеса на sysrtl, но в "диспечера на задачите" той ... липсва! Следователно това е или зловреден софтуер, или някакъв умен защитен механизъм на root-kit. Като цяло това е лоша програма, от която можете да очаквате всичко и е желателно да се отървете от нея възможно най-скоро!

метод

Фигура 1. Злонамереният sysrtl процес прикри присъствието си от „диспечера на задачите“, но не можа да се справи с soft-ice

За да постигне най-голямата скритост, зловредният софтуер не трябва да създава нов процес, а да бъде въведен в един от съществуващите, което тя успешно прави. Класическият алгоритъм за инжектиране е реализиран както следва: