TGViewer
Channel Public Channel
Серж.WS Channel

Серж.WS Channel

@serj_ws

Канал сайта http://serj.ws
Subscribers
1.89K
Photos
34
Videos
3
Links
24

Showing posts older than #45 · Back to latest

Older Posts 13 shown
Post #44 1.65K
Говорят, в таких конкурсах честно выиграть невозможно, но ведь побеждают же люди...

@serj_ws
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, подставляя рандомные данные перед инициализацией основного кода приложения. В итоге при каждом перезапуске сервис видел "новый телевизор" и снова выдавал триальный период.

<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
Вот и я решил заглянуть, что там вообще с BB в KZ

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

@serj_ws
Post #35 5.28K
Можно ли оформить кредит на человека без его согласия?

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

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

К сожалению, сохранить все скриншоты не удалось, однако часть материалов всё же осталась.

Читать...

@serj_ws
Post #32 5.23K
А вы знали, что на OLX продают различные сертификаты, но часто забывают скрыть промокод?)

@serj_ws
Post #31 14.5K
Dodo pizza: “не этот раз” :)

@serj_ws
Post #30 9.19K
Через Kaspi можно узнать, является ли человек резидентом РК.
Если не резидент - то ФИО будет латинскими буквами.

@serj_ws
  • 👍 1
Post #29 9.97K
А вы знали лайфхак?
Можно открыть ИП с вхождением слова "ТОО"
А вот пример:

ТОО: ТОО SAMRUK TRADE 140640024284
ИП: ТОО SAMRUK TRADE 820305302302

Какое имя хотите?)

@serj_ws
Post #28 20.8K
Пока в России режут скорость на внешние ресурсы, в Казахстане Билайн режет скорость мобильного интернета на внутренние... 🤦‍♂️

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
Aliexpress знает, как называть css-классы в верстке)

@serj_ws
Post #24 32.5K
Кто хочет пошопиться на карантине, пачка купонов на aliexpress:
4$/5$, 5$/30$, 7$/70$, 5$/20$
Открываем ссылку в приват режиме хрома, регаемся заказываем!
(Если создаете много акков, не забываем менять IP)

UPD 26.04.2020  Лавочку прикрыли, возможно временно, ждемс...

UPD 01.05.2020 Купоны снова работают...

UPD 28.05.2020 Халява кончилась (

UPD 03.06.2020 Снова в деле...)

UPD 15.06.2020 Халява кончилась (

http://serj.ws/alicoupons
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →