check admin

January 7, 2023 ยท View on GitHub

<# Meta Date: 2023 January 7th Authors: Harlan Carvey (Twitter @keydet89) and Dray Agha (Twitter @purp1ew0lf) Company: Huntress Labs Purpose: Automate collecting Windows Registry hives, including related .DATs for all users. Notes: Will trigger AV as it's technically credential dumping. Also relies on having internet access, to wget TSCopy Kudos for TrustedSec's TScopy.exe tool, which this script leverages: https://github.com/trustedsec/tscopy #>

check admin

function admin_check{ if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Warning "Insufficient permissions. Run this Powershell script as Admin please" Break } # if we're all good, let's fire it off else {Collect_via_Reg} }

Collect basic hives

function Collect_via_Reg{ #print to re-assure user things are happening until ZIP write-host "nnHuntress "-NoNewline -ForegroundColor green ; write-host "Registry collection script is running...nn";

#Ensure errors don't ruin anything for us
$ErrorActionPreference = "SilentlyContinue"
$progressPreference = 'silentlyContinue'

# Make the various directories, to be neat and tidy
mkdir c:\ir, C:\ir\Collected_ntuser_files, C:\ir\Collected_UsrClass_files, C:\ir\amcache

# save the registry files
reg save HKLM\Software c:\ir\Software
reg save HKLM\System c:\ir\System
reg save HKLM\SECURITY c:\ir\SECURITY
reg save HKLM\SAM C:\ir\SAM

#Next Stage
Collect_via_TSCopy

}

TSCopy for further registry hives

function Collect_via_TSCopy{

pull TScropy exe this way, because invoke-webrequests progress bar is slow and I am a bad scripter

(New-Object Net.WebClient).DownloadFile("https://github.com/trustedsec/tscopy/raw/master/dist/TScopy_x64.exe", "C:\ir\TScopy_x64.exe");

each user's ntuser.dat

C:\ir\TScopy_x64.exe -f c:\users*\ntuser.dat* -o C:\ir\Collected_ntuser_files

each user's usrclass.dat

C:\ir\TScopy_x64.exe -f C:\Users*\AppData\Local\Microsoft\Windows\UsrClass.dat* -o C:\ir\Collected_UsrClass_files

collect amcache hive

C:\ir\TScopy_x64.exe -f C:\Windows\AppCompat\Programs\Amcache.hve -o C:\ir\amcache

Next stage

Zip_Collected }

zip it all up

function Zip_Collected{ #Delete excess files rm C:\IR\TScopy_x64.exe

#Tree for a directory map
tree C:\IR /f >> C:\IR\tree_output.txt

# Get current user's desktop to save zip to. 
$DesktopPath = [Environment]::GetFolderPath("Desktop")

Get-ChildItem -Path C:\ir | Compress-Archive -DestinationPath $DesktopPath\Registry_Collection_$(Get-Date -UFormat "%Y_%b_%d_%a_UTC%Z").zip
write-host "`n`nYour ZIP is waiting at: "-NoNewline; write-host "$DesktopPath\Registry_Collection_$(Get-Date -UFormat "%Y_%b_%d_%a_UTC%Z").zip`n`n" -ForegroundColor green ;

# Clean up C:\IR on host after ZIP
Remove-Item "C:\IR" -Recurse -force

# Open up dir
sleep 2; ii "$DesktopPath\Registry_Collection_$(Get-Date -UFormat "%Y_%b_%d_%a_UTC%Z").zip"

}

#Execute main function in silence Admin_Check | out-null