[ << ALL_FEED ]

Проксирование WebSocket nginx — обнаружение полезной нагрузки

Ещё в группе «Общее»

Проксирование WebSocket nginx — обнаружение полезной нагрузки 👀

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

❗️ Например, в одном случае мы нашли следы присутствия злоумышленников в системе, изучив конфигурацию веб-сервера nginx.

В конфигурационном файле /etc/nginx/webserver/server.conf.d/payload.conf целевого сервера нас насторожили определенные строки.


location /ws/b3a4d3a2 {
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Host               $host;
  proxy_set_header X-Forwarded-For    $remote_addr;
  access_log    off;
  log_not_found off;
  proxy_pass http://unix:/var/run/shm/evil.sock;
}
Code language: plaintext (plaintext)

В этих строках используется механизм переподключения протоколов. Начиная с версии 1.3.13 в nginx реализован режим работы, позволяющий организовать туннель между клиентом и проксируемым сервером, — WebSocket proxying.

Проксирование WebSocket активируется при получении в запросе от клиента заголовка Upgrade.

Особенностью работы этого режима является наличие следующих строк в конфигурационном файле:


 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 proxy_pass http://unix:/var/run/shm/evil.sock;
Code language: plaintext (plaintext)

Строки proxy_set_header служат для явной передачи веб-сервером nginx заголовка Upgrade проксируемому серверу. Их наличие в файле конфигурации обусловлено тем, что этот заголовок относится к категории заголовков hop-by-hop, которые не пересылаются прокси-серверами.

Строка proxy_pass содержит путь к файлу сокета в целевой системе — /var/run/shm/evil.sock.

Для получения информации о процессе, использующем указанный сокет, мы воспользовались командой lsof:


lsof | grep /var/run/shm/evil.sock
Code language: Bash (bash)

И нашли процесс c PID 18653:


payload      18653              root    4u     unix 0xffff74146a3b3743       0t0   25637138 /var/run/shm/evil.sock
Code language: plaintext (plaintext)

Далее мы нашли исполняемый файл процесса:


lsof -p 18653 | grep cwd
Code language: Bash (bash)

Файл лежал в /usr/bin/, и он оказался бэкдором.

💡 Что мы теперь можем:

• ловить WebSocket в трафике;
• смотреть активности в системах рядом со временем деплоя бэкдора (дата создания бэкдора или модификации конфига nginx);
• проверять другие веб-серверы в инфраструктуре на предмет «расширения функциональности» ваших сервисов.

#tip #detect #hunt #dfir
@ptescalator

Ещё от oUth0R

Ещё от oUth0R

Ещё в группе «Общее»