Недавно у нас на анализе оказался интересный «пациент»: веб-сервер на ОС Windows, на котором было запущенно несколько веб-служб. Все указывало на то, что атакующие проникли через него, но вот незадача — в системе не оказалось веб-логов. Их не удалили, а просто не настроили.
Можно было бы просто признать сервер точкой входа по косвенным признакам, но хотелось узнать точную причину компрометации. Как мы это сделали:
1️⃣ Самой ранней обнаруженной вредоносной активностью являлось выполнение PowerShell-команды от имени системы для запуска Reverse Shell к серверу атакующего, которую мы обнаружили в журнале PowerShell.
Однако на момент исследования система уже была перезагружена и восстановить дерево процессов привычным способом было невозможно.
2️⃣ Здесь нам и пригодились журналы ETL. Windows записывает предупреждения, ошибки и другие события на уровне приложений и системы в двоичный файл — журнал трассировки событий, или же ETL.
В ETL-журнале
C\Windows\System32\WDI\LogFiles\ShutdownPerfDiagLogger.etl мы обнаружили запись о процессе, который выполнил команду ReverseShell, а с помощью полей PID и PPID смогли восстановить нужную цепочку процессов:* postgres.exe
** cmd.exe /c ""powershell.exe -ep bypass -EncodedCommand <base64>""
*** powershell.exe -ep bypass -EncodedCommand <base64>
Таким образом мы подтвердили гипотезу, что виновником инцидента был необновленный PostgreSQL.
Для обработки данного артефакта вы можете воспользоваться проектом ETLParser, который доступен на GitHub.