windows渗透基础
kali连Windows机器
sudo evil-winrm -i 192.168.56.110 -u username -p password
使用 PowerShell
命令查看端口监听情况
PowerShell 提供了更强大的命令和脚本功能,可以用来查看端口监听情况。
使用 Get-NetTCPConnection
命令
Get-NetTCPConnection -State Listen
使用 Get-Process
和 Get-NetTCPConnection
结合查看监听端口及其对应的进程名称
Get-NetTCPConnection -State Listen | foreach {
$p = Get-Process -Id $_.OwningProcess
$_ | Select-Object LocalAddress, LocalPort, @{Name="ProcessName";Expression={$p.Name}}
}
Get-NetTCPConnection | Select-Object LocalPort,OwningProcess,ProcessName | Format-Table
在 Windows 上,可以使用 PowerShell 查看端口监听情况以及对应的进程名称和进程 ID。以下是实现这一目标的步骤:
1. 使用 Get-NetTCPConnection
和 Get-Process
Get-NetTCPConnection
命令可以列出当前的 TCP 连接,然后通过 Get-Process
命令获取进程信息。
# 获取所有监听的 TCP 连接
$tcpConnections = Get-NetTCPConnection -State Listen
# 遍历每个连接,获取对应的进程信息
$tcpConnections | ForEach-Object {
$processId = $_.OwningProcess
$process = Get-Process -Id $processId -ErrorAction SilentlyContinue
[PSCustomObject]@{
LocalAddress = $_.LocalAddress
LocalPort = $_.LocalPort
ProcessId = $processId
ProcessName = if ($process) { $process.Name } else { "N/A" }
}
} | Format-Table -AutoSize
2. 使用 netstat
和 Select-String
你也可以使用 netstat
命令结合 Select-String
来获取监听端口和对应的进程信息:
# 使用 netstat 获取监听端口和进程信息
$netstatOutput = netstat -ano | Select-String "LISTENING"
# 解析 netstat 输出
$netstatOutput | ForEach-Object {
$columns = $_.ToString() -split '\s+'
$localAddress = $columns[1]
$processId = $columns[-1]
$process = Get-Process -Id $processId -ErrorAction SilentlyContinue
[PSCustomObject]@{
LocalAddress = $localAddress.Split(':')[0]
LocalPort = $localAddress.Split(':')[1]
ProcessId = $processId
ProcessName = if ($process) { $process.Name } else { "N/A" }
}
} | Format-Table -AutoSize
3. 使用 Get-NetTCPConnection
和 Get-Process
的简化版本
这是一个简化的脚本,直接结合了 Get-NetTCPConnection
和 Get-Process
:
# 获取所有监听的 TCP 连接
$tcpConnections = Get-NetTCPConnection -State Listen
# 获取所有进程信息
$processes = Get-Process
# 遍历每个连接,获取对应的进程信息
$tcpConnections | ForEach-Object {
$process = $processes | Where-Object { $_.Id -eq $_.OwningProcess }
[PSCustomObject]@{
LocalAddress = $_.LocalAddress
LocalPort = $_.LocalPort
ProcessId = $_.OwningProcess
ProcessName = if ($process) { $process.Name } else { "N/A" }
}
} | Format-Table -AutoSize
通过这些命令和脚本,你可以轻松查看系统中监听端口的情况以及对应的进程名称和进程 ID。
License:
CC BY 4.0