diff --git a/PowerHuntShares.psm1 b/PowerHuntShares.psm1
index 108a5f0..cf1d750 100644
--- a/PowerHuntShares.psm1
+++ b/PowerHuntShares.psm1
@@ -4,7 +4,7 @@
#--------------------------------------
# Author: Scott Sutherland, 2024 NetSPI
# License: 3-clause BSD
-# Version: v1.90
+# Version: v1.91
# References: This script includes custom code and code taken and modified from the open source projects PowerView, Invoke-Ping, and Invoke-Parrell.
function Invoke-HuntSMBShares
{
@@ -2228,7 +2228,7 @@ function Invoke-HuntSMBShares
$ThisFileShareNameList = $ExcessiveSharePrivs | where FileListGroup -eq $FileGroupName | select ShareName -unique -expandproperty sharename | foreach { "$_ "}
$ThisFileShareNameListUniqueCount = $ThisFileShareNameList | measure | select count -ExpandProperty count
$ThisRow = @"
-
-
+
+
$fdcount of $ShareCount shares ($FdFileCount Files)
+
+
$MyFdListBr
-
"@
$ThisFileDirList
@@ -3313,6 +3304,13 @@ function Invoke-HuntSMBShares
If($ShareNameRiskScore -lt .80){ $RiskLevel = "$ShareNameRiskScoreP Medium"}
If($ShareNameRiskScore -lt .50){ $RiskLevel = "$ShareNameRiskScoreP Low"}
#>
+
+ # ----------------------------------------------------------------------
+ # Build UNC Path Lists
+ # ----------------------------------------------------------------------
+ $GetRowUncPathsRaw = $ExcessiveSharePrivs | where ShareName -EQ "$ShareName" | Select SharePath -Unique
+ $GetRowUncPathsCount = $GetRowUncPathsRaw | measure | select count -ExpandProperty count
+ $GetRowUncPaths = $GetRowUncPathsRaw | ForEach-Object { $ASDF = $_.SharePath; "$ASDF
" } | Out-String
# ----------------------------------------------------------------------
# Build Share Name Summary Page Rows
@@ -3320,8 +3318,13 @@ function Invoke-HuntSMBShares
# Build Rows
$ThisRow = @"
-
- $ShareCount
+
+
+ $GetRowUncPathsCount
+
+
+ $GetRowUncPaths
+
@@ -3373,7 +3376,7 @@ function Invoke-HuntSMBShares
$RiskLevel
-
+
Risk Summary
@@ -3407,10 +3410,10 @@ function Invoke-HuntSMBShares
$SimLevel
-
+
- Final Weighted Score: : $FinalSimilarityScoreP
+ Final Score: : $FinalSimilarityScoreP
File Name Coverage: $SimularityFileCoverageScoreP
@@ -3427,68 +3430,68 @@ function Invoke-HuntSMBShares
File Name Metrics
- 1 File FG Coverage 10%: $SimularityFileCoverage10
+ FG Coverage 10%: $SimularityFileCoverage10
- 1 File FG Coverage 20%: $SimularityFileCoverage20
+ FG Coverage 20%: $SimularityFileCoverage20
- 1 File FG Coverage 30%: $SimularityFileCoverage30
+ FG Coverage 30%: $SimularityFileCoverage30
- 1 File FG Coverage 40%: $SimularityFileCoverage40
+ FG Coverage 40%: $SimularityFileCoverage40
- 1 File FG Coverage 51%: $SimularityFileCoverage50
+ FG Coverage 51%: $SimularityFileCoverage50
- 1 File FG Coverage 60%: $SimularityFileCoverage60
+ FG Coverage 60%: $SimularityFileCoverage60
- 1 File FG Coverage 70%: $SimularityFileCoverage70
+ FG Coverage 70%: $SimularityFileCoverage70
- 1 File FG Coverage 80%: $SimularityFileCoverage80
+ FG Coverage 80%: $SimularityFileCoverage80
- 1 File FG Coverage 90%: $SimularityFileCoverage90
+ FG Coverage 90%: $SimularityFileCoverage90
- 1 File FG Coverage 100%: $SimularityFileCoverage100
+ FG Coverage 100%: $SimularityFileCoverage100
Folder Group Metrics
- 1 FG Covers 10% of shares: $SimularityFolderGroupCoverage10
+ 1 FG 10%/shares: $SimularityFolderGroupCoverage10
- 1 FG Covers 20% of shares: $SimularityFolderGroupCoverage20
+ 1 FG 20%/shares: $SimularityFolderGroupCoverage20
- 1 FG Covers 30% of shares: $SimularityFolderGroupCoverage30
+ 1 FG 30%/shares: $SimularityFolderGroupCoverage30
- 1 FG Covers 40% of shares: $SimularityFolderGroupCoverage40
+ 1 FG 40%/shares: $SimularityFolderGroupCoverage40
- 1 FG Covers 51% of shares: $SimularityFolderGroupCoverage50
+ 1 FG 51%/shares: $SimularityFolderGroupCoverage50
- 1 FG Covers 60% of shares: $SimularityFolderGroupCoverage60
+ 1 FG 60%/shares: $SimularityFolderGroupCoverage60
- 1 FG Covers 70% of shares: $SimularityFolderGroupCoverage70
+ 1 FG 70%/shares: $SimularityFolderGroupCoverage70
- 1 FG Covers 80% of shares: $SimularityFolderGroupCoverage80
+ 1 FG 80%/shares: $SimularityFolderGroupCoverage80
- 1 FG Covers 90% of shares: $SimularityFolderGroupCoverage90
+ 1 FG 90%/shares: $SimularityFolderGroupCoverage90
- 1 FG Covers 100% of shares: $SimularityFolderGroupCoverage100
+ 1 FG 100%/shares: $SimularityFolderGroupCoverage100
@@ -3498,7 +3501,7 @@ function Invoke-HuntSMBShares
Same Share Name: 1
- Folder Group/Owner Ratio Average: $SimularitySharePropFGOwnerAvgT
+ folder Group/Owner Ratio Average: $SimularitySharePropFGOwnerAvgT
Creation Date/Share Ratio: $SimularitySharePropCreateDateRatioT
@@ -3510,10 +3513,10 @@ function Invoke-HuntSMBShares
Experimental Metrics
- Share/Owner Ratio: $SimularityCalcShareOwner
+ Share Owner Ratio: $SimularityCalcShareOwner
- Folder Group/Name Ratio: $SimularityCalcShareFg
+ File Group/Name Ratio: $SimularityCalcShareFg
All Descriptions Match: $SimularityCalcShareDesc
@@ -3523,51 +3526,41 @@ function Invoke-HuntSMBShares
- $ShareFolderGroupCount
-
-
+
$ShareFolderGroupCount
+
$ShareFolderGroupList
-
$SimularityFileCommonListTopNum Files
-
-
-
+
+
$SimularityFileCommonListTop
-
$ShareRowInterestingFileTotalCount Files
-
-
-
+
$ShareRowInterestingFileListSecretsCount Secrets Files
-
-
-
+
+
$ShareRowInterestingFileListSecrets
-
+
$ShareRowInterestingFileListDataCount Data Files
-
-
-
+
+
$ShareRowInterestingFileListData
-
-
-
+
-"@
+"@
$ThisRow
}
@@ -3716,8 +3709,10 @@ $NewHtmlReport = @"
.content {
max-height: 0;
+ --max-width: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
+ transition: max-width 0.2s ease-out;
}
.tabs{
@@ -4304,7 +4299,7 @@ $NewHtmlReport = @"
margin-top: 5px;
margin-right: 5px;
margin-bottom: 5px;
- width: 90%
+ --width: 90%
}
.tablecolinfo {
@@ -4844,7 +4839,7 @@ input[type="checkbox"]:checked::before {
Share Summary
ACL Summary
Data Insights
- Interesting Files
+ Interesting Files
Share Names
Folder Groups
Affected Subnets
@@ -4879,19 +4874,17 @@ input[type="checkbox"]:checked::before {
- Interesting File Names Found
-
-
-
+ Interesting File Names Found
+
-
+
$InterestingFilesAllFilesCount
($InterestingFilesAllFilesCountU unique file names)
-
+
@@ -4899,19 +4892,15 @@ input[type="checkbox"]:checked::before {
-
- Category Distribution
-
+ File Name Category Distribution
-
@@ -5155,42 +5144,34 @@ input[type="checkbox"]:checked::before {
Exposure Summary
Below is a summary of number of share ACLs by risk level and a summary of file name counts that may contain passwords, sensitive data, or result in remote code execution. Click the titles for more detail.
-