安全矩阵

 找回密码
 立即注册
搜索
查看: 2246|回复: 0

内网渗透-判断内网连通性

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-7-21 10:00:14 | 显示全部楼层 |阅读模式
原文链接:内网渗透-判断内网连通性

判断内网的连通性是指判断机器能否上外网等。需要综合判断各种协议(TCP、HTTP、DNS、ICMP等)及端口通信的方式。
查看本机防火墙规则netsh advfirewall firewall show rule name=all
基于ICMP协议使用ping命令:
ping <IP地址或域名>
TCP协议netcat(简称nc)被誉为网络安全界的”瑞士军刀”,是一个短小精悍的工具,通过使用TCP或UDP协议的网络连接读取数据。
使用方法:
nc -zv <IP地址 端口号>
Windows机器不自带nc,因此在Windows机器上需要使用Telnet,而Telnet也需要我们自己开启。
Windows10下开启Telnet命令:
  1. #开启
  2. dism /online /Enable-Feature /FeatureName:TelnetClient#关闭
  3. dism /online /Disable-Feature /FeatureName:TelnetClient
复制代码


Telnet使用方法:
telnet <IP地址 端口号>
UDP协议使用脚本 Test-PortConnectivity.ps1
下载地址:https://gist.github.com/PrateekKumarSingh/61532b4f48edac1d893b
  1. #Test-PortConnectivity -Source '127.0.0.1' -RemoteDestination 'dc1' -Port 57766#Test-PortConnectivity '127.0.0.1' 'dc1' 57766 -Protocol UDP -Iterate#Test-PortConnectivity 'localhost' 'dc2' 51753 -Protocol UDP#Test-PortConnectivity -Source $EUCAS -RemoteDestination $EUMBX -Port 135 -Iterate#Test-PortConnectivity -Source 'localhost' -RemoteDestination '127.0.0.1' -Port 135 -Iterate -protocol TCPFunction Test-PortConnectivity(){Param(
  2.     [Parameter(Position=0)] $Source,
  3.     [Parameter(Mandatory=$true,Position=1)] $RemoteDestination,
  4.     [Parameter(Mandatory=$true,Position=2)][ValidateScript({
  5.       
  6.       If($_ -match "^[0-9]+$"){
  7.       $True
  8.       }
  9.       else{
  10.       Throw "A port should be a numeric value, and $_ is not a valid number"
  11.       }
  12.     })
  13.     ]$Port,
  14.     [Parameter(Position=3)][ValidateSet('TCP','UDP')] $Protocol = 'TCP',
  15.     [Switch] $Iterate
  16. )

  17.     #If $source is a local name, invoke command is not required and we can test port, withhout credentials
  18.     If($Source -like "127.*" -or $source -like "*$(hostname)*" -or $Source -like 'localhost')
  19.     {
  20.         Do
  21.         {
  22.                 Telnet-Port $RemoteDestination $Port $Protocol;
  23.                 Start-Sleep -Seconds 1   #Initiate sleep to slow down Continous telnet

  24.         }While($Iterate)
  25.       
  26.     }
  27.     Else  #Prompt for credentials when Source is not the local machine.
  28.     {     
  29.         $creds = Get-Credential

  30.         Do
  31.         {
  32.             Foreach($Src in $Source)
  33.             {         
  34.             Invoke-command -ComputerName $Src -Credential $creds -ScriptBlock ${Function:Telnet-Port} -ArgumentList $RemoteDestination,$port, $Protocol                                            
  35.             }

  36.             #Initiate sleep to slow down Continous telnet
  37.             Start-Sleep -Seconds 1
  38.         }While($Iterate)
  39.       
  40.     }}
复制代码

  1. Function Telnet-Port($RemoteDestination, $port, $Protocol){
  2.     foreach($Target in $RemoteDestination)
  3.     {
  4.             Foreach($CurrentPort in $Port)
  5.             {
  6.                 If($Protocol -eq 'TCP')
  7.                 {
  8.                     
  9.                     try
  10.                     {
  11.                         If((New-Object System.Net.Sockets.TCPClient ($Target,$currentPort) -ErrorAction SilentlyContinue).connected)
  12.                         {
  13.                             Write-host "$((hostname).toupper()) connected to $($Target.toupper()) on $Protocol port : $currentPort " -back green -ForegroundColor White
  14.                         }
  15.                     }
  16.                     catch
  17.                     {
  18.                             Write-host "$((hostname).toupper()) Not connected to $($Target.toupper()) on $Protocol port : $currentPort" -back red -ForegroundColor white
  19.                     }            
  20.                 }
  21.                 Else
  22.                 {   
  23.                                                               
  24.                     #Create object for connecting to port on computer   
  25.                     $UDPClient = new-Object system.Net.Sockets.Udpclient
  26.                     
  27.                     #Set a timeout on receiving message, to avoid source machine to Listen forever.
  28.                     $UDPClient.client.ReceiveTimeout = 5000
  29.                     
  30.                     #Datagrams must be sent with Bytes, hence the text is converted into Bytes
  31.                     $ASCII = new-object system.text.asciiencoding
  32.                     $Bytes = $ASCII.GetBytes("Hi")
  33.                     
  34.                     #UDP datagram is send
  35.                     [void]$UDPClient.Send($Bytes,$Bytes.length,$Target,$Port)  
  36.                     $RemoteEndpoint = New-Object system.net.ipendpoint([system.net.ipaddress]::Any,0)  
  37.                      
  38.                         Try
  39.                         {
  40.                             #Waits for a UDP response until timeout defined above
  41.                             $RCV_Bytes = $UDPClient.Receive([ref]$RemoteEndpoint)  
  42.                             $RCV_Data = $ASCII.GetString($RCV_Bytes)
  43.                             If ($RCV_Data)
  44.                             {
  45.                            
  46.                                 Write-host "$((hostname).toupper()) connected to $($Target.toupper()) on $Protocol port : $currentPort " -back green -ForegroundColor White
  47.                             }
  48.                         }
  49.                         catch
  50.                         {
  51.                             #if the UDP recieve is timed out
  52.                             #it's infered that no response was received.
  53.                             Write-host "$((hostname).toupper()) Not connected to $($Target.toupper()) on $Protocol port : $currentPort " -back red -ForegroundColor White
  54.                         }
  55.                         Finally
  56.                         {

  57.                             #Disposing Variables
  58.                             $UDPClient.Close()
  59.                             $RCV_Data=$RCV_Bytes=$null
  60.                         }                                    
  61.                 }

  62.              }
  63.      }}
复制代码


使用方法:
powershell -exec bypass -command "& {import-module C:\Users\GU\Desktop\Test-PortConnectivity.ps1; Test-PortConnectivity 'localhost' '127.0.0.1' 7777 -Iterate -protocol UDP}"
我们先在本机使用ncat开启udp监听,再运行此脚本。

只要监听处出现Hi字样,即表示连通。
HTTP协议使用工具curl,有的Windows自带curl,有的需要自己安装。
使用方法:
curl www.baidu.com

FTP协议远程开启21端口,并使用ftp连接。

DNS协议Windows下使用nslookup,linux下还可以使用dig。
#Windowsnslookup www.baidu.com#Linuxdig www.baidu.com
或者给自己加一个txt记录

使用命令:
nslookup -type=TXT test.hackergu.com

利用工具查看开放端口HostRecon
下载地址:https://github.com/dafthack/HostRecon
使用命令:
Import-Module .\HostRecon.ps1Invoke-HostRecon -Portscan -TopPorts 128
代理服务器在内网中的机器,也可能是通过代理连接内网。
检查方法:
  •         查看内网中,与其他机器的网络连接。
  •         查看内网中是否有主机名类似于proxy的机器。
  •         根据pac文件的路径,将其下载下来并查看。
  •         执行如下命令,进行确认。

curl -x proxy-ip:port www.baidu.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 10:51 , Processed in 0.012642 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表