ZeroNet Blogs

Static ZeroNet blogs mirror

БлогПост

Бложик о кибермире. Лайфхаки и простые хаки. Записная книжка. Новости ИТ . OpenSource, GNU/Linux, VoIP, Network, p2p, f2f, IoT, embedded, virtualisation

тонкие настройки Mozilla FireFox

FAQ

Настройки меняются через about:config.

Q: Проблемы с отрисовкой интерфейса, изображений или видео. Внезапные падения браузера. A: Попробуйте отключить аппаратное ускорение: layers.acceleration.disabled -> true Также проблему может решить обновление видеодрайверов либо возврат к более старой версии. Или обновление самого Firefox до беты/откат к ESR.

Q: Как уменьшить потребление памяти? A: Можно снизить число контент-процессов. Для этого следует снять чекбокс Use recommended performance settings в Preferences -> General, после чего появится список, где выбирается подходящее значение.

Q: О блокировке неподписанных расширений. A: Начиная с Firefox 48, в официальных релизных и бета-билдах Firefox заблокирована установка не подписанных Mozilla аддонов. Ниже приведены различные решения.

Выпускаются специальные сборки, где требование подписей отключается настройкой xpinstall.signatures.required -> false. Firefox ESR тоже не имеет данной проблемы. Есть хак, позволяющий обойти это ограничение даже на официальных сборках. Если вы используете Linux, вероятно, мейнтейнеры вашего дистрибутива уже собрали Firefox без флага обязательного требования подписей, и его можно отключить вышеописанной настройкой. Q: Тормозит видео на YouTube в высоких разрешениях. A: Кодек VP9 требует мощного процессора. Может помочь отключение media.mediasource.webm.enabled - тогда видео будут отдаваться в H.264. Отключение этой настройки не сломает обычные WebM.

Q: Как запретить проигрывание HTML5-медиа в фоновой вкладке? A: Firefox 51+: media.block-autoplay-until-in-foreground -> true Проигрывание начнется при первом переключении на вкладку с открытым видео или аудио.

Q: Как отключить предупреждение при переходе сайта в полноэкранный режим в Firefox 43+? A: full-screen-api.warning.timeout -> 0

Q: Как отключить анимацию затемнения при переходе сайта в полноэкранный режим? A: full-screen-api.transition.timeout -> 0 full-screen-api.transition-duration.enter -> "0 0" (без кавычек) full-screen-api.transition-duration.leave -> "0 0" (без кавычек)

Q: Как искать в разных поисковиках через адресную строку? A: Используя префиксы-кейворды (g Google, w Wikipedia, etc), настраивающиеся в Preferences -> Search даблкликом по ячейкам второй колонки.

Q: Как отключить беспрефиксный поиск в поисковике по умолчанию через адресную строку? A: keyword.enabled -> false

Q: Как отключить кнопки поисковиков в выпадающем списке под адресной строкой? A: browser.urlbar.oneOffSearches -> false

Q: Что за специальная тема для разработчиков? A: Тема, использующаяся в Firefox Developer Edition. В Firefox 53+ включается через about:addons, на вкладке Appearance. Аддон, включающий ее на более ранних релизах.

Q: Как копировать ссылки c кириллическим текстом в исходном виде, не закодированном percent-encoding (%D0%9B%D0%B8%D1%81 -> Лис)? A: Firefox 53+: browser.urlbar.decodeURLsOnCopy -> true

Q: Как ускорить прокрутку колесом мыши? A: mousewheel.min_line_scroll_amount -> 35 Значение подбирается по вкусу. Другие твики описаны здесь.

Q: Как сделать скриншот всей страницы? A: Shift-F2: screenshot --fullpage <имя файла опционально> Также можно использовать кнопку скриншота в Developer Tools (Ctrl+Shift+I), предварительно включив ее: devtools.command-button-screenshot.enabled -> true. Сверхдлинные страницы не сохраняет.

Q: Как уменьшить ширину вкладки, чтобы меньше их прокручивать? A: Firefox до 57: при помощи UserCSS. Firefox 57+: browser.tabs.tabMinWidth

Q: Как вернуть старую поисковую строку/старый диалог настроек браузера? A: Воспользоваться Classic Theme Restorer или пользовательским стилем.

Q: Как вернуть информацию о загрузках, скрытую в Firefox 54? A: При помощи UserCSS.

Q: Как применять свои CSS к интерфейсу браузера в Firefox 57+? A: Используя userChrome.css. Подробнее - см. раздел о стилях в приложении.

Q: Как иметь отдельные наборы cookies для разных вкладок? A: При помощи контейнеров, включив все настройки privacy.userContext.*. После этого в Customize появится новая кнопка для открытия вкладки в контейнере. Опции контейнеров находятся в Preferences -> Privacy.

Q: Куда девается старая история браузинга? A: Удаляется для улучшения производительности. Причем история ограничена не давностью, а числом записей, так что активные пользователи браузера могут упереться в лимит раньше. Значение вычисляется, исходя из характеристик ПК, и пишется в настройку places.history.expiration.transient_current_max_pages. Если вы считаете, что оно слишком низкое, можно установить значение вручную, но в другой настройке: places.history.expiration.max_pages. Подробнее: статья, настройка, сам алгоритм.

Q: Как добавить поисковик в браузер? A: Экспортировать встроенные скриптом, создать по их образу и подобию новый файл в формате OpenSearch, затем импортировать другим скриптом.

подробнее тут: https://github.com/The-OP/Fox

Разберёмся, как сконфигурировать samba на CentOS 7 с анонимными и защищёнными samba-серверами. Samba является пакетом программ с открытым исходным кодом, который позволяет уверенно обращаться к файлам и принтерам на ОС, работающих по протоколу SMB/CIFS. Samba находится в свободном доступе, в отличие от других программ SMB/CIFS, и совместим, допускает возможность взаимодействия сетей, включающих сервера под управлением Linux/Unix, так и клиентов, работающими на Windows.

1. Предварительные замечания

В нашем случае установка сервера samba будет производиться на специально установленном сервере CentOS версии 7.0. Также нам понадобится ПК с установленным Windows для проверки доступности samba. В данном случае сервер под CentОS будет иметь имя хоста в виде linux.example.com и 192.168.0.100 в качестве IP-адреса.

Внимание: В Windows домен рабочей станции должен совпадать с доменом в CentOS.

Для проверки значения в Windows введите в командной строке следующее:

net config workstation

В нашем случае домен рабочей станции имеет значение HOME.

Убедитесь, что рабочая группа будет иметь одинаковое имя как под Linux, так и под Windows.

Для того, чтобы сделать доступным компьютер под Windows, необходимо добавить IP-адрес вашего сервера в hosts.

блокнот C:\Windows\System32\drivers\etc\hosts

В нашем случае введем следующее:

[...]

192.168.0.100   linux.example.com   centos

Затем просто сохраним данное изменение.

2. Анонимный доступ средствами samba

Сначала установим samba с возможностью анонимного доступа. Для установки samba выполните следующую команду:

yum install samba samba-client samba-common

Таким образом вы установите samba актуальной версии.

Для того, чтобы сконфигурировать samba потребуется отредактировать файл /etc/samba/smb.conf, перед редактированием следует сделать резервное копирование оригинального файла /etc/samba/smb.conf.bak

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Открываем для редактирования файл:

mcedit /etc/samba/smb.conf

Вносим изменения:

[global]

workgroup = HOME

server string = Samba Server %v

netbios name = centos

security = user

map to guest = bad user

dns proxy = no

#===Share Definitions

[Anonymous]

path = /samba/anonymous

browsable =yes

writable = yes

guest ok = yes

read only = no

Почти всё готово, перезапускаемся:

mkdir -p /samba/anonymous

systemctl enable smb.service

systemctl enable nmb.service

systemctl restart smb.service

systemctl restart nmb.service

На данном этапе сетевой экран CentOS 7.0 заблокирует доступ службы samba, чтобы решить эту проблему, выполним следующее:

firewall-cmd --permanent --zone=public --add-service=samba

firewall-cmd --reload

Настроить сетевой экран по всем правилам поможет специальная статья.

Win+R

Теперь вы можете обмениваться файлами Centos 7.0 с windows, для этого в командной строке Win+R необходимо выполнить \centos:

Далее в windows откройте папку и попытайтесь создать текстовый документ, но при попытке создания документа появится сообщение об ошибке прав доступа.

Далее необходимо проверить права доступа для общего документа.

ls -l

drwxr-xr-x.
2 root root anonymous

Для получения прав доступа для анонимного пользователя введите следующее:

cd /samba

chmod -R 755 anonymous/

chown -R nobody:nobody anonymous/

ls -l anonymous/

total 0

drwxr-xr-x.
2 nobody   nobody anonymous

Далее нам потребуется разрешение selinux для конфигурации samba:

chcon -t samba_share_t anonymous/

Теперь анонимный пользователь может создавать и просматривать cодержимое.

Можно выполнить встречную проверку следующим образом:

ls -l anonymous/

total 0

-rwxr--r--. 1 nobody  nobody 0  anonymous.txt

[root samba]#

3. Защищённый samba-сервер

Создадим группу smbgrp и пользователя dve для доступа к samba-серверу с необходимой аутентификацией:

groupadd smbgrp

useradd dve -G smbgrp

smbpasswd -a dve

[root samba]# smbpasswd -a dve

New SMB password:<-вашsambaпароль

Retype new SMB password:<--вашsambaпароль

Added user dve.

[root samba]#

Создадим папку secured в /samba и предоставим соответствующие права доступа:

mkdir -p /samba/secured

cd /samba && chmod -R 777 secured/

Теперь нам снова понадобится разрешение Selinux:

cd /samba

chcon -t samba_share_t secured/

Снова редактируем файл конфигурации /etc/samba/smb.conf:

[...]

[secured]

 path = /samba/secured

 valid users = @smbgrp

 guest ok = no

 writable = yes

 browsable = yes

Далее потребуется перезапуск

systemctl restart smb.service

systemctl restart nmb.service

Теперь проверяем настройки хитрой командой testparm

[root]# testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Processing section "[Anonymous]"

Processing section "[secured]"

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions <--нажмитеENTER

[global]

    netbios name = CENTOS

    server string = Samba Server %v

    map to guest = Bad User

    dns proxy = No

    idmap config * : backend = tdb

[Anonymous]

    path = /samba/anonymous

    read only = No

    guest ok = Yes

[secured]

    path = /samba/secured

    valid users = @smbgrp

    read only = No

[root samba]#

browsable = yes.

Вы снова столкнётесь с проблемой прав доступа. Для получения прав доступа пользователя dve выполним:

cd /samba

chown -R dve:smbgrp secured//

Теперь пользователь samba имеет права доступа для записи в папку.

Поздравляю, вы только что установили samba сервер на CentOS7.0!

http://drach.pro/blog/linux/item/46-centos-7-samba-server

Драйверы USB в ядре Linux полны уязвимостей, часть из которых можно использовать для запуска произвольного кода и захвата контроля над пользовательскими системами. Исследователь Google Андрей Коновалов за последние месяцы нашёл почти полтора десятка таких багов.

Полтора десятка свежих «дыр»

Эксперт по безопасности компании Google Андрей Коновалов проинформировал сообщество разработчиков Linux о 14 свежеобнаруженных уязвимостях.

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

Эти полтора десятка уязвимостей входят в более широкий список, составленный Коноваловым.

В общей сложности за последние несколько месяцев он сумел найти 79 «багов» в USB-драйверах ядра Linux. Большая их часть приводит только лишь к зависанию или вынужденной перезагрузке операционной системы, но некоторые позволяют злоумышленникам повышать привилегии в системе и запускать вредоносный код.

Другие исследователи пытались привлечь внимание к проблеме

Коновалов не единственный исследователь, занимающийся проблемами безопасности USB-драйверов в ядре Linux.

Эксперт по безопасности Google Андрей Коновалов

Эксперты Университета Лондона в 2017 г. представили инструмент POTUS, предназначенный для поиска как раз таких уязвимостей. С его помощью удалось найти несколько критических багов, в том числе один, остававшийся невыявленным с 2003 г.

Создатели POTUS опубликовали исследование, в котором отметили, что большая часть USB-драйверов в Linux не проходят надлежащего тестирования, что и приводит к проблемам. Ранее и другие эксперты пытались привлечь внимание к этой проблеме, но с невеликим успехом.

Между тем, такие драйверы могут быть использованы для проникновения в изолированные (air-gapped) сети и вывода данных из них. Фактически, это единственный способ красть данные оттуда, поэтому спрос на уязвимости в USB-драйверах у киберпреступников всегда высок.

cnews

Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

****Пассивный DPI**** Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.

Выявляем и блокируем пакеты пассивного DPI Поддельные пакеты, формируемые DPI, легко обнаружить анализатором трафика, например, Wireshark. Пробуем зайти на заблокированный сайт:

Мы видим, что сначала приходит пакет от DPI, с HTTP-перенаправлением кодом 302, а затем настоящий ответ от сайта. Ответ от сайта расценивается как ретрансмиссия и отбрасывается операционной системой. Браузер переходит по ссылке, указанной в ответе DPI, и мы видим страницу блокировки.

Рассмотрим пакет от DPI подробнее:

HTTP/1.1 302 Found
Connection: close
Location: <http://warning.rt.ru/?id=17&st=0&dt=195.82.146.214&rs=http%3A%2F%2Frutracker.org%2F>

В ответе DPI не устанавливается флаг «Don't Fragment», и в поле Identification указано 1. Серверы в интернете обычно устанавливают бит «Don't Fragment», и пакеты без этого бита встречаются нечасто. Мы можем использовать это в качестве отличительной особенности пакетов от DPI, вместе с тем фактом, что такие пакеты всегда содержат HTTP-перенаправление кодом 302, и написать правило iptables, блокирующее их:

# iptables -A FORWARD -p tcp --sport 80 -m u32 --u32 "0x4=0x10000 && 0x60=0x7761726e && 0x64=0x696e672e && 0x68=0x72742e72" -m comment --comment "Rostelecom HTTP" -j DROP

Что это такое? Модуль u32 iptables позволяет выполнять битовые операции и операции сравнения над 4-байтовыми данными в пакете. По смещению 0x4 хранится 2-байтное поле Indentification, сразу за ним идут 1-байтные поля Flags и Fragment Offset. Начиная со смещения 0x60 расположен домен перенаправления (HTTP-заголовок Location). Если Identification = 1, Flags = 0, Fragment Offset = 0, 0x60 = «warn», 0x64 = «ing.», 0x68 = «rt.ru», то отбрасываем пакет, и получаем настоящий ответ от сайта.

В случае с HTTPS-сайтами, DPI присылает TCP Reset-пакет, тоже с Identification = 1 и Flags = 0.

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

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

Изучаем стандарт HTTP Типичные HTTP-запросы в упрощенном виде выглядят следующим образом:

GET / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

Запрос начинается с HTTP-метода, затем следует один пробел, после него указывается путь, затем еще один пробел, и заканчивается строка протоколом и переносом строки CRLF. Заголовки начинаются с большой буквы, после двоеточия ставится символ пробела.

Давайте заглянем в последнюю версию стандарта HTTP/1.1 от 2014 года. Согласно RFC 7230, HTTP-заголовки не зависят от регистра символов, а после двоеточия может стоять произвольное количество пробелов (или не быть их вовсе).

   Each header field consists of a case-insensitive field name followed
   by a colon (":"), optional leading whitespace, the field value, and
   optional trailing whitespace.

     header-field   = field-name ":" OWS field-value OWS

     field-name     = token
     field-value    = *( field-content / obs-fold )
     field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
     field-vchar    = VCHAR / obs-text

     obs-fold       = CRLF 1*( SP / HTAB )
                    ; obsolete line folding

OWS — опциональный один или несколько символов пробела или табуляции, SP — одинарный символ пробела, HTAB — табуляция, CRLF — перенос строки и возврат каретки (\r\n).

Это значит, что запрос ниже полностью соответствует стандарту, его должны принять многие веб-серверы, придерживающиеся стандарта:

GET / HTTP/1.1
hoSt:habrahabr.ru
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding:           gzip, deflate, br
coNNecTion: keep-alive      ← здесь символ табуляции между двоеточием и значением

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

Старый стандарт, RFC 2616, рекомендует снисходительно парсить запросы и ответы сломанных веб-северов и клиентов, и корректно обрабатывать произвольное количество пробелов в самой первой строке HTTP-запросов и ответов в тех местах, где требуется только один:

Clients SHOULD be tolerant in parsing the Status-Line and servers tolerant when parsing the Request-Line. In particular, they SHOULD accept any amount of SP or HT characters between fields, even though only a single SP is required. Этой рекомендации придерживаются далеко не все веб-серверы. Из-за двух пробелов между методом и путем ломаются некоторые сайты.

Спускаемся на уровень TCP Соединение TCP начинается с SYN-запроса и SYN/ACK-ответа. В запросе клиент, среди прочей информации, указывает размер TCP-окна (TCP Window Size) — количество байт, которые он готов принимать без подтверждения передачи. Сервер тоже указывает это значение. В интернете используется значение MTU 1500, что позволяет отправить до 1460 байтов данных в одном TCP-пакете. Если сервер указывает размер TCP-окна менее 1460, клиент отправит в первом пакете данных столько, сколько указано в этом параметре.

Если сервер пришлет TCP Window Size = 2 в SYN/ACK-пакете (или мы его изменим на это значение на стороне клиента), то браузер отправит HTTP-запрос двумя пакетами:

Пакет 1: GE Пакет 2:

T / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

Используем особенности HTTP и TCP для обхода активного DPI Многие решения DPI ожидают заголовки только в стандартном виде. Для блокировки сайтов по домену или URI, они ищут строку "Host: " в теле запроса. Стоит заменить заголовок «Host» на «hoSt» или убрать пробел после двоеточия, и перед вами открывается запрошенный сайт. Не все DPI можно обмануть таким простым трюком. DPI некоторых провайдеров корректно анализируют HTTP-заголовки в соответствии со стандартом, но не умеют собирать TCP-поток из нескольких пакетов. Для таких DPI подойдет «фрагментирование» пакета, путем искусственного уменьшения TCP Window Size.

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

Программа для обхода DPI Я написал программу для обхода DPI под Windows: GoodbyeDPI. Она умеет блокировать пакеты с перенаправлением от пассивного DPI, заменять Host на hoSt, удалять пробел между двоеточием и значением хоста в заголовке Host, «фрагментировать» HTTP и HTTPS-пакеты (устанавливать TCP Window Size), и добавлять дополнительный пробел между HTTP-методом и путем. Преимущество этого метода обхода в том, что он полностью автономный: нет внешних серверов, которые могут заблокировать.

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

goodbyedpi.exe -1 -a

Если заблокированные сайты стали открываться, DPI вашего провайдера можно обойти. Попробуйте запустить программу с параметром -2 и зайти на заблокированный HTTPS-сайт. Если все продолжает работать, попробуйте режим -3 и -4 (наиболее быстрый). Некоторые провайдеры, например, Мегафон и Yota, не пропускают фрагментированные пакеты по HTTP, и сайты перестают открываться вообще. С такими провайдерами используйте опцию -3 -a

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

Если наш компьютер находится за NAT, мы не можем просто отправить запрос на сервер ReQrypt и ожидать ответа от сайта. Ответ не дойдет, т.к. в таблице NAT не создана запись для этого IP-адреса. Для «пробива» NAT, ReQrypt отправляет первый пакет в TCP-соединении напрямую сайту, но с TTL = 3. Он добавляет запись в NAT-таблицу роутера, но не доходит до сайта назначения.

Долгое время разработка была заморожена из-за того, что автор не мог найти сервер с возможностью спуфинга. Спуфинг IP-адресов часто используется для амплификации атак через DNS, NNTP и другие протоколы, из-за чего он запрещен у подавляющего большинства провайдеров. Но сервер все-таки был найден, хоть и не самый удачный. Разработка продолжается.

Заключение и TL;DR GoodbyeDPI — программа под Windows, позволяющая обходить пассивные и активные DPI. Просто скачайте и запустите ее, и заблокированные сайты станут снова доступны. Для Linux есть аналогичная программа — zapret.

Используйте кроссплатформенную программу ReQrypt, если ваш провайдер блокирует сайты по IP-адресу.

Определить тип блокировки сайтов можно программой Blockcheck. Если в тестах DPI вы видите, что сайты открываются, или видите строку «обнаружен пассивный DPI», то GoodbyeDPI вам поможет. Если нет, используйте ReQrypt.

Дополнительная полезная информация есть здесь и здесь.

https://habrahabr.ru/post/335436/

Приложение «ВКонтакте» следит за пользователями

Приложение отправляет на сервер действия пользователя, а также местоположение устройства

Российский студент и программист Владислав Велюга отсниффил программой Shark for Root трафик мобильного приложения «ВКонтакте» и опубликовал результаты расследования (часть 1, часть 2). Он пишет, что раньше в результатах сниффинга не было ничего необычного, а сейчас появилось. Сейчас соцсеть начала передавать на сервер так много данных буквально о каждом действии пользователя, что это можно назвать слежкой.

К сожалению, теперь в официальную версию клиента включены следящие модули, в том числе myTracker от Mail.ru

(скриншот после декомпиляции APK-файла).

Владислав исследовал версию официального клиента 4.12.1 для Android.

Исследование показало, что на сервер «ВКонтакте» передаются практически все действия пользователя при работе с приложением. При этом необходимость сбора многих данных трудно объяснить (хотя можно понять, если подумать, зачем это нужно серверу). Например, при заходе в раздел «Аудио» передаются геоданные, а в разделе с видеозаписями передаётся информация о таких событиях как «volume_on», «volume_off», «fullscreen_on», «fullscreen_off» (переход и выход в/из полноэкранного режима), событие «video_play», которое просто отсылает текущую позицию просмотра видео, где-то с периодичностью 10-20 секунд.

В других случаях передаётся информация о ближайших точках доступа WiFi, подгружаются метрики через невидимую WebView и т. д. Техподдержка «ВКонтакте» ответила:

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

Автор исследования подчёркивает, что в неофициальном клиенте VK Coffee (модификация официального, с вырезанными метриками и пр.) таких сливов замечено не было.

Сам автор VK Coffee Эдуард Безменов прокомментировал: «Самый ад то, что libverifyот мыла.ру собирает серийники sim-карт, а mytracker — lac и cid». Он сказал, что слив подобных данных во «ВКонтакте» он наблюдал и раньше, и в его модификации клиента эта функция давно отключена.

Позже в комментарии для газеты «Ведомости» представитель компании Евгений Красников объяснил, что «ВКонтакте» никогда не скрывала, что собирает такую информацию для рекламы, оптимизации, рекомендаций. Другая информация тоже необходима. Например, по смене идентификационного кода sim-карты можно понять, менялся ли у пользователя телефон, и решить, отправлять ли ему код для валидации. Местоположение при прослушивании аудиозаписей нужно запрашивать из-за требований правообладателей и т. д. Да и вообще, все популярные приложения собирают подобные персональные данные, иначе они проиграют конкурентам.

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

NFS over VPN

Конкретный пример: у меня есть удалённый сервер, на котором есть интересующий меня каталог. Я хочу иметь этот каталог локально на своей машине. Протокол доступа — nfs. Т.к. он не имеет шифрования, то разумным решением выглядит использование vpn-канала до сервера.

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

Как оно устроено

Systemd имеет специальный вид automount-юнитов, которые позволяют автоматически монтировать указанный каталог.

Важно: automount-юниты это не «mount-юниты с автомонтированием», они не могут иметь в себе параметры монтирования. Вместо этого, они (при обращении к каталогу) всего лишь вызывают mount-юнит для указанного каталога.

Соответственно, при конфигурации:

  • Опции монтирования, устройство (или сервер в случае NFS) указываются в mount-юните
  • Зависимости и install-секция указываются в automount-юните
  • Связка automount-юнита и mount-юнита происходит по параметру where

Это же можно заметить по структуре самих юнитов. У mount-юнита есть секция [Mount] в которой может быть множество параметров. У automount-юнита такой секции быть не должно, а вместо этого есть секция [Automount], в которой могут быть всего несколько параметров: Where, DirectoryMode и TimeoutIdleSec.

Практический пример

/etc/systemd/system/media-nfs.mount:
[Unit]
Description=NFS share
[Mount]
What=server.url.example.com:/srv/nfs_share
Where=/media/nfs
Type=nfs4
Options=rw
DirectoryMode=0755
/etc/systemd/system/media-nfs.automount:
[Unit]
Description=NFS share
Requires=openvpn@vpn.service
Requires=network-online.target
[Automount]
Where=/media/nfs
TimeoutIdleSec=301
[Install]
WantedBy=graphical.target

Наблюдение: при том, что для mount-юнита нормальное состояние это active (mounted), то для automount — active (running), как для сервиса.

Если же automount ещё не случился, то статус будет «active (waiting)».

После настройки automount'а нужно сделать (sudo) systemctl daemon-reload, и сделать ls /media/nfs (для примера выше) — после некоторой задержки от монтирования nfs'а, мы увидим содержимое файлов на удалённом сервере.

habrahabr

В прошлый раз мы рассказали об Intel Management Engine (ME) — подсистеме, которая встроена во все современные компьютерные платформы (десктопы, лэптопы, серверы, планшеты) с чипсетами компании Intel. Эта технология многими воспринимается как аппаратная «закладка», и на то есть причины. Достаточно сказать, что Intel ME является единственной средой исполнения, которая: - работает даже тогда, когда компьютер выключен (но электропитание подаётся); - имеет доступ ко всему содержимому оперативной памяти компьютера; - имеет внеполосный доступ к сетевому интерфейсу.

Ошарашенный присутствием такого компонента в компьютере, пользователь (получается, что именно «пользователь», а не «владелец») наверняка задавался вопросом: можно ли выключить Intel ME?

Эта статья целиком посвящена этому вопросу.

Введение

Напомним, что основным компонентом Intel ME является встроенный в чипсет микроконтроллер с кастомной архитектурой. Известна лишь базовая модель, это 32-х разрядный ARCtangent-A4 (ME 1.x — 5.x), ARCtangent-A5 (ME 6.x — 10.x), SPARC (TXE) или x86 (ME 11.x — ...).

Начиная с 6-й версии, ME-контроллер встраивают во все чипсеты Intel.

[рисунок взят отсюда]

Загрузчик его прошивки хранится во внутренней ROM и недоступен для анализа. Сама прошивка располагается в регионе ME во внешней SPI флэш-памяти (т.е. в той же памяти, где хранится BIOS). Структура этой прошивки такова, что весь исполнимый код разбит на модули, которые хранятся в сжатом виде (либо кастомной реализацией алгоритма Хаффмана, либо LZMA). Эти кодовые модули криптографически защищены от модификаций.

Если есть желание поревёрсить прошивку, рекомендуем воспользоваться этими двумя инструментами для изучения её структуры и распаковки кодовых модулей.

Итак, рассматриваемая подсистема является аппаратно-программной основой для различных системных функций (некоторые раньше реализовывали в BIOS) и технологий Intel. Их имплементация включается в состав прошивки Intel ME. Одной из таких технологий, использующих несколько особых привилегий Intel ME, является Active Management Technology (AMT).

Контроль за состоянием AMT

AMT – технология удалённого администрирования компьютерных систем, для которых заявлена официальная поддержка Intel vPro (это бренд, объединяющий несколько технологий, в том числе, AMT). Речь идёт о системах с чипсетами линейки Q (например, Q57 или Q170).

Учитывая высокую стоимость таких платформ, вряд ли кто-то случайно приобретёт компьютер с AMT для того, чтобы принципиально этой технологией не пользоваться. Тем не менее, если под рукой именно такой продукт, и есть необходимость убедиться, что AMT на текущий момент выключена, следует воспользоваться утилитой ACUwizard:

[рисунок взят отсюда]

или средством Intel Management and Security Status (входит в состав ПО Intel ME для vPro-платформ, можно обнаружить в трее):

Наконец, чтобы защитить компьютеры в своей сети от несанкционированного управления извне, необходимо настроить внешний файрвол на фильтрацию AMT-запросов по признакам. Явным признаком AMT-запроса может являться порт, к которому происходит обращение: - 5900 – AMT VNC-сервер без шифрования; - 16992 – AMT веб-сервер по протоколу HTTP; - 16993 – AMT веб-сервер по протоколу HTTPS; - 16994 – AMT redirection для SOL, IDE-R, KVM без шифрования; - 16995 – AMT redirection для SOL, IDE-R, KVM с TLS.

В продуктах, не относящихся к разряду vPro-платформ AMT включить нельзя, однако в состав прошивки Intel ME входят сетевые драйверы:

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

Поэтому проблему стоит решать основательно – пытаться выключить подсистему Intel ME.

Выключение Intel ME при помощи утилит из Intel System Tool Kit

Вендорам материнских плат компания Intel предоставляет: 1. Прошивку Intel ME в бинарном виде; 2. Модули MEBx для BIOS; 3. ПО Intel ME для ОС; 4. Intel System Tool Kit (STK) — комплект программных средств и документации для сборки образов SPI флэш-памяти, применения этих образов и получении информации о текущем состоянии Intel ME.

Несмотря на то, что этот комплект распространяется по NDA (судя по меткам «Intel Confidential» в прилагаемых документах), многие вендоры забывают его вырезать из архива с ПО Intel ME, который передаётся пользователям. А ещё не закрывают свои ftp-серверы от внешнего доступа. В результате, утекших версий STK очень много. Здесь можно слить комплект для любой версии Intel ME.

Важно, чтобы major и minor version (первая и вторая цифры) используемого STK совпадала с версией Intel ME целевой системы, информацию о которой можно получить, например, воспользовавшись ME analyzer:

Проверять текущее состояние Intel ME можно при помощи утилиты MEinfo, которая через Management Engine Interface (MEI) получает информацию о работе этой подсистемы:

Напомним, что MEI является интерфейсом для связи основного CPU с подсистемой Intel ME и представляет собой набор регистров в конфигурационном пространстве PCI и в MMIO. Команды этого интерфейса не документированы, как и сам протокол.

Flash Image Tool

На старых платформах (Intel ME версии 5.x и ниже) выключить данную подсистему можно, воспользовавшись Flash Image Tool (утилита из STK, предназначенная для сборки образов SPI флэш-памяти из отдельно взятых регионов BIOS, ME, GbE). При сборке задаются параметры, которые прописываются в этих регионах и в регионе Flash Descriptors. В последнем есть один очень интересный флаг, «ME disable»:

Таким образом, для выключения Intel ME на целевой компьютерной системе, в её SPI флэш-память следует записать (программатором) новый образ с выставленным флагом «ME disable».

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

Flash Programming Tool

Начиная с Intel ME 9 версии, в утилиту Flash Programming Tool, предназначенную для программирования SPI флэш-памяти компьютерных платформ, была добавлена возможность временно выключать Intel ME:

Выключение выполняется отправкой команды в MEI. После отработки Intel ME не подаёт «признаков жизни», не отвечает даже MEI:

Согласно документации, в таком состоянии подсистема Intel ME находится до следующего запуска компьютера или перезагрузки.

На vPro-платформах возможность отправки этой команды есть и в более ранних версиях. Для этого необходимо воспользоваться разделом конфигурирования ME/AMT в BIOS, где должна быть опция «Intel ME disable»:

[рисунок взят отсюда]

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

Принудительное выключение Intel ME

В интересах исключения возможности исполнения ME-контроллером кода прошивки, логично попробовать ограничить ему доступ к ней. А что? Нет кода – нет проблемы.

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

  1. Вырезать (обнулить) ME регион из SPI флэш-памяти.

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

Отказ компьютерной системы грузиться без прошивки Intel ME можно объяснить важностью ME-контроллера в процессе инициализации аппаратной составляющей. А 30-минутный таймаут наводит на мысль о WDT (Watch Dog Timer).

  1. Включить не дескрипторный режим SPI флэш-памяти, т.е. «по старинке» когда в ней содержался только BIOS. Для этого требуется сделать одно из двух: стереть первые 0x20 байт в ней (таким образом повредив сигнатуру 0x0FF0A55A, которая определяет режим работы флэш-памяти); выставить джампер HDA_SDO (если он есть).

Таким образом, ME-контроллер не получит доступ к своему региону, и, следовательно, не будет исполнять прошивку.

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

  1. Известно, что прошивка Intel ME распаковывается в выделенную и скрытую от основного CPU область оперативной памяти – ME UMA. Выделение и блокировку этой области осуществляет BIOS во время конфигурирования карты памяти. Тогда почему бы не вырезать эти фрагменты кода из BIOS, чтобы данная область не выделялась. Тогда прошивка ME не будет распаковываться и исполняться.

Проведённые эксперименты показали, что такой способ тоже не годится, и система не запускается. К тому же, у ME-контроллера есть внутренняя SRAM, которая используется при недоступности ME UMA. Поэтому часть прошивки всё равно будет исполняться.

Вывод

Мы рассказали о предполагаемых и требующих развития способах выключения Intel ME: - отключение при каждом старте командой в MEI или отключение флагом в регионе flash descriptors (в зависимости от версии); - ограничение доступа ME-контроллеру к своей прошивке либо перевод компьютерный платформы в manufacturing mode. - препятствование нормальной работе ME-контроллера не обеспечивая его runtime-памятью.

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

Вероятно, это связано с тем, что, отключая Intel ME, мы нейтрализуем важный компонент в архитектуре компьютерной системы. Например, без ME некому будет решать важные системные задачи вроде ACPI или ICC (которые когда-то реализовывались в BIOS). Чтобы заставить платформу стабильно работать без ME, как минимум, необходимо вернуть реализацию этих технологий в BIOS.

Так или иначе, вопрос о том, как отключить Intel ME без потери работоспособности компьютерной системы, остаётся открытым.

habrahabr.ru

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

  1. Контент - статичный (например видео, или тексты, в которые изменения вносятся редко). Тогда хороший выбор с точки зрения технической грамотности - freenet. Суть его проста: ваш файл будет пошифрован, разбит на кусочки и сохранён на компъютерах других учасников freenet. После чего вы можете выключить свой компъютер, контент останется достуным. Но к сожалению чтобы получить доступ пользователи должны установить у себя программу freenet (написана на java, есть под windows и linux). То есть контент должен представлять достаточную ценность и уникальность, чтобы ради этого пользователь заморочился скачать, установить и настроить freenet. И ещё разобраться как им пользоваться. Весьма надёжен, подходит даже для распространения сильно противозаконного контента (типа ДП). Есть много альтернатив, которые упрощают использование, делая его доступным менее технически грамотным пользователям, например ZeroNet, IPFS, RetroShare… (постоянно появляются новые). Но в них не всё хорошо с анонимностью (в некоторых отсутвует, в других есть но надёжность сомнительна). Обзор этого дела будет отдельно.
  2. Контент - ‘обычный сайт’, возможно с форумом, отзывами, или другими способами когда пользователи изменяют содержимое сайта. То есть самый типичный случай. В отличие от первого варианта, сервер должен быть всегда включен (и для надёжности их желательно иметь более одного). Для простоты предположим что это nginx+php+mysql, хотя не очень важно какие именно там программы, apache+ruby+postgres будет настраиваться аналогично (с точки зрения сокрытия). Для такого есть два основных решения: tor и i2p (есть и другие, но сильно менее распространённые). Их и рассмотрим в первую очередь. Итак, предположим что у вас уже есть сайт, в котором имеется (не обязательно всё сразу):

  3. Статика (картинки, css…), которую отдаёт nginx

  4. Динамические страницы (например форум), на php
  5. Для php нужна mysql база

И вы желаете чтобы пользователи могли поcещать ваш сайт как и обычно в интернете, но никто не должен узнать физическое местонахождение сервера. Для начала, нужно решить где собственно будет размещён ваш сервер:

  1. У вас дома. Как ни странно, это хороший вариант, но при условии что вы точно всё правильно настроете и совсем нигде не накосячите. Главное уникальное достоинство метода - вы полностью контролируете физический доступ к серверу, что в других вариантах невозможно и создаёт немало проблем.
  2. Выделенный сервер. Тоже неплохой вариант, при условии что вам дают именно физический сервер, с доступом к iKVM (это когда можно по удалёнке зайти в BIOS). Лучше чем (1) тем, что в случае если сервер найдут, вы просто сделаете новый (в варианте (1) вас посадят). Но проблема в том, что у посторонних имеется доступ к железу, и как следствие техническая возможнось получить например закрытые ключи. (Да, можно настроить шифрование всего диска, использовать датчик вскрытия корпуса,… но это лишь затруднит получение дампа диска, но не исключит полностью.) Кроме того это дорого (по сравнению с другими вариантами).
  3. Виртуальный сервер. Админ хоста имеет полный доступ к RAM вашего сервера. Однако можно использовать в некоторых случаях. Сильно дешевле чем (2).

Тут будут пропущены некоторые вопросы (например выбор железа), начнём с почти начала:

  1. Установить основную ОС (обычно это ubuntu server, но параноики могут порекомендовать например FreeBSD). При установке в любом случае следует зашифровать корневую ФС и своп. Это значит, что сервер просто не загрузится без пароля, и дамп диска бесполезен.
  2. Снести из основной ОС всё лишнее, на время настройки оставить ssh, потом снести и его. Рекомендуется также вообще не иметь ни одного IP адреса на хосте. Всё что нужно - это возможность поднятия виртуальных машин (их понадобится несколько). Дальше предполагается что виртуалки - KVM, хотя при желании можно использовать XEN или VirtualBox. Принцип прост: каждой программе отдельная виртуалка, чтобы проблемы с любой из них не перекинулись на всю систему в целом.
  3. В первой виртуалке будет запущен роутер (OpenWRT или pfSense). У неё будет три виртуальных сетевых интерфейса, первый к интернету от провайдера, второй к виртуалкам с ТОR и I2P, третий к виртуалке с nginx. Роутер позаботится, чтобы ни один пакет из других виртуалок никак не мог пройти мимо TOR или I2P. Это нужно, на случай если злоумышленник получит доступ к одной из виртуалок, и попробует узнать реальный IP (от провайдера).
  4. Во второй - tor, будет предоставлять наш сайт в .onion
  5. В третьей - i2p, тоже в i2p.
  6. В четвёртой - nginx. В ней же можно запустить PHP и MySQL, это простой вариант но имеет недостаток: в случае если в любой из этих программ (например PHP скриптах, что вероятнее всего), злоумышленник получит доступ ко всем остальным. Лучше сделать как на рисунке: PHP и MySQL разнести по разным виртуалкам, это потребует больше ресурсов (RAM) и создаст проблемы с настройкой (большинство движков и фрэймворков на PHP предполагают что PHP и nginx на одном хосте). Зато если кто-то сломает любой из этих компонентов, то останется в пределах своей виртуалки и не сможет попортить остальные.
  7. Настроить роутер. Сперва всё запретить, затем разрешить из LAN1 (см. рисунок) доступ в интернет и в LAN2. Временно разрешиь из LAN2 в интернет (для установки пакетов nginx,php, mysql) после чего обратно запретить. таким образом, если кто-то получит доступ (пусть даже root) на любой виртуалке из LAN2, то не сможет отправить ничего не только в инет, но даже к web-интерфейсу i2p. (Хороший вопрос: как вы сами будете получать доступ к нему ? Ответ будет дальше…).
  8. Настроить TOR. В torrc прописать HiddenService локальный IP (из LAN2) nginx, порт 80 (https в .onion не нужен, т.к. сам факт TCP соединения с .onion доказывает что сервер имеет приватный ключ (обычно лежит в /var/lib/tor/hidden_service/). Это вполне удобно делать из консоли, т.к. достаточно отредактировать один текстовый файл (torrc).
  9. Настроить I2P. Делать это из консоли правкой конфигов - неудобно, поэтому сперва надо разрешить доступ к web-интерфейсу, (в /var/lib/i2p/i2p-config/clients.config найти строку clientApp.0.args=7657 127.0.0.1 ./webapps/ и заменить 127.0.0.1 на 0.0.0.0). Теперь есть множество способов зайти туда браузером: сделать ssh туннель, временно соединить LAN2 с физическим ethernet, пробросить порт (port forward) на роутере, …) один из самых простых и надёжных - сделать ещё один hidden service (.onion адрес) в tor, который будет показывать web-интерфейс i2p. Затем уже несложно добавить i2p туннель к вашему сайту. Сейчас наш сайт будет доступен по .onion и .i2p адресу. Однако, часто хочется странного - чтобы пользователи заходили на сайт по обычному DNS имени, но сайт при этом был скрытым. Так тоже можно, и для этого понадобится самый дешёвый виртуальный сервер. На нём нужно установить nginx и tor.

  10. В torrc прописать:

VirtualAddrNetworkIPv4 10.202.0.0/16
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 0.0.0.0
DNSPort 53
DNSListenAddress 0.0.0.0
  1. прописать правило фаервола (не забудте поставить iptables-persistent, чтобы оно пережило перезагрузку:
iptables -t nat -A OUTPUT -m tcp -p tcp -d 10.202.0.0/16 -j REDIRECT --to-ports 9040
  1. В /etc/resolv.conf
nameserver 127.0.0.1
  1. В /etc/nginx/sites-available/default
location / {
    proxy_pass <http://zqktlwi4fecvo6ri.onion;>
    proxy_set_header Host zqktlwi4fecvo6ri.onion;
}

(это адрес thehiddenwiki, замените на свой).

Теперь ваш сервер доступен по обычному IP вашего хостнига (ясен пень что все процедуры, начиная от регистрации почты для покупки VPS и настройка его надо делать через TOR). И если что - то в худшем случае сервер выключат, и ничто не помешает завести новый.

В этой схеме есть серьёзный недостаток: в случае зеродея в самом tor деанонимизация неизбежна. Как это исправить - в следующей части.

источник

ресурс тут: http://sql-joins.leopard.in.ua/

ну и картинка в придачу: