कई व्यवस्थापक आमतौर पर netstat
. का उपयोग करते हैं कंसोल टूल या ग्राफिक TCPView
सक्रिय टीसीपी/आईपी कनेक्शन के बारे में जानकारी प्रदर्शित करने और विंडोज़ में टीसीपी पोर्ट खोलने के लिए। नेटस्टैट के बजाय, आप Get-NetTCPConnection
. का उपयोग कर सकते हैं Windows में सक्रिय नेटवर्क कनेक्शन, खुले TCP पोर्ट और TCP/IP प्रोटोकॉल का उपयोग करने वाली चल रही प्रक्रियाओं के बारे में जानकारी प्राप्त करने के लिए PowerShell में cmdlet। पावरशेल जानकारी प्राप्त करने और खुले टीसीपी पोर्ट, प्रक्रियाओं और स्थापित नेटवर्क कनेक्शन की निगरानी के लिए जटिल स्क्रिप्ट लिखना आसान बनाता है।
Get-NetTCPConnection
को चलाने का प्रयास करें बिना किसी विकल्प के आदेश दें।
नेटस्टैट की तरह, कमांड ने स्थानीय और दूरस्थ आईपी पते, पोर्ट, कनेक्शन स्थिति के साथ सभी सक्रिय कनेक्शनों की सूची प्रदर्शित की है (सुनो , स्थापित इंटरनेट , टाइमवेट , बाध्य , बंद प्रतीक्षा करें , SynReceived , SynSent ), और प्रक्रिया आईडी (PID) जो इस TCP कनेक्शन का उपयोग कर रही है।
आप अपने स्थानीय कंप्यूटर पर खुले (सुनने वाले) पोर्ट की सूची प्रदर्शित कर सकते हैं:
Get-NetTCPConnection -State Listen | Select-Object -Property LocalAddress, LocalPort, RemoteAddress, RemotePort, State | Sort-Object LocalPort |ft
Get-NetUDPEndpoint
cmdlet का उपयोग UDP पोर्ट के बारे में जानकारी प्राप्त करने के लिए किया जाता है। आप केवल बाहरी (इंटरनेट) कनेक्शन प्रदर्शित कर सकते हैं:
Get-NetTCPConnection -AppliedSetting Internet
आप दूरस्थ होस्ट के DNS नाम प्रदर्शित कर सकते हैं और TCP कनेक्शन के लिए नाम संसाधित कर सकते हैं:
Get-NetTCPConnection -State Established |Select-Object -Property LocalAddress, LocalPort,@{name='RemoteHostName';expression={(Resolve-DnsName $_.RemoteAddress).NameHost}},RemoteAddress, RemotePort, State,@{name='ProcessName';expression={(Get-Process -Id $_.OwningProcess). Path}},OffloadState,CreationTime |ft
इस पॉवरशेल स्क्रिप्ट ने सभी होस्ट आईपी पते को DNS नामों और सभी कनेक्शनों के लिए निर्दिष्ट प्रक्रिया नामों को हल किया।
पेरेंट प्रक्रिया पीआईडी के नाम से, आप नेटवर्क का उपयोग करने वाली संबंधित विंडोज़ सेवाओं की सूची प्रदर्शित कर सकते हैं:
Get-WmiObject Win32_Service | Where-Object -Property ProcessId -In (Get-NetTCPConnection).OwningProcess | Where-Object -Property State -eq Running | Format-Table ProcessId, Name, Caption, StartMode, State, Status, PathName
आप केवल विशिष्ट प्रक्रिया द्वारा शुरू किए गए नेटवर्क कनेक्शन देख सकते हैं। ऐसा करने के लिए, आप निम्न PowerShell स्क्रिप्ट का उपयोग कर सकते हैं:
$TrackProcessName = "*chrome*"
$EstablishedConnections = Get-NetTCPConnection -State Established |Select-Object -Property LocalAddress, LocalPort,@{name='RemoteHostName';expression={(Resolve-DnsName $_.RemoteAddress).NameHost}},RemoteAddress, RemotePort, State,@{name='ProcessName';expression={(Get-Process -Id $_.OwningProcess). Path}}, OffloadState,CreationTime
Foreach ($Connection in $EstablishedConnections)
{
If ($Connection.ProcessName -like $TrackProcessName)
{
$Connection|ft
}
}
आप विभिन्न परिदृश्यों में Get-NetTCPConnection cmdlet का उपयोग कर सकते हैं। उदाहरण के लिए, आप यह ट्रैक करने के लिए एक साधारण पावरशेल स्क्रिप्ट बना सकते हैं कि विशिष्ट आईपी पते से निर्दिष्ट स्थानीय पोर्ट पर कनेक्शन स्थापित है या नहीं और व्यवस्थापक को एक पॉप-अप सूचना प्रदर्शित करें।
निम्नलिखित उदाहरण में, एक पावरशेल स्क्रिप्ट जांचता है कि निर्दिष्ट आईपी पते से एक कनेक्शन डिफ़ॉल्ट आरडीपी पोर्ट 3389 पर दिखाई देता है या नहीं। यदि कनेक्शन दिखाई देता है, तो स्क्रिप्ट एक पॉप-अप अधिसूचना प्रदर्शित करेगी और कनेक्शन की तारीख और समय को लॉग करेगी। टेक्स्ट फ़ाइल:
$SourceIP = “192.168.13.125”
$TargetPort =”3389”
$log = "C:\PS\rdp_connection_log.txt"
$EstablishedConnections = Get-NetTCPConnection -State Established
Foreach ($Connection in $EstablishedConnections)
{
If (($Connection.RemoteAddress -eq $SourceIP) -and ($Connection.LocalPort -eq $TargetPort))
{
Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = "New RDP connection to your computer from $($Connection.RemoteAddress)"
$balmsg.BalloonTipTitle = "New RDP connection from ($Connection.RemoteAddress)"
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(10000)
(Get-Date).ToString() + ' ' + $Connection.RemoteAddress + ' an RDP connection is established ' >> $log
}
}
उसी तरह, आप एसएसएच, एसएमबी, एफ़टीपी, एसएमटीपी, आदि जैसे किसी भी अन्य प्रोटोकॉल पर नेटवर्क कनेक्शन की निगरानी और लॉग इन कर सकते हैं। इस पावरशेल स्क्रिप्ट को विंडोज़ सेवा में परिवर्तित किया जा सकता है जो स्वचालित रूप से शुरू हो जाएगा।
आप स्क्रिप्ट का उपयोग उस स्क्रिप्ट के साथ कर सकते हैं जिसकी हमने पहले चर्चा की थी:RDP Brute Force Attack Protection with Powershell।आप PowerShell रिमोटिंग cmdlets (Enter-PSSession and Invoke-Command) का उपयोग करके दूरस्थ कंप्यूटर पर खुले TCP पोर्ट और कनेक्शन की सूची प्राप्त कर सकते हैं।
Invoke-Command -ComputerName be-dc01 {Get-NetTCPConnection -State Established}
गेट-नेटटीसीपीकनेक्शन cmdlet (साथ ही टेस्ट-नेटकनेक्शन) विंडोज़ में नेटवर्क कनेक्शन को ट्रैक और निदान करने के लिए बहुत उपयोगी हो सकता है।