内网渗透 | 信息收集

0x00简介

渗透测试本质就是信息收集,信息收集的深度和广度直接关系到内网渗透测试的成败。所以把信息收集工作做好是渗透的第一步。

0x01本机信息收集

本机信息包括操作系统、权限、内网IP地址段、杀毒软件、端口、服务、补丁更新频率、网络连接、共享、会话等。如果是域内主机,操作系统、应用软件、补丁、服务、杀毒软件一般都是批量安装的。

手动收集信息

  1. 查询网络配置信息。
ipconfig /all
  1. 查询操作系统及软件信息。

    • 查询操作系统和版本信息。

      systeminfo | findstr /B /C:"OS Name" /C:"OS Version" //英文
      systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"    //中文
      
    • 查询系统体系结构。

      echo %PROCESSOR_ARCHITECTURE%
      
    • 利用wmic查看安转的软件及版本、路径等。

      wmic product get name,version
      
    • 利用 PowerShell 命令收集软件版本的信息。

      powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"
      
    • 查询本机环境变量设置。

      set
      
  2. 查询本机服务信息。

    • 利用wmic查询本机服务信息。

      wmic service list brief/full
      
  3. 查询进程列表。

    • 查看当前进程列表和进程用户,分析软件、邮件客户端、杀软等。

      tasklist
      wmic process list brief
      

      常见杀软的进程:

      进 程软件名称
      360sd.exe360杀毒
      360tray.exe360实时保护
      ZhuDongFangYu.exe360主动防御
      KSafeTray.exe金山卫士
      SafeDogUpdateCenter.exe服务器安全狗
      McAfee McShield.exeMcAfee
      egui.exeNOD32
      AVP.EXE卡巴斯基
      avguard.exe小红伞
      bdagent.exeBitDefender
  4. 查看启动程序信息。

    wmic startup get command,caption 
    
  5. 查看计划任务。

    schtasks /query /fo LIST /v
    
  6. 查看主机开机时间。

    net statistics workstation
    
  7. 查看用户相关信息。

    net user //当前本机用户列表
    net localgroup administrators //查看本地管理员组的成员
    query user || qwinsta //查看当前在线用户
    net user 123 123.com /add //添加用户名为123且密码为123.com的用户
    net localgroup administrators 123 /add //将用户123加入管理员组
    net localgroup administrators 123 /delete ///将用户123移出管理员组
    
  8. 列出或断开本地计算机和连接的客户端的会话。

    net session
    
  9. 查看端口列表.

    netstat -ano
    
  10. 查看补丁列表。

    systeminfo
    wmic qfe get Caption,Description,HotFixID,InstalledOn
    
  11. 查询本机共享列表。

    net share
    wmic share get name,path,status
    
  12. 查询路由表及所有可用接口的ARP缓存表。

    route print
    arp -a
    
  13. 查询防火墙相关配置。

    • 关闭防火墙

      netsh firewall set opmode disable (Windows Server 2003 系统及之前版本) 
      netsh advfirewall set allprofiles state off (Windows Server 2003 系统及之后版本)
      
    • 查看防火墙配置。

      netstat firewall show config
      
    • 修改防火墙配置。

      (Windows Server 2003 系统及之前版本) 允许指定程序全部连接 
      netsh firewall add allowedprogram c:\nc.exe "allow nc" enable 
      
      (Windows Server 2003 之后系统版本) 
      允许指定程序连入 
      netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C: \nc.exe" 
      允许指定程序连出 
      netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C: \nc.exe" 
      允许 3389 端口放行 
      netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
      
    • 自定义防火墙日志的储存位置。

      netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"
      
  14. 查看代理配置情况。

    reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    
  15. 查询并开启远程连接服务。

    • 查看远程连接端口(0xd3d换成10进制即3389)

      REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
      
    • 在Windows Server 2003 中开启3389 端口。

      wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
      
    • 在Windows Server 2008 和Windows Server 2012 中开启3389 端口。

      wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 wmic /namespace:\\root\cimv2\terminalservices path 
      
      win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1 
      
      reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
      

自动收集信息

  1. wmic脚本:https://www.fuzzysecurity.com/scripts/files/wmic_info.rar
    下载后直接运行脚本:
    wmic_info.bat
    在这里插入图片描述
    会在当前目录下生成out.html文件,打开即可。
    在这里插入图片描述
  2. Empire下主机信息收集。
    当使用 Empire 使主机上线后,可调用powershell/situational_awareness/host/winenum模块查看本机用户、域组成员、密码设置时间、系统基本信息、网络配置信息、共享信息、剪贴板等等。(运行这个模块需要管理员权限)

0x02域内信息收集

1. 判断是否存在域

  • 使用ipconfig命令
    查看网关 IP 地址、DNS 的 IP 地址、域名、本机是否和 DNS 服务器处于同一网段。

    ipconfig /all
    
    C:\Documents and Settings\Administrator>ipconfig /all
    
    Windows IP Configuration
    
       Host Name . . . . . . . . . . . . : nchu-wq
       Primary Dns Suffix  . . . . . . . : 1ance.com
       Node Type . . . . . . . . . . . . : Hybrid
       IP Routing Enabled. . . . . . . . : No
       WINS Proxy Enabled. . . . . . . . : No
       DNS Suffix Search List. . . . . . : 1ance.com
                                           localdomain
                                           
    Ethernet adapter 本地连接:
    
       Connection-specific DNS Suffix  . : localdomain
       Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection
       Physical Address. . . . . . . . . : 00-0C-29-50-5E-EC
       DHCP Enabled. . . . . . . . . . . : Yes
       Autoconfiguration Enabled . . . . : Yes
       IP Address. . . . . . . . . . . . : 192.168.255.136
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 192.168.255.2
       DHCP Server . . . . . . . . . . . : 192.168.255.254
       DNS Servers . . . . . . . . . . . : 192.168.255.137
       Primary WINS Server . . . . . . . : 192.168.255.2
       Lease Obtained. . . . . . . . . . : 2021年12月13日 14:52:12
       Lease Expires . . . . . . . . . . : 2021年12月13日 15:22:12
    

    使用 nslookup 解析域名的 IP 地址,查看是否与 DNS 服务器为同一 IP,判断域控与DNS服务器是否在同一台服务器上。

    nslookup 1ance.com
    
    C:\Documents and Settings\Administrator>nslookup 1ance.com
    *** Can't find server name for address 192.168.255.137: Non-existent domain
    Server:  UnKnown
    Address:  192.168.255.137
    
    Name:    1ance.com
    Address:  192.168.255.137
    
  • 查看系统详细信息
    "域"即域名,“登录服务器"即域控;如果"域"为"WORKGROUP”,表示当前机器不在域内。

    systeminfo | findstr "域:"
    
    C:\Documents and Settings\Administrator>systeminfo | findstr "域:"
    域:               1ance.com
    
    C:\Documents and Settings\Administrator>systeminfo | findstr "登录服务器:"
    登录服务器:       \\NCHU-WQ
    
  • 查询当前登录域及登录用户信息

    net config workstation
    
    C:\Documents and Settings\Administrator>net config workstation | findstr "域"
    工作站域                     1ANCE
    工作站域 DNS 名称            1ance.com
    登录域                       NCHU-WQ   //非域用户,本地用户
    
    工作站域                     1ANCE
    工作站域 DNS 名称            1ance.com
    登录域                       1ANCE  //域用户
    
    
  • 判断主域
    存在域但当前用户不是域用户。

    C:\Users\WQ>net time /domain
    发生系统错误 5。
    
    拒绝访问。
    

    存在域且当前用户是域用户。

    C:\Users\1ance>net time /domain
    \\DC.1ance.com的当前时间是2021/12/13 15:31:47
    

    当前网络环境为工作组,不存在域。

    C:\Users\1ance>net time /domain
    找不到域 WORKGROUP 的域控制器。
    
    请键入 NET HELPMSG 3913 以获得更多的帮助。
    

2. 查询当前权限

whoami
whoami /all //获取域SID

本地用户:

C:\Users\WQ>whoami
win-7\wq

域内用户:

C:\Users\1ance>whoami
1ance\lance

如果当前内网中存在域,那么本地普通用户只能查询本机相关信息,不能查询域内信息,而本地管理员用户和域内用户可以查询域内信息。
其原理是:域内的所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要经过权限认证,所以,只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无须额外输入账号和密码。
本地管理员Administrator权限可以直接提升为Ntauthority或System权限,而在域中,除普通用户外,所有的机器都有一个机器用户(用户名是机器名加上“$”)。在本质上,机器的system用户对应的就是域里面的机器用户。所以,使用System权限可以运行域内的查询命令。
所以当拿下一台内网主机后,发现没有域内用户,这个时候需要将当前用户提升到 SYSTEM权限,就可以在域内充当机器用户了。

域用户和机器用户

3. 收集域内基础信息

条件:当前用户为域用户或者system权限用户。

  1. 查询域

    net view /domain
    
  2. 查询域内所有计算机

    net view /domain:1ance
    
  3. 查询域内所有用户组列表

    net group /domain
    

    *Domain Admins //域管理员,权限大,完全控制
    *Domain Computers //域内机器
    *Domain Controllers //域控制器
    *Domain Guests //域访客、权限低
    *Domain Users //域用户
    *Enterprise Admins //企业系统管理员用户,权限大,完全控制

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

    net group "domain computers" /domain
    net group "Enterprise Admins" /domain
    
  5. 获取域密码策略

    net accounts /domain
    
  6. 获取域信任信息

    nltest /domain_trusts
    

4. 查找域控制器

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

    nltest /DCLIST:1ance
    
  2. 查看域控制器的主机名

    nslookup -type=SRV _ldap._tcp
    
  3. 查看域时间

    net time /domain
    
  4. 查看域控制器组

    net group "Domain Controllers" /domain
    netdom query pdc
    

5. 收集域用户和管理员信息

  1. 查询域用户

    net user /domain
    
  2. 查询域用户详细信息

    wmic useraccount get /all
    
  3. 查询存在的用户

    dsquery user
    C:\Users\Administrator>dsquery user
    "CN=Administrator,CN=Users,DC=1ance,DC=com"
    "CN=Guest,CN=Users,DC=1ance,DC=com"
    "CN=krbtgt,CN=Users,DC=1ance,DC=com"
    "CN=lance,OU=test,DC=1ance,DC=com"
    

    dsquery常用命令:

    dsquery computer - 查找目录中的计算机

    dsquery contact - 查找目录中的联系人

    dsquery subnet - 查找目录中的子网

    dsquery group - 查找目录中的组

    dsquery ou - 查找目录中的组织单位

    dsquery site - 查找目录中的站点

    dsquery server - 查找目录中的域控制器

    dsquery user - 查找目录中的用户

    dsquery quota - 查找目录中的配额

    dsquery partition - 查找目录中的分区

    dsquery * - 用通用的 LDAP 查询查找目录中的任何对象

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

    net localgroup administrators
    
  5. 查询域管理员用户组

    • 查询域管理员用户

      net group "domain admins" /domain
      
    • 查询管理员用户组

      net group "Enterprise Admins" /domain
      

6. 定位域管理员

常用的域管理员定位工具有:psloggedon.exePVEFindADUser.exenetview.exePowerView

  1. psloggedon.exe
    在 Windows 上使用 net session 可以查看谁使用了本机资源,但没有命令可用来查看谁在使用远程计算机资源、谁登录了本地或远程计算机,使用 psloggedon 可以查看本地登录的用户和通过本地计算机或远程计算机进行资源登录的用户。

    psloggedon.exe [-] [-l] [-x] [\\computername|username] 
    -:  显示支持的选项和用于输出值的单位。 
    -l: 仅显示本地登录,不显示本地和网络资源登录。 
    -x: 不显示登录时间。 
    \\computername: 指定要列出登录信息的计算机的名称。 
    Username: 指定用户名,在网络中搜索该用户登录的计算机。
    
    C:\Users\lance\Desktop>PsLoggedon.exe \\DC
    
    PsLoggedon v1.35 - See who's logged on
    Copyright (C) 2000-2016 Mark Russinovich
    Sysinternals - www.sysinternals.com
    
    Users logged on locally:
         2021/11/24 16:55:43        1ANCE\Administrator
    
    Users logged on via resource shares:
         2021/12/13 17:36:35        1ANCE\lance
    
  2. PVEFindADUser.exe

    PVEFindADUser 用于查找活动目录用户登录的位置、枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务器和计划任务的用户,需要.NET Framework环境且该工具需要管理员权限。

    PVEFindADUser.exe <参数>
    -h: 显示帮助信息 
    -u: 检测程序是否有新版本 
    -current ["username"]: 如果仅指定了 -current参数,将获得目标计算机上当前登录的所有用户;如果指定了用户名(Domain\Username),则显示该用户登录的计算机。
    -noping: 阻止尝试枚举用户登录名之前对目标计算机执行ping命令 
    -target: 此可选参数允许您指定要查询的主机。如果未指定此-target参数,则将查询当前域中的所有主机。如果决定指定-target,然后指定以逗号分隔的主机名。查询结果将被输出到report.csv文件中
    
    C:\Users\lance\Desktop>PVEFindADUser.exe -current
     -----------------------------------------
      PVE Find AD Users
      Peter Van Eeckhoutte
      (c) 2009 - http://www.corelan.be:8800
      Version : 1.0.0.12
     -----------------------------------------
     [+] Finding currently logged on users ? true
     [+] Finding last logged on users ? false
    
     [+] Enumerating all computers...
     [+] Number of computers found : 3
     [+] Launching queries
         [+] Processing host : DC.1ance.com (Windows Server 2008 R2 Standard;Service Pack 1)
             - Logged on user : 1ance\administrator
         [+] Processing host : WIN-7.1ance.com (Windows 7 旗舰版;Service Pack 1)
         [+] Processing host : nchu-wq.1ance.com (Windows Server 2003;Service Pack 2)
     [+] Report written to report.csv
    
  3. netview.exe

    netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 寻找登录会话,利用 NetShareEnum 寻找共享,利用 NetWkstaUserEnum 枚举登录的用户,netview.exe 可以查询共享入口和有价值的用户,其绝大部分功能无需管理员权限就可使用。

    netview.exe <参数>
    -h: 显示帮助信息 
    -f filename.txt: 指定要提取主机列表的文件 
    -e filename.txt: 指定要排除的主机名的文件 
    -o filename.txt: 将所有输出重定向到指定的文件 
    -d domain: 指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表 
    -g group: 指定搜索的组名。如果没有指定,则在Domain Admins组中搜索 
    -c: 对已找到的共享目录/文件的访问权限进行检查 
    -i interval: 枚举主机之间等待的秒数 
    -j jitter: 应用于间隔的抖动百分比(0.0-1.0)
    
    C:\Users\lance\Desktop>netview.exe -d
    
    [*] -d used without domain specified - using current domain
    
    [*] Using interval: 0
    [*] Using jitter: 0.00
    
    
    [+] Number of hosts: 2
    
    
    [+] Host: DC
    Enumerating AD Info[+] DC - Comment -
    [+] D - OS Version - 6.1
    [+] DC - Domain Controller
    
    Enumerating IP Info
    [+] (null) - IPv4 Address - 192.168.255.137
    .....
    
  4. Nmap的NSE脚本

    常用的 NSE脚本如下:

    smb-enum-domains.nse:对域控制器进行信息收集,可以获取主机信息、用户、可使用密码策略的用户等
    smb-enum-users.nse:在进行域渗透时,如获取了域内某台主机权限,但权限有限,无法获取更多的域用户信息,可借助此脚本对域控制器进行扫描
    smb-enum-shares.nse:遍历远程主机的共享目录
    smb-enum-processes.nse:对主机的系统进程进行遍历,通过此信息,可知道目标主机运行着哪些软件
    smb-enum-sessions.nse:获取域内主机的用户登陆会话,查看当前是否有用户登陆,且不需要管理员权限
    smb-os-discovery.nse:收集目标主机的操作系统、计算机名、域名、域林名称、NetBIOS机器名、NetBIOS域名、工作组、系统时间等信息

    nmap --script=smb-enum-domains.nse -p 445 192.168.255.138(本机ip)
    
  5. PowerView 脚本
    下载脚本PowerView 文件夹复制到 PowerShell 的 Module 文件夹内。或者输入$Env:PSModulePath查看
    (win08路径:C:\Windows\System32\WindowsPowerShell\v1.0\Modules)
    在 powershell中输入Import-Module PowerView即可导入PowerView,使用Get-Command -Module PowerView可查看已导入的 PowerView 命令。

    PS C:\Users\Administrator> import-module PowerView
    PS C:\Users\Administrator> Invoke-UserHunter
    
    
    UserDomain   : xxx-WQ
    UserName     : Administrator
    ComputerName : xxx-wq.1ance.com
    IP           : 192.168.255.136
    SessionFrom  :
    LocalAdmin   :
    
    UserDomain   : 1ANCE
    UserName     : Administrator
    ComputerName : DC.1ance.com
    IP           : 192.168.255.137
    SessionFrom  :
    LocalAdmin   :
    

    Invoke-StealthUserHunter:只需要进行一次查询,就可以获取域里面的所有用户。其原理为:从user.HomeDirectories中提取所有用户,并对每个服务器进行Get-NetSession获取。因不需要使用Invoke-UserHunter对每台机器进行操作,所以这个方法的隐蔽性相对较高(但涉及的机器不一定全面)。PowerView 默认使用Invoke-StealthUserHunter如果找不到需要的信息,就会使用Invoke-UserHunter.

    Invoke-UserHunter:找到域内特定的用户群,接受用户名、用户列表和域组查询,接收一个主机列表或查询可用的主机域名。使用Get-NetSessionGet-NetLoggedon(调用 NetSessionEnum 和 NetWkstaUserEnumAPI )扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,在使用时不需要管理员权限。

    Get-NetDomain:获取当前用户所在域名称

    Get-NetUser:获取所有用户的详细信息

    Get-NetDomainController:获取所有域控制器的信息

    Get-NetComputer:获取域内所有机器的详细信息

    Get-NetOU:获取域中的OU信息

    Get-NetGroup:获取所有域内组和组成员信息

    Get-NetFileServer:根据SPN获取当前域使用的文件服务器信息

    Get-NetShare:获取当前域内所有的网络共享信息

    Get-NetSession:获取指定服务器的会话

    Get-NetRDPSession:获取指定服务器的远程连接

    Get-NetProcess:获取远程主机的进程

    Get-UserEvent:获取指定用户的日志

    Get-ADObject:获取活动目录的对象

    Get-NetGPO:获取域内所有组的策略对象

    Get-DomainPolicy:获取域默认策略或域控制器策略

    Invoke-UserHunter:获取域用户登陆的计算机信息及该用户是否有本地管理员权限

    Invoke-ProcessHunter:通过查询域内所有的机器进程找到特定用户

    Invoke-UserEventHunter:根据用户日志查询某域用户登陆过哪些域机器

7. 查找域管理员进程

  1. 获取域管理员列表

    net group "Domain Admins" /domain
    
  2. 列出本机的所有进程及进程用户

    tasklist /v
    
  3. 寻找进程所有者为域管理员的进程

8. 查询域控制器的域用户会话

查询域控制器的域用户会话,其原理是:在域控制器中查询域用户会话列表,并将其与域管理员列表进行交叉引用,从而得到域管理会话的系统列表。

0x03参考

https://teamssix.com/210224-210341.html
https://cloud.tencent.com/developer/article/1878203

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值