mirror of
https://github.com/NetSPI/PowerHuntShares.git
synced 2025-05-05 03:38:42 +02:00
Update PowerHuntShares.psm1
Added update to interesting file chart and some minimal style changes.
This commit is contained in:
parent
be8132d2f6
commit
5ab899781d
@ -4,7 +4,7 @@
|
|||||||
#--------------------------------------
|
#--------------------------------------
|
||||||
# Author: Scott Sutherland, 2024 NetSPI
|
# Author: Scott Sutherland, 2024 NetSPI
|
||||||
# License: 3-clause BSD
|
# License: 3-clause BSD
|
||||||
# Version: v1.136
|
# Version: v1.138
|
||||||
# References: This script includes custom code and code taken and modified from the open source projects PowerView, Invoke-Ping, and Invoke-Parrell.
|
# 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
|
function Invoke-HuntSMBShares
|
||||||
{
|
{
|
||||||
@ -1773,17 +1773,17 @@ function Invoke-HuntSMBShares
|
|||||||
} | select | ForEach-Object { "'$_'" }) -join ", "
|
} | select | ForEach-Object { "'$_'" }) -join ", "
|
||||||
$IFCategoryListCount = "[$IFCategoryList]"
|
$IFCategoryListCount = "[$IFCategoryList]"
|
||||||
|
|
||||||
# Outbout objects to file
|
# Export objects to file
|
||||||
$InterestingFilesAllObjects | Export-Csv -NoTypeInformation "$OutputDirectory\$TargetDomain-Shares-Interesting-Files.csv"
|
$InterestingFilesAllObjects | Export-Csv -NoTypeInformation "$OutputDirectory\$TargetDomain-Shares-Interesting-Files.csv"
|
||||||
|
|
||||||
# Get secrets & sensitive counts for dashboard
|
# Get secrets & sensitive counts for dashboard
|
||||||
$InterestingFilesAllObjectsSecretCount = $InterestingFilesAllObjects | where category -eq 'secret' | measure | select count -ExpandProperty count
|
$InterestingFilesAllObjectsSecretCount = $InterestingFilesAllObjects | where category -eq 'secret' | select UncPath -Unique | measure | select count -ExpandProperty count
|
||||||
$InterestingFilesAllObjectsSensitiveCount = $InterestingFilesAllObjects | where category -eq 'sensitive' | measure | select count -ExpandProperty count
|
$InterestingFilesAllObjectsSensitiveCount = $InterestingFilesAllObjects | where category -eq 'sensitive' | select UncPath -Unique | measure | select count -ExpandProperty count
|
||||||
|
|
||||||
# Get order list of interesting file names by count
|
# Get order list of interesting file names by count
|
||||||
$InterestingFilesAllFilesCount = $InterestingFilesAllObjects | measure | select count -ExpandProperty count
|
$InterestingFilesAllFilesCount = $InterestingFilesAllObjects | measure | select count -ExpandProperty count
|
||||||
$InterestingFilesAllFilesCountU = $InterestingFilesAllObjects | select filename -Unique | measure | select count -ExpandProperty count
|
$InterestingFilesAllFilesCountU = $InterestingFilesAllObjects | select filename -Unique | measure | select count -ExpandProperty count
|
||||||
$InterestingFilesAllFilesGrouped = $InterestingFilesAllObjects | group filename | select count,name | sort count -Descending
|
$InterestingFilesAllFilesGrouped = $InterestingFilesAllObjects | group filename | select count,name | sort count -Descending
|
||||||
|
|
||||||
# Generate a row for each one
|
# Generate a row for each one
|
||||||
# Headers are Instance Count, FileName, Type, File Paths,Affected Computers, Affected Shares
|
# Headers are Instance Count, FileName, Type, File Paths,Affected Computers, Affected Shares
|
||||||
@ -5273,7 +5273,7 @@ $NewHtmlReport = @"
|
|||||||
}
|
}
|
||||||
|
|
||||||
.percentagetext {
|
.percentagetext {
|
||||||
text-align: center;
|
text-align: left;
|
||||||
font-size: 2.25em;
|
font-size: 2.25em;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-family:"Open Sans", sans-serif;
|
font-family:"Open Sans", sans-serif;
|
||||||
@ -5936,7 +5936,7 @@ input[type="checkbox"]:checked::before {
|
|||||||
<label id="btnidentities" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('IdentityInsights');radiobtn.checked = true;updateLabelColors('tabs', 'btnidentities');">Identities</label>
|
<label id="btnidentities" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('IdentityInsights');radiobtn.checked = true;updateLabelColors('tabs', 'btnidentities');">Identities</label>
|
||||||
<label id="noactionmenubar2" href="#" class="stuff" style="background-color: transparent;border-bottom: 0.25px dashed gray; opacity: 0.25; width:85%; margin-bottom: 6px; margin-top:-1px;border-radius: 0px;outline: none;"></label>
|
<label id="noactionmenubar2" href="#" class="stuff" style="background-color: transparent;border-bottom: 0.25px dashed gray; opacity: 0.25; width:85%; margin-bottom: 6px; margin-top:-1px;border-radius: 0px;outline: none;"></label>
|
||||||
<label id="btnif" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('InterestingFiles');radiobtn.checked = true;applyFiltersAndSort('InterestingFileTable', 'filterInputIF', 'filterCounterIF', 'paginationIF');updateLabelColors('tabs', 'btnif');">Interesting Files</label>
|
<label id="btnif" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('InterestingFiles');radiobtn.checked = true;applyFiltersAndSort('InterestingFileTable', 'filterInputIF', 'filterCounterIF', 'paginationIF');updateLabelColors('tabs', 'btnif');">Interesting Files</label>
|
||||||
<label id="btnSecretsPage" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('SecretsPage');radiobtn.checked = true;updateLabelColors('tabs', 'btnSecretsPage');">Recovered Secrets</label>
|
<label id="btnSecretsPage" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('SecretsPage');radiobtn.checked = true;updateLabelColors('tabs', 'btnSecretsPage');">Extracted Secrets</label>
|
||||||
<label id="btnShareGraph" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('ShareGraph');radiobtn.checked = true;updateLabelColors('tabs', 'btnShareGraph');">ShareGraph</label>
|
<label id="btnShareGraph" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('ShareGraph');radiobtn.checked = true;updateLabelColors('tabs', 'btnShareGraph');">ShareGraph</label>
|
||||||
<label id="noactionmenuheader3"class="tabLabel" style="background-color: transparent;width:100%;color:#F56A00;padding-top:5px;padding-bottom:5px;margin-top:1px;margin-bottom:2px;font-weight:bolder;"><strong>Recommendations</strong></label>
|
<label id="noactionmenuheader3"class="tabLabel" style="background-color: transparent;width:100%;color:#F56A00;padding-top:5px;padding-bottom:5px;margin-top:1px;margin-bottom:2px;font-weight:bolder;"><strong>Recommendations</strong></label>
|
||||||
<label id="btnexploit" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('Attacks');radiobtn.checked = true;updateLabelColors('tabs', 'btnexploit');">Exploiting Access</label>
|
<label id="btnexploit" href="#" class="stuff" style="width:100%;" onClick="radiobtn = document.getElementById('Attacks');radiobtn.checked = true;updateLabelColors('tabs', 'btnexploit');">Exploiting Access</label>
|
||||||
@ -5961,35 +5961,37 @@ input[type="checkbox"]:checked::before {
|
|||||||
This section provides a list of files that may contain passwords or sensitive data, or may be abused for remote code execution.
|
This section provides a list of files that may contain passwords or sensitive data, or may be abused for remote code execution.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- /////////////// Interesting Files - Total -->
|
<div style="width: 96.5%; display: flex; justify-content: space-between;">
|
||||||
|
|
||||||
<div class="card" style="width: 20%">
|
<!-- Left aligned card -->
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
<div style="width: 33%; display: flex; justify-content: flex-start;">
|
||||||
Interesting Files Found
|
<div class="card" style="width: 100%;">
|
||||||
</div>
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
<br><br>
|
Interesting Files Found
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
</div>
|
||||||
$InterestingFilesAllFilesCount
|
<div style="text-align: left;">
|
||||||
</span>
|
<span class="percentagetext" style = "color:#f08c41;">
|
||||||
<Br>
|
$InterestingFilesAllFilesCount
|
||||||
<div style="padding-right: 10px;">
|
</span>
|
||||||
($InterestingFilesAllFilesCountU unique file names)
|
<Br>
|
||||||
</div>
|
<div style="padding-right: 10px;">
|
||||||
</div>
|
($InterestingFilesAllFilesCountU unique file names)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Right aligned card -->
|
||||||
|
<div style="width: 77%; display: flex; justify-content: flex-end;">
|
||||||
|
<div class="LargeCard" style="width:100%;">
|
||||||
|
<div class="chart-container">
|
||||||
|
<div id="chart"></div>
|
||||||
|
<div class="chart-controls"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- /////////////// Interesting Files - Chart -->
|
</div>
|
||||||
<div class="LargeCard" style="width:69.25%">
|
|
||||||
|
|
||||||
<div class="chart-container">
|
|
||||||
<div id="chart"></div>
|
|
||||||
<div class="chart-controls"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- /////////////// Table -->
|
|
||||||
<div style="height: 125px;text-align: left;"></div>
|
|
||||||
|
|
||||||
<div class="searchbar" style="text-align:left; display: flex;" >
|
<div class="searchbar" style="text-align:left; display: flex;" >
|
||||||
<input type="text" id="filterInputIF" placeholder=" Search..." style="margin-top: 8px; height: 25px; font-size: 14px; padding-left:3px;margin-left: 10px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
<input type="text" id="filterInputIF" placeholder=" Search..." style="margin-top: 8px; height: 25px; font-size: 14px; padding-left:3px;margin-left: 10px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
||||||
@ -6034,7 +6036,7 @@ input[type="checkbox"]:checked::before {
|
|||||||
-->
|
-->
|
||||||
<div style="margin-left: 10px; width: 90%;">
|
<div style="margin-left: 10px; width: 90%;">
|
||||||
<h4 style="color:#4A4A4A;">Risk & Data Exposure</h4>
|
<h4 style="color:#4A4A4A;">Risk & Data Exposure</h4>
|
||||||
In total, $RiskLevelCountCritical critical, $RiskLevelCountHigh high, $RiskLevelCountMedium medium, and $RiskLevelCountLow low risk <a style="font-weight: normal;" href="https://en.wikipedia.org/wiki/Security_descriptor">ACE (Access Control Entry)</a> configurations were discovered across $ExcessiveSharesCount shares, hosted by $ComputerWithExcessive computers in the $TargetDomain Active Directory domain. The affected shares were found hosting $InterestingFilesAllObjectsSecretCount files that may contain passwords and $InterestingFilesAllObjectsSensitiveCount files that may contain sensitive data. Overall, $InterestingFilesAllFilesCount interesting files were found that could potentially lead to unauthorized data access or remote code execution.
|
In total, $RiskLevelCountCritical critical, $RiskLevelCountHigh high, $RiskLevelCountMedium medium, and $RiskLevelCountLow low risk <a style="font-weight: normal;" href="https://en.wikipedia.org/wiki/Security_descriptor">ACE (Access Control Entry)</a> configurations were discovered across $ExcessiveSharesCount shares, hosted by $ComputerWithExcessive computers in the $TargetDomain Active Directory domain. The affected shares were found hosting $InterestingFilesAllObjectsSecretCount files that may contain passwords and $InterestingFilesAllObjectsSensitiveCount files that may contain sensitive data. $SecretsRecoveredCount credentials were recovered from $SecretsRecoveredFileCount of the discovered $InterestingFilesAllObjectsSecretCount secrets files. Overall, $InterestingFilesAllFilesCount interesting files were found accessible to all domain users that could potentially lead to unauthorized data access or remote code execution.
|
||||||
<Br>
|
<Br>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -6170,43 +6172,50 @@ $CardLastModifiedTimeLine
|
|||||||
<div style="margin-left:10px;margin-top:3px; margin-bottom: 3px;width:95%">
|
<div style="margin-left:10px;margin-top:3px; margin-bottom: 3px;width:95%">
|
||||||
$ComputerCount computers were found in the $TargetDomain Active Directory domain, $ComputerPingableCount responded to ping requests, $Computers445OpenCount had port 445 open, and $ComputerWithExcessive were found hosting shares configured with excessive privileges. Below is a list of the computers hosting shares configured with excessive privileges.
|
$ComputerCount computers were found in the $TargetDomain Active Directory domain, $ComputerPingableCount responded to ping requests, $Computers445OpenCount had port 445 open, and $ComputerWithExcessive were found hosting shares configured with excessive privileges. Below is a list of the computers hosting shares configured with excessive privileges.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div style="width: 96.5%; display: flex; justify-content: space-between;">
|
||||||
|
|
||||||
<div class="card" style="width: 20%">
|
<!-- Left aligned card -->
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
<div style="width: 33.33%; display: flex; justify-content: flex-start;">
|
||||||
Live Computers Found
|
<div class="card" style="width: 100%;">
|
||||||
</div>
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
<br><br>
|
Live Computers Found
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
</div>
|
||||||
$PeerComparisonComputerCount
|
<div style="text-align: left;">
|
||||||
</span>
|
<span class="percentagetext" style="color:#f08c41; text-align: left;">
|
||||||
<Br>
|
$PeerComparisonComputerCount
|
||||||
<div style="padding-right: 10px;">
|
</span>
|
||||||
($ComputerWithExcessive host shares with excessive privileges)
|
<Br>
|
||||||
</div>
|
<div style="padding-right: 10px;">
|
||||||
</div>
|
($ComputerWithExcessive host shares with excessive privileges)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Center aligned card -->
|
||||||
<div class="LargeCard" style="width:32.75%;">
|
<div style="width: 33.33%; display: flex; justify-content: center;">
|
||||||
|
<div class="LargeCard" style="width:100%;">
|
||||||
<div class="chart-container">
|
<div class="chart-container">
|
||||||
<div id="ChartComputersRisk"></div>
|
<div id="ChartComputersRisk"></div>
|
||||||
<div class="chart-controls"></div>
|
<div class="chart-controls"></div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="LargeCard" style="width:32.75%;">
|
<!-- Right aligned card -->
|
||||||
|
<div style="width: 33.33%; display: flex; justify-content: flex-end;">
|
||||||
<div class="chart-container">
|
<div class="LargeCard" style="width:100%;">
|
||||||
<div id="ChartComputersDisco"></div>
|
<div class="chart-container">
|
||||||
<div class="chart-controls"></div>
|
<div id="ChartComputersDisco"></div>
|
||||||
</div>
|
<div class="chart-controls"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="searchbar" style="margin-top:270px; text-align:left; display: flex;" >
|
<div class="searchbar" style="text-align:left; display: flex;" >
|
||||||
<input type="text" id="computerfilterInput" placeholder=" Search..." style="margin-top: 8px; height: 25px; margin-left: 10px;font-size: 14px;padding-left:3px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
<input type="text" id="computerfilterInput" placeholder=" Search..." style="margin-top: 8px; height: 25px; margin-left: 10px;font-size: 14px;padding-left:3px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
||||||
<div style="font-size:12;text-align: left;cursor: pointer;color:gray; margin-top: 13px; margin-left: 5px;" onmouseover="this.style.color='white';" onmouseout="this.style.textDecoration='';this.style.fontWeight='normal';this.style.color='gray';"onclick="document.getElementById('computerfilterInput').value = '';applyFiltersAndSort('ComputersTable', 'computerfilterInput', 'computerfilterCounter', 'computerpagination');">Clear</div>
|
<div style="font-size:12;text-align: left;cursor: pointer;color:gray; margin-top: 13px; margin-left: 5px;" onmouseover="this.style.color='white';" onmouseout="this.style.textDecoration='';this.style.fontWeight='normal';this.style.color='gray';"onclick="document.getElementById('computerfilterInput').value = '';applyFiltersAndSort('ComputersTable', 'computerfilterInput', 'computerfilterCounter', 'computerpagination');">Clear</div>
|
||||||
<!-- <div style="margin-top: 10px; margin-left: 5px; margin-right: 5px;"><strong>Quick Filters</strong></div>
|
<!-- <div style="margin-top: 10px; margin-left: 5px; margin-right: 5px;"><strong>Quick Filters</strong></div>
|
||||||
@ -6274,41 +6283,53 @@ $ComputerCount computers were found in the $TargetDomain Active Directory domain
|
|||||||
$IdentityCombinedListCount identities were discovered across shares in the $TargetDomain Active Directory domain. $IdentityOwnerListCount were owners and $IdentityReferenceListCount were assigned privileges.
|
$IdentityCombinedListCount identities were discovered across shares in the $TargetDomain Active Directory domain. $IdentityOwnerListCount were owners and $IdentityReferenceListCount were assigned privileges.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div style="width: 96.5%; display: flex; justify-content: space-between;">
|
||||||
|
|
||||||
<div class="card" style="width: 28%">
|
<!-- Left aligned card -->
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
<div style="width: 33.33%; display: flex; justify-content: flex-start;">
|
||||||
Identities Found
|
<div class="card" style="width: 100%;">
|
||||||
</div>
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
<br><br>
|
Identities Found
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
</div>
|
||||||
$IdentityCombinedListCount
|
<div style="text-align: left;">
|
||||||
</span>
|
<span class="percentagetext" style="color:#f08c41;">
|
||||||
<Br>
|
$IdentityCombinedListCount
|
||||||
</div>
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="card" style="width: 28%">
|
<!-- Center aligned card -->
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
<div style="width: 33.33%; display: flex; justify-content: center;">
|
||||||
Identities Assigned Ownership
|
<div class="card" style="width: 80%;">
|
||||||
</div>
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
<br><br>
|
Identities Assigned Ownership
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
</div>
|
||||||
$IdentityOwnerListCount
|
<div style="text-align: left;">
|
||||||
</span>
|
<span class="percentagetext" style="color:#f08c41; text-align: left;">
|
||||||
<Br>
|
$IdentityOwnerListCount
|
||||||
</div>
|
</span>
|
||||||
|
</div>
|
||||||
<div class="card" style="width: 28%">
|
</div>
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
</div>
|
||||||
Identities Assigned Privileges
|
|
||||||
</div>
|
<!-- Right aligned card -->
|
||||||
<br><br>
|
<div style="width: 33.33%; display: flex; justify-content: flex-end;">
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
<div class="card" style="width: 100%;">
|
||||||
$IdentityReferenceListCount
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
</span>
|
Identities Assigned Privileges
|
||||||
<Br>
|
</div>
|
||||||
</div>
|
<div style="text-align: left;">
|
||||||
<br>
|
<span class="percentagetext" style="color:#f08c41; text-align: left;">
|
||||||
<div style="margin-top: 125px; margin-left: 10px; width="85%">
|
$IdentityReferenceListCount
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin-left:10px; width:95%;">
|
||||||
Note: Within the context of this report, all read and write access the "Everyone", "Authenticated Users", "BUILTIN\Users", "Domain Users", or "Domain Computers" groups are considered excessive privileges, because all provide domain users access to the affected shares due to privilege inheritance.
|
Note: Within the context of this report, all read and write access the "Everyone", "Authenticated Users", "BUILTIN\Users", "Domain Users", or "Domain Computers" groups are considered excessive privileges, because all provide domain users access to the affected shares due to privilege inheritance.
|
||||||
</div>
|
</div>
|
||||||
<div class="searchbar" style="margin-top:12px; text-align:left; display: flex;" >
|
<div class="searchbar" style="margin-top:12px; text-align:left; display: flex;" >
|
||||||
@ -6363,40 +6384,45 @@ Note: Within the context of this report, all read and write access the "Everyone
|
|||||||
Below is a list of the ACE (access control entries) configured with excessive privileges found in the $TargetDomain Active Directory domain.
|
Below is a list of the ACE (access control entries) configured with excessive privileges found in the $TargetDomain Active Directory domain.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card" style="width: 20%">
|
<div style="width: 96.5%; display: flex; justify-content: space-between;">
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
|
||||||
Inescure ACEs Found
|
|
||||||
</div>
|
|
||||||
<br><br>
|
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
|
||||||
$ExcessiveSharePrivsCount
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<!-- Left aligned card -->
|
||||||
|
<div style="width: 33.33%; display: flex; justify-content: flex-start;">
|
||||||
|
<div class="card" style="width: 100%;">
|
||||||
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
|
Insecure ACEs Found
|
||||||
|
</div>
|
||||||
|
<div style="text-align: left;">
|
||||||
|
<span class="percentagetext" style="color:#f08c41; text-align: left;">
|
||||||
|
$ExcessiveSharePrivsCount
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="LargeCard" style="width:23%;">
|
<!-- Center aligned card -->
|
||||||
|
<div style="width: 33.33%; display: flex; justify-content: center;">
|
||||||
<div class="chart-container">
|
<div class="LargeCard" style="width:100%;">
|
||||||
<div id="ChartAceRisk"></div>
|
<div class="chart-container">
|
||||||
<div class="chart-controls"></div>
|
<div id="ChartAceRisk"></div>
|
||||||
</div>
|
<div class="chart-controls"></div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<div class="LargeCard" style="width:18%;">
|
</div>
|
||||||
<div class="chart-container">
|
|
||||||
<div id="ChartAceType"></div>
|
|
||||||
<div class="chart-controls"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="LargeCard" style="width:20.5%;">
|
<!-- Right aligned card -->
|
||||||
<div class="chart-container">
|
<div style="width: 33.33%; display: flex; justify-content: flex-end;">
|
||||||
<div id="ChartAcesIF"></div>
|
<div class="LargeCard" style="width:100%;">
|
||||||
<div class="chart-controls"></div>
|
<div class="chart-container">
|
||||||
</div>
|
<div id="ChartAceType"></div>
|
||||||
</div>
|
<div class="chart-controls"></div>
|
||||||
|
</div>
|
||||||
<div class="searchbar" style="margin-top:270px; text-align:left; display: flex;" >
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="searchbar" style="text-align:left; display: flex;" >
|
||||||
<input type="text" id="acefilterInput" placeholder=" Search..." style="margin-top: 8px; height: 25px; margin-left: 10px;font-size: 14px;padding-left:3px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
<input type="text" id="acefilterInput" placeholder=" Search..." style="margin-top: 8px; height: 25px; margin-left: 10px;font-size: 14px;padding-left:3px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
||||||
<div style="font-size:12;text-align: left;cursor: pointer;color:gray; margin-top: 13px; margin-left: 5px;" onmouseover="this.style.color='white';" onmouseout="this.style.textDecoration='';this.style.fontWeight='normal';this.style.color='gray';"onclick="document.getElementById('acefilterInput').value = '';applyFiltersAndSort('aceTable', 'acefilterInput', 'acefilterCounter', 'acepagination');">Clear</div>
|
<div style="font-size:12;text-align: left;cursor: pointer;color:gray; margin-top: 13px; margin-left: 5px;" onmouseover="this.style.color='white';" onmouseout="this.style.textDecoration='';this.style.fontWeight='normal';this.style.color='gray';"onclick="document.getElementById('acefilterInput').value = '';applyFiltersAndSort('aceTable', 'acefilterInput', 'acefilterCounter', 'acepagination');">Clear</div>
|
||||||
<!-- <div style="margin-top: 10px; margin-left: 5px; margin-right: 5px;"><strong>Quick Filters</strong></div>
|
<!-- <div style="margin-top: 10px; margin-left: 5px; margin-right: 5px;"><strong>Quick Filters</strong></div>
|
||||||
@ -6903,36 +6929,39 @@ Below is a summary of the exposure associated with each of those groups.
|
|||||||
$AllSMBSharesCount shares were discovered across $ComputerPingableCount live computers in the $TargetDomain Active Directory domain. $ExcessiveSharesCount of those shares were found configured with excessive privileges across $ComputerWithExcessive computers. Below is a summary of the affected shares grouped by name.
|
$AllSMBSharesCount shares were discovered across $ComputerPingableCount live computers in the $TargetDomain Active Directory domain. $ExcessiveSharesCount of those shares were found configured with excessive privileges across $ComputerWithExcessive computers. Below is a summary of the affected shares grouped by name.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card" style="width: 20%">
|
<div style="width: 96.5%; display: flex; justify-content: space-between;">
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
|
||||||
Shares Found
|
<!-- Left aligned card -->
|
||||||
</div>
|
<div style="width: 33%; display: flex; justify-content: flex-start;">
|
||||||
<br><br>
|
<div class="card" style="width: 100%;">
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
$ExcessiveSharesCount
|
Shares Found
|
||||||
</span>
|
</div>
|
||||||
<Br>
|
<div style="text-align: left;">
|
||||||
<div style="padding-right: 10px;">
|
<span class="percentagetext" style = "color:#f08c41;">
|
||||||
($ShareNameChartCount unique names)
|
$ExcessiveSharesCount
|
||||||
</div>
|
</span>
|
||||||
</div>
|
<Br>
|
||||||
|
<div style="padding-right: 10px;">
|
||||||
<div class="LargeCard" style="width:32.5%;">
|
($ShareNameChartCount unique names)
|
||||||
<div class="chart-container">
|
</div>
|
||||||
<div id="ChartShareNameRiska"></div>
|
</div>
|
||||||
<div class="chart-controls"></div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
<!-- Right aligned card -->
|
||||||
|
<div style="width: 77%; display: flex; justify-content: flex-end;">
|
||||||
<div class="LargeCard" style="width:32.5%;">
|
<div class="LargeCard" style="width:100%;">
|
||||||
<div class="chart-container">
|
<div class="chart-container">
|
||||||
<div id="ChartSharePageIF"></div>
|
<div id="ChartShareNameRiska"></div>
|
||||||
<div class="chart-controls"></div>
|
<div class="chart-controls"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="searchbar" style="margin-top:270px; text-align:left; display: flex;" >
|
<div class="searchbar" style="text-align:left; display: flex;" >
|
||||||
<input type="text" id="filterInput" placeholder=" Search..." style="margin-top: 8px; height: 25px; margin-left: 10px;font-size: 14px;padding-left:3px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
<input type="text" id="filterInput" placeholder=" Search..." style="margin-top: 8px; height: 25px; margin-left: 10px;font-size: 14px;padding-left:3px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
||||||
<div style="margin-top: 10px; margin-left: 5px; margin-right: 5px;"><strong>Quick Filters</strong></div>
|
<div style="margin-top: 10px; margin-left: 5px; margin-right: 5px;"><strong>Quick Filters</strong></div>
|
||||||
<label><input type="checkbox" class="filter-checkbox" name="h"> Exploitable</label>
|
<label><input type="checkbox" class="filter-checkbox" name="h"> Exploitable</label>
|
||||||
@ -7059,34 +7088,35 @@ This section lists the most common share owners.
|
|||||||
Folder groups are SMB shares that contain the exact same file listing. Each folder group has been hashed so they can be quickly correlated. In some cases, shares with the exact same file listing may be related to a single application or process. This information can help identify the root cause associated with the excessive privileges and expedite remediation.
|
Folder groups are SMB shares that contain the exact same file listing. Each folder group has been hashed so they can be quickly correlated. In some cases, shares with the exact same file listing may be related to a single application or process. This information can help identify the root cause associated with the excessive privileges and expedite remediation.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card" style="width: 20%">
|
<div style="width: 96.5%; display: flex; justify-content: space-between;">
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
|
||||||
Folder Groups Found
|
<!-- Left aligned card -->
|
||||||
</div>
|
<div style="width: 33%; display: flex; justify-content: flex-start;">
|
||||||
<br><br>
|
<div class="card" style="width: 100%;">
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
<div class="cardtitle" style="color:gray; font-size: 16px; font-weight: bold;">
|
||||||
$FolderGroupChartCount
|
Folder Groups Found
|
||||||
</span>
|
</div>
|
||||||
<Br>
|
<div style="text-align: left;">
|
||||||
</div>
|
<span class="percentagetext" style="color:#f08c41; text-align: left;">
|
||||||
|
$FolderGroupChartCount
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Right aligned card -->
|
||||||
|
<div style="width: 77%; display: flex; justify-content: flex-end;">
|
||||||
|
<div class="LargeCard" style="width:100%;">
|
||||||
|
<div class="chart-container">
|
||||||
|
<div id="ChartFGRiska"></div>
|
||||||
|
<div class="chart-controls"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="LargeCard" style="width:32.5%;">
|
<div class="searchbar" style="text-align:left; display: flex;" >
|
||||||
<div class="chart-container">
|
|
||||||
<div id="ChartFGRiska"></div>
|
|
||||||
<div class="chart-controls"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="LargeCard" style="width:32.5%;">
|
|
||||||
<div class="chart-container">
|
|
||||||
<div id="ChartFGPageIF"></div>
|
|
||||||
<div class="chart-controls"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="searchbar" style="margin-top:270px; text-align:left; display: flex;" >
|
|
||||||
<input type="text" id="filterInputTwo" placeholder=" Search..." style="margin-top: 8px; height: 25px; font-size: 14px; padding-left:3px;margin-left: 10px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
<input type="text" id="filterInputTwo" placeholder=" Search..." style="margin-top: 8px; height: 25px; font-size: 14px; padding-left:3px;margin-left: 10px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
||||||
<div style="font-size:12;text-align: left;cursor: pointer;color:gray; margin-top: 13px; margin-left: 5px;" onmouseover="this.style.color='white';" onmouseout="this.style.textDecoration='';this.style.fontWeight='normal';this.style.color='gray';" onclick="document.getElementById('filterInputTwo').value = '';applyFiltersAndSort('foldergrouptable', 'filterInputTwo', 'filterCounterTwo', 'paginationfg');">Clear</div>
|
<div style="font-size:12;text-align: left;cursor: pointer;color:gray; margin-top: 13px; margin-left: 5px;" onmouseover="this.style.color='white';" onmouseout="this.style.textDecoration='';this.style.fontWeight='normal';this.style.color='gray';" onclick="document.getElementById('filterInputTwo').value = '';applyFiltersAndSort('foldergrouptable', 'filterInputTwo', 'filterCounterTwo', 'paginationfg');">Clear</div>
|
||||||
<!--
|
<!--
|
||||||
@ -7129,21 +7159,21 @@ Folder groups are SMB shares that contain the exact same file listing. Each fold
|
|||||||
<input class="tabInput" name="tabs" type="radio" id="SecretsPage"/>
|
<input class="tabInput" name="tabs" type="radio" id="SecretsPage"/>
|
||||||
<label class="tabLabel" onClick="updateTab('SecretsPage',false)" for="SecretsPage"></label>
|
<label class="tabLabel" onClick="updateTab('SecretsPage',false)" for="SecretsPage"></label>
|
||||||
<div id="tabPanel" class="tabPanel">
|
<div id="tabPanel" class="tabPanel">
|
||||||
<h2 style="margin-top: 6px;margin-left:10px;margin-bottom: 17px;">Recovered Secrets</h2>
|
<h2 style="margin-top: 6px;margin-left:10px;margin-bottom: 17px;">Extracted Secrets</h2>
|
||||||
<div style="border-bottom: 1px solid #DEDFE1 ;margin-left:-200px;background-color:#f0f3f5; height:5px; width:120%; margin-bottom:10px;"></div>
|
<div style="border-bottom: 1px solid #DEDFE1 ;margin-left:-200px;background-color:#f0f3f5; height:5px; width:120%; margin-bottom:10px;"></div>
|
||||||
<div style="margin-left:10px;margin-top:3px;width:95%;">
|
<div style="margin-left:10px;margin-top:3px;width:95%;">
|
||||||
This page includes a list of the credentials that were recovered during data collection.
|
This page includes a list of the credentials that were recovered during data collection. $SecretsRecoveredCount credentials were recovered from $SecretsRecoveredFileCount of the discovered $InterestingFilesAllObjectsSecretCount secrets files.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card" style="width: 20%">
|
<div class="card" style="width: 20%">
|
||||||
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
<div class="cardtitle" style="color:gray;font-size: 16px; font-weight: bold;">
|
||||||
Credentials Recovered
|
Extracted Secrets Found
|
||||||
</div>
|
</div>
|
||||||
<br><br>
|
<div style="text-align: left;">
|
||||||
<span class="percentagetext" style = "color:#f08c41;">
|
<span class="percentagetext" style = "color:#f08c41;">
|
||||||
$SecretsRecoveredCount
|
$SecretsRecoveredCount
|
||||||
</span>
|
</span>
|
||||||
<Br>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -10692,66 +10722,59 @@ ChartShareNameRiska.render();
|
|||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
||||||
// Data and categories
|
// Data and categories
|
||||||
const data = $IFCategoryListCount;
|
const data = $IFCategoryListCount; // Series with original number of files discovered for each category
|
||||||
const categories = $ChartCategoryCatDash;
|
const verifiedData = $IFCategoryListSecretRecover; // Series with number of files we recovered secrets from
|
||||||
|
const categories = $ChartCategoryCatDash; // Series with category names
|
||||||
// Combine data and categories into an array of objects
|
|
||||||
//const combined = data.map((value, index) => {
|
|
||||||
// return { value, category: categories[index] };
|
|
||||||
//});
|
|
||||||
|
|
||||||
// Sort the combined array based on the data values (largest to smallest)
|
|
||||||
//combined.sort((a, b) => b.value - a.value);
|
|
||||||
|
|
||||||
// Separate the sorted data and categories back into individual arrays
|
|
||||||
//const sortedData = combined.map(item => item.value);
|
|
||||||
//const sortedCategories = combined.map(item => item.category);
|
|
||||||
|
|
||||||
// Initialize ApexCharts
|
// Initialize ApexCharts
|
||||||
const ChartDashboardIFOptions = {
|
const ChartDashboardIFOptions = {
|
||||||
series: [{
|
series: [
|
||||||
data: data
|
{
|
||||||
}],
|
name: 'Files Discovered',
|
||||||
chart: {
|
data: data
|
||||||
type: 'bar',
|
},
|
||||||
height: 300
|
{
|
||||||
},
|
name: 'Files with Extracted Secrets',
|
||||||
plotOptions: {
|
data: verifiedData
|
||||||
bar: {
|
}
|
||||||
borderRadius: 0,
|
],
|
||||||
borderRadiusApplication: 'end',
|
chart: {
|
||||||
horizontal: true,
|
type: 'bar',
|
||||||
colors: {
|
height: 300,
|
||||||
backgroundBarColors: ['#e0e0e0'],
|
stacked: true // Enable stacked bars
|
||||||
backgroundBarOpacity: 1,
|
},
|
||||||
ranges: [{
|
plotOptions: {
|
||||||
from: 0,
|
bar: {
|
||||||
to: 1000,
|
borderRadius: 0,
|
||||||
color: '#f08c41'
|
borderRadiusApplication: 'end',
|
||||||
}]
|
horizontal: true
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
dataLabels: {
|
||||||
dataLabels: {
|
enabled: false
|
||||||
enabled: false
|
},
|
||||||
},
|
grid: {
|
||||||
grid: {
|
show: false
|
||||||
show: false
|
},
|
||||||
},
|
xaxis: {
|
||||||
xaxis: {
|
categories: categories,
|
||||||
categories: categories,
|
},
|
||||||
},
|
colors: ['#f08c41','#07142A'], // Orange for discovered, Blue for verified
|
||||||
title: {
|
title: {
|
||||||
text: 'Interesting File Exposure',
|
text: 'Interesting File Exposure',
|
||||||
align: 'center', // Aligns the title, can be 'left', 'center', or 'right'
|
align: 'center', // Aligns the title, can be 'left', 'center', or 'right'
|
||||||
margin: 10, // Adjusts the space between the title and the chart
|
margin: 10, // Adjusts the space between the title and the chart
|
||||||
style: {
|
style: {
|
||||||
fontSize: '18px',
|
fontSize: '18px',
|
||||||
fontWeight: 'normal',
|
fontWeight: 'normal',
|
||||||
color: '#808080'
|
color: '#808080'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
position: 'bottom',
|
||||||
|
horizontalAlign: 'center'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const ChartDashboardIF = new ApexCharts(document.querySelector("#ChartDashboardIF"), ChartDashboardIFOptions);
|
const ChartDashboardIF = new ApexCharts(document.querySelector("#ChartDashboardIF"), ChartDashboardIFOptions);
|
||||||
ChartDashboardIF.render();
|
ChartDashboardIF.render();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user