Атаки доступа к учетным данным – это кибератаки, целью которых является получение учетных данных для входа в систему. Эти учетные данные могут включать имена пользователей, пароли, токены безопасности или другую аутентификационную информацию. Они остаются одной из критических угроз безопасности для организаций. Такие атаки позволяют злоумышленникам получить неавторизованный доступ к системам, облегчая разветвление атаки и повышение уровня привилегий в целевой среде. Такой скрытый подход облегчает злоумышленникам достижение их целей, оставаясь незамеченными.
Чтобы эффективно выявлять и реагировать на атаки с использованием учетных данных в системах Linux, организациям следует внедрить надежную систему мониторинга безопасности для выявления аномального поведения. В этой статье продемонстрировано, как обнаружить следующие методы атак на учетные данные:
- Офлайн взлом паролей
- Незащищенный доступ к учетным данным
Инфраструктура
Для демонстрации обнаружения атак на учетные данные с помощью Wazuh используется следующая инфраструктура.
- Настроенная и готовая к использованию последняя версия виртуальной машины Wazuh OVA включающая основные компоненты решения (сервер, indexer, дешборд).
- Установлена и зарегистрирована на сервере Wazuh конечная точка Ubuntu 22.04 c агентом Wazuh.
Методы атак на учетные данные
Возможные цели для злоумышленников на конечных точках Linux включают, но не ограничиваются ими:
- Браузеры
- Менеджеры паролей
- Hash dump (который также требует офлайн-взлома)
- SSH-ключи
Офлайн-взлом паролей
Офлайн-взлом паролей – это метод, используемый специалистами по безопасности и злоумышленниками для восстановления паролей из хешированных или зашифрованных файлов без активного взаимодействия с целевой системой.
Этот метод сосредоточен на получении хешей (hashes) паролей, хранящихся в системных файлах, таких как etc/passwd и etc/shadow. Затем злоумышленники пытаются взломать их, используя brute-force или атаки с использованием словарей на отдельной конечной точке.
Обнаружение этой техники сосредотачивается на мониторинге доступа на считывание к файлам etc/shadow и etc/passwd, которые по умолчанию доступны только пользователю root.
Незащищенный доступ к учетным данным
Злоумышленники часто ищут незащищенные учетные данные, чтобы облегчить разветвление атаки в сети. Они могут использовать незащищенные учетные данные, которые хранятся в открытом виде, слабо зашифрованы, не хешированы и находятся в легкодоступных местах. Они могут просматривать файл bash_history, чтобы обнаружить ранее использованные учетные данные, и искать приватные SSH-ключи в каталоге ~/.ssh.
Усилия по обнаружению должны быть сосредоточены на обнаружении попыток выполнения действий чтения этих файлов, поскольку они могут свидетельствовать о злонамеренных намерениях.
Обнаружение с помощью Wazuh
В этом разделе рассмотрено, как настроить отслеживаемые конечные точки на обнаружение потенциальных вредоносных действий, выполняемых пользователями, не имеющими права root, и как использовать правила обнаружения Wazuh для запуска оповещений.
Примечание: Для выполнения приведенных ниже команд требуются привилегии root-пользователя.
Настройка конечного устройства Ubuntu
Здесь настраивается конечная точка Ubuntu для обнаружения автономного доступа к файлам учетных данных. Кроме того, регистрируются команды, запущенные из интерфейса командной строки (CLI), чтобы обнаружить потенциальные злонамеренные команды с помощью Auditd.
Чтобы установить Auditd и создать необходимые правила аудита, важно выполнить следующие действия:
1) Установить, запустить и включить Auditd, если он еще не присутствует в системе:
# apt -y install auditd audispd-plugins
# systemctl start auditd
# systemctl enable auditd
2) Выполнить следующую команду, чтобы добавить правила аудита в файл /etc/audit/rules.d/audit.rules:
# cat << EOF >> /etc/audit/rules.d/audit.rules
-a exit,always -F arch=b64 -F auid!=-1 -F euid!=0 -S execve -k audit-wazuh-c
-a exit,always -F arch=b64 -F path=/etc/shadow -F auid!=-1 -F euid!=0 -F perm=r -k shadow_access
-a exit,always -F arch=b64 -F path=/etc/passwd -F auid!=-1 -F euid!=0 -F perm=r -k passwd_access
-a exit,always -F arch=b64 -F path=/<USER_HOME_DIRECTORY>/.bash_history -F auid!=-1 -F euid!=0 -F perm=r -k history_access
-a exit,always -F arch=b64 -F dir=/<USER_HOME_DIRECTORY>/.ssh/ -F auid!=-1 -F euid!=0 -F perm=r -k ssh_access
EOF
Где:
- –a exit, always указывает правило аудита, применимое к точке завершения системного вызова. Ключевое слово always гарантирует, что правило всегда будет активным.
- Фильтр -F auid!=-1 гарантирует, что правило не будет применяться к действиям, для которых идентификатор пользователя аудита равен -1. Значение auid -1 обычно указывает на то, что процесс не связан с пользователем, что часто наблюдается в потоках ядра или на ранних стадиях загрузки.
- Фильтр -F arch=b64 указывает, что правило применяется к системным вызовам 64-битной архитектуры. Для 32-разрядных архитектур фильтр будет иметь значение arch=b32.
- -S execve указывает системный вызов, который будет проверен. execve – это системный вызов, используемый для выполнения программ. Следовательно, это правило будет фиксировать каждое выполнение программы, соответствующей указанным фильтрам.
- -k audit-wazuh-c указывает ключ для записи аудита. Опция -k позволяет помечать журналы аудита, сгенерированные этим правилом, определенным идентификатором, что облегчает поиск и анализ связанных журналов.
- –F perm=r указывает, что правило применяется к операциям чтения.
- -F euid!=0 указывает, что будут проверяться события, в которых эффективный идентификатор пользователя (euid) не равен 0. EUID 0 обычно соответствует корневому пользователю в Unix-подобных операционных системах.
- -F path указывает полный путь к файлу, который нужно отслеживать. Необходимо заменить на домашний каталог пользователя (<USER_HOME_DIRECTORY>), для которого нужно отслеживать историю bash и доступ к файлам по SSH.
Важно: Правило аудита -a always,exit -F arch=b64 -S execve -F auid!=-1 -F euid!=0 -F key=audit-wazuh-c записывает каждую команду, выполненную на контролируемом конечном устройстве. Это приведет к запуску правила Wazuh auditd по умолчанию с идентификатором 80792.
3) Перезагрузить правила и убедиться, что они работают:
# sudo auditctl -R /etc/audit/rules.d/audit.rules
Output:
No rules
enabled 1
failure 1
pid 2652
rate_limit 0
backlog_limit 8192
lost 0
backlog 3
backlog_wait_time 60000
backlog_wait_time_actual 0
enabled 1
failure 1
pid 2652
rate_limit 0
backlog_limit 8192
lost 0
backlog 7
backlog_wait_time 60000
backlog_wait_time_actual 0
enabled 1
failure 1
pid 2652
rate_limit 0
backlog_limit 8192
lost 0
backlog 2
backlog_wait_time 60000
backlog_wait_time_actual 0
# sudo auditctl -l
Output:
-a always,exit -F arch=b64 -S execve -F auid!=-1 -F euid!=0 -F key=audit-wazuh-c
-a always,exit -F arch=b64 -S all -F path=/etc/shadow -F auid!=-1 -F euid!=0 -F perm=r -F key=shadow_access
-a always,exit -F arch=b64 -S all -F path=/etc/passwd -F auid!=-1 -F euid!=0 -F perm=r -F key=passwd_access
-a always,exit -F arch=b64 -S all -F path=/root/.bash_history -F auid!=-1 -F euid!=0 -F perm=r -F key=history_access
-a always,exit -F arch=b64 -S all -F dir=/root/.ssh/ -F auid!=-1 -F euid!=0 -F perm=r -F key=ssh_access
4) Добавить следующую конфигурацию в файл агента Wazuh /var/ossec/etc/ossec.conf. Это позволит агенту Wazuh читать файл журнала auditd:
<ossec_config>
<localfile>
<log_format>audit</log_format>
<location>/var/log/audit/audit.log</location>
</localfile>
</ossec_config>
5) Перезапустить службу агента Wazuh, чтобы применить конфигурации:
# sudo systemctl restart wazuh-agent
Настройка сервера Wazuh
1) Обновить список CDB /var/ossec/etc/lists/audit-keys пользовательским ключом аудита:
# cat << EOF >> /var/ossec/etc/lists/audit-keys
passwd_access:passwd
shadow_access:shadow
history_access:history
ssh_access:ssh
EOF
2) Добавить следующие правила в файл /var/ossec/etc/etc/rules/local_rules.xml, чтобы генерировать уведомления на панели управления Wazuh всякий раз, когда злоумышленник выполняет любую из вышеупомянутых атак:
<group name="cred_access,">
<!--Detect access to offline password storing files-->
<rule id="100110" level="7">
<if_sid>80700</if_sid>
<list field="audit.key" lookup="match_key_value" check_value="passwd">etc/lists/audit-keys</list>
<description>File access - The file $(audit.file.name) was accessed</description>
<group>audit_command,</group>
<mitre>
<id>T1003.008</id>
</mitre>
</rule>
<rule id="100120" level="10">
<if_sid>80700</if_sid>
<list field="audit.key" lookup="match_key_value" check_value="shadow">etc/lists/audit-keys</list>
<description>Possible adversary activity - $(audit.file.name) was accessed</description>
<group>audit_command,</group>
<mitre>
<id>T1003.008</id>
</mitre>
</rule>
<!--Detecting suspicious activities related to unsecured credentials -->
<rule id="100131" level="0">
<if_sid>80700</if_sid>
<list field="audit.key" lookup="match_key_value" check_value="ssh">etc/lists/audit-keys</list>
<description>Possible adversary activity - $(audit.file.name) was accessed</description>
<group>audit_command,</group>
</rule>
<rule id="100132" level="0">
<if_sid>80700</if_sid>
<list field="audit.key" lookup="match_key_value" check_value="history">etc/lists/audit-keys</list>
<description>Possible adversary activity - $(audit.file.name) was accessed</description>
<group>audit_command,</group>
</rule>
<rule id="100133" level="0">
<if_sid>80700</if_sid>
<field name="audit.exe" type="pcre2">/usr/bin/*grep</field>
<field name="audit.execve.a2">cred|password|login</field>
<description>Possible adversary activity - $(audit.file.name) was accessed</description>
<group>audit_command,</group>
</rule>
<rule id="100130" level="10">
<if_sid>100131, 100132, 100133</if_sid>
<description>Possible adversary activity - searching for previously used credentials in system files</description>
<group>audit_command,</group>
<mitre>
<id>T1552.001</id>
</mitre>
</rule>
</group>
Где:
- Правило с ID 100110 срабатывает при попытке доступа на чтение к файлу /etc/passwd.
- Правило с ID 100120 срабатывает при попытке доступа на чтение к файлу /etc/shadow.
- Правило с ID 100131 срабатывает при попытке чтения файла bash_history.
- Правило с ID 100132 срабатывает при попытке чтения файлов из каталога .ssh.
- Правило с ID 100133 срабатывает, если в каталогах .ssh или bash_history записан процесс grep для определенных ключевых слов.
- Правило с ID 100130 срабатывает, когда срабатывают правила с идентификаторами 100131, 100132 и 100133. Это означает поиск учетных данных в каталогах .ssh или проверку bash_history на наличие ранее использованных учетных данных.
Важно: В зависимости от различных служб, установленных на контролируемом конечном устройстве, правило ID 100110 может выдавать несколько предупреждений при перезагрузке системы и входе пользователей в систему. Это связано с тем, что некоторые из этих программ требуют аутентификации пользователя, а следовательно, читают файл /etc/passwd.
3) Перезапустите менеджер Wazuh, чтобы применить изменения конфигурации:
# systemctl restart wazuh-manager
Результаты обнаружения
На приведенном ниже снимке экрана показаны уведомления, сгенерированные на панели управления Wazuh, когда моделируются злонамеренные действия, связанные с атаками доступа к учетным данным на конечных точках атакуемого. На информационной панели Wazuh перейти к «Threat hunting», чтобы просмотреть сгенерированные оповещения.
Если события не видны напрямую:
- Нажать +Add filter. Затем отфильтровать rule.id в поле «Field».
- В поле «Operator» выбрать фильтр для is one of.
- Задать значения 100110, 100120 и 100130 в поле «Values».
- Нажать кнопку «Save».

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







