Post #44
1.65K
Channel Public Channel
СЕ - Subscribers
- 1.89K
- Photos
- 34
- Videos
- 3
- Links
- 24
Showing posts older than #45 · Back to latest
Older Posts 13 shown
Post #43
1.79K

А что там с безопасностью TV - приложений?
Недавно перед релизом проводил анализ TV - приложения. Это сервис для умных телевизоров Samsung на TizenOS, просмотр ТВ-контента и платная медиатека.
Во время анализа я наткнулся на момент, который оказался куда интереснее всего остального.
Как и большинство подобных сервисов, приложение давало бесплатный тестовый период, примерно три дня. Логика простая, устройство определяется как уникальное, получает триал, а дальше либо оплата, либо доступ закрывается. В ходе анализа стало известно, что для идентификации используется MAC-адрес и DUID (уникальный идентификатор устройства). Получались они стандартными средствами Tizen API через webapis.network.getMac() и webapis.productinfo.getDuid().
Логика казалась выстроенной, но ключевой нюанс был в том, что MAC и DUID получались на стороне клиента.
Если источник данных сам клиент, значит их можно изменить?
После изучения документации стало понятно, что функции получения MAC и DUID - обычные jаvascript-методы в окружении Tizen. А значит, их можно переопределить до того, как приложение начнёт использовать их в своей логике.
Идея была простой: при каждом запуске возвращать случайные значения вместо реальных. Новое значение DUID, новый MAC - с точки зрения сервера это каждый раз новое устройство.
Я написал небольшой скрипт, который переопределяет webapis.network.getMac и webapis.productinfo.getDuid, подставляя рандомные данные перед инициализацией основного кода приложения. В итоге при каждом перезапуске сервис видел "новый телевизор" и снова выдавал триальный период.
Фактически логика триала полностью обходилась без каких-либо сложных манипуляций. Не было взлома сервера, не было подмены трафика, только работа с тем, чему система доверяла по умолчанию. А еще, при такой реализации подписку можно оформить на одно устройство, а затем использовать ее на нескольких, так как система продолжает полагаться исключительно на клиентские идентификаторы.
Ради интереса я проверил и другие уже существующие приложения и оказалось, что многие из них устроены аналогичным образом.
@serj_ws
Недавно перед релизом проводил анализ TV - приложения. Это сервис для умных телевизоров Samsung на TizenOS, просмотр ТВ-контента и платная медиатека.
Во время анализа я наткнулся на момент, который оказался куда интереснее всего остального.
Как и большинство подобных сервисов, приложение давало бесплатный тестовый период, примерно три дня. Логика простая, устройство определяется как уникальное, получает триал, а дальше либо оплата, либо доступ закрывается. В ходе анализа стало известно, что для идентификации используется MAC-адрес и DUID (уникальный идентификатор устройства). Получались они стандартными средствами Tizen API через webapis.network.getMac() и webapis.productinfo.getDuid().
Логика казалась выстроенной, но ключевой нюанс был в том, что MAC и DUID получались на стороне клиента.
Если источник данных сам клиент, значит их можно изменить?
После изучения документации стало понятно, что функции получения MAC и DUID - обычные jаvascript-методы в окружении Tizen. А значит, их можно переопределить до того, как приложение начнёт использовать их в своей логике.
Идея была простой: при каждом запуске возвращать случайные значения вместо реальных. Новое значение DUID, новый MAC - с точки зрения сервера это каждый раз новое устройство.
Я написал небольшой скрипт, который переопределяет webapis.network.getMac и webapis.productinfo.getDuid, подставляя рандомные данные перед инициализацией основного кода приложения. В итоге при каждом перезапуске сервис видел "новый телевизор" и снова выдавал триальный период.
<script src="$WEBAPIS/webapis/webapis.js"></script>
<script>
function GenFakeDUID() {
const length = 13;
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let result = '';
for (let i = 0; i < length; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
}
function GenFakeMAC(){
var hexDigits = "0123456789ABCDEF";
var macAddress = "";
for (var i = 0; i < 6; i++) {
macAddress+=hexDigits.charAt(Math.round(Math.random() * 15));
macAddress+=hexDigits.charAt(Math.round(Math.random() * 15));
if (i != 5) macAddress += ":";
}
return macAddress;
}
(function() {
webapis.network.getMac = function(){
return GenFakeMAC();
}
webapis.productinfo.getDuid = function(){
return GenFakeDUID();
}
})();
</script>
Фактически логика триала полностью обходилась без каких-либо сложных манипуляций. Не было взлома сервера, не было подмены трафика, только работа с тем, чему система доверяла по умолчанию. А еще, при такой реализации подписку можно оформить на одно устройство, а затем использовать ее на нескольких, так как система продолжает полагаться исключительно на клиентские идентификаторы.
Ради интереса я проверил и другие уже существующие приложения и оказалось, что многие из них устроены аналогичным образом.
@serj_ws
Post #42
1.68K

Post #36
2.73K






На Pinduoduo порой попадаются интересные девайсы для ИБ-исследований. Там можно найти аппаратные кейлогеры, BadUSB и кучу другого полезного железа.
@serj_ws
@serj_ws
Post #35
5.28K

Можно ли оформить кредит на человека без его согласия?
Пару лет назад был кейс, с которым я столкнулся. На данный момент уязвимости устранены, поэтому могу описать его.
Описываемая цепочка событий сформировалась не сразу. Она складывалась постепенно, из отдельных эпизодов, которые на первый взгляд никак не были связаны между собой и происходили в разное время.
К сожалению, сохранить все скриншоты не удалось, однако часть материалов всё же осталась.
Читать...
@serj_ws
Пару лет назад был кейс, с которым я столкнулся. На данный момент уязвимости устранены, поэтому могу описать его.
Описываемая цепочка событий сформировалась не сразу. Она складывалась постепенно, из отдельных эпизодов, которые на первый взгляд никак не были связаны между собой и происходили в разное время.
К сожалению, сохранить все скриншоты не удалось, однако часть материалов всё же осталась.
Читать...
@serj_ws
Post #32
5.23K



Post #31
14.5K

Post #30
9.19K

Через Kaspi можно узнать, является ли человек резидентом РК.
Если не резидент - то ФИО будет латинскими буквами.
@serj_ws
Если не резидент - то ФИО будет латинскими буквами.
@serj_ws
- 👍 1
Post #29
9.97K
А вы знали лайфхак?
Можно открыть ИП с вхождением слова "ТОО"
А вот пример:
ТОО: ТОО SAMRUK TRADE 140640024284
ИП: ТОО SAMRUK TRADE 820305302302
Какое имя хотите?)
@serj_ws
Можно открыть ИП с вхождением слова "ТОО"
А вот пример:
ТОО: ТОО SAMRUK TRADE 140640024284
ИП: ТОО SAMRUK TRADE 820305302302
Какое имя хотите?)
@serj_ws
Post #28
20.8K
Пока в России режут скорость на внешние ресурсы, в Казахстане Билайн режет скорость мобильного интернета на внутренние... 🤦♂️
@serj_ws
Beeline KZ -> Kazakhtelecom KZ (без VPN) 2 мб/сЧекайте.
Beeline KZ -> Beeline KZ (без VPN) 2 мб/с
Beeline KZ -> Beeline KZ (с VPN) 160 мб/с
Beeline KZ -> Rostelecom (без VPN) 170 мб/с
@serj_ws
Post #25
31K

Post #24
32.5K

Кто хочет пошопиться на карантине, пачка купонов на aliexpress:
4$/5$, 5$/30$, 7$/70$, 5$/20$
Открываем ссылку в приват режиме хрома, регаемся заказываем!
(Если создаете много акков, не забываем менять IP)
4$/5$, 5$/30$, 7$/70$, 5$/20$
Открываем ссылку в приват режиме хрома, регаемся заказываем!
(Если создаете много акков, не забываем менять IP)
UPD 26.04.2020 Лавочку прикрыли, возможно временно, ждемс...http://serj.ws/alicoupons
UPD 01.05.2020 Купоны снова работают...
UPD 28.05.2020 Халява кончилась (
UPD 03.06.2020 Снова в деле...)
UPD 15.06.2020 Халява кончилась (
Post #23
26.4K