diff --git a/winPEAS/winPEASps1/winPEAS.ps1 b/winPEAS/winPEASps1/winPEAS.ps1 index 87d8239..23a9570 100644 --- a/winPEAS/winPEASps1/winPEAS.ps1 +++ b/winPEAS/winPEASps1/winPEAS.ps1 @@ -114,13 +114,13 @@ Function Get-ClipBoardText { $text = [Windows.Clipboard]::GetText() if ($text) { Write-Host "" - if($debug){TimeElapsed} + if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| ClipBoard text found:" Write-Host $text } } -function h {Write-host "##" -ForegroundColor Green} +function h { Write-Host "##" -ForegroundColor Green } " ((,.,/((((((((((((((((((((/, */ @@ -154,209 +154,209 @@ function h {Write-host "##" -ForegroundColor Green} # Manually added Regex search strings from https://github.com/carlospolop/PEASS-ng/blob/master/build_lists/sensitive_files.yaml $regexSearch = @{} -$regexSearch.add("Apr1 MD5",'\$apr1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}') -$regexSearch.add("Apache SHA","\{SHA\}[0-9a-zA-Z/_=]{10,}") -$regexSearch.add("Blowfish",'\$2[abxyz]?\$[0-9]{2}\$[a-zA-Z0-9_/\.]*') -$regexSearch.add("Drupal",'\$S\$[a-zA-Z0-9_/\.]{52}') -$regexSearch.add("Joomlavbulletin","[0-9a-zA-Z]{32}:[a-zA-Z0-9_]{16,32}") -$regexSearch.add("Linux MD5",'\$1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}') -$regexSearch.add("phpbb3",'\$H\$[a-zA-Z0-9_/\.]{31}') -$regexSearch.add("sha512crypt",'\$6\$[a-zA-Z0-9_/\.]{16}\$[a-zA-Z0-9_/\.]{86}') -$regexSearch.add("Wordpress",'\$P\$[a-zA-Z0-9_/\.]{31}') -$regexSearch.add("md5","(^|[^a-zA-Z0-9])[a-fA-F0-9]{32}([^a-zA-Z0-9]|$)") -$regexSearch.add("sha1","(^|[^a-zA-Z0-9])[a-fA-F0-9]{40}([^a-zA-Z0-9]|$)") -$regexSearch.add("sha256","(^|[^a-zA-Z0-9])[a-fA-F0-9]{64}([^a-zA-Z0-9]|$)") -$regexSearch.add("sha512","(^|[^a-zA-Z0-9])[a-fA-F0-9]{128}([^a-zA-Z0-9]|$)") -$regexSearch.add("Artifactory API Token","AKC[a-zA-Z0-9]{10,}") -$regexSearch.add("Artifactory Password","AP[0-9ABCDEF][a-zA-Z0-9]{8,}") -$regexSearch.add("Authorization Basic","basic [a-zA-Z0-9_:\.=\-]+") -$regexSearch.add("Authorization Bearer","bearer [a-zA-Z0-9_\.=\-]+") -$regexSearch.add("Adafruit API Key","([a-z0-9_-]{32})") -$regexSearch.add("Adobe Client Id (Oauth Web)","(adobe[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{32})['""]") -$regexSearch.add("Abode Client Secret","(p8e-)[a-z0-9]{32}") -$regexSearch.add("Age Secret Key","AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}") -$regexSearch.add("Airtable API Key","([a-z0-9]{17})") -$regexSearch.add("Alchemi API Key","(alchemi[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9-]{32})['""]") -$regexSearch.add("Alibaba Access Key ID","(LTAI)[a-z0-9]{20}") -$regexSearch.add("Alibaba Secret Key","(alibaba[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{30})['""]") -$regexSearch.add("Artifactory API Key & Password","[""']AKC[a-zA-Z0-9]{10,}[""']|[""']AP[0-9ABCDEF][a-zA-Z0-9]{8,}[""']") -$regexSearch.add("Asana Client ID","((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9]{16})['""])|((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""])") -$regexSearch.add("Atlassian API Key","(atlassian[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{24})['""]") -$regexSearch.add("AWS Client ID","(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}") -$regexSearch.add("AWS MWS Key","amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}") -$regexSearch.add("AWS Secret Key","aws(.{0,20})?['""][0-9a-zA-Z\/+]{40}['""]") -$regexSearch.add("AWS AppSync GraphQL Key","da2-[a-z0-9]{26}") -$regexSearch.add("Base32","(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?") -$regexSearch.add("Base64","(eyJ|YTo|Tzo|PD[89]|aHR0cHM6L|aHR0cDo|rO0)[a-zA-Z0-9+/]+={0,2}") -$regexSearch.add("Basic Auth Credentials","://[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+") -$regexSearch.add("Beamer Client Secret","(beamer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""](b_[a-z0-9=_\-]{44})['""]") -$regexSearch.add("Binance API Key","(binance[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{64})['""]") -$regexSearch.add("Bitbucket Client Id","((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""])") -$regexSearch.add("Bitbucket Client Secret","((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9_\-]{64})['""])") -$regexSearch.add("BitcoinAverage API Key","(bitcoin.?average[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{43})['""]") -$regexSearch.add("Bitquery API Key","(bitquery[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Za-z0-9]{32})['""]") -$regexSearch.add("Bittrex Access Key and Access Key","([a-z0-9]{32})") -$regexSearch.add("Birise API Key","(bitrise[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9_\-]{86})['""]") -$regexSearch.add("Block API Key","(block[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4})['""]") -$regexSearch.add("Blockchain API Key","mainnet[a-zA-Z0-9]{32}|testnet[a-zA-Z0-9]{32}|ipfs[a-zA-Z0-9]{32}") -$regexSearch.add("Blockfrost API Key","(blockchain[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[0-9a-f]{12})['""]") -$regexSearch.add("Box API Key","(box[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{32})['""]") -$regexSearch.add("Bravenewcoin API Key","(bravenewcoin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{50})['""]") -$regexSearch.add("Clearbit API Key","sk_[a-z0-9]{32}") -$regexSearch.add("Clojars API Key","(CLOJARS_)[a-zA-Z0-9]{60}") -$regexSearch.add("Cloudinary Basic Auth","cloudinary://[0-9]{15}:[0-9A-Za-z]+@[a-z]+") -$regexSearch.add("Coinbase Access Token","([a-z0-9_-]{64})") -$regexSearch.add("Coinlayer API Key","(coinlayer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") -$regexSearch.add("Coinlib API Key","(coinlib[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{16})['""]") -$regexSearch.add("Confluent Access Token & Secret Key","([a-z0-9]{16})") -$regexSearch.add("Contentful delivery API Key","(contentful[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9=_\-]{43})['""]") -$regexSearch.add("Covalent API Key","ckey_[a-z0-9]{27}") -$regexSearch.add("Charity Search API Key","(charity.?search[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") -$regexSearch.add("Databricks API Key","dapi[a-h0-9]{32}") -$regexSearch.add("DDownload API Key","(ddownload[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{22})['""]") -$regexSearch.add("Defined Networking API token","(dnkey-[a-z0-9=_\-]{26}-[a-z0-9=_\-]{52})") -$regexSearch.add("Discord API Key, Client ID & Client Secret","((discord[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-h0-9]{64}|[0-9]{18}|[a-z0-9=_\-]{32})['""])") -$regexSearch.add("Droneci Access Token","([a-z0-9]{32})") -$regexSearch.add("Dropbox API Key","sl.[a-zA-Z0-9_-]{136}") -$regexSearch.add("Doppler API Key","(dp\.pt\.)[a-zA-Z0-9]{43}") -$regexSearch.add("Dropbox API secret/key, short & long lived API Key","(dropbox[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{15}|sl\.[a-z0-9=_\-]{135}|[a-z0-9]{11}(AAAAAAAAAA)[a-z0-9_=\-]{43})['""]") -$regexSearch.add("Duffel API Key","duffel_(test|live)_[a-zA-Z0-9_-]{43}") -$regexSearch.add("Dynatrace API Key","dt0c01\.[a-zA-Z0-9]{24}\.[a-z0-9]{64}") -$regexSearch.add("EasyPost API Key","EZAK[a-zA-Z0-9]{54}") -$regexSearch.add("EasyPost test API Key","EZTK[a-zA-Z0-9]{54}") -$regexSearch.add("Etherscan API Key","(etherscan[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Z0-9]{34})['""]") -$regexSearch.add("Etsy Access Token","([a-z0-9]{24})") -$regexSearch.add("Facebook Access Token","EAACEdEose0cBA[0-9A-Za-z]+") -$regexSearch.add("Facebook Client ID","([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['""][0-9]{13,17}") -$regexSearch.add("Facebook Oauth","[fF][aA][cC][eE][bB][oO][oO][kK].*['|""][0-9a-f]{32}['|""]") -$regexSearch.add("Facebook Secret Key","([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['""][0-9a-f]{32}") -$regexSearch.add("Fastly API Key","(fastly[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9=_\-]{32})['""]") -$regexSearch.add("Finicity API Key & Client Secret","(finicity[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{32}|[a-z0-9]{20})['""]") -$regexSearch.add("Flickr Access Token","([a-z0-9]{32})") -$regexSearch.add("Flutterweave Keys","FLWPUBK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST[a-hA-H0-9]{12}") -$regexSearch.add("Frame.io API Key","fio-u-[a-zA-Z0-9_=\-]{64}") -$regexSearch.add("Freshbooks Access Token","([a-z0-9]{64})") -$regexSearch.add("Github","github(.{0,20})?['""][0-9a-zA-Z]{35,40}") -$regexSearch.add("Github App Token","(ghu|ghs)_[0-9a-zA-Z]{36}") -$regexSearch.add("Github OAuth Access Token","gho_[0-9a-zA-Z]{36}") -$regexSearch.add("Github Personal Access Token","ghp_[0-9a-zA-Z]{36}") -$regexSearch.add("Github Refresh Token","ghr_[0-9a-zA-Z]{76}") -$regexSearch.add("GitHub Fine-Grained Personal Access Token","github_pat_[0-9a-zA-Z_]{82}") -$regexSearch.add("Gitlab Personal Access Token","glpat-[0-9a-zA-Z\-]{20}") -$regexSearch.add("GitLab Pipeline Trigger Token","glptt-[0-9a-f]{40}") -$regexSearch.add("GitLab Runner Registration Token","GR1348941[0-9a-zA-Z_\-]{20}") -$regexSearch.add("Gitter Access Token","([a-z0-9_-]{40})") -$regexSearch.add("GoCardless API Key","live_[a-zA-Z0-9_=\-]{40}") -$regexSearch.add("GoFile API Key","(gofile[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{32})['""]") -$regexSearch.add("Google API Key","AIza[0-9A-Za-z_\-]{35}") -$regexSearch.add("Google Cloud Platform API Key","(google|gcp|youtube|drive|yt)(.{0,20})?['""][AIza[0-9a-z_\-]{35}]['""]") -$regexSearch.add("Google Drive Oauth","[0-9]+-[0-9A-Za-z_]{32}\.apps\.googleusercontent\.com") -$regexSearch.add("Google Oauth Access Token","ya29\.[0-9A-Za-z_\-]+") -$regexSearch.add("Google (GCP) Service-account","""type.+:.+""service_account") -$regexSearch.add("Grafana API Key","eyJrIjoi[a-z0-9_=\-]{72,92}") -$regexSearch.add("Grafana cloud api token","glc_[A-Za-z0-9\+/]{32,}={0,2}") -$regexSearch.add("Grafana service account token","(glsa_[A-Za-z0-9]{32}_[A-Fa-f0-9]{8})") -$regexSearch.add("Hashicorp Terraform user/org API Key","[a-z0-9]{14}\.atlasv1\.[a-z0-9_=\-]{60,70}") -$regexSearch.add("Heroku API Key","[hH][eE][rR][oO][kK][uU].{0,30}[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}") -$regexSearch.add("Hubspot API Key","['""][a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12}['""]") -$regexSearch.add("Instatus API Key","(instatus[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") -$regexSearch.add("Intercom API Key & Client Secret/ID","(intercom[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9=_]{60}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['""]") -$regexSearch.add("Ionic API Key","(ionic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""](ion_[a-z0-9]{42})['""]") -$regexSearch.add("Jenkins Creds","<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<") -$regexSearch.add("JSON Web Token","(ey[0-9a-z]{30,34}\.ey[0-9a-z\/_\-]{30,}\.[0-9a-zA-Z\/_\-]{10,}={0,2})") -$regexSearch.add("Kraken Access Token","([a-z0-9\/=_\+\-]{80,90})") -$regexSearch.add("Kucoin Access Token","([a-f0-9]{24})") -$regexSearch.add("Kucoin Secret Key","([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})") -$regexSearch.add("Launchdarkly Access Token","([a-z0-9=_\-]{40})") -$regexSearch.add("Linear API Key","(lin_api_[a-zA-Z0-9]{40})") -$regexSearch.add("Linear Client Secret/ID","((linear[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{32})['""])") -$regexSearch.add("LinkedIn Client ID","linkedin(.{0,20})?['""][0-9a-z]{12}['""]") -$regexSearch.add("LinkedIn Secret Key","linkedin(.{0,20})?['""][0-9a-z]{16}['""]") -$regexSearch.add("Lob API Key","((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]((live|test)_[a-f0-9]{35})['""])|((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]((test|live)_pub_[a-f0-9]{31})['""])") -$regexSearch.add("Lob Publishable API Key","((test|live)_pub_[a-f0-9]{31})") -$regexSearch.add("MailboxValidator","(mailbox.?validator[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Z0-9]{20})['""]") -$regexSearch.add("Mailchimp API Key","[0-9a-f]{32}-us[0-9]{1,2}") -$regexSearch.add("Mailgun API Key","key-[0-9a-zA-Z]{32}'") -$regexSearch.add("Mailgun Public Validation Key","pubkey-[a-f0-9]{32}") -$regexSearch.add("Mailgun Webhook signing key","[a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8}") -$regexSearch.add("Mapbox API Key","(pk\.[a-z0-9]{60}\.[a-z0-9]{22})") -$regexSearch.add("Mattermost Access Token","([a-z0-9]{26})") -$regexSearch.add("MessageBird API Key & API client ID","(messagebird[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{25}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['""]") -$regexSearch.add("Microsoft Teams Webhook","https:\/\/[a-z0-9]+\.webhook\.office\.com\/webhookb2\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}\/IncomingWebhook\/[a-z0-9]{32}\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}") -$regexSearch.add("MojoAuth API Key","[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}") -$regexSearch.add("Netlify Access Token","([a-z0-9=_\-]{40,46})") -$regexSearch.add("New Relic User API Key, User API ID & Ingest Browser API Key","(NRAK-[A-Z0-9]{27})|((newrelic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Z0-9]{64})['""])|(NRJS-[a-f0-9]{19})") -$regexSearch.add("Nownodes","(nownodes[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Za-z0-9]{32})['""]") -$regexSearch.add("Npm Access Token","(npm_[a-zA-Z0-9]{36})") -$regexSearch.add("Nytimes Access Token","([a-z0-9=_\-]{32})") -$regexSearch.add("Okta Access Token","([a-z0-9=_\-]{42})") -$regexSearch.add("OpenAI API Token","sk-[A-Za-z0-9]{48}") -$regexSearch.add("ORB Intelligence Access Key","['""][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['""]") -$regexSearch.add("Pastebin API Key","(pastebin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") -$regexSearch.add("PayPal Braintree Access Token",'access_token\$production\$[0-9a-z]{16}\$[0-9a-f]{32}') -$regexSearch.add("Picatic API Key","sk_live_[0-9a-z]{32}") -$regexSearch.add("Pinata API Key","(pinata[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{64})['""]") -$regexSearch.add("Planetscale API Key","pscale_tkn_[a-zA-Z0-9_\.\-]{43}") -$regexSearch.add("PlanetScale OAuth token","(pscale_oauth_[a-zA-Z0-9_\.\-]{32,64})") -$regexSearch.add("Planetscale Password","pscale_pw_[a-zA-Z0-9_\.\-]{43}") -$regexSearch.add("Plaid API Token","(access-(?:sandbox|development|production)-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})") -$regexSearch.add("Plaid Client ID","([a-z0-9]{24})") -$regexSearch.add("Plaid Secret key","([a-z0-9]{30})") -$regexSearch.add("Prefect API token","(pnu_[a-z0-9]{36})") -$regexSearch.add("Postman API Key","PMAK-[a-fA-F0-9]{24}-[a-fA-F0-9]{34}") -$regexSearch.add("Private Keys","\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN OPENSSH PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN PGP PRIVATE KEY BLOCK\-\-\-\-\-|\-\-\-\-\-BEGIN DSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN EC PRIVATE KEY\-\-\-\-\-") -$regexSearch.add("Pulumi API Key","pul-[a-f0-9]{40}") -$regexSearch.add("PyPI upload token","pypi-AgEIcHlwaS5vcmc[A-Za-z0-9_\-]{50,}") -$regexSearch.add("Quip API Key","(quip[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{15}=\|[0-9]{10}\|[a-zA-Z0-9\/+]{43}=)['""]") -$regexSearch.add("RapidAPI Access Token","([a-z0-9_-]{50})") -$regexSearch.add("Rubygem API Key","rubygems_[a-f0-9]{48}") -$regexSearch.add("Readme API token","rdme_[a-z0-9]{70}") -$regexSearch.add("Sendbird Access ID","([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})") -$regexSearch.add("Sendbird Access Token","([a-f0-9]{40})") -$regexSearch.add("Sendgrid API Key","SG\.[a-zA-Z0-9_\.\-]{66}") -$regexSearch.add("Sendinblue API Key","xkeysib-[a-f0-9]{64}-[a-zA-Z0-9]{16}") -$regexSearch.add("Sentry Access Token","([a-f0-9]{64})") -$regexSearch.add("Shippo API Key, Access Token, Custom Access Token, Private App Access Token & Shared Secret","shippo_(live|test)_[a-f0-9]{40}|shpat_[a-fA-F0-9]{32}|shpca_[a-fA-F0-9]{32}|shppa_[a-fA-F0-9]{32}|shpss_[a-fA-F0-9]{32}") -$regexSearch.add("Sidekiq Secret","([a-f0-9]{8}:[a-f0-9]{8})") -$regexSearch.add("Sidekiq Sensitive URL","([a-f0-9]{8}:[a-f0-9]{8})@(?:gems.contribsys.com|enterprise.contribsys.com)") -$regexSearch.add("Slack Token","xox[baprs]-([0-9a-zA-Z]{10,48})?") -$regexSearch.add("Slack Webhook","https://hooks.slack.com/services/T[a-zA-Z0-9_]{10}/B[a-zA-Z0-9_]{10}/[a-zA-Z0-9_]{24}") -$regexSearch.add("Smarksheel API Key","(smartsheet[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{26})['""]") -$regexSearch.add("Square Access Token","sqOatp-[0-9A-Za-z_\-]{22}") -$regexSearch.add("Square API Key","EAAAE[a-zA-Z0-9_-]{59}") -$regexSearch.add("Square Oauth Secret","sq0csp-[ 0-9A-Za-z_\-]{43}") -$regexSearch.add("Stytch API Key","secret-.*-[a-zA-Z0-9_=\-]{36}") -$regexSearch.add("Stripe Access Token & API Key","(sk|pk)_(test|live)_[0-9a-z]{10,32}|k_live_[0-9a-zA-Z]{24}") -$regexSearch.add("SumoLogic Access ID","([a-z0-9]{14})") -$regexSearch.add("SumoLogic Access Token","([a-z0-9]{64})") -$regexSearch.add("Telegram Bot API Token","[0-9]+:AA[0-9A-Za-z\\-_]{33}") -$regexSearch.add("Travis CI Access Token","([a-z0-9]{22})") -$regexSearch.add("Trello API Key","(trello[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9a-z]{32})['""]") -$regexSearch.add("Twilio API Key","SK[0-9a-fA-F]{32}") -$regexSearch.add("Twitch API Key","(twitch[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{30})['""]") -$regexSearch.add("Twitter Client ID","[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['""][0-9a-z]{18,25}") -$regexSearch.add("Twitter Bearer Token","(A{22}[a-zA-Z0-9%]{80,100})") -$regexSearch.add("Twitter Oauth","[tT][wW][iI][tT][tT][eE][rR].{0,30}['""\\s][0-9a-zA-Z]{35,44}['""\\s]") -$regexSearch.add("Twitter Secret Key","[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['""][0-9a-z]{35,44}") -$regexSearch.add("Typeform API Key","tfp_[a-z0-9_\.=\-]{59}") -$regexSearch.add("URLScan API Key","['""][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['""]") -$regexSearch.add("Vault Token","[sb]\.[a-zA-Z0-9]{24}") -$regexSearch.add("Yandex Access Token","(t1\.[A-Z0-9a-z_-]+[=]{0,2}\.[A-Z0-9a-z_-]{86}[=]{0,2})") -$regexSearch.add("Yandex API Key","(AQVN[A-Za-z0-9_\-]{35,38})") -$regexSearch.add("Yandex AWS Access Token","(YC[a-zA-Z0-9_\-]{38})") -$regexSearch.add("Web3 API Key","(web3[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Za-z0-9_=\-]+\.[A-Za-z0-9_=\-]+\.?[A-Za-z0-9_.+/=\-]*)['""]") -$regexSearch.add("Zendesk Secret Key","([a-z0-9]{40})") -$regexSearch.add("Generic API Key","((key|api|token|secret|password)[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9a-zA-Z_=\-]{8,64})['""]") -$regexSearch.add("Generic Secret","[sS][eE][cC][rR][eE][tT].*['""][0-9a-zA-Z]{32,45}['""]") -$regexSearch.add("Basic Auth","//(.+):(.+)@") -$regexSearch.add("PHP Passwords","(pwd|passwd|password|PASSWD|PASSWORD|dbuser|dbpass|pass').*[=:].+|define ?\('(\w*pass|\w*pwd|\w*user|\w*datab)") -$regexSearch.add("Config Secrets","passwd.*|creden.*|^kind:[^a-zA-Z0-9_]?Secret|[^a-zA-Z0-9_]env:|secret:|secretName:|^kind:[^a-zA-Z0-9_]?EncryptionConfiguration|\-\-encryption\-provider\-config") -$regexSearch.add("Simple Passwords","passw.*[=:].+") -$regexSearch.add("Generiac API tokens search","(access_key|access_token|admin_pass|admin_user|algolia_admin_key|algolia_api_key|alias_pass|alicloud_access_key| amazon_secret_access_key|amazonaws|ansible_vault_password|aos_key|api_key|api_key_secret|api_key_sid|api_secret| api.googlemaps AIza|apidocs|apikey|apiSecret|app_debug|app_id|app_key|app_log_level|app_secret|appkey|appkeysecret| application_key|appsecret|appspot|auth_token|authorizationToken|authsecret|aws_access|aws_access_key_id|aws_bucket| aws_key|aws_secret|aws_secret_key|aws_token|AWSSecretKey|b2_app_key|bashrc password| bintray_apikey|bintray_gpg_password|bintray_key|bintraykey|bluemix_api_key|bluemix_pass|browserstack_access_key| bucket_password|bucketeer_aws_access_key_id|bucketeer_aws_secret_access_key|built_branch_deploy_key|bx_password|cache_driver| cache_s3_secret_key|cattle_access_key|cattle_secret_key|certificate_password|ci_deploy_password|client_secret| client_zpk_secret_key|clojars_password|cloud_api_key|cloud_watch_aws_access_key|cloudant_password| cloudflare_api_key|cloudflare_auth_key|cloudinary_api_secret|cloudinary_name|codecov_token|conn.login| connectionstring|consumer_key|consumer_secret|credentials|cypress_record_key|database_password|database_schema_test| datadog_api_key|datadog_app_key|db_password|db_server|db_username|dbpasswd|dbpassword|dbuser|deploy_password| digitalocean_ssh_key_body|digitalocean_ssh_key_ids|docker_hub_password|docker_key|docker_pass|docker_passwd| docker_password|dockerhub_password|dockerhubpassword|dot-files|dotfiles|droplet_travis_password|dynamoaccesskeyid| dynamosecretaccesskey|elastica_host|elastica_port|elasticsearch_password|encryption_key|encryption_password| env.heroku_api_key|env.sonatype_password|eureka.awssecretkey)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9a-zA-Z_=\-]{8,64})['""]") -$regexSearch.add("Usernames","username.*[=:].+") -$regexSearch.add("Net user add","net user .+ /add") -$regexSearch.add("IPs","(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)") -$regexSearch.add("Emails","[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}") +$regexSearch.add("Apr1 MD5", '\$apr1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}') +$regexSearch.add("Apache SHA", "\{SHA\}[0-9a-zA-Z/_=]{10,}") +$regexSearch.add("Blowfish", '\$2[abxyz]?\$[0-9]{2}\$[a-zA-Z0-9_/\.]*') +$regexSearch.add("Drupal", '\$S\$[a-zA-Z0-9_/\.]{52}') +$regexSearch.add("Joomlavbulletin", "[0-9a-zA-Z]{32}:[a-zA-Z0-9_]{16,32}") +$regexSearch.add("Linux MD5", '\$1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}') +$regexSearch.add("phpbb3", '\$H\$[a-zA-Z0-9_/\.]{31}') +$regexSearch.add("sha512crypt", '\$6\$[a-zA-Z0-9_/\.]{16}\$[a-zA-Z0-9_/\.]{86}') +$regexSearch.add("Wordpress", '\$P\$[a-zA-Z0-9_/\.]{31}') +$regexSearch.add("md5", "(^|[^a-zA-Z0-9])[a-fA-F0-9]{32}([^a-zA-Z0-9]|$)") +$regexSearch.add("sha1", "(^|[^a-zA-Z0-9])[a-fA-F0-9]{40}([^a-zA-Z0-9]|$)") +$regexSearch.add("sha256", "(^|[^a-zA-Z0-9])[a-fA-F0-9]{64}([^a-zA-Z0-9]|$)") +$regexSearch.add("sha512", "(^|[^a-zA-Z0-9])[a-fA-F0-9]{128}([^a-zA-Z0-9]|$)") +$regexSearch.add("Artifactory API Token", "AKC[a-zA-Z0-9]{10,}") +$regexSearch.add("Artifactory Password", "AP[0-9ABCDEF][a-zA-Z0-9]{8,}") +$regexSearch.add("Authorization Basic", "basic [a-zA-Z0-9_:\.=\-]+") +$regexSearch.add("Authorization Bearer", "bearer [a-zA-Z0-9_\.=\-]+") +$regexSearch.add("Adafruit API Key", "([a-z0-9_-]{32})") +$regexSearch.add("Adobe Client Id (Oauth Web)", "(adobe[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{32})['""]") +$regexSearch.add("Abode Client Secret", "(p8e-)[a-z0-9]{32}") +$regexSearch.add("Age Secret Key", "AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}") +$regexSearch.add("Airtable API Key", "([a-z0-9]{17})") +$regexSearch.add("Alchemi API Key", "(alchemi[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9-]{32})['""]") +$regexSearch.add("Alibaba Access Key ID", "(LTAI)[a-z0-9]{20}") +$regexSearch.add("Alibaba Secret Key", "(alibaba[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{30})['""]") +$regexSearch.add("Artifactory API Key & Password", "[""']AKC[a-zA-Z0-9]{10,}[""']|[""']AP[0-9ABCDEF][a-zA-Z0-9]{8,}[""']") +$regexSearch.add("Asana Client ID", "((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9]{16})['""])|((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""])") +$regexSearch.add("Atlassian API Key", "(atlassian[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{24})['""]") +$regexSearch.add("AWS Client ID", "(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}") +$regexSearch.add("AWS MWS Key", "amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}") +$regexSearch.add("AWS Secret Key", "aws(.{0,20})?['""][0-9a-zA-Z\/+]{40}['""]") +$regexSearch.add("AWS AppSync GraphQL Key", "da2-[a-z0-9]{26}") +$regexSearch.add("Base32", "(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?") +$regexSearch.add("Base64", "(eyJ|YTo|Tzo|PD[89]|aHR0cHM6L|aHR0cDo|rO0)[a-zA-Z0-9+/]+={0,2}") +$regexSearch.add("Basic Auth Credentials", "://[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+") +$regexSearch.add("Beamer Client Secret", "(beamer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""](b_[a-z0-9=_\-]{44})['""]") +$regexSearch.add("Binance API Key", "(binance[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{64})['""]") +$regexSearch.add("Bitbucket Client Id", "((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""])") +$regexSearch.add("Bitbucket Client Secret", "((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9_\-]{64})['""])") +$regexSearch.add("BitcoinAverage API Key", "(bitcoin.?average[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{43})['""]") +$regexSearch.add("Bitquery API Key", "(bitquery[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Za-z0-9]{32})['""]") +$regexSearch.add("Bittrex Access Key and Access Key", "([a-z0-9]{32})") +$regexSearch.add("Birise API Key", "(bitrise[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9_\-]{86})['""]") +$regexSearch.add("Block API Key", "(block[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4})['""]") +$regexSearch.add("Blockchain API Key", "mainnet[a-zA-Z0-9]{32}|testnet[a-zA-Z0-9]{32}|ipfs[a-zA-Z0-9]{32}") +$regexSearch.add("Blockfrost API Key", "(blockchain[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[0-9a-f]{12})['""]") +$regexSearch.add("Box API Key", "(box[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{32})['""]") +$regexSearch.add("Bravenewcoin API Key", "(bravenewcoin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{50})['""]") +$regexSearch.add("Clearbit API Key", "sk_[a-z0-9]{32}") +$regexSearch.add("Clojars API Key", "(CLOJARS_)[a-zA-Z0-9]{60}") +$regexSearch.add("Cloudinary Basic Auth", "cloudinary://[0-9]{15}:[0-9A-Za-z]+@[a-z]+") +$regexSearch.add("Coinbase Access Token", "([a-z0-9_-]{64})") +$regexSearch.add("Coinlayer API Key", "(coinlayer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") +$regexSearch.add("Coinlib API Key", "(coinlib[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{16})['""]") +$regexSearch.add("Confluent Access Token & Secret Key", "([a-z0-9]{16})") +$regexSearch.add("Contentful delivery API Key", "(contentful[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9=_\-]{43})['""]") +$regexSearch.add("Covalent API Key", "ckey_[a-z0-9]{27}") +$regexSearch.add("Charity Search API Key", "(charity.?search[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") +$regexSearch.add("Databricks API Key", "dapi[a-h0-9]{32}") +$regexSearch.add("DDownload API Key", "(ddownload[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{22})['""]") +$regexSearch.add("Defined Networking API token", "(dnkey-[a-z0-9=_\-]{26}-[a-z0-9=_\-]{52})") +$regexSearch.add("Discord API Key, Client ID & Client Secret", "((discord[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-h0-9]{64}|[0-9]{18}|[a-z0-9=_\-]{32})['""])") +$regexSearch.add("Droneci Access Token", "([a-z0-9]{32})") +$regexSearch.add("Dropbox API Key", "sl.[a-zA-Z0-9_-]{136}") +$regexSearch.add("Doppler API Key", "(dp\.pt\.)[a-zA-Z0-9]{43}") +$regexSearch.add("Dropbox API secret/key, short & long lived API Key", "(dropbox[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{15}|sl\.[a-z0-9=_\-]{135}|[a-z0-9]{11}(AAAAAAAAAA)[a-z0-9_=\-]{43})['""]") +$regexSearch.add("Duffel API Key", "duffel_(test|live)_[a-zA-Z0-9_-]{43}") +$regexSearch.add("Dynatrace API Key", "dt0c01\.[a-zA-Z0-9]{24}\.[a-z0-9]{64}") +$regexSearch.add("EasyPost API Key", "EZAK[a-zA-Z0-9]{54}") +$regexSearch.add("EasyPost test API Key", "EZTK[a-zA-Z0-9]{54}") +$regexSearch.add("Etherscan API Key", "(etherscan[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Z0-9]{34})['""]") +$regexSearch.add("Etsy Access Token", "([a-z0-9]{24})") +$regexSearch.add("Facebook Access Token", "EAACEdEose0cBA[0-9A-Za-z]+") +$regexSearch.add("Facebook Client ID", "([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['""][0-9]{13,17}") +$regexSearch.add("Facebook Oauth", "[fF][aA][cC][eE][bB][oO][oO][kK].*['|""][0-9a-f]{32}['|""]") +$regexSearch.add("Facebook Secret Key", "([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['""][0-9a-f]{32}") +$regexSearch.add("Fastly API Key", "(fastly[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9=_\-]{32})['""]") +$regexSearch.add("Finicity API Key & Client Secret", "(finicity[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{32}|[a-z0-9]{20})['""]") +$regexSearch.add("Flickr Access Token", "([a-z0-9]{32})") +$regexSearch.add("Flutterweave Keys", "FLWPUBK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST[a-hA-H0-9]{12}") +$regexSearch.add("Frame.io API Key", "fio-u-[a-zA-Z0-9_=\-]{64}") +$regexSearch.add("Freshbooks Access Token", "([a-z0-9]{64})") +$regexSearch.add("Github", "github(.{0,20})?['""][0-9a-zA-Z]{35,40}") +$regexSearch.add("Github App Token", "(ghu|ghs)_[0-9a-zA-Z]{36}") +$regexSearch.add("Github OAuth Access Token", "gho_[0-9a-zA-Z]{36}") +$regexSearch.add("Github Personal Access Token", "ghp_[0-9a-zA-Z]{36}") +$regexSearch.add("Github Refresh Token", "ghr_[0-9a-zA-Z]{76}") +$regexSearch.add("GitHub Fine-Grained Personal Access Token", "github_pat_[0-9a-zA-Z_]{82}") +$regexSearch.add("Gitlab Personal Access Token", "glpat-[0-9a-zA-Z\-]{20}") +$regexSearch.add("GitLab Pipeline Trigger Token", "glptt-[0-9a-f]{40}") +$regexSearch.add("GitLab Runner Registration Token", "GR1348941[0-9a-zA-Z_\-]{20}") +$regexSearch.add("Gitter Access Token", "([a-z0-9_-]{40})") +$regexSearch.add("GoCardless API Key", "live_[a-zA-Z0-9_=\-]{40}") +$regexSearch.add("GoFile API Key", "(gofile[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{32})['""]") +$regexSearch.add("Google API Key", "AIza[0-9A-Za-z_\-]{35}") +$regexSearch.add("Google Cloud Platform API Key", "(google|gcp|youtube|drive|yt)(.{0,20})?['""][AIza[0-9a-z_\-]{35}]['""]") +$regexSearch.add("Google Drive Oauth", "[0-9]+-[0-9A-Za-z_]{32}\.apps\.googleusercontent\.com") +$regexSearch.add("Google Oauth Access Token", "ya29\.[0-9A-Za-z_\-]+") +$regexSearch.add("Google (GCP) Service-account", """type.+:.+""service_account") +$regexSearch.add("Grafana API Key", "eyJrIjoi[a-z0-9_=\-]{72,92}") +$regexSearch.add("Grafana cloud api token", "glc_[A-Za-z0-9\+/]{32,}={0,2}") +$regexSearch.add("Grafana service account token", "(glsa_[A-Za-z0-9]{32}_[A-Fa-f0-9]{8})") +$regexSearch.add("Hashicorp Terraform user/org API Key", "[a-z0-9]{14}\.atlasv1\.[a-z0-9_=\-]{60,70}") +$regexSearch.add("Heroku API Key", "[hH][eE][rR][oO][kK][uU].{0,30}[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}") +$regexSearch.add("Hubspot API Key", "['""][a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12}['""]") +$regexSearch.add("Instatus API Key", "(instatus[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") +$regexSearch.add("Intercom API Key & Client Secret/ID", "(intercom[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9=_]{60}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['""]") +$regexSearch.add("Ionic API Key", "(ionic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""](ion_[a-z0-9]{42})['""]") +$regexSearch.add("Jenkins Creds", "<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<") +$regexSearch.add("JSON Web Token", "(ey[0-9a-z]{30,34}\.ey[0-9a-z\/_\-]{30,}\.[0-9a-zA-Z\/_\-]{10,}={0,2})") +$regexSearch.add("Kraken Access Token", "([a-z0-9\/=_\+\-]{80,90})") +$regexSearch.add("Kucoin Access Token", "([a-f0-9]{24})") +$regexSearch.add("Kucoin Secret Key", "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})") +$regexSearch.add("Launchdarkly Access Token", "([a-z0-9=_\-]{40})") +$regexSearch.add("Linear API Key", "(lin_api_[a-zA-Z0-9]{40})") +$regexSearch.add("Linear Client Secret/ID", "((linear[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-f0-9]{32})['""])") +$regexSearch.add("LinkedIn Client ID", "linkedin(.{0,20})?['""][0-9a-z]{12}['""]") +$regexSearch.add("LinkedIn Secret Key", "linkedin(.{0,20})?['""][0-9a-z]{16}['""]") +$regexSearch.add("Lob API Key", "((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]((live|test)_[a-f0-9]{35})['""])|((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]((test|live)_pub_[a-f0-9]{31})['""])") +$regexSearch.add("Lob Publishable API Key", "((test|live)_pub_[a-f0-9]{31})") +$regexSearch.add("MailboxValidator", "(mailbox.?validator[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Z0-9]{20})['""]") +$regexSearch.add("Mailchimp API Key", "[0-9a-f]{32}-us[0-9]{1,2}") +$regexSearch.add("Mailgun API Key", "key-[0-9a-zA-Z]{32}'") +$regexSearch.add("Mailgun Public Validation Key", "pubkey-[a-f0-9]{32}") +$regexSearch.add("Mailgun Webhook signing key", "[a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8}") +$regexSearch.add("Mapbox API Key", "(pk\.[a-z0-9]{60}\.[a-z0-9]{22})") +$regexSearch.add("Mattermost Access Token", "([a-z0-9]{26})") +$regexSearch.add("MessageBird API Key & API client ID", "(messagebird[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{25}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['""]") +$regexSearch.add("Microsoft Teams Webhook", "https:\/\/[a-z0-9]+\.webhook\.office\.com\/webhookb2\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}\/IncomingWebhook\/[a-z0-9]{32}\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}") +$regexSearch.add("MojoAuth API Key", "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}") +$regexSearch.add("Netlify Access Token", "([a-z0-9=_\-]{40,46})") +$regexSearch.add("New Relic User API Key, User API ID & Ingest Browser API Key", "(NRAK-[A-Z0-9]{27})|((newrelic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Z0-9]{64})['""])|(NRJS-[a-f0-9]{19})") +$regexSearch.add("Nownodes", "(nownodes[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Za-z0-9]{32})['""]") +$regexSearch.add("Npm Access Token", "(npm_[a-zA-Z0-9]{36})") +$regexSearch.add("Nytimes Access Token", "([a-z0-9=_\-]{32})") +$regexSearch.add("Okta Access Token", "([a-z0-9=_\-]{42})") +$regexSearch.add("OpenAI API Token", "sk-[A-Za-z0-9]{48}") +$regexSearch.add("ORB Intelligence Access Key", "['""][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['""]") +$regexSearch.add("Pastebin API Key", "(pastebin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{32})['""]") +$regexSearch.add("PayPal Braintree Access Token", 'access_token\$production\$[0-9a-z]{16}\$[0-9a-f]{32}') +$regexSearch.add("Picatic API Key", "sk_live_[0-9a-z]{32}") +$regexSearch.add("Pinata API Key", "(pinata[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{64})['""]") +$regexSearch.add("Planetscale API Key", "pscale_tkn_[a-zA-Z0-9_\.\-]{43}") +$regexSearch.add("PlanetScale OAuth token", "(pscale_oauth_[a-zA-Z0-9_\.\-]{32,64})") +$regexSearch.add("Planetscale Password", "pscale_pw_[a-zA-Z0-9_\.\-]{43}") +$regexSearch.add("Plaid API Token", "(access-(?:sandbox|development|production)-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})") +$regexSearch.add("Plaid Client ID", "([a-z0-9]{24})") +$regexSearch.add("Plaid Secret key", "([a-z0-9]{30})") +$regexSearch.add("Prefect API token", "(pnu_[a-z0-9]{36})") +$regexSearch.add("Postman API Key", "PMAK-[a-fA-F0-9]{24}-[a-fA-F0-9]{34}") +$regexSearch.add("Private Keys", "\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN OPENSSH PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN PGP PRIVATE KEY BLOCK\-\-\-\-\-|\-\-\-\-\-BEGIN DSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN EC PRIVATE KEY\-\-\-\-\-") +$regexSearch.add("Pulumi API Key", "pul-[a-f0-9]{40}") +$regexSearch.add("PyPI upload token", "pypi-AgEIcHlwaS5vcmc[A-Za-z0-9_\-]{50,}") +$regexSearch.add("Quip API Key", "(quip[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-zA-Z0-9]{15}=\|[0-9]{10}\|[a-zA-Z0-9\/+]{43}=)['""]") +$regexSearch.add("RapidAPI Access Token", "([a-z0-9_-]{50})") +$regexSearch.add("Rubygem API Key", "rubygems_[a-f0-9]{48}") +$regexSearch.add("Readme API token", "rdme_[a-z0-9]{70}") +$regexSearch.add("Sendbird Access ID", "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})") +$regexSearch.add("Sendbird Access Token", "([a-f0-9]{40})") +$regexSearch.add("Sendgrid API Key", "SG\.[a-zA-Z0-9_\.\-]{66}") +$regexSearch.add("Sendinblue API Key", "xkeysib-[a-f0-9]{64}-[a-zA-Z0-9]{16}") +$regexSearch.add("Sentry Access Token", "([a-f0-9]{64})") +$regexSearch.add("Shippo API Key, Access Token, Custom Access Token, Private App Access Token & Shared Secret", "shippo_(live|test)_[a-f0-9]{40}|shpat_[a-fA-F0-9]{32}|shpca_[a-fA-F0-9]{32}|shppa_[a-fA-F0-9]{32}|shpss_[a-fA-F0-9]{32}") +$regexSearch.add("Sidekiq Secret", "([a-f0-9]{8}:[a-f0-9]{8})") +$regexSearch.add("Sidekiq Sensitive URL", "([a-f0-9]{8}:[a-f0-9]{8})@(?:gems.contribsys.com|enterprise.contribsys.com)") +$regexSearch.add("Slack Token", "xox[baprs]-([0-9a-zA-Z]{10,48})?") +$regexSearch.add("Slack Webhook", "https://hooks.slack.com/services/T[a-zA-Z0-9_]{10}/B[a-zA-Z0-9_]{10}/[a-zA-Z0-9_]{24}") +$regexSearch.add("Smarksheel API Key", "(smartsheet[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{26})['""]") +$regexSearch.add("Square Access Token", "sqOatp-[0-9A-Za-z_\-]{22}") +$regexSearch.add("Square API Key", "EAAAE[a-zA-Z0-9_-]{59}") +$regexSearch.add("Square Oauth Secret", "sq0csp-[ 0-9A-Za-z_\-]{43}") +$regexSearch.add("Stytch API Key", "secret-.*-[a-zA-Z0-9_=\-]{36}") +$regexSearch.add("Stripe Access Token & API Key", "(sk|pk)_(test|live)_[0-9a-z]{10,32}|k_live_[0-9a-zA-Z]{24}") +$regexSearch.add("SumoLogic Access ID", "([a-z0-9]{14})") +$regexSearch.add("SumoLogic Access Token", "([a-z0-9]{64})") +$regexSearch.add("Telegram Bot API Token", "[0-9]+:AA[0-9A-Za-z\\-_]{33}") +$regexSearch.add("Travis CI Access Token", "([a-z0-9]{22})") +$regexSearch.add("Trello API Key", "(trello[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9a-z]{32})['""]") +$regexSearch.add("Twilio API Key", "SK[0-9a-fA-F]{32}") +$regexSearch.add("Twitch API Key", "(twitch[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([a-z0-9]{30})['""]") +$regexSearch.add("Twitter Client ID", "[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['""][0-9a-z]{18,25}") +$regexSearch.add("Twitter Bearer Token", "(A{22}[a-zA-Z0-9%]{80,100})") +$regexSearch.add("Twitter Oauth", "[tT][wW][iI][tT][tT][eE][rR].{0,30}['""\\s][0-9a-zA-Z]{35,44}['""\\s]") +$regexSearch.add("Twitter Secret Key", "[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['""][0-9a-z]{35,44}") +$regexSearch.add("Typeform API Key", "tfp_[a-z0-9_\.=\-]{59}") +$regexSearch.add("URLScan API Key", "['""][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['""]") +$regexSearch.add("Vault Token", "[sb]\.[a-zA-Z0-9]{24}") +$regexSearch.add("Yandex Access Token", "(t1\.[A-Z0-9a-z_-]+[=]{0,2}\.[A-Z0-9a-z_-]{86}[=]{0,2})") +$regexSearch.add("Yandex API Key", "(AQVN[A-Za-z0-9_\-]{35,38})") +$regexSearch.add("Yandex AWS Access Token", "(YC[a-zA-Z0-9_\-]{38})") +$regexSearch.add("Web3 API Key", "(web3[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([A-Za-z0-9_=\-]+\.[A-Za-z0-9_=\-]+\.?[A-Za-z0-9_.+/=\-]*)['""]") +$regexSearch.add("Zendesk Secret Key", "([a-z0-9]{40})") +$regexSearch.add("Generic API Key", "((key|api|token|secret|password)[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9a-zA-Z_=\-]{8,64})['""]") +$regexSearch.add("Generic Secret", "[sS][eE][cC][rR][eE][tT].*['""][0-9a-zA-Z]{32,45}['""]") +$regexSearch.add("Basic Auth", "//(.+):(.+)@") +$regexSearch.add("PHP Passwords", "(pwd|passwd|password|PASSWD|PASSWORD|dbuser|dbpass|pass').*[=:].+|define ?\('(\w*pass|\w*pwd|\w*user|\w*datab)") +$regexSearch.add("Config Secrets", "passwd.*|creden.*|^kind:[^a-zA-Z0-9_]?Secret|[^a-zA-Z0-9_]env:|secret:|secretName:|^kind:[^a-zA-Z0-9_]?EncryptionConfiguration|\-\-encryption\-provider\-config") +$regexSearch.add("Simple Passwords", "passw.*[=:].+") +$regexSearch.add("Generiac API tokens search", "(access_key|access_token|admin_pass|admin_user|algolia_admin_key|algolia_api_key|alias_pass|alicloud_access_key| amazon_secret_access_key|amazonaws|ansible_vault_password|aos_key|api_key|api_key_secret|api_key_sid|api_secret| api.googlemaps AIza|apidocs|apikey|apiSecret|app_debug|app_id|app_key|app_log_level|app_secret|appkey|appkeysecret| application_key|appsecret|appspot|auth_token|authorizationToken|authsecret|aws_access|aws_access_key_id|aws_bucket| aws_key|aws_secret|aws_secret_key|aws_token|AWSSecretKey|b2_app_key|bashrc password| bintray_apikey|bintray_gpg_password|bintray_key|bintraykey|bluemix_api_key|bluemix_pass|browserstack_access_key| bucket_password|bucketeer_aws_access_key_id|bucketeer_aws_secret_access_key|built_branch_deploy_key|bx_password|cache_driver| cache_s3_secret_key|cattle_access_key|cattle_secret_key|certificate_password|ci_deploy_password|client_secret| client_zpk_secret_key|clojars_password|cloud_api_key|cloud_watch_aws_access_key|cloudant_password| cloudflare_api_key|cloudflare_auth_key|cloudinary_api_secret|cloudinary_name|codecov_token|conn.login| connectionstring|consumer_key|consumer_secret|credentials|cypress_record_key|database_password|database_schema_test| datadog_api_key|datadog_app_key|db_password|db_server|db_username|dbpasswd|dbpassword|dbuser|deploy_password| digitalocean_ssh_key_body|digitalocean_ssh_key_ids|docker_hub_password|docker_key|docker_pass|docker_passwd| docker_password|dockerhub_password|dockerhubpassword|dot-files|dotfiles|droplet_travis_password|dynamoaccesskeyid| dynamosecretaccesskey|elastica_host|elastica_port|elasticsearch_password|encryption_key|encryption_password| env.heroku_api_key|env.sonatype_password|eureka.awssecretkey)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['""]([0-9a-zA-Z_=\-]{8,64})['""]") +$regexSearch.add("Usernames", "username.*[=:].+") +$regexSearch.add("Net user add", "net user .+ /add") +$regexSearch.add("IPs", "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)") +$regexSearch.add("Emails", "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}") ######################## INTRODUCTION ######################## $stopwatch = [system.diagnostics.stopwatch]::StartNew() @@ -385,7 +385,7 @@ Write-Host "You can find a Windows local PE Checklist here: https://book.hacktri ######################## SYSTEM INFORMATION ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host "====================================||SYSTEM INFORMATION ||====================================" "The following information is curated. To get a full list of system information, run the cmdlet get-computerinfo" @@ -395,7 +395,7 @@ systeminfo.exe #Hotfixes installed sorted by date Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| WINDOWS HOTFIXES" Write-Host "=| Check if windows is vulnerable with Watson https://github.com/rasta-mouse/Watson" -ForegroundColor Yellow Write-Host "Possible exploits (https://github.com/codingo/OSCP-2/blob/master/Windows/WinPrivCheck.bat)" -ForegroundColor Yellow @@ -405,7 +405,7 @@ $Hotfix | Format-Table -AutoSize #Show all unique updates installed Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| ALL UPDATES INSTALLED" @@ -467,7 +467,7 @@ $FinalHotfixList | Format-Table -AutoSize Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Drive Info" # Load the System.Management assembly Add-Type -AssemblyName System.Management @@ -494,25 +494,25 @@ foreach ($drive in $systemDrives) { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Antivirus Detection (attemping to read exclusions as well)" WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName Get-ChildItem 'registry::HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions' -ErrorAction SilentlyContinue Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| NET ACCOUNTS Info" net accounts ######################## REGISTRY SETTING CHECK ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| REGISTRY SETTINGS CHECK" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Audit Log Settings" #Check audit registry if ((Test-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit\).Property) { @@ -524,7 +524,7 @@ else { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Windows Event Forward (WEF) registry" if (Test-Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager) { Get-Item HKLM:\SOFTWARE\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager @@ -535,7 +535,7 @@ else { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| LAPS Check" if (Test-Path 'C:\Program Files\LAPS\CSE\Admpwd.dll') { Write-Host "LAPS dll found on this machine at C:\Program Files\LAPS\CSE\" -ForegroundColor Green } elseif (Test-Path 'C:\Program Files (x86)\LAPS\CSE\Admpwd.dll' ) { Write-Host "LAPS dll found on this machine at C:\Program Files (x86)\LAPS\CSE\" -ForegroundColor Green } @@ -544,7 +544,7 @@ if ((Get-ItemProperty HKLM:\Software\Policies\Microsoft Services\AdmPwd -ErrorAc Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| WDigest Check" $WDigest = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest).UseLogonCredential switch ($WDigest) { @@ -555,7 +555,7 @@ switch ($WDigest) { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| LSA Protection Check" $RunAsPPL = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\LSA).RunAsPPL $RunAsPPLBoot = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\LSA).RunAsPPLBoot @@ -569,7 +569,7 @@ if ($RunAsPPLBoot) { Write-Host "RunAsPPLBoot: $RunAsPPLBoot" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Credential Guard Check" $LsaCfgFlags = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\LSA).LsaCfgFlags switch ($LsaCfgFlags) { @@ -581,7 +581,7 @@ switch ($LsaCfgFlags) { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Cached WinLogon Credentials Check" if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon") { (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name "CACHEDLOGONSCOUNT").CACHEDLOGONSCOUNT @@ -590,7 +590,7 @@ if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon") { } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Additonal Winlogon Credentials Check" (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon").DefaultDomainName @@ -602,17 +602,17 @@ Write-Host -ForegroundColor Blue "=========|| Additonal Winlogon Credentials Che Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| RDCMan Settings Check" if (Test-Path "$env:USERPROFILE\appdata\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings") { Write-Host "RDCMan Settings Found at: $($env:USERPROFILE)\appdata\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings" -ForegroundColor Red } -else { write-host "No RCDMan.Settings found." } +else { Write-Host "No RCDMan.Settings found." } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| RDP Saved Connections Check" Write-Host "HK_Users" @@ -620,20 +620,20 @@ New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS Get-ChildItem HKU:\ -ErrorAction SilentlyContinue | ForEach-Object { # get the SID from output $HKUSID = $_.Name.Replace('HKEY_USERS\', "") - if (test-path "registry::HKEY_USERS\$HKUSID\Software\Microsoft\Terminal Server Client\Default") { - Write-Host "Server Found: $((Get-ItemProperty "registry::HKEY_USERS\$HKUSID\Software\Microsoft\Terminal Server Client\Default" -name MRU0).MRU0)" + if (Test-Path "registry::HKEY_USERS\$HKUSID\Software\Microsoft\Terminal Server Client\Default") { + Write-Host "Server Found: $((Get-ItemProperty "registry::HKEY_USERS\$HKUSID\Software\Microsoft\Terminal Server Client\Default" -Name MRU0).MRU0)" } else { Write-Host "Not found for $($_.Name)" } } Write-Host "HKCU" -if (test-path "registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default") { - write-host "Server Found: $((Get-ItemProperty "registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" -name MRU0).MRU0)" +if (Test-Path "registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default") { + Write-Host "Server Found: $((Get-ItemProperty "registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" -Name MRU0).MRU0)" } else { Write-Host "Terminal Server Client not found in HCKU" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Putty Stored Credentials Check" if (Test-Path HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions) { @@ -641,56 +641,56 @@ if (Test-Path HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions) { $RegKeyName = Split-Path $_.Name -Leaf Write-Host "Key: $RegKeyName" @("HostName", "PortNumber", "UserName", "PublicKeyFile", "PortForwardings", "ConnectionSharing", "ProxyUsername", "ProxyPassword") | ForEach-Object { - write-host "$_ :" - write-host "$((Get-ItemProperty HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions\$RegKeyName).$_)" + Write-Host "$_ :" + Write-Host "$((Get-ItemProperty HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions\$RegKeyName).$_)" } } } -else { write-host "No putty credentials found in HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions" } +else { Write-Host "No putty credentials found in HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| SSH Key Checks" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| If found:" -Write-host "https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/" -ForegroundColor Yellow +Write-Host "https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/" -ForegroundColor Yellow Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking Putty SSH KNOWN HOSTS" if (Test-Path HKCU:\Software\SimonTatham\PuTTY\SshHostKeys) { - write-host "$((Get-Item -path HKCU:\Software\SimonTatham\PuTTY\SshHostKeys).Property)" + Write-Host "$((Get-Item -Path HKCU:\Software\SimonTatham\PuTTY\SshHostKeys).Property)" } -else { Write-host "No putty ssh keys found" } +else { Write-Host "No putty ssh keys found" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for OpenSSH Keys" if (Test-Path HKCU:\Software\OpenSSH\Agent\Keys) { Write-Host "OpenSSH keys found. Try this for decryption: https://github.com/ropnop/windows_sshagent_extract" -ForegroundColor Yellow } else { Write-Host "No OpenSSH Keys found." } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for WinVNC Passwords" -if ( Test-Path "HKCU:\Software\ORL\WinVNC3\Password") { Write-host " WinVNC found at HKCU:\Software\ORL\WinVNC3\Password" }else { Write-Host "No WinVNC found." } +if ( Test-Path "HKCU:\Software\ORL\WinVNC3\Password") { Write-Host " WinVNC found at HKCU:\Software\ORL\WinVNC3\Password" }else { Write-Host "No WinVNC found." } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for SNMP Passwords" -if ( Test-Path "HKLM:\SYSTEM\CurrentControlSet\Services\SNMP" ) { Write-host "SNPM Key found at HKLM:\SYSTEM\CurrentControlSet\Services\SNMP" }else { Write-host "No SNPM found." } +if ( Test-Path "HKLM:\SYSTEM\CurrentControlSet\Services\SNMP" ) { Write-Host "SNPM Key found at HKLM:\SYSTEM\CurrentControlSet\Services\SNMP" }else { Write-Host "No SNPM found." } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for TightVNC Passwords" -if ( Test-Path "HKCU:\Software\TightVNC\Server") { write-host "TightVNC key found at HKCU:\Software\TightVNC\Server" }else { write-host "No TightVNC found." } +if ( Test-Path "HKCU:\Software\TightVNC\Server") { Write-Host "TightVNC key found at HKCU:\Software\TightVNC\Server" }else { Write-Host "No TightVNC found." } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| UAC Settings" if ((Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).EnableLUA -eq 1) { Write-Host "EnableLUA is equal to 1. Part or all of the UAC components are on." @@ -700,7 +700,7 @@ else { Write-Host "EnableLUA value not equal to 1" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Recently Run Commands (WIN+R)" Get-ChildItem HKU:\ -ErrorAction SilentlyContinue | ForEach-Object { @@ -708,7 +708,7 @@ Get-ChildItem HKU:\ -ErrorAction SilentlyContinue | ForEach-Object { $HKUSID = $_.Name.Replace('HKEY_USERS\', "") $property = (Get-Item "HKU:\$_\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -ErrorAction SilentlyContinue).Property $HKUSID | ForEach-Object { - if (test-path "HKU:\$_\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU") { + if (Test-Path "HKU:\$_\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU") { Write-Host -ForegroundColor Blue "=========||HKU Recently Run Commands" foreach ($p in $property) { Write-Host "$((Get-Item "HKU:\$_\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"-ErrorAction SilentlyContinue).getValue($p))" @@ -718,7 +718,7 @@ Get-ChildItem HKU:\ -ErrorAction SilentlyContinue | ForEach-Object { } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========||HKCU Recently Run Commands" $property = (Get-Item "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -ErrorAction SilentlyContinue).Property foreach ($p in $property) { @@ -726,7 +726,7 @@ foreach ($p in $property) { } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Always Install Elevated Check" Write-Host "Checking Windows Installer Registry (will populate if the key exists)" @@ -744,7 +744,7 @@ if ((Get-ItemProperty HKCU:\SOFTWARE\Policies\Microsoft\Windows\Installer -Error Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| PowerShell Info" (Get-ItemProperty registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine).PowerShellVersion | ForEach-Object { @@ -756,7 +756,7 @@ Write-Host -ForegroundColor Blue "=========|| PowerShell Info" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| PowerShell Registry Transcript Check" if (Test-Path HKCU:\Software\Policies\Microsoft\Windows\PowerShell\Transcription) { @@ -774,7 +774,7 @@ if (Test-Path HKLM:\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\T Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| PowerShell Module Log Check" if (Test-Path HKCU:\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging) { Get-Item HKCU:\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging @@ -791,7 +791,7 @@ if (Test-Path HKLM:\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\M Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| PowerShell Script Block Log Check" if ( Test-Path HKCU:\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging) { @@ -809,7 +809,7 @@ if ( Test-Path HKLM:\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| WSUS check for http and UseWAServer = 1, if true, might be vulnerable to exploit" Write-Host "https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#wsus" -ForegroundColor Yellow if (Test-Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate) { @@ -821,7 +821,7 @@ if ((Get-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Internet Settings HKCU / HKLM" $property = (Get-Item "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -ErrorAction SilentlyContinue).Property @@ -838,26 +838,26 @@ foreach ($p in $property) { ######################## PROCESS INFORMATION ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| RUNNING PROCESSES" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking user permissions on running processes" Get-Process | Select-Object Path -Unique | ForEach-Object { Start-ACLCheck -Target $_.path } #TODO, vulnerable system process running that we have access to. Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| System processes" -Start-process tasklist -argumentList '/v /fi "username eq system"' -wait -NoNewWindow +Start-Process tasklist -ArgumentList '/v /fi "username eq system"' -Wait -NoNewWindow ######################## SERVICES ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| SERVICE path vulnerable check" Write-Host "Checking for vulnerable service .exe" # Gathers all services running and stopped, based on .exe and shows the AccessControlList @@ -873,7 +873,7 @@ foreach ( $h in ($UniqueServices | Select-Object -Unique).GetEnumerator()) { ######################## UNQUOTED SERVICE PATH CHECK ############ Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for Unquoted Service Paths" # All credit to Ivan-Sincek # https://github.com/ivan-sincek/unquoted-service-paths/blob/master/src/unquoted_service_paths_mini.ps1 @@ -883,9 +883,9 @@ UnquotedServicePathCheck ######################## REGISTRY SERVICE CONFIGURATION CHECK ### Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking Service Registry Permissions" -Write-host "This will take some time." +Write-Host "This will take some time." Get-ChildItem 'HKLM:\System\CurrentControlSet\services\' | ForEach-Object { $target = $_.Name.Replace("HKEY_LOCAL_MACHINE", "hklm:") @@ -895,12 +895,12 @@ Get-ChildItem 'HKLM:\System\CurrentControlSet\services\' | ForEach-Object { ######################## SCHEDULED TASKS ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| SCHEDULED TASKS vulnerable check" #Scheduled tasks audit Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Testing access to c:\windows\system32\tasks" if (Get-ChildItem "c:\windows\system32\tasks" -ErrorAction SilentlyContinue) { Write-Host "Access confirmed, may need futher investigation" @@ -918,7 +918,7 @@ else { elseif ($a -like "%appdata%*") { $a = $a.replace("%localappdata%", $env:Appdata) } $a = $a.Replace('"', '') Start-ACLCheck -Target $a - Write-host "`n" + Write-Host "`n" Write-Host "TaskName: $($_.TaskName)" Write-Host "-------------" [pscustomobject]@{ @@ -927,7 +927,7 @@ else { Status = $_.State Command = $_.Actions.execute Arguments = $_.Actions.Arguments - } | write-host + } | Write-Host } } } @@ -936,7 +936,7 @@ else { ######################## STARTUP APPLIICATIONS ######################### Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| STARTUP APPLICATIONS Vulnerable Check" "Check if you can modify any binary that is going to be executed by admin or if you can impersonate a not found binary" Write-Host "https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#run-at-startup" -ForegroundColor Yellow @@ -950,14 +950,14 @@ Write-Host "https://book.hacktricks.xyz/windows-hardening/windows-local-privileg Start-ACLCheck $_ Get-ChildItem -Recurse -Force -Path $_ | ForEach-Object { $SubItem = $_.FullName - if (test-path $SubItem) { + if (Test-Path $SubItem) { Start-ACLCheck -Target $SubItem } } } } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| STARTUP APPS Registry Check" @("registry::HKLM\Software\Microsoft\Windows\CurrentVersion\Run", @@ -979,7 +979,7 @@ Write-Host -ForegroundColor Blue "=========|| STARTUP APPS Registry Check" ######################## INSTALLED APPLICATIONS ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| INSTALLED APPLICATIONS" Write-Host "Generating list of installed applications" @@ -990,7 +990,7 @@ ForEach-Object { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| LOOKING FOR BASH.EXE" Get-ChildItem C:\Windows\WinSxS\ -Filter "amd64_microsoft-windows-lxss-bash*" | ForEach-Object { Write-Host $((Get-ChildItem $_.FullName -Recurse -Filter "*bash.exe*").FullName) @@ -999,7 +999,7 @@ Get-ChildItem C:\Windows\WinSxS\ -Filter "amd64_microsoft-windows-lxss-bash*" | Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| LOOKING FOR SCCM CLIENT" $result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * -ErrorAction SilentlyContinue | Select-Object Name, SoftwareVersion if ($result) { $result } @@ -1009,72 +1009,72 @@ else { Write-Host "Not Installed." } ######################## NETWORK INFORMATION ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| NETWORK INFORMATION" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| HOSTS FILE" Write-Host "Get content of etc\hosts file" Get-Content "c:\windows\system32\drivers\etc\hosts" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| IP INFORMATION" # Get all v4 and v6 addresses Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Ipconfig ALL" -start-process ipconfig.exe -ArgumentList "/all" -Wait -NoNewWindow +Start-Process ipconfig.exe -ArgumentList "/all" -Wait -NoNewWindow Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| DNS Cache" -ipconfig /displaydns | select-string "Record" | ForEach-Object { Write-Host $('{0}' -f $_) } +ipconfig /displaydns | Select-String "Record" | ForEach-Object { Write-Host $('{0}' -f $_) } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| LISTENING PORTS" # running netstat as powershell is too slow to print to console -start-process NETSTAT.EXE -argumentList "-ano" -Wait -NoNewWindow +Start-Process NETSTAT.EXE -ArgumentList "-ano" -Wait -NoNewWindow Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| ARP Table" # Arp table info -Start-process arp -argumentList "-A" -Wait -NoNewWindow +Start-Process arp -ArgumentList "-A" -Wait -NoNewWindow Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Routes" # Route info -start-process route -argumentList "print" -Wait -NoNewWindow +Start-Process route -ArgumentList "print" -Wait -NoNewWindow Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Network Adapter info" # Network Adapter info Get-NetAdapter | ForEach-Object { - write-host "----------" - write-host $_.Name - write-host $_.InterfaceDescription - write-host $_.ifIndex - write-host $_.Status - write-host $_.MacAddress - write-host "----------" + Write-Host "----------" + Write-Host $_.Name + Write-Host $_.InterfaceDescription + Write-Host $_.ifIndex + Write-Host $_.Status + Write-Host $_.MacAddress + Write-Host "----------" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for WiFi passwords" # Select all wifi adapters, then pull the SSID along with the password @@ -1084,13 +1084,13 @@ Write-Host -ForegroundColor Blue "=========|| Checking for WiFi passwords" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Enabled firewall rules - displaying command only - it can overwrite the display buffer" Write-Host -ForegroundColor Blue "=========|| show all rules with: netsh advfirewall firewall show rule dir=in name=all" # Route info Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| SMB SHARES" Write-Host "Will enumerate SMB Shares and Access if any are available" @@ -1106,22 +1106,22 @@ Get-SmbShare | Get-SmbShareAccess | ForEach-Object { ######################## USER INFO ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| USER INFO" Write-Host "== || Generating List of all Administrators, Users and Backup Operators (if any exist)" @("ADMINISTRATORS", "USERS") | ForEach-Object { Write-Host $_ Write-Host "-------" - Start-process net -ArgumentList "localgroup $_" -Wait -NoNewWindow + Start-Process net -ArgumentList "localgroup $_" -Wait -NoNewWindow } Write-Host "BACKUP OPERATORS" Write-Host "-------" -start-process net -ArgumentList 'localgroup "Backup Operators"' -wait -NoNewWindow +Start-Process net -ArgumentList 'localgroup "Backup Operators"' -Wait -NoNewWindow Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| USER DIRECTORY ACCESS CHECK" Get-ChildItem C:\Users\* | ForEach-Object { if (Get-ChildItem $_.FullName -ErrorAction SilentlyContinue) { @@ -1131,18 +1131,18 @@ Get-ChildItem C:\Users\* | ForEach-Object { #Whoami Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| WHOAMI INFO" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Check Token access here: https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens" -ForegroundColor yellow Write-Host -ForegroundColor Blue "=========|| Check if you are inside the Administrators group or if you have enabled any token that can be use to escalate privileges like SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebbugPrivilege" Write-Host "https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#users-and-groups" -ForegroundColor Yellow -start-process whoami.exe -ArgumentList "/all" -wait -NoNewWindow +Start-Process whoami.exe -ArgumentList "/all" -Wait -NoNewWindow Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Cloud Credentials Check" $Users = (Get-ChildItem C:\Users).Name $CCreds = @(".aws\credentials", @@ -1159,7 +1159,7 @@ foreach ($u in $users) { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| APPcmd Check" if (Test-Path ("$Env:SystemRoot\System32\inetsrv\appcmd.exe")) { Write-Host "https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#appcmd.exe" -ForegroundColor Yellow @@ -1168,7 +1168,7 @@ if (Test-Path ("$Env:SystemRoot\System32\inetsrv\appcmd.exe")) { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| OpenVPN Credentials Check" $keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs" -ErrorAction SilentlyContinue @@ -1191,7 +1191,7 @@ if ($Keys) { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| PowerShell History (Password Search Only)" Write-Host "=|| PowerShell Console History" @@ -1209,7 +1209,7 @@ if (Test-Path $env:SystemDrive\transcripts\) { "Default transcripts found at $($ # Enumerating Environment Variables Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| ENVIRONMENT VARIABLES " Write-Host "Maybe you can take advantage of modifying/creating a binary in some of the following locations" Write-Host "PATH variable entries permissions - place binary or DLL to execute instead of legitimate" @@ -1219,7 +1219,7 @@ Get-ChildItem env: | Format-Table -Wrap Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Sticky Notes Check" if (Test-Path "C:\Users\$env:USERNAME\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes*\LocalState\plum.sqlite") { Write-Host "Sticky Notes database found. Could have credentials in plain text: " @@ -1229,14 +1229,14 @@ if (Test-Path "C:\Users\$env:USERNAME\AppData\Local\Packages\Microsoft.Microsoft # Check for Cached Credentials # https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/getting-cached-credentials Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Cached Credentials Check" Write-Host "https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#windows-vault" -ForegroundColor Yellow cmdkey.exe /list Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for DPAPI RPC Master Keys" Write-Host "Use the Mimikatz 'dpapi::masterkey' module with appropriate arguments (/rpc) to decrypt" Write-Host "https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#dpapi" -ForegroundColor Yellow @@ -1245,20 +1245,20 @@ $appdataRoaming = "C:\Users\$env:USERNAME\AppData\Roaming\Microsoft\" $appdataLocal = "C:\Users\$env:USERNAME\AppData\Local\Microsoft\" if ( Test-Path "$appdataRoaming\Protect\") { Write-Host "found: $appdataRoaming\Protect\" - Get-ChildItem -Path "$appdataRoaming\Protect\" -Force | foreach-object { + Get-ChildItem -Path "$appdataRoaming\Protect\" -Force | ForEach-Object { Write-Host $_.FullName } } if ( Test-Path "$appdataLocal\Protect\") { Write-Host "found: $appdataLocal\Protect\" - Get-ChildItem -Path "$appdataLocal\Protect\" -Force | foreach-object { - write-host $_.FullName + Get-ChildItem -Path "$appdataLocal\Protect\" -Force | ForEach-Object { + Write-Host $_.FullName } } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Checking for DPAPI Cred Master Keys" Write-Host "Use the Mimikatz 'dpapi::cred' module with appropriate /masterkey to decrypt" Write-Host "You can also extract many DPAPI masterkeys from memory with the Mimikatz 'sekurlsa::dpapi' module" @@ -1273,31 +1273,31 @@ if ( Test-Path "$appdataLocal\Credentials\") { Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Current Logged on Users" try { quser }catch { Write-Host "'quser' command not not present on system" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Remote Sessions" try { qwinsta } catch { Write-Host "'qwinsta' command not present on system" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Kerberos tickets (does require admin to interact)" try { klist } catch { Write-Host "No active sessions" } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Printing ClipBoard (if any)" Get-ClipBoardText ######################## File/Credentials check ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Unattended Files Check" @("C:\Windows\sysprep\sysprep.xml", "C:\Windows\sysprep\sysprep.inf", @@ -1318,7 +1318,7 @@ Write-Host -ForegroundColor Blue "=========|| Unattended Files Check" ######################## GROUP POLICY RELATED CHECKS ######################## Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| SAM / SYSTEM Backup Checks" @( @@ -1335,7 +1335,7 @@ Write-Host -ForegroundColor Blue "=========|| SAM / SYSTEM Backup Checks" Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Group Policy Password Check" $GroupPolicy = @("Groups.xml", "Services.xml", "Scheduledtasks.xml", "DataSources.xml", "Printers.xml", "Drives.xml") @@ -1348,13 +1348,14 @@ if (Test-Path "$env:SystemDrive\Documents and Settings\All Users\Application Dat } Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Recycle Bin TIP:" Write-Host "if credentials are found in the recycle bin, tool from nirsoft may assist: http://www.nirsoft.net/password_recovery_tools.html" -ForegroundColor Yellow Write-Host -ForegroundColor Blue "=========|| Registry Password Check" # Looking through the entire registry for passwords -Write-host "This will take some time. Won't you have a pepsi?" +Write-Host "Checking over 200 different password regex types." +Write-Host "This will take some time. Won't you have a pepsi?" $regPath = @("registry::\HKEY_CURRENT_USER\", "registry::\HKEY_LOCAL_MACHINE\") # Search for the string in registry values and properties foreach ($r in $regPath) { @@ -1363,31 +1364,33 @@ foreach ($r in $regPath) { $Name = $_.Name $property | ForEach-Object { $Prop = $_ - foreach ($r in $regexSearch) { - if ($Prop | Where-Object { $_ -like $r }) { - "Found: $Name\$Prop" + $regexSearch.keys | ForEach-Object { + $value = $regexSearch[$_] + if ($Prop | Where-Object { $_ -like $value }) { + Write-Host "Possible Password Found: $Name\$Prop" + Write-Host "Key: $_" -ForegroundColor Red } $Prop | ForEach-Object { - $Value = (Get-ItemProperty "registry::$Name").$_ - if ($Value | Where-Object { $_ -like $r }) { - Write-Host "Found: $name\$_ $Value" + $propValue = (Get-ItemProperty "registry::$Name").$_ + if ($propValue | Where-Object { $_ -like $Value }) { + Write-Host "Possible Password Found: $name\$_ $propValue" } } } } } - if($debug){TimeElapsed} + if ($debug) { TimeElapsed } Write-Host "Finished $r" } Write-Host "" -if($debug){TimeElapsed} -Write-Host -ForegroundColor Blue "=========|| Password Check" +if ($debug) { TimeElapsed } +Write-Host -ForegroundColor Blue "=========|| Password Check in Files" # Looking through the entire computer for passwords $Drives = Get-PSDrive | Where-Object { $_.Root -like "*:\" } -$fileExtensions = @("*.xml", "*.txt", "*.conf*", "*.ini", ".y*ml", "*.log", "*.bak") +$fileExtensions = @("*.xml", "*.txt", "*.conf","*.config", "*.cfg", "*.ini", ".y*ml", "*.log", "*.bak") Write-Host "" -if($debug){TimeElapsed} +if ($debug) { TimeElapsed } Write-Host -ForegroundColor Blue "=========|| Password Check. Starting at root of each drive. This will take some time. Like, grab a coffee or tea." Write-Host -ForegroundColor Blue "=========|| Looking through each drive, searching for $fileExtensions" # Also looks for MCaffee site list while looping through the drives. @@ -1399,12 +1402,12 @@ $Drives.Root | ForEach-Object { Write-Host "Possible MCaffee Site List Found: $($_.FullName)" Write-Host "Just going to leave this here: https://github.com/funoverip/mcafee-sitelist-pwd-decryption" -ForegroundColor Yellow } - foreach ($r in $regexSearch) { - $password = Get-Content $_.FullName -ErrorAction SilentlyContinue | Select-String $r + $regexSearch.keys | ForEach-Object { + $password = Get-Content $path.FullName -ErrorAction SilentlyContinue | Select-String $regexSearch[$_] if ($password) { - Write-Host "Possible Password found: " + Write-Host "Possible Password found: $_" -ForegroundColor Yellow Write-Host $Path.FullName - Write-Host $password + Write-Host $password -ForegroundColor Red } } }