Накрутка баннеров — приемы противодействия

Крис Касперски

Введение

Автоматизированная накрутка

   Использование анонимных ftp-серверов для подмены IP-адреса

   Другие способы идентификации клиента

   Статистика — наука точная?

Накрутка на стороне клиента

   Баннеры-невидимки

   Автоклик

   Не пиши мне писем…

   Вирусы и легальные программы

Накрутка как средство конкурентной борьбы

Так ли надежны независимые источники?

Розница и опт

Вместо заключения

Введение

Б ольшинство ресурсов современного Интернета существует исключительно за счет рекламы. Владельцы сайтов стремятся увеличить количество показов баннеров всеми возможными — и честными, и нечестными — средствами. Рекламодателю, понятное дело, не улыбается тратить свои кровные впустую,

оплачивая показы баннеров, которых никто не видел.

Извечное противостояние щита и меча — злоумышленник изыскивает способы обмануть рекламодателя, а тот, в свою очередь, всеми силами стремится раскрыть обман.

В этой статье мы расскажем о тех хитростях, включая нетрадиционные и малоизвестные, к которым прибегают злоумышленники для обмана своих спонсоров. Техническое описание атак опущено — данная статья ориентирована не на взлом, а на защиту и рассчитана в первую очередь на разработчиков собственных баннерных сетей.

В начало В начало

Автоматизированная накрутка

Основу автоматизированной «крутилки» баннеров составляет скрипт, который посылает определенные HTTP-запросы и исполняется, как правило, на удаленном сервере, предоставляющем бесплатный хостинг, реже — на компьютере клиента.

Если злоумышленник, накручивая баннер, не будет при каждом запросе менять свой IP-адрес, он выдаст себя с головой. Традиционное оружие обмана — анонимные proxy-серверы, выполняющие запрос злоумышленника от своего имени. Существует не слишком много таких серверов — какой-то десяток тысяч, а то и меньше. Вполне реально собрать их в один список и проверять IP-адрес клиента на совпадение. Просто? Да! Эффективно? Нет!

Хитрому злоумышленнику такая проверка — не помеха. Скрыть свой IP можно десятками способов, и для этого вовсе не обязательно обращаться к proxy-серверу. Ничуть не хуже подойдет telnet, http с поддержкой cgi, анонимный ftp-сервер…

В начало В начало

Использование анонимных ftp-серверов для подмены IP-адреса

Об использовании ftp-серверов для сокрытия своего IP-адреса следует сказать особо. Во-первых, анонимных ftp-серверов гораздо больше, чем proxy и telnet, вместе взятых. Во-вторых, об этом способе знают далеко не все, а кто не знает — тот и не защищается!

Кратко о сути приема. Из документа RFC-959 можно узнать, что для работы протокола FTP требуется по крайней мере два соединения: одно — для приема команд от пользователя, а второе — для приема (передачи) файлов, причем адрес узла-получателя файла не обязательно должен совпадать с адресом клиента! Отдавая серверу команду PORT, клиент самостоятельно назначает адрес и порт хоста, который будет использоваться как активный участник соединения по каналу передачи данных. И ничто не помешает ему выбрать сервер спонсора (точнее, почти ничто, об ограничениях будет сказано ниже) — анонимный ftp-сервер установит с Web-сервером спонсора TCP-соединение и передаст ему файл, который содержит команды HTTP-протокола, имитирующие запрос браузера на показ баннера. Если злоумышленник корректно подделает все поля, сервер не сможет отличить такой запрос от запроса браузера!

Единственная проблема, с которой может столкнуться злоумышленник, — проверка ftp-сервером корректности номера порта. Некоторые ftp-серверы не позволяют устанавливать соединения со стандартными портами, в том числе и с восьмидесятым. Но, во-первых, именно некоторые, а не все. Во-вторых, можно использовать любой неанонимный proxy-сервер, работающий через нестандартный порт (использование неанонимных proxy в большинстве случаев разрешается), и в-третьих, серверы некоторых спонсоров сами работают через нестандартные порты — например 8081.

Таким образом, накрутки через анонимные ftp-серверы представляют собой вполне серьезную угрозу. Как ей противостоять? Создать список абсолютно всех анонимных ftp невозможно — их число огромно и с каждым днем продолжает расти. Уж лучше попытаться

установить соединение с клиентом по 21-му порту, проверяя наличие установленного ftp-сервера. Подавляющее большинство клиентов не имеют своего ftp-сервера, и такой метод идентификации злоумышленника вполне надежен. Единственный его недостаток — увеличение нагрузки на сервер, что не всегда приемлемо. Но лучшего решения, по-видимому, просто не существует. Впрочем, злоумышленник направленным SYN-штормом может запросто переполнить очередь соединений ftp-сервера, и тогда данный метод проверки не сработает.

Словом, IP-адрес не позволяет надежно идентифицировать клиента и его контроль отсекает лишь самых глупых и неопытных злоумышленников. Поэтому помимо IP-адреса рекомендуется использовать и другие способы идентификации клиента.

В начало В начало

Другие способы идентификации клиента

Весьма популярный способ идентификации клиента заключается в использовании cookies: сервер вместе с баннером передает браузеру специальную метку, которую браузер, при условии что поддержка cookies включена, сохраняет на диске. При последующих запросах сервер проверяет наличие cookies у клиента и, если его нет, считает, что запрос выполнен не браузером, а скриптом злоумышленника.

На самом деле такую проверку легко обойти. Злоумышленнику не составит труда включить в свой скрипт полноценную поддержку cookies (например, в Perl для этой цели существует готовая библиотека), а вот у легальных пользователей могут возникнуть проблемы. Некоторые из них по соображениям безопасности отключают поддержку cookies, тем самым становясь (с точки зрения сервера) похожими на злоумышленника.

Несколько надежнее использовать cookies для предотвращения повторных попыток входа на коротком отрезке времени и в качестве счетчика посещений. Злоумышленнику придется имитировать заход одного пользователя с различных IP-адресов и хранить множество cookies на сервере, что достаточно проблематично.

Очень хороший результат дает анализ информации, возвращенной браузером: версия операционной системы и самого браузера, языковая страница и т.д. Статистика использования того или иного программного обеспечения хорошо известна и довольно стабильна. Причем каждый браузер и каждая операционная система обладают своим характерным почерком, который легко проанализировать, но довольно трудно подделать.

Вообще же большинство злоумышленников останавливаются на имитации поля UserAgent и дальше не идут, поэтому их остановит даже такая простая проверка.

В начало В начало

Статистика — наука точная?

Как бы злоумышленник ни пытался изменить свой IP-адрес, автоматизированные «крутилки» легко распознаются путем статистического анализа. В простейшем случае это — слишком высокая интенсивность и строгая периодичность заходов, неестественно большое отношение количества нажатий к числу показов баннера, слишком короткий интервал времени между запросом баннера и нажатием на него (а некоторые «крутилки» и вовсе кликают по баннеру без предварительного запроса). Не правда ли, странен пользователь, который через регулярные промежутки времени заходит на сайт и тут же тянется мышкой к еще не успевшему загрузиться баннеру?

Однако программу накрутки очень легко доработать таким образом, чтобы ее поведение было практически неотличимо от пользователя — она бы запрашивала баннер через случайные промежутки времени и в одном-двух из десяти случаев кликала по нему, выждав для большего правдоподобия несколько минут.

Если только злоумышленник не станет «нащелкивать» миллионы кликов в день, а лишь в полтора-два раза увеличит свою посещаемость, то такая простая имитация сможет ввести рекламодателя в заблуждение.

Теоретически можно анализировать кривую зависимости количества посещений от времени суток, учитывая географическое местоположение посетителей и многие другие факторы, но приложенные усилия ничем не будут оправданны. Злоумышленник может, основываясь на статистике реальных посещений своего сайта, увеличивать количество посещений в единицу времени, не искажая вида кривых, а лишь немного приподнимая их «вверх».

В то же время, если количество реальных заходов невелико, то никаким обманом злоумышленнику их увеличить не удастся. Страница в стиле «Я и моя собака», собирающая несколько тысяч просителей в день, мгновенно вызовет подозрения у рекламодателя. А если создать действительно интересный и интенсивно посещаемый ресурс — какой смысл его накручивать? Не проще ли разместить вдвое больше баннеров?

Примечание. Владельцы некоторых Web-ресурсов требуют перед входом на сайт обязательного нажатия на баннер, поэтому не во всех случаях отношение кликов к показам позволяет распознать накрутку.

В начало В начало

Накрутка на стороне клиента

Качественная имитация пользователя — чрезвычайно сложная задача, требующая для своей реализации достаточно высокого программистского мастерства. Те же, кто обладает такой квалификацией, вряд ли будут связываться с накруткой баннеров. Во всяком случае, в Сети не существует ни одной по-настоящему добротной программы. Встречаются лишь едва-едва работающие макеты, содержащие множество ошибок и написанные, по-видимому, в процессе освоения языка Си

и/или Perl. Ни одна из таких поделок не представляет серьезной угрозы и легко распознается простейшим анализатором.

Но зачем имитировать клиента, когда под рукой есть живой экземпляр? Для «ослепления» статистических методов злоумышленники прибегают к накрутке на клиентской стороне. Ниже рассмотрены четыре таких способа, и ни от одного из них пока не придумано надежной защиты.

В начало В начало

Баннеры-невидимки

Зависимость доходов от количества баннеров на странице отнюдь не линейна. Изобилие баннеров отрицательно сказывается на посещаемости и к тому же вынуждает посетителей использовать «баннерорезалки» — программы, блокирующие загрузку баннеров и соответственно обеспечивающие большую скорость работы.

Нередко злоумышленниками предпринимаются попытки сокрытия факта присутствия баннеров за счет уменьшения их размера до нуля пикселов. Это не препятствует загрузке баннеров с сервера, но в таком случае их вид не портит дизайна страницы и не отталкивает посетителей. Довольны все, за исключением рекламодателя.

Большинство спонсоров запрещают каким-либо образом изменять HTML-код, отображающий баннер, но злоумышленникам такой запрет — не указ. Одних запретов мало — спонсор должен уметь контролировать целостность своего кода. А это вовсе не так просто, как может показаться на первый взгляд!

Загружая картинку с сервера, браузер не сообщает ему адрес текущей страницы, поэтому сервер не может определить, откуда пришел запрос. Как же тогда он сможет проконтролировать неискаженность своего кода?

Казалось бы, проблему можно решить принудительной передачей адреса текущей страницы. Поскольку Java допускает установку соединения только с тем узлом, с которого была загружена страница, то приходится идти на хитрость — с помощью функции write «на лету» вставлять в страницу тэг img, автоматически исполняющий cgi-скрипт, расположенный на сайте рекламодателя и передающий ему URL текущей страницы с помощью метода location объекта document. Упрощенно это может выглядеть так:

d=document;
d.write(“<IMG SRC=http://www.banner.com/reclama.cgi?UserID&”+d.location+”>”);

Неоправданная популярность данного приема вызывает удивление. Вот далеко не полный перечень присущих ему недостатков. Во-первых, URL страницы может содержать конфиденциальные данные, например пароли посетителя или номера его кредитных карт. Если пользователи узнают, что эти сведения передаются в чужие руки — может разразиться громкий скандал. Во-вторых, для динамических страниц, взаимодействующих с клиентом методом POST, понятие URL теряет всякий смыл. В-третьих, злоумышленник может так подправить код, что он всегда будет возвращать адрес заранее заготовленной страницы, а не той, которую просматривает пользователь. Рекламодатель может лишь убедиться в неискаженности собственного HTML-кода на некоторой страничке, но бессилен определить: эту ли страницу просматривают пользователи или совсем другую.

Наконец, верификация HTML-кода многократно увеличивает нагрузку на сервер рекламодателя, что не всегда приемлемо. Поэтому большинство рекламодателей из экономических соображений отказываются от автоматизированного контроля целостности своего HTML-кода.

Проверить, действительно ли посетители страницы увидели баннер или нет, — невозможно. Довольно многие рекламодатели предпочитают оплачивать только клики, но не засчитывают «холостые» показы, сколько бы их ни было. В этом случае владелец Web-страницы должен сам заботится о том, чтобы посетители видели баннеры и как можно чаще нажимали на них.

В начало В начало

Автоклик

Существует множество способов заставить посетителя нажать на баннер. Например, для доступа к конкретному ресурсу можно потребовать пароль — третье слева слово в заголовке сайта спонсора. Хочешь не хочешь, а нажимать надо. Некоторые, особо алчущие, даже заставляют излазить сайт спонсора вдоль и поперек, а то и зарегистрироваться на нем!

Подобные приемы абсолютно законны с точки зрения рекламодателя, но очень напрягают посетителей, сокращая их количество. Возникает проблема: не просто добиться, чтобы страницу спонсора открывали, но при этом и посетителям угодить.

Чаще всего злоумышленники прибегают к автоматически открывающимся страницам, вставляя JavaScript приблизительно следующего содержания: ‘window.open(“http://mysponsor.com”)’. Однако большинство посетителей успевают закрыть «лишние» окна задолго до их полной загрузки, что позволяет спонсору легко распознать левые накрутки — достаточно засчитывать только те заходы на страницу, когда все ее элементы целиком загружены.

Некоторые злоумышленники используют более продвинутый способ обмана — открывают страницы в фреймах нулевого размера. Они загружаются скрыто от посетителей, даже не подозревающих, что происходит за их спиной! Практически все современные браузеры поддерживают фреймы, и такой трюк никаких проблем не вызывает.

Может ли рекламодатель разоблачить обман? Разумеется, да — если пользователь зашел на страницу, но не нажал ни одной ссылки, то, скорее всего, это никакой не пользователь, а его имитация и такой заход засчитывать на надо. Правда, подобное решение может вызвать протест легальных Web-мастеров: если пользователь зашел к спонсору, но, так ничем и не заинтересовавшись, ушел оттуда — это проблема рекламодателя, а не того, кто его рекламирует!

Тем не менее при необходимости злоумышленник сможет имитировать и нажатие ссылок, причем вполне правдоподобно. Для этого ему достаточно на разных страницах своего сайта прятать в фреймах разные страницы спонсора. Статистический анализ не позволит распознать обман и придется прибегать к довольно сложным приемам — например создавать ссылки в виде графических объектов и передавать на сервер координаты мыши в момент их нажатия. Злоумышленнику будет достаточно сложно правдоподобно имитировать клики, и частотный анализ выдаст его с головой. Правда, он, в свою очередь, может использовать такие же ссылки на своей странице и передавать координаты мыши серверу, в точности имитируя поведение посетителя на скрытой странице.

Одним словом — классическое противостояние щита и меча. Совершенствуются механизмы защиты, но и злоумышленники не стоят на месте, придумывая все более хитрые трюки, и… все возвращается на круги своя.

В начало В начало

Не пиши мне писем…

Многие злоумышленники настолько ленивы, что не могут заставить себя создать даже примитивный сайт типа «Я и моя собака». Вместо этого они вставляют баннеры в письма и рассылают их сотням тысяч, а то и миллионам адресатов.

Большинство почтовых клиентов поддерживает HTML-формат, и просмотр полученного письма равносилен посещению Web-страницы. Разница лишь в том, что владелец настоящей Web-страницы должен дожидаться, когда же к нему зайдет пользователь (жди у моря погоды!), а спамер фактически сам инициирует заход пользователя, причем не одного, а сразу очень многих!

Не всем спонсорам понравится, что их рекламируют таким варварским способом, но в общем случае с точки зрения рекламодателя спам — реклама честная. За исключением, быть может, автоматически открывающихся окон и хитроумно спрятанных страниц (они ничуть не хуже себя чувствуют и в теле письма).

Существует принципиальная, но пока еще никак не реализованная возможность создания автономного Интернет-червя, который, используя ошибки реализации почтовых серверов и почтовых клиентов, получал бы список пользователей, зарегистрированных на сервере, и адресов из «Адресной книги». В кратчайшие сроки удалось бы разослать рекламные письма десяткам миллионов получателей, а это — деньги, большие деньги!

Пользователям, не желающим становиться орудием чужого обогащения, можно порекомендовать отключить поддержку скриптов в своем почтовом клиенте. Правда, после этого читать некоторые письма станет невозможно.

В начало В начало

Вирусы и легальные программы

В принципе, возможны такие вирусы, которые, попав в компьютер своей жертвы, обращаются к сайту рекламодателя, имитируя загрузку страницы из браузера, но в целях конспирации не отображают ее пользователю. Обнаружить такие накрутки можно с помощью графических ссылок, отслеживающих координаты мыши в момент их нажатия. Вирус не сможет правдоподобно их имитировать.

Сказанное выше применимо не только к вирусам. Точно так же действуют и легальные программы. Обратите внимание: не могут, а уже действуют. Существуют даже готовые пакеты накруток, предназначенные для интеграции в другие приложения, например AddGateway. При этом многие из них нагло прописывают себя в автозагрузке и крутят баннеры не только в момент своей работы, но и в любое другое время! (При условии, конечно, что пользователь находится в сети.)

Не все разработчики указывают этот факт в документации, и пользователь зачастую узнает о нем лишь тогда, когда замечает, что модем подозрительно часто мигает, а все файлы и Web-страницы грузятся несколько медленнее, чем обычно.

Разработчики антивирусов, похоже, не видят ничего опасного в таких программах и не выдают предупреждающих сообщений при их проверке. А следовало бы… Пользователю, не особо разбирающемуся в тонкостях операционной системы, обнаружить и защититься от подобных «гостей» очень трудно. Персональные межсетевые экраны, наподобие AtGuard, здесь бесполезны, поскольку не могут достоверно определить, кто устанавливает исходящее соединение — легальный пользователь или нехорошая программа. Тем более что совсем уж нехорошие программы крутят баннеры с помощью браузера, делая невидимым его окно.

При возникновении подозрений рекомендуется запустить утилиту msconfig в Windows 9x или «Панель управленияФАдминистрированиеФУправление компьютером» и удалить все лишние программы из «Автозагрузки». Затем с помощью утилиты Depends (входит в Windows SDK) посмотреть, какие модули импортируют подозреваемые программы. Большинство накрутчиков выдают себя наличием модуля ws2_32.dll, необходимого для установки и поддержания TCP-соединений.

Большинство, но не все! Ведь ничто не мешает запустить браузер с помощью утилиты start.exe или API-функции CreateProcess, а затем скрыть его окно вызовом ShowWindow. Для полной уверенности необходимо дизассемблировать и подробно проанализировать каждое потенциально опасное приложение. Такая работа доступна далеко не всякому специалисту, не говоря уже о простых пользователях!

Словом, было бы очень хорошо, если бы разработчики антивирусов наконец-то обратили внимание на эту проблему.

В начало В начало

Накрутка как средство конкурентной борьбы

Б аннер мало показать. Надо знать, кому его показать! Например, реклама крановых электродвигателей, вывешенная на ботаническом сайте, будет чрезвычайно малоэффективна, хотя с точки зрения многих баннерных компаний вполне законна.

Да сам рекламодатель, купивший столько-то своих показов, зачастую не имеет никакого представления о том, кому и где они будут показаны и будут ли показаны вообще! Конкуренты могут воспользоваться этим фактом для размещения его баннеров на таких страницах, где их увидит совсем другая целевая аудитория. И хотя все показы будут засчитаны, ожидаемого результата реклама не принесет и затраченные на нее деньги окажутся выброшенными впустую.

Впрочем, от этого очень легко защититься. Покупая показы, необходимо всегда оговаривать тематику сайтов, на которых они будут расположены. В противном случае эффективность рекламы будет неоправданно низкой даже без вмешательства конкурентов.

В начало В начало

Так ли надежны независимые источники?

Б ольшинство поисковых серверов отслеживают, какие сайты выбирает пользователь, и на этом основании вычисляют их рейтинг. Очень часто предлагается использовать эту информацию для оценки посещаемости того или иного сайта и выявления левых накруток. В принципе, такой подход достаточно надежен, но не следует забывать, что злоумышленник может легко повысить свой рейтинг теми же самыми средствами, которые использовал для накруток баннеров. С его точки зрения и баннеры, и ссылки в поисковом сервере идентичны. кроме того, поисковые серверы в своей массе не очень-то ответственно подходят к составлению рейтинга и не проводят тщательных проверок на предмет выявления автоматизированных запросов. Оно и понятно: если недостоверный рейтинг не приносит им никакого убытка, зачем же напрягаться?

В то же время поисковых серверов очень много и не у всякого злоумышленника хватит терпения накрутить каждый из них. Как правило, они ограничиваются только парой-тройкой самых популярных систем, игнорируя остальные и полностью разоблачая себя этим! Действительно, слишком большой дисбаланс рейтингов позволяет легко установить факт накрутки.

Ситуация со счетчиками полностью аналогична. Несмотря на некоторые предохранительные меры (например, Rambler не фиксирует заходы с proxy-серверов), счетчики очень легко накрутить до требуемого значения. Их показания ни о чем не говорят и не позволяют установить истинную посещаемость страницы.

Самые надежные оценки популярности ресурса дает подсчет количества ссылок на эту страницу. Чем больше людей ссылаются на данный сайт, тем больше на него заходит посетителей. Соответственно ресурс, на который не ссылается никто, никому и не интересен — не стоит ожидать у него большой пользовательской аудитории.

Теоретически злоумышленник может увеличить количество ссылок на свой ресурс, просто создав несколько сотен, а то и тысяч сайтов, «поддерживающих» друг друга. Но если он попробует подсчитать, сколько потребуется времени и сил, то сразу же откажется от этой затеи.

В начало В начало

Розница и опт

Существует два подхода к продаже рекламы: либо оплачивается каждый показ (клик) баннера, либо спонсор выплачивает держателю сайта некую фиксированную сумму, зависящую от его посещаемости. Последний способ считается более предпочтительным, поскольку приблизительную посещаемость ресурса можно определить и визуально, безо всяких счетчиков.

Однако такой подход крайне невыгоден и неудобен. И хуже всего — он подходит только для крупных сайтов. Владельцам же домашних страничек никто оптом за рекламу платить не будет. И не потому, что их посещаемость невозможно оценить. Просто вручную контролировать огромное количество ресурсов физически невозможно, поэтому придется либо прибегать к автоматизированным средствам (а их легко обмануть), либо иметь дело только с несколькими тысячами держателей крупнейших Web-проектов, которые заведомо не будут жульничать в силу своего авторитета. Последнее неприемлемо в первую очередь для самих рекламодателей, стремящихся своей рекламой охватить как можно большую аудиторию и готовых ради этого идти на неизбежный риск.

В магазинах самообслуживания воровство покупателей компенсируют увеличением цен товаров. Точно так же в стоимость рекламы включен (правильнее сказать, исключен) обман злоумышленников.

Вообще же проблема вокруг накрутки баннеров, на мой взгляд, сильно раздута. Обилие рекламы наглядно свидетельствует, что, несмотря ни на какие накрутки, она себя окупает. В каком-то высшем смысле обман спонсоров приносит больше пользы, чем вреда. Чем больше обманщиков, тем ниже эффективность рекламы, а значит, меньше и самой рекламы! Трудно найти посетителя, который бы горячо не приветствовал такое развитие событий!

В начало В начало

Вместо заключения

Отсутствие надежных средств идентификации пользователя — одна из центральных проблем современного Интернета. Именно анонимность позволяет злоумышленникам совершать атаки, оставаясь ненаказанными. Если рекламодатели действительно хотят донести информацию до клиента, им необходимо настоять на доработке HTTP-протокола и внесении в него команд, предназначенных специально для загрузки баннеров.

Пусть некая третья сторона выдает каждому абоненту Интернета специальный ключ, позволяющий однозначно идентифицировать клиента. Посылая запрос на загрузку баннера, клиент передает на сервер и зашифрованный ключ, подтверждая аутентичность своего запроса. Обхитрить такую схему очень нелегко, если вообще возможно. За исключением одного «но». Не будет ли справедливей выплачивать деньги не держателю сайта, а самому клиенту за просмотр рекламы?

Боюсь, что клиент никаких денег не получит, а протокол HTTP и сами браузеры в скором будущем будут доработаны так, чтобы доступ к ресурсу открывался только после просмотра рекламы. Ходят упорные слухи, что коммерсанты усиленно давят на политиков, требуя запретить «баннерорезалки», как вредоносные программы, приносящие убыток владельцам сайтов.

Пока это только слухи, но кто поручится, что завтра они не станут действительностью? Тем более что первые шаги в этом направлении уже сделаны. Однако это тема совсем другого разговора…

КомпьютерПресс 2'2002

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует