《域环境渗透》04. 信息收集 & 系统命令

本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《软件工具录》。

本专栏文章侧重于对 Windows 工作组与域环境的渗透攻击手法。

1:内网操作环境

一般突破外网边界,控制目标机器的手段有两种:

  • 通过漏洞,使用 Webshell 或其他远控工具进行连接
  • 通过钓鱼或近源,使用 CobaltStrike 进行连接

所控制的目标网络环境可能为:

  • 目标机器放在云上(这种情况基本无内网,除非找到关键信息)
  • 目标机器在公司本地机房(这种就是内网环境)

获取某台主机的控制权后,根据权限分类可分为以下四种情况(可通过 whoami 命令查询):

  • 本地普通用户
  • 本地管理员用户
  • 域内普通用户
  • 域内管理员用户

在上述四种权限情况中,如果主机加入了域:

  • 本地普通用户只能查询本地工作组的相关信息,不能查询域内信息
  • 本地管理员用户和域内用户可以查询域内信息

内网信息主要包括公司的整个网络结构,是否为域,用户信息等。

2:工作组信息收集

2.1:基本信息收集

查询操作系统版本信息:

  • 英文系统:systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
  • 中文系统:systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"

查询系统架构:

  • echo %PROCESSOR_ARCHITECTURE%

查看电脑开机时间:

  • net statistics workstation

2.2:网络信息收集

获取本机的网络配置信息:

  • ipconfig /all

查询端口信息:

  • netstat -ano

查询共享列表:

  • 方法 1:net share
  • 方法 2:wmic share get name,path,status

查询路由信息:

  • route print

查询 ARP 信息:

  • arp -a

查询远程连接的计算机会话:

  • net session

查询已存储的无线网络配置文件:

  • netsh wlan show profiles

查找指定 WLAN 的信息和密码:

  • netsh wlan show profiles name="<SSID>" key=clear
  • 示例:netsh wlan show profiles name="HomeWiFi" key=clear

查看防火墙配置:

  • netsh firewall show config

查询防火墙是否开启:

  • netsh firewall show state

2.3:用户信息收集

查看当前用户:

  • whoami

查看所有本地用户:

  • 方法 1:net user
  • 方法 2:wmic useraccount get name,SID

查询所有本地用户组:

  • net localgroup

查询管理员组信息:

  • net localgroup administrators

2.4:软件服务信息

查看安装的软件及版本:

  • 方法 1:wmic product get name,version
  • 方法 2:powershell "Get-WmiObject -class win32_product | Select-Object -Property name,version"

查询杀软等信息:

  • wmic /node:localhost /namespace:\\root\securitycenter2 path antivirusproduct get displayname /format:list

查看进程信息:

  • 方法 1:tasklist
  • 方法 2:wmic process list brief

看当前进程对应的用户身份:

  • tasklist /v

查询本机运行的服务:

  • wmic service list brief

查看计划任务:

  • schtasks /query /fo LIST /v

查看开机启动项:

  • wmic startup get command,caption

2.5:其他信息收集

查询当前保存的凭据:

  • cmdkey /l

查询最近打开的文件:

  • dir %APPDATA%\Microsoft\Windows\Recent

查看补丁信息:

  • 方法 1:systeminfo
  • 方法 2:wmic qfe get Caption,Description,HotFixID,InstalledOn

3:域内信息收集

3.1:判断机器是否在域内

3.1.1:方法 1

查看当前网卡和 IP 信息:

  • ipconfig /all

一般情况下,如果计算机在域内,【主 DNS 后缀】项是一个域名;而工作组情况为空。

Alt text

Alt text

3.1.2:方法 2

查看系统详细信息:

  • systeminfo

一般情况下,如果计算机在域内,【域】项是一个域名;而工作组默认是 “ WORKGROUP ”。

Alt text

Alt text

3.1.3:方法 3

查看当前登录域及域用户:

  • net config workstation

一般情况下,如果计算机在域内,会显示域名;而工作组显示工作组名与主机名。

Alt text

Alt text

3.1.4:方法 4

查看域内时间:

  • net time /domain

执行命令后可能出现 3 种情况:

  • 机器未加入域
    • 提示 “ 找不到域控制器 ”
  • 机器在域内,但当前用户是本地工作组用户
    • 提示 “ 拒绝访问 ”
  • 机器在域内,当前用户是域内用户
    • 显示域控当前时间

Alt text

Alt text

Alt text

3.2:基本信息收集

查看域 SID(去掉最后的用户 UID 即为域 SID):

  • whoami /all

查询域信任信息:

  • nltest /domain_trusts

查询域密码策略:

  • net accounts /domain

3.3:用户信息收集

查询所有域用户:

  • net user /domain

查看某个用户的详细信息:

  • net user <username> /domain
  • 示例:net user administrator /domain

查询域内所有用户组:

  • net group /domain

查看某个用户组的成员:

  • net group "<group name>" /domain
  • 示例:net group "domain admins" /domain

查询加入域的机器:

  • net group "domain computers" /domain

3.4:定位域控

得到域控机器名后,可以通过 ping 命令定位域控 IP。

查看域控制器组的成员:

  • net group "Domain Controllers" /domain

列出指定域中的所有域控:

  • nltest /DCLIST:<域名>
  • 示例:nltest /DCLIST:redteam.red

查看当前域的主域控制器:

  • netdom query pdc

通过 DNS SRV 记录查询 LDAP 服务信息(一般情况下,LDAP 服务器为主域控制器):

  • nslookup -type=SRV _ldap._tcp

查看当前时间(一般情况下,时间服务器为主域控制器):

  • net time /domain

3.5:定位域用户登录情况

要定位哪些账号登录了哪些机器,需要借助一些工具。

3.5.1:PsLoggedon.exe

简介

PsLoggedon.exe 工具属于 PsTools 工具包,用于查看机器登录的用户。

工具本质是检测注册表中 HKEY_USERS 的 key 值、调用 NetSessionEnum 的 API 来判断谁登录过哪台机器。
如果无法读取注册表,效果会很差。

相关命令

搜索网络邻居计算机,并显示用户是否登录:

  • PsLoggedon.exe \\<username>

查询登录过该机器的用户:

  • PsLoggedon.exe \\<computer name>

示例

Alt text

Alt text

3.5.2:PVEFindADUser.exe

简介

PVEFindADUser.exe 用于查找域用户登录的位置,以及谁在特定计算机上登录。

  • 需要计算机支持 framework 2.0
  • 需要以管理员权限运行

对于非本机的其他计算机,判断准确度可能存在问题。

相关命令

查看当前域中用户与计算机登录情况:

  • PVEFindADUser.exe -current

示例

Alt text

3.5.3:PowerView.ps1

简介
PowerView.ps1 脚本包含了一系列网络执行和 Windows 域枚举利用的功能。

使用时需要 PowerShell 导入脚本:
Import-Module .\PowerView.ps1

相关命令

获取域管理员的登录位置信息:

  1. Import-Module .\PowerView.ps1
  2. Invoke-UserHunter

示例

Alt text

4:内网主机发现

对于内网主机的发现,本质上是对 ICMP、ARP、NetBIOS 等协议的利用。

4.1:系统命令利用

使用 ping 命令配合 CMD 语法进行 C 段扫描:

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

使用 arp 命令查看 ARP 缓存表信息:

  • arp -a

4.2:工具使用

  • nbtscan
  • fscan
  • kscan
  • PTscan
  • CobaltStrike 插件
  • Metasploit 内置功能

5:内网端口探测

利用 telnet 命令探测端口是否开放:

  • telnet <ip> <port>

工具使用:

  • fscan
  • kscan
  • PTscan
  • CobaltStrike 插件
  • Metasploit 内置功能

6:其他敏感数据

内网的核心敏感数据包括:数据库信息、电子邮件信息、个人数据、企业业务数据、技术数据等。

可以说,价值较高的数据基本都在内网中。

高价值机器:

  • 系统管理人员、财务、人事、业务人员的个人计算机
  • 系统管理服务器
  • 办公系统服务器
  • 财务应用系统服务器
  • 数据库服务器
  • 文件服务器
  • 产品源码服务器(Svn / Git 服务器)
  • 电子邮件服务器
  • 安全监控服务器

高价值文件:

  • 站点源码备份文件
  • 数据库备份文件
  • 各种账号密码密码、令牌文件

其他数据:

  • RDP 和 IPC 连接记录
  • 无线 WiFi 密码
  • 浏览器保存的密码、cookie、浏览记录
  • 回收站中的信息

7:相关系统命令

7.1:查找文件

列出指定目录及其子目录下的所有指定文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dir /a /s /b E:\T\"*.txt"
dir /a /s /b E:\T\"*.xml"
dir /a /s /b E:\T\"*.mdb"
dir /a /s /b E:\T\"*.sql"
dir /a /s /b E:\T\"*.mdf"
dir /a /s /b E:\T\"*.eml"
dir /a /s /b E:\T\"*.pst"

dir /a /s /b E:\T\"*conf*"
dir /a /s /b E:\T\"*bak*"
dir /a /s /b E:\T\"*pwd*"
dir /a /s /b E:\T\"*pass*"
dir /a /s /b E:\T\"*login*"
dir /a /s /b E:\T\"*user*"

7.2:查找文件内容

在当前目录及其子目录下的所有指定文件中,查找包含字符串 “ pass ” 的行(不区分大小写):

1
2
3
4
5
6
7
findstr /s /i "pass" *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak > tmp.txt

findstr /s /i "pwd" *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak > tmp.txt

findstr /s /i "login" *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak > tmp.txt

findstr /s /i "user" *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak > tmp.txt

7.3:防火墙相关

查看防火墙配置:

  • netsh firewall show config

查询防火墙是否开启:

  • netsh firewall show state

关闭防火墙(Win 2003 及之前版本):

  • netsh firewall set opmode disable

关闭防火墙:

  • netsh advfirewall set allprofiles state off

允许指定程序进行 TCP/UDP 连接(Win 2003 及之前版本):

  • netsh firewall add allowedprogram "<file path>" "<rule name>" enable
  • 示例:netsh firewall add allowedprogram "C:\nc.exe" "Allow nc" enable

添加入站规则,允许指定程序进行 TCP/UDP 连接:

  • netsh advfirewall firewall add rule name="<rule name>" dir=in action=allow program="<file path>"

添加出站规则,允许指定程序进行 TCP/UDP 连接:

  • netsh advfirewall firewall add rule name="<rule name>" dir=out action=allow program="<file path>"

添加入站规则,允许指定端口进行 TCP 连接:

  • netsh advfirewall firewall add rule name="<rule name>" protocol=TCP dir=in action=allow localport=<port>

自定义防火墙日志储存位置:

  • netsh advfirewall set currentprofile logging filename "C:\temp\fw.log"

7.4:远程桌面相关

添加入站规则,允许 3389 端口进行 TCP 连接:

  • netsh advfirewall firewall add rule name="Allow Remote Desktop" protocol=TCP dir=in action=allow localport=3389

查看远程桌面连接是否开启:

  • REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber

启用远程桌面连接(Win 2003):

  • wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1

启用远程桌面连接(Win 2008 & Win 2012):

  1. wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
  2. wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1

启用远程桌面连接(Win 7):

  • reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

8:其他

8.1:相关工具

PsTools(包含 PsLoggedon.exe):
https://learn.microsoft.com/en-us/sysinternals/downloads/pstools

PVEFindADUser.exe:
https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn

PowerSploit(包含 PowerView.ps1):
https://github.com/PowerShellMafia/PowerSploit/

nbtscan:
相关地址:http://www.unixwiz.net/tools/nbtscan.html
Github:https://github.com/resurrecting-open-source-projects/nbtscan

fscan:
https://github.com/shadow1ng/fscan

kscan:
https://github.com/lcvvvv/kscan

PTscan:
https://github.com/phantom0301/PTscan

8.2:参考资料

《浅谈内网信息收集之定位域管理员》:
https://www.cnblogs.com/lcxblogs/p/13992793.html




人生到处知何似,应似飞鸿踏雪泥。

——《和子由渑池怀旧》(宋)苏轼