Xác định quá trình nào đang nói với một cổng từ xa trên Windows Server


1

Tôi đã tiếp nhận một sản phẩm từ một nhà thầu tại nơi tôi làm việc. Các công cụ thu thập thông tin. Bản chất chính xác của thông tin không quan trọng đối với câu hỏi, nhưng nó tồn tại dưới dạng tệp phẳng và / hoặc trong cơ sở dữ liệu. Bằng cách nào đó, nhà thầu đã cấu hình một cái gì đó trên máy chủ để chuyển tiếp nhật ký (dưới dạng văn bản) đến bộ chuyển tiếp Splunk của chúng tôi. Chúng tôi không nghĩ rằng anh ấy đang sử dụng Splunk Forwarder, vì chúng tôi không thấy bằng chứng về sự tồn tại của nó (được cài đặt ở bất kỳ đâu trên các ổ đĩa, hoặc khi các dịch vụ đang chạy).

Chúng ta biết những gì cổng từ xa về phía trước đang xảy đến, và chúng ta thấy lưu lượng từ các máy chủ Windows (mà trên đó các ứng dụng được cài đặt) vào cổng từ xa.

Khi kết nối xảy ra dường như là ngẫu nhiên, và sống rất ngắn. Tôi đang cố gắng để nắm bắt những gì quá trình đang thực hiện kết nối này và nơi nó sống trên máy chủ Windows.

Tôi đã viết kịch bản sau cho đến cuối, nhưng tôi không bao giờ kết hôn với ý tưởng sử dụng Powershell nếu có một phương pháp tốt hơn:

$foundConnections = @()
$foundProcesses = @()

while($true)
{
    Start-Sleep -Milliseconds 100
    $connections = Get-NetTCPConnection -RemotePort 30117 -ErrorAction Ignore
    if($connections -ne $null)
    {
        if($connections.Count -ne $null -and $connections.Count -gt 1)
        {
            foreach($aConnection in $connections)
            {
                $foundConnections += $aConnection
                $process = Get-Process -Id $aConnection.OwningProcess
                Write-Output ($process)
                $foundProcesses += $process
                Add-Content -Path C:\Temp\procs.csv -Value ((Get-Date).ToString() + "," + $process.Name + "," + $process)
            }

        }
        else
        {
            $foundConnections += $connections
            $process = Get-Process -Id $connections.OwningProcess
            Write-Output ($process)
            $foundProcesses += $process
            Add-Content -Path C:\Temp\procs.csv -Value ((Get-Date).ToString() + "," + $process.Name + "," + $process)
        }

    }
}

... Cuối cùng sẽ phát hiện ra lưu lượng truy cập, nhưng csv được sản xuất trông như thế này:

... 11/8/2017 8:25:06 SA ,,

11/8/2017 8:25:06 SA ,,

11/8/2017 8:25:07 SA ,,

11/8/2017 8:25:07 SA ,,

11/8/2017 8:25:07 SA ,,

11/8/2017 8:25:07 SA ,,

11/8/2017 8:25:14 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25:14 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8 : 25: 15 AM, nhàn rỗi, System.Diagnostics.Process (Idle) 11/8/2017 8:25:15 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25:15 AM, Nhàn rỗi, System.Diagnostics.Process (Idle) 11/8/2017 8:25:15 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25:15 AM, Idle, System.Diagnostics. Quá trình (nhàn rỗi) 11/8/2017 8:25:15 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25:15 AM, Idle, System.Diagnostics.Process (Idle) 11 / 8/2017 8:25:16 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25:16 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25 : 16 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25:16 AM, Idle, System.Diagnostics.Process (Idle) 11/8/2017 8:25:16 AM, Idle, System.Diagnostics.Process (nhàn rỗi) 11/8/2017 8:25:16 giờ sáng, nhàn rỗi, System.Diagnostics.Process (nhàn rỗi)

...

... Hàng trăm dòng đó.

Làm cách nào tôi có thể xác định một quy trình đang chạy nếu tôi biết cổng từ xa đang sử dụng và nó đang chạy dường như không tuân theo lịch trình và kết nối rất ngắn?


1
Tôi tự hỏi nếu bạn đang nhận được PID trống, đó là lý do tại sao Get-Processtrả về "Idle" (còn gọi là PID 0). Thay vào đó, hãy thử loại bỏ ForEach-Objectvà làm netstat -ab >> C:\Temp\procs.txt(kịch bản sẽ cần chạy cao).
root

@root bạn thân. $aConnection.OwningProcesssẽ trả về 0 nếu $aConnection.Statelà ví dụ TimeWait( Chờ đủ thời gian để vượt qua để chắc chắn rằng TCP từ xa đã nhận được xác nhận về yêu cầu chấm dứt kết nối của nó ), xem MSFT_NetTCPConnectionlớp ; bạn có thể nhìn thấy nó chạy netstat -o 1.
JosefZ

Câu trả lời:


0

Bạn có thể muốn thử sử dụng một công cụ chụp gói như Netmon (còn gọi là Network Monitor). Sử dụng bộ lọc chụp sẽ giữ cho nó nhỏ, bộ lọc dựa trên cổng & IP đích, để nó chạy trong vài giờ và bạn sẽ thấy quy trình. Sau đó, chỉ cần tìm kiếm đĩa cho exe đó. Netmon DL https://www.microsoft.com/en-us/doad/details.aspx?id=4865 Netmon đã được thay thế bằng "Trình phân tích thư" mới hơn mà tôi chưa sử dụng nhiều, một số người cũng thích Wireshark, nhưng Tôi không chắc Wireshark xuống cấp độ xử lý như các công cụ chụp MS làm.

Nếu chúng được chuyển tiếp thông qua một tác vụ theo lịch trình ... thì chế độ xem dạng cây của trình lập lịch tác vụ có thể tẻ nhạt đối với các tìm kiếm. Nhưng cũng có một CLI cho các nhiệm vụ với powershell Get-ScheduledTasktrả về tất cả các tên công việc và đường dẫn đến nhiệm vụ. Có lẽ đáng để xem qua.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.